> ## Content Index
> Fetch the complete content index at: https://www.popit.kr/llms.txt
> Use this file to discover other available public pages before exploring further.

# Tensorflow 설치하기 (Ubuntu 16)
- URL: https://www.popit.kr/tensorflow-install-ubuntu16/
- Published: 2016-08-05T00:50:09.000Z
- Updated: 2016-08-12T03:38:15.000Z
- Author: Donam Kim
- Tags: #소프트웨어, Tensorflow, Ubuntu 16

먼저 이 글은 [텐서플로우 문서](https://www.tensorflow.org/versions/r0.9/get%5Fstarted/os%5Fsetup.html?ref=popit.kr#download-and-setup)에 있는 내용의 요약본이라고 생각하시면 정확합니다. 저는 우분투 14에서 텐서플로우 사용 중이였었는데 이상하게 시스템이 불안했습니다. 정확한 진단없이 드라이버 문제라고 생각하고 그래픽 드라이버 업데이트를 시도하다가 무한 부팅 대마왕을 만나게 되었고 그 결과 제 리눅스 데스크탑을 몇 개월간 고이 모셔두게 되었습니다. 하지만 페친님 도움으로 우분투 16에서 호환성이 더 좋다는 이야기를 듣고 우분투 16에 텐서플로우를 설치하게 되었습니다. 아래는 제가 텐서플로우를 설치한 방법입니다.

## 0\. 바이오스 업데이트

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

## 1\. Ubuntu 16 설치

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

![system_spec](https://www.popit.kr/content/images/wp/2016/07/system_spec-600x338.png)

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

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

![driver_update](https://www.popit.kr/content/images/wp/2016/07/driver_update-600x286.png)

## 3\. Cuda Toolkit 설치

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

```bash
$ sudo apt-get install nvidia-cuda-toolkit
```

![cuda-toolkit](https://www.popit.kr/content/images/wp/2016/07/cuda-toolkit-600x359.png)

## 4\. cuDNN v4 설치

[https://developer.nvidia.com/rdp/cudnn-download](https://developer.nvidia.com/rdp/cudnn-download?ref=popit.kr) 에서 cuDNN v4 Library for Linux를 다운로드 받습니다.

![cuDNN](https://www.popit.kr/content/images/wp/2016/07/cuDNN-600x239.png)

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

![cudnn1](https://www.popit.kr/content/images/wp/2016/07/cudnn1-600x353.png)

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

![cudnn2](https://www.popit.kr/content/images/wp/2016/07/cudnn2-600x353.png)

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

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

```bash
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
```

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

```bash
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

```

## 5\. Virtualenv 설치

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

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

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

![virtualevn_install](https://www.popit.kr/content/images/wp/2016/07/virtualevn_install-600x359.png)

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

![tensorflow_folder](https://www.popit.kr/content/images/wp/2016/07/tensorflow_folder-600x359.png)

virtualenv 를 활성화 합니다.  

```bash
$ source ~/tensorflow/bin/activate
```

![virtualevn_install](https://www.popit.kr/content/images/wp/2016/07/virtualevn_install-1-600x359.png)

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

![python_version](https://www.popit.kr/content/images/wp/2016/07/python_version-600x359.png)

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

```bash
# 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를 실행합니다.  

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

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

```bash
(tensorflow)$ pip3 install --upgrade $TF_BINARY_URL
```

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

## 6\. 테스트

```bash
(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](https://www.popit.kr/content/images/wp/2016/07/console-600x422.png)

## 6\. Tips

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

### Vritualenv

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

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

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

```bash
$ source ~/tensorflow/bin/activate
(tensorflow) $

```

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

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

```bash
(tensorflow) $ deactivate
$
```

### Jupyter notebook

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

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

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

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

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

```bash
(tensorflow)$ pip3 install jupyter
```

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

```bash
(tensorflow)$ jupyter notebook
```

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

![notebook_start](https://www.popit.kr/content/images/wp/2016/07/notebook_start-1-1024x583.png)

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

![notebook_run1](https://www.popit.kr/content/images/wp/2016/07/notebook_run1-1024x583.png)

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

![notebook_gpu](https://www.popit.kr/content/images/wp/2016/07/notebook_gpu-600x544.png)

### GPU 모드 체크

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

![console](https://www.popit.kr/content/images/wp/2016/07/console-600x422.png)

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

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