2017년 5월 22일 월요일

텐서 플로우 및 케라스 최신버전 설치 방법 (Windows 10)과 개념

이 글은 텐서플로우(Tensorflow) 1.1, 케라스(keras)를 윈도우 10 환경에서 설치하는 순서를 정리한다. 기타, 쥬피터 노트북에 사용되는 NumPy 같은 파이썬 라이브러리와 케라스 설치도 함께 다루겠다.

참고로, 현재(2018.2.8) 시점에서는 1.5버전이 릴리즈되어 있다. 1.5버전 설치는 아래 순서는 동일하다. 다만, CUDA 설치 버전을 9.0으로 (9.1 최신버전이 아닌) 설치해야, 텐서플로우 1.5버전과 호환되는 CUDA라이브러리가 설치되는 것만 조심하면 된다.

텐서플로우 1.0 버전은 다음과 같은 성능 개선이 있었다.
  • 계산 속도 개선
  • tf.layers, tf.metrics, tf.losses 모듈 추가
  • 고급 신경망 네트워크 라이브러리인 Keras 라이브러리 호환
  • Python API를 NumPy와 유사하게 변경
  • 텐서플로우 도메인 컴파일러 XLS 개선
  • 텐서플로우 디버거(tfdbg)
  • 객체 인식 용 Android 데모 추가
  • Pyton 3 도커 이미지 추가
참고로, 우분투+NVIDIA+CUDA+텐서플로우 조합에 실패하였다면(우분투 16.04는 NVIDIA 드라이버 충돌 문제가 있다.ㅎ 테크트리 잘못타면 무한 로긴, 무한 blink screen 반복. NVIDIA의 OpenGL 라이브러리와 우분투 충돌문제 등 다양한 설이 있음), 윈도우 10 환경의 텐서플로우는 괜찬은 대안이 될 수 있다. 
참고로, 무한 로긴 및 반복 현상이 발생한다면, 로긴 화면에서 콘솔모드로 전환(ctrl+alt+F1 키)한 후 다음처럼 NVIDIA 그래픽 드라이버를 복구할 수 있다.

sudo apt-get purge nvidia-*
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-375


1. 개념
텐서플로우는 구글에서 발표한 오픈소스 기반 머신러닝 플랫폼이다. 텐서플로는 데이터 플로 그래프(data flow graph)를 사용해 수치연산을 한다. 그래프 노드는 수학 연산, 그래프 에지(edge)는 다차원 배열(tensor)를 정의한다. 그래프는 데이터와 알고리즘이 포함되어 있다. 그래프를 이용하면, 링크 간의 종속성을 이용해, GPU를 이용한 병렬처리를 할 수 있다. 머신러닝 딥러닝 내용은 다음 링크를 참고한다.
텐서플로우를 이용해 개발된 알고리즘은 텐서보드(tensorboard)를 이용해, 실행 상태를 가시화할 수 있다. 텐서플로 서빙(tensorflow serving)을 이용하면, 텐서플로에서 훈련된 모델을 이용해, 서비스를 운영할 수 있다.

우분투 환경에서는 텐서플로우 설치는 PIP를 이용해 다음처럼 상대적으로 간단하다.
$ sudo apt-get install python-pip python-dev python-virtualenv
$ virtualenv --system-site-packages ~/tensorflow
$ source ~/tensorflow/bin/activate
(tensorflow)$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/llinux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl

윈도우 10환경에서는 다음 3가지 방법으로 텐서플로우를 설치할 수 있다. 
1. Docker for Windows 기반 텐서플로우 이미지 설치
2. Anaconda(아나콘다) 기반 텐서플로우 설치
3. 가상머신(VM, Hyper-V)에서 텐서플로우 설치

이 중에 상대적으로 설치가 간편한 아나콘다 기반 텐서플로우 설치를 한다. 컴퓨터는 NVIDIA GPU가 있다고 가정한다. 설치 방법은 다음과 같다. 

2. CUDA 8.0 설치
CUDA(Compute Unified Device Architecture)는 NVIDIA에서 개발한 GPU기반 병렬 계산 개발 플랫폼이다. 
아래 링크에서 CUDA 8.0 local 버전을 다운로드 받아 디폴트값으로 설치한다.

3. CuDNN 설치
CuDNN(CUDA® Deep Neural Network library)은 CUDA기반 딥러닝 라이브러리이다.
아래 링크에서 앞의 CUDA 8.0과 호환되는 CuDNN 버전을 다운로드 받고, 압축파일을 CUDA 폴더 아래에 덮어 써 준다. 참고로, 다운로드 받기 전에 회원가입 절차가 있다.

4. Python 3.5 설치
아나콘다 설치전에 Python 3.5를 설치해야 한다. 아래 링크에서 Windows x86-64 executable installer 설치파일을 다운로드해 설치한다.

5. 아나콘다 4.2 설치
아나콘다(https://www.continuum.io)는 Python언어 기반 수치 및 통계해석 패키지이다.
아래 링크에서 아나콘다 Anaconda3-4.2.0-Windows-x86_64.exe 파일을 다운로드해 설치한다.

6. 텐서플로우 설치
텐서플로우(https://www.tensorflow.org)는 구글에서 공개한 머신러닝 플랫폼이다.
텐서플로우를 설치하기 위해, 아나콘다 콘솔 메뉴(Anaconda Prompt)를 실행한다.
콘솔에서 아래 명령어를 차례대로 실행한다.
1) pip 업그레이드
python -m pip install --upgrade pip

2) Conda 환경 생성
conda create -n tensorflow python=3.5

3) TensorFlow 설치
activate tensorflow
pip install tensorflow-gpu

설치가 제대로 되면 다음 명령어로 설치된 버전을 확인할 수 있다.
pip freeze

IPython은 대화형 파이썬 노트북이다. 파이썬 입력 및 실행 결과를 대화형으로 손쉽게 확인할 수 있다. IPython 을 실행해 다음과 같이 'import tensorflow as tf' 를 입력한다. 아래와 같이 에러가 없다면 성공이다.

7. 텐서플로우 테스트
텐서플로우가 제대로 설치되었는 지 확인하기 위해, 다음과 같이 실행해 본다. 에러가 없다면, 정상적으로 설치된 것이다. 

python
>>> import tensorflow as tf
>>> print('TensorFlow version: {0}'.format(tf.__version__))
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

다음과 같이 출력되면 성공이다. 

8. 쥬피터 노트북 설치
쥬피터 노트북을 설치해 본다. 쥬피터 노트북은 IPython을 구동해, 입력된 파이썬 명령의 결과를 브라우저에 전달해 준다. 명령을 입력하고 실행결과를 확인하기 좋다.

아나콘다 콘솔에서 'conda install jupyter notebook' 명령을 입력해 설치한다. 

설치한 후 다음과 같이 jupyter notebook password 명령으로 쥬피터 노트북 암호를 설정한다. 

다음과 같이 jupyter notebook 을 실행한다. 

브라우저가 자동으로 실행되며, localhost:8888로 접속해, 다음과 같이 쥬피터 노트북을 구동한다. 

New 메뉴의 Python 메뉴를 클릭해 새로운 노트북을 생성한다. 그리고, import tensorflow as tf 명령을 입력한 후 Shift+Enter 를 입력해 실행한다. 에러가 없으면 성공한 것이다.

9. 파이썬 기타 라이브러리
개발을 위해 필수적인 파이썬 라이브러리를 미리 설치해 놓는 것이 좋다. 아나콘다 콘솔에서 차트, 표, 이미지 처리, 그래픽 가시화와 관련된 아래 패키지를 설치한다.
pip install numpy matplotlib pandas pillow graphviz

다만, scipy 는 윈도우10에서 pip install scipy 시 문제가 있을 수 있다. 이 경우, scipy 설치를 위해서 직접 다운로드하는 방법이 있다. 자세한 내용은 여기(How to get SciPy working in Windows, 2017.2)를 참고한다.
설치 후, 테스트를 위해, 쥬피터 노트북에서 New-Python 메뉴로 노트북을 만들고, 다음 코드를 실행해 본다.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

실행 결과가 다음과 같다면 성공한 것이다.

10. 케라스
만약, 시간이 좀 더 있다면, 아나콘다 명령창에서 tensorflow와 함께 쓰이는 keras(케라스)도 아래와 같이 설치하여, 공부해 보자.

1. CPU 버전 설치
conda install -c anaconda keras

2. GPU 버전 설치
conda install -c anaconda keras-gpu

케라스 소스와 예제는 다음 링크를 참고한다.
케라스를 설치한 후, 다음과 같이 LSTM 예제를 실행시켜 본다. 이상이 없으면 제대로 설치된 것이다. 

from keras.models import Sequential from keras.layers import LSTM, Dense import numpy as np data_dim = 16 timesteps = 8 num_classes = 10 # expected input data shape: (batch_size, timesteps, data_dim) model = Sequential() model.add(LSTM(32, return_sequences=True, input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32 model.add(LSTM(32, return_sequences=True)) # returns a sequence of vectors of dimension 32 model.add(LSTM(32)) # return a single vector of dimension 32 model.add(Dense(10, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) # Generate dummy training data x_train = np.random.random((1000, timesteps, data_dim)) y_train = np.random.random((1000, num_classes)) # Generate dummy validation data x_val = np.random.random((100, timesteps, data_dim)) y_val = np.random.random((100, num_classes)) model.fit(x_train, y_train, batch_size=64, epochs=5, validation_data=(x_val, y_val))

케라스 실행 결과
11.PyTorch 설치
PyTorch(파이토치) 설치 방법은 다음과 같이 매우 간단하다.

conda install pytorch torchvision -c pytorch


부록: 텐서플로우 함수 요약
수학 연산. add, sub, mul, div, abs, mod, neg
배열. concat, slice, split, constant, rank, shape, shuffle
행렬. diag, transpose, matmul, matrix_determinant, matrix_inverse
신경망. softmax, sigmoid, ReLU, Convlution2D, MaxPool
세션. save, restore
큐잉/동기화. enqueue, dequeue, MutexAcquire, MutexRelease
흐름제어. merge, switch, enter, leave, NextIteration

레퍼런스
이 글은 아래 사이트를 참고하였다. 
2. Jaejun Yoo, TensorFlow 설치
8. 윈도우(Windows) 환경에서 Docker를 이용해서 텐서플로우(TensorFlow) 설치하기
9. 윈도우 GPU tensorflow 설치 및 그래픽카드별 성능 비교
10. 병렬처리 – First Contact with TensorFlow
11. Deep Learning을 위해 어떤 GPU를 써야 할까?
12. 윈도우즈에 아나콘다, 텐서플로우 설치하기
13. GPU vs CPU benchmark (Adobe)
14. DIY GPU 서버 : 딥 러닝용 PC 직접 만들기
15. Ubuntu 17.04 Upgrade 및 WSL 잡담
16. 우분투 16.04에서 CUDA 성공적으로 설치하기(무한로긴 현상 발생하는 경우 있음)
17. Ubuntu 16.04 -17.04 NVIDIA drivers install is EASY
18. VI 에디터 사용방법
19. NVIDIA 그래픽 카드 설치 방법(상세)
20. CUDA Toolkit 9.0 Download
21. Tensorflow getting started 1.5
22. cuDNN Download
23. Installing Tensorflow on Ubuntu
24. How to benchmark your GPU on Linux


P.S. How to install tensorflow and keras on Ubuntu 16.04
GPU = GTX 1070 (note book)

1. install NVIDIA driver and CUDA 9.0
refer to No.16

2. if there is login loop, restore NVIDIA driver
sudo apt-get purge nvidia-*
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384

3. install cuDNN for CUDA 9.0
4. install pip and tensorflow
5. install pyton library
6. install keras









댓글 7개:

  1. 상새한 설치가이드 감사합니다! 덕분에 무사히 쉽게 텐서플로우를 설치할 수 있었습니다ㅎ
    전 가이드를 따라가며 최신 버전으로만 다운로드를 받았는데요. 그럴 경우, cuDNN의 DLL 파일이 *64_6.dll로 받아집니다. 이럴 경우 호환성 문제때문에 import tensorflow에서 에러가 발생하는데, 이를 *64_5.dll로 rename 해주시면 문제가 새결됩니다.

    답글삭제
    답글
    1. ㅎ 넵. 잘되었네요. 감사합니다~

      삭제
  2. "DLL load failed: 지정된 모듈을 찾을 수 없습니다."
    이런 오류가 뜨는데 왜이럴까요? ㅜㅜ
    하란대로 다 했는데ㅜㅜ

    답글삭제
    답글
    1. 윈도우버전에서 DLL 에러는 대부분 서로 버전이 안맞아 의존성 문제가 생긴겁니다. 시도해 보시다가 안되시면, docker나 virtualbox, hyper-v 와 같은 VM 에서 텐서플로우가 잘 설치된 이미지를 다운받아 적용해 보십시요.

      삭제
  3. 작성자가 댓글을 삭제했습니다.

    답글삭제
  4. 주피터는 필수적으로 깔아야 되는건가요?

    텐서플로우 한번도 써본적 없는 초보자인데요
    어떤 블로그에서 텐서보드 까는법 찾아봤더니

    1. www.python.org 에서 파이썬 깔고
    2. anaconda 설치하고
    3. anaconda prompt에서

    python -m pip install --upgrade pip 치고
    conda create -n tensorflow python=3.5 치고
    proceed([y]/n)? 뜨면 y 누르고
    activate tensorflow 치면

    텐서플로우 설치가 되고

    4.
    마지막으로
    https://www.jetbrains.com/pycharm/
    여기서 파이참 깔라고 되있는데요

    taewook kang님 블로그에서는 주피터라던가 쿠다라던가 설치하라고 되있는데 필수적인건가요?

    답글삭제
    답글
    1. 안녕하세요.
      주피터는 설치하셔야, 계산 과정 등을 GUI로 살펴보기 쉽습니다. 콘솔모드에서는 텍스트 기반이라 그래프, 차트, 이미지 등 확인이 쉽지 않습니다.
      CUDA 설치하셔야 NVIDIA GPU 이용해 병렬처리로 신경망학습됩니다.
      파이참은 파이썬 코드 편집 에디터입니다. 텐서플로우 사용에 큰 관계는 없습니다.

      삭제