Windows 10 64bit에서 Tensorflow(텐서플로우) 설치 하기
이제 Windows 10 64bit에서 Tensorflow를 바로 설치해서 사용할 수 있게 되었다. 이전에 리눅스에서 설치 해 봤는데, 너무 귀찮고 뭔가 어려웠다. 특히 그래픽카드 설정하는 부분이 제일 짜증났다. -_- 이제는 걍 Windows 10 에 바로 설치가 되니깐.. 이번 기회에 깔아 보았다.
공식 설치 방법 아래의 링크에서 볼 수 있다. https://www.tensorflow.org/install/
Windows 10에서 설치하는 법은 아래 링크에서 볼 수 있다. https://www.tensorflow.org/install/install_windows
Python 설치
Tensorflow는 C++, Python API를 제공하고 있고, 실험적이지만 Java API 도 있다고 한다. 여기서는 Python 을 이용해서 해 볼 거다. C++ 이나 Java는 계속 컴파일도 해야 하고 귀찮아 보인다. 대부분의 예제도 Python 으로 만들어져 있으니 당근 Python 으로 가는게 좋은 수순으로 생각된다. Python은 파이썬 공식 홈페이지에서 제공하는 배포판을 설치를 해도 되지만, 머신러닝 하는 사람들은 대부분 Anaconda 라고 하는 비공식 배포판을 이용해서 설치한다. Anaconda에 있는 배포판을 설치하면 아주 많은 라이브러리를 기본적으로 포함하고 있으니. 우리도 Anaconda에 있는 배포판을 사용해서 설치 하도록 하자.
Anaconda 설치
아래의 링크에 들어 가서 Python 3.x 대 버젼을 받도록 하자. ( 예전에는 3.5 였는데, 지금은 3.6 으로 되어 있다. )
설치 방법이야, 그냥 Next 만 열심히 눌러도 잘 된다. Python 관련 PATH 설정까지 자동으로 해 주므로 잘 설치 하도록 하자.
설치시 주의 사항
Python때문인지, Tensorflow 때문인지는 몰라도, 이쪽 세계에서는 설치하는 경로에 공백이나 한글등이 들어가면 동작이 제대로 안 하는 경우가 많다. 그러므로 반드시 공백이나 한글이 없는 경로에 설치 하자. 글쓴이의 경우에는 D:\cjcho\Anaconda3 에 설치 했다.
Tensorflow 설치 하기
Tensorflow를 돌릴 수 있도록 Python은 설치 했으니 Tensorflow를 설치해 보자.
Anaconda 에서 tensorflow를 위한 가상환경 만들기
보통 개발을 하면, 환경 구성을 잘 해 두는데, 이게 이것저것 설치하다 보면 환경이 섞여서 뭔가 꼬이는 경우가 많이 발생한다. 그래서 Python에서는 "가상의 개발 환경"을 여러 프로그램별로 따로 구성해서 쓸 수 있도록 "가상환경"이라는것을 제공해 준다. 보통 virtualenv
라는것을 이용해서, 환경을 여러개 만드는데, Anaconda에서는 conda
라는 명령을 이용해서 여러개의 가상환경을 만들 수 있다.
다른 개발 환경과 섞이지 않도록 tensorflow 만을 위해 독립적인 환경을 따로 만들도록 하자. conda 관련 명령을 실행 시키기 위해서 anaconda prompt
를 실행 시키자. Windows 키를 누른뒤에 anaconda prompt
라고 치면 나온다.
프롬프트의 앞에 (D:\cjcho\Anaconda3)
라고 뜨는것은 현재 사용중인 환경의 이름을 나타낸다.
conda info --envs
명령을 이용해서 현재 만들어진 가상 환경을 확인해 보자. 글쓴이의 경우에는 이미 만들어진 환경이 있어 아래와 같이 여러개의 환경이 나온다.
(D:\cjcho\Anaconda3) C:\Users\magic>conda info --envs
# conda environments:
#
bunnies D:\cjcho\Anaconda3\envs\bunnies
snowflakes D:\cjcho\Anaconda3\envs\snowflakes
tf_gpu D:\cjcho\Anaconda3\envs\tf_gpu
root * D:\cjcho\Anaconda3
(D:\cjcho\Anaconda3) C:\Users\magic>
Windows 10에서 동작하는 tensorflow는 python 3.5를 지원하므로 python은 3.5로 지정해서 python 환경을 먼저 만들어야 한다. 이 환경 이름을 tf 라고하자. conda create --name tf python=3.5
라는 명령을 이용하면 python 3.5를 기반으로 하는 tf라는 환경을 만들 수 있다.
(D:\cjcho\Anaconda3) C:\Users\magic>conda create --name tf python=3.5
Fetching package metadata .............
Solving package specifications: .
Package plan for installation in environment D:\cjcho\Anaconda3\envs\tf:
The following NEW packages will be INSTALLED:
certifi: 2017.1.23-py35_0 conda-forge
pip: 9.0.1-py35_0 conda-forge
python: 3.5.3-1 conda-forge
setuptools: 33.1.0-py35_0 conda-forge
vs2015_runtime: 14.0.25420-0 conda-forge
wheel: 0.29.0-py35_0 conda-forge
wincertstore: 0.2-py35_0 conda-forge
Proceed ([y]/n)? y
python-3.5.3-1 100% |###############################| Time: 0:00:32 545.45 kB/s
#
# To activate this environment, use:
# > activate tf
#
# To deactivate this environment, use:
# > deactivate tf
#
# * for power-users using bash, you must source
#
(D:\cjcho\Anaconda3) C:\Users\magic>
tensorflow를 동작시킬 tf 라는 Python 3.5 환경을 만들었으니, activate tf
라는 명령으로 tf 환경 안으로 들어 가자.
(D:\cjcho\Anaconda3) C:\Users\magic>activate tf
(tf) C:\Users\magic>
tf라는 환경으로 진입했다. tf라는 환경에 python 3.5가 제대로 설치 되어 있는지도 확인하고 어떤 라이브러리(?)들이 설치 되어 있는지도 확인하자. conda list
라는 명령을 사용하면 된다.
(tf) C:\Users\magic>conda list
# packages in environment at D:\cjcho\Anaconda3\envs\tf:
#
certifi 2017.1.23 py35_0 conda-forge
pip 9.0.1 py35_0 conda-forge
python 3.5.3 1 conda-forge
setuptools 33.1.0 py35_0 conda-forge
vs2015_runtime 14.0.25420 0 conda-forge
wheel 0.29.0 py35_0 conda-forge
wincertstore 0.2 py35_0 conda-forge
(tf) C:\Users\magic>
위에 보다시피 python 3.5가 제대로 설치 된 것을 볼 수 있다.
가상환경에 tensorflow 설치 하기
tensorflow를 설치할때 CPU용을 설치 할 것인지 GPU 용을 설치 할 것인지를 정해야 한다.
가상환경에 tensorflow 설치 하기 / CPU 용
보통 anaconda에서는 conda install
이라는 명령을 통해서 패키지를 설치하게 되는데, Tensorflow 공식 가이드에서는 pip
를 이용해서 설치 하도록 하고 있다. tensorflow는 CPU 버젼과 GPU 버젼이 따로 있는데, pip
라는것을 이용하는 방법만이 CPU와 GPU 두가지를 모두를 제공하고 있다. conda install
방식을 사용하면 CPU 버젼만 사용할 수 있다. CPU 버젼 설치는pip
를 사용하지 않고 걍 conda install
명령으로 설치해 볼 것이다. anaconda는 이미 tensorflow를 Windows 에서 설치 할 수 있도록 패키징 해 두었다. https://anaconda.org/ 에 접속해서 tensorflow 라고 검색을 해 보자.
- 중요 : Tensorflow 팀에서는 Anaconda를 이용한 설치 방법에 대해서는 관라하지도 않을것이고, 확인하지도 않을 것이라고 했다. 그러므로
pip
를 이용하는 방법이 더 좋겠으나, 여기서 CPU 버전은 그냥conda
방식을 이용해서 보여 주도록 한다. 어차피 GPU 방식은pip
를 이용해서 설치해야 한다.
아래와 같이 이미 패키징 된 것들을 많이 볼 수 있다.
conda-forge가 anaconda의 기본 패키징 저장소이므로, 우리는 conda-forge / tensorflow
를 클릭해서 들어 가 보도록 하자. 그러면 아래와 같이 어떤 명령을 치면 tensorflow를 설치할 수 있는지 알 수 있다.
아까 tf
환경으로 들어 가 있던 프롬프트에서 conda install -c conda-forge tensorflow=1.0.0
명령을 이용해 설치 하도록 하자.
만약 Tensorflow 공식 가이드대로 pip
로 설치 하고 싶다면 pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_x86_64.whl
를 쳐 넣으면 된다. 혹시 이렇게 해서 설치가 안되면, 파일명의 제일 뒤를 _x86_64.whl
라고 하지 말고, _amd64.whl
이라고 바꿔보자. 얼마전까지만 해도 링크가 깨졌는지, 제대로 동작하지 않았었다.
아래 메세지들은 0.12.1 버젼을 기준으로 캡쳐 된 것이다. 그러므로 1.0.0 으로 설치를 하면 조금 다른 내용이 나올 것이다.
(tf) C:\Users\magic>conda install -c conda-forge tensorflow=0.12.1
Fetching package metadata .............
Solving package specifications: .
Package plan for installation in environment D:\cjcho\Anaconda3\envs\tf:
The following NEW packages will be INSTALLED:
mkl: 2017.0.1-0
mock: 2.0.0-py35_0 conda-forge
numpy: 1.12.0-py35_0
pbr: 1.10.0-py35_0 conda-forge
protobuf: 3.1.0-py35_vc14_0 conda-forge [vc14]
six: 1.10.0-py35_1 conda-forge
tensorflow: 0.12.1-py35_2 conda-forge
zlib: 1.2.11-vc14_0 conda-forge [vc14]
Proceed ([y]/n)? y
numpy-1.12.0-p 100% |###############################| Time: 0:00:01 3.69 MB/s
tensorflow-0.1 100% |###############################| Time: 0:01:26 178.02 kB/s
(tf) C:\Users\magic>
가상환경에 tensorflow 설치 하기 / GPU 용
주의사항 : GPU용은 NVIDIA CUDA 8.0 이상을 지원하는 GPU만을 사용할 수 있다. 만약 지원하지 않는 GPU라면 이 과정을 거쳐도 사용할 수 없으니. 깔끔하게 포기하자.
아래 두 툴킷을 설치해야 한다. 이 툴킷들은 NVIDIA에서 제공하는 프로그램이고, 자신의 GPU에서 아래 버젼의 툴킷을 사용할 수 있는지 확인되어야 한다. 참고로 GTX 670의 경우 아래의 두 툴킷을 모두 사용할 수 있는 환경이었다.
NVIDIA 홈페이지에 접근해서, 가입하고... 동의한 뒤에... 다운 받아 설치해야 한다.
- CUDA Toolkit 8.0 : https://developer.nvidia.com/cuda-toolkit
- cuDNN v5.1 : https://developer.nvidia.com/cudnn
위 툴킷을 설치하고 하고 난 뒤 tensorflow를 설치하면 된다.
GPU 환경을 사용하기 위한 tensorflow는 conda
방식으로 설치할 수 없다.. 그러므로 pip
방식을 통해서 설치해야 한다. 아래의 명령을 이용해서 tensorflow 를 설치 할 수 있다.
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0-cp35-cp35m-win_x86_64.whl
CPU 버전을 pip
로 설치할 때와 마찬가지로 해당 패키지를 찾을 수 없을때 URL의 끝 부분을 _x86_64.whl
대신 _amd64.whl
로 바꿔서 해 보면 잘 될 수도 있다.
설치에는 좀 오래 걸리니깐 기다려야 한다. cuDNN 및 CUDA에 있는 몇가지 헤더 파일을 복사 하던지.. 무 그런 작업이 있다... 지금은 생각나지 않으니 통과...;; 아래 내용을 계속 진행하다 보면 문제가 생길 수 있는데, 그 상황에 맞게 인터넷에 찾아보면 어렵지 않게 문제를 해결 할 수 있다. ;; 구찬 ;;
Tensorflow가 잘 동작하는지 확인
간단 코드 확인
이하는 CPU 버젼에서 확인한 내용이다.
간단한 코드를 짜서 잘 동작하는지 확인해 보자.
(tf) C:\Users\magic>python
Python 3.5.3 | packaged by conda-forge | (default, Feb 9 2017, 15:12:38) [MSC v.1900 64 bit (AMD64)] on win32
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))
b'Hello, Tensorflow!'
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a+b))
42
>>> quit()
(tf) C:\Users\magic>
머신러닝 돌려서 확인하기
이 쪽 세계에는 손글씨를 인식하는 MNIST라는 유명한게 있다. 이것을 이용해서 tensorflow를 테스트 해 보자. tensorflow는 기본적인 예제(?)들을 포함하고 있는데, 간단한 명령 하나로 테스트 해 볼 수 있다. 우선 tensorflow가 어디에 설치 되어 있는지 확인하자. python -c "import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))"
명령을 이용하면 된다. 가이드 문서에는 " 가 아니라 '로 되어 있는데, Windows에서는 ' 대신 "를 사용해야 한다.
(tf) C:\Users\magic>python -c "import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))"
D:\cjcho\Anaconda3\envs\tf\lib\site-packages\tensorflow
(tf) C:\Users\magic>
위에 나온 경로에서 models\image\minist\
디렉토리에 가면 convolutional.py 파일이 있다. 이게 바로 예제이다.
python -m tensorflow.models.image.mnist.convolutional
명령을 이용해서 잘 동작하는지 확인해 보자.
(tf) C:\Users\magic>python -m tensorflow.models.image.mnist.convolutional
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data\train-images-idx3-ubyte.gz
Extracting data\train-labels-idx1-ubyte.gz
Extracting data\t10k-images-idx3-ubyte.gz
Extracting data\t10k-labels-idx1-ubyte.gz
Initialized!
Step 0 (epoch 0.00), 5.6 ms
Minibatch loss: 8.334, learning rate: 0.010000
Minibatch error: 85.9%
Validation error: 84.6%
Step 100 (epoch 0.12), 295.2 ms
Minibatch loss: 3.254, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.8%
....
....
시간이 꽤나 오래 걸릴것이다.
속도 차이
집에 마침 NVIDIA GPU가 있어서, CPU와 GPU를 버젼을 모두 설치해서 테스트 해 보았다.
CPU : 1590초(26분정도), Intel Core it 3570K, 3.40GHz, 4 core
GPU : 140초( 2분정도), Nvidia GTX 670
NVIDIA GTX 670이 꽤나 오래 전에 나온 GPU인데도, CPU보다 10배 가까이 빠르다.
그렇다. 이제 NVIDIA GPU를 구매하러 가자.
'공부' 카테고리의 다른 글
Windows 10 Hyper-V, Docker 사용사 외부에서 접근이 안될때, 방화벽 설정. (0) | 2017.04.27 |
---|---|
Windows 10 텐서플로우 환경에서 jupyter notebook 실행하기 (0) | 2017.02.21 |
Java에서 UTF-8 BOM(ByteOrderMark)이 제대로 처리 되지 않는 문제 (2) | 2013.04.23 |