본문 바로가기

Programming

우분투(Ubuntu)에서 GPU 사용 설정 - Pytorch 사용

참고: 컴퓨터에서 GPU 사용이 설정되어 있는 경우에도, Anaconda 가상환경을 사용 중이라면 Anaconda 가상환경에 접속해서 아래 과정을 통해 다시 설정해야 함.

 

Contents

- 우분투에서 Pytorch 용 GPU 사용 설정 방법

- [후속조치] Error: NVIDIA GeForce RTX 3080 Ti with CUDA capability sm_86 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75  compute_37.

- Code 내에서 GPU 로 Complie 하도록 설정 방법

- CUDA Version 확인 시, nvcc -version 과 nvidia-smi 가 다른 이유

- GPU 사용량 확인 방법

-------------------------------------------------------------------------------------------------------------------------------------------------------------

 

우분투에서 Pytorch 용 GPU 사용 설정 방법

1. CUDA Version 확인: 터미널에서 "nvcc --version" 명령어 실행

2. Pytorch Site 접속하여 Pytorch 설치

1) https://pytorch.org/get-started/locally/

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

2) "Run this Commend" 의 명령어 실행

   2-1) 만약, CUDA Version이 없다면 (나의 경우, CUDA = 10.1 인데 선택할 수 없었음), 3)번으로 이동

3) 아래 사이트 접속해서 CUDA = 10.1 찾아서 해당 명령어 실행

   https://pytorch.org/get-started/previous-versions/

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

 

# CUDA 10.1
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch

4) 설치 확인

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

[후속조치] GPU가 현 Pytorch 버전에 호환되지 않음

1. Pytorch 버전을 높이기 위해서는 Cudatoolkit의 버전을 높일 필요가 있음.

2. Cuda Version 확인 결과

   1) nvcc --version (Runtime API): 10.1

   2) nvidia-smi (Driver API): 11.7

3. Runtime API version을 높이기로 결정하고, cudatoolkit = 11.7을 설치 (https://developer.nvidia.com/cuda-toolkit-archive)

https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=runfile_local 

 

CUDA Toolkit 11.7 Downloads

Resources CUDA Documentation/Release NotesMacOS Tools Training Sample Code Forums Archive of Previous CUDA Releases FAQ Open Source PackagesSubmit a BugTarball and Zip Archive Deliverables

developer.nvidia.com

 4. Cudatoolkit = 11.7 설치 중, 기존 버젼을 삭제하라는 경고문 나와서 취소 후 기존 버젼 삭제 후 다시 설치 함.

5. 결과

   1) nvcc --version (Runtime API): 11.7

   2) nvidia-smi (Driver API): 11.7

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

Code 내에서 GPU 로 Complie 하도록 설정 방법1

1. Device(GPU) 설정 및 GPU 정보 확인

import torch

# device 설정
check_cuda = torch.cuda.is_available()
device = torch.device('cuda:0' if check_cuda else 'cpu')

# device 정보 확인
print('Processor:', device)
print('cuda index:', torch.cuda.current_device())
print('gpu 개수:', torch.cuda.device_count())
print('graphic name:', torch.cuda.get_device_name())

2. GPU를 사용하고자 하는 곳에 ".to(device)"를 붙여 줌

예) x_test = mnist_test.test_data.view(-1, 28*28).float().to(device)

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

Code 내에서 GPU 로 Complie 하도록 설정 방법2

1. 코드 내에서 아래와 같이 선언해 줌

import os

os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="0"

2. 그 외, 여러 GPU에 python code 할당

https://dongjinlee.tistory.com/entry/%EC%84%A0%ED%83%9D%ED%95%9C-GPU%EC%97%90%EB%A7%8C-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A0%EB%8B%B9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

선택한 GPU에만 메모리 할당하는 방법

출처: https://www.tensorflow.org/tutorials/using_gpu Issue: multi-GPU 시스템에서 tensorflow를 실행할 경우 하나의 GPU에서 코드가 실행되게 프로그래밍을 해도 모든 GPU에 메모리를 할당한다. 이는 위의 출처에 가

dongjinlee.tistory.com

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

CUDA Version 확인 시, nvcc -version 과 nvidia-smi 가 다른 이유

1. CUDA는 2개의 Primary APIs를 가짐

    1) Runtime API: CUDA toolkit installer에 의해 설치 (e.g. libcudart.so on linux / nvcc)

    2) Driver API: GPU driver installer에 의해 설치 (e.g. libcuda.so on linux / nvidia-smi)

2. 만약, GPU driver를 Bundle로 설치하지 않고 독립적으로 설치했다면 Version의 차이가 발생

3. 일반적으로 nvidia-smi (Driver API) 버전이 nvcc - v (Runtime API) 버전과 같거나 더 높음. 일반적으로 Newer Driver API가 old CUDA toolkit을 지원하므로 문제가 되지 않음.

 

참고:

https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

실시간 GPU 사용량 확인 방법

- 시작: 1초마다 갱신 (1을 0.5로 바꿔주면 0.5초마다 갱신된다.)

watch -n 1 nvidia-smi

- 종료: Ctrl+C

- 각 Parameter 해석은 아래 링크 참조

https://kyumdoctor.co.kr/10

 

NVIDIA-SMI 확인방법 및 활용하기

NVIDIA-SMI 확인방법 및 활용하기 nvidia-smi 옵션 사용법 nvidia gpu를 사용하기 위해서는 nvidia에서 제공하는 GPU Driver를 각각의 os에 맞게 설치해야 한다. 드라이버 설치에 성공하고 가장 먼저 사용하는

kyumdoctor.co.kr