TensorFlow GPU 버전 우분투 16.04에 설치 하기


본 포스트에서는 Tensorflow를 Ubuntu 16.04에 설치하는 법을 다룬다.

사용한 PC는 엔비디아 GPU 1080을 사용 한다.
정확한 컴퓨터 모델은 보스몬스터 DX3 6708KSW 이다.

TensorFlow 1.9에 맞춰서 CUDA 9.0 cuDNN 7.1로 업그레이드 설치 했다.

1. CUDA 라이브러리 설치

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

linux -> x86_64 -> Ubuntu -> 16.04 -> deb(network)

파일 다운로드후 아래의 명령어 수행
2018.07.31일 기준 CUDA 9.0까지 지원하지만 TF 1.9에서는 9.0을 설치하라고하니 9.0으로 다운 받는다.
9.2을 설치해보니 library loading이 잘 되지 않았다.

Network
패치를 따로 안해줘도 된다.
정확히 아래처럼 cuda-9-0으로 줘야 제대로 설치된다. 그냥 cuda하면 9.2최신 버전으로 설치 될 수도 있다.

sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

sudo apt-get update

sudo apt-get install cuda-9-0

local version
파일을 다운받아서 하는 방법이다.
patch 파일도 cuBLAS관련해서 세개나 있어서 각각 업데이트 해줘야 한다.

#본 파일
cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
#패치 파일
cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
cuda-repo-ubuntu1604-9-0-local-cublas-performance-update_1.0-1_amd64.deb

본설치

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

패치 적용

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade cuda-9-0

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade cuda-9-0

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade cuda-9-0

2. cuDNN 및 환경변수 설정

https://developer.nvidia.com/cudnn

cuDNN v7.1.4 (May 16, 2018) for CUDA 8.0으로 다운 받는다.

  • 6.0 Library for Linux (tar.gz) 버전

아래명령어를 실행한다.

tar xvfz cudnn-9.0-linux-x64-v7.1.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/bin:$PATH
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda

버전확인

$ nvcc --version

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

pip로 바로 설치

python2의 경우

# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev

python3.5의 경우

# 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.5 -c 'import tensorflow as tf; print(tf.__version__)'
1.9.0

그래픽 카드별 성능차이 비교는 이전포스트를 참조한다.

CUDA 삭제

잘못 설치 했을 때 삭제 방법이다.

--auto-remove 옵션을 통해서 의존성 파일들을 모두 제거 한다.

# 간단한 방법
sudo apt-get remove --auto-remove nvidia-cuda-toolkit

# 좀 더 깨끗하게 
sudo apt-get --purge remove 'cuda*'
sudo apt-get autoremove --purge 'cuda*'

sudo rm -rf /usr/local/cuda-[your version]
sudo rm -rf /usr/local/cuda

  1. 2017.02.15 00:07

    비밀댓글입니다

    • JAYNUX 2017.02.15 00:58 신고

      부족한 글인데 도움이 되셨다니 다행입니다. ^^
      네 원하시는대로 글을 가져가셔도 됩니다.
      출처를 남겨주시면 저는 감사할 뿐입니다.

  2. HJMOON 2017.04.26 20:16 신고

    포스팅 감사합니다-
    python 패키지는 아나콘다로 설치하신건가요?

    • JAYNUX 2017.04.27 10:19 신고

      Windows에서 작업 할 때는 Anaconda를 사용 했지만 uBuntu에서는 그냥 기본적으로 Python이 있어서 pip를 이용해서 필요한것만 제가 설치 했습니다.

      python3로 하신다면, pip3 install 명령어로 필요한 package만 각각 설치하실 수 있습니다.

      저는 보통 충돌을 막기 위해서 python virtual env도 같이 사용해서 package를 독립적으로 설치하고 있습니다.

      ubuntu도 anaconda를 설치 하실 수 있으니 그렇게 하셔도 될것 같습니다. conda environment도 찾아보시면 자료가 많이 나올 것 같습니다.

    • HJMOON 2017.04.27 11:45 신고

      아 그러셨군요. 방법이 좀 달라보여서 여쭸습니다.

      ubuntu를 처음 써봤는데 17.04버전을 설치했더니 cuda 설치에서 막히네요. 다시 16.04로 설치해야 할 것 같습니다.

      도움 말씀 찾아보겠습니다. 감사합니다 ^^

  3. jay 2017.04.27 12:02 신고

    저 쿠다 path설정은 안하신 것 같은데요

  4. lazyer 2017.06.25 08:39 신고

    /usr/local 경로에 cuda 디렉터리는 어떻게생성하는건가요?

    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*

    에러가발생합니다

  5. SR 2018.09.02 18:29 신고

    안녕하세요 글 잘 읽었습니다 좋은 정보 감사합니다. 2가지 정도 궁금한게 있는데요.
    UBUNTU 를 이용해서 TEXT SERVER 를 설치해서 PUTTY를 이용해 작업을 하려고 합니다.
    그때 여기 UBUNTU를 보면 Download Ubuntu Desktop / Download Ubuntu Server 부분이 있는데 어떤걸 설치해야하는지가 첫번째 질문입니다.
    2번째 질문은 R 이나 Tensorflow gpu 버전을 설치하려고 하는데 , 현재 최근에 출시된 18.04.1 LTS 를 설치해서 해도 Cuda 나 cuDNN 을 설치하는데 문제가 없는 지 궁금합니다..

    • JAYNUX 2018.09.03 13:00 신고

      저는 desktop 버전을 사용해서 설치 했습니다. server 버전은 GUI가 없는것으로 알고 있습니다. 여러 사용자가 사용한다면 resource 측면에서 좋다고들 하던데 저는 1~3명이서 사용하는 것이라 그냥 desktop으로 설치 했습니다.
      가끔 xrdp 설치해서 원격 데스크탑으로도 windows에서 ubuntu로 GUI 상태로 접속하기 때문입니다 (설정을 위해서).

      putty로 접속해서 vim으로 급할 때나 간단한것은 작업하기도 하나, 주로 pycharm으로 하고있습니다.
      아래는 제가 작성한 pycharm으로 원격 빌드 하는법입니다.
      http://goodtogreate.tistory.com/entry/Pycharm%EC%9C%BC%EB%A1%9C-TensorFlow-%EC%9B%90%EA%B2%A9-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0

      18.04도 LTS로 4년간 지원되는 안정화 버전이니 잘 지원하는것으로 알고 있습니다. 지금 구축하시는것이면 18.04가 좋다고 저도 생각합니다.

+ Recent posts