O/S : Windows 2019 Server
윈도우에서 딥러닝에 필요한 tensorflow 를 이용하기 위해서는 몇가지 프로그램을 설치 후 설치를 진행해야 한다
자세한 셋팅 방법 및 테스트를 할수 있게 코드까지 테스트 진행해본자
하드웨어 지원사항
-CUDA® 아키텍처 3.5, 3.7, 5.2, 6.0, 6.1, 7.0 이상을 포함하는 NVIDIA® GPU 카드 CUDA® 지원 GPU 카드 목록을 참고하세요.
-지원되지 않는 CUDA® 아키텍처를 사용하는 GPU의 경우 또는 PTX에서 JIT 컴파일을 방지하거나 다른 버전의 NVIDIA® 라이브러리를 사용하려면 Linux 소스에서 빌드 가이드를 참고하세요.
설치 프로그램
– nvidia driver
– Visual Studio C++ (https://visualstudio.microsoft.com/ko/vs/older-downloads )
– CUDA Toolkit ( https://developer.nvidia.com/cuda-toolkit-archive )
– Cuddn ( https://developer.nvidia.com/cudnn )
– python 3.7 ( https://www.python.org/downloads/release/python-379/ )
1. tensorflow 이용하기 위해서는 Visual Studio c++ 설치가 필요하다 (버전인 2015 update 3버전)
https://visualstudio.microsoft.com/ko/vs/older-downloads/ 사이트로 이동 후에
해당 파일을 받고 설치를 진행한다
기본값 그대로 설치를 진행한다
2. CUDA Toolkit 설치 진행 ( CUDA® Toolkit – TensorFlow는 CUDA® 10.1을 지원합니다(TensorFlow 2.1.0 이상).
https://developer.nvidia.com/cuda-toolkit-archive
해당 링크에서 10.1 Update2 를 선택
3. 다운로드 한 파일을 설치 진행한다 (다소 시간이 필요)
4. CUDA가 모두 설치가 완료되었으면 이제는 cuDNN SDK 7.6 을 설치 진행해야 한다 ( https://developer.nvidia.com/cudnn )
단 Nvidia 사이트에 회원가입을 해야 한다 ( 로그인 후 다운로드 )
windows 파일을 다운로드 한다 파일명 : cudnn-10.1-windows10-x64-v7.6.5.32.zip
해당 파일을 다운로드 후 압축 해제한다 압축 푼 폴더에 들어가면 bin / include / lib 폴더가 있는데 여기안에 있는 파일을 아래 경로에 복사해줘야 한다
bin 폴더에 있는 cudnn64_7.dll 파일을 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin 폴더에 복사
include 폴더에 있는 cudnn.h 파일을 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include 폴더에 복사
lib\x86 폴더에 있는 cudnn.lib 파일을 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64 폴더에 복사
5. 여기까지 설치가 완료되었으면 이제 python 3.7 파일을 다운로드 하고 설치를 진행한다 ( 다운로드 https://www.python.org/downloads/release/python-379/ )
파일을 다운로드 후 실행하면
Add Python 3.7 to PATh 선택 후 Customize Installation 으로 선택
선택값 확인 후 next
install 버튼 클릭
Python 3.7 설치가 다 되었으면 잘 되는지 버전을 체크해 보자 cmd에서 python -V 입력해보자
정상 설치 된것을 확인 할 수 있다
그럼 이제 tensorflow 설치를 해보자
1 |
C:\Users\Administrator>pip install tensorflow |
설치 진행 중
설치가 다 완료 된 후 pip list로 설치 되었는지 확인
이제 python 을 이용하여 tensorflow gpu를 확인해보자
python 실행
1 2 3 |
from tensorflow.python.client import device_lib local_device_protos = device_lib.list_local_devices() |
실제 실행화면 device 찾았고 해당 인터페이스는 0번이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Microsoft Windows [Version 10.0.17763.107] (c) 2018 Microsoft Corporation. All rights reserved. C:\Users\Administrator>python Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from tensorflow.python.client import device_lib 2020-11-30 13:29:40.495332: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll >>> local_device_protos = device_lib.list_local_devices() 2020-11-30 13:29:52.399767: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x1e80f42bf80 initialized for platform Host (this does not guarantee that XLA will be used). Devices: 2020-11-30 13:29:52.406050: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version 2020-11-30 13:29:52.412872: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library nvcuda.dll 2020-11-30 13:29:52.461498: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Found device 0 with properties: pciBusID: 0000:84:00.0 name: GeForce GTX 1050 Ti computeCapability: 6.1 coreClock: 1.4175GHz coreCount: 6 deviceMemorySize: 4.00GiB deviceMemoryBandwidth: 104.43GiB/s 2020-11-30 13:29:52.470726: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll 2020-11-30 13:29:52.485766: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cublas64_10.dll 2020-11-30 13:29:52.501708: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cufft64_10.dll 2020-11-30 13:29:52.510392: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library curand64_10.dll 2020-11-30 13:29:52.531416: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cusolver64_10.dll 2020-11-30 13:29:52.543603: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cusparse64_10.dll 2020-11-30 13:29:52.572016: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudnn64_7.dll 2020-11-30 13:29:52.577801: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1858] Adding visible gpu devices: 0 2020-11-30 13:29:54.123268: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1257] Device interconnect StreamExecutor with strength 1 edge matrix: 2020-11-30 13:29:54.129581: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1263] 0 2020-11-30 13:29:54.134554: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1276] 0: N 2020-11-30 13:29:54.138489: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1402] Created TensorFlow device (/device:GPU:0 with 2982 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1050 Ti, pci bus id: 0000:84:00.0, compute capability: 6.1) 2020-11-30 13:29:54.154704: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x1e83814c730 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices: 2020-11-30 13:29:54.162903: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): GeForce GTX 1050 Ti, Compute Capability 6.1 >>> |
값을 확인해보면 gtx 1050 ti 그래픽카드를 찾았고 device는 0번을 찾을것을 확인 할 수 있다
그럼 이제 GPU로 tensorflow 딥러닝을 간단하게 테스트 진행해 보자
메모장을 열어 아래 소스를 작성 또는
해당 링크에서 소스 파일 다운로드 ( https://xinet.kr/data/tensorflow/tensorflow_gpu_test.py )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import tensorflow as tf import timeit device_name = tf.test.gpu_device_name() if device_name != '/device:GPU:0': print( '\n\nThis error most likely means that this notebook is not ' 'configured to use a GPU. Change this in Notebook Settings via the ' 'command palette (cmd/ctrl-shift-P) or the Edit menu.\n\n') raise SystemError('GPU device not found') def cpu(): with tf.device('/cpu:0'): random_image_cpu = tf.random.normal((100, 100, 100, 30)) net_cpu = tf.keras.layers.Conv2D(32, 7)(random_image_cpu) return tf.math.reduce_sum(net_cpu) def gpu(): with tf.device('/device:GPU:0'): random_image_gpu = tf.random.normal((100, 100, 100, 90)) net_gpu = tf.keras.layers.Conv2D(32, 7)(random_image_gpu) return tf.math.reduce_sum(net_gpu) cpu() gpu() # Run the op several times. print('Time (s) to convolve 32x7x7x3 filter over random 100x100x100x3 images ' '(batch x height x width x channel). Sum of ten runs.') print('CPU (s):') cpu_time = timeit.timeit('cpu()', number=10, setup="from __main__ import cpu") print(cpu_time) print('GPU (s):') gpu_time = timeit.timeit('gpu()', number=10, setup="from __main__ import gpu") print(gpu_time) print('GPU speedup over CPU: {}x'.format(int(cpu_time/gpu_time))) |
결과값 확인 해당 파일을 c:\ 작성 후 python tensorflow_gpu_test.py 실행
위처럼 CPU 대비 GPU가 10배 이상 빠르다고 나옴
이제 tensorflow를 이용하여 딥러닝을 이용할 수 있다
좀더 자세한 방법은 tensorflow 홈페이지에서 확인 할 수 있다
https://www.tensorflow.org/install/gpu