PyTorch 가 GPU를 사용하지 않을때
Ollama 에서 LLM 돌릴때는 분명 그래픽 가속을 사용하는 것 같은데, 파이썬 코드에서 임베딩(embedding) 작업을 하거나 기타 작업을 할 때 유난히 느린 경우가 발생했습니다.
아래 파이썬 코드로 확인을 해보니…
import torch def check_mps_support(): print(f"PyTorch 버전: {torch.__version__}") # CUDA 사용 가능 여부도 확인 (비교를 위해) print(f"\nCUDA 사용 가능 여부: {torch.cuda.is_available()}") if __name__ == "__main__": check_mps_support()
실행해보니 아래처럼 나옵니다. PyTorch 가 잘못 설치되어 있었네요.
PyTorch 버전: 2.4.0+cpu CUDA 사용 가능 여부: False
PyTorch CPU 버전이 설치되어 있어서 GPU 사용을 하지 않는 상태입니다. 그래서 CUDA 사용이 불가하다고 뜹니다.
제 경우에는 이미 CUDA 는 설치되어 있는 상태입니다. 쉘에서 nvidia-smi 명령어를 실행시키면 해당 내용을 확인할 수 있습니다.
만약 CUDA 가 설치되어 있지 않다면 먼저 CUDA toolkit 부터 설치합니다.
- 그래픽카드가 오래되었다면 최신 CUDA 버전과 호환성 문제가 발생할 수도 있는듯 합니다.
- 이 링크의 내용을 참고해서 그래픽카드에 맞는 CUDA 버전을 설치하세요.
그리고 cuDNN 도 설치합니다.
만약 이 두 가지가 제대로 설치되어 있다면, nvidia-smi 명령어로 확인했을 때 CUDA 버전이 제대로 표시될겁니다.
$ nvidia-smi Sun Aug 4 11:31:12 2024 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 546.65 Driver Version: 546.65 CUDA Version: 12.3 | |-----------------------------------------+----------------------+----------------------+ | GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA GeForce RTX 4070 ... WDDM | 00000000:01:00.0 On | N/A | | 0% 44C P8 9W / 220W | 1009MiB / 12282MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+
CUDA 설치까지 되었다면 PyTorch 를 cuda 지원되는 버전으로 다시 설치해야 합니다.
PyTorch 버전도 다양하고 윈도우/mac/linux 에 따라 설치 명령어도 틀리니 아래 사이트에서 설치 명령어를 찾아 사용하는게 좋습니다.
제 경우에는 아래 명령어로 설치했습니다.
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
설치 후 앞서 소개한 파이썬 코드로 다시 확인해보니 이제 CUDA 사용가능하다고 표시됩니다.
PyTorch 버전: 2.3.1+cu121 CUDA 사용 가능 여부: True
이제부터는 pytorch 사용시 GPU 가속이 가능합니다. 제가 문제를 겼었던 임베딩(embedding) 과정에서도 문제가 해결되었습니다.