본문 바로가기
  • 🦄 창민이 개발일지
서버

개인용 서버 만들기 5편(딥러닝 서버 구축 1편)

by 창민이 개발일지 2022. 6. 17.

5편에서는 외부에서 딥러닝 프로그램 및 연구를 하기 위해 딥러닝 서버 구축에 대해 설명 할거에요. 먼저 딥러닝을 개발 있어서 가장 중요한 것은 개인용 서버 만들기 1편에서 말했는데, 바로 GPU 에요. GPU는 CPU와 달리 데이터 연산을 병렬처리로 하기 때문에 빅데이터 같은 큰 샘플 데이터 처리에 대해 아주 적합 합니다. 딥러닝 개발에서 사용하는 유명한 라이브러리로 Tensorflow가 있습니다. Tensorflow를 사용하면 보다 쉽고 빠르게 딥러닝 모델을 만들 수 있습니다. Tensorflow에서 GPU를 사용하기 위해서는 NVIDIA 드라이버, CUDA toolkit, cuDNN이 해당 컴퓨터에 맞게 설치 되어야 되요. 

 

NVIDIA 그래픽카드 드라이버 설치

자신의 GPU에 맞게 추천 드라이버 확인

ubuntu-drivers devices

 

설치 가능한 드라이버 리스트 확인

! apt-get update
! apt-cache search nvidia | grep nvidia-driver-원하는 버전 # 설치 가능한 드라이버 목록 출력

 

NVIDIA 드라이버 설치

apt-get install nvidia-driver-원하는버전
# NVIDIA 드라이버 설치

NVIDIA 설치 코드는 위와 같은데, 저처럼 nvidia-driver-510으로 설치하고 싶으면, apt-get intall nvidia-driver-510으로 해주시면 됩니다. 

 

NVIDIA 드라이버 설치 확인

nvidia-smi

 

 

CUDA 정의 및 CUDA toolkit 설치

CUDA 란?

  • Compute Unified Device Architecture
  • NVIDIA에서 만든 GPU의 병렬 프로그래밍 언어.
  • NVIDIA GPU 컴퓨팅의 컴파일러 역할을 수행하는 도구.
  • CUDA가 GPU에서 수행하는 병렬 처리 알고리즘을 C언어 등을 비롯한 산업 표준언어를 이용해 작성할 수 있도록 함으로써 CUDA를 통해 그래픽 API를 알지 못하는 개발자들도 GPU를 활용할 수 있게 된 것.

CUDA toolkit 설치

nvidia 드라이버를 설치하면 cuda가 자동으로 설치됩니다. nvidia-smi 명령어로 확인 할 수 있어요. 해당 cuda가 사용할 Tensorflow버전에서 지원하면 그냥 사용해도 되지만, 지원하지 않으면 삭제하고 다시 설치해주셔야 됩니다.

 

CUDA 완전 삭제

sudo apt-get --purge remove 'cuda*' # 패키지 삭제 및 환경설정도 삭제
sudo apt-get autoremove --purge 'cuda*' # cuda 패키지와 의존성있는 모든 패키지 삭제
sudo rm -rf /usr/local/cuda* # cuda 라이브러리 삭제

 

CUDA 설치

 

소스에서 빌드  |  TensorFlow

Google I/O is a wrap! Catch up on TensorFlow sessions View sessions 소스에서 빌드 소스에서 TensorFlow pip 패키지를 빌드하고 Ubuntu Linux 및 macOS에 설치합니다. 명령어는 다른 시스템에도 적용될 수 있지만, Ubuntu 및

www.tensorflow.org

Tensorflow 공식 사이트에서 Tensorflow버전에 맞는 CUDA 버전을 확인 할 수 있습니다.  

 

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

해당 사이트에 들어가서 해당 cuda로 들어가면 다음과 같이 선택해 주시면 됩니다.

설치 코드는 위의 Base Installer에 있는 명령을 순차적으로 입력해주면 됩니다.

sudo sh cuda_버전.run를 입력하게 되면, 인스톨 창이 뜨는데, 다음과 같이 해주시면 CUDA가 설치가 됩니다. 

  1. Continue 선택 후 엔터
  2. accept 입력 후 엔터 
  3. Driver 선택 해제 
  4. Install 선택후 엔터

 

CUDA 환경 설정하기

vi /etc/profile

/etc/profile에 들어가 맨 마지막에 다음과 같은 명령어를 입력 해주시면 됩니다. 

export PATH=/usr/local/cuda-11.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/extras/CUPTI/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

참고해야 될점은 위의 명령어 중 cuda-11.2부분은 cuda버전에 따라 다르기 때문에, /usr/local에 들어가서 확인 해주셔야 됩니다.

 

/etc/profile 저장 후 재시작 해주시면 됩니다. 코드는 다음과 같습니다. 

source /etc/profile

 

cuda 설치 확인

nvcc -V

nvidia-smi의 cuda 버전과 nvcc -V의 cuda 버전이 다른데, 그 이유는 각각 driver API와 runtime API 이기 때문이다. driver API는 GPU driver installer에 의해 설치되고, runtime API는 CUDA toolkit installer에 의해 설치 따라서 버전이 다를 수 있다. 따라서 새로운 CUDA toolkit를 설치하면 버전이 다르게 나온다. 

 

 

cuDNN 정의 및 cuDNN 설치

cuDNN(CUDA Deep Neural Network library) 란

  • cuDDN은 엔비디아 CUDA가 적용된 딥 뉴럴 네트워크 라이브러리.
  • 딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리의 기초 요소로 컨볼루션, 풀링, 표준화, 활성화와 같은 일반적인 루틴을 빠르게 이행할 수 있도록 하는 라이브러리.

cuDNN 가속화 프레임워크

  • cuDNN 프레임워크는 딥러닝 개발자들이 뉴럴 네트워크 모델의 디자인과 훈련에 집중할 수 있도록 하는 프레임워크
  • ex) Tensorflow, Pytorch, Keras, Matlab

출처:  https://blogs.nvidia.co.kr/2018/01/16/cuda-toolkit/  [NVIDA]

 

cuDNN 설치하기

 

CUDA Deep Neural Network

cuDNN provides researchers and developers with high-performance GPU acceleration.

developer.nvidia.com

NVIDIA 개발 사이트에 접속 후 회원가입 한 후에 CUDA 버전에 맞게 다운로드하면 됩니다. 해당 파일은 로그인을 하고 다운로드를 해야 되기 때문에 wget으로 설치 할 수 없습니다. 따라서 해당 파일을 다운받고 서버로 옮겨 주셔야 됩니다.  

 

서버로 파일을 옮기면 다음과 다음 명령어를 입력해 주시면 됩니다.

tar xvzf cudnn-11.2-linux-x64-v8.1.1.77.tgz # tar 압축 풀기
sudo cp ./cuda/include/cudnn*.h /usr/local/cuda/include #cuddnn*.h /usr/local/cuda/include로 복사
sudo cp -P ./cuda/lib64/libcudnn* /usr/local/cuda/lib64 #libcuddnn*.h /usr/local/cuda/lib64로 복사
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*# 모든사용자에게 쓰기 권한 부여

 

cuDNN 설치확인 및 링크 확인

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 # cuDNN 8.x 이전

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # cuDNN 8.x 이후
# 링크 확인
ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn
# 출력이 되면 링크가 잘 된 것을 의미

# 만약 출력이 되지 않으면 다음과 같이 링크를 연결해 주어야 됨
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.1  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.1  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.1  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.1  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.1 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8.1.1  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8

 

NVIIDA 드라이버, CUDA Toolkit 그리고 cuDNN가 다 설치 되었습니다. 이제 Tensorflow 서버만 구축 하면 됩니다. Tensorflow 서버 구축은 다음편에서 설명 하곘습니다.