3. 기타 등등

Tensorflow 2.4.1 Nvidia GPU(RTX 3090)로 학습 방법 - Windows 10에서 CUDA 11.0 설치, cudnn

M_AI 2021. 10. 20. 10:04

안녕하세요! M_AI 입니다!

이번 포스팅은 Nvdia GPU인 RTX 3090Windosw 10 환경에서 Tensorflow 2.4.1 버전을 설치하는 방법을 소개해드리겠습니다.

본 게시글은 koos808 님의 Tstory에 포스팅한 내용을 기반으로 하여 설치를 설명하도록 하겠습니다.

티스토리 : https://koos808.tistory.com/41

[동작 확인]Windows10 RTX 3090 3080 Cuda, Cudnn, Tensorflow 데스크탑 Setting

연구실 컴퓨터 그래픽카드를 RTX 2080 TI에서 RTX 3090으로 바꿔서 CUDA와 CUDNN 등 여러 호환성 문제 때문에 몇일을 고생했습니다. 몇일 고생한 뒤에 나온 tf-nightly dev버전으로 설치하니까 잘 되더라구

koos808.tistory.com

위의 티스토리 게시글에서는 많은 시행착오를 겪으며 2021년도 1월 22일을 마지막으로 최종 작동됨을 확인하셨다고 했습니다.

그래서 저도 이에 따라 설치 진행하였습니다.


1. Anaconda 설치

python 3.8인 ananconda 설치하면 된다.(21년도 08월 17일 기준 python version 3.8)

아나콘다 설치 파일 다운로드 링크는 아래에 있습니다.

https://www.anaconda.com/products/individual#windows

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

Figure 1. Windowns version Anaconda


2. cuda_11.0.3_451.82_win10

RTX 3090 에서 맞는 cuda version은 11.0.3으로, 해당 설치 파일 링크는 아래에 있으니 다운로드하여 설치하길 바랍니다.

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

CUDA Toolkit 11.0 Update 1 Downloads

Select Target Platform Click on the green buttons that describe your target platform. Only supported platforms will be shown. By downloading and using the software, you agree to fully comply with the terms and conditions of the CUDA EULA. Operating System

developer.nvidia.com


3. cuDNN 8.0.4

cudnn은 다운로드하기 위해서는 로그인을 해야합니다. 아래 사이트로 들어가셔서 로그인한 후에 cuda 11.0 버전 및 os windows10에 맞는 cuDNN 8.0.4를 다운로드하고 압축 풀면 됩니다.
https://developer.nvidia.com/rdp/cudnn-archive

cuDNN Archive

NVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.

developer.nvidia.com

Figure 2. cuDNN v8.0.4 (CUDA 11.0과 Windows10에 맞는 version)



압축 파일을 풀면 나오는 cuda 폴더가 나오는데, 내부는 figure 3와 같습니다.

1. bin 폴더 내부 파일

Figure 3. cudnn 8.0.4 압축 파일 풀고 난 후의 cuda 폴더 내부



이후 bin 폴더를 열면 figure 4과 같이 7개의 파일이 있습니다.

Figure 4. cuda/bin 폴더 내부 파일


이 파일들을 NVDIA가 설치된 디렉토리인

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

복사+붙여넣기하거나 Drag and Drop하면 됩니다.

Figure 5-1. cudnn bin 파일을 NVDIA폴더로 옮기기


2. include 폴더 내부 파일
위와 마찬가지로, include 내부 파일을

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

복사+붙여넣기하거나 Drag and Drop하면 됩니다.

Figure 5-2. cudnn include 파일 NVDIA폴더로 옮기기


3. lib 폴더 내부 파일
lib 폴더 내부에는 bin, include 폴더에 여러 파일이 존재하는 것과 다르게, 내부에 x64라는 폴더가 존재합니다.

Figure 5-3. cuda\lib 폴더 내부 파일


마찬가지로

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

에도 x64폴더가 존재합니다.

Figure 5-4. NVDIA의 lib 폴더 내부


이는 cuDNN\lib\x64 폴더에 있는 내부 파일을

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\lib\x64

복사+붙여넣기하거나 Drag and Drop하면 됩니다.

Figure 5-5. cudnn lib 파일 NVDIA폴더로 옮기기


4. tensorflow 2.4.1

cmd or Windows PowerShell or Anaconda에서 pip install tensorflow-gpu==2.4.1 설치하면 됩니다.

Figure 6. Tensorflow gpu 2.4.1 설치


이후 테스트 코드 돌리면 됩니다.

5. Test

우선 아래 코드를 돌리면 Figure 7과 같이 GPU가 setting 되었다는 결과가 나와야 합니다.

(아래 코드 출처 또한 koos808 님의 티스토리 블로그에서 가져온 코드입니다.)

import tensorflow as tf tf.__version__ # GPU Check 1 from tensorflow.python.client import device_lib device_lib.list_local_devices() # GPU Check 2 tf.config.list_physical_devices('GPU') # GPU Check 3 gpus = tf.config.experimental.list_physical_devices('GPU') for gpu in gpus: print("Name:", gpu.name, " Type:", gpu.device_type)

Figure 7. GPU set up Code 결과


그리고 아래 코드는 MNIST를 학습시키는 코드입니다.
(코드 출처 : https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ko )

import tensorflow as tf from tensorflow import keras import numpy as np print(np.__version__) print(tf.__version__) fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] train_images = train_images / 255.0 test_images = test_images / 255.0 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(train_images, train_labels, epochs=10, batch_size = 16) test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print('\n테스트 정확도:', test_acc)


이를 복사하여 실행시키면 작업관리자에서 성능 탭을 누르시면 Figure 8과 같이 GPU가 작동됨을 알 수 있습니다.

Figure 8. 작업 관리자에서 GPU 작동 확인


다름 방법으로는, cmd나 Windows PowerShell 환경에서 nvdia-smi로 확인하는 방법이 있는데

터미널에서 아래 디렉토리로 간 다음에

C:\Program Files\NVIDIA Corporation\NVSMI

nvdia-smi를 입력하면 다음 됩니다.

Figure 9에서 위는 학습 전이고, 아래는 학습 중일 때 실행시킨 것으로 사용률이 차이가 나는 것을 확인할 수 있습니다.

Figure 9. nvdia-smi로 GPU 사용여부 확인


더 나아가, 매번 경로로 접근하기 번거롭기 때문에 환경 변수로 설정하도록 합니다.

(이에 대한 방법은 아래 티스토리 블로그와 깃허브를 참고하였습니다.)
1. https://sanghyu.tistory.com/35

Window에서 GPU사용량 모니터링(nvidia-smi/ 작업 관리자)

nvidia-smi 1. cmd창 열기(명령 프롬프트) 2. nvidia-smi.exe 경로 접근 cd C:\Program Files\NVIDIA Corporation\NVSMI 3. nvidia-smi.exe 실행 nvidia-smi.exe 4. 환경변수 설정 매번 경로로 접근하기 귀찮기..

sanghyu.tistory.com


2. https://deeesp.github.io/deep_learning/dl-tips/

- '시스템 환경 변수 편집'에 들어간다.

Figure 10. Windows10 검색창에서 검색


- 경로 ( C:\Program Files\NVIDIA Corporation\NVSMI ) 추가

Figure 11. 경로 추가



- 명령창(Windows Powershell혹은 CMD창)에서 어떤 경로에 있든, nvidia-smi를 입력해도 GPU 사용확인 가능

Figure 12. 명령창에서 nvidia-smi 확인 가능


- 5초에 한 번씩 사용량 확인 방법
명령창(Windows Powershell혹은 CMD창)에서

nvidia-smi -l

를 입력한다. 이후 계속 보는 것을 중지하고 싶으면 ctrl + C 를 누르면 정지한다.

Figure 13. nvidia-smi 5초에 한 번씩 확인 방법