Tensorflow로 GPU 이용하기

도룩·2023년 3월 29일
1
post-thumbnail

1. 개요

필자의 환경은 다음과 같다.

<Environment>
Graphic Card: NVIDIA GeForce RTX 3060

Python: 3.8.16
Tensorflow: 2.7.0

다음과 같은 환경에서 Tensorflow를 모델을 학습하는데 있어 GPU를 사용하려 한다.
먼저 아래의 코드로 Tensorflow가 GPU를 인식하는지 알 수 있다.
✏️ 입력
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
📖 출력
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 4240470354218144686
 xla_global_id: -1]

출력값을 보니 Tensorflow가 GPU 인식을 못하는 것 같다!
(GPU를 인식한 경우에는 다음과 같은 출력값이 포함되어 있음!)
📖 출력
name: "/device:GPU:0"

지금부터 Tensorflow에서 GPU를 사용하기 위해 환경을 세팅해보자. 순서는 다음과 같다.
1. NVIDIA GPU driver 설치
2. CUDA Toolkit 설치
3. cuDNN 다운로드
4. zlibwapi.dll (optional)

하나씩 살펴보자.

1. NVIDIA GPU driver 설치

아래 링크에서 본인의 GPU에 맞는 드라이버를 설치한다.
https://www.nvidia.com/download/index.aspx?lang=en-us

필자는 아래와 같이 설정하여 다운 받았다.

다운을 받고 설치를 완료한 후 cmd 창을 열고 nvidia-smi 명령어를 입력하면
설치가 잘 되었는지 확인할 수 있다.

CUDA version은 11.7이다.

2. CUDA Toolkit 설치

cmd의 nvidia-smi 명령어로 확인한 CUDA version에 맞게 Cuda toolkit를 설치한다.
아래 링크에서 설치할 수 있다.
https://developer.nvidia.com/cuda-toolkit-archive

필자는 아래와 같이 설정하고 다운 받았다.

3. cuDNN 다운로드

ccDNN (CUDA Deep Neural Network)는 아래 링크에서 다운 받을 수 있다.
(다운로드를 위해서는 로그인을 해야한다.)

https://developer.nvidia.com/rdp/cudnn-download

다음과 같은 순서로 다운 받을 수 있다.

다운 받은 zip 파일의 압축을 풀면 다음과 같은 구성으로 되어있다.

이 폴더들 (bin, include, lib )을 아까 CUDA toolkit 폴더에 넣는다.
CUDA toolkit을 설치할 때 따로 경로를 설정하지 않았다면
C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7 경로에 있을 것이다.

4. zlibwpi.dll 설치 (optional)

아래 코드를 다시 입력해보면 tensorflow가 GPU를 잡은 것을 확인할 수 있다.

✏️ 입력
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
📖 출력
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 14695646222921927424
 xla_global_id: -1,
 name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 9895735296
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 6758199501102474779
 physical_device_desc: "device: 0, name: NVIDIA GeForce RTX 3060, pci bus id: 0000:23:00.0, compute capability: 8.6"
 xla_global_id: 416903419]

이제 Tensorflow에서 GPU 자원을 이용할 수 있다.

하지만 만약 tensorflow를 import 할 때 커널이 죽는 현상이 생기거나
중간에 Could not locate zlibwapi.dll. Please make sure it is in your library path!
이런 오류가 발생한다면 zlibwpi.dll 파일이 없어서 그런 것일 수도 있다.
해당 파일은 CUDA toolkit의 bin 폴더 안에 있어야 한다.
(필자의 경우에는 C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin)

zlibwpi.dll 파일 다운로드 및 경로 세팅은 아래 블로그를 참고하였다.
https://vuzwa.tistory.com/entry/Machine-LearningCould-not-locate-zlibwapidll-Please-make-sure-it-is-in-your-library-path-%EC%98%A4%EB%A5%98-zlibwapidll

0개의 댓글