본문 바로가기

연구활동/머신러닝

Python 3.5 + Tensorflow-GPU + CUDA 8 + Cudnn 6 설치 가이드 (Ubuntu 16.04 기준)

Tensorflow-gpu, CUDA 설치를 하는 데 삽질을 워낙 많이 했는데 참고하시고 다들 고생을 덜 하시면 좋겠습니다.

 

설명하는 환경 설정은 다음과 같습니다.

Ubuntu 16.04

Python 3.5

Tensorflow-gpu 1.4

CUDA8

Cudnn6

 

 

원래는 Tensorflow 2.0을 사용했는 데, 코드의 호환성 문제 때문에 Tensorflow 1.4 을 사용하게 되었습니다.

 

 

1. Python 3.5 설치

제공된 서버에 파이썬 3.5가 설치되어 있으면 넘어가도 되지만 만약 설치가 안되어 있다면 다음의 명령어를 입력합니다.

 


sudo add-apt-repository ppa:fkrull/deadsnakes 
sudo apt-get update  
sudo apt-get install python3.5

 

설치 확인은 다음의 명령어를 통해 확인합니다.

 


python3 –version

 

2. GPU 확인 및 드라이버 설치

Tensorflow-gpu 설치에 앞서서 현재 우분투 그래픽 카드를 다음의 명령어를 통해 확인합니다.

sudo lspci | grep -i VGA

그래픽 카드에 맞는 드라이버를 설치해야 하는데 이는 다음의 홈페이지에서 확인할 수 있습니다.

 

https://www.nvidia.co.kr/Download/index.aspx?lang=kr

 

확인 후에 다음과 같은 드라이버 표시 창에서 버전을 확인하시고 드라이버를 설치하시면 됩니다.

 

만약 현재 드라이버가 정상적으로 설치가 되었거나 업데이트가 필요하지 않다면 건너뛰어도 됩니다.

 

드라이버 설치

 


sudo apt-get install nvidia-436

 

드라이버 확인은 다음의 명령어에서 확인할 수 있습니다.

 


nvidia-smi

nvidia-settings

다만 nvidia-settings 은 정상적으로 작동하지 않을 수 도 있는데 nvidia-smi 각 정상적으로 출력이 되었다면 무시하고 넘어갑니다.

 

 

3. Tensorflow-gpu 설치

 

이제 Tensorflow-gpu 를 설치하면 됩니다.

 

먼저 설치에 앞서 혹시 이전에 있던 설치환경이 꼬여서 tensorflow-gpu를 재 설치한다면 먼저 기존 버전들을 uninstall 합시다

 


sudo pip3 uninstall tensorflow-gpu
sudo pip3 uninstall tensorflow

 

다시 tensorflow-gpu 를 설치해 줍시다.

 


sudo pip3 install tensorflow-gpu==1.4

 

 

4. CUDA 설치

 

대망의 CUDA 설치입니다.

 

먼저 설치에 앞서서 CUDA는 여러 버전이 존재하며 Tensorflow 와의 compatibility 가 있습니다. 

현재 저는 tensorflow-gpu 1.4 버전과 CUDA 8 버전을 사용하고 있습니다.

 

CUDA는 nvidia develop 홈페이지에 들어가서 다운로드하여 주도록 합니다.

 

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

현재 CUDA Toolkit 8.0은 GA1, GA2 두 버전이 존재하는데 GA2를 다운받아 주도록 합니다.

 

CUDA를 다운로드한 폴더에 가서 다음의 명령어를 입력해 줍시다.


sudo sh cuda_8.0.61_37.5.26_linux.run

 

파일 이름은 다를 수 있으니 다운 받은 파일 이름에 맞춰 명령어를 입력해 줍시다.

 

파일 실행 이후 Licence 안내문이 나오면 Ctrl + C 를 눌러서 스킵하도록 합니다.

이후에는 순서대로 입력해 줍시다

 

accept

n (가끔씩 y를 누르면 실행이 잘 되지 않기 때문에 no를 선택해야 합니다.)

y (cuda 8.0 toolkit 설치)

[Enter] (default 세팅으로 쿠다가 설치되도록 합시다.)

y (Symbolic link setup)

n (Sample tests는 굳이 필요하지 않습니다.)

 

설치가 정상적으로 되면 다음과 같은 화면이 출력되게 됩니다.

 

 

**XWindows 사용 시에 CUDA가 제대로 설치되지 않는 경우가 있습니다.

이때는 XWindow 세션을 종료하고 다시 접속해야 합니다. 접속 후에도 되지 않는다면 XWindow lock 파일을 지워야 합니다.

 

설치 이후에는 환경변수를 설정해 줘야 하므로 다음의 명령어를 입력해 줍니다.

 

 

 

5. Cudnn 설치

 

Cudnn 은 버전 6을 설치하였습니다. 다만 확인이 필요한 게 실제 cudnn 설치 이전에 머신러닝 코드가 있다면 한번 실행을 시킨 뒤에 어느 버전의 cudnn 이 필요한지 확인을 해 보시길 바랍니다.

 

CUDA8은 Cudnn 5.0과도 호환이 되지만 이상하게도 Cudnn 5.0 설치 이후 libcudnn.so.6을 찾지 못한다는 에러가 발생해서 저는 다시 Cudnn 6.0을 설치하였습니다.

 

Cudnn도 CUDA와 같이 nvidia 에서 다운로드할 수 있습니다.

 

https://developer.nvidia.com/rdp/cudnn-archive

 

cuDNN Archive

NVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.

developer.nvidia.com

 

이후에는 Cudnn 이 설치된 폴더에 가서 다음의 명령어들을 입력해 줍니다.


sudo tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp include/cudnn.h /usr/local/cuda/include
sudo cp lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/lib64/libcudnn*
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

cudnn의 이름명은 달라질 수 있습니다.

 

마지막 명령어 이후 cudnn 의 버전이 출력이 된다면 올바르게 설치가 된 것을 확인할 수 있습니다.

 

그 이후 CUDA의 경로 설정을 마무리하기 위해 밑의 명령어를 입력합니다.


sudo vi ~/.bashrc

들어간 bashrc 파일의 맨 밑으로 내려가서 다음을 입력해 줍니다.


export CUDA_HOME=/usr/local/cuda-8.0
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

이후 파일을 저장하고 빠져나온 뒤에 다음의 명령어를 터미널에 입력합니다. 


source ~/.bashrc

 

이제 설치가 완료되었습니다.

 

제대로 CUDA가 설치되었는지 확인하려면 다음의 명령어를 입력하면 됩니다.


nvcc --version

 

이상으로 Tensorflow-gpu와 CUDA, cudnn의 설치가 완료되었습니다.

 

6. 에러 문제

 

위의 방법 그대로 설치를 완료하였더라도 문제가 발생하는 경우가 있습니다. 저 역시 문제가 발생해서 수많은 시간을 날렸습니다

 

만약 설치를 하고 ML 파일을 실행을 했는데 다음과 같은 에러가 발생할 경우 참고하셔서 문제를 해결하시길 바랍니다.

 

** libcudnn.so.6 에러


ImportError: libcudnn.so.6 cannot open shared object file: No such file or directory

위의 에러가 뜰 경우 밑의 명령어를 입력해 보시길 바랍니다.


cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.6.0.21
sudo ln -sf libcudnn.so.6.0.21 libcudnn.so.6
sudo ln -sf libcudnn.so.6 libcudnn.so
sudo ldconfig

 

**libcublas.so.8.0 에러


ImportError: libcublas.so.8.0: cannot open shared object file: No such file or directory

위의 에러가 뜰 경우 밑의 명령어를 입력해 보시길 바랍니다.


sudo ldconfig /usr/local/cuda/lib64
sudo ldconfig /usr/local/cuda-8.0/lib64

 

성공적인 설치가 되었기를 바랍니다!