[Tensorflow] Tensorflow GPU install on ubuntu 16.04

머신러닝을 쓰는 몇 개의 간단한 프로젝트를 맥북으로 몇 달간 돌린 적이 있다. 밤마다 학습을 시켜놓고 다음날 아침에 결과를 확인하는 날들이 많이지면서 언젠가 GPU를 써서 머신러닝을 해야지 생각했다. 그리고 두달 쯤 전 꽤 괜찮은 GPU가 달린 데스크탑을 구매했지만 숨 돌릴 틈도 없어 방치만 해 두다가 이틀 전 우분투를 멀티 부팅으로 깔고 개발 환경을 설정하기 시작했다.
그리고 오류를 많이 ~ 많이 겪었다.



Ubuntu / Linux

첫 째로 cuda-9-0 버전을 홈페이지에서 까는 방법은 비 추천한다. 9.0 버전을 깔면서 계속 에러를 해결해야 했는데, 8.0 버전을 까는 게 시간과 정신을 아끼는 법이다. 그리고
0 update-apt-get 시작하기 전에 항상 업데이터 해주자.
sudo apt-get update  
1 . python dependencies 설치
 sudo apt-get install openjdk-8-jdk git python-dev python3-dev python-numpy python3-numpy build-essential python-pip python3-pip python-virtualenv swig python-wheel libcurl3-dev   
2 . nvidia 드라이버 설치
 curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
dpkg -i ./cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
apt-get update
apt-get install cuda -y 
3 . nvidia-smi gpu 정보 확인하기
nvidia-smi
4 . cuda-8-0 버전으로 꼭 깔아줘야한다.
get https://s3.amazonaws.com/personal-waf/cuda_8.0.61_375.26_linux.run   
sudo sh cuda_8.0.61_375.26_linux.run   # press and hold s to skip agreement   

#Do you accept the previously read EULA?
 accept

#Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
************************* VERY KEY ****************************
 ******************** DON"T SAY Y ******************************
 n
#Install the CUDA 8.0 Toolkit?
 y

#Enter Toolkit Location
#press enter


#Do you want to install a symbolic link at /usr/local/cuda?
 y

#Install the CUDA 8.0 Samples?
 y

#Enter CUDA Samples Location
 press enter    

#now this prints: 
#Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
#Installing the CUDA Samples in /home/liping …
#Copying samples to /home/liping/NVIDIA_CUDA-8.0_Samples now…
#Finished copying samples.
5 . Install cudnn
여기서 중요한 것!!
https://developer.nvidia.com/rdp/cudnn-download
홈페이지에 접속해
반드시 ! 최신버전이 아닌 각각 CuDnn: 6.0v CUDA 8.0으로 깔아야한다.
아래 참고한 깃에서는 5.1버전으로 설치하라고 하지만, 꼭 6.0버전으로 깔아야 오류 없이 깔끔하게 설치할 수 있다.
Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0
cuDNN v6.0 Library for Linux
6 . zsh, bash shell 사용자 모두 환경 변수를 맨 끝에 추가해준다.
자신이 무슨 shell을 사용하는지 모른다면
which $SHELL
>/usr/bin/zsh
zsh 사용자들은
vi ~/.zshrc 
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
bash 사용자들은
vi ~/.bashrc
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
7 . 실행
source ~/.zshrc
or
source ~/.bashrc 


8 . 가상환경 만들기 
여기에서는 python 3.4.3 버전을 기준으로 설치했지만 3.4 버전이상은 상관 없습니다.
pyenv virtualenv 3.4.3 my-tensorflow
cd 프로젝트_폴더/
pyenv local my-tensorflow
pip3 install tensorflow-gpu

9. gpu 환경 확인하기
1
2
3
4
5
6
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
2017-10-14 01:45:22.501164: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0-> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
>>> 
cs

gpu가 잘 쓰고 있다고 나온다.

만약 이런 메세지가 나온다면, 사실 무시해도 좋다. pip로 tensorflow를 설치하는 것보다 git clone으로 다운받았을 때 속도 향상이 있을 수 있다는 로그일 뿐이다.
1
2
3
4
5
6
7
8
2017-10-14 01:44:26.646075: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-14 01:44:26.646123: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-14 01:44:26.646138: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-10-14 01:44:26.646151: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-14 01:44:26.646163: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-10-14 01:44:26.749379: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
 I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties: 
cs
만약 로그 메세지를 보기 싫다면
1
2
3
4
5
6
# zsh 사용자라면
$ echo 'export TF_CPP_MIN_LOG_LEVEL=2' >> ~/.zshrc
# bash shell 사용자라면
$ echo 'export TF_CPP_MIN_LOG_LEVEL=2' >> ~/.bashrc
cs
혹은 python 창에서 다음을 입력하면 된다.
1
2
3
4
5
6
7
8
>>> import os
>>> os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
2017-10-14 01:45:22.501164: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0-> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
>>> 
cs
자 잘된다~ .  export ~를 사용했을 때 gpu 로그도 나오지 않지만 정상이다.!

참고 자료 : https://github.com/williamFalcon/tensorflow-gpu-install-ubuntu-16.04/blob/master/README.md?utf8=%E2%9C%93

https://github.com/tensorflow/tensorflow/issues/7778

댓글

이 블로그의 인기 게시물

[Linux, Unix] export, echo 명령어 알아보기

IEEE 754 부동 소수점 반올림과 근사