그림1. TensorFlow

9일, 구글이 공식 블로그를 통하여 “텐서플로우”라는 머신러닝 도구를 오픈소스 프로젝트로 공개했다. 게다가 누구나 무료로 사용할 수 있도록 개방했다.

자세한 내용은 다음의 구글 공식 블로그 를 참고하자. 과연 구글신이라 불릴만하다.

이번 포스트에는 TensorFlow 설치기(정확히는 삽질기)를 공유한다.

설치한 장비 스펙

  1. iMac (21.5-inch, Late 2009)
  2. OS X El Capitan v10.11.1

설치 준비

다음의 GitHub 저장소 를 참고하여 설치를 진행한다.

TensorFlow Binary Installation

위의 GitHub 페이지의 README.md 파일에 설명해 둔 내용 중 Binary Installation -> Mac OS X 부분을 참고하여 TensorFlow CPU-version 을 설치한다.

$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

요고 이렇게 한 줄 명령이다. $ pip install https://***.whl

아래도 마찬가지…

ERROR ㅠㅠ

역시 한 번에 쉽게 되는 일은 없다.ㅡㅡ;

$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
You are using pip version 6.1.1, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
***
      OSError: [Errno 1] Operation not permitted: '/var/folders/***/six-1.4.1-py2.7.egg-info'

너무 길어서 일부분은 생략한다. ( *** 부분이 생략한 부분이다. )

pip 를 업그레이드하라는 메시지와 Operation not permitted 라는 에러 메시지가 보인다.

pip Upgrade

친절하신 조언대로 우선, pip 를 업그레이드해 보았다.

$ pip install --upgrade pip
***
      OSError: [Errno 13] Permission denied: '/Library/Python/***/dependency_links.txt'

Permission denied 란다.

super user 권한으로 다시 시도해 보았다.

$ sudo pip install --upgrade pip
***
Successfully installed pip-7.1.2

TensorFlow Binary Installation (재시도)

pip 를 업그레이드 하였으니 아까 실패했던 부분부터 다시 시도해 보았다.

아까 Operation not permitted 메시지가 보였으니 이후부터는 모두 super user 권한으로 진행하기로 한다.

$ sudo pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
***
OSError: [Errno 1] Operation not permitted: '/tmp/pip-fQhDIu-uninstall/***/six-1.4.1-py2.7.egg-info'

뭐지???

six 1.4.1 이라는게 지원되지 않는 버전인가 보다. 구글링해 보니 무시하고 설치하도록 다음 옵션을 넣으란다. ( –ignore-installed six )

해당 옵션을 넣고 재시도 (이 부분은 삽질이다. 따라하지 마시고 맨 아래 “정리” 섹션을 보시라.)

$ sudo -H pip install --ignore-installed six https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl 
***
Successfully installed numpy-1.8.0rc1 six-1.4.1 tensorflow-0.5.0

Try your first TensorFlow program

설치 완료된 것 같아서 제시된 예제를 실행해 보았다.

$ python
>>> import tensorflow as tf
***
    import six.moves.copyreg as copyreg
ImportError: No module named copyreg

ImportError 다. 메시지를 보아 six 라는게 버전을 꼭 맞춰줘야 하는 것 같다.

six 업그레이드

$ sudo easy_install -U six
***
Removing six 1.4.1 from easy-install.pth file
Adding six 1.10.0 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/six-1.10.0-py2.7.egg
Processing dependencies for six
Finished processing dependencies for six

six 1.4.1 을 삭제하고 six 1.10.0 을 설치했다고 한다.

Try your first TensorFlow program (재시도)

$ python
Python 2.7.10 (default, Aug 22 2015, 20:33:39) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
can't determine number of CPU cores: assuming 4
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
can't determine number of CPU cores: assuming 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42

드디어 성공!!!

위의 can’t 어쩌고 하는 메시지는 CPU 코어 갯수를 정할 수 없어서 4개로 가정한다는 의미이므로 예제를 실행하는데는 무리가 없다.

실제 기계학습(Machine Learning) 을 진행할 때에는 장비의 CPU 스펙을 잘 고려하여 조정하면 되겠다.


정리

위의 내용들은 삽질한 과정들을 정리한 내용이다. 사실은 훨씬 더 길었지만 불필요하거나 중복되는 부분들은 과감히 생략했다.

실제 설치할 때에는 필자와 같이 삽질할 필요없이, 다음 순서대로 진행하면 되겠다.

# six 업그레이드 (필자의 버전 : six 1.10.0)
$ sudo easy_install -U six

# python 설치 (필자의 버전 : Python 2.7.10)
$ brew install python

# pip 업그레이드 (필자의 버전 : pip 7.1.2)
$ sudo pip install --upgrade pip

# TensorFlow 설치
$ sudo pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

Train your first TensorFlow neural net model

설치를 완료하고 위의 예제까지 오류없이 진행했다면, 실제 신경망 모델링을 시도해 보자.

우선, 맨 위에 있는 GitHub 저장소 를 다운로드하자.

$ git clone https://github.com/tensorflow/tensorflow.git

완료했으면, 아래와 같이 실행해 보자.

$ cd tensorflow/tensorflow/models/image/mnist
$ python convolutional.py
...
Epoch 9.89
Minibatch loss: 1.601, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 1.0%
Test error: 0.8%

이 예제는 “LeNet-5-like convolutional MNIST model” 의 예제라고 한다.

그럼, 머신러닝의 바다에 빠져 보시라.

참고로, 필자의 6년 된 장비에서는 이 예제로 학습하는데에 1 시간 정도 걸렸다.