본문 바로가기

인공지능(AI)/모델개발

(Tensor Flow 설치 1)우분투 14.04 NVIDIA 그래픽 드라이버 설치 및 cuda, cudnn 설치

반응형

우분투에 그래픽 드라이버잡는거 그거 뭐라고 만 하루를 꼬박 설치하는데만 보내냐 ㅠㅠ

그때그때  발생하는 에러를 잡기 위해서 구글에 있는 관련 문서는 한글 영어 가리지 않고 거의 다 본것 같다. 본 포스팅은 다시 개발환경을 밀고 설치를 할 때 똑같은 실수를 반복하지 않고, 나와 같은 처지였던 사람들에게 해결방법을 알리기 위함이다. 정말 많은 포스팅이 있는데 볼수록 헷갈리기만 하니까 이포스팅에서 아주 자세히 설명을 할테니 빠짐없이 그대로 따라하길 바란다.


(1) 사전준비 작업

그동안 정들었던 theano기반 Keras 개발 환경을 과감하게 밀어버리고 tensorflow로 넘어가기 위해 우분투 설치 usb를 만들고 일단 그래픽카드를 본체에서 제거하고 설치를 하자(이유는 질문하면 알려주겠다). 설치 후 네트워크를 연결하고 NVIDIA 홈페이지에서 그래픽카드 최신버전(내 경우는 64bits 버전 NVIDIA-Linux-x86_64-367.44.run)을 Home 폴더에 다운로드 받자. 내친김에 cuda와 cudnn도 받아놓자(cuda_7.5.18_linux.run, cudnn-7.5-linux-x64-v5.0-ga.tgz). 

그리고 터미널을 켜고 다음 두 명령어를 입력한다.


sudo apt-get update

sudo apt-get install build-essential


(2) nouveau 비활성화

NVIDIA계열 드라이버 설치 시 첫 번째 만나는 난관은 nouveau다. 우분투 설치시 기본적으로 설치되는 드라이버인데 이녀석이 NVIDIA 드라이버와 충돌을 일으킨다. 자세한 설명은 여기로 (http://blog.neonkid.xyz/66) 요약하자면 nouveau를 끄고 드라이버를 설치해야한다. 

터미널을 실행시키고 다음과 같이 명령어를 입력하면 된다.


sudo vi /etc/modprobe.d/blacklist-nouveau.conf 

blacklist nouveau

blacklist lbm-nouveau

options nouveau modeset=0

alias nouveau off

alias lbm-nouveau off

:wq를 누르고 저장 후 다시 터미널로 나와서 다음 명령어를 입력한 후 일단 컴퓨터를 끄자.

sudo update-initramfs -u

sudo shutdown -h now


(3) 드라이버 설치

컴퓨터를 끈 후 그래픽 카드를 장착하고 디스플레이를 그래픽 카드로 연결한다. 그리고 부팅하면 "The system is running in low- graphics mode" 라는 처음 맞이하는 메시지가 나타났다. 처음엔 뭐지 하다가 가만 생각해보니 그래픽카드 드라이버를 설치한 적이 없으니 당연히 low graphics mode로 동작하는거다. 참고로 내 그래픽카드는 NVIDIA gtx titanX다(갑자기 왠 자랑질??). 침착하게 CTRL+ALT+F1을 눌러 콘솔로 진입한 다음 로그인을 하자. 다른 포스팅을 보면 lightdm을 stop하라고 되어있는데 아마 지금 상태면 lightdm이 이미 stop되어있는 상태일 것이다. 그래서 할 필요가 없다. (1)단계에서 받아놓은 드라이버를 바로 설치하면 된다.


sudo sh NVIDIA-Linux-x86_64-367.44.run


no하는것 없이 디폴트로 다 설치하자. 설치가 다 되면 다음 명령어를 입력하자


sudo nvidia-xconfig


위에 명령어 입력안하면 x window 실행할 때 xorg관련 problem이 뜰것이다. 그러니까 까먹지 말자. 

여기까지 문제없이 실행했다면 디스플레이 매니저를 실행하자.


sudo service lightdm start


로그인 화면이 뜨고 문제없이 로그인이 될 것이다. 그런데 문제가 하나 있다. CTRL+ALT+F1을 누르면 콘솔로 넘어가야하는데 아마 까만화면만 뜨고 아무것도 안나올것이다. 당황하지말고 재부팅 한 후 다음 grub 파일을 수정하면 된다.


sudo vi /etc/default/grub


파일을 열고 GRUB_CMDLINE_LINUX_DEFAULT="quiet_spolash" 라는 부분을 아래와 같이 고쳐준다.

GRUB_CMDLINE_LINUX_DEFAULT="quiet_spolash nomodeset"


저장 후 나와서 grub파일을 업데이트 한 후 재부팅 한다.

sudo update-grub
sudo reboot


여기까지 실행하면 드라이버는 깔끔하게 설치된 것이다.


(4) cuda 설치

CTRL+ALT+F1으로 콘솔화면으로 나온 후 로그인한다음에 디스플레이 매니저를 끄자.


sudo service lightdm stop


(1)에서 다운로드 받았던 cuda 파일을 실행하면 된다.


sudo sh cuda_7.5.18_linux.run


여기서 그래픽 드라이버는 설치했기 때문에 그래픽 드라이버 설치하시겠습니까(영어로 나온다 잘해석하면 됨)라고 물어보는 질문에는 no, 나머지는 디폴드로 다 설치하자. 설치 후 bashrc 파일에 cuda 경로를 설정해줘야 한다.


sudo vi ~/.bashrc


위 명령어로 파일을 열어서 마지막에 아래 경로를 추가하면 된다.


export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64" 

export CUDA_HOME=/usr/local/cuda


혹시 cuda 설치 시 다음과 같은 에러가 발생한다면 "the driver installation is unable to locate the kernel source..." 커널을 설치해주면 된다.

sudo apt-get install dkms fakeroot build-essential linux-headers-generic


혹은 다음과 같은 에러가 발생한다면 "You appear to be running an X server..." 프로세스 관련 폴더를 지우면 된다.

cd /tmp
rm -rf .X0-lock


(참조 http://m.blog.daum.net/goodgodgd/20 의 5.troubleshooting 부분)


(5) cudnn 설치

cudnn 설치는 간단하다. (1)에서 다운로드 받았던 파일의 압축을 풀고 파일을 복사해주면 끝이다.

tar xvzf cudnn-7.5-linux-x64-v5.0-rc.tgz


를 입력하면 압축이 풀리고 Home에 cuda 폴더가 생긴다.


cd cuda/include

sudo cp cudnn.h /usr/local/cuda/include 

cd ..

cd lib64

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

sudo chmod a+r /usr/local/cuda/lib64/libcudnn* 


이제 cudnn까지 설치가 끝났다.


(6) 그 외 설정

cuda를 설치할 때 Home폴더에 nividia sample 폴더가 생성되었을 것이다. 컴파일 해주자.


cd NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery

make


만약에 make시 에러가 난다면 build-essential이 제대로 설치가 안된 것이므로 (1)의 build-essential을 다시 설치하자. 위 과정까지 끝났으면 제대로 컴파일 되었는지 테스트를 해본다. 


./deviceQuery


실행결과가 PASS이면 제대로 설치된 것이다. 지금까지 수고했다. 마지막 대망의 확인작업만이 남았다. 


nvcc -V

nvidia-smi


위 명령어를 실행해서 문제없이 버전과 gpu 스펙을 확인할 수 있다면 마지막 확인 작업이 끝난것이다. 이제 tensorflow 설치준비가 끝났다!


반응형