본문으로 건너뛰기

NVIDIA GPU 환경 설정

NVIDIA GPU 환경을 설정하기 위한 드라이버와 라이브러리를 설치하는 과정과 기본 이미지로 인스턴스를 생성 후 GPU 드라이버를 추가하는 방식을 설명합니다.

안내
  • 예상 소요 시간: 30분
  • 사용자 환경
    • 권장 운영 체제: MacOS, Ubuntu
    • Region: kr-central-2

시나리오 소개

카카오클라우드에서 NVIDIA GPU 환경 설정은 GPU를 효율적으로 활용하기 위한 중요한 단계입니다.

본 시나리오에서는 NVIDIA GPU를 활용한 머신러닝이나 딥러닝 작업을 위해 카카오클라우드 환경에서 NVIDIA 드라이버와 CUDA, cuDNN 라이브러리를 설치하고 설정하는 방법을 설명합니다. 사용자는 기본적으로 제공되는 Ubuntu 20.04 NVIDIA 이미지나 원하는 특정 NVIDIA/CUDA 버전을 사용하여 인스턴스를 생성하고, 필요한 드라이버와 라이브러리를 설치할 수 있습니다.

사전 작업

사전 작업으로 VPC와 보안 그룹을 생성합니다.

VPC와 서브넷 생성

VPC 생성서브넷 생성 문서를 참고하여 신규 VPC와 서브넷을 생성합니다.

보안 그룹 생성

보안 그룹 생성 문서를 참고하여 보안 그룹을 생성합니다. 인바운드 규칙은 다음과 같이 추가합니다.

나의 퍼블릭 IP 확인하기

다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.

CIDR프로토콜포트역할
{사용자 퍼블릭 IP}/32TCP     22     ssh

작업 순서

카카오클라우드에서 제공하는 기본 이미지인 Ubuntu 20.04 (NVIDIA VERSION)를 통해 GPU 인스턴스를 생성하는 방법은 다음과 같습니다. 이 이미지에는 NVIDIA Driver Version 470.199.02, CUDA Version 11.4이 포함되어 있으므로, 별도의 NVIDIA Drive 또는 CUDA 설치가 필요하지 않습니다.

특정 NVIDIA/CUDA 버전 설치가 필요할 경우

Ubuntu 20.04 (NVIDIA VERSION) 이미지 이외에 다른 버전의 이미지를 사용할 경우에는 부록. 특정 NVIDIA 또는 CUDA 버전 설치 문서를 참고하시기 바랍니다.

Step 1. GPU 인스턴스 생성

  1. 카카오클라우드 콘솔에 접속 후, 사전 작업을 수행하고 GPU 메뉴를 선택합니다.

  2. 인스턴스 메뉴에서 [인스턴스 생성] 버튼을 클릭합니다.

  3. 인스턴스 생성에서 아래 항목에 해당하는 VM 인스턴스를 생성 후, [생성] 버튼을 클릭합니다.

    항목설정값
    기본 정보- 이름: 자유롭게 지정
    - 개수: 1개
    이미지기본 탭에서 Ubuntu 20.04 - 5.4.0-173(NVIDIA) 선택
    인스턴스 유형p2i.6xlarge
    볼륨루트 볼륨: 50GB 또는 그 이상
    키 페어프라이빗 키
    .pem 형식이며, 새로 생성 또는 기존 키 사용 가능
    네트워크- VPC: 사전 작업에서 미리 생성한 VPC 선택
    - 서브넷: 사전 작업에서 미리 생성한 서브넷 선택
    - 보안 그룹: 위에서 생성한 보안 그룹 선택

Step 2.퍼블릭 IP 연결

GPU 인스턴스에 퍼블릭 IP를 연결합니다.

  1. 카카오클라우드 콘솔에서 Beyond Compute Service > GPU 메뉴를 선택합니다.
  2. 위에서 생성한 GPU 인스턴스의 더 보기 아이콘을 클릭 후, 퍼블릭 IP 연결을 클릭합니다.
  3. 퍼블릭 IP 연결 설정 팝업창에서 새로운 퍼블릭 IP를 생성하고 자동으로 할당을 클릭 후, [확인] 버튼을 클릭합니다.
  4. 퍼블릭 IP 칼럼에서 퍼블릭 IP를 확인합니다.

Step 3. cuDNN 설치

딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리인 NVIDIA cuDNN(NVIDIA CUDA Deep Neural Network library)을 설치합니다.

  1. cuDNN 파일을 실행하기 위해 해당 인스턴스에 SSH 접속합니다.

    ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem

    #예제) ssh ubuntu@210.100.00.000 -i test.pem
    파라미터유형필수 여부설명
    HOST_PUBLIC_IPString필수GPU 인스턴스의 퍼블릭 IP 주소
    PRIVATE_KEY_FILEString필수프라이빗 키 파일

    이미지 SSH 접속 완료

  2. 다음 NVIDIA에서 제공하는 cuDNN 설치 가이드를 확인하여 cuDNN과 cuda를 설치합니다. 해당 문서는 우분투 20.04 버전에서 cuDNN을 설치하는 방법과 명령어를 안내합니다.

  3. 아래 명령어를 통해 정상 설치된 cuDNN을 확인합니다.

    cat /usr/include/x86_64-linux-gnu/cudnn_version*.h | grep CUDNN_MAJOR

    # define CUDNN_MAJOR 8

    이미지 cuDNN 설치 완료

부록. 특정 NVIDIA 또는 CUDA 버전 설치

특정 NVIDIA 또는 CUDA 버전이 아닌 다른 버전이 필요한 경우에는, 일반 Ubuntu 이미지를 사용하여 원하는 NVIDIA 또는 CUDA 버전을 설치할 수 있습니다.

Step 1. GPU 인스턴스 생성

  1. 카카오클라우드 콘솔에 접속 후, 사전 작업을 수행하고 GPU 메뉴를 선택합니다.

  2. 인스턴스 메뉴에서 [인스턴스 생성] 버튼을 클릭합니다.

  3. 인스턴스 생성에서 아래 항목에 해당하는 VM 인스턴스를 생성 후, [생성] 버튼을 클릭합니다.

    항목설정값
    기본 정보- 이름: 자유롭게 지정
    - 개수: 1개
    이미지기본 탭에서 Ubuntu 20.04 - 5.4.0-173 선택
    인스턴스 유형p2i.6xlarge
    볼륨루트 볼륨: 50GB 또는 그 이상
    키 페어프라이빗 키
    .pem 형식이며, 새로 생성 또는 기존 키 사용 가능
    네트워크- VPC: 사전 작업에서 미리 생성한 VPC 선택
    - 서브넷: 사전 작업에서 미리 생성한 서브넷 선택
    - 보안 그룹: 위에서 생성한 보안 그룹 선택

Step 2.퍼블릭 IP 연결

GPU 인스턴스에 퍼블릭 IP를 연결합니다.

  1. 카카오클라우드 콘솔에서 Beyond Compute Service > GPU 메뉴를 선택합니다.
  2. 위에서 생성한 GPU 인스턴스의 더 보기 아이콘을 클릭 후, 퍼블릭 IP 연결을 클릭합니다.
  3. 퍼블릭 IP 연결 설정 팝업창에서 새로운 퍼블릭 IP를 생성하고 자동으로 할당을 클릭 후, [확인] 버튼을 클릭합니다.
  4. 퍼블릭 IP 칼럼에서 퍼블릭 IP를 확인합니다.

Step 3. GPU 인스턴스 접속 및 환경 확인하기

  1. 프라이빗 키 파일이 위치한 경로로 이동합니다.

  2. 위에서 생성한 퍼블릭 IP에 ssh로 접속하여 정상 동작을 확인합니다.

    ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem
    파라미터유형필수 여부설명
    HOST_PUBLIC_IPString필수호스트 퍼블릭 IP 주소
    PRIVATE_KEY_FILEString필수프라이빗 키 파일
  3. GPU 인스턴스의 이미지 정보 및 NVIDIA 장치 정보를 확인합니다.

    cat /etc/*release
    lspci | grep -i NVIDIA

Step 4. NVIDIA 드라이버 설치하기

GPU 환경을 구성하기 위해 필요한 드라이버와 라이브러리를 확인하여 설치합니다.

권장 드라이버 및 라이브러리 버전
GPU TypeNVIDIA 버전CUDA 버전cuDNN
NVIDIA A100450.80.02 이상CUDA Toolkit 11.4 이상8.1 이상
안내

다른 환경에서 가이드를 진행 중이거나 다른 특정 버전이 요구되는 경우, CUDA Toolkit Archive에서 필요한 버전을 다운로드할 수 있습니다.

  1. 패키지 리스트를 업데이트합니다.

    sudo apt-get update
    sudo apt-get -y upgrade

    이미지 패키지 리스트 업데이트 완료

  2. 사용자 환경에 따라 이미 설치된 NVIDIA 드라이버가 있을 수 있는데, 이로 인해 몇 가지 이유로 문제가 발생할 수 있습니다. 따라서, 아래 명령어를 이용하여 기존 드라이버를 제거합니다.

    sudo apt-get -y remove nvidia* && sudo apt autoremove -y
    sudo apt-get install build-essential linux-headers-generic
  3. 패키지 저장소에 그래픽 드라이버 저장소를 추가합니다.

    sudo add-apt-repository ppa:graphics-drivers/ppa # 중간 설명글이 나오면 'Enter'키를 눌러 넘어갑니다.
    sudo apt-get update
  4. Ubuntu 20.04lts 버전을 지원하는 드라이버 중 하나인 nvidia-driver-470을 설치합니다.

    sudo apt install -y nvidia-driver-470

    이미지 nvidia-driver-470 설치 완료

  5. 설치된 드라이버를 적용하기 위해 인스턴스를 재부팅합니다. 일정 시간이 흐른 뒤, 다시 접속할 수 있습니다.

    sudo reboot
  6. 위에서 생성한 퍼블릭 IP에 ssh로 접속하여 정상 동작을 확인합니다.

    ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem
    파라미터유형필수 여부설명
    HOST_PUBLIC_IPString필수호스트 퍼블릭 IP 주소
    PRIVATE_KEY_FILEString필수프라이빗 키 파일
  7. 아래 명령어를 입력하여 설치된 결과를 확인합니다.

    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 설치 단계로 이동하시기 바랍니다.

CUDA 설치 여부 확인
nvcc -V

# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2021 NVIDIA Corporation
# ...

Step 6. CUDA 설치

  1. CUDA 설치 패키지를 다운로드합니다.

    wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
  2. 다운로드한 CUDA 설치 파일을 실행합니다.

    sudo sh cuda_11.4.0_470.42.01_linux.run
  3. 설치 진행 중 아래와 같은 문구가 나타나면 [continue]를 선택합니다.

    ┌──────────────────────────────────────────────────────────────────────────────┐
    │ Existing package manager installation of the driver found. It is strongly │
    │ recommended that you remove this before continuing. │
    │ Abort │
    > Continue
    ...
  4. 다음으로 사용자에게 EULA 라이선스 승인을 요구합니다. 승인에 동의해야 실습을 진행할 수 있습니다. 다음을 참고하여 입력 부분에 accept를 입력합니다.

    ┌──────────────────────────────────────────────────────────────────────────────┐
    │ End User License Agreement │
    │ -------------------------- │
    │ │
    │ The CUDA Toolkit ...

    ...

    │──────────────────────────────────────────────────────────────────────────────│
    │ Do you accept the above EULA? (accept/decline/quit): │
    │ accept │
    └──────────────────────────────────────────────────────────────────────────────┘
  5. 이미 설치된 드라이버는 체크를 해제합니다. 확인 후 [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
    ...
  6. 설치가 완료되면 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
  7. 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 공식 홈페이지를 참고하시기 바랍니다.

  1. NVIDIA cuDNN 페이지에 접속해 로그인한 후, [Download cuDNN Library] 버튼을 클릭해 적합한 버전을 설치합니다. 이번 실습에서는 CUDA 11.x 버전의 Local Installer for Linux x86_64 (Tar) 버전을 사용하며, 압축 파일 형태 그대로 사용합니다.

    이미지 설치 파일 다운로드

  2. 프라이빗 키 파일이 위치한 경로로 이동 후, 다음 명령어를 실행하여 사용자 로컬 환경에 설치된 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_FILEString필수프라이빗 키 파일 경로
    CUDNN_INSTALL_FILEString필수CUDNN 설치 파일 경로
    HOST_PUBLIC_IPString필수GPU 인스턴스의 퍼블릭 IP 주소
  3. cuDNN 파일을 실행하기 위해 해당 인스턴스에 SSH 접속합니다.

    ssh ubuntu@${HOST_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}.pem

    #예제) ssh ubuntu@210.100.00.000 -i test.pem
    파라미터유형필수 여부설명
    HOST_PUBLIC_IPString필수GPU 인스턴스의 퍼블릭 IP 주소
    PRIVATE_KEY_FILEString필수프라이빗 키 파일

    이미지 SSH 접속 완료

  4. tar 명령어를 사용하여 cuDNN 패키지의 압축을 풉니다.

    tar -xvf cudnn-linux-x86_64*.tar.xz
  5. cuDNN 파일을 CUDA가 설치된 디렉터리에 설치합니다. 기본 설치 경로를 /usr/local/cuda/로 가정합니다.

    sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
    sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
  6. 아래 명령어를 통해 정상 설치된 cuDNN을 확인합니다.

    cat /usr/include/x86_64-linux-gnu/cudnn_version*.h | grep CUDNN_MAJOR

    # define CUDNN_MAJOR 8

    이미지 cuDNN 설치 완료