2017년 2월 2일 목요일

Docker나 가상머신 없이 Window에서 TensorFlow 설치하기: tensorflow-gpu + Window (7,10) 설치 가이드입니다.

Tensorflow Window 버전이 드디어 나왔습니다! (물론 이미 작년 얘기이지만...거의 나오자 마자 깔았으므로 ㅎㅎ) 2016년 11월 29일에 tensorflow 0.12.0-rc0 버전이 릴리즈되면서 Ubuntu에서만 가능하던 GPU 버전이 설치가 가능해졌습니다. 그 이후에 벌써 update가 여러번 진행되어서 현재 (2017.2.10일) 기준 1.00.rc2 버전이 나와있습니다. 그럼 간단히 설치방법부터 동작 확인하는 것까지 정리해보겠습니다.

그림 1 TensorFlow Window버전 출시 관련 release note



설치방법

Prerequisites

  1. CUDA 8.0.44 -win 10 설치
  2. CuDNN 5.1 설치
본격적으로 TensorFlow를 설치하기 전에 먼저 설치를 해줘야할 패키지들이 있습니다. 그림 1 TensorFlow Window버전 출시 관련 release note에서도 보실 수 있듯이 Tensorflow 0.12.0 RC0 버전부터는 GPU acceleration을 위해 CUDA 8.0과 cuDNN 5.1(NVIDIA에서 제공하는 Deep learning을 위한 추가 라이브러리 package)을 권장하고 있습니다. 
CUDA 8.0은 Network 버전보다 local 버전으로 1.2기가 정도의 파일을 직접 받아 설치하는 것이 훨씬 빠릅니다.
링크: https://developer.nvidia.com/cuda-downloads
CuDNN은 NVIDIA에서 회원가입을 하고 다운을 받으시면 됩니다. 다운받고 나면 그냥 압축 파일인데 이를 풀어서 CUDA 설치 경로에 붙여넣어 덮어씌워주시면 됩니다.
링크: https://developer.nvidia.com/cudnn
CUDA 설치경로: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

Anaconda Installation

위의 패키지들을 모두 설치하였다면 본격적으로 TensorFlow를 설치할 준비가 된 것입니다. Anaconda를 이용하여 설치를 진행하도록하겠습니다. Anaconda는 Python distribution으로 여러 유용한 패키지들을 포함하고 있습니다. 가상환경을 만들 수도 있는데 이를 통해 Python 버전 간의 충돌을 막을 수도 있고 매우 편리합니다. Python이 아직 깔려있지 않은 분도 Anaconda를 깔면 자동으로 path 정리 등이 되므로 그냥 Anaconda를 깔아서 사용합시다.

사실 Tensorflow.org에서 설치 가이드를 확인하시면 Anaconda installation이란 part가 있고 앞부분은 이를 따라하시기만하면 됩니다만...이 글은 무작정 따라하기 방식으로 포스팅하기로 했으므로 한글로 다시 정리해드리겠습니다.
먼저 크게 다음과 같은 흐름으로 설치가 진행됩니다.

  1. Anaconda 설치
  2. Conda 가상환경 설정
  3. 가상환경을 activate하고 TensorFlow를 설치
  4. 앞으로 TensorFlow 실행하기 전에 가상환경을 먼저 activate
  5. 가상환경에 ipython(jupyter notebook) 등의 부가적 package 설치

1번부터 차근차근 해보겠습니다. Anaconda에도 Python 버전에 따라 두 가지 버전이 있는데 일단 설치링크를 따라가서 Python 3.5 버전을 설치합니다.
* 아직까지는 TensorFlow가 Window에서는 Python 3.5만 지원하기 때문에 Anaconda가 업그레이드 된 경우 아카이브로 들어가셔서 Anaconda3-4.2.0-Windows-x86_64 버전을 받아 깔아주시면 됩니다 (20170206 기준 Anaconda가 Python 3.6으로 업그레이드 되었네요).

2번의 가상환경이 무엇인지는 cs231n 수업 환경설정에 관한 글 중간(3번)에 설명이 되어있습니다.  저는 TensorFlow Python 3.5 버전을 설치를 할 것이기 때문에 tensorflow35라는 이름으로 가상환경을 만들어주었습니다.
conda create -n tensorflow35 python=3.5 anaconda

앞으로는 tensorflow를 사용할 때마다 cmd 창을 열어서
activate tensorflow35
deactivate tensorflow35
라고 명령어를 실행해주시면 가상환경에 접속(activate)하거나 나올 수(deactivate) 있습니다.

그럼 이제 이 가상환경을 활성화한 후 이 위에 TensorFlow-GPU 버전을 설치해보겠습니다. conda를 이용하면 이 역시도 매우 편하게 설치가 가능합니다.
conda install tensorflow-gpu
*현재 Anaconda version이 업그레이드 되면서 conda로 install할 경우 package가 없다는 오류가 뜨는 경우가 발생하는 것 같습니다. 그런 경우 pip을 사용하여 깔아줍시다.
pip install tensorflow-gpu
이후에 새로운 버전이 나오면 업데이트해주는 것 역시도 매우 간단합니다. (아래 예시는 2017.02.10 기준 가장 최신인 1.0.0.rc2 업데이트입니다.)
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-win_amd64.whl

현재 자신의 TensorFlow 버전을 알고 싶다면 TensorFlow를 설치해준 가상환경으로 들어가서
pip freeze
라고 하면 설치된 프로그램들의 버전이 모두 나옵니다. 이 방법 외에도 cmd에서 python을 실행한 후 import tensorflow as tf; print(tf.__version__)이라고 실행하면 자신의 현재 버전을 바로 알 수 있습니다.

설치 확인

이제 설치가 완료되었으면, TensorFlow가 잘 동작하는지 확인할 필요가 있겠죠? cmd창에서 python을 실행시킨 후에,
python
아래와 같이 script를 실행해 봅니다. 정상적으로 설치가 완료되었다면 다음과 같이 결과가 나올 것입니다.

>>> 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

* (string 앞에 b가 찍히는 이유) Hello, TensorFlow 앞에 'b'가 붙는 것은 는 python 버전 때문인 것 같습니다. 리눅스 python 2.x 버전에서는 그렇지 않다고 하네요.

이로써 TensorFlow GPU 버전 윈도우 설치가 완료되었습니다. 모두 즐거운 코딩되시길 ㅎㅎ 다음 번에는 jupyter notebook과 window IDE에서 python code를 돌리는 것에 대해 글을 작성해보겠습니다.

다음 읽을거리



댓글 43개:

  1. 답글
    1. 오 제가 아는 현욱씨이려나요 KAIST면 그럴 것 같은데..

      삭제
  2. 가이드라인대로 설치는 마쳤습니다!
    개발환경은 무엇을 사용해야하나요?
    cmd 터미널에서 작성해보니까 폼이 안나네요. ㅎㅎ

    답글삭제
    답글
    1. window IDE가 개발환경인가보네요!
      끝까지 제대로 안읽었습니다. 감사합니다.

      삭제
    2. 안녕하세요 KIKUCHI님 댓글 감사합니다. 맞습니다. 그리고 그에 관한 새로운 글을 작성하였습니다. http://jaejunyoo.blogspot.com/2017/02/tensorflow-window-7-10-directly-without-docker-ide-jupyter-notebook.html

      삭제
  3. 가이드라인대로 설치를 마치고 jupyter notebook으로 tensorflow 예제 몇개 돌려본 초보입니다. 감사합니다.


    그런데 윈도우에서 텐서플로우 돌리시는 다른 분들 보니까 pycharm이나 visual studio 같은 것들을 사용한다고 하던데, 저는 pycharm에서 tensorflow를 쓰려 해도 잘 안되더라고요. activate tensorflow를 아나콘다에서 치고 pycharm 에서 import tensorflow as tf를 써도 tensorflow를 못찾는 것 같더라고요.

    혹시 왜 그런지 아시나요?

    답글삭제
    답글
    1. 안녕하세요 Unknown님 댓글 감사합니다. 아마도 제가 짐작한 것이 맞다면 가상환경 위에서 바로 실행을 하지 않으셨거나 preference에 가상환경 python path가 설정이 되어있지 않아서 인식을 못하는 것으로 보입니다. 그에 관한 새로운 글을 작성하였습니다. http://jaejunyoo.blogspot.com/2017/02/tensorflow-window-7-10-directly-without-docker-ide-jupyter-notebook.html

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

    답글삭제
  5. 답글
    1. 음 어디까지 따라하신 후 어떤 것을 수행하시고 저런 오류가 나왔는지 알려주셔야 저도 말씀을 드릴 수 있을 것 같은데요..그냥 에러만 봐서는 어디선가 tf.__version__이라는 함수를 호출하신 것 같은데 import tensorflow as tf를 수행하고 하신 것인가요?

      삭제
    2. 기존 있던 오류는 초기화로 그냥 무시하시면 될것 같습니다.
      다시 설치후 오류가 있는데요,,,
      pip이용 gpu설치하는 부분에서 설치 속도가 굉장히 delay 되는데
      가상 공간에 설치하는거라 그런가요?

      삭제
    3. 음 가상공간이라고 해도 그냥 HDD에 패키지들을 잘 모아 나눠놓은 것일뿐이니까 딱히 느릴 이유가 없어보입니다. 물론 제가 이 부분은 자세히 알지 못해 확답드릴 수는 없네요. 다만 얼마 전에 깔아보았을 때 리눅스 버전도 느리게 깔렸던 것을 봐선 뭔가 다른 이유가 있는게 아닐까 생각됩니다.

      삭제
    4. Tensorflow가 매우 커다란 라이브러리라 리눅스에서도 맥에서도 느리다는 얘기를 봐서 보충하여 댓글을 달아둡니다. 설치하고 실행할 때도 약간의 delay가 생긴다고 하는군요.

      삭제
  6. 윈 10 32비트는 CUDA 설치안되나요? ㅠㅠ.

    답글삭제
    답글
    1. 아 그 부분은 제가 잘 알지 못하는 부분이네요 ㅜ 아마 아직 지원을 안 해주는 것으로 알고 있습니다.

      삭제
  7. 가이드 대로 설치하였는데요

    텐서를 import 하는데서 에러가 나요...
    cuda를 오픈 할 수 없다고요...
    그럼 다른 설치 방법은 없을까요?

    답글삭제
    답글
    1. 음 이 댓글을 이제 봤네요. 혹시 어떤 상황에서 에러가 정확히 어떻게 나는지 알려주실 수 있나요?

      삭제
  8. 좋은 정보 감사합니다! ^_^

    답글삭제
  9. 성공했습니다 도커없이 뭐 없이 42가 나왔습니다 ㅠㅠ 감사합니다

    답글삭제
    답글
    1. yoon yeo won님 다행입니다 :) 도움이 되었다니 뿌듯하네요.

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

    답글삭제
  11. 안녕하세요. 설치하는데 아래처럼 오류가 나서 질문을 드리고 싶습니다.
    import tensorflow as tf를 치면 아래처럼 뜹니다.
    Traceback (most recent call last):
    File "", line 1, in
    ModuleNotFoundError: No module named 'tensorflow'
    pip freeze를 쳐서 텐서플로우 버전까지 확인했는데요, 왜 이러는지 모르겠습니다. 도와주세요ㅠㅠ

    답글삭제
    답글
    1. 안녕하세요. 일단 tensorflow가 깔렸는지 인식을 못하는 상황입니다. 설정한 가상환경을 들어가셔서 열은 것이 맞는지요?

      삭제
  12. 안녕하세요 cuda 설치중에 오류가 나서 질문 드립니다.
    NVIDIA 설치프로그램 실패 라는 문구가 뜨고 제대로 설치가 안되는데 뭐 때문에 그런걸까요? 답변 주시면 감사하겠습니다.

    답글삭제
    답글
    1. 흠 그 부분은 제가 잘 모르는 부분이라 답변드리기가 어렵네요. NVIDIA 오류를 보시고 확인하심이..

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

    답글삭제
  14. 안녕하세요.

    Anaconda Prompt 프로그램에서 activate tensorflow 하고
    command line에서 Python을 수행시켜서 import tensorflow as tf 하면 제대로 동작을 합니다.

    그런데 activate tensoflow를 한 상태에서 jupyter notebook이나 spyder를 수행시켜서
    jupyter나 spyder 안에서 import tensorflow as tf를 수행하면
    ImportError: No module named 'tensorflow' 에러가 나네요.

    2대의 컴퓨터에 설치했는데 똑같이 에러가 나고,
    jupyter notebook에서 New Notebook을 하면
    Python [default]와 Python [conda root]만 보이네요.
    아마도 Python [tensorflow] 가 있어야 할 것 같은데요.

    어떻게 문제를 해결할 수 있는지 알려주시면 감사하겠습니다

    답글삭제
    답글
    1. environment를 deactivate한 상태에서
      conda remove --all -n tensorflow로 환경을 지우고
      그냥 pip으로 설치하니까 잘되네요.

      jupyter notebook에서 New할 때 Python [default],
      Python [conda root] 둘 중 아무거나 선택해도 잘 되는군요.

      삭제
    2. 제가 출장 다녀온 사이 혼자 해결하셨군요ㅎ 음 저는 잘 되었던 상황이라 뭐가 문제였는지 잘 모르겠군요 음.. conda에서 꼬인 것이 있는것인가..

      삭제
  15. 안녕하세요, 좋은 정보 올려주셔서 감사합니다.

    설명해 주신대로 tensorflow를 install 한 뒤, 제대로 설치되었는지 확인하기 위해 cmd창에서 tensorflow를 활성화시킨 뒤, import tensorflow as tf를 입력하였습니다.
    그런데 ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed. 라는 에러 메세지가 뜨네요.
    또 다른 ImportError로: No module named '_pywrap_tensorflow'라는 메세지가 뜨는데요.

    어떻게 해결해야하는지 알려주시면 감사하겠습니다.

    답글삭제
    답글
    1. tensorflow를 활성화시켰다 하심은 아나콘다 가상환경을 불러오셨단 말씀이시죠? 말씀해주신 에러로 구글링해보니 다음 링크가 도움이 될 것 같습니다. visual studio 2015를 깔아보라 하는군요 자세한 것은 힝크를 참조해보세요. ㅋ그리고 보통은 단편적인 에러만 봐서 제가 뭘 알기가 어렵기 때문에 에러를 직접 찾아보시는 것이 더 빠르고 정확할 것 같습니다. 해결되셨다면 알려주세요 :) https://github.com/tensorflow/tensorflow/issues/5949

      삭제
  16. 안녕하세요 선생님 글 보고 잘설치하였습니다.
    궁금한것이 있어서 질문드립니다.
    현재 선생님이쓰신 스텝을 밟으면 GPU를 사용하여 계산하게되는 환경이 구축되어지는건가요??

    답글삭제
    답글
    1. 네 gpu 버전으로 설치가 된 것입니다 :)

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

      삭제
    3. 선생님 스텝으로 따라가보았는데 일반적인경우 import tensorflow as tf를 입력하면
      gpu버전의 경우 cuda libray의 loading여부가 출력되어야한다는데 선생님의 경우에는 출력시 되시나요? 아니면 안되는게 정상인지 궁금합니다 !

      삭제
    4. 혹시 다른 사이트를 보니 우분투를 설치하라고 되어있는데 그것은 상관이없는건가요???

      삭제
    5. 소민섭님 안녕하세요. 리눅스라면 우분투에 설치해서 해야겠지만 제 경우는 윈도우에 설치하는 것이기 때문에 별개의 얘기입니다.

      삭제
  17. 안녕하세요! tensorflow 설치 과정 중 가상공간 생성 중 압축파일 하나가 읽히지 않는 오류가 생겼습니다. 오류가 있어도 activate,deactivate tensorflow35가 실행이 되어서 설치아래단계들을 진행해 보았는데 엑세서 거부 오류도 나오고 pip version update 도 진행되지 않는다는 경고 문구가 나와서 문의드립니다.

    답글삭제
  18. 아 바보같이 cuDNN 버전을 5.1로 안하고 6.0으로 해서 계속 임프토 에러 떳었네요. 시키시는 대로 해야하는 건데 ㄲㄲ
    잘 됩니다. 좋은 글 감사합니다.

    답글삭제
  19. 안녕하세요.window 10에 tensorflow-gpu버전 설치하려는 학생입니다. 근데 설치를 할때 ImportError : No module named ' _pywrap_tensorflow_internal이라는 오류가 발생합니다.

    제가 설치한 파일들은 visual studio 2015.3 , cudnn-8.0-window10-x64-v5.1, cuda_8.0.61_win10.exe,
    python-3.5.2-amd64.exe, pycharm은 community를 설치 했습니다. 어떻게 무엇이 잘못되었는지 알려주시면 정말 감사드리겠습니다.

    답글삭제
    답글
    1. 지나가다 저랑 같은 오류로 삽질하시는 것 같아서 답글 남기고 갑니다. 콘다를 쓰시던 그냥 pip로 설치를 하시던 현재 시점에서 Tensorflow 버전 1.3이 설치될 것 같습니다. 1.3 버전 부터 CuDNN v5.1이 아닌 v6를 쓴다고 합니다. 저도 열심히 v5.1만 압축 풀어줬더니 안되더라구요...
      1) Visual Sudio 2015.3 설치
      2) CUDA 8 & CuDNN v6
      3) PATH 설정 확인

      으로 진행하시면 될 것 같습니다.

      삭제
  20. 안녕하세요.좋은 정보 주셔서 감사합니다. 그러나 제가 텐서플로우를 5번째 시도중인데 아직도 자꾸 오류가 나네요 ㅠㅠ
    >>> import tensorflow as tf
    Traceback (most recent call last):
    File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\platform\self_check.py", line 62, in preload_check
    ctypes.WinDLL(build_info.nvcuda_dll_name)
    File "C:\Program Files\Anaconda3\lib\ctypes\__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
    OSError: [WinError 126] 지정된 모듈을 찾을 수 없습니다

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "", line 1, in
    File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 24, in
    from tensorflow.python import *
    File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\__init__.py", line 49, in
    from tensorflow.python import pywrap_tensorflow
    File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 30, in
    self_check.preload_check()
    File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\platform\self_check.py", line 70, in preload_check
    % build_info.nvcuda_dll_name)
    ImportError: Could not find 'nvcuda.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Typically it is installed in 'C:\Windows\System32'. If it is not present, ensure that you have a CUDA-capable GPU with the correct driver installed.

    이런 오류가 계속 뜨는데 CUDA를 잘못설치한것인가요? ㅠㅠ 경로가 잘못된것인지...

    답글삭제