본문 바로가기

카테고리 없음

딥러닝 GPU 서버에 접속하여 GPU 개발 환경 구축하기: PyTorch, Jupyter Notebook, 각종 라이브러리 설치 및 개발 환경

※ 본 글은 필자의 경험에 근거하여 작성되었으며, 잘못된 정보가 포함될 수 있습니다. ※

 

  일반적으로 특정한 딥러닝 관련 팀에 소속되어 GPU 서버에 접속하게 되면, 개발 환경 구축(Python 라이브러리 설치 및 Jupyter Notebook 설정 등) 과정이 필요하다. 자신만의 서버 컴퓨터를 직접 조립 및 설정하는 경우도 있지만, 일반적인 경우에는 이미 다른 사람이 구축해 놓은 GPU 서버(server)에 접속하여 이용하게 된다.

※ 서버 정보 확인 ※

 

  일단 서버에 접속한 뒤에는 기본적인 서버 환경을 알아야 한다.


  * cat /etc/issue: Ubuntu 서버 버전 확인
  * nvidia-smi: GPU 그래픽 카드 사용 현황 확인


  nvidia-smi 명령어를 이용했을 때 서버에 NVIDIA 드라이버가 설치되어 있다면, 정상적으로 GPU 정보가 출력된다. 참고로 CUDA의 버전도 알려준다. (예를 들어 11.2와 같은 버전 정보) CUDA를 설치할 때 이러한 정보를 참고하면 된다.

 

  또한 nvidia-smi를 입력하면, 현재 GPU 기기의 정보를 확인할 수 있다. 예를 들어 자신의 GPU 서버에 Tesla V100이 4개 있다면, 각 GPU에 대하여 얼마나 사용되고 있는 상태인지 점검이 가능하다. 또한 특정한 코드를 실행한 뒤에 실시간으로 GPU 사용량을 확인하고자 한다면, watch nvidia-smi를 입력하면 된다. 물론 다른 사람이 사용하고 있는 GPU 서버라면, 이미 그래픽 드라이버 설정이 완료되어 있을 가능성이 높다.

※ CUDA 설치 ※

  기본적으로 그래픽 드라이버가 설치되어 있다면, nvidia-smi를 입력했을 때 결과가 정상적으로 나온다. 이후에는 CUDA를 설치하면 된다. 다양한 버전을 설치해 놓고 사용하는 경우도 많기 때문에, 설치 방법에 대해서 알고 있는 것이 좋다. 기본적으로 CUDA가 이미 설치되어 있다면, 다음과 같이 입력했을 때 CUDA의 버전이 나온다.

  ▶ 설치된 CUDA 버전 확인: cat /usr/local/cuda/version.txt

  예를 들어 Ubuntu 18.04를 쓰고 있는 서버라면, CUDA를 설치하기 위해 다음과 같이 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


  이제 실질적으로 CUDA 및 cuDNN을 설치한다. 다음과 같이 CUDA 10.1 버전으로 Toolkit을 설치할 수 있다.

sudo apt-get install cuda-10-1
sudo apt-get install libcudnn7-dev


  설치 이후에는 다음의 명령어로 설치가 정상적으로 이루어졌는지 버전을 확인할 수 있다.

  ▶ CUDA 버전: cat /usr/local/cuda/version.txt
  ▶ cuDNN 버전: cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

※ Anaconda 설치 ※

  이후에 Anaconda를 설치할 수 있다. 다음과 같이 아카이브(archive)에 방문하여, 최신 버전의 Anaconda를 설치할 수 있다. 혹은 자신이 원하는 버전을 설치해도 된다.

 

wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
bash Anaconda3-2021.05-Linux-x86_64.sh

 

  하지만 Anaconda의 경우에는 라이센스를 확인하고 설치를 진행할 필요가 있다. 특히나 규모가 큰 팀에서 딥러닝을 하는 상황이라면, 라이센스에 유의할 필요가 있다. (Anaconda는 현재 조건부 유료화를 진행한 상황이기 때문이다.) 또한 필요시 다음과 같이 입력한다.

source ~/.bashrc


  설치가 완료되면 Conda 가상환경을 만들면 된다.

conda create -n mine python=3.7


  만들어진 뒤에 가상환경으로 접속한다.

conda activate mine


  접속한 상태에서는 다음과 같이 PyTorch를 설치하면 된다.

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch


  가상 환경에서 나올 때는 다음과 같이 한다.

conda deactivate

 

  참고로 만들어진 가상환경들은 다음과 같이 확인할 수 있다.

 

conda info --envs


  삭제하고자 하는 가상환경은 다음과 같이 삭제하면 된다.

conda remove --name mine --all


  참고로 Anaconda 자체를 통째로 삭제할 때는 다음과 같이 한다. 가장 먼저 base 가상 환경에 접속한다. 이후에 다음과 같이 입력한다.

conda install anaconda-clean
anaconda-clean --yes


  이후에 anaconda 폴더 자체를 완전 삭제할 수 있다.

rm -rf ~/anaconda3
rm -rf ~/.anaconda_backup


  추가적으로 .bashrc와 같은 파일에서 anaconda 관련 내용을 모두 제거한다.

※ PIP 설치 ※

  파이썬 패키지 관리 시스템(PIP) 또한 설치한다.

 

sudo apt install python3-pip
pip3 --version

sudo apt install python-pip
pip --version


※ Python 가상환경 virtualenv 사용 ※

  그리고 굳이 Anaconda를 사용하지 않고, virtualenv로 가상환경을 관리할 수도 있다. 필자의 경우 virtualenv를 애용한다.

 

pip install virtualenv
pip3 install virtualenv


  참고로 virtualenv를 설치하기 위해서는, 우분투 18.04에서는 다음과 같이 설치해야 할 수도 있다.

sudo apt-get install python-virtualenv


  설치 이후에는 다음과 같이 가상환경을 만든다.

python3 -m virtualenv mine


  그리고 다음과 같이 가상환경에 접속한다.

source mine/bin/activate


  이후에 필요한 라이브러리를 설치한다. 참고로 wand는 ImageMagick을 사용하는 이미지 편집 라이브러리 중 하나입니다. 이를 위해 apt-get install libmagickwand-dev 명령어를 통해 ImageMagick을 설치해야 할 수도 있습니다.

pip3 install torch torchvision
pip3 install matplotlib
pip3 install opencv-python
pip3 install scipy
pip3 install scikit-learn
pip3 install scikit-image
pip3 install wand


  참고로 논문을 작성한 뒤에 코드를 공유할 때는, 해당 환경에서의 패키지 리스트를 저장할 필요가 있다. 다음과 같이 내보내기가 가능하다.

pip3 freeze > requirements.txt


  가상 환경에서 나갈 때는 다음과 같이 한다.

deactivate


※ PyTorch 설치 확인 ※

  이제 PyTorch가 정상적으로 설치되었는지 확인한다. 하나의 파이썬 파일 check.py를 만들어 다음과 같이 입력한다.

 

import torch

a = torch.FloatTensor([1, 2, 3]).cuda()
print(a)


  python3 check.py를 입력하여 실행해 보자. 정상적으로 PyTorch를 불러오는지 확인하면 된다. 마찬가지로 코드를 실행할 때, 미리 watch nvidia-smi를 이용해 정상적으로 GPU를 사용하는지 확인할 수 있다.

※ Jupyter Notebook 설치 및 접속 ※

  이후에 Jupyter Notebook을 사용하고 싶다면, 다음과 같이 가상환경에 접속한 뒤에 jupyter를 설치하면 된다.

 

source mine/bin/activate
pip3 install jupyter


  참고로 Visual Studio Code에서 Remote SSH를 이용하는 경우에는, 자동으로 포트포워딩을 해준다. 따라서 단순히 Visual Studio Code를 실행한 뒤에 Jupyter를 실행한 뒤에 주어진 URL 주소로 접속하여 코드를 작성할 수 있다.

  또한 Jupyter 자체를 계속 켜 두는 방법으로는 screen을 이용할 수 있다. 그리고 Jupyter Notebook에서 노트북 코드를 생성한 뒤에 반복문 코드를 실행한 뒤에 새로고침을 해도, 기본적으로 실행 중인 셀은 백그라운드에서 계속 실행된다. 나중에 Jupyter에서 [Running] 탭으로 돌아온 뒤에, 실행 중인 셀의 다음 셀의 내용을 실행하면 된다. 만약 이전 셀이 아직 백그라운드에서 종료되지 않았다면, [Interrupt] 이후에 코드를 실행하면 된다.

 

  Python 코드상으로 오랜 기간 학습해야 할 때에도 screen을 이용하면 된다. 필자의 경우 500GB 이상의 큰 데이터셋 다운로드 및 오랜 기간 학습을 해야 할 때는, screen을 이용해 세션(session)을 열어서 작업을 진행한다.