본문 바로가기
프로그래밍 오류해결, 팁!/Python, PyCharm

윈도우 - 텐서플로우 GPU 개발환경 구축하기 (윈도우 + 텐서플로우 + 파이썬 + 파이참)

by 공부하는우니 2021. 5. 19.

구글링 하면 금방 나오는 내용이지만,

 

각자의 개발환경에 맞춰 워낙 제각각으로 설명해둔 글들이 많아

 

초보자용으로 나름(?) 체계적으로 작성해보는 포스팅입니다.

 

 

개발환경은

"윈도우" + "텐서플로우 (GPU)"

입니다.

 

* 데스크탑에 아무런 딥러닝, 프로그래밍 관련 프로그램들이 설치되어 있지 않은 상태를 가정하겠습니다.

 

텐서플로우 자체가 파이썬을 기반으로 한 라이브러리이기 때문에 파이썬 및 IDE로 파이참도 함께 설치하겠습니다.

 

 

 

 

우선, 이 글을 보시는 분은 크게 2가지 부류로 나눌 수 있을 것 같습니다.

 

1. 다른 연구자/개발자가 만들어놓은 텐서플로우 기반 특정 네트워크 (ex, googleNet) 를 가져다가 사용하기 위해.

2. 딥러닝 공부용으로 텐서플로우를 학습하기 위해.

 

(2)의 경우에는 상관없지만, (1)의 경우에는 한가지 고려해야 할 사항이 있습니다.

"바로 연구자/개발자가 제공하는 코드가 어느 환경에서 동작하도록 코드를 작성하였는가"

를 확인해야합니다.

 


0. 개발환경 특정

 

보통 tensorflow == 1.3.1 등으로 표기해주죠.

이런 경우 이 버전을 되도록이면 맞춰주는 것이 좋습니다.

다행히도 아무거나 설치해도 덮어씌우거나 가상환경을 바꿔가면서 사용하기에 큰 문제는 되지 않습니다만,

설치 당시부터 체크하면서 가면 굳이 오류가 났을 때 이유를 찾을 필요가 없겠죠.

 

* 다만 텐서플로우 버전차이가 1.x와 2.x처럼 앞자리가 다른 경우에는 적어도 앞자리는 맞춰서 개발환경을 구축하시길 바랍니다.

 

저는 (1)의 경우로 텐서플로우 공부를 시작하게 되었는데 개발자가

 

 

텐서플로우 1.13버전을 요구하네요. 1.13버전에 맞춰 개발환경을 구축했습니다.

 

아마도 개발환경을 구축하면서 다른 글들을 많이 보셨을텐데, 윈도우상에서 딥러닝 개발환경(Geforce계열 그래픽카드)을 구축하는 경우 CUDA와 cuDNN 을 필수적으로 설치해주어야 합니다.

https://www.tensorflow.org/install/source_windows#tested_build_configurations

위 그림을 보면 아시겠지만(링크 참조), 텐서플로우 1.13.0 GPU버전의 경우

 

CUDA 10, cuDNN 7.4를 요구하네요. 파이썬은 3.5~3.7을 사용 가능한데 저는 파이썬 3.7.4를 사용하였습니다.

 


1. CUDA 설치

 

https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

 

* CUDA 10을 설치해주어야 하는데 이는 10.1과 다릅니다!!

10.1은 위쪽 이미지에 10.1이라고 명확히 표기가 되어있기에, 저는 10.0을 설치해주었습니다.

(호환이 될 가능성은 있지만 굳이 모험을 떠나지 않는 것을 추천)

 

또한, CUDA 설치시 체크해주어야 할 것들이 있습니다.

 

1) 최근 버전에서는 해결이 되었는지 모르겠습니다만, 가끔 기존에 그래픽카드 드라이버가 설치되어 있는 경우, CUDA 설치시 오류가 나는 경우가 있습니다. 가능하면 삭제 후 설치를 추천드립니다.

 

2) 인터넷 속도가 충분히 나오는 가정집 같은 경우, exe(network)를 추천합니다.

그렇지 않은 학교나 연구소 등에서는 exe(local) 설치를 추천드립니다.

exe(network)의 경우 설치 도중 자동적으로 최신 업데이트를 적용하면서 하면서 CUDA의 설치가 진행됩니다.

인터넷 속도가 나오지 않는 경우 설치 완료 시점을 꽤 여유롭게 잡아야 합니다.

 

3) 다만 (2)에서 개발 환경에 따라 업데이트 / 그래픽카드 드라이버 버전 등을 최신버전이 아닌 구버전을 사용해야 하는 경우가 있습니다. 일반적인 윈도우-텐서플로우 환경에서는 큰 문제가 되지 않았었는데, 우분투에서는 꽤나 고전했던 기억이 났으니 체크해야 할 분들은 체크하시길 바랍니다. (업그레이드/다운그레이드 가능하나 오류가능성 매우 큼)

 

다운로드가 완료되면 설치는 Next를 쭉 누르면서 설치합니다. (혹시 설치 도중 오류가 뜬다면 전체설치가 아닌 일부설치 - Documentation, Samples를 체크해제 해주면 해결되는 경우가 있습니다)

 


2. cuDNN 설치

 

https://developer.nvidia.com/cudnn

 

위쪽 개발환경 이미지에서 cuDNN은 7.4를 설치하라고 하네요, 저는 CUDA 10.0에서 v7.4.1을 설치하였습니다.

 

다운로드 후 압축을 해제합니다.

 

압축을 해제하면 내부에 bin, include, lib폴더가 있는데 이들을

CUDA의 v10.0폴더 내로 복사해줍니다.

 

CUDA 설치시 기본 설치경로는

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0

입니다.

 

또한 굳이 필요하지 않는 과정이긴 하지만,

 

환경변수에 CUDA내의 v10.0 폴더와 v10.0/bin 폴더를 추가해줍니다.

 

 


3. 파이썬 설치

 

** Anaconda / Minicoda 사용하는 것도 상관없지만 파이참에서 프로젝트별 관리가 가능하니 큰 문제는 없지만 .. 

 

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

 

위쪽에 작성해 둔 것 처럼, 3.7.4를 설치하겠습니다. 64비트 기준

Windows x86-64 executable installer

Windows x86-64 web-based installer 

어느것이든 상관없습니다.

 

 

무난하게 Next를 눌러 쭉 설치하면 되고, 저 같은 경우엔

- Install for all users

- Add Python to environment variables

를 추가적으로 체크해주었습니다.

 


4. 파이참 설치

 

저같은경우네 IDE로 파이참을 주로 사용합니다.

각자 자신이 활용하기 편한 IDE를 사용하시면 될 것 같습니다.

파이참 Community버전은 무료이니 이쪽을 활용할 수 있다면 설치해줍니다.

 

https://www.jetbrains.com/pycharm/download/#section=windows

 

 


5. 텐서플로우 설치

 

파이참에서 .py파일을 하나 생성한 후, 터미널창을 열어줍니다 (Alt + F12)

 

터미널에서 

 

pip3 install tensorflow-gpu==1.13.1

 

을 입력하면 텐서플로우 1.13.1 gpu버전이 설치됩니다. (반드시 -gpu를 써줘야함)

이후 아래와 같이 코드를 작성하고 실행합니다 (Shift + F10)

 

import tensorflow as tf
hello = tf.constant("Hello Tensorflow")
sess = tf.Session()
print(sess.run(hello))

Hello Tensorflow가 출력된다면 정상적으로 텐서플로우가 설치된 것입니다.

 

다만 주의할점은, -gpu를 입력하지 않은 경우 자동적으로 cpu버전의 텐서플로우가 설치된다는 것입니다.

 

그런 경우에도 위 코드는 동작하기 때문에 제대로 gpu버전이 설치되었는지 확인이 필요합니다. 

 

추가적으로 몇 가지 확인해볼 내용이 있는데 가장 쉽게는 "gpu가 사용 가능한 디바이스에 포함되어 있는가" 입니다.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

위 코드를 작성하고 실행했을 때

 

이렇게 GeForce GTX 1080 으로 GPU가 잡히는 것을 확인할 수 있네요, 정상적으로 설치가 완료되었습니다.

 

또 한가지 방법으로 gpu버전 텐서플로우가 잘 설치되어있는지 확인하는 방법이 있는데요, 

이는 실제로 학습을 진행해보는 방법입니다. 

 

 

따로 코드를 첨부하지는 않겠습니다만, 실제로 학습을 진행하보면, gpu로 학습을 진행하게 된다면

작업 관리자의 '전용 GPU 메모리 사용량'이 큰폭으로 상승합니다.

cpu기반의 학습이 진행된다면 gpu 사용량은 거의 변화하지 않습니다.

 

 

* 커맨드 창에서 nvidia-smi 를 입력하면 상단에 CUDA 버전을 확인할 수 있습니다.

 

 

 

 

윈도우에서 텐서플로우 개발환경 구축하기.

 

끗!

 

 

댓글