20.04 우분투 기반 NVIDIA GeForce RTX 3090에 CUDA, cuDNN Pytorch 설치
컴퓨터 스팩은 아래와 같으며, 오랜만에 직접 조립 했다.
몇일 써보니 호환이나 큰 문제 없이 돌아가므로 사양정보를 공유 한다.
컴퓨터 스팩
- 그래픽카드: 갤럭시 GALAX 지포스 RTX 3090 SG D6X 24GB
Widnows10, ubuntu 20.04 멀티 부팅
UEFI BIOS 모드를 기준으로 설명. Legacy 방식은 다루지 않음.
Bootable USB 제작
MAC(OSX), uBuntu에서 dd
커맨드로 제작이 가능하다. 설치 과정중 기가바이트 Z490칩셋기준으로 예기치 않은 오류가 계속 발생하여, 가장 안정적인Rufus
를 이용햇 제작함.
Widnows10 제작
참조: https://privatenote.tistory.com/67
ubuntu 20.04 제작
멀티 부팅 설정
Windows10 설치 후 ubuntu 20.04를 설치하는 것이 정신건강에 좋다. 두 경우 모두 아래의 이전 포스트에서 방법을 다루고 있음.
파티션 설정 및 오토 마운팅
ubuntu에서 3090 그래픽카드 드라이버 설치
아래와 같이 기본 우분투 소프트웨어 업데이트 도구를 이용해서 그래픽 드라이버 업데이트가 가능하다.
다만 Nouveau
드라이버는 문제가 많이므로 독접에서 제공하는 NVIDIA 드라이버로 설치한다.
설치가 완료되면 nvidia-settings
또는 아래와 같이 nvidia-smi
커맨드로 드라이버 버전과 설치된 상태를 알 수 있다.
CUDA 설치
3090은 CUDA 11.0 이상의 버전을 설치 해야한다. 20년 12월 기준 CUDA Toolkit 11.1 Update 1 Downloads
이 최신 버전이라 해당 버전을 설치한다.
우분투 이므로 아래와 같이 설정해서 다운로드 받는다.
미리 그냥 wget으로 다 받아두고 설치하는게 오류도 없고 좋다.
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run sudo sh cuda_11.1.1_455.32.00_linux.run
기존에 NVIDIA Driver가 있으므로 경고가 나온다. 일단 무시하고 진행
동의: accept 입력
CUDA 11
이상을 설치하려면 드라이버가455
버전 이상으로 맞춰야 한다.- 이전 소프트웨어 업데이트로
455.38
버전을 설치 했으므로 쿠다에 동봉된 455.32버전 설치는 하지 않도록 체크를 해제한다. - 향후에 CCUDA를 업데이트할 때 항상 그래피카드 드라이버와의 호환 버전음 참조해서 선택을 하면된다.
- 덮어씌우기 할경우 문제가 발생하므로 지금은 체크 해제한다.
환경변수 설정
CUDA 사용을 위해서 PATH
등록을 한다.runfile
을 사용 할 떄 필요한 LD_LIBRARY_PATH
도 같이 설정 한다.
vim ~/.bashrc export PATH=/usr/local/cuda-11.1/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
- 참조 공식문서: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
CUDA 설치 확인 및 예제 실행
환경 변수 설정이 끝나면 nvcc --version
을 통해서 확인 가능함.
jemin@jemin-3090:~/NVIDIA_CUDA-11.1_Samples$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2020 NVIDIA Corporation Built on Mon_Oct_12_20:09:46_PDT_2020 Cuda compilation tools, release 11.1, V11.1.105 Build cuda_11.1.TC455_06.29190527_0
CUDA 설치시 sample 코드도 같이 설치 했기에 $HOME/NVIDIA_CUDA-11.1_Samples
디렉토리에 샘플코드가 있다.
컴파일하여 실행하면 CUDA가 정상적으로 설치된 것이다.
# 예제 코드들 /NVIDIA_CUDA-11.1_Samples$ ls 0_Simple 2_Graphics 4_Finance 6_Advanced EULA.txt bin 1_Utilities 3_Imaging 5_Simulations 7_CUDALibraries Makefile common
이중 간단한 Simple 예제중 행렬 곱샘을 실행시켜 본다.
## 컴파일 jemin@jemin-3090:~/NVIDIA_CUDA-11.1_Samples/0_Simple/matrixMul$ make /usr/local/cuda/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode .. .. cp matrixMul ../../bin/x86_64/linux/release ## 실행 jemin@jemin-3090:~/NVIDIA_CUDA-11.1_Samples/0_Simple/matrixMul$ ./matrixMul [Matrix Multiply Using CUDA] - Starting... GPU Device 0: "Ampere" with compute capability 8.6 MatrixA(320,320), MatrixB(640,320) Computing result using CUDA Kernel... done Performance= 2235.81 GFlop/s, Time= 0.059 msec, Size= 131072000 Ops, WorkgroupSize= 1024 threads/block Checking computed result for correctness: Result = PASS NOTE: The CUDA Samples are not meant for performancemeasurements. Results may vary when GPU Boost is enabled.
예제들 의미 참조 (NVIDIA 공식): https://docs.nvidia.com/cuda/cuda-samples/index.html#matrix-multiplication--cuda-runtime-api-version-
cuDNN 설치
CUDA를 11.1로 설치 했으므로 이에 맞춰서 cuDNN은 8.0.5를 다운 받으며, 아래 두 가지 방법들 중 원하는 것으로 설치 한다.
- cuDNN Library for Linux(x86_64)를 선택하면 tar 압축파일을 받아서 직접 복사하여 설치 하는 방식이다.
직접 복사 방법
$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 $ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
- [Deb]파일 세개를 각각 받아서 debin package 설치법으로도 설치 할 수 있다.
Deb 페키지 설치 방법: 세 개 모두 설치 한다.
sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.1_amd64.deb sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.deb sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.1_amd64.deb
설치를 확인 하기 위해서 예제코드를 실행한다.
Deb 페키지를 이용해서 설치할 경우에만 sample코드가 정상적으로 설치된다./usr/src/cudnn_samples_v8
내부에 여러 예제들 중에서 mnistCUDNN
를 실행 한다.
cd /usr/src/cudnn_samples_v8/mnistCUDNN make clean && make ./mnistCUDNN
아래와 같이 나오면 설치가 성공한 것이다.
Resulting weights from Softmax: 0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006 Result of classification: 1 3 5 Test passed!
cuDNN 설치법 공식문서: https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-tar
Pytorch 설치 및 확인
설치
Stable(1.7.1) Pytorch 버전을 설치 했다.
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
CUDA 버전에 맞춰서 설치 하면된다. cuda를 11.1로 설치 했지만 코드들은 정상 동작한다.
공식 문서: https://pytorch.org/get-started/locally/
실행
간단하게 아래와 같이 torch가 import되고 사용가능한 cuda가 print되면 정상 설치 된 것이다.
import torch x = torch.rand(5, 3) print(x) import torch torch.cuda.is_available()
Pytorch.org/tutorials
에 가면 많은 예제들이 있고 그 중 cifar10
예제는 아래와 같다.
https://github.com/pytorch/tutorials/blob/master/beginner_source/blitz/cifar10_tutorial.py
아래와 같이 cuda:0
까지 나오면 모두 설치가 정상이다.
python3 cifar10_tutorial.py Files already downloaded and verified Files already downloaded and verified car horse dog deer [1, 2000] loss: 2.182 [1, 4000] loss: 1.810 [1, 6000] loss: 1.682 [1, 8000] loss: 1.605 [1, 10000] loss: 1.514 [1, 12000] loss: 1.516 [2, 2000] loss: 1.408 [2, 4000] loss: 1.405 [2, 6000] loss: 1.381 [2, 8000] loss: 1.346 [2, 10000] loss: 1.333 [2, 12000] loss: 1.304 Finished Training GroundTruth: cat ship ship plane Predicted: cat car car ship Accuracy of the network on the 10000 test images: 53 % Accuracy of plane : 55 % Accuracy of car : 77 % Accuracy of bird : 35 % Accuracy of cat : 39 % Accuracy of deer : 44 % Accuracy of dog : 49 % Accuracy of frog : 63 % Accuracy of horse : 56 % Accuracy of ship : 76 % Accuracy of truck : 40 % cuda:0
CVPR2020 양자화 논문 실행: https://github.com/amirgholami/ZeroQ
2080ti랑 비교하여 학습과 검증시 체감 효과는 크지는 않았다. 다른 벤치마크가 필요할 것 같다.
jemin@jemin-3090:~/development/ZeroQ/classification$ python3 uniform_test.py --dataset imagenet --model resnet50 --batch_size 64 --test_batch_size 128 ****** Full precision model loaded ****** ****** Data loaded ****** ****** Zero Shot Quantization Finished ****** Testing |################################| (391/391) | ETA: 0:00:01 | top1: 0.75844 Final acc: 75.84% (37922/50000)
문제 해결
Nouveau 드라이버 문제
- 공식문서에서 각 OS 버전별로 다루고 있으며 Disable시키고 설치하면 된다.
기존 설치 제거 방법
드라이버 삭제
- apt --installed list | grep nvidia-driver
- -> sudo apt remove --autoremove nvidia-*
-> sudo apt remove --autoremove nvidia-cuda-toolkit
'AI > TensorFlow, PyTorch, Keras, Scikit' 카테고리의 다른 글
TensorFlow GPU (RTX 2080ti)버전 우분투 18.04 설치 하기 (1) | 2019.05.03 |
---|---|
윈도우 GPU tensorflow 설치 및 그래픽카드별 성능 비교 (55) | 2019.05.03 |
Jupyter에 conda env. 추가하기 (0) | 2018.08.05 |
TensorFlow를 공용 GPU에서 사용 할 때 메모리 절약 방법 (0) | 2018.08.02 |
TensorFlow GPU 버전 우분투 16.04에 설치 하기 (10) | 2018.07.31 |