nvidia, cuda, cudnn 설치 방법 (ubuntu 20.04)

시스템 사망 사건과 복구의 시작

RTX 3090 4장과 RTX A5000 4장이 꽂힌 시스템을 같은 전원에 물려 놓았더니 결국 사단이 났다. 용량은 충분했다고 생각했는데 원인을 알 수 없는 이유로 전원이 나가버렸고, 재수 없게도 파일 시스템까지 날아가 버렸다.

다행히 중요한 데이터는 없었지만, 딥러닝 환경 세팅을 처음부터 다시 해야 하는 귀찮음은 어쩔 수가 없다. 나중을 위해 우분투 20.04에서 드라이버, CUDA, cuDNN 설치 과정을 기록해 둔다.

1. 기존 NVIDIA 드라이버 및 CUDA 삭제

클린 설치를 위해 기존에 설치된 드라이버와 관련 파일들을 깔끔하게 삭제한다.

Bash

$ sudo apt-get remove --purge nvidia-*
$ sudo apt-get autoremove
$ sudo apt-get update

2. NVIDIA 드라이버 설치

현재 시스템에 맞는 드라이버를 확인하고 설치를 진행한다.

Bash

$ ubuntu-drivers devices
$ sudo apt-get install nvidia-driver-515
$ sudo apt-get install dkms nvidia-modprobe
  • nvidia-driver-515: 당시 기준 최신 드라이버 (버전은 상황에 맞게 변경)

  • nvidia-modprobe: 드라이버를 커널에 로드해 주는 유틸리티 (함께 설치 권장)

설치 후 시스템을 재부팅하고 정상적으로 잡혔는지 확인한다.

Bash

$ sudo reboot
# 재부팅 후 확인
$ nvidia-smi

3. CUDA Toolkit 설치 (11.7)

NVIDIA 개발자 사이트 아카이브에서 원하는 버전의 CUDA를 다운로드한다.

runfile (local) 방식을 선택하여 설치를 진행했다.

Bash

$ wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run
$ sudo sh cuda_11.7.1_515.65.01_linux.run

설치 과정 설정:

  1. 기존 드라이버가 있다는 경고가 뜨면 Continue.

  2. 라이선스 동의에 accept.

  3. [중요] 설치 옵션에서 Driver는 체크 해제한다. (이미 apt로 설치했으므로)

설치가 완료되면 환경 변수(PATH)를 설정해 준다.

Bash

$ sudo sh -c "echo 'export PATH=$PATH:/usr/local/cuda-11.7/bin'>> /etc/profile"
$ sudo sh -c "echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64'>> /etc/profile"
$ sudo sh -c "echo 'export CUDADIR=/usr/local/cuda-11.7'>> /etc/profile"
$ source /etc/profile

설치 확인:

Bash

$ nvcc -V

4. cuDNN 설치 (8.6.0)

cuDNN 사이트에서 CUDA 버전에 맞는 라이브러리를 다운로드한다.

리눅스용 Tar 파일을 다운로드하여 압축을 풀고 파일을 복사한다.

Bash

$ tar -xvf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
$ cd cudnn-linux-x86_64-8.6.0.163_cuda11-archive

# 헤더와 라이브러리 파일 복사
$ sudo cp include/cudnn* /usr/local/cuda/include
$ sudo cp lib/libcudnn* /usr/local/cuda/lib64

# 권한 설정
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

심볼릭 링크 설정 (버전 호환성을 위해): 필요한 라이브러리들에 대해 심볼릭 링크를 걸어준다.

Bash

$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.6.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
# ... (나머지 라이브러리들도 동일하게 링크 설정, 위 본문 코드 참고)

설치 확인:

Bash

$ sudo ldconfig
$ ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn

libcudnn 관련 라이브러리들이 정상적으로 출력되면 설치 완료다. 이제 도커만 올리면 다시 연구 시작이다.