NVIDIA GPU 환경 설정
NVIDIA GPU 환경을 설정하기 위한 드라이버와 라이브러리를 설치하는 과정과 기본 이미지로 인스턴스를 생성 후 GPU 드라이버를 추가하는 방식을 설명합니다.
- 예상 소요 시간: 30분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 권장 운영 체제: MacOS, Ubuntu
- 사전 준비 사항
시나리오 소개
이 시나리오에서는 NVIDIA GPU를 활용한 머신러닝이나 딥러닝 작업을 위해 카카오클라우드 환경에서 NVIDIA 드라이버와 CUDA, cuDNN 라이브러리를 설치하고 설정하는 방법을 설명합니다. 사용자는 기본적으로 제공되는 Ubuntu 20.04 NVIDIA 이미지나 원하는 특정 NVIDIA/CUDA 버전을 사용하여 인스턴스를 생성하고, 필요한 드라이버와 라이브러리를 설치할 수 있습니다.
주요 내용은 다음과 같습니다.
- NVIDIA 드라이버 프리인스톨 이미지를 사용하여 GPU 환경을 간편하게 설정하는 방법
- 특정 NVIDIA/CUDA 버전이 필요한 경우, 기본 Ubuntu 이미지를 이용해 원하는 드라이버와 라이브러리 버전을 설치하는 방법
- GPU 인스턴스의 퍼블릭 IP를 통해 SSH로 접속하고 드라이버 및 라이브러리를 설치하는 과정
- CUDA와 cuDNN 라이브러리 설치 후 환경 검증
시작하기 전에
사전 작업으로 VPC와 서브넷, 보안 그룹을 설정합니다.
1. VPC와 서브넷 생성
인스턴스를 생성하기 전, 인스턴스가 생성될 VPC 및 서브넷을 생성해야 합니다. VPC와 서브넷이 없다면, VPC 생성, 서브넷 생성 문서를 참고하여 VPC 및 서브넷을 생성합니다.
2. 보안 그룹 설정
보안 그룹 생성 문서를 참고하여 보안 그룹을 생성합니다. 인바운드 규칙은 다음과 같이 추가합니다.
다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.
CIDR | 프로토콜 | 포트 | 역할 |
---|---|---|---|
{사용자 퍼블릭 IP}/32 | TCP | 22 | ssh |
시작하기
NVIDIA GPU 환경을 설정하기 위한 NVIDIA 드라이버 프리인스톨 이미지 사용 방식과 일반 Ubuntu 이미지를 사용하는 방식을 설명합니다.
Type 1. NVIDIA 드라이버 프리인스톨 이미지 사용
카카오클라우드에서 제공하는 기본 이미지인 Ubuntu 20.04(NVIDIA VERSION) 를 통해 GPU 인스턴스를 생성하는 방법은 다음과 같습니다. 이 이미지에는 NVIDIA 드라이버 버전 470.199.02, CUDA 버전 11.4이 포함되어 있으므로, 별도의 NVIDIA 드라이버 또는 CUDA 설치가 필요하지 않습니다.
Ubuntu 20.04 (NVIDIA VERSION) 이미지 이외에 다른 버전의 이미지를 사용할 경우에는 일반 Ubuntu 이미지를 사용 문서를 참고하시기 바랍니다.
Step 1. GPU 인스턴스 생성
-
카카오클라우드 콘솔에 접속 후, 사전 작업을 수행하고 GPU 메뉴를 선택합니다.
-
인스턴스 메뉴에서 [인스턴스 생성] 버튼을 클릭합니다.
-
인스턴스 생성에서 아래 항목에 해당하는 VM 인스턴스를 생성 후, [생성] 버튼을 클릭합니다.
항목 설정값 기본 정보 - 이름: 자유롭게 지정
- 개수: 1개이미지 기본 탭에서 Ubuntu 20.04 - 5.4.0-173(NVIDIA) 선택 인스턴스 유형 p2i.6xlarge 볼륨 루트 볼륨: 50GB 또는 그 이상 키 페어 프라이빗 키 .pem
형식이며, 새로 생성 또는 기존 키 사용 가능네트워크 - VPC: 사전 작업에서 미리 생성한 VPC 선택
- 서브넷: 사전 작업에서 미리 생성한 서브넷 선택
- 보안 그룹: 위에서 생성한 보안 그룹 선택
Step 2.퍼블릭 IP 연결
GPU 인스턴스에 퍼블릭 IP를 연결합니다.
- 카카오클라우드 콘솔에서 Beyond Compute Service > GPU 메뉴를 선택합니다.
- 위에서 생성한 GPU 인스턴스의 더 보기 아이콘을 클릭 후, 퍼블릭 IP 연결을 클릭합니다.
- 퍼블릭 IP 연결 설정 팝업창에서 새로운 퍼블릭 IP를 생성하고 자동으로 할당을 클릭 후, [확인] 버튼을 클릭합니다.
- 퍼블릭 IP 칼럼에서 퍼블릭 IP를 확인합니다.
Step 3. cuDNN 설치
딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리인 NVIDIA cuDNN(NVIDIA CUDA Deep Neural Network library) 을 설치합니다.
-
cuDNN 파일을 실행하기 위해 해당 인스턴스에 SSH 접속합니다.
ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem
#예제) ssh ubuntu@210.100.00.000 -i test.pem파라미터 유형 필수 여부 설명 HOST_PUBLIC_IP String 필수 GPU 인스턴스의 퍼블릭 IP 주소 PRIVATE_KEY_FILE String 필수 프라이빗 키 파일 SSH 접속 완료
-
다음 NVIDIA에서 제공하는 cuDNN 설치 가이드를 확인하여 cuDNN과 cuda를 설치합니다. 해당 문서는 Ubuntu 20.04 버전에서 cuDNN을 설치하는 방법과 명령어를 안내합니다.
-
아래 명령어를 통해 정상 설치된 cuDNN을 확인합니다.
cat /usr/include/x86_64-linux-gnu/cudnn_version*.h | grep CUDNN_MAJOR
# define CUDNN_MAJOR 8cuDNN 설치 완료
Type 2. 일반 Ubuntu 이미지를 사용
카카오클라우드에서 제공하는 NVIDIA 드라이버 프리인스톨 이미지가 아닌 특정 NVIDIA 또는 CUDA 버전이 필요한 경우에는, 일반 Ubuntu 이미지를 사용하여 원하는 NVIDIA 또는 CUDA 버전을 설치할 수 있습니다.
Step 1. GPU 인스턴스 생성
-
카카오클라우드 콘솔에 접속 후, 사전 작업을 수행하고 GPU 메뉴를 선택합니다.
-
인스턴스 메뉴에서 [인스턴스 생성] 버튼을 클릭합니다.
-
인스턴스 생성에서 아래 항목에 해당하는 VM 인스턴스를 생성 후, [생성] 버튼을 클릭합니다.
항목 설정값 기본 정보 - 이름: 자유롭게 지정
- 개수: 1개이미지 기본 탭에서 Ubuntu 20.04 - 5.4.0-173 선택 인스턴스 유형 p2i.6xlarge 볼륨 루트 볼륨: 50GB 또는 그 이상 키 페어 프라이빗 키 .pem
형식이며, 새로 생성 또는 기존 키 사용 가능네트워크 - VPC: 사전 작업에서 미리 생성한 VPC 선택
- 서브넷: 사전 작업에서 미리 생성한 서브넷 선택
- 보안 그룹: 위에서 생성한 보안 그룹 선택
Step 2.퍼블릭 IP 연결
GPU 인스턴스에 퍼블릭 IP를 연결합니다.
- 카카오클라우드 콘솔에서 Beyond Compute Service > GPU 메뉴를 선택합니다.
- 위에서 생성한 GPU 인스턴스의 더 보기 아이콘을 클릭 후, 퍼블릭 IP 연결을 클릭합니다.
- 퍼블릭 IP 연결 설정 팝업창에서 새로운 퍼블릭 IP를 생성하고 자동으로 할당을 클릭 후, [확인] 버튼을 클릭합니다.
- 퍼블릭 IP 칼럼에서 퍼블릭 IP를 확인합니다.
Step 3. GPU 인스턴스 접속 및 환경 확인
-
프라이빗 키 파일이 위치한 경로로 이동합니다.
-
위에서 생성한 퍼블릭 IP에 ssh로 접속하여 정상 동작을 확인합니다.
ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem
파라미터 유형 필수 여부 설명 HOST_PUBLIC_IP String 필수 호스트 퍼블릭 IP 주소 PRIVATE_KEY_FILE String 필수 프라이빗 키 파일 -
GPU 인스턴스의 이미지 정보 및 NVIDIA 장치 정보를 확인합니다.
cat /etc/*release
lspci | grep -i NVIDIA
Step 4. NVIDIA 드라이버 설치
GPU 환경을 구성하기 위해 필요한 드라이버와 라이브러리를 확인하여 설치합니다.
권장 드라이버 및 라이브러리 버전
GPU Type | NVIDIA 버전 | CUDA 버전 | cuDNN |
---|---|---|---|
NVIDIA A100 | 450.80.02 이상 | CUDA Toolkit 11.4 이상 | 8.1 이상 |
다른 환경에서 가이드를 진행 중이거나 다른 특정 버전이 요구되는 경우, CUDA Toolkit Archive에서 필요한 버전을 다운로드할 수 있습니다.
-
패키지 리스트를 업데이트합니다.
sudo apt-get update
sudo apt-get -y upgrade패키지 리스트 업데이트 완료
-
사용자 환경에 따라 이미 설치된 NVIDIA 드라이버가 있을 수 있는데, 이로 인해 몇 가지 이유로 문제가 발생할 수 있습니다. 따라서, 아래 명령어를 이용하여 기존 드라이버를 제거합니다.
sudo apt-get -y remove nvidia* && sudo apt autoremove -y
sudo apt-get install build-essential linux-headers-generic -
패키지 저장소에 그래픽 드라이버 저장소를 추가합니다.
sudo add-apt-repository ppa:graphics-drivers/ppa # 중간 설명글이 나오면 'Enter'키를 눌러 넘어갑니다.
sudo apt-get update -
Ubuntu 20.04lts 버전을 지원하는 드라이버 중 하나인 nvidia-driver-470을 설치합니다.
sudo apt install -y nvidia-driver-470
nvidia-driver-470 설치 완료
-
설치된 드라이버를 적용하기 위해 인스턴스를 재부팅합니다. 일정 시간이 흐른 뒤, 다시 접속할 수 있습니다.
sudo reboot
-
위에서 생성한 퍼블릭 IP에 ssh로 접속하여 정상 동작을 확인합니다.
ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem
파라미터 유형 필수 여부 설명 HOST_PUBLIC_IP String 필수 호스트 퍼블릭 IP 주소 PRIVATE_KEY_FILE String 필수 프라이빗 키 파일 -
아래 명령어를 입력하여 설치된 결과를 확인합니다.
nvidia-smi
# 정상적인 결과:
# Thu Nov 3 02:21:13 2022
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 470.141.03 Driver Version: 470.141.03 CUDA Version: 11.4 |
# |-------------------------------+----------------------+----------------------+
# | ...정상 설치 시
Step 5. NVIDIA CUDA Toolkit 설치
NVIDIA CUDA Toolkit은 엔비디아 GPU 가속화 애플리케이션 개발 플랫폼입니다. CUDA Toolkit에는 GPU 가속화 라이브러리, 디버깅 및 최적화 도구, 컴파일러 그리고 애플리케이션을 배포하기 위한 CUDA 런타임이 포함됩니다. 자세한 설명은 NVIDIA 공식 홈페이지를 참고하시기 바랍니다.
CUDA 설치 여부 확인
nvcc -V 명령어를 실행하여 설치된 CUDA Toolkit을 확인합니다. 정상적으로 설치된 경우 아래와 같이 정상적으로 CUDA 드라이버가 인식됩니다. 이 경우 CUDA 설치 단계를 생략하고 cuDNN 설치 단계로 이동하시기 바랍니다.
nvcc -V
# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2021 NVIDIA Corporation
# ...
Step 6. CUDA 설치
-
CUDA 설치 패키지를 다운로드합니다.
wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
-
다운로드한 CUDA 설치 파일을 실행합니다.
sudo sh cuda_11.4.0_470.42.01_linux.run
-
설치 진행 중 아래와 같은 문구가 나타나면 [continue]를 선택합니다.
┌──────────────────────────────────────────────────────────────────────────────┐
│ Existing package manager installation of the driver found. It is strongly │
│ recommended that you remove this before continuing. │
│ Abort │
│ > Continue
... -
다음으로 사용자에게 EULA 라이선스 승인을 요구합니다. 승인에 동의해야 실습을 진행할 수 있습니다. 다음을 참고하여 입력 부분에
accept
를 입력합니다.┌──────────────────────────────────────────────────────────────────────────────┐
│ End User License Agreement │
│ -------------------------- │
│ │
│ The CUDA Toolkit ...
...
│──────────────────────────────────────────────────────────────────────────────│
│ Do you accept the above EULA? (accept/decline/quit): │
│ accept │
└──────────────────────────────────────────────────────────────────────────────┘ -
이미 설치된 드라이버는 체크를 해제합니다. 확인 후 [Install]을 선택하여 설치할 수 있습니다.
┌──────────────────────────────────────────────────────────────────────────────┐
│ CUDA Installer │
│ - [] Driver │
│ [] 470.42.01 │
│ + [X] CUDA Toolkit 11.4 │
│ [X] CUDA Samples 11.4 │
│ [X] CUDA Demo Suite 11.4 │
│ [X] CUDA service 11.4 │
│ Options │
│ > Install
... -
설치가 완료되면 CUDA Toolkit 관련 환경변수를 추가합니다.
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export CUDADIR=/usr/local/cuda -
nvcc -V 명령어를 실행하여 설치된 CUDA Toolkit을 확인합니다.
nvcc -V
# 성공 결과:
# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2021 NVIDIA Corporation
# ...
Step 7. cuDNN 설치
딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리인 NVIDIA cuDNN(NVIDIA CUDA Deep Neural Network library)을 설치합니다. 자세한 설명은 NVIDIA 공식 홈페이지를 참고하시기 바랍니다.
-
NVIDIA cuDNN 페이지에 접속 후, [Download cuDNN Library] 버튼을 클릭해 적합한 버전을 설치합니다. 이번 실습에서는 cuDNN 9.6.0 버전의 Installer for Linux Ubuntu 20.04 x86_64(deb)을 다운로드합니다.
-
프라이빗 키 파일이 위치한 경로로 이동 후, 다음 명령어를 실행하여 사용자 로컬 환경에 설치된 cuDNN 파일을 해당 인스턴스로 옮깁니다.
sudo scp -i ${PRIVATE_KEY_FILE}.pem ${CUDNN_INSTALL_FILE} ubuntu@${HOST_PUBLIC_IP}:~/
# 예제) sudo scp -i ~/Downloads/test.pem ~/Downloads/cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz ubuntu@210.100.00.000:~/파라미터 유형 필수 여부 설명 PRIVATE_KEY_FILE String 필수 프라이빗 키 파일 경로 CUDNN_INSTALL_FILE String 필수 CUDNN 설치 파일 경로 HOST_PUBLIC_IP String 필수 GPU 인스턴스의 퍼블릭 IP 주소 -
cuDNN 파일을 실행하기 위해 해당 인스턴스에 SSH 접속합니다.
ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem
#예제) ssh ubuntu@210.100.00.000 -i test.pem파라미터 유형 필수 여부 설명 HOST_PUBLIC_IP String 필수 GPU 인스턴스의 퍼블릭 IP 주소 PRIVATE_KEY_FILE String 필수 프라이빗 키 파일 SSH 접속 완료
-
다음 NVIDIA에서 제공하는 cuDNN 설치 가이드를 확인하여 cuDNN과 cuda를 설치합니다.