TensorFlow GPU 버전 우분투 16.04에 설치 하기
본 포스트에서는 Tensorflow
를 Ubuntu 16.04에 설치하는 법을 다룬다.
사용한 PC는 엔비디아 GPU 1080을 사용 한다.
정확한 컴퓨터 모델은 보스몬스터 DX3 6708KSW
이다.
1. CUDA 라이브러리 설치
https://developer.nvidia.com/cuda-downloads
linux -> x86_64 -> Ubuntu -> 16.04 -> deb(network)
파일 다운로드후 아래의 명령어 수행
2017.11.26일 기준 CUDA 9.0까지 지원하지만 TF 1.4에서는 8.0을 설치하라고하니 8.0으로 다운 받는다.
9.0을 설치해보니 library loading이 잘 되지 않았다.
cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
2. cuDNN 및 환경변수 설정
https://developer.nvidia.com/cudnn
cuDNN v6.0 (April 27, 2017) for CUDA 8.0으로 다운 받는다.
- 6.0 Library for Linux (tar.gz) 버전
아래명령어를 실행한다.
tar xvzf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
추가적인 dependencies도 설치한다.
$ sudo apt-get install libcupti-dev
환경변수 설정
LD_LIBRARY_PATH
와 CUDA_HOME
을 설정한다.
vi ~/.bashrc
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}}
export CUDA_HOME=/usr/local/cuda
선택사항
cuDNN 설치확인
cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)
을 다운받아서 샘플 코드를 실행한다.
sudo dpkg -i libcudnn7-doc_<해당버전>_amd64.deb
# 실행 가능한 영역으로 복사
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
rm -rf *o
rm -rf mnistCUDNN
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/usr/local/cuda/bin/nvcc -ccbin g++ -I/usr/local/cuda/include -IFreeImage/include -m64 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_53,code=compute_53 -o fp16_dev.o -c fp16_dev.cu
g++ -I/usr/local/cuda/include -IFreeImage/include -o fp16_emu.o -c fp16_emu.cpp
g++ -I/usr/local/cuda/include -IFreeImage/include -o mnistCUDNN.o -c mnistCUDNN.cpp
/usr/local/cuda/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_53,code=compute_53 -o mnistCUDNN fp16_dev.o fp16_emu.o mnistCUDNN.o -LFreeImage/lib/linux/x86_64 -LFreeImage/lib/linux -lcudart -lcublas -lcudnn -lfreeimage -lstdc++ -lm
아래를 실행 한다. Test passwed!
가 나오면 CUDA와 cuDNN이 정상적으로 설치가 된 것이다.
./mnistCUDNN
cudnnGetVersion() : 6021 , CUDNN_VERSION from cudnn.h : 6021 (6.0.21)
Host compiler version : GCC 5.4.0
...
...
...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006
Result of classification: 1 3 5
Test passed!
pip로 바로 설치
python2의 경우
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
python3의 경우
# Ubuntu/Linux 64-bit
$ sudo apt-get install python3-pip python3-dev
Tensorflow-GPU 설치
$ pip3 install tensorflow-gpu
업그레이드 방법 (추후에 새로운 버전이 나왔 을때)
타겟 URL은 홈페이지에서 참조 한다.
https://www.tensorflow.org/get_started/os_setup
sudo pip3 install --upgrade $TF_BINARY_URL
실행 결과
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
>>> hello = tf.constant("Hello, tensorFlow!")
>>> sess = tf.Session()
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:937] 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:885] Found device 0 with properties:
name: GeForce GTX 1080
major: 6 minor: 1 memoryClockRate (GHz) 1.797
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 7.53GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
>>> print(sess.run(hello))
b'Hello, tensorFlow!'
설치 위치
설치 경로 찾는 command
$ python3 -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'
/home/jemin/.local/lib/python3.5/site-packages/tensorflow
최종 버전 확인
jaynux@jaynux-desktop:~/tf_examples$ python3 -c 'import tensorflow as tf; print(tf.__version__)'
1.4.0
그래픽 카드별 성능차이 비교는 이전포스트를 참조한다.
CUDA 삭제
잘못 설치 했을 때 삭제 방법이다.
--auto-remove
옵션을 통해서 의존성 파일들을 모두 제거 한다.
sudo apt-get remove --auto-remove nvidia-cuda-toolkit
'Data Science > TensorFlow and Scikit-Learn' 카테고리의 다른 글
Batch 크기의 결정 방법 (0) | 2017.12.07 |
---|---|
Neural Network 적용 전에 Input data를 Normalize 해야 하는 이유 (3) | 2017.12.07 |
TensorFlow GPU 버전 우분투 16.04에 설치 하기 (7) | 2017.11.26 |
rpy2와 Pandas를 활용한 R object 변환 (0) | 2017.08.08 |
Confusion Matrix in python (0) | 2017.08.03 |
Tensorflow Object Detection API (SSD, Faster-R-CNN) (0) | 2017.07.16 |
-
-
-
Windows에서 작업 할 때는 Anaconda를 사용 했지만 uBuntu에서는 그냥 기본적으로 Python이 있어서 pip를 이용해서 필요한것만 제가 설치 했습니다.
python3로 하신다면, pip3 install 명령어로 필요한 package만 각각 설치하실 수 있습니다.
저는 보통 충돌을 막기 위해서 python virtual env도 같이 사용해서 package를 독립적으로 설치하고 있습니다.
ubuntu도 anaconda를 설치 하실 수 있으니 그렇게 하셔도 될것 같습니다. conda environment도 찾아보시면 자료가 많이 나올 것 같습니다.
-