Tensorflow 설치하기 (Ubuntu 16)

먼저 이 글은 텐서플로우 문서에 있는 내용의 요약본이라고 생각하시면 정확합니다. 저는 우분투 14에서 텐서플로우 사용 중이였었는데 이상하게 시스템이 불안했습니다.  정확한 진단없이 드라이버 문제라고 생각하고 그래픽 드라이버 업데이트를 시도하다가 무한 부팅 대마왕을 만나게 되었고 그 결과 제 리눅스 데스크탑을 몇 개월간 고이 모셔두게 되었습니다. 하지만 페친님 도움으로 우분투 16에서 호환성이 더 좋다는 이야기를 듣고 우분투 16에 텐서플로우를 설치하게 되었습니다. 아래는 제가 텐서플로우를 설치한 방법입니다.

0. 바이오스 업데이트

제 시스템에 있던 가장 큰 문제는 바이오스가 그래픽 카드를 제대로 지원하지 못해서 생긴 사고(?) 입니다. 윈도우에서는 잘 돌아갔지만 이상하게 리눅스에서 문제를 일으킨다면 최신 바이오스가 있는지 체크해 보시길 바랍니다. 제 메인보드는 Z77X 칩셋 입니다.

1. Ubuntu 16 설치

리눅스도 윈도우 만큼이나 설치가 쉽습니다. 자세한 리눅스 설치법은 따로 설명하지 않습니다. 다만 제가 사용한 버전은 아래 그림과 같습니다 (제 시스템 스펙이 다 나오는군요. 업글하고 시포요ㅠㅠ)

system_spec

2. 그래픽카드 드라이버 업데이트

바닐라 상태(아무것도 설치되지 않은 상태)의 우분투 16에 System Settings > Software & Updates > Addition Drivers 탭으로 이동하신 다음 NVIDIA binary 드라이버를 선택해주시면 자동으로 업데이트 해줍니다. 업데이트가 완료되면 재부팅 한 번  해주세요.

driver_update

3. Cuda Toolkit 설치

저는 apt-get을 사용해서 cuda-toolkit을 설치 했습니다.

1
<code class="lang-bash no-auto-prettify">$ sudo apt-get install nvidia-cuda-toolkit</code>

cuda-toolkit

4. cuDNN v4 설치

https://developer.nvidia.com/rdp/cudnn-download 에서 cuDNN v4 Library for Linux를 다운로드 받습니다.

cuDNN

다운로드 받은 파일을 압축해제하면 cuda폴더가 나옵니다. cuda 폴더로 이동합니다.

cudnn1

cuda폴더에는 include폴더와 lib64폴더가 있는 것을 볼 수 있습니다.

cudnn2

cuda 폴더를 /usr/local 아래로 복사합니다.  e.g) /usr/local/cuda

복사가 끝났으면 아랫줄을 실행하여 권한 설정을 해줍니다.

1
<code class="lang-bash no-auto-prettify">$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*</code>

GPU 지원을 사용하기 위해서 .bashrc 또는 .bash_profile 에 다음 라인을 추가합니다.

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"

export CUDA_HOME=/usr/local/cuda

5. Virtualenv 설치

저는 파이썬 3를 사용합니다만 파이썬2를 선호하시는 분들은 아래 명령어에서 python3를 python으로 바꿔 주시면 됩니다.

아래 명령어를 실행합니다.

$ sudo apt-get install python3-pip python3-dev python-virtualenv

virtualevn_install

위 명령어가 성공적으로 실행됐으면 tensorflow 폴더가 생성됩니다.

tensorflow_folder

virtualenv 를 활성화 합니다.

$ source ~/tensorflow/bin/activate

virtualevn_install

사용중인 파이썬 버전을 확인한후

python_version

아래 목록에서 해당 파이썬 버전의 텐셔플로우 바이너리 URL을 찾고

# 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

export를 실행합니다.

(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl

아래 명령어로 텐셔플로우를 설치합니다.

(tensorflow)$ pip3 install --upgrade $TF_BINARY_URL

이제 설치는 다 끝났습니다.

6. 테스트

(tensorflow) shootingstar@dev-linux:~$ python

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))

실행 하시면 아래와 비슷한 결과를 보실 수 있습니다.

console

6. Tips

아직 리눅스, 파이썬, 텐서플로우에 익숙하시지 않은 분들을 위한 팁입니다. 댓글에 질문을 남겨주시면 필요한 내용이다 싶은 내용들은 여기 팁란에 추가하도록 하겠습니다.

Vritualenv

virtualenv를 아주 간단하게 설명하면 고립된 환경입니다. 혹시나 모를 충돌을 방지해서 실험 환경을 독립적으로 가둬두는 겁니다.

따라서 시스템 재부팅, 콘솔 재시작등 다시 virtualenv를 활성화 시켜야 기존에 설치하신 텐셔플로우를 제대로 사용하실 수 있습니다.

활성화 시키는 방법은 아래와 같습니다.

1
2
3
<code class="lang-bash no-auto-prettify">$ source ~/tensorflow/bin/activate
(tensorflow) $
</code>

활성화가 된경우 (tensorflow)가 붙어 있는 것을 보실수 있습니다.

비활성화 하시는 방법은 아래와 같습니다.

1
2
<code class="lang-bash no-auto-prettify">(tensorflow) $ deactivate
$</code>

Jupyter notebook

개발자에게 IntelliJ, Visual Studio 와 같은 IDE가 있다면 데이터 사이언티스트에게는 Notebook이 있습니다.

간단하게 IDE처럼 실행하고 결과를 바로 볼 수 있게 도와주는 툴이라고 생각하시면 됩니다.

제 생각에는 아주 간단한 테스트를 제외하고 아무도 파이썬 콘솔에서 텐서플로우 코드를 작성하지 않을거라 생각합니다.

저는 대부분의 경우 Jupyter notebook을 사용하여 텐서플로우를 학습하고 있습니다.

설치 방법은 아래와 같습니다.

(tensorflow)$ pip3 install jupyter

실행 방법은 아래와 같습니다.

(tensorflow)$ jupyter notebook

실행하시면  아래와 같이 웹브라우져에서 노트북이 열립니다. 오른쪽 상단의 new 버튼을 클릭하고 notebook섹션에서 python[root]를 선택해서 노트북을 하나 생성합니다.

notebook_start

그리고 파이선 콘솔과 같이 사용하시면 됩니다.

notebook_run1

노트북을 실행하실 때 열어둔 콘솔에서 로그를 확인 하실 수 있습니다

notebook_gpu

GPU 모드 체크

지금 텐서플로우가 동작은 하는데 cpu에서 동작하는 것인지 gpu에서 동작하는 것인지 확인하시고 싶으실 겁니다.

console

저는 gpu모드를 사용중이기 때문에 위 그림과 같이 아래서 4번째 줄에 마지막에 (/gpu:0)이 로그에서 보여지고 있습니다. 따라서  gpu에서 잘 동작중 임을 알 수 있습니다.

저 gpu 대신에 cpu가 나온다면 4. cuDNN v4 설치 항목 가장 마지막 부분을 확인하시고 빠져 있다면 추가하시기 바랍니다.


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.