Skip to content

Nvidia-smi

NVIDIA System Management Interface

그래픽 카드 확인

$ nvidia-smi -L

다음과 같이 출력됨:

GPU 0: NVIDIA GeForce RTX 3070 Ti (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
GPU 1: NVIDIA GeForce RTX 3070 Ti (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

퍼시스턴스 모드 변경

지속성 모드(Persistence Mode)는 클라이언트가 연결되지 않은 경우에도 대상 GPU를 초기화된 상태로 유지하는 사용자 설정 드라이버 속성에 대한 용어입니다. 이 솔루션은 수명이 거의 다 되어 가고 있으며 결국 지속성 데몬을 선호하여 더 이상 사용되지 않습니다. 지속성 모드는 nvidia-smi를 사용하거나 NVML API를 통해 프로그래밍 방식으로 설정할 수 있습니다.

  • Persistence mode 는 GPU를 사용하지 않아도 nvidia driver를 항상 미리 로딩해두는 모드로 빠른 프로그램 실행에 유리
  • 파워 지속성 옵션. ON 상태시 GPU 사용 시 지연시간을 아끼지만 전력을 낭비한다.

To enable persistence mode using nvidia-smi (as root):

nvidia-smi -i <GPU_UUID> --persistence-mode=1
-pm, --persistence-mode=
Set persistence mode: 0/DISABLED, 1/ENABLED

확인 방법:

nvidia-smi -i <GPU_UUID> -q

다음과 같이 출력:

    ==============NVSMI LOG==============

    Timestamp                           : ----
    Driver Version                      : ----

    Attached GPUs                       : ----
    GPU 0000:01:00.0
        Product Name                    : ----
        Display Mode                    : ----
        Display Active                  : ----
        Persistence Mode                : Enabled
        Accounting Mode                 : ----
        ...

Supported Environments:

  • Drivers: All shipping driver versions
  • OSes: All standard driver-supported Linux platforms
  • GPUs: All shipping Tesla, Quadro and GRID products

ECC 설정

nvidia-smi -i <GPU_UUID> --ecc-config=1
-e, --ecc-config=
Toggle ECC support: 0/DISABLED, 1/ENABLED

컴퓨팅 모드 설정

nvidia-smi -i <GPU_UUID> -c=3
-c, --compute-mode=
Set MODE for compute applications
  • 0/DEFAULT
  • 1/EXCLUSIVE_THREAD (DEPRECATED),
  • 2/PROHIBITED
  • 3/EXCLUSIVE_PROCESS

Switch GPU Virtualization Mode

nvidia-smi -i <GPU_UUID> -vm=3
-vm, --virt-mode=
Switch GPU Virtualization Mode:
Sets GPU virtualization mode to 3/VGPU or 4/VSGA Virtualization mode of a GPU can only be set when it is running on a hypervisor.

Trigger reset of the GPU

-r, --gpu-reset
Trigger reset of the GPU.

GPU HW 상태를 재설정하는 데 사용할 수 있습니다. 그렇지 않으면 머신 재부팅이 필요합니다. 일반적으로 더블 비트 ECC 오류가 발생한 경우에 유용합니다.

출력 항목에 대한 설명

nvidia-smi 를 그냥 쌩짜로 날리면 다음의 내용이 출력된다:

  • Driver Version 470.103.01: 현재 설치되어 사용하고 있는 nvidia GPU의 driver version이다.
  • CUDA Version 11.4: 현재 사용하고 있는 driver와 호환이 잘 되는 CUDA의 version으로, 이는 추천해주는 것뿐이라서 현재 설치되어 사용하고 있는 CUDA의 version을 이야기하는 것이 아니다.
  • GPU Fan 0 48%: 현재 설치되어 있는 GPU의 번호(0~7)와 fan이 장착되어 있는 GPU의 fan 성능을 %로 나타낸 것이다.(Tesla 계열의 GPU는 fan이 없어 N/A(Not Available)로 표기)
  • Name NVIDA RTX A6000: GPU의 model명을 나타낸 것이다.
  • Temp 70C: 현재 GPU의 현재 온도를 섭씨로 표기한 것이다. GPU의 온도가 일정치를 넘어가면 성능이 떨어지게 된다. 보통 70도에서 80도 사이가 적당한 온도이다.
  • Perf P2: Performance의 약자로 P0부터 P12까지 존재한다. 숫자가 작아질수록 GPU의 performance가 좋은 상태를 나타낸다.
  • Persistence-M Off: Persistence-Mode로 on-mode와 off-mode가 존재한다. 기본적으로 default mode는 off이며, on-mode가 되면 power limit을 설정할 수 있다. 즉, power를 얼마나 지속할지 정해줄 수가 있다. GPU 사용시에 지연 시간을 아끼는 장점이 존재하지만, 전력을 더 낭비하는 단점이 존재한다.
  • Pwr:Usage/Cap 192W /300W: GPU의 현재 전력의 사용량과 최대 용량을 나타낸 것이다.
  • Bus-ID 00000000:1B:00.0: Main board마다 가지고 있는 PCI slot에 부여된 Bus-ID이다. 이를 통해서 사용하는 GPU 번호와 main board의 PCI slot을 매칭시킬 수 있다.(중요!)
  • Disp.A off: Linux 설치 시에 Desktop version과 Server version이 존재한다. Desktop version의 경우 화면 출력을 GPU card로 하는 것이 좋고 기본적으로 off이지만 모니터를 연결한 출력 포트의 GPU의 경우 on이 되어 GPU card에 출력이 되고 있음을 의미한다.
  • Memory-Usage 21787MiB / 48682MiB: 현재 사용하고 있는 GPU의 memory와 GPU의 총 memory를 나타낸 것으로, GPU마다 memory의 크기가 다르다. (MiB는 Mebibyte의 약자로 다른 말로는 Mega binary byte가 있다. 우리가 흔히 아는 MB는 Megabyte의 약자로 1,000,000 Byte를 의미하지만, 실제로 1MB memory는 정확하게는 1,048,576 Byte이다. 그래서 보통 2진법 값들을 나타내어 혼돈을 막고자 사이에 "i"를 추가하여 2진법으로 나타낸 것이다. Mega는 1,0002이고 Mebi는 1,0242인 셈이다.)
  • GPU-Util 70%: GPU의 현재 성능을 나타낸 것으로 100%의 성능 중 얼마만큼 사용하고 있는지를 나타내고 있다. 즉, 현재 해당 GPU의 사용량을 나타낸 것이다.
  • Volatile Uncorr.ECC off: on인 상태에서는 error count가 발생해서 0에서 점점 숫자가 증가하게 된다. 이러한 경우에는 system hang이 발생해서 동작하지 않고 응답하지 않는 상태가 되어 system 운영이 불가능한 상태가 된다. 그래서 보통은 off로 설정해서 작업을 한다.
  • Compute M. off: Compute-Mode를 보여주고 있는 것으로 Default는 0번이 된다. 1번은 exclusive thread mode, 2번은 prohibited mode, 3번은 exclusive process mode를 의미한다.
  • MIG M. N/A: NVIDIA GPU를 slice하는 기능으로, MIG M은 MIG-Mode의 약자이고 MIG는 Multi-Instance GPU의 약자이다. CUDA application을 실행시 최대 7개의 개별 GPU instance로 안전하게 분할하여 여러 사용자에게 별도의 GPU를 제공하여 작업을 가속화하는데 도움을 준다. 여러개의 instance를 지원하는 MIG는 오로지 NVIDIA A100 모델에서만 지원이되고 이외에도 필요조건이 존재한다.
  • Type(G/C): 2가지 type모두 GPU에 관련된 것이다.
    • G = Graphcis의 G로 그래픽을 사용하거나 video rendering을 위한 전문가용 3D 그래픽, 게임 등에서 사용되는 NVIDIA GPU의 graphic-mode를 사용하는 process를 의미한다.
    • C = Compute의 C로 CUDA library를 사용하는 NVIDIA GPU의 compute-mode를 사용하는 process를 의미한다. Tensorflow나 Pytorch 등을 사용하는 deep learning의 학습과 테스트하는데 사용된다.
    • C+G = Compute+Graphic을 합친 것으로 compute-mode와 graphic-mode를 함께 사용하는 process를 의미한다.

Troubleshooting

재부팅 후 그래픽카드 인식 안되는 문제

nvidia-smi has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

설치된 그래픽 카드 확인:

lshw -C display

설치된 driver 자동 검색

sudo ubuntu-drivers devices

권장 driver 설치

sudo ubuntu-drivers autoinstall

WARNING

정상적으로 실행되지 않는다.

Insufficient Permissions

$ nvidia-smi -i <GPU-UUID> -c EXCLUSIVE_PROCESS
Unable to set the compute mode for GPU 00000000:5E:00.0: Insufficient Permissions
Terminating early due to previous errors.

결론만 말하면 sudo를 사용하라.

Categories

Favorite site