Nvidia driver, CUDA, cuDNN, TensorFlow 버전 호환성 맞추기
AI/Configuration

Nvidia driver, CUDA, cuDNN, TensorFlow 버전 호환성 맞추기

 Pytorch를 사용하다가 Tensorflow2를 사용하게 되었는데, "GPU 드라이버, CUDA, cuDNN, TensorFlow"의 버전 호환성이 안 맞는 문제가 계속 발생했어요.... 느낌 상 TF가 유독 까다로운 것 같아요... ㅠ 텐서플로우 버전 호환성 맞추기 시작합니다.

 

서론

 저는 Linux Ubuntu 18.04에서 GeForce RTX 3090을 사용하고 있습니다. 인공지능을 학습하기 위해 TensorFlow2와 Keras를 사용하고 있고, 이 라이브러리를 사용하면서 겪었던 버전 호환성의 문제를 기록해보려고 합니다. 

 우선, TensorFlow나 pytorch와 같은 라이브러리가 GPU를 사용하기 위해 설치해야 할 것이 무엇인지 간략히 설명드려보겠습니다.

 첫 번째로, OS에서 GPU를 읽을 수 있도록 1. 드라이버를 설치합니다. 두 번째로, TensorFlow와 같은 라이브러리를 이용한 사용자의 명령들을 GPU에 할당하기 위해 2. CUDA와 cuDNN을 설치합니다. 마지막으로 3. TensorFlow를 설치하면, TF로 코딩한 인공지능 알고리즘을 GPU에 할당 시킬 수 있습니다. 이러한 설치 과정에선, 서로 버전 호환성이 맞아야 최적화된 상태로 학습을 진행할 수 있게 됩니다. 그래서 이번 포스팅은 서로 어떤 버전을 사용해야 최적화된 상태에서 학습을 진행할 수 있는지 확인해보겠습니다.

 

먼저 Nvidia GPU 드라이버를 설치한 후, 드라이버의 버전에 맞춰서 CUDA 버전을 정할 것이고, 그 다음 cuDNN과 TensorFlow버전을 선택하려고 합니다.

 


반응형

1. 컴퓨터에서 GPU를 인식했는지 확인하고, 그 GPU에 최적화된 드라이버 버전을 확인하기

ⓐ lshw -C display: 컴퓨터에 인식된 GPU 정보(GPU가 물리적으로 잘 설치되었는지 확인할 수 있음)

user01@user01-latest:~$ lshw -C display
WARNING: you should run this program as super-user.
  *-display
       description: VGA compatible controller
       product: NVIDIA Corporation
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:19:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: irq:112 memory:b4000000-b4ffffff memory:a0000000-afffffff memory:b0000000-b1ffffff ioport:7000(size=128) memory:b5000000-b507ffff

위와 같이 나오면, GPU를 인식한 것

ⓑ sudo ubuntu-drivers devices: 자신의 GPU에 맞는 드라이버를 추천해줌

user01@user01-latest:~$ sudo ubuntu-drivers devices
[sudo] password for user01:
== /sys/devices/pci0000:16/0000:16:00.0/0000:17:00.0/0000:18:10.0/0000:1a:00.0 ==
modalias : pci:v000010DEd00002204sv000010DEsd00002204bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-495 - distro non-free recommended
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-470 - distro non-free
driver   : nvidia-driver-460-server - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

nvidia-driver-460 이상의 버전이 추천된 것을 확인

 

2. GPU 드라이버에 맞는 CUDA 버전 확인

(클릭) GPU Driver와 CUDA 버전 호환성 확인

위에서 nvidia-driver-460 이상의 버전이 추천된 것을 확인했으므로

표를 보고 nvidia-driver- 495 or 470 or 460에 맞는 CUDA 버전을 확인하면 됨

CUDA 11.2.0 이상의 버전을 사용할 수 있음.

 

3. 확인한 CUDA 버전에 맞게 cuDNN과 TensorFlow 버전을 선택

Mac / Linux: https://www.tensorflow.org/install/source#gpu

Windows:  https://www.tensorflow.org/install/source_windows#gpu

위에서 CUDA 11.2 이상을 설치할 수 있는 것을 확인했으므로

tensorflow-2.5.0과 cuDNN 8.1 이상 버전을 설치하면 된다고 판단할 수 있음

 

최종 환경

Linux Ubuntu 18.04 / GeForce RTX 3090를 사용하는 서버에서

NVIDIA Driver = 460.91.03

cuDNN = 8.1.1

CUDA = 11.2

TensorFlow = 2.6.0 ( Keras = 2.6.0)

을 사용하기로 함

 


나름의 팁

 1-ⓑ의 recommended된 nvidia-driver-495은 가장 최신의 드라이버가 추천된 것입니다. keras, caffe와 같은 다른 라이브러리에선 최신 드라이버에 맞는 성능을 지원하지 않을 수 있습니다. 따라서, 무조건 최신 드라이버를 설치하는 것 보다, 내 GPU에 맞는 적당한 드라이버를 선택해서 범용 있게 선택하는 것이 좋아 보입니다.

 

지금까지, 내 GPU에 맞는 드라이버와 툴킷들의 버전을 확인했지만, TensorFlow2에서 요구하는 최소 버전이 있습니다. 최소한 아래 조건은 맞춰야 TF2를 사용 가능합니다. 

이러한 사항은 (클릭)Tensorflow_software_requirements 에서 확인하세요.

'AI > Configuration' 카테고리의 다른 글

인공지능 학습을 위한 TensorFlow 환경 설계  (0) 2021.11.16