일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Model Adaptations
- keras
- Transfer_Learning
- Google Speech To Text
- Ubuntu2004
- ubuntu
- model
- KoBERT
- Kaggle
- 4주차
- 우분투2004
- 가장쉽게배우는머신러닝
- 과일종류예측
- 모델적응
- AWS
- mnist
- FastAPI
- UbuntuServer
- KoBART
- 서버
- jquery
- ajax
- Phrase Sets
- html
- 스파르타코딩클럽
- EC2
- Linux
- Flask
- Custom Classes
- Django
- Today
- Total
영웅은 죽지 않는다
[Ubuntu/GPU] Ubuntu 18.04 환경에서 CUDA, cuDNN, NVIDIA driver와 PyTorch 세팅하기 본문
[Ubuntu/GPU] Ubuntu 18.04 환경에서 CUDA, cuDNN, NVIDIA driver와 PyTorch 세팅하기
YoungWoong Park 2022. 11. 7. 16:30우분투 서버에서 PyTorch 학습을 위해 CUDA 세팅을 하는 과정을 담았다
설치 과정에서, 본인의 GPU와 호환되는 CUDA 및 cuDNN 버전을 찾는 것이 중요하고
버전 차이로 설치에 에러가 발생하는 경우가 많으므로 주의해야 한다
실제로 나는 우분투 20.04 버전과 GPU 셋업 환경에 호환문제가 너무 많이 발생해
결국 우분투를 18.04로 낮추고 처음부터 다시 진행했다 ㅠ
1. Python 3.8 및 가상환경 설치
sudo apt update
sudo apt install python3.8
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
update-alternatives --config python # check
sudo apt install python3.8-venv
python3.8 -m venv {venv_name} # venv
source venv/bin/activate
여기서는 우분투 서버 내에 파이썬 3.8 버전을 설치하고,
venv라는 이름의 가상환경을 설치 후 접속했다.
2. 본인의 CUDA 버전 확인
이 상태로 nvidia-smi 또는 nvcc -V 명령어를 입력하면 에러가 발생한다
확인을 위해, 먼저 nvidia-driver를 설치해본다
sudo apt update
sudo apt install -y ubuntu-drivers-common
ubuntu-drivers devices
ubuntu-drivers devices 명령어를 통해, 내 사양에 적합한 nvidia-driver 버전을 추천해준다.
결과에 따라 470버전을 설치
sudo apt-get install nvidia-driver-470
sudo apt-get install dkms nvidia-modprobe
sudo apt install nvidia-cuda-toolkit
nvidia-smi # 11.4
nvcc -V # 9.1
여기서 주의해야 할 점은, nvidia-smi와 nvcc -V에서 보여주는 버전은 의미가 다르다는 것이다
nvidia-smi는 현재 환경에서 설치 가능한 cuda의 최대 버전을 말해주고
nvcc -V는 현재 설치된 nvidia의 cuda 버전을 말해준다
즉, nvidia-driver와 nvidia-cuda-toolkil을 설치함으로써 자동 설치된 cuda의 버전은 9.1이었고,
내 사양으로는 11.4 버전까지 호환이 가능하다는 것을 의미한다
3. PyTorch 설치 & PyTorch와 호환되는 CUDA 버전 찾기
https://pytorch.org/get-started/locally/
위 파이토치 사이트에 접근하여, 내가 설치하고자 하는 파이토치 버전 중 호환되는 CUDA 버전을 찾는다
# 가상환경 접속
source venv/bin/activate
# 파이토치 설치
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
일주일만에 파이토치 버전이 하나 올라갔다. 지난주 설치했을 당시 PyTorch 1.12.1 버전이었었는데,
거기서는 CUDA 10.2 / 11.3 / 11.6 세 가지를 제공했다
파이토치 이전 버전을 찾고 싶다면 위 사이트 상단의 Previous PyTorch Versions을 클릭하면 된다.
무튼, 나는 PyTorch 1.12.1 기준으로 Linux / Pip / Python / CUDA 11.3을 선택해
하단에 나온 명령어로 파이토치를 설치했다
그 후로는 CUDA 11.3 버전을 설치하러 가보자
4. PyTorch와 호환되는 CUDA 설치하기
가장 먼저, 위 nvidia-cuda-toolkit을 통해 자동설치된 cuda와 nvidia을 재설치한다
- 기존 cuda, nvidia 패키기 삭제
sudo apt-get --purge -y remove 'cuda*'
sudo apt-get --purge -y remove 'nvidia*'
sudo apt-get --purge -y remove "*nvidia*"
sudo apt-get autoremove --purge cuda
sudo rm -rf /usr/local/cuda*
sudo /usr/local/cuda-xx.x/bin
sudo /usr/bin/nvidia-uninstall
sudo reboot
- CUDA 11.3 버전 설치
https://developer.nvidia.com/cuda-toolkit-archive
위 링크에서 본인이 설치하고자 하는 CUDA 버전을 찾아 설치한다
여기서 애를 먹었던게, 나는 계속 deb 파일로 설치를 하려고 했는데
윈도우에서 우분투로 원격접속 한 상태라 실행파일을 다운로드 받아 적용하는건 어려운 일이었다
그래서 deb 파일이 아닌 runfile 형태의 소스코드를 복붙해 설치한다
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run
sudo sh cuda_11.3.1_465.19.01_linux.run
코드를 입력하면 아래와 같은 과정을 진행한다
1. 어떤 경고 1 -> Continue
2. 어떤 경고 2 -> Accept
3. CUDA Installer se Agreement -> Driver에는 [X]를 해제한 후 Install (GPU driver는 따로 설치를 했거나, 추후 다시 한다)
4. Please make sure that ~~ 가 뜨면 완료된 것
- CUDA 환경변수 설정
vi ~/.bashrc
환경변수 설정을 위해 bashrc로 접속한 뒤 아래 환경변수를 가장 하단에 입력하고 :wq! 를 입력해 빠져나온다
## ~/.bashrc
export PATH=$PATH:/usr/local/cuda-11.3/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64
export CUDADIR=/usr/local/cuda-11.3
이후 아래 코드를 입력해 환경변수를 적용한 뒤
nvcc -V 를 입력해 CUDA가 11.3 버전이 잘 설치가 되었는지 확인한다
source ~/.bashrc
nvcc -V
위에처럼 나오면 CUDA 설치 및 설정 끝
5. CUDA와 호환되는 CuDNN 설치하기
https://developer.nvidia.com/rdp/cudnn-archive
CUDA를 설치했으면 그 다음엔 cuDNN을 설치해야 한다
cuDNN은 CUDA와 다르게 회원가입 및 로그인이 되어 있어야 다운이 가능하다
나는 CUDA 11.x 버전과 호환되는 cuDNN 8.2.0 버전을 설치하고자 한다
로그인 후 tgz 파일이 다운로드 될텐데, 다운로드가 완료되면 아래 코드를 입력하여 cuDNN을 적용한다
# tgz 파일이 있는 곳으로 이동
cd /home/download
# 압축 해제
tar xvzf cudnn-11.3-linux-x64-v8.2.0.53.tgz
# 복사
sudo cp cuda/include/cudnn* /usr/local/cuda-11.3/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64
# 권한 부여
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h /usr/local/cuda-11.3/lib64/libcudnn*
# 링크 설정
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn.so.8.2.0 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcudnn.so.8
잘 설치가 되었는지 확인하려면 아래 명령어를 입력한다
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
6. PyTorch & CUDA 사용 가능 여부 확인하기
sudo reboot
서버를 재부팅한 뒤, 파이토치가 제대로 작동하는지 확인한다
python
>> import torch
>> print(torch.cuda.is_available())
* 참고한 사이트
'Programming > Linux' 카테고리의 다른 글
[Linux] Ubuntu 20.04 server 설치 과정 (0) | 2022.11.30 |
---|---|
[Linux/Shell Script] 크론탭(crontab)으로 딥러닝 플랫폼 유지보수하기 (4) | 2022.09.21 |