주요글: 도커 시작하기
반응형

텐서플로우 윈도우 버전이 나와서 윈도우 8.1 환경에 설치하고 테스트를 해 봤다.


설치 과정에서 참고한 자료는 다음과 같다.

CUDA, cuDNN 설치

GPU 관련 설치 과정을 요약하면 다음과 같다.
  • https://developer.nvidia.com/cuda-downloads 사이트에서 CUDA Toolkit 8 버전 다운받아 설치한다. 용량이 1G를 넘으니 인내심이 필요하다. 기본 설치 경로는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0이고, 설치가 끝나면 PATH에 관련 경로가 추가된다.
  • https://developer.nvidia.com/cudnn 사이트에서 cuDNN 다운받는다. 회원 가입을 해야 다운로드 받을 수 있다.  다운 받은 파일을 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0에 압축풀면 된다.
아나콘다(Anaconda)와 텐서플로우(Tensorflow) 설치

아나콘다를 이용해서 파이선 3.5를 설치했다. https://www.continuum.io/downloads 사이트에서 아나콘다를 다운 받아 설치하면 된다.

GPU 버전 텐서플로우와 CPU 버전의 텐서플로우를 테스트하기 위해 두 개의 가상 환경을 만들었다. 먼저 GPU 버전 텐서플로우를 위한 환경을 만들고 설치에 사용한 명령어는 다음과 같다.

C:\>conda create -n tensorflow-gpu python=3.5
C:\>activate tensorflow-gpu
(tensorflow-gpu) C:\>pip install tensorflow-gpu

다른 창을 열어 CPU 버전 텐서플로우 환경을 생성했다.

C:\>conda create -n tensorflow-cpu python=3.5
C:\>activate tensorflow-cpu
(tensorflow-cpu) C:\>pip install tensorflow

간단한 성능 확인

간단하게 성능을 비교하기 위해 '텐서플로 첫걸음' 책의 CNN 예제를 돌려봤다. 참고로 PC 환경은 다음과 같다. 장비1은 GPU가 있고, 장비2에는 GPU가 없다.
  • 장비1
    • CPU: Intel Core i7-4712MQ CPU @ 2.30 GHz
    • RAM: 16G
    • GPU: GeForce 840M 5.0, memoryClockRate (GHz) 1.124, memory 2.0GiB
  • 장비2
    • CPU: Intel Core i7-6700 CPU @ 3.40 GHz x 8
학습을 1000회 실행하는데, 50회마다 시간을 출력하고 학습이 끝나면 시간을 출력했다. GPU와 CPU에 대해 각 3회씩 실행하고 그 평균을 기록했다.

step GPU (초)
장비1
CPU (초)
장비1

장비1 CPU/GPU (시간 비율)

 CPU2

장비2

0 1.119 0.056

 0.028

50

3.004

7.751 2.58 3.646 
100 4.817 15.417 3.20 7.282 
150 6.632 23.008 3.47 10.922 
200 8.445 30.666 3.63 14.557 
250 10.261 38.283 3.73 18.212 
300 12.077 45.845 3.80 21.833 
350 13.891 53.471 3.85 25.491 
400 15.704 61.094 3.89 29.110 
450 17.518 68.672 3.92 32.755 
500 19.333 76.37 3.95

36.380 

550 21.15 83.973 3.97 40.023 
600 22.964 91.584 3.99 43.640 
650 24.777 99.26 4.01 47.275 
700 26.593 106.839 4.02 50.911 
750 28.409 114.4 4.03 54.559 
800 30.222 122.071 4.04 58.191 
850 32.036 129.627 4.05 61.825 
900 33.852 137.188 4.05 65.461 
950 35.666 144.953 4.06 69.089 
전체 37.471 152.721 4.08

72.702 


실행 결과를 보면 장비1에서 GPU를 사용한 결과가 CPU를 사용한 결과보다 4배 정도 빠른 것을 알 수 있다. 또한, 장비2의 CPU 결과보다도 2배 정도 빠른 것을 알 수 있다.


GPU와 OOM 주의 사항


GPU로 예제를 돌릴 때 다음 코드에서 OOM when allocating tensor with shape[10000,32,28,28]  에러가 발생했다.


print("test accuracy %g"% sess.run(accuracy, feed_dict={

     x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))


에러가 발생하는 이유는 GPU 메모리가 부족하기 때문이다. 이를 처리하는 가장 쉬운 방법은 mnist.test.images 전체가 아닌 일부만 구해서 정확도를 구하는 것이다.


for i in range(200):

    testSet = mnist.test.next_batch(50)

    print("test accuracy %g" % sess.run(accuracy, 

            feed_dict={ x: testSet[0], y_: testSet[1], keep_prob: 1.0}))



* CNN 테스트에 사용한 코드: https://github.com/madvirus/tfstudy/blob/master/nn/cnn.py



+ Recent posts