일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Statics
- 우분투
- 딥러닝
- Zotero
- Python
- 에러기록
- Julia
- teps
- IEEE
- pytorch
- Linear algebra
- 옵시디언
- Numerical Analysis
- 논문작성
- 텝스공부
- LaTeX
- 생산성
- 고체역학
- obsidian
- Dear abby
- ChatGPT
- MATLAB
- 텝스
- 수치해석
- 인공지능
- WOX
- 논문작성법
- JAX
- matplotlib
- 수식삽입
- Today
- Total
뛰는 놈 위에 나는 공대생
[인공지능] Ubuntu 18.04에서 CUDA, CuDNN 설치 본문
[인공지능] Ubuntu 18.04에서 CUDA, CuDNN 설치
보통의공대생 2023. 4. 16. 18:15이번에 리눅스 환경에서 CUDA, cuDNN을 설치하면서 있었던 시행착오를 기록하는 글이다.
기본적으로 Linux 환경에서 설치하는 방법은 매뉴얼에 잘 나와있어서 이 링크를 참고하면 되기는 하는데 디테일하게는 고민할 부분들이 있다.
이 글에서 주의할 점은
1) 나는 이미 CUDA, cuDNN을 다른 사람이 설치해놓은 버전이 있었다. (그 버전들은 root에 설치되어 있었다.)
2) 추가적으로 CUDA 다른 버전을 쓰고 싶어서 설치하기 시작했다.
3) 우분투 user 중에 나의 계정이 있지만 내 계정에 local하게 설치하는 것이 아니라 모든 유저가 쓸 수 있도록 설치하였다. 나만 쓰고 싶으면 내 home directory에서 시작되는 경로에 설치하면 된다.
공용 서버컴의 경우에는 root 계정에 이미 설치된 CUDA가 있을텐데 다음과 같다.
이후로는 설치방법
1. CUDA 설치
1-1. CUDA 다운로드
엔비디아 사이트에서 다운받을 수 있고 원하는 버전은 구글에 검색하면 그 경로로 알려준다.
아래 CUDA 11.8 버전은 다음 링크로 가면 된다.
위와 같이 원하는 toolkit 버전을 선택한다. 나의 경우에는 Ubuntu 18.04 버전에 installer Type은 runfile로 해야 설치할 경로를 지정할 수 있다고 해서 runfile을 다운받았다.
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
1-2. CUDA 설치
다운 받은 경로에서 다음 코드를 실행시키면 된다.
sudo sh cuda_11.8.0_520.61.05_linux.run
다만 주의해야할 점은 NVIDIA driver이다.
내가 CUDA 12.1, CUDA 11.8을 설치하고 싶은 경우에 높은 버전의 CUDA일 수록 높은 버전의 NVIDIA driver를 요구한다. 그리고 위의 명령어를 입력하면 cuda toolkit 뿐 아니라 driver를 설치할 수 있도록 한다.
따라서 높은 버전의 CUDA를 설치할 때는 driver를 옵션에 포함시켜서 설치를 하고 그 외 버전은 toolkit만 설치하면 된다.
그리고 기존에 이미 driver가 설치되어있다면 설치 과정에서 오류가 나기 때문에 미리 NVIDIA driver를 깔끔하게 삭제해주어야 한다. 그리고 driver가 설치되어있으면 위의 명령어를 실행할 때 다음과 같이 나온다.
┌──────────────────────────────────────────────────────────────────────────────┐
│ Existing package manager installation of the driver found. It is strongly │
│ recommended that you remove this before continuing. │
│ Abort │
│ Continue │
│ │
│ │
│ Up/Down: Move | 'Enter': Select │
└──────────────────────────────────────────────────────────────────────────────┘
continue를 했을 때 드라이버 때문에 설치가 안될 가능성이 높다.
1-2-1) NVIDIA driver 삭제
sudo apt-get purge nvidia*
sudo apt-get autoremove
sudo apt-get autoclean
드라이버가 제대로 삭제되었는지 확인하려면
nvidia-smi
명령어를 했을 때 아무것도 뜨지 않는지 확인하면 된다. 드라이버가 없으면 그냥 오류만 뜰 것이다.
1-2-2) toolkit만 설치하고 싶을 때
sudo sh cuda_11.8.0_520.61.05_linux.run --silent --toolkit --toolkitpath=/usr/local/cuda-11.8
다음과 같이 toolkitpath로 옵션을 추가해서 원하는 경로에 설치할 수 있다. 또한 --silent 옵션을 추가하면 특별히 고를 필요없이 알아서 설치된다.
1-2-3) 옵션 선택해서 설치
2. cudnn 다운로드
cudnn은 CUDA 버전에 맞게 설치하면 되는데 다음 링크로 들어가면 확인할 수 있다. cuDNN을 다운받으려면 NVIDIA에 가입을 해야한다. 그리고 cuDNN 다운받을 때는 우분투라고 하더라도 리눅스라고 써진 것을 다운받는 것을 권장한다. (아래 그림의 노란색 표시) cuDNN 설치 매뉴얼을 읽어봤는데 deb파일을 다운받으면 좀 더 귀찮았다.(궁금하신 분들은 설치 매뉴얼 링크에서 1.3.2. Debian local installation을 보면 된다.) Tar 파일을 다운받아서 압축을 푸는 게 훨씬 간단한다.
원하는 cudnn 파일을 다운받고 그 경로에서 아래의 명령어를 사용한다.
# 압축 풀기, 압축을 풀면 archive로 끝나는 폴더가 생성된다.
$ tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
# 아래부터는 파일을 cuda에 복사하기
$ sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
압축을 풀면 cudnn-(버전)-archive 라는 폴더가 생성되는데 이 폴더 안에 있는 파일을 내가 설치한 CUDA 경로로 복사하는 명령이 필요하다. 위 코드의 마지막 3줄이 그 의미이다. 따라서 /usr/local/cuda 경로는 내가 cuda toolkit을 설치한 경로이기 때문에 꼭 위의 경로일 필요는 없고 본인이 설치한 CUDA 경로를 집어넣으면 된다.
3. 환경변수에 경로 추가
이렇게 CUDA와 cudnn을 설치했다하더라도 환경변수에 경로를 추가함으로써 이 파일들에 접근할 수 있도록 해야한다.
주의할 점은 다른 포스팅들은 bash 터미널을 쓰는 것을 감안해서 .bashrc 파일을 수정하는데 이는 일반적인 방법이 아니다.
환경변수를 추가하는 명령은 다음과 같다.
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
위에서 /usr/local/cuda-(원하는 버전) 이렇게 경로를 바꿔넣는 것인데 위의 명령을 터미널에 쓴다해도 이게 영구적인 게 아니다. 그 순간에 열어놓은 터미널만 환경변수가 위와 같이 설정되는 것이다. 따라서 내가 터미널을 켤 때마다 항상 그 경로가 추가되도록 하려면 터미널 설정파일을 건드려줘야 한다.
나는 zsh를 이용하고 있었기 때문에 다음 포스팅을 참고하여서 경로를 추가했다. 본인이 bash 셸을 쓴다면
~./bashrc 파일에 들어가서 export (경로) 명령어를 추가해주면 된다.
vim ~./bashrc
(또는 zsh를 쓴다면)
vim ~./zshrc
편집은 자기 마음대로 해도 되는데 나는 vim 에디터를 통해 수정하는 것 뿐이다.
그 다음에 아래와 같이 PATH, LD_LIBRARY_PATH라는 환경변수에 추가적으로 CUDA 경로를 알려줄 수 있는 명령어를 추가한다. 이렇게 하면 내가 터미널을 열 때마다 환경변수를 추가하라는 export 명령이 실행되면서 내가 일일이 환경변수를 추가해줄 필요가 없게 된다.
4. CUDA 설치 확인 및 cudnn 확인
nvidia-smi를 입력하면 지금 설치된 driver가 인식하는 가장 높은 버전의 CUDA만 출력되는 듯하다. (아래에 보면 나는 CUDA 버전을 여러 개 가지고 있지만 12.1로 출력된다.)
pytorch를 설치해놓았다면 터미널에서 python으로 들어간 다음에 다음 명령어를 쓰는 것을 권한다.
import torch
print("cudnn version:{}".format(torch.backends.cudnn.version()))
print("cuda version: {}".format(torch.version.cuda))
다만 이 경우에는 pytorch의 버전에 따라 CUDA 인식이 달라지므로 본인의 파이토치 버전에 맞는 cuda가 제대로 설치되었는지 확인할 수 있다.
참고자료
https://m31phy.tistory.com/125
https://docs.nvidia.com/cuda/cuda-quick-start-guide/
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
:
'연구 Research > 인공지능 Artificial Intelligent' 카테고리의 다른 글
[인공지능] 딥러닝, 머신러닝에서 uncertainty/error 개념 (0) | 2023.05.16 |
---|---|
[JAX] 메모리 부족 문제 해결 (1) | 2023.04.26 |
[JAX] device 확인, default device 설정 (0) | 2023.04.13 |
[JAX] JAX와 Torch, CUDA, cudnn 버전 맞추기 (0) | 2023.04.12 |
[JAX] 학습 중 NaN 값이 나올 때 찾는 방법 (0) | 2023.03.28 |