본문 바로가기

CS

Windows 10, GTX 1070 환경에서의 Keras 설치

개인적으로는 Deep Learning을 처음 접할 때부터 지금까지 쭉 Ubuntu 환경에서 Torch, Tensorflow와 H2O 만을 써왔지만, 이번에 GTX 1070으로 VGA를 올리면서 Window 10으로 OS를 바꾸게 되었다. 여러 이유로 Ubuntu 14.04와 16.04 환경에서 GTX 1070의 Nvidia 드라이버가 정상적으로 설치되지 않았기 때문이다.

Window에서는 내가 주로 쓰던 Deep Learning Framework가 전부 지원을 안 하거나 부분 지원 만을 했으므로, Tensorflow나 Torch가 아닌 다른 Framework를 설치할 필요가 있었다. 일단 결정적으로 Tensorflow는 Window 환경에서는 Docker든, VM이든 뭘 사용해도 GPGPU를 이용할 수 없다는 얘기를 들었으니...

Caffe, CNTK, MXNet, Keras 정도를 고려할만하다고 생각했다. 모두 CUDA 내장 함수를 지원하고, 최근의 CNN이나 RNN을 메소드로 제공하기 때문이었다. 그러나 Caffe는 내가 쓰던 Tensorflow와 좀 많이 다른 프레임워크였고, CNTK와 MXNet은 최근의 Cuda Toolkit과 CuDNN을 지원하지 않았다. 그래서 Keras를 이용하기로 결심하고 이를 설치하였다.


나의 머신의 환경은 이러하다.

CPU : Intel Core it-6600 @ 3.30GHz

Motherboard : ASRock : B150M Pro 4 / Intel B150 Express

VGA : NVIDIA GeForce GTX 1070

OS : Window 10 version 1511 build 10586

참고로, Window의 Build number는 winver로 확인할 수 있다.


우선, 가급적 Cuda 등의 드라이버를 다루는 작업은 포맷이 막 된 따끈따끈한 윈도우에서 하는 게 정신건강 상 편할 가능성이 높다. 기본적으로 Motherboard driver는 설치해두는 게 좋다. 우선, Nvidia 홈페이지에서 GTX 1070에 맞는 드라이버를 설치해주자. 여기서 Window의 build가 가장 최신의 빌드가 아니라면 드라이버가 설치가 되지 않는다. 정확히는, 드라이버가 OS의 compatibility를 체크할 때, 이 드라이버와 맞는 OS가 아니라는 메세지를 뿜으면서 설치를 그만둔다. 마이크로소프트 윈도우 홈페이지에 들어가 ISO를 받으면 최신 build의 OS임을 보장받을 수 있을 것이다.


그 다음은 git, VS 2013, CUDA Toolkit 8.0, Anaconda를 순서대로 설치하자.

git은 단순히 theano와 keras를 github에서 떠오기 위해서 설치하는 것이므로, zip으로 받고자한다면, 그래도 좋다. git을 받는다면 보기 좋게 font 설정을 바꾸고, command line에서 돌릴 거라는 옵션("Run Git From the Windows Command Prompt)에 체크를 해준다. 

VS는 2010도, 2012도, 2013도 괜찮다. 하지만 그 이후는 안된다. CUDA 설치툴에서 VS를 인식을 못한다. 좀 멍청하게 느껴지지만 Nvidia 개발자들이 게으른 탓이려니 하면 된다.

지금 현재 글을 쓰는 시점에서 CUDA Toolkit 8.0은 RC 버전, 즉 아직 개발툴의 무결성을 보장해주지 않는 상태이다. 하지만 이 8.0 버전을 받아야하는 이유는 Theano에서 GTX 1070에게 SM 61 이상을 요구하고, 이 SM 61을 CUDA 8.0부터 지원하기 때문이다.

그 다음은 2.7 버전으로 Anaconda를 설치한다. 환경변수는 자동으로 추가되니 신경쓰지 않아도 된다. 3.3 버전을 쓰고 싶지만, 데이터 사이언스와 머신러닝 커뮤니티는 python2에 대한 병적인 집착이 있다. 공식적으로 지원이 끝나고, 커뮤니티에서 3으로 슬슬 갈아탈 때쯤 python3로 설치를 시도해봐도 될 듯 싶다.


theano의 dependency package를 설치한다. anaconda cmd를 관리자 권한으로 켜주고, 다음을 입력한다.

conda install pip six nose numpy scipy mingw libpython

그 다음은 적당한 디렉토리를 잡아서 theano와 keras를 순서대로 설치해주면 된다. 나는 C\에 디렉토리를 만들기로 했다.

git clone git://github.com/Theano/Theano.git

cd Theano

python setup.py develop

cd ..

git clone https://github.com/fchollet/keras

cd keras

python setup.py develop


여기에서 시스템 환경변수를 몇 가지 추가시켜 주어야 한다. Path에 cl.exe compiler가 존재하는 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64을 추가시키고, nvcc가 존재하는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin를 추가시킨다. 그리고 THEANO_FLAGS 변수를 만들고, floatX=float32,device=gpu,nvcc.fastmath=True를 변수값으로 준다. 참고로, 시스템 환경변수를 변경하고 나면 재부팅을 한 번 해주는 것이 환경변수 추가해준 작업의 적용을 확정하기에 좋다.


제대로 keras가 설치되었는지 확인하기 위해서 예제를 하나 실행시켜 본다.

cd examples

ipython mnist_mlp.py


그 다음은 cuDNN을 사용하여 좀 더 연산을 가속할 차례이다. cuDNN 7.5를 설치한다. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 폴더에 맞게, cuDNN 설치 패키지에 들어가 있는 파일들을 하나씩 옮기면 된다. 그 이후 환경변수 THEANO_FLAGS의 값 뒤에 VRAM 사용 비율을 지정해주는 lib.cnmem=0.82 값을 추가한다. 결과적으로 이 값은 이러하다.

floatX=float32,device=gpu,nvcc.fastmath=True,lib.cnmem=0.82


reboot를 하고 다시 mnist_mlp.py 예제를 돌려보고, 기쁨을 만끽하면 된다! 참고로 anaconda 위에서 돌아가므로 jupyter notebook를 켜서 코딩하는 것도 물론 가능하다.

'CS' 카테고리의 다른 글

CRAN 제출 패키지를 만들어 보고 나서  (0) 2016.08.28