파이토치 설치를 위한 CUDA + cuDNN 설치(cuda toolkit 11.3.0, cudnn v8.2.0) + CUDA 버전 바꾸기
내 소감 :
지난 몇달간 텐서플로우로 논문구현을 하려고 얼마나 애를 썼는지 모른다. 텐서플로우로 논문을 구현하려면, cuda 와 cudnn 모두 설치해줘야 했다. 한동안 열심히 여러차례 시도해봤지만, 검색도 해보고 주변에 물어봤을때, 반응을 보니, 아무래도 텐서플로우 버전2 부터 cuda, cudnn 와 연관된 패키지 이슈가 해결되지 않고 있는 것 같다. 결국 현업자분께도 물어봤는데, 그 분도 텐서플로우는 안쓰고 파이토치를 쓰신다는 말을 듣고, 텐서플로우는 과감히 포기했다. 앞으로 파이토치로 논문 구현을 하려고 한다.
여기서 필자는 CUDA 11.3.0 , cuDNN v8.2.0 으로 설치했다.
참고한 사이트 :
- https://dreamfuture.tistory.com/43
- https://ghostweb.tistory.com/839
내 노트북 시스템 사양 :
- OS : 윈도우10
- GPU : nvidia GeForce GTX 1050
기본 가정:
- anaconda 가상환경을 사용하고 있다는 것을 전제로 한다. (anaconda 관련된 것은 모르면 검색하길 바란다.)
파이토치를 설치하기에 앞서서, 우선, 파이토치 홈페이지에 가서 Get Started 를 누르면 :

이제 여기서, 내 노트북 시스템 사양에 맞춰서, PyTorch Build 랑 Your OS, Package, Language, Compute Platform 각각 맞는것을 선택해서 클릭한다. 그러면, 맨 아래에 위 사진처럼 conda install .. 어쩌구... 하는 command 가 보이게 된다. 이제 이걸 복사해서 터미널에 붙여서 넣어서 실행하면 된다.
그런데, 여기서 필자가 파악한 바로는, CUDA 10.2 랑 CUDA 11.3 밖에 선택이 안되는 것 같다. 사이트 내에서 다른 버전을 선택하는 방법이 있나 찾아봤는데, 못찾겠다. 그래서 CUDA 10.2 나 CUDA 11.3 을 설치하기로 마음 먹었다.
파이토치를 설치하기 전에, 먼저 CUDA 10.2 또는 CUDA 11.3 을 설치하러 가자.
그래픽카드 확인:
CUDA 10.2 를 설치할지, CUDA 11.3 을 설치할지 아직은 모르겠다. 이제 내 컴퓨터에 장착된 그래픽카드(GPU) 종류에 맞는 CUDA 버전을 찾아야 한다. 내 컴퓨터에 장착된 GPU가 어떤 종류인지 파악하러 가자.
제어판에 있는 장치 관리자를 열자. (키보드의 윈도우 키를 누르고, "장치 관리자" 라고 검색하면 바로 뜬다.)

필자는 위와 같이 NVIDIA GeForce GTX 1050 이라는 그래픽카드가 설치되어 있었다.
compute capability:
이제 GPU 모델이 뭔지 확인했으니, NVIDIA 홈페이지에 가서 compute capability 라는 것을 확인해야 한다.
compute capability 는 GPU의 연산능력을 나타내는 값이다. 이 값에 따라 내 컴퓨터에 설치해야하는 CUDA 버전이 달라진다.
아무튼 일단, 필자의 NVIDIA GeForce GTX 1050 그래픽카드는 compute capability 가 얼마인지 확인해보자.
compute capability 를 확인하러 이 사이트에 가보면 -> https://developer.nvidia.com/cuda-gpus

여기에 여러 그래픽카드의 모델명이 나온다. 더 아래로 내려가보면,

여기 GeForce GTX 1050 모델은 Compute Capability 가 6.1인 것을 확인할 수 있다.
wikipedia CUDA GPUs supported:
자 이제, 내 GPU의 compute capability 를 알았으니, 여기에 맞는 CUDA 버전을 확인하러 가보자.
https://en.wikipedia.org/wiki/CUDA#GPUs_supported
여기 위키피디아 CUDA 문서에 가보면, GPU supported 라는 항목이 있다.

이것을 보니, compute capability 가 6.1 이면, 위에 형광펜 표시 한 것과 같이, CUDA 8.0, CUDA 9.0, CUDA 10.0 - 10.2, CUDA 11.0, CUDA 11.1 - 11.6 모두 사용 가능한 것 같다. 파이토치를 사용하기 위한 CUDA 10.2 또는 CUDA 11.3 중에서, 필자는 CUDA 11.3 을 선택했다.
CUDA 설치 (윈도우 편) :
cuda download 라고 검색하면,

라고 나올텐데, 이 사이트에 들어가면,

아마 가장 최신 CUDA 버전으로 설치하도록 화면이 나올 것이다. 그런데, 이거 그대로 설치하면, CUDA11.6으로는 현재시점에선 파이토치를 사용할 수가 없다.(현재시점:2022년3월8일) 그래서 아래 오른쪽에 보면, Archive of Previous CUDA Release 를 클릭한다.

필자는 여기서 CUDA Toolkit 11.3.0 을 클릭했다.
CUDA 11.3 didn't work for Ubuntu 20.04.5, in my case.
CUDA 11.6 worked for Ubuntu 20.04.5.
그럼 다음 화면으로 넘어간다.

필자는 윈도우 10 이고, 노트북에 local 한 환경에서 CUDA 를 사용할 것이기 때문에, 위와 같이 선택하고, 맨 아래 오른쪽의 Download 를 클릭했다.

그렇게 다운로드한 exe 설치파일을 실행시킨다. 필자는 귀찮아서, 초기설정 되어 있는대로, 다 설치했다.
+ cuda_11.3.0_465.8... 설치파일 설치과정

ok 누른다.


동의 및 계속 을 누른다.

초기 설정 그대로 두고(빠른 설치로 체크된 채로 두고), 다음 을 누른다.

cuDNN 설치 (윈도우 편) :
앞서 설치했던 CUDA 버전에 맞는 cuDNN 버전을 설치해야 한다.
구글에 cudnn 라고 검색한다.

NVIDIA cuDNN 을 클릭한다.

Download cuDNN 을 클릭한다.(여기서 아마 엔비디아 계정으로 로그인해야 할 것이다. 계정이 없으면 회원가입 하길 바란다.)

체크한다.

아래에 있는 Archived cuDNN Releases 클릭한다.

필자는 CUDA 11.3 을 설치했다. 위에 11.x 라고 표시된 두개 중 하나를 선택하면 되었다. 즉, cuDNN v8.2.1 또는 cuDNN v8.2.0을 선택하면 된다. 필자는 cuDNN v8.2.0 을 선택했다.

필자는 윈도우10 환경이었으므로, 위 사진과 같이 cuDNN Library for Windows [x86] 를 클릭했다.

그러면, 위와 같이 압축폴더가 다운로드 된다.
다운로드가 완료되면, 압축을 풀고, 압축해제된 폴더를 열어본다.

그 안에 보면, cuda 라는 폴더가 있다. 이것도 열어본다.

그 안에 보면, bin , include, lib 폴더들이 있다. 이제 이 폴더들을 CUDA 가 설치된 위치에 같이 덮어쓰면서 넣어주어야 한다.
필자 같은 경우에는, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3 폴더 안에, 다음과 같이 먼저 설치했던 CUDA 관련 파일들이 들어있었다.

이제, cuDNN 다운받아서 압축풀었던 폴더안의 bin, include, lib 폴더들을 복사해서, CUDA 폴더안에 붙여넣기를 하면, 덮어쓸수 있다.

이제 CUDA 와 cuDNN 설치가 완료되었다.
CUDA 설치 (리눅스 편)
0. 구글에 "cuda download" 를 검색한다. CUDA Toolkit Archive 를 클릭한다. (링크 : https://developer.nvidia.com/cuda-toolkit-archive)
1. 설치할 CUDA 버전을 클릭한다. (필자는 CUDA Toolkit 11.7.0 을 클릭함.)

2. 현재 자기 상황에 맞게 선택한다. (필자는 Linux, x86_64, Ubuntu, 20.04, deb(local 파일로 설치하는 방식) 을 선택했다.)
3. 그리고 아래 사진처럼 Base Installer 의 Installation Instructions 가 알려주는대로, 터미널을 새로 열어서 명령어를 수행한다.

cudnn 설치 (리눅스 편) : 리눅스에서는 위와 같이 폴더들을 드래그앤드랍 하는 방식으로 하지 않는다. 대신 약간 다르다. (cuda, cudnn 설치 방법 자체는 크게 다르지 않은 듯)

구체적인 상황에 따라 아래 명령어는 조금씩 달라질수 있다. 필자는 cuda 11.7 버전을 사용했다.
$ tar -xvf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz
#cudnn.h 파일을 복사한다.
$ sudo cp ./cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive/include/* /usr/local/cuda-11.7/include
( 또는 $ sudo cp ./cuda/include/* /usr/local/cuda-11.7/include )
#라이브러리 파일 복사 시, 옵션 -P 를 붙여서 심볼릭 링크가 깨지지 않도록 한다.
$ sudo cp -P ./cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive/lib/* /usr/local/cuda-11.7/lib64/
( 또는 $ sudo cp -P ./cuda/lib64/* /usr/local/cuda-11.7/lib64 )
#모든 사용자에게 라이브러리 실행권한을 부여한다.
$ sudo chmod a+r /usr/local/cuda-11.7/lib64/libcudnn*
( 또는 $ sudo chmod a+r /usr/local/cuda-11.7/lib64/libcudnn* )
2. PATH
다음 링크 참고 : https://ghostweb.tistory.com/832
다음 캡쳐사진과 같이, ~/.profile 파일을 열고 그 안에 아래의 PATH 를 추가한다.
아래 사진은 cuda 10.1 버전을 기준으로 PATH 가 작성되었다. 각자 자신의 cuda 버전에 맞게 PATH 를 추가해주면 될 것 같다. (필자는 노트북에 cuda 11.7 버전을 설치했으므로, PATH를 cuda-11.7 으로 고쳐서 작성하였다.)

3. 재부팅
재부팅해야 cudnn 을 인식한다.
error
https://bluecolorsky.tistory.com/52
pytorch 설치 (윈도우, 리눅스 공통) :
다시 돌아와서, 이제 파이토치를 설치해보자. (https://pytorch.org/get-started/locally/)
(Note : 주의사항. 현재시점(2023-03-19)에서 pytorch 2.0 버전이 나왔다. 그런데, pytorch.org 에선 install previous versions of PyTorch 라고 해서, 기존의 1.xx 버전도 설치할 수 있도록, 링크를 만들어 두었다. 그런데, 여기 나온 터미널 커맨드가 조금 이상하다. 관리가 제대로 안되고 있는듯. 필자는 현재(2023-03-19) 1.13.0 버전을 설치하려고 링크에서 알려준대로 conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -nvidia 를 쳤더니, 에러가 발생했다. 이걸 conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -c nvidia 으로 끝부분만 바꿔보니, 설치가 되었다. 1.xx 버전 설치용 터미널 명령어가 제대로 작성되어있지 않은 것 같다. )

필자 환경에 맞춰서, 위와 같이 선택하고, 아래 적힌 명령어를 복사한다.
이제 anaconda prompt 를 연다.
$ conda create -n torch python=3.9 를 실행해서, torch 용으로 torch 라는 이름의 conda 가상환경을 만들어준다. (파이썬은 그냥 비교적 최신인 3.9 로 설치했다.)
$ conda activate torch 를 실행해서, 방금 만든 torch 라는 이름의 가상환경을 켠다.
이제 위에서 복사한 pytorch 설치용 명령어를 터미널에 입력한다. 이제 pytorch 가 설치될 것이다.
pytorch 정상 설치 여부 체크:
설치가 완료되면, pytorch 가 잘 설치되었는지 확인하자.
$ conda activate torch 를 실행해서, torch 가상환경을 켠다.
$ python 를 실행해서, 파이썬 인터프리터를 켠다.
>>> import torch 를 입력해서, torch 모듈을 import 한다. (이때 에러가 안뜨면, pytorch 설치가 잘 된것이다.)
>>>torch.cuda.is_available() 를 실행해서, GPU를 사용할 준비가 되었는지 체크한다. (이때, True 가 출력되면, CUDA와 cuDNN, pytorch 모두 잘 설치되었고, GPU를 사용할 준비가 되었다는 것이다. 만약 False 가 출력되면, 뭔가 문제가 있는 것이다.)

CUDA 버전 바꾸기
참고 링크 :
http://jonghoonp.blogspot.com/2019/08/cuda.html
딥러닝 학습을 위해 우분투 CUDA 버전 바꾸기
딥러닝 학습을 위해 우분투 CUDA 버전 바꾸기 pytorch나 tensorflow를 이용하다보면 버전에 따라 맞는 CUDA 버전도 같이 바꾸어 줄 필요가 있다. 바꾸는 방법은 굉장히 간단하다. 1. CUDA 설치 본 블로그에
jonghoonp.blogspot.com