이번 포스팅에서는 Ubuntu 16.04에서 GPU사용이 가능한 Tensorflow설치에 관해서 포스팅하겠습니다.
CPU버전의 Tensorflow는 설치가 매우 쉽습니다. GPU버전의 Tensorflow를 설치할 줄 안다면 CPU버전은
정말 정말 쉽게 설치하실 수 있을 겁니다.
GPU버전의 텐서플로우를 설치하기 위해서 리눅스를 한달 동안 근 100번 정도는 재 설치를 진행한 것 같습니다. 리눅스에서 그래픽카드 설정이 뜻대로 안되는 바람에 많이 고생했네요.
다른 분들은 제 포스팅을 통해서 이러한 고생을 조금 덜 하시고 저보다는 빠르게 텐서플로우에 마음 편히 빠르게 접근하셨으면 하는 마음입니다.
시작하겠습니다.
1. 하드웨어 스펙
- 게이밍 노트북 ALIENWARE 17 R3
- Intel Core i7-6700HQ
- Ram 16 GB
- 128 GB SSD, 1T HDD
- GTX980M
2. Ubuntu 16.04 설치
우분투 설치에 관해서는 설치 과정까지 진행하진 않습니다. 다만 Ubuntu 공식 홈페이지에서 지원하는 Ubuntu 16.04 - Desktop 버전을 추천 드리지 않습니다. 많은 사람들이 공식 홈페이지의 Ubuntu16.04의 X window의 noveau와 nvidia의 그래픽 카드와 충돌이 많이 일어난다고 이야기를 하나, 이 부분은 검증된 것이 아니고, 해보지도 않아 모르겠습니다. 하지만 제가 공식 홈페이지의 Ubuntu16.04버전을 사용할 때, 많이 불안정 하고 특히나 워크스테이션 및 여러 모니터를 쓰는 제 입장에서 트리플 모니터와 피벗이 가능한 모니터 해상도 지원이 굉장히 불안정하고 셋팅이 자꾸 풀려서 굉장히 힘들었습니다. 몰론 제가 아직 xrandr 명령어 및 리눅스에 익숙하지 않아서 그럴지도요...
아무튼 그래서 저는 Ubuntu Mate 16.04버전을 쓰시길 추천 드리겠습니다.
3. 그래픽 카드 드라이버 설치
3-1. ALIENWARE일 경우
ALIENWARE에서는 바이오스 셋팅을 먼저 해주어야 합니다.
다른 노트북 혹은 데스크탑은 어떤지 모르겠으나 Secure Boot를 Disabled해줘야합니다.
Disabled설정을 안하면 그래픽 카드 드라이버를 설치해도 드라이버를 인식하지 못하게 됩니다.
이렇게 셋팅을 다 해주셨으면, 우분투에 들어와서 Control Panel을 보면 Software & Updates라고 보입니다.
그것을 클릭하고, Additional Driver 탭을 클릭하면, 다음과 같이 Nvidia Corporation:GM204M[GeForce GTX980M]과 같이 보이게 됩니다. Using NVIDIA binary driver를 check해주시고 Apply Changes를 하고 설치가 다 되면 재부팅을 해줍니다.
설치 후에, 다음 명령어를 쳐서 명령어가 작동하는지 확인합니다.
정상적으로 작동한다면, 그래픽 카드 드라이버가 정상적으로 설치 된 것입니다.
1 | nvidia-smi | cs |
3-2. Nvidia Graphics Driver 직접 설치
wget으로나, nvidia 홈페이지에서 직접 그래픽 드라이버를 다운받습니다. (링크)
그래픽 드라이버를 다운 받았으면, ubuntu의 nouveau와의 충돌을 막기위해 몇가지 설정을 진행합니다.
1. 그래픽 카드 충돌 방지 (ubuntu 16.04 LTS 기준)
1 2 3 4 5 6 7 8 9 10 | sudo apt-get purge xserver-xorg-video-nouveau # vim이나 gedit이 없다면, 다음 명령어를 통해서 설치해준다. sudo apt-get install gedit vim sudo gedit /etc/modprobe.d/blacklist-nouveau.conf or sudo vim /etc/modprobe.d/blacklist-nouveau.conf | cs |
2. blacklist-nouveau.conf 내용 추가 및 수정 (ubuntu 16.04 LTS 기준)
1 2 3 4 5 | blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off | cs |
아래 명령어를 통해 backlist-nouveau.conf 내용을 적용해줍니다.
1 | sudo update-initramfs -u | cs |
3. ubuntu가 GUI 버전일 경우
Ctrl + Alt + F1 키를 동시에 눌러서 TEXT 모드로 진입한다.
3-1. nouveau stop
1 | sudo service stop lightdm | cs |
3-2. graphics card driver 설치
1 | sudo sh NVIDAI~~~.run | cs |
4. CUDA-7.5 설치
CUDA를 설치하는 방법은 2가지가 있습니다.
1). Ubuntu 내장 명령어로 설치
2). 직접 NVIDIA 사이트에서 CUDA Toolkit 파일을 받아서 설치
여기서는 2가지 방법 모두를 다루도록 하겠습니다.
1). Ubuntu 내장 명령어로 설치
1 | sudo apt-get install nvidia-cuda-toolkit | cs |
해당 명령어를 치면 알아서 죄다 설치해줍니다.
2). 직접 NVIDIA에서 CUDA-7.5 Toolkit runfile 설치
https://developer.nvidia.com/cuda-75-downloads-archive
위 링크에서 Linux/x86_64/Ubuntu/15.04/runfile(local) 를 클릭하여 다운로드합니다.
다운로드가 진행이 끝나면 파일 이름은 cuda_7.5.18_linux.run일 겁니다.
이제 터미널에서 해당 다운로드된 폴더로 이동해서 다음과 같이 명령어를 입력해줍니다.
1 2 3 4 | //디렉토리로 이동 cd ~/Downloads //설치파일 실행 sudo sh cuda_7.5.18_linux.run | cs |
그럼 라이센스 및 정책에 관한 글들이 나오고, 다 읽을 때 까지 Enter를 계속 눌러줍니다.
그리고 다 읽으면 다음과 같이 대답에 입력해줍니다.
1 2 3 4 5 6 7 8 | Do you accept the previously read EULA? (accept/decline/quit): accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 346.46? ((y)es/(n)o/(q)uit): y Do you want to install the OpenGL libraries? ((y)es/(n)o/(q)uit) [ default is yes ]: n Install the CUDA 7.5 Toolkit? ((y)es/(n)o/(q)uit): y Enter Toolkit Location [ default is /usr/local/cuda-7.5 ]: [Enter] Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y Install the CUDA 7.5 Samples? ((y)es/(n)o/(q)uit): y Enter CUDA Samples Location [ default is /root ]: [Enter] | cs |
혹여나 Unsupported 어쩌구 나오면 그것도 그냥 무시하고 accept눌러주시면 됩니다.
3). 직접 NVIDIA에서 CUDA-7.5 Toolkit .deb 설치
위 링크에서 Linux/x86_64/Ubuntu/15.04/deb(local) 를 클릭하여 다운로드합니다.
.deb 파일을 설치해줍니다.
1 2 3 | sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb sudo apt-get update sudo apt-get install cuda | cs |
4). CUDA 환경변수 설정하기.
설치가 완료되면 CUDA Toolkit에 대한 환경설정을 다음과 같이 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 만약 vim설치가 되어있지 않다면 다음 명령어를 이용하여 vim설치를 진행합니다. sudp apt-get install vim // 환경설정 sudo vim ~/.bashrc // i를 입력하시면 insert라고 변경이 되며 맨 밑에 내려가서 다음과 같이 입력해줍니다. export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64" export CUDA_HOME=/usr/local/cuda-7.5 // 다 입력이 되면 esc를 입력한 후 :wq를 치시고 해당 환경설정 파일을 저장해줍니다. // 환경설정을 반영해줍니다. source ~/.bashrc // 반영이 되었으면 CUDA설치와 환경설정이 정상적으로 이루어졌는지 다음 명령어를 입력하여 확인합니다. nvcc -V | cs |
1 2 3 4 5 | sudo vim /etc/profile export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64" export CUDA_HOME=/usr/local/cuda-7.5 source /etc/profile | cs |
/etc/profile에도 환경설정을 해주는 이유는 나중에 파이참을 사용할 때, 파이참이 로드하는 환경설정은 우분투의 모든 사용자가 사용하는 환경설정이기 때문입니다.
다음과 같이 나오면 CUDA Toolkit이 정상적으로 설치 된 것입니다.
5. cuDNN v4 설치
https://developer.nvidia.com/rdp/cudnn-download
위 링크에서 cuDNN v4 Library for Linux를 다운로드 해줍니다.
이 과정에는 별도의 NVIDA 회원가입이 요구됩니다.
다운받은 후 압축을 풀어주게 되면 그 안에는 include폴더와 , lib64폴더로 나누어 집니다.
이를 기존 cuda가 설치되어 있는 폴더에 옮겨줘야합니다.
다음과 같이 명령어를 쳐서 관리자 권한의 directory창을 열어줍니다.
1 2 3 4 5 | // 설치가 안되있다면, 이도 설치해줍니다. sudo apt-get install nautilus // nautilus 실행 sudo nautilus | cs |
그럼 다음과 같이 관리자 권한의 directory창이 뜨는데, 이제 cuDNN폴더로 가서 include안에 있는 파일들을 cuda가 설치된 폴더의 include폴더에, 그리고 cuDNN폴더의 lib64안의 파일들을 cuda폴더의 lib64안에 붙여넣기 해줍니다.
만약에 리눅스 내장 명령어인 nvidia-cuda-toolkit을 설치하셨다면, /usr/local에 cuda-7.5라는 폴더가 없기때문에 다음과 같은 명령어를 이용하여 폴더를 만들어주고, cuDNN파일을 옮겨줍니다.
1 2 3 4 5 6 7 8 9 10 | // usr/local 디렉토리 진입 cd /usr/local // nvidia-cuda-toolkit 명령어로 cuda를 설치하시면, // 위에서 진행한 cuda-7.5라는 폴더가 없을테니 만들어 줍니다 sudo mkdir cuda-7.5 // cuDNN을 다운로드한 폴더로 옮겨갑니다. cd ~/Downloads/cuda // cuDNN안의 폴더들을 cuda-7.5폴더로 옮겨줍니다. sudo cp include /usr/local/cuda-7.5/include sudo cp lib64 /usr/local/cuda-7.5/lib64 | cs |
그리고 다음과 같이 폴더 권한 설정을 해줍니다.
1 2 | sudo chmod a+r /usr/local/cuda-7.5/include /usr/local/cuda-7.5/lib64 | cs |
6. TensorFlow 설치
다음 목록 중에 원하는 파이썬 버전의 텐서플로우 바이너리 URL을 찾아서 export 하고, 텐서플로우를 설치합니다.
* 최근 Tensorflow는 모두 CUDA8.0에 맞춰져 있습니다. 이전 버전의 CUDA를 사용하고 싶으시다면, 아래의 주소에서 설치하시면 안됩니다.
저의 경우, virtualenv, python3.4, CUDA 7.5, cuDNN 4.0으로 설치하기 위해서 다음 주소를 사용하였습니다.
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl
tensorflow version 뒤에 붙는 rc0 or rc1이 tensorflow CUDA version인것 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # Ubuntu/Linux 64-bit, CPU only, Python 2.7 (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 # Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below. (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl # Mac OS X, CPU only, Python 2.7: (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py2-none-any.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.4 (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.4 # Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below. (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.5 (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.5 # Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below. (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl # Mac OS X, CPU only, Python 3.4 or 3.5: (tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py3-none-any.whl | cs |
1 | export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl | cs |
1 | pip3 install --upgrade $TF_BINARY_URL | cs |
이제 Tensorflow 설치는 끝났습니다.
7. 설치 확인
다음 코드를 입력해서 Tensorflow가 정상적으로 설치되어있는지 확인합니다.
1 2 3 4 5 6 7 8 | python3 Python 3.5.1+ (default, Mar 30 2016, 22:46:26) [GCC 5.3.1 20160330] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> print(sess.run(hello)) | cs |
이것으로 TensorFlow 설치 포스팅을 마치겠습니다.
아직 포스팅이 완전히 갈무리 된 것은 아니어서, 추가적으로 계속 보완해나갈 생각입니다.
설치하시면서 잘 안되시는 부분들은 댓글 남겨주시면 제가 아는 한도 내에서 답변 드리겠습니다.
마지막으로 제가 설치하면서 참고했던 포스팅들을 남겨두도록 하겠습니다.
reference site :
http://blog.daum.net/bagjunggyu/66
http://luke77.tistory.com/44
http://www.popit.kr/tensorflow-install-ubuntu16/
http://m.blog.daum.net/goodgodgd/20
https://belepi93.github.io/ubuntu-1804-settings/ (CUDA 9.0 & cuDNN 7.0 at Ubuntu 18.04)
'IT > TensorFlow' 카테고리의 다른 글
[Tensorflow] tf.tile (0) | 2017.12.13 |
---|---|
[Tensorflow] tf.range (0) | 2017.12.13 |
[VggNet16 / 일지] VggNet Scratch from bottom with Tensorflow (0) | 2017.10.23 |