Home [K8S] Kuberntes에서 A100 GPU Node 의 MIG 설정하기
Post
Cancel

[K8S] Kuberntes에서 A100 GPU Node 의 MIG 설정하기

개요

A100 GPU 의 경우 MIG(Multi-Instance GPU) 사용이 가능합니다. 이를 통해서 1장의 GPU 카드를 작은 용량으로 쪼개어서 사용할 수 있습니다.

image

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 만들기

image

ref. NVIDIA MIG DOCS

MIG 인스턴스는 위와 같이 만들 수 있습니다.

예를 들어 40GB GPU Memory 를 가진 GPU 카드의 경우 아래와 같습니다.

1개의 7g.40gb 혹은 2개의 3g.20gb 혹은 3개의 2g.10gb 혹은 7개의 1g.5gb 로 MIG 인스턴스 생성이 가능합니다.

This post is licensed under CC BY 4.0 by the author.

[K8S] 같은 노드의 CoreDNS 로의 응답이 없는 이슈 (dns resolution failed)

[K8S] 5.4.0-132 커널의 epoll 버그로 인한 etcd leader election 이슈