개요
A100 GPU 의 경우 MIG(Multi-Instance GPU) 사용이 가능합니다. 이를 통해서 1장의 GPU 카드를 작은 용량으로 쪼개어서 사용할 수 있습니다.
ref. NVIDIA MIG DOCS
예를 들어 A100 40GB GPU 카드 8장이 붙은 Node 를 가정해보겠습니다.
nvidia-smi
로 조회 시 아래와 같이 GPU 카드를 조회할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
$ nvidia-smi -i 0
Mon May 15 21:35:42 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 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-PCI... Off | 00000000:07:00.0 Off | 0 |
| N/A 32C P0 99W / 400W | 37344MiB / 81251MiB | 100% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
만약 MIG 인스턴스
가 생성된 GPU 카드의 경우는 아래와 같이 MIG Device 들을 조회할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ nvidia-smi -i 0
Mon May 15 21:35:15 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 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-PCI... Off | 00000000:01:00.0 Off | On |
| N/A 39C P0 72W / 250W | 24MiB / 40536MiB | N/A Default |
| | | Enabled |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| MIG devices: |
+------------------+----------------------+-----------+-----------------------+
| GPU GI CI MIG | Memory-Usage | Vol| Shared |
| ID ID Dev | BAR1-Usage | SM Unc| CE ENC DEC OFA JPG|
| | | ECC| |
|==================+======================+===========+=======================|
| 0 1 0 0 | 10MiB / 20096MiB | 42 0 | 3 0 2 0 0 |
| | 0MiB / 32767MiB | | |
+------------------+----------------------+-----------+-----------------------+
| 0 11 0 1 | 3MiB / 4864MiB | 14 0 | 1 0 0 0 0 |
| | 0MiB / 8191MiB | | |
+------------------+----------------------+-----------+-----------------------+
| 0 12 0 2 | 3MiB / 4864MiB | 14 0 | 1 0 0 0 0 |
| | 0MiB / 8191MiB | | |
+------------------+----------------------+-----------+-----------------------+
| 0 13 0 3 | 3MiB / 4864MiB | 14 0 | 1 0 0 0 0 |
| | 0MiB / 8191MiB | | |
+------------------+----------------------+-----------+-----------------------+
| 0 14 0 4 | 3MiB / 4864MiB | 14 0 | 1 0 0 0 0 |
| | 0MiB / 8191MiB | | |
+------------------+----------------------+-----------+-----------------------+
Kubernetes 환경에서 A100 Worker Node 의 MIG 사용을 위해서는 몇 가지 설정이 필요한데요, 해당 내용을 아래에서 한번 다뤄보겠습니다.
Kubernetes 환경에서의 GPU Node 사용
Kubernetes 에서는 GPU 노드의 리소스 사용을 위해서 NVIDIA/k8s-device-plugin 를 사용하고 있습니다.
따라서 MIG 설정이 정상적으로 되어있다면, k8s-device-plugin Daemonset Pod
가 알아서 해당 노드의 GPU 설정을 읽어와 Kubernetes 환경에서 사용할 수 있도록 적용해주고 있습니다.
해당 k8s-device-plugin
컴포넌트는 추후 다른 포스팅에서 다시 한번 다루도록 하겠습니다.
MIG 적용 방법
MIG 사용법은 NVIDIA MIG DOCS 에서 자세하게 나와있지만, 대략적으로 설명을 해보겠습니다.
1.MIG Enable ( 기본은 disable ) : GPU IDs 입력 안할 시 모든 GPU에 적용
- nvidia-smi 실행 시 오른쪽 제일 아래에 보이는 것 처럼 MIG M. 은 Disabled 가 default 값입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
$ nvidia-smi -i 0
Mon May 15 21:32:23 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 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-SXM... Off | 00000000:07:00.0 Off | 0 |
| N/A 32C P0 100W / 400W | 37344MiB / 81251MiB | 100% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
- 이를 Enabled 로 바꾸기 위해서는 아래와 같은 커맨드 실행이 필요합니다
1
2
3
$ sudo nvidia-smi -i 0 -mig 1
Enabled MIG Mode for GPU 00000000:36:00.0
All done.
- nvidia-smi 실행 시 아래와 같이
Enabled *
로*
가 붙어있으면, 해당 장비 재시작을 하여Enabled
로 바꿔줘야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ sudo nvidia-smi
Mon Dec 5 16:56:16 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 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-PCI... Off | 00000000:01:00.0 Off | On |
| N/A 37C P0 67W / 250W | 0MiB / 40536MiB | N/A Default |
| | | Enabled*|
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A100-PCI... Off | 00000000:25:00.0 Off | On |
| N/A 38C P0 71W / 250W | 0MiB / 40536MiB | N/A Default |
| | | Enabled*|
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA A100-PCI... Off | 00000000:41:00.0 Off | On |
| N/A 37C P0 69W / 250W | 0MiB / 40536MiB | N/A Default |
| | | Enabled*|
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA A100-PCI... Off | 00000000:61:00.0 Off | On |
| N/A 36C P0 68W / 250W | 0MiB / 40536MiB | N/A Default |
| | | Enabled*|
+-------------------------------+----------------------+----------------------+
1
$ nvidia-smi -i <GPU IDs> -mig 1
2.VM 환경에선 Reboot 필요 : 만약 gpu를 사용하는 모니터링 시스템 agent가 동작한다면 먼저 nvsm, dcgm 서비스를 해주어야 합니다.
3.제공하는 인스턴스 프로파일 리스트 확인
1
$ sudo nvidia-smi mig -lgip
4.현재 GPU 상태에서 프로파일 별 추가 가능한 GPU id 확인
1
$ sudo nvidia-smi mig -lgipp
5.인스턴스 생성 및 할당 : 아래 예시는 모든 GPU에 3g.20gb 2개 생성
1
$ sudo nvidia-smi mig -cgi 9,3g.20gb -C
6.정상적으로 생성되었는지, 사용 가능한 인스턴스 목록을 확인 해보기 ( MIG devices 확인 )
1
2
$ sudo nvidia-smi
$ sudo nvidia-smi -L
MIG Instance 만들기
ref. NVIDIA MIG DOCS
MIG 인스턴스는 위와 같이 만들 수 있습니다.
예를 들어 40GB GPU Memory 를 가진 GPU 카드의 경우 아래와 같습니다.
1개의 7g.40gb 혹은 2개의 3g.20gb 혹은 3개의 2g.10gb 혹은 7개의 1g.5gb 로 MIG 인스턴스 생성이 가능합니다.