Real Late Starter

[Ubuntu 18.04] PyTorch CUDA 10.0 환경 설정 본문

Ubuntu/Ubuntu 환경설정

[Ubuntu 18.04] PyTorch CUDA 10.0 환경 설정

조슈아박 2020. 2. 16. 06:18

1. Nvidia Graphic Driver install

CUDA 환경을 사용하기 위해서는 Graphic Driver - CUDA - cuDNN 순으로 설치를 해주어야 합니다.

우선 그래픽드라이버 부터 설치하겠습니다.

 

그래픽 드라이버가 이미 설치 되어있는지 부터 확인합니다. 만약 설치가 되어있다면 CUDA 설치로 바로 넘어가시면 됩니다.

cat /proc/driver/nvidia/version

# 출력이 아래처럼 나온다면 이미 드라이버가 설치된 것입니다.
> NVRM version: NVIDIA UNIX x86_64 Kernel Module  440.44  Sun Dec  8 03:38:56 UTC 2019
> GCC version:  gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)

설치가 되어있지않다면 아래와 같이 입력해줍니다.

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt-get install nvidia-driver-440
nvidia-smi 

설치 완료시 나오는 화면

※ 다음과 같은 오류 발생시

E: Unable to lock the administration directory (/var/lib/dpkg/), is anothers process using it?
E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

아래 코드 입력 후에 다시 install 코드 실행

sudo rm /var/lib/dpkg/lock # 오류 발생시 입력
sudo apt-get install nvidia-driver-440
nvidia-smi 
cat /proc/driver/nvidia/version # 설치 확인

설치 확인

2. CUDA 설치

2-1) NVIDIA 공식 Repository 추가

sudo apt install sudo gnupg

sudo apt-key adv --fetch-keys "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub"

sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-cuda.list'

sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-machine-learning.list'

sudo apt update

2-2) CUDA Toolkit 설치

sudo apt-get install cuda-10-0 # 쿠다 설치

sudo apt-get install libcudnn7-dev # cuDNN 설치

2-3) 설치 확인

CUDA 설치된 버전 확인

cat /usr/local/cuda/version.txt
출력 -> CUDA Version 10.0.130

cuDNN 설치된 버전 확인

cat /usr/include/cudnn.h | grep -E "CUDNN_MAJOR|CUDNN_MINOR|CUDNN_PATCHLEVEL"
sudo find / -name libcudnn*.*

3. Anaconda3 설치

Anaconda 공식홈페이지에서 Linux 버전을 다운 받는다.

https://www.anaconda.com/distribution/

 

cd ~/Downloads # 다운받은 폴더로 이동
sha256sum Anaconda3-2019.10-Linux-x86_64.sh
bash Anaconda3-2019.10-Linux-x86_64.sh

bash 명령어를 입력하면 다음과 같은 화면이 나온다.

q 를 누르면 약관화면이 스킵된다. yes를 입력해준다.

설치 경로 설정, 엔터를 눌러준다.

마지막으로 conda init 명령어로 Anaconda3를 초기화 할 것인가에 대한 여부가 나오는데 yes를 입력하면 설치가 끝난다.

다음으로 설치에서 생긴 환경 변수의 변경을 적용하기 위해 bashrc를 실행시킨다.

source ~/.bashrc

환경 변수 적용이 완료되고 설치가 정상적으로 완료 되면 (base) 표시가 생성된다.

다음으로 conda 명령어를 사용해서 설치를 확인한다.

conda --version
conda search python # 사용 가능한 python 버전 출력하는 명령어

# terminal에 입력
anaconda-navigator

설치 완료

4. PyTorch 설치

4-1) 설치 명령어 확인

PyTorch 공식 홈페이지에 가면 설치 환경 별 설치 명령어를 볼 수 있다.

이전 버전이 필요하다면 Previous versions of PyTorch 를 눌러서 다른 버전을 받을 수 있다.

4-2) 가상환경 만들기

Pytorch나 Tensorflow 등등 다른 프레임워크 간에 충돌을 예방하기 위해서 가상환경을 만들고 PyTorch를 설치한다.

conda create -n pytorch python=3.6
conda activate pytorch # 가상환경 activate
conda deactivate # 가상환경 끄기

pytorch 로 가상환경을 변경해주고 pytorch 설치코드를 입력해준다.

4-3) PyTorch 설치

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

설치가 완료되면 conda list 명령어를 써서 설치를 확인한다.

conda list

4-4) Jupyter Notebook 환경에서 Pytorch 실행

Jupyter Notebook 환경에서 pytorch 가상환경을 사용하기 위해서 다음과 같이 코드를 입력해준다.

$ conda activate pytorch # 가상환경 실행
$ pip install ipykernel
$ python -m ipykernel install --user --name [가상환경 이름] --display-name [표시할 가상환경 이름]
# 코드 예시
python -m ipykernel install --user --name python --display-name "pytorch"

완료하게 되면 아래와 같이 Jupyter Notebook 상에 가상환경이 추가된다.

import torch
torch.__version__

설치가 완료 되었습니다.

4-5) PyTorch GPU 사용 확인

import torch
torch.cuda.get_device_name(0)
torch.cuda.is_available()

pytorch를 통해 CUDA가 정상적으로 실행되고 있으면 모델 학습 과정에서 GPU를 사용하게 된다.

# ternimal
watch nvidia-smi # GPU 상태를 확인할 수 있다.

GPU를 사용하게 되면 Memory-Usage에서 데이터가 올라간 것을 볼 수 있고 Volatile GPU-Util에서 퍼센트가 올라가는 것을 볼 수 있다.

또한 Processes : 에서

| 1 3594 C .../pirl/anaconda3/envs/pytorch/bin/python 527MiB |

이렇게 사용기록이 남게된다.

대용량의 이미지나 데이터를 GPU에 올리게되면 용량이 초과하여 모델이 돌아가지 않는 경우가 발생하는데 이 경우에는 Jupyter Notebook에서 Kernel을 restart 하거나

sudo kill pid -<Processes에 있는 PID 번호>
# 사용예시 
sudo kill pid -3594

위와 같이 프로세스를 죽이면 다시 모델을 돌릴 수 있다.

※ GPU에 올렸던 이미지데이터가 없어짐 (PID 3594)

 

이상으로 CUDA 설치 및 파이토치 설치에 대해 알아보았습니다.