save the world

Python gpu version 설치 본문

PYTHON

Python gpu version 설치

함안조씨 2016. 6. 3. 01:13

오늘 처음으로 TISORY 를 사용함.

요약 1.cuda7.5설치(nvidia-driver는 cuda 설치 시 자동으로 설치된다) 및 환경변수 설정
         2.cudNN 7.5 (v4) 다운로드후 적절한 경로에 파일들을 이동시키기.
         3.tensorflow 를 pip 으로 다운로드(cuda 7.5를 사용할 것이기 때문)

우분투 14.04 버전에서 tensorflow 를 gpu를 이용하여 실행시키는 것이 목표였다.

우분투 16.04버전은 나온지 얼마 되지않아 호환이 잘 안되는 부분이 있어서 14.04를 설치하였다. 우분투에는 python이 설치되어있기 때문에 tensorflow tutorial(https://www.tensorflow.org/versions/r0.8/get_started/index.html) 을 보면서 따라하였다.

시작하기전 nvidia driver 부터 설치하였다.  Cuda를 깔면 자동으로 nvidia driver가 설치 된다.

(※재부팅 타이밍 중요) 뭔가 안된다면 한번씩 재부팅을 해보자


설치과정에서 text mode(ctrl + art + f1~6) 가 필요하여

 http://moothink.tistory.com/archive/201408의 끄적임 블로그와 http://jangjy.tistory.com/193의 살다보니 블로그를 참고(nvidia driver 설치과정과 텍스트모드)하였다.  텍스트모드 빠져나올때는 ctrl + art + f7. 텍스트모드가 필요한 이유는 nvidia driver 나 cuda 를 설치할때 그래픽카드를 잠시 종료시키고 설치하기때문에 바탕화면이 뜨지 않는다 이 때 텍스트 모드를 하면 말 그대로 글씨만 보이는 창이 생기고 명령어를 입력 할 수 있기때문이다. 텍스트모드를 다룰 때(?) 기본제공하는 vi 에디터나 vim 에디터를 이용해서 파일을 편집 하는데 파일을 편집하기 위해서는 색다른 명령어들이 필요하다. (파일의 내용을 도대체 어떻게 수정하는지 몰라서 한참 해맸음...)

Esc를 한 번 누른 상태에서 작동하는 것들이다.

  • 입력모드 - i, a 
  • 커서 왼쪽으로 이동 - h
  • 커서 오른쪽으로 이동 - l
  • 커서 위쪽으로 이동 - k
  • 커서 아래쪽으로 이동 - j
  • 한글자 삭제 - x
  • 한 단어 삭제 - dw
  • 한 라인 삭제 - dd
  • n번째 라인 삭제 - ndd
  • 검색 - /내용
  • 현재 라인 복사 - yy
  • n번째 라인 복사 - nyy
  • 붙여넣기 - p
  • 실행취소 - u
  • 저장하지 않고 종료 - :wq
  • 저장 - :w
  • 저장 후 종료 - :wq, :ZZ

출처 : http://mrkzet.tistory.com/23

vim 에디터를 사용하면 vi에서 방향키 대신 키보드로 움직여야 했던 불편함이 없다.,

바로 방향키로 이동하고 편집하고 뭐 그러면 되니 얘가 훨씬 편한듯..

vim 에디터는 아래의 명령어로 설치 가능하다.

$ sudo apt-get install vim

출처 : http://jangjy.tistory.com/194


텍스트모드 문제가 해결되었다면 

nvidia driver 를 설치하기 위해 살다보니 블로그를 참고한다. Cuda를 깔면 자동으로 nvidia driver가 설치 된다.

살다보니 블로그에서 7번 항목의 nvidia 드라이버 설치 $ sudo sh NVIDAI-x86_64~~~~.run 부분에서 다운받은 run파일을 실행하기 위해서는 커맨드창에서 cd 명령어로 nvidia-x86어쩌고저쩌고. 가 있는 파일의 위치로 이동하여야 할 것이다. 


cuda toolkit 설치를 위해서 https://devtalk.nvidia.com/default/topic/878117/titan-x-for-cuda-7-5-login-loop-error-ubuntu-14-04-/ 페이지에서  참고하였다


다음으로 cuda toolkit 7.5 버전을 다운받는다. 7.0버전을 받을경우 텐서플로우를 설치할때 pip 으로 설치하면 안되고 source 로 설치해야함. 자세한내용은 tensorflow홈페이지 requirement 부분 참조 (The GPU version (Linux only) works best with Cuda Toolkit 7.5 and cuDNN v4. other versions are supported (Cuda toolkit >= 7.0 and cuDNN 6.5(v2), 7.0(v3), v5) only when installing from sources. Please see Cuda installation for details.)

https://developer.nvidia.com/cuda-downloads

설치과정은 https://devtalk.nvidia.com/default/topic/878117/titan-x-for-cuda-7-5-login-loop-error-ubuntu-14-04-/ 페이지에서 가장 긴 댓글을 참고하였다. (0번부터 16번 reboot 과정까지 있음.)

2번 과정은 xorg.conf 라는 파일을 지우라는 내용이다. (서버설치때는 없어서 지울필요 없었음).
3번 과정은 원래 ubuntu에 설치되어있는 그래픽카드 드라이버(?)를 이용하여 GUI를 띄우는데 이를 실행시키지 않도록 하기위하여 blacklist에 추가하는데 CUDA8.0부터는 드라이버를 블랙리스트에 자동으로 추가시켜주기 때문에 3번과정부터 $sudo update-initramfs -u 까지 할 필요가 없어진다.

3번과정에서 gedit 를 이용하여 수정하면 편한데 생각해보니 텍스트모드라 그럴수가 없다...(애초에 파일에 아무것도 안적혀 있는것 같은데 수정이 아니라 작성이라고 해야할 듯, 작업하면서 글을 쓰는것이 아니라 파일에 뭐가 있는지 잘 모르겠다. 근데 과정 3에 Create the /etc/modprobe.d/blacklist-nouveau.conf 이라고 적힌걸 봐서 파일을 create 하는 것으로 보임.)

(텍스트모드를 켜서 실행하기전에 바꾸어 놓으면 좋을 것 같다.)

    gksudo gedit /etc/modprobe.d/blacklist-nouveau.conf

따라서 vi 를 사용하여

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

이라고 입력하면 텍스트모드에서도 열린다. 그다음 새로 만들어진/열린 파일에 아래코드를 작성한다.(링크에 오타(option)있음)

 blacklist nouveau

options nouveau modeset=0

다음과정에서 $ sudo update-initramfs -u 를 적어주고 재부팅을 하라그래서 재부팅을 했는데 부팅이 되지 않았음. 그래서 putty 로 원격접속하여 한 번 더 $ sudo update-initramfs -u 를 실행하여주고 재부팅해서 부팅이 완료됨.

아래의 과정은 사용자가 루트권한 사용자인지 게스트인지 루트권한이 없는 사용자인지 에 따라 사용자의 권한을 참조하여 파일을 읽고 쓸수 있도록/없도록 하여주는 명령어이다. chmod 는 change mode 라는 뜻이고 a+x 는 x라는 권한을 주는것이다.(x가 뭔지 잘 모르겠다. a의 의미는 add로 예상됨) 

당시 연구실에서 나의 권한은 w 와 x 가 빠져 있었기 때문에 서버계정으로 접속 후

$ chmod a+x cuda_7.5.18_linux.run
$ chmod a+w cuda_7.5.18_linux.run

 을 해주어 권한을 바꾸어 주었다. (파일의 권한을 확인하고 싶으면 $ ls -l 을 입력하면 됨) "cuda_7.5.18_linux.run"자리에 다운받은 파일이름 입력

$chmod a+x .cuda_7.5.18_linux.run

deb 파일을 사용하면 자동으로 업그레이드되어 골치아프다고하니 run 파일을 받아서 설치하는 이 과정을 따라가는 것이 좋을 것 같다.

run파일 실행전 그래픽카드사용을 정지시키기 위해

$ sudo service lightdm stop

을 하여주고

이제 cuda7.5를 설치하자 (link 에서는 "sudo bash 파일이름" 사용)

$ sudo sh "cuda파일이름입력"  

설치가 완료 되었다.

cuda7.0.28버전을 설치하면서 Xconfig 를 생성(?) 하는 부분이 있었는데 이부분에서 yes 를 했더니 재부팅될때마다 오류가 떴다. 그러니 다음엔no 를 선택하자.

환경변수 설정은

sudo vim ~/.bashrc 아니면 sudo vi ~/.bashrc 아니면 sudo vim ~/.bash_profile(?)

를 이용하였는데 여기서부터는 run파일로 하지않았기때문에 잘 모르겠다. 환경변수 설정후
source ~/.bashrc
를 입력해야 제대로 저장/업데이트 가 된다고 한다. 그러나 재부팅 했을때 제대로 업데이트가 되어 작동하였다.

 

커맨드창에 nvidia-smi 를 입력하니 nvidia 드라이버 버전이 나온다..

이제 Cudnn 으로 넘어가보자 처음에 cuDNN v5인지 v4 인지 버전을 받아서 하라는대로 했는데 python이 libcudnn6.5.so 파일을 찾고있는걸 발견했다. 그래서 /usr/local/cuda/lib64와 /usr/local/cuda/include 로 들어가서 sudo rm libcudnn* 과 sudo rm cudnn.h 를 입력하여 파일을 모두 지워주고 cuDNN v2 for CUDA 6.5 를 다운받아서 다시 하라는대로(파일 복사해서 경로에 붙여넣기 하는 거) 했다. 이후에 환경변수 설정을 libcudnn6.5.so 가 있는 경로로 지정해주니 파이썬 실행이 잘 되었다. (이 부분은 cuda7.0버전을 쓸 당시)

CUDA7.5 버전을 깔고 실행하니 Hello 띄우기 같은 간단한 작업은 오류없이 잘 되었지만 train 하는 코드들은 process finished with exit code 134 라는 오류들을 띄우면서 실행이 되지 않았다. 이는 cudNN이 설치가 제대로 되지 않아서 또는 호환이 되지 않아서 그랬던 것이었다. cudNN 설치라고 해봤자 파일을 다운받아서 적합한 경로에 파일을 복사하여주면 되는 것이었기 때문에 6.5(V2) 버전을 지우고

$ sudo rm /usr/local/cuda/include cudnn.h
$ sudo rm /usr/local/cuda/lib64 libcudnn*

새로 다운받은 파일 ( cudNN 7.5 (V4) ) 을 붙여넣기 하여 주어서 잘 작동 되었다.

$ sudo cp (cudnn.h가 있는 경로입력) cudnn.h /usr/local/cuda/include
$ sudo cp (이름에 libcudnn이 포함된 파일의 경로) libcudnn* /usr/local/cuda/lib64

참고 할 블로그 :  http://www.complexity.co.kr/?p=2476

https://aiforum.kr/t/tensorflow/18

http://jangjy.tistory.com/194

http://moothink.tistory.com/archive/201408

https://www.tensorflow.org/versions/r0.8/get_started/os_setup.html#optional-install-cuda-gpus-on-linux

http://cuda-hpcmind.blogspot.kr/2015/08/full-recipe-to-install-cuda-7-on-ubuntu.html


'PYTHON' 카테고리의 다른 글

python training  (0) 2016.06.08
이미지로 데이터파일 만들기  (0) 2016.06.05
Pycharm Library 다운받기  (0) 2016.06.03