필자의 환경은 다음과 같다.
<Environment>
Graphic Card: NVIDIA GeForce RTX 3060
Python: 3.8.16
Tensorflow: 2.7.0
✏️ 입력
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]
📖 출력
name: "/device:GPU:0"
1. NVIDIA GPU driver 설치
2. CUDA Toolkit 설치
3. cuDNN 다운로드
4. zlibwapi.dll (optional)
하나씩 살펴보자.
아래 링크에서 본인의 GPU에 맞는 드라이버를 설치한다.
https://www.nvidia.com/download/index.aspx?lang=en-us
필자는 아래와 같이 설정하여 다운 받았다.
다운을 받고 설치를 완료한 후 cmd 창을 열고 nvidia-smi
명령어를 입력하면
설치가 잘 되었는지 확인할 수 있다.
CUDA version은 11.7이다.
cmd의 nvidia-smi
명령어로 확인한 CUDA version에 맞게 Cuda toolkit를 설치한다.
아래 링크에서 설치할 수 있다.
https://developer.nvidia.com/cuda-toolkit-archive
필자는 아래와 같이 설정하고 다운 받았다.
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
경로에 있을 것이다.
아래 코드를 다시 입력해보면 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