본문으로 건너뛰기

인스턴스 유형별 사용

GPU 인스턴스 사용

GPU 타입의 인스턴스를 사용하기 위해서는 적절한 드라이버를 설치해야 합니다. 드라이버가 설치된 GPU 전용 OS 이미지를 사용하여 인스턴스를 생성하거나, 기본 이미지로 인스턴스를 생성한 후 별도로 퍼블릭 드라이버를 다운로드하여 설치할 수 있습니다. 운영체제별 GPU 드라이버를 설치하여 GPU를 사용하는 방법은 다음과 같습니다.

안내

현재 카카오클라우드에서 제공 중인 Ubuntu 20.04 이미지, NVIDIA A100을 기준으로 안내합니다.

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

NVIDIA 드라이버를 설치합니다. 권장 드라이버 및 CUDA 버전은 다음과 같습니다.

GPU유형NVIDIA 버전CUDA 버전
NVIDIA A100450.80.02 이상CUDA Toolkit 11.1 이상
안내
  1. NVIDIA 드라이버를 설치할 인스턴스에 NVIDIA 장비가 있는지 명령을 실행해 확인합니다.

    NVIDIA 장비 검색 명령어
     $ lspci | grep -i NVIDIA
  2. 설치할 수 있는 드라이버 버전을 확인합니다.

    • 설치된 드라이버가 최신 버전이 아닐 경우, apt update -y명령어를 실행하여 업데이트를 실행합니다.

    • Command ‘ubuntu-drivers’ not found라는 메시지가 나올 시, sudo apt install ubuntu-drivers-common 명령을 입력하여 ubuntu-drivers-common을 설치합니다

      설치할 드라이버 버전 확인 명령어
      $ ubuntu-drivers devices
      드라이버 버전 확인 예시
      $ ubuntu-drivers devices
      **==** /sys/devices/pci0000:00/0000:00:04.0 **==**
      modalias : pci:v000010DEd000020B0sv000010DEsd0000134Fbc03sc02i00
      vendor : NVIDIA Corporation
      driver : nvidia-driver-515-server - distro non-free
      driver : nvidia-driver-470 - distro non-free
      driver : nvidia-driver-470-server - distro non-free
      driver : nvidia-driver-510-server - distro non-free
      driver : nvidia-driver-510 - distro non-free
      driver : nvidia-driver-450-server - distro non-free
      driver : nvidia-driver-515 - distro non-free recommended
      driver : xserver-xorg-video-nouveau - distro free builtin
  3. 설치 가능한 드라이버를 선택하여 설치를 진행합니다.

    드라이버 설치
    $ sudo apt install nvidia-driver-470

    이미지 드라이버 설치

  4. 재부팅을 실행합니다.

    재부팅 명령어
    $ sudo reboot
  5. 설치한 드라이버 정보를 확인합니다.

    설치한 드라이버 정보 확인 명령어
    $ nvidia-smi
    설치한 드라이버 정보 확인 예시
    $ nvidia-smi
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 470.141.03 Driver Version: 470.141.03 CUDA Version: 11.4 |
    |-------------------------------+----------------------+----------------------+
    | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |===============================+======================+======================|
    | 0 NVIDIA A100 80G... Off | 00000000:00:05.0 Off | 0 |
    | N/A 33C P0 41W / 300W | 35MiB / 80994MiB | 0% Default |
    | | | Disabled |
    +-------------------------------+----------------------+----------------------+
    | 1 NVIDIA A100 80G... Off | 00000000:00:06.0 Off | 0 |
    | N/A 34C P0 43W / 300W | 35MiB / 80994MiB | 0% Default |
    | | | Disabled |
    +-------------------------------+----------------------+----------------------+

Step 2. NVIDIA CUDA Toolkit 설치하기

NVIDIA CUDA Toolkit를 설치합니다.

CUDA Toolkit를 재설치 시 Toolkit 삭제

CUDA Toolkit를 재설치하는 경우, 다음의 설치 환경을 준비합니다.

  1. 기존 CUDA 관련 설정을 삭제합니다.

    CUDA 설정 삭제 명령어
    $ sudo rm -rf /usr/local/cuda*
  2. ~/.bashrc 또는 /etc/profile에 다음의 기존 설정이 있는 경우, 삭제합니다.

    기존 설정 삭제
    export PATH=$PATH:/usr/local/cuda-11.4/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.4/lib64
    export CUDADIR=/usr/local/cuda-11.4
  3. 모든 기존 설정을 삭제한 후, nvcc -V 명령을 실행해 해당 명령이 실행되지 않는 것을 확인합니다.

    nvcc -V 명령 실행 결과
    $ nvcc -V
    Command 'nvcc' not found, but can be installed with: sudo apt install nvidia-cuda-toolkit

CUDA Toolkit 설치

  1. NVIDIA 공식 사이트 > CUDA Toolkit Archive에서 설치할 CUDA Toolkit 버전을 선택합니다. 버전 선택 시 하단에서 Base Installer 명령어를 확인할 수 있습니다.

    이미지 CUDA Toolkit 버전 선택 및 Base Installer 명령어 확인

  2. Base Installer의 명령어(첫째 줄)를 실행하여 CUDA Toolkit 설치용 파일을 다운로드합니다.

    CUDA Toolkit 설치용 파일 다운로드 명령어 예시
    $ wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run

    Base Installer의  Toolkit 설치용 파일 다운로드 명령 실행 결과 Base Installer의 Toolkit 설치용 파일 다운로드 명령 실행 결과

  3. Base Installer의 명령어(둘째 줄)를 실행하여 CUDA Toolkit 설치용 파일을 실행합니다.

    • CUDA Toolkit 설치용 파일 실행 시 1분 이상의 시간이 소요됩니다.
    CUDA Toolkit 설치용 파일 실행 명령어
    $ sudo sh cuda_11.4.0_470.42.01_linux.run
  4. 방향키를 눌러 Continue를 선택하고, Enter를 누릅니다.

    이미지 Continue 선택

  5. accept를 입력하고, Enter를 누릅니다.

    이미지 accept 입력

  6. Space를 눌러 Driver의 체크 박스의 선택을 해제하고 Install을 선택한 후, Enter를 누릅니다.

    • 기존 설정이 있는 경우, Existing installation of CUDA Toolkit 11.x found 메시지가 나타납니다. 해당 경우 Upgrade all을 선택하고 Enter를 누릅니다.

    이미지 Install 선택

  7. UDA Toolkit이 정상적으로 설치 완료된 경우, 다음의 화면을 확인할 수 있습니다.

    이미지 CUDA Toolkit 설치 완료

  8. 다음의 명령을 실행하여 CUDA Toolkit 관련 환경 변수를 추가합니다.

    CUDA Toolkit 관련 환경 변수 추가 명령어
    $ sudo sh -c "echo 'export PATH=$PATH:/usr/local/cuda-11.4/bin' >> /etc/profile"
    $ sudo sh -c "echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.4/lib64' >> /etc/profile"
    $ sudo sh -c "echo 'export CUDADIR=/usr/local/cuda-11.4' >> /etc/profile"
    $ source /etc/profile
  9. nvcc -V 명령을 실행하여 설치된 CUDA Toolkit을 확인합니다.

    이미지 CUDA Toolkit 설치 확인 결과

NPU 인스턴스 사용

NPU 타입의 인스턴스를 사용하기 위해서는 적절한 드라이버를 설치해야 합니다. 드라이버가 설치된 NPU 전용 OS 이미지를 사용하여 인스턴스를 생성하거나, 기본 이미지로 인스턴스를 생성한 후 별도로 드라이버를 다운로드하여 설치할 수 있습니다. Linux 운영체제에서 NPU 드라이버를 설치하는 방법은 다음과 같습니다.

안내
  • 현재 카카오클라우드에서 제공 중인 Ubuntu 20.04 이미지, FuriosaAI WARBOY를 기준으로 안내합니다.
  • FuriosaAI에서 제공하는 APT 서버 설정이 필요하며, 자세한 설명은 FuriosaAI Docs > 드라이버, 펌웨어, 런타임 설치 가이드를 참고하시기 바랍니다.
  • FuriosaAI NPU 드라이버 설치 및 구성에 대한 기술 문의는 FuriosaAI 고객센터에 문의하여 기술지원을 받을 수 있습니다.

Step 1. FuriosaAI 드라이버 설치하기

FuriosaAI NPU 드라이버를 설치합니다. 권장 드라이버 및 SDK 버전은 다음과 같습니다.

NPU 유형드라이버 버전SDK 버전
FuriosaAI Warboy1.7 이상     0.9.1
  1. FuriosaAI NPU 드라이버를 설치할 인스턴스에 FuriosaAI 장비가 있는지 명령을 실행해 확인합니다.

    FuriosaAI 장비 검색 명령어
     $ lspci -nn | grep 1200
    16:00.0 Processing accelerators [1200]: Device [1ed2:0000] (rev 01)

    또는

    FuriosaAI 장비 검색 명령어
     $ sudo update-pciids
    $ lspci | grep FuriosaAI
    16:00.0 Processing accelerators: FuriosaAI, Inc. Warboy (rev 01)
  2. 드라이버의 설치를 진행합니다.

    드라이버 설치 명령어
     $ sudo apt install furiosa-driver-warboy
  3. 런타임 라이브러리 및 유틸리티의 설치를 진행합니다.

    런타임 라이브러리 및 유틸리티 설치 명령어
     $ sudo apt install furiosa-libnux furiosa-toolkit
  4. 설치된 패키지의 버전을 고정합니다.

    패키지 버전 고정 명령어
     $ sudo apt-mark hold furiosa-driver-warboy furiosa-libhal-warboy furiosa-libcompiler furiosa-libnux furiosa-toolkit libonnxruntime
  5. 설치한 드라이버 정보를 확인합니다.

    설치한 드라이버 정보 확인 명령어
     $ furiosactl info
    설치한 드라이버 정보 확인 예시
     $ furiosactl info
    +------+--------+----------------+-------+--------+--------------+
    | NPU | Name | Firmware | Temp. | Power | PCI-BDF |
    +------+--------+----------------+-------+--------+--------------+
    | npu0 | warboy | 1.6.0, c1bebfd | 52°C | 2.52 W | 0000:00:05.0 |
    +------+--------+----------------+-------+--------+--------------+

Step 2. FuriosaAI Python SDK 설치하기

FuriosaAI Python SDK를 설치합니다.
효과적인 Python 실행 환경 구성을 위해 가상환경(venv, pyenv, pipenv, conda, etc.)을 설치합니다. 해당 가이드에서는 Miniconda를 설치하여 독립된 Python 실행 환경을 생성하여 가상 환경을 구성합니다.

안내
  1. Miniconda를 설치합니다.

    Miniconda 설치 명령어
     $ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    $ SHELL=bash sh ./Miniconda3-latest-Linux-x86_64.sh
    $ source ~/.bashrc
    (base)$ conda --version
  2. 독립된 Python 실행 환경을 생성하고 활성화합니다.

    Python 실행 환경 생성 명령어
     (base)$ conda create -n my-env python=3.9
    (base)$ conda activate my-env
    (my-env)$ python --version
    Python 3.9.16
  3. Furiosa SDK를 설치합니다.

    Furiosa SDK 설치 명령어
     (my-env)$ pip install --upgrade pip setuptools wheel
    (my-env)$ pip install 'furiosa-sdk[full]'
  4. 설치된 SDK를 확인합니다.

    Furiosa SDK 설치 확인 명령어
     (my-env)$ furiosa --version
    Furiosa SDK 설치 확인 예시
     (my-env)$ furiosa --version
    0.9.1-release (rev: a240782)

Step 3. FuriosaAI Python SDK 예제 실행하기

설치한 FuriosaAI의 SDK를 이용하여 추론을 수행하는 예제를 실행합니다.

  1. furiosa-sdk 예제를 Git을 통해 내려받습니다.

    Furiosa SDK repository clone 명령어
     (my-env)$ git clone https://github.com/furiosa-ai/furiosa-sdk --depth 1
  2. 예제 실행에 필요한 라이브러리를 설치합니다.

    라이브러리 설치 명령어
     (my-env)$ cd furiosa-sdk/examples/inferences
    (my-env)$ pip install -r requirements.txt
  3. 예제 코드를 실행합니다.

    추론 예제 프로그램 실행 명령어
     (my-env)$ ./image_classify.py ../assets/images/car.jpg
    libfuriosa_hal.so --- v0.11.0, built @ 43c901f
    INFO:furiosa.common.native:loaded native library libnux.so (0.9.1 d91490fa8)
    Loading and compiling the model /home/ubuntu/furiosa-sdk/examples/inferences/../assets/quantized_models/imagenet_224x224_mobilenet_v1_uint8_quantization-aware-trained_dm_1.0_without_softmax.tflite
    Saving the compilation log into /home/ubuntu/.local/state/furiosa/logs/compile-20230516064013-fzjjxx.log
    Using furiosa-compiler 0.9.1 (rev: d91490fa8 built at 2023-04-19T13:49:26Z)
    2023-05-16T06:40:13.769147Z INFO nux::npu: Npu (npu0pe0-1) is being initialized
    2023-05-16T06:40:13.773685Z INFO nux: NuxInner create with pes: [PeId(0)]

    ...

    Prediction elapsed 0.00 secs
    [Top 5 scores:]
    sports car: 155
    pickup: 152
    car wheel: 148
    convertible: 148
    racer: 143
    2023-05-16T06:41:00.568028Z INFO nux::npu: NPU (npu0pe0-1) has been destroyed
    2023-05-16T06:41:00.568453Z INFO nux::capi: session has been destroyed