자연어처리 프로젝트 진행 도중 우분투에 딥러닝 학습 환경을 만들 필요성이 생겼고 설치 과정을 정리하여 이후에 참고하고자합니다. 먼저 우분투에 딥러닝 환경 설치하는 방법에 대해서는 https://webnautes.tistory.com/1428에서 참조하였습니다. 참조한 블로그의 포스팅과 차이점은 핵심만 추려 간소화한 것입니다.

 

딥러닝 환경을 구성하기 위해서는 크게 3가지가 필요하다.

 

1. NVIDIA 드라이버

2. CUDA

3. cuDNN

 

이를 위해 아래의 명령어를 순차적으로 실행하면 된다.

 

우분투 최신 환경 유지

sudo apt-get update

sudo apt-get upgrade

 

현재 사용중인 그래픽카드에 설치할 수 있는 드라이버 목록 확인

ubuntu-drivers devices

 

* 만약 ubuntu: command not found 에러가 발생한다면 아래와 같이 관련 패키지 설치를 우선하면 된다.

sudo apt-get install -y ubuntu-drivers-common

 

 

결과로 확인된 driver 중 하나를 설치하며, 가급적 recommended라 표시된 것을 설치한다. 설치 이후 적용을 위해서 재부팅이 필요함.

 

만약 명령어의 결과값이 위 처럼 나오지 않고 출력값이 없을 경우 그래픽카드가 올바르게 연결되어 있지 않은 것이므로 연결을 잘 확인해야 함.

 

NVIDIA 드라이버 설치

sudo apt-get install nvidia-driver-470

nvidia-smi

 

Driver Version으로부터 설치한 드라이버 버전인 470을 확인할 수 있음

 

https://developer.nvidia.com/cuda-toolkit-archive에 접속해서 CUDA Toolkit 11.4.2를 클릭. 이후 아래와 같이 Linux, x64_64, Ubuntu, 20.04, deb(local)를 선택. (각자 환경에 적합한 것으로 선택)

 

선택 이후 아래의 명령을 확인할 수 있고 터미널에 아래의 명령어를 입력

 

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.2-470.57.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.2-470.57.02-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

(낮은 버전에서는 위 그림보다 더 간소화된 설치 command를 제공한다. 그 때 설치 에러가 발생한다면 sudo apt-get install gcc를 통해서 gcc를 설치하면 된다)

 

CUDA Toolkit 관련 설정을 환경 변수에 추가 후 적용

sudo sh -c "echo 'export PATH=$PATH:/usr/local/cuda-11.4/bin' >> /etc/profile"

sudo sh -c "echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.4/lib64' >> /etc/profile"

sudo sh -c "echo 'export CUDADIR=/usr/local/cuda-11.4' >> /etc/profile"

source /etc/profile

 

버전이 다르다면 위 명령어에서 11.4 말고 설치한 버전만 바꾸어 입력하면 된다.

 

cuDNN 다운로드

https://developer.nvidia.com/cudnn 에 접속하여 Download cuDNN 클릭 후 로그인. 이후 Download cuDNN v8.2.4 ~ for CUDA 11.4를 선택하여 다운로드

 

cuDNN 파일 압축해제 및 파일 복사

cd Downloads

tar -xvzf cudnn-11.4-linux-x64-v8.2.4.15.tgz

sudo cp cuda/include/cudnn* /usr/local/cuda/include

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

 

 

cuDNN 파일 심볼릭 링크 설정

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.0 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.0  /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.0  /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.0  /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.0  /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.0 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8.1.0  /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8

 

마찬가지로 버전이 다르다면 11.4를 설치한 버전으로 바꾸면 된다.

 

새로 추가된 라이브러리를 시스템에서 찾을 수 있도록 함

sudo ldconfig

 

 

루트 디렉터리로 이동

cd

 

 

링크 설정이 정확하게 되었는지 확인

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

위와 같이 8.2.4가 보여야 함.

 

여기까지하면 딥러닝 환경 설치에 필요한 NVIDIA 드라이버, CUDA Toolkit, cuDNN 설치를 완료한 것임.

 

실제로 GPU가 학습에 사용될 수 있는지 여부를 확인하기 위해서는 추가적으로 텐서플로우를 설치.

 

pip3 install tensorflow

이후 위의 tf.config.list_physical_devices("GPU")를 통해 successful이 보인다면 정상적으로 학습에 사용할 수 있음. 끝.

 

 

설치 자체는 위 명령어들만 입력해주면 간단하게 설치되어서 문제 없었음. 하지만 도중에 그래픽 카드 낮은 성능인거 확인하고 다른 그래픽카드로 갈아끼우는데 애먹어서 힘들었음. 그래픽 카드 장착 해제하기 위해서 멈치 찾고 누르는게 어찌나 어렵던지... 갈아끼우고 나서 ubuntu-drivers devices 명령어 입력 했을 때 결과가 출력되지 않아서 당황도 했음. PCI 선을 꼽지 않아서 그래픽 카드에 연결이 되지 않았던 것임. 그래서 연결하려고 PCI 선 하나 꼽았다가 비프음 4번 나는거 듣고 파워 부족이라는거 보고 PCI 선 다 넣어주고 켰더니 이번엔 비프음 5번 또 발생함. 그래픽카드와 모니터가 연결안되어서 발생하는 문제였음. 그래서 올드한 VGA 케이블에서 HDMI로 바꾸니까 됐음. 연구실 사람들 도움 받아서 하긴했는데 멈치가 망가짐 아닌 망가지긴 했음. 무튼 다음에는 삽질을 좀 덜할 수 있을 것으로 보임

 

 

Reference

[1] https://webnautes.tistory.com/1428

+ Recent posts