본문 바로가기

공부기록/ML&DL

[configuration] CUDA & cuDNN 설치 - WINDOWS, UBUNTU

당연한 이야기겠지만 M1 맥북에 torch 조합은 CUDA 가속이 안 된다.

그래도 어거지로 사용해보려고 했는데 kaggle 데이터셋을 가지고 학습해보니 말도 안되는 시간(...)이 소요되어

원활한 학습을 위해 최근에 새로 장만한 겜트북에 CUDA/cuDNN를 설치하고 그 과정을 정리해 보았다.

+ 어쩌다보니 우분투 서버에도 설치해야 해서 우분투 내용까지 추가함!

 

* 여담이지만 오랜만에 윈도우 OS를 다뤄보니 리눅스가 훨씬 쉬운 것 같다.;

아니 윈도우는 자동으로 패스 설정도 해주니까,, 그냥 내가 좀 이상한 것 같다;

 

1. 그래픽 카드(GPU) 확인

장치 관리자에서 모델명을 확인하는 방법도 있고, CPU-Z와 같은 서드파티 앱을 사용해도 된다.

나는 랩탑 구매 전 미리 GPU를 체크하고 구매했으므로 dxdiag로 구경만 해 봄.


더보기
2060땐 laptop용이라고 표시가 안 되어 있던 것 같던데 신기방기하다.

GPU를 확인하는 이유는 compute capability를 확인하기 위함이다.

이 수치와 호환되는 버전의 CUDA를 설치해야 하니까..

 

* 하단 링크를 클릭해서 관련 내용을 확인할 수 있다.

 

CUDA GPUs

Your GPU Compute Capability Are you looking for the compute capability for your GPU, then check the tables below. NVIDIA GPUs power millions of desktops, notebooks, workstations and supercomputers around the world, accelerating computationally-intensive ta

developer.nvidia.com

더보기

우분투의 경우 아래와 같은 스크립트를 사용하거나 GUI(설정 - 디스플레이?)로 확인할 수 있다.

lshw -C display

 

Output:

  *-display                 
       description: VGA compatible controller
       product: TU104GL [Quadro RTX 4000]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: iomemory:600-5ff iomemory:600-5ff irq:147 memory:a0000000-a0ffffff memory:6000000000-600fffffff memory:6010000000-6011ffffff ioport:3000(size=128) memory:a1000000-a107ffff
  *-display
       description: Display controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 05
       width: 64 bits
       clock: 33MHz
       capabilities: bus_master cap_list
       configuration: driver=i915 latency=0
       resources: iomemory:600-5ff iomemory:400-3ff irq:146 memory:6013000000-6013ffffff memory:4000000000-400fffffff ioport:4000(size=64)

 

* GPU 이름이 제대로 보이지 않거나 하는 경우 그래픽 드라이버를 설치한 후 재부팅(2번 항목 참고)


2. Nvidia 그래픽 드라이버 & CUDA Toolkit 설치

최근에 바뀐건지 모르겠는데 Game Ready Driver와 같이 설치할 수 있는 Geforce Experience 앱으로 손쉽게 그래픽 드라이버를 설치할 수 있다.


더보기

아래 링크를 방문해서 다운로드 후 실행하면 알아서 설치해 줌. 

 

Advanced Driver Search official NVIDIA drivers

Advanced Driver Search official NVIDIA drivers

www.nvidia.com

 

CUDA Toolkit의 경우 현재 11.6 버전*까지 출시되었으나, 1번에서 언급한 compute capability 수치 이외에도 본인이 사용하고자 하는 딥 러닝 프레임워크와 호환되는지 확인하는게 좋고, pytorch stable 버전은 10.2 혹은 11.3 버전 CUDA만 지원**되는 상황. (*, **: 해당 포스트 작성일 기준)

 

아래 첨부된 툴킷 아카이브에서 원하는 버전으로 다운받으면 된다.

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

클릭만 몇번 하면 되니까 매우 편하다.

 

* 추가적으로 PATH(환경변수) 설정을 해 주어야 하는데, 윈도우는 저렇게 설치하고 나면 알아서 잡아준다,,

그래도 확인하고 싶다면 시스템 환경 변수 편집 > 환경 변수 탭에서 등록 여부를 체크하면 된다.

CUDA_PATH + CUDA_PATH_V[버전번호] 두 개의 PATH가 자동으로 등록되어 있다.
더보기
드라이버 자동 설치 또는 설치 가능한 드라이버 검색 후 수동으로 설치
sudo ubuntu-drivers autoinstall # 권장되는 드라이버 설치​


드라이버 목록 확인 및 수동 설치
ubuntu-drivers devices # 설치 권장되는 드라이버의 경우 리스트 옆에 recommended가 표시됨

# apt repository 추가
sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt-get update

# 드라이버 수동 설치
sudo apt-get install nvidia-driver-000 # 000: driver version number​


수동으로 설치시 CUDA가 같이 딸려서 설치되는 경우도 있으며,
nvidia-smi​

 

로 드라이버 설치 여부 및 버전을 확인할 수 있다.

우측 옆에 있는 CUDA Version은 권장되는 CUDA 버전일 뿐 설치되었다는 것은 아님,,


설치 전 nouveau 비활성화 과정이 꼭 선행되어야 한다!!! 
빼먹으면 로그인 창에서 계속 돌고도는 컴퓨터를 볼 수 있음(...)

위의 과정을 진행 후 CUDA Toolkit을 설치하면 되며, 방법은 윈도우와 비슷하다.
윈도우와 비슷하게 맞는 환경 클릭한 후 Installation Instructions의 스크립트를 터미널에 복붙하면 된다.



툴킷 설치가 완료되었다면 PATH 설정을 위해 .bashrc 혹은 bash_profile에 아래와 같은 내용 추가
export PATH="/usr/local/cuda-[00.0]/bin:$PATH" # CUDA, 00.0: version number

# Multi GPU 환경에서 특정 GPU에만 메모리를 할당하고 싶은 경우
export CUDA_DEVICE_ORDER="PCU_BUS_ID"
export CUDA_VISIBLE_DEVICES=0​

3. cuDNN 설치

설치라고 했는데 그냥 압축파일 다운로드 - 압축해제 - 파일 복사(혹은 이동)만 하면 된다.

로그인을 하지 않으면 파일을 다운로드 받을 수 없다. ;;


더보기

아래 cuDNN 아카이브에서 CUDA 버전과 매칭되는 파일을 골라서 다운로드 하면 된다.

 

cuDNN Archive

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

developer.nvidia.com

압축 파일을 다운로드 받으면 아래 좌측 사진과 같이 폴더 세 개와 텍스트 파일이 있는데,

텍스트 파일은 무시하고 폴더 안에 있는 내용물(혹은 폴더째)을

CUDA 툴킷 설치시 확인했던 CUDA_PATH의 같은 이름을 가진 폴더로 복사하거나 이동하면 된다.

bin / include / lib 내용물을 각각 CUDA_PATH의 하위 bin / include / lib 안에 복사해주면 설정 완료됨.
더보기
우분투의 경우도 크게 다르지 않으며, PATH 설정을 위해 .bashrc 혹은 bash_profile에 맨 밑줄과 같은 내용을 추가
### cudnn > tar -xvf로 압축 해제 후 cuda 디렉토리에 들어가서..
sudo cp include/cudnn* /usr/local/cuda-11.4/include
sudo cp lib64/libcudnn* /usr/local/cuda-11.4/lib64
sudo chmod a+r /usr/local/cuda-11.4/lib64/libcudnn*

### bash에 추가
export LD_LIBRARY_PATH="/usr/local/cuda-[00.0]/lib64:$LD_LIBRARY_PATH" # cuDNN, 00.0: version number​

 

이후 다음과 같은 명령어를 사용하여

source ~/.bashrc # or bash_profile

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # cuDNN version header (for cuDNN 8.X)

 

아래와 같은 결과물이 나오는지 확인하면 된다.

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 3
#define CUDNN_PATCHLEVEL 2
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#endif /* CUDNN_VERSION_H */​

3. 정상 작동여부 확인

CMD 창으로 CUDA 툴킷 설치 여부를 체크하거나,

주로 사용하는 프레임워크로 GPU가 정상적으로 감지되는지 확인하면 된다.


더보기

pytorch의 경우 아래와 같이 간단하게 확인할 수 있다.

import torch

device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
print(device)

 

정상적으로 감지되었을 경우 다음과 같은 아웃풋이 출력된다.

device(type='cuda', index=0)

 

+ 기타 트러블슈팅은 설치 과정 중 생길때마다 정리 및 추가 중