PyTorch가 설치되었지만 CUDA가 인식되지 않는 문제 해결
문제 현상:
PyTorch는 설치되어 있고 코드도 정상적으로 실행되지만 GPU가 인식되지 않고 CUDA가 사용 불가능한 상태입니다.
- 시스템: CentOS
- GPU: Tesla V100
배경:
특정 저장소인 NeuralHydrology의 코드를 실행하기 위해 환경을 구성했습니다. 이 저장소의 environment.yml 파일에 따라 환경이 생성되었습니다.
문제 원인 분석:
환경 구성 중 다운로드 속도가 느려서 소스를 변경했으며, 이를 통해 환경 설정이 일부 영향을 받았습니다. 특히 PyTorch의 CPU 버전이 기본으로 설치되는 문제가 있었습니다.
conda env create -f environment.yml
위 명령어를 실행하면 기본적으로 PyTorch의 CPU 버전이 설치될 수 있습니다.
문제 발견:
코드 실행 중 CPU 전용 분기를 타는 것을 확인할 수 있었습니다.
해결 방법:
다음 명령어를 실행하여 상황을 확인하세요:
1. CUDA 관련 패키지 확인:
CUDA 또는 CuDNN이 설치되어 있는지 확인합니다.
conda list | grep cuda
결과에 pytorch-cuda 또는 cudatoolkit가 포함되어 있다면 CUDA 관련 패키지가 설치된 상태입니다.
2. PyTorch 설치 상태 확인:
PyTorch가 올바르게 설치되었는지 확인합니다.
conda list | grep torch
build 열에 cpu가 표시된다면 CPU 버전이 설치된 것입니다.
3. GPU 드라이버 호환성 확인:
GPU 드라이버가 지원하는 최대 CUDA 버전을 확인합니다.
nvidia-smi | grep "CUDA Version"
출력 값이 11.8 이상인지 확인합니다.
해결 단계:
- 기존 PyTorch 및 CUDA 관련 패키지를 제거합니다.
conda uninstall pytorch torchvision torchaudio libtorch pytorch-cuda
필요한 패키지만 선택적으로 제거할 수도 있습니다.
- 적절한 버전의 PyTorch와 CUDA를 다시 설치합니다.
예시 (CUDA 11.8 버전 기준):
conda install pytorch pytorch-cuda=11.8 -c pytorch -c nvidia
여기서 -c 플래그는 다운로드 채널을 지정합니다.
추가 해결 방법:
만약 위 방법이 적용되지 않는다면 다음 사항들을 점검하세요:
- PyTorch와 CUDA가 설치되었는지 확인 아래 스크립트를 활용해 확인할 수 있습니다.
echo "=== NVIDIA 드라이버 확인 ==="
nvidia-smi || echo "! 드라이버 미설치"
echo "\n=== CUDA 환경 확인 ==="
which nvcc &>/dev/null && nvcc --version || echo "! CUDA 미설치"
echo "\n=== PyTorch 상태 확인 ==="
python -c "import torch; print('\nPyTorch 버전:', torch.__version__, '\nCUDA 사용 가능:', torch.cuda.is_available())"
-
패키지 관리자 일관성 유지 Conda와 Pip에서 동시에 패키지를 설치하지 않도록 주의하세요.
-
새로운 환경 구성 새로운 가상 환경을 만들어 필요한 의존성을 순차적으로 설치합니다.
conda create -n new_env python=3.9
conda activate new_env
conda install pytorch cudatoolkit=11.8 -c pytorch
- 환경 파일 백업 현재 환경의 의존성을 저장해 두세요.
conda env export > myenv.yml
다음 번에는 해당 파일을 사용해 환경을 재구성합니다.
conda env create -f myenv.yml
Conda 다운로드 속도 개선:
중국 내부의 빠른 미러를 사용해 다운로드 속도를 향상시킬 수 있습니다.
Conda 소스 변경:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
Pip 소스 변경:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
일회용 소스 변경도 가능합니다.
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name