[Ubuntu] RuntimeError: No CUDA GPUs are available 해결 방법
Programming/Ubuntu

[Ubuntu] RuntimeError: No CUDA GPUs are available 해결 방법

반응형

 

 

 

 

 

 

Pytorch 베이스로 학습을 돌리려는데 계속해서

 

"RuntimeError: No CUDA GPUs are available"

 

에러가 뜨더군요..

<Error Full Code> 클릭!

더보기

 

/home/sldev1/github/TIL/Internship/MobileNetV2_FER/test.py:57: UserWarning: nn.init.xavier_uniform is now deprecated in favor of nn.init.xavier_uniform_.
  torch.nn.init.xavier_uniform(m.weight)
Traceback (most recent call last):
  File "/home/sldev1/github/TIL/Internship/MobileNetV2_FER/test.py", line 98, in <module>
    model = model.to(device)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 612, in to
    return self._apply(convert)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 359, in _apply
    module._apply(fn)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 359, in _apply
    module._apply(fn)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 359, in _apply
    module._apply(fn)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 381, in _apply
    param_applied = fn(param)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 610, in convert
    return t.to(device, dtype if t.is_floating_point() else None, non_blocking)
  File "/home/sldev1/anaconda3/envs/py3.7/lib/python3.7/site-packages/torch/cuda/__init__.py", line 172, in _lazy_init
    torch._C._cuda_init()
RuntimeError: No CUDA GPUs are available

Process finished with exit code 1

 

 

 

우선 nvcc --version 확인

$ nvcc --version

Command 'nvcc' not found, but can be installed with:

sudo apt install nvidia-cuda-toolkit

?!..

제가 없는 사이 누가 건드렸는지..

CUDA 버전 확인도 안되는 군요..

 

 

sudo apt install nvidia-cuda-toolkit 으로 설치해주시고,

다시 nvcc --version

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

CUDA 9.1 버전이군요.

 

 

 

 

그리고, nvidia-smi로 그래픽 드라이버 확인해봅시다.

$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

?!.. 그래픽카드 드라이버가 무언가 오류가 있군요..

그럼 무슨 드라이버가 설치되어 있는지 확인만 해보고

바로 삭제 후 다시 깔아보도록 하겠습니다.

 

 

 

grep으로 설치된 드라이버 확인

$ apt --installed list | grep nvidia-driver

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

nvidia-driver-470/unknown,now 470.182.03-0ubuntu1 amd64 [installed]

WARNING은 일단 신경 쓰지않고,

아, 드라이버 470 이라는게 깔려있었군요..

 

 

 

자, 일단 지우고 재설치 해볼게요.

$ sudo apt remove nvidia-driver-470 
$ sudo apt autoremove

자, 여기서 중요한 부분이 재설치를 할 때, 어떤 driver를 설치할 것이냐를 판단해야합니다.

 

저는 nvcc --version을 통해서 CUDA 버전을 확인 했을 때,

9.1.85 버전, 그러니까 CUDA 9.1이 설치되어 있는 것입니다.

그럼 이에 맞는 nvidia-driver 버전을 선택해야합니다.

 

 

라고 말씀 드렸지만,,,

~$ ls /usr/local/ | grep cuda
cuda-10.2

위 명령어를 통해서 cuda-10.2 가 설치되어 있음을 확인했습니다.

(슬 머리가 아파오기 시작합니다..

기존에 잘 작동되던 버전이였던 것인데.....

왜 9.1이 설치되어 있지 않고 10.2인지도 모르겠고....

gedit ~./bashrc로 경로 확인해봐도

9.1에 대한 코드 한줄 없고...)

 

 

그. 래. 서 !

일단 싹다 지우고

$ sudo apt-get --purge remove 'cuda*'
$ sudo apt-get autoremove --purge 'cuda*'
sudo rm -rf /usr/local/cuda-10.2/
sudo rm -rf /usr/local/cuda/

 

 

 

드라이버 부터 설치하겠습니다.

이 데스크탑에 어떤 드라이버를 추천하는지 한번 보겠습니다.

$ sudo ubuntu-drivers devices
WARNING:root:_pkg_get_support nvidia-driver-525-server: package has invalid Support PBheader, cannot determine support level
WARNING:root:_pkg_get_support nvidia-driver-515-server: package has invalid Support PBheader, cannot determine support level
WARNING:root:_pkg_get_support nvidia-driver-390: package has invalid Support Legacyheader, cannot determine support level
== /sys/devices/pci0000:00/0000:00:01.1/0000:02:00.0 ==
modalias : pci:v000010DEd00001B80sv00001458sd00003702bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP104 [GeForce GTX 1080]
driver   : nvidia-driver-465 - third-party non-free
driver   : nvidia-driver-455 - third-party non-free
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-440 - third-party non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-495 - third-party non-free
driver   : nvidia-driver-460 - third-party non-free
driver   : nvidia-driver-525-server - distro non-free
driver   : nvidia-driver-450 - third-party non-free
driver   : nvidia-driver-530 - third-party non-free recommended
driver   : nvidia-driver-418 - third-party non-free
driver   : nvidia-driver-520 - third-party non-free
driver   : nvidia-driver-510 - third-party non-free
driver   : nvidia-driver-515-server - distro non-free
driver   : nvidia-driver-525 - third-party non-free
driver   : nvidia-driver-515 - third-party non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-410 - third-party non-free
driver   : nvidia-driver-470 - third-party non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

recommended 드라이버인 530을 다운로드 받아주겠습니다.. 

 

 

 

$ sudo apt-get install nvidia-driver-530

이후 재부팅 하겠습니다.

 

 

 

재부팅 이후...

..!!!

$ nvidia-smi
Mon May  8 10:50:07 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02              Driver Version: 530.30.02    CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1080         On | 00000000:01:00.0 Off |                  N/A |
| 22%   48C    P8               14W / 200W|    180MiB /  8192MiB |     19%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
|   1  NVIDIA GeForce GTX 1080         On | 00000000:02:00.0 Off |                  N/A |
|  0%   48C    P8                7W / 200W|      2MiB /  8192MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      1690      G   /usr/lib/xorg/Xorg                           97MiB |
|    0   N/A  N/A      2134      G   /usr/bin/gnome-shell                         77MiB |
|    0   N/A  N/A      3143      G   ...ures=SpareRendererForSitePerProcess        1MiB |
+---------------------------------------------------------------------------------------+

아주 잘나와주는 모-습!

 

 

 

참고로, 위의

"CUDA Version: 12.1"는 GUI를 담당하는 driver 버전이 12.1이라는 의미입니다.

학습 버전의 CUDA 12.1이 설치되었다가 아니예요..!

 

간략하게 CUDA의 driver 버전, 학습 버전에 대해서 설명할게요. 설명을 보려면 클릭해주세요

더보기

CUDA는 크게 아래 적힌 두 가지로 달리 생각하여야 합니다.

 

  1. driver 버전
    • 모니터에 나타나는 화면 GUI와 관련된 버전
    • nvidia-smi 명령어로 확인 가능
  2. 학습 버전
    • ML, DL의 학습과 관련된 버전
    • nvcc -V 명령어로 확인 가능

 

따라서, 우리는 nvcc -V 를 통해서 확인하는게 더 맞겠죠?!


 

 

 

 

혹시나 싶어서 학습.py 파일을 돌려보니까 이제 잘 돌아가더군요!

지금 설치되어있는 torch 버전이 1.10.1+cu102인데.. CUDA 9.1로도  일단 돌아가네요

 

 

그 다음으로는 CUDA를 GPU와 torch 버전에 맞는 CUDA 버전을 설치하려했으나,

일단 잘 돌아가기 때문에 여기서 멈추겠습니다.

 

잘 안되시는, 에러가 나시는 들은 CUDA를 버전에 맞게 설치하는 방법을

구글링을 통해 차근차근 따라가시면 되겠습니다.

 

감사합니다.

 

 

 

 

 

 

 

 

반응형