GPU 접근

GPU 접근 (GPU access)

출처: 문서

본문

NVIDIA GPU 접근하기 (Access an NVIDIA GPU)

사전 요구 사항 (Prerequisites)

공식 NVIDIA 드라이버 페이지를 방문해 올바른 드라이버를 다운로드하고 설치해요. 설치 후 시스템을 재부팅해요.

GPU가 실행 중이고 접근 가능한지 확인해요.

NVIDIA Container Toolkit 설치 (Install NVIDIA Container Toolkit)

공식 NVIDIA Container Toolkit 설치 지침을 따라요.

GPU 노출하기 (Expose GPUs for use)

컨테이너를 시작할 때 --gpus 플래그를 포함하면 GPU 리소스에 접근할 수 있어요.

모든 사용 가능한 GPU를 노출하려면:

$ docker run -it --rm --gpus all ubuntu nvidia-smi

출력은 다음과 같아요:

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.288.01             Driver Version: 535.288.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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 L4                      Off | 00000000:31:00.0 Off |                    0 |
| N/A   40C    P0              27W /  72W |      0MiB / 23034MiB |      4%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

GPU 표의 가장 왼쪽 열은 각 GPU의 인덱스(이전 예시에서 NVIDIA L4의 0)를 보여줘요. 이 인덱스 번호를 사용해 device 옵션으로 특정 GPU를 대상으로 지정해요.

인덱스로 단일 GPU를 노출하려면:

$ docker run -it --rm --gpus device=0 ubuntu nvidia-smi

UUID로 GPU를 노출하려면 먼저 nvidia-smi -L로 UUID를 나열해요:

$ nvidia-smi -L
GPU 0: NVIDIA L4 (UUID: GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a)

그런 다음 UUID를 --gpus에 전달해요:

$ docker run -it --rm --gpus device=GPU-3a23c669-1f69-c64e-cf85-44e9b07e7a2a ubuntu nvidia-smi

여러 GPU가 있는 시스템에서는 인덱스로 여러 개를 노출할 수 있어요. device 값은 쉼표를 포함하므로 따옴표로 묶어야 해요:

$ docker run -it --rm --gpus '"device=0,2"' ubuntu nvidia-smi

이렇게 하면 인덱스 02 — 즉 nvidia-smi 출력에서 나열된 첫 번째와 세 번째 GPU가 노출돼요.

Note NVIDIA GPU는 단일 엔진을 실행하는 시스템에서만 접근할 수 있어요.

NVIDIA capabilities 설정 (Set NVIDIA capabilities)

capabilities를 수동으로 설정할 수 있어요. 예를 들어 Ubuntu에서는 다음을 실행할 수 있어요:

$ docker run --gpus 'all,capabilities=utility' --rm ubuntu nvidia-smi

이렇게 하면 nvidia-smi 도구를 컨테이너에 추가하는 utility 드라이버 capability가 활성화돼요.

capabilities 및 기타 구성은 이미지에서 환경 변수를 통해 설정할 수 있어요. 유효한 변수에 대해서는 nvidia-container-toolkit 문서를 참고하세요. 이 변수들은 Dockerfile에서 설정할 수 있어요.

이 변수들을 자동으로 설정하는 CUDA 이미지도 사용할 수 있어요. 공식 CUDA 이미지 NGC 카탈로그 페이지를 참고하세요.

더 알아보기 (Learn more)