조금씩 꾸준히 완성을 향해

[2023 최신] Ubuntu 환경에서 nvidia-driver, cuda, cudnn 설치 방법 (Ubuntu 22.04) 본문

AWS & Linux

[2023 최신] Ubuntu 환경에서 nvidia-driver, cuda, cudnn 설치 방법 (Ubuntu 22.04)

all_sound 2023. 8. 4. 16:28

 

서버알못인 제가 어쩌다 연구실의 서버를 세팅하게 되었습니다...!!!!

 

여러 블로그들을 찾아보고, chatGPT에게도 물어 가며 하루 종일 삽질한 결과를 기록하겠습니다 ^^

부디 누군가에게는 도움이 될 수 있길 (미래의 나도 포함해서...ㅎ)

 

1. Ubuntu 환경 파악

먼저 서버에 로그인을 하면 이런 종류의 인사말이 뜹니다.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.19.0-50-generic x86_64)

요 버전을 잘 기록해 놓아야 이후 설치 과정이 매끄러워 집니다.

 

 

2. 기존의 nvidia-driver, Cuda Toolkit 삭제 

기존에 설치한 이력이 있다면 다 지워주고 다시 시작해야 합니다. 혹시 모르니 무조건 한 번 씩 실행하고 넘어갑시다!

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

 

3. Nvidia driver 설치

 

다음으로 시스템에 설치된 CUDA 컴파일러의 버전 확인합니다.

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

cuda 11.5 버전이라는 것을 알 수 있습니다.

 

그렇다면 이 cuda 버전에 맞는 driver 버전은 무엇인지 확인하러 갑니다.

 

https://docs.nvidia.com/deploy/cuda-compatibility/index.html

 

CUDA Compatibility :: NVIDIA Data Center GPU Driver Documentation

The NVIDIA® CUDA® Toolkit enables developers to build NVIDIA GPU accelerated compute applications for desktop computers, enterprise, and data centers to hyperscalers. It consists of the CUDA compiler toolchain including the CUDA runtime (cudart) and vari

docs.nvidia.com

 

이 사이트를 참고하여 호환 가능한 driver 버전을 설치해야 합니다.

 

확인을 했다면 서버에 어떤 버전의 driver를 설치할 수 있는지 확인해 봅니다.

$ ubuntu-drivers devices

 

이렇게 쭉 뜨는데서 저에게 필요한 450-server 버전을 선택했습니다.

 

$ sudo apt-get install nvidia-driver-450-server

 

 그리고 나서, NVIDIA kernel module의 load를 도와주는 modprobe 패키지를 설치하고, 업데이트 후 재부팅 해줍니다.

$ sudo apt-get install dkms nvidia-modprobe
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot

 

재부팅 완료 후. 아래 명령어를 치면 nvidia driver 정보가 나옵니다.

$ nvidia-smi

 

여기서 꼭 확인해야 할 정보는 맨 윗줄입니다.

 

NVIDIA-SMI 450.248.02   

Driver Version: 450.248.02   

CUDA Version: 11.0

 

450.248.02 버전의 드라이브가 설치되었고, 그에 잘맞는 CUDA Toolkit의 버전은 11.0라는 의미입니다. 

즉, 11.0의  CUDA Toolkit을 설치해야 하는게 가장 좋다고 알려주고 있습니다. 

 

 

4. CUDA Toolkit 설치

 

CUDA ToolkitGPU 컴퓨팅을 위한 라이브러리, 컴파일러, 도구 등의 패키지를 제공하며, CUDA 프로그램을 개발하고 실행하는 데 필요한 환경을 구성합니다.

 

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

 

위의 웹사이트로 들어가서 설치를 하면 되는데,  !!!최대한!!driver 버전과 맞는 걸 다운받아야 합니다.

그러나 저의 경우 CUDA는 11.5, 또 Utuntu 버전은 22.04이기 때문에 설치가 가능한 가장 가까운 버전을 선택했습니다.

 

빨간 박스 쳐진 11.7 버전을 클릭하고, 조건을 선택합니다.

                   

 

 

나타나는 명령어 두 줄을 차례대로 입력하면 설치가 됩니다.

 

이런 게 뜨면 continue로 가서 enter를 누르고,

 

이런 게 뜨면 accept라고 입력하고 enter를 눌러줍니다.

 

그리고 여기서 주의할 점!!!!  맨 위에 Driver는 체크를 해제해야 합니다!!!! (해체는 enter 키)

(체크 놔두고 설치하면 무한 에러 뜸)

 

무사히 install을 선택해 주면 이렇게 완료 메세지가 뜹니다.

 

 

※ 참고로 이 부분에서 gcc 관련 에러가 뜰 수도 있습니다. gcc를 설치하거나, 버전을 맞추는 방식으로 에러를 해결해 나가시면 됩니다.

 

CUDA Toolkit 관련 설정을 환경 변수에 추가해 줍니다. (PATH는 당연히 본인이 설치한 cuda 버전으로 변경해 주셔야 합니다!)

$ 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

 

4. cuDNN 설치

cuDNN은 NVIDIA가 개발한 Deep Neural Network 전용 GPU 가속 라이브러리입니다. 딥러닝 프레임워크들이 빠르고 효율적으로 학습하고 추론하도록 도와줍니다.

 

아래 cuDNN 사이트로 이동하면 버전에 맞는 cuDNN을 다운로드 받을 수 있습니다.

 

https://developer.nvidia.com/cudnn

 

CUDA Deep Neural Network

cuDNN provides researchers and developers with high-performance GPU acceleration.

developer.nvidia.com

 

참고로 아이디가 없다면 가입하고 로그인을 해야 합니다.

버전에 맞게 압출파일을 다운로드 해 줍니다.

 

 

그리고 아래 명령어로 압축을 풀고, 파일을 /usr/local/cuda 디렉토리로 복사해 줍니다. (파일은 당연히 본인이 설치한 파일명으로 변경해 주셔야 합니다!)

$ tar xvf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
$ cd cudnn-linux-x86_64-8.9.4.25_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*

 

※ 참고로 저 같은 경우, 원격 서버에 접속 중이기 때문에 filezilla를 사용해 서버에 파일을 옮겨주었습니다.

 

 

cuda 디렉토리와 실제 설치된 cuda-11.7 디렉토리를 심볼릭 링크 설정해 줍니다. (마찬가지로 본인이 설치한 드라이버, 파일을 참고하여 변경해 주세요!)

$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.9.4 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.9.4  /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.9.4  /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.9.4  /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.9.4  /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.9.4 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn.so.8.2.1 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn.so.8

 

 

그리고 새로 추가된 라이브러리를 시스템에서 찾을 수 있도록 합니다.

$ sudo ldconfig

 

마지막으로 설정이 제대로 되었는지 확인하기 위해 아래 명령어를 시행합니다.

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

 


 

CUDA 관련된 설치는 이렇게 하면 완료가 됩니다.

 

이후에 가상환경 설치, 여러 라이브러리들 설치 등의 과정을 진행하면 됩니다.

 

 

정말 힘겨웠지만 꼭 해야하는 것이었기에,,, 집념의 힘을 발휘해 보았습니다.

뒤에 세팅이 더 남았지만 어쨌거나 여기까진 하루만에 성공했다는 게 정말 감격.......

 

연학학습 수행가능한 환경이 완성되는 날까지... 화이팅!!!!