brunch

You can make anything
by writing

C.S.Lewis

by gnugeun Jul 16. 2017

텐서플로우(TensorFlow) 설치하기

Hello, TensorFlow!

우연한 기회에 구글 클라우드 플랫폼 (Google Cloud Platform, GCP)에서 마련한 개발자 콘퍼런스에 참석하게 되었다. 콘퍼런스 첫 번째 연사로 현재 GCP에서 일하고 있는 조대협 님이 머신러닝에 대해 가볍게 소개해주었다. 


조대협 님의 발표에서 두 가지를 남겨왔다.

1. 머신러닝 공부의 시작은 홍콩과기대 김성훈 교수님의 무료 강의로 시작하라.
2. 텐서플로우를 사용하면 머신러닝을 쉽게 시작할 수 있다.


그래서 http://hunkim.github.io/ml/ 에서 머신러닝 강의를 듣기 시작했고,

두 번째 강의 실습을 따라 하기 위해 텐서플로우를 설치하게 되었다.



* 그럼 텐서플로우 설치를 시작해보자


텐서플로우 설치는 이곳에서 할 수 있다. 

https://www.tensorflow.org/install/ 

링크를 따라가서 본인 OS에 맞는 설치 링크를 고르면 된다. 

텐서플로우는 기본적으로 파이썬을 지원한다.


그 밑에 Transitioning to TensorFlow 1.0 은 

이전 0.x 버전 텐서플로우 사용자들을 위한 마이그레이션 방법을 알려준단다.


마지막 JAVA, C, GO는 파이썬 외에 해당 프로그래밍 언어 사용자들을 위한 인스톨 방법이다.


난 JAVA에 가장 익숙하지만, 

이번 기회에 파이썬을 해보고 싶어서 파이썬 버전의 윈도우용 링크를 따라갔다.  

따라가면 아래 페이지가 나온다.


https://www.tensorflow.org/install/install_windows

윈도우 사용자들은 바로 이 링크를 따라가도 무방하다.




* 설치 페이지에선 크게 4가지를 설명하고 있다.


CPU만 사용할 것인가, GPU 지원을 받을 것인가 각각의 선택에 대한 설명

native pip를 사용할 것인가 Anaconda를 사용할 것인가

설치 후 잘 설치되었는지 확인하는 코드

설치가 잘 안된 경우 참고할 만한 스택오버플로우 링크


우선 이 페이지에 다운로드 링크 같은 건 없다.

설치는 이 후 파이썬의 패키지 관리시스템 pip3 등을 이용해 다운로드 후 진행된다. 




1. CPU만 사용하는 버전? GPU 서포트받는 버전?

설명은 잘 되어 있는데 영어로 되어 있다. 

훗날 또 보면서 해석할 날 위해 한글로 적당히 옮겨 적어놓는다.


만약 설치하려는 시스템에 NVIDIA GPU가 없을 경우엔 선택의 여지가 없다.

CPU만 사용하는 버전을 선택해야 한다.

추가로 이 버전의 텐서플로우가 설치하기 쉽다고 되어 있다. 

NVIDIA GPU가 시스템에 있더라도 일단 이 버전으로 시작하는 게 좋다고 한다.


설치하려는 시스템에 NVIDIA GPU가 탑재되어 있는 경우엔 GPU 서포트 버전을 선택할 수 있다.

그런데 단순히 탑재만 되어 있으면 또 안된다. 

NVIDIA에서 제공하는 몇 가지 SW가 설치되어 있어야 한다. 아래 조건을 만족해야 한다.


1. CUDA® Toolkit 8.0 필요. 이 툴킷 설치 후 관련된 Cuda 경로를 PATH 환경변수에 추가해야 함 (http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/#axzz4msG1nqBe)

2. CUDA® Toolkit 8.0과 관련된 NVIDIA 드라이버들이 설치되어 있어야 함

3. cuDNN v5.1 필요. 이 SW는 설치 시 보통 다른 CUDA DLL과 다른 경로에 설치되니, PATH 환경변수에 등록하는 걸 잊지 말란다. (https://developer.nvidia.com/cudnn)

4. GPU card with CUDA Compute Capability 3.0 or higher. 지원되는 GPU 카드인지 NVIDIA에서 확인해보란다. (https://developer.nvidia.com/cuda-gpus) 내 노트북에 있는 GTX 960m은 리스트에 있었다. compute capability가 5.0으로 나와있는데 숫자가 클수록 좋은 거 같ㅈ긴 하지만 정확히 어떤 수치인지는 모르겠다.


GPU도움을 받을 경우 CPU만 사용하는 버전에 비해 굉장히(significantly) 빠르다고 한다.

따라서 성능이 중요한 애플리케이션을 원한다면 이 버전을 꼭(ultimately) 설치하라고 한다.


난 처음이고 아직 실제 애플리케이션 제작 단계가 아니니 CPU만 사용하는 버전으로 진행했다.

나중에 CUDA 설치해서 GPU 버전으로도 진행해봐야지.



2. "native" pip 사용하여 설치? 아니면 추가로 Anaconda 설치하여 Anaconda 이용하여 설치?


파이썬을 이번에 처음 사용해보는 거라 pip가 뭔지 Anaconda가 뭔지 잘 몰랐다. 


pip는 파이썬으로 작성된 패키지 관리 시스템이었다. npm과 비슷한 듯.

파이썬 2.7.9와 3.4 이후 버전은 pip가 기본 내장되어 있어서

해당 버전을 설치했다면 별도 설치가 필요 없다.

(https://ko.wikipedia.org/wiki/Pip_(%ED%8C%A8%ED%82%A4%EC%A7%80_%EA%B4%80%EB%A6%AC%EC%9E%90))


Anaconda(https://www.continuum.io/downloads)는 파이썬 기반의 오픈 데이터 과학 플랫폼이라고 한다. 홈페이지에 따르면 아나콘다 오픈소스 버전은 100개가 넘는 유명한 파이썬, R, 스칼라 데이터 과학 패키지를 포함한 고성능 파이썬 배포 버전이라고 되어 있다. 

아나콘다는 설치할 때 1기가 조금 넘게 잡아먹는데, 이게 부담스러울 경우 미니콘다(https://conda.io/miniconda.html) 라고 경량 버전도 제공하고 있다.


python이 비단 구렁이니깐 이것보다 더 큰 아나콘다를 이름으로 정했나 보다.


텐서플로우 홈페이지에선 Anaconda는 공식적으로 지원되는 게 아니라 커뮤니티에 의해 지원되고 있으므로, 텐서플로우 팀에서 conda 패키지를 테스트하거나 유지하지 않는다 라고 되어 있다. 이 리스크는 본인들이 감당하세요 라고 덧붙여 놓았다. 


텐서플로우를 이용하여 실제 제품을 만들려는 경우 주의해야 할 사항이다.


pip를 이용하던 아나콘다를 이용하던 설치를 하려면 cmd 던 윈도 파워쉘이던 콘솔창을 켜게 된다.

이때 아래와 같이 관리자 권한으로 실행하자.

아니면 아래와 같은 에러를 만나게 된다.

잘 보면 빨간 글씨로 액세스가 거부되었습니다 라는 에러를 볼 수 있다.


그리고 anaconda로 가던 pip로 가던 텐서플로우 사용을 위해선 pip 버전 업그레이드를 해야 한다.

디폴트로 설치되는 pip 버전은 7.1.2인데 9.0.1로 업그레이드해줘야 텐서플로우가 제대로 실행된다.

캡처된 화면처럼

python -m pip install --upgrade pip


실행하면 pip가 업그레이드된다.

9.0.1로 업그레이드 성공


2-1. pip를 이용할 경우 설치는 매우 간단하다. 

단, 주의해야 할 점은 텐서플로우 윈도우 버전은 파이썬 3.5.x 버전만 지원한다는 것. 

설치는 파이썬 3.5.x 버전 설치 시 같이 설치되는 pip3를 이용한다.

윈도우용 파이썬 설치는 이 링크에서 하면 된다.

https://www.python.org/downloads/windows/

아래로 내려가면 3.5.x 버전이 보인다. 32bit, 64bit 본인 환경에 맞게 골라 설치하면 된다.

설치하다 보면 환경변수에 등록해주는 옵션이 있는데 환경변수에 넣을 예정이면 체크 후 진행하면 편리하다.


파이썬이 설치되었다면 pip3도 같이 설치되었을 것이다. 

이후 

CPU만 사용하는 버전은

C:\> pip3 install --upgrade tensorflow

GPU 지원받는 버전은

C:\> pip3 install --upgrade tensorflow-gpu

실행하면 텐서플로우 설치 끝이다.


2-2. Anaconda를 이용할 경우


2-2-1. 우선 아나콘다가 설치되어 있어야 한다.

윈도우용 아나콘다는 이 링크를 따라가면 설치 가능하다.

 https://www.continuum.io/downloads#windows

따라가면 Python 3.6 버전이라고 되어 있다. 

텐서플로우 윈도우는 파이썬 3.5 만 지원한다고 했는데 사이트에서 3.5 버전을 찾아보려고 하니 없다.

그래서 일단 그냥 깔고 이후 진행을 따라가다 보니 

3.6 버전을 설치하더라도 아나콘다 명령어를 통해 3.5 버전을 사용할 수 있게 되어 있다.


그리고 나중에 다시 보니 아나콘다 설명에 

아나콘다와 함께라면 넌 여러 버전의 파이썬을 독립적인 환경에서 실행할 수 있지! 
(With Anaconda you can run multiple versions of Python in isolated environments) 

라고 되어 있더라. 역시 설명 제대로 안 읽으면 고생하게 되어 있다.

아나콘다 설치는 설치 파일 내려받아서 실행 후 잘 따라가기만 하면 된다.

이후 설치 과정에서 conda라는 명령어를 사용해야 하니 

%설치경로%/Anaconda3/Scripts 경로를 환경변수에 등록하면 편리하다.

(난 C:\ProgramData\Anaconda3\Scripts 를 등록했다)


2-2-2. 아래 명령어를 실행한다. 텐서플로우를 위한 conda 환경을 생성하는 명령어다.

C:> conda create -n tensorflow python=3.5

옵션으로 3.5 버전의 파이썬 환경을 생성하는 것을 볼 수 있다.

중간에 Proceed ... ? 나오면 y 넣고 엔터누르면 된다.


2-2-3. 위에서 생성한 텐서플로우 환경을 활성화시킨다.

C:> activate tensorflow 
(tensorflow)C:>  # Your prompt should change 


2-2-4. 이후 버전에 따라 아래 명령어 실행하면 끝. 명령어 길지만 한 줄이다.

CPU 버전

(tensorflow)C:> pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.2.1-cp35-cp35m-win_amd64.whl

GPU버전

(tensorflow)C:> pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.2.1-cp35-cp35m-win_amd64.whl



3. 설치 확인

이후 파이썬 실행해서 확인한다. 

아나콘다 이용한 거면 아나콘다 환경 실행해서 확인하자. 

어차피 보통 설치 끝나고 바로 확인할 테니 아나콘다 환경은 실행되어 있을 거다.


파이썬에서 아래 코드를 실행하자

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

정상적으로 설치가 됐다면 화면에 아래와 같이 보인다.

Hello, TensorFlow!


문득 그 동안 얼마나 많은 Hello를 날렸는지 세보고 싶어졌다.


내 환경에선

The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.

이런 경고 문구들이 보인다.

구글링 해봤다.


일단 SSE instructions는 

스트리밍 SIMD 확장(Streaming SIMD Extensions, SSE)은 x86 아키텍처에 대한 SIMD(단일 명령 다중 데이터) 명령어 집합 확장이며, 인텔이 1999년에 펜티엄 III 시리즈 프로세서에 도입하였다. 이 기능은 1998년 등장한 AMD사의 3D나우! 기술에 대응한다. SSE는 70가지의 새로운 명령어와 추가적인 레지스터로 구성되며, 명령어의 대부분은 부동 소수점에 대한 연산이다.

라고 한다. 더 자세한 건 내가 위 글을 따온 아래 링크를 참고.

https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D_SIMD_%ED%99%95%EC%9E%A5


내 문제는 텐서플로우 깃헙에도 올라와있었다.

https://github.com/tensorflow/tensorflow/issues/7778


다행히 구글링 결과 중 한글 결과가 있었다. 

그래서 그걸 읽었다. 

글쓴이에 따르면 텐서플로우 소스를 직접 내 환경에서 빌드하여 설치 진행하면 해결된다고 한다.

(http://www.kwangsiklee.com/ko/2017/04/%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0-%EA%B2%BD%EA%B3%A0%EB%A9%94%EC%84%B8%EC%A7%80-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-the-tensorflow-library-wasnt-compiled-to-use-sse3-instructions/)


일단 에러가 나는 건 아니니 추후 성능상 문제가 발생하면 직접 빌드 후 설치해봐야겠다.


또한 내 환경에선 실행결과가

'Hello, TensorFlow!'

가 아니라

b'Hello, TensorFlow!'

이렇게 앞에 b가 붙는다.


에러나 버그는 아니고 python 버전 차이라고 하는데.. b를 붙이는 의미는 아직 모르겠다.



4. 설치 중 문제 해결은 아래 링크에서

https://www.tensorflow.org/install/install_windows#common_installation_problems




텐서플로우 설치 안내 페이지는 여기서 끝난다.


다음은 아래 링크 따라 해보려고 한다.

https://www.tensorflow.org/get_started/get_started


끝.

작가의 이전글 독후감 - 코딩 호러의 이펙티브 프로그래밍
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari