본문 바로가기

공부

Windows 10 64bit 에서 텐서플로우(Tensorflow) 1.0.0 설치하기

반응형

Windows 10 64bit에서 Tensorflow(텐서플로우) 설치 하기

이제 Windows 10 64bit에서 Tensorflow를 바로 설치해서 사용할 수 있게 되었다. 이전에 리눅스에서 설치 해 봤는데, 너무 귀찮고 뭔가 어려웠다. 특히 그래픽카드 설정하는 부분이 제일 짜증났다. -_- 이제는 걍 Windows 10 에 바로 설치가 되니깐.. 이번 기회에 깔아 보았다.

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 홈페이지에 접근해서, 가입하고... 동의한 뒤에... 다운 받아 설치해야 한다.

위 툴킷을 설치하고 하고 난 뒤 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를 구매하러 가자.

반응형