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 공식 사이트에서 Tensorflow버전에 맞는 CUDA 버전을 확인 할 수 있습니다.
해당 사이트에 들어가서 해당 cuda로 들어가면 다음과 같이 선택해 주시면 됩니다.
설치 코드는 위의 Base Installer에 있는 명령을 순차적으로 입력해주면 됩니다.
sudo sh cuda_버전.run를 입력하게 되면, 인스톨 창이 뜨는데, 다음과 같이 해주시면 CUDA가 설치가 됩니다.
- Continue 선택 후 엔터
- accept 입력 후 엔터
- Driver 선택 해제
- 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
cuDNN 설치하기
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 서버 구축은 다음편에서 설명 하곘습니다.
'서버' 카테고리의 다른 글
개인용 서버 만들기 5편(딥러닝 서버 구축 2편) (0) | 2022.06.19 |
---|---|
docker 명령어 모음 (0) | 2022.06.17 |
개인용 서버 만들기 4편(code-server 구축) (0) | 2022.06.04 |
개인용 서버 만들기 3편(포트포워딩과 DDNS 설정) (0) | 2022.05.27 |
개인용 서버 만들기 2편(우분투 설치) (1) | 2022.05.27 |