민서네집

Deep Learning 환경 만들기 (Windows10) (Theano & Keras with GPU Enabled) 본문

머신러닝

Deep Learning 환경 만들기 (Windows10) (Theano & Keras with GPU Enabled)

브라이언7 2016. 5. 22. 22:06

Setup a Deep Learning Environment on Windows (Theano & Keras with GPU Enabled)


https://datanoord.com/2016/02/01/setup-a-deep-learning-environment-on-windows-theano-keras-with-gpu-enabled/


위 블로그에 나온 대로 하면 무난히 잘 설치된다.


내 Laptop 사양


Model: 레노버 Y70-70 Touch

CPU: Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz

RAM: 16.0GB

64비트 운영 체제 (Windows 10)

그래픽:지포스GTX960M(메모리4G)


  1. Visual Studio 2013 설치. (Community 버전으로 설치해도 된다.)

Visual Sudio 2015 Community 버전을 설치해 봤는데, 현재 최신 버전인 CUDA 7.5 에서 인식하지 못함.




그래서 다시 Visual Sudio 2013 Community 버전을 설치했다.


https://www.visualstudio.com/downloads/download-visual-studio-vs.aspx



2. CUDA 64비트, 현재 가장 최신 버전인 7.5를 설치함.


https://developer.nvidia.com/cuda-downloads





3. CUDA 가 잘 설치되었는지 테스트.


Visual Studio 2013 를 띄워서 Open Project


C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5




cf) http://julip.co/2009/09/how-to-install-and-configure-cuda-on-windows/  

( Test your setup by compiling an example )


4. Anacoda 64비트, Python 2.x 버전 설치.


https://www.continuum.io/downloads


“C:\Users\YourUserName\Anaconda2” 디렉터리에 설치함.



cf) Anaconda 에 대한 자세한 설명은 여기를 참조한다.

http://egloos.zum.com/mataeoh/v/7052271


5. Git을 따로 설치하는 대신에 Windows 용 Docker를 설치함.


https://docs.docker.com/windows/step_one/


Docker 안에 git 이 포함되어 있다.


6. 명령 프롬프트를 관리자 권한으로 실행해서 다음을 실행한다.


conda install pip six nose numpy scipy


conda install mingw libpython


cd \apps\pythonApps   (원하는 디렉터리로 이동)


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


cd Theano


python setup.py develop


conda list


7. 제어판 > 시스템 > 고급 시스템 설정 > 고급 탭 > 환경 변수


시스템 변수의 Path 에서 맨 밑에 다음을 추가한다.


C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin 




시스템 변수의 새로 만들기 버튼 클릭


변수 이름: THEANO_FLAGS 


변수 값:  floatX=float32,device=gpu,nvcc.fastmath=True



8. 명령 프롬프트를 다시 띄워서 python 입력.


import theano 를 입력하고 엔터한 후 나오는 메시지를 확인한다. Using gpu device 0: GeForce GTX 960M ...




9. Theano 를 설치한 것과 동일하게 Keras 를 설치한다.


cd \apps\pythonApps   (원하는 디렉터리로 이동)


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


cd keras


python setup.py develop


10. 명령 프롬프트에서 conda list 입력해서 잘 설치되었는지 확인하고, keras의 example을 실행해 본다.


cd examples   ( keras 디렉터리 밑에 examples 디렉터리로 이동 )


ipython mnist_mlp.py


[실행결과]




11. cuDNN (엔비디아 CUDA 기반 neural net 라이브러리) 다운로드


http://igotit.tistory.com/573


http://skyer9.tistory.com/7


< Deep Learning Framework 이 어떤 cuDNN 버전까지 지원하는가? >


https://developer.nvidia.com/deep-learning-frameworks


나는 Windows 운영체제에 설치하고 있고, 어차피 TensorFlow는 Windows를 지원하지 않으므로, 속 편하게 cuDNN v5를 다운로드 받아 설치하면 된다.


< cuDNN 다운로드 사이트 >


https://developer.nvidia.com/cudnn


C:\Users\Heeseok\Downloads\cudnn-7.5-windows10-x64-v5.0-ga\cuda\bin 

=> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin


C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin

이 디렉터리는 시스템 환경변수 Path 에 이미 있는 디렉터리라서, 따로 Path를 걸어줄 필요가 없다.


C:\Users\Heeseok\Downloads\cudnn-7.5-windows10-x64-v5.0-ga\cuda\include

=> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include


C:\Users\Heeseok\Downloads\cudnn-7.5-windows10-x64-v5.0-ga\cuda\lib\x64

=> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64


http://stackoverflow.com/questions/36248056/how-to-setup-cudnn-with-theano-on-windows-7-64-bit



12. cuDNN 활성화 시키기


< Theano Configuration - cnmem 설정 >


http://deeplearning.net/software/theano/library/config.html


< CNMeM is disabled >


https://github.com/fchollet/keras/issues/987


시스템 변수: THEANO_FLAGS

변수 값: floatX=float32,device=gpu,nvcc.fastmath=True,lib.cnmem=0.82

lib.cnmem=0.82 로 하면, CNMeM is enabled with initial size: 82.0% of memory 되는데, 샘플을 돌려보면 Runtime Error가 발생한다.


C:\apps\pythonApps\keras\examples>ipython mnist_mlp.py

Using Theano backend.

Using gpu device 0: GeForce GTX 960M (CNMeM is enabled with initial size: 82.0% of memory, cuDNN 5005)

실행 시 Runtime Error 발생


그래서 THEANO_FLAGS 환경변수에서 lib.cnmem값을 0.81 로 조정했다.


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






13. CPU를 이용한 경우와 GPU를 이용한 경우 테스트


Keras를 설치한 디렉터리 밑에 examples 디렉터리로 이동.


C:\apps\pythonApps\keras\examples


test.bat 배치 파일을 생성해서 CPU를 이용한 경우와 GPU를 이용한 경우 시간 측정


date /t >> test.log

echo %time% >> test.log

ipython mnist_mlp.py

date /t >> test.log

echo %time% >> test.log


테스트 결과는 다음과 같다.

=== CPU를 이용한 경우 (THEANO_FLAGS  환경변수에서 device=gpu 삭제) ====
>>> import keras
Using Theano backend.

6분 3초 (363초)

=== GPU를 이용한 경우 (cuDNN을 설치 안한 경우) ====
>>> import keras
Using Theano backend.
Using gpu device 0: GeForce GTX 960M (CNMeM is disabled, cuDNN not available)

2분 31초 (151초)

=== GPU를 이용한 경우 (cuDNN을 설치하고, 환경변수에서 lib.cnmem 값을 주지 않은 경우) ====
>>> import theano
Using gpu device 0: GeForce GTX 960M (CNMeM is disabled, cuDNN 5005)

2분 33초 (153초)

=== GPU를 이용한 경우 (cuDNN을 설치하고, 환경변수에서 lib.cnmem 값을 0.81로 준 경우) ====
Using gpu device 0: GeForce GTX 960M (CNMeM is enabled with initial size: 81.0% of memory, cuDNN 5005)

1분 6초 (66초)

위에서 보는 바와 같이, GPU를 이용하면, CPU를 이용한 경우보다 5.5배 빨라졌다.

363 / 66 = 5.5


작업관리자에서 비교해 보면 GPU를 이용할 때, CPU의 부하가 내려간 것을 알 수 있다.


CPU를 이용한 경우




GPU를 이용한 경우 (cuDNN 설치 후, CNMeM 활성화)



Comments