Lifematics Corporate Blog

Lifematics社のコーポレートブログへようこそ!

MIG設定手順

MIGってなぁに?

MIG(Multi-Instance GPU)は、NVIDIAGPUを複数の仮想GPUに分割して、リソースを効率的に使うための技術です。 これを使うと、1つのGPUを複数のユーザーやアプリケーションで共有できるようになります。 MIGを使えば、GPUリソースの無駄を減らして、より多くのタスクを同時に実行することができます。

以下の公式ユーザーガイドを参考に設定していきます。 docs.nvidia.com

要件

今回は、例としてH100が8本搭載されている筐体へ、以下の要件で設定する手順を書きます。

GPU番号 MIG設定 メモリ使用量
1~2 なし -
3~5 1g.10gb 10GBずつ
6~8 2g.20gb 20GBずつ

スライスの切り方は、H100の場合、下図の通りの切り方に制限されています。

Profile ID Profile Name Memory (GiB) SMs GPU Instances Compute Instances Description
0 1g.10gb 10 14 7 7 1/7th of GPU
1 2g.20gb 20 28 3 3 2/7th of GPU
2 3g.40gb 40 42 2 2 3/7th of GPU
3 4g.40gb 40 56 1 1 4/7th of GPU
4 7g.80gb 80 98 1 1 Full GPU

設定手順

作業前確認

作業前にGPU管理サービスの状態やGPUの状態を確認します。

 # systemctl status nvsm
 ● nvsm.service - NVIDIA System Management
    Loaded: loaded (/lib/systemd/system/nvsm.service; enabled; vendor preset: enabled)
    Active: active (running) since Thu 2024-01-01 12:00:00 JST; 1h 30min ago
  Main PID: 1234 (nvsm)
     Tasks: 10 (limit: 4915)
    Memory: 50.0M
    CGroup: /system.slice/nvsm.service
            └─1234 /usr/bin/nvsm
 # systemctl status dcgm
 ● dcgm.service - NVIDIA Data Center GPU Manager
    Loaded: loaded (/lib/systemd/system/dcgm.service; enabled; vendor preset: enabled)
    Active: inactive (dead) since Thu 2024-01-01 12:00:00 JST; 1h 30min ago
  Main PID: 5678 (dcgm)
     Tasks: 0 (limit: 4915)
    Memory: 0B
    CGroup: /system.slice/dcgm.service
            └─5678 /usr/bin/dcgm
 # nvidia-smi
 Thu Jan 01 12:00:00 2024
 +---------------------------------------------------------------------------------------+
 | NVIDIA-SMI 535.54.03              Driver Version: 535.54.03    CUDA Version: 12.0     |
 |-----------------------------------------+----------------------+----------------------|
 | 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 H100 80GB HBM3          On  | 00000000:00:00.0 Off |                    0 |
 | N/A   30C    P0              70W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   1  NVIDIA H100 80GB HBM3          On  | 00000000:01:00.0 Off |                    0 |
 | N/A   30C    P0              72W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   2  NVIDIA H100 80GB HBM3          On  | 00000000:02:00.0 Off |                    0 |
 | N/A   32C    P0              70W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   3  NVIDIA H100 80GB HBM3          On  | 00000000:03:00.0 Off |                   On |
 | N/A   32C    P0              74W / 700W |     100MiB / 81559MiB|      0%      Default |
 |                                         |                      |              Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   4  NVIDIA H100 80GB HBM3          On  | 00000000:04:00.0 Off |                   On |
 | N/A   30C    P0              73W / 700W |     23MiB / 81559MiB |      0%      Default |
 |                                         |                      |              Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   5  NVIDIA H100 80GB HBM3          On  | 00000000:05:00.0 Off |                   On |
 | N/A   29C    P0              73W / 700W |     69MiB / 81559MiB |      0%      Default |
 |                                         |                      |              Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   6  NVIDIA H100 80GB HBM3          On  | 00000000:06:00.0 Off |                   On |
 | N/A   32C    P0              72W / 700W |     70MiB / 81559MiB |      0%      Default |
 |                                         |                      |              Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   7  NVIDIA H100 80GB HBM3          On  | 00000000:07:00.0 Off |                    0 |
 | N/A   34C    P0              72W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+

GPU管理サービスの停止

マニュアルにはdcgmも停止しろって書いてあるんですが、今回の環境の場合、dcgmはもともと停止していたため何もしていません。 前項の状態をもとにお好みで適量ふりかけてください。 (設定変更系のコマンドなのでsudo必要な場合が多いです)

 $ systemctl stop nvsm
 $ systemctl stop dcgm

MIGモードの有効化

次に、MIGモードを手動で有効化します。カンマ区切りでまとめて有効化ができます。 ↑のnvidia-smi出力と比較すると、有効化したGPUについてはGPU-UtilN/Aになって、MIG M.がEnabled`になります。

 $ nvidia-smi -i 2,3,4,5,6,7 -mig 1
 # nvidia-smi
 Thu Jan 01 12:00:00 2024
 +---------------------------------------------------------------------------------------+
 | NVIDIA-SMI 535.54.03              Driver Version: 535.54.03    CUDA Version: 12.0     |
 |-----------------------------------------+----------------------+----------------------|
 | 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 H100 80GB HBM3          On  | 00000000:00:00.0 Off |                    0 |
 | N/A   30C    P0              70W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   1  NVIDIA H100 80GB HBM3          On  | 00000000:01:00.0 Off |                    0 |
 | N/A   30C    P0              72W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   2  NVIDIA H100 80GB HBM3          On  | 00000000:02:00.0 Off |                    0 |
 | N/A   32C    P0              70W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |              Enabled |
 +-----------------------------------------+----------------------+----------------------+
 |   3  NVIDIA H100 80GB HBM3          On  | 00000000:03:00.0 Off |                   On |
 | N/A   32C    P0              74W / 700W |     89MiB / 81559MiB |     N/A      Default |
 |                                         |                      |              Enabled |
 +-----------------------------------------+----------------------+----------------------+
 |   4  NVIDIA H100 80GB HBM3          On  | 00000000:04:00.0 Off |                   On |
 | N/A   30C    P0              73W / 700W |     89MiB / 81559MiB |     N/A      Default |
 |                                         |                      |              Enabled |
 +-----------------------------------------+----------------------+----------------------+
 |   5  NVIDIA H100 80GB HBM3          On  | 00000000:05:00.0 Off |                   On |
 | N/A   29C    P0              73W / 700W |     76MiB / 81559MiB |     N/A      Default |
 |                                         |                      |              Enabled |
 +-----------------------------------------+----------------------+----------------------+
 |   6  NVIDIA H100 80GB HBM3          On  | 00000000:06:00.0 Off |                   On |
 | N/A   32C    P0              72W / 700W |     75MiB / 81559MiB |     N/A      Default |
 |                                         |                      |              Enabled |
 +-----------------------------------------+----------------------+----------------------+
 |   7  NVIDIA H100 80GB HBM3          On  | 00000000:07:00.0 Off |                    0 |
 | N/A   34C    P0              72W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |              Enabled |
 +-----------------------------------------+----------------------+----------------------+

設定可能なプロファイルの確認

設定可能なプロファイル(スライスの切り方)を確認します。

 # nvidia-smi mig -lgip
 +-----------------------------------------------------------------------------+
 | GPU instance profiles:                                                      |
 | GPU   Name             ID    Instances   Memory     P2P    SM    DEC   ENC  |
 |                              Free/Total   GiB              CE    JPEG  OFA  |
 |=============================================================================|
 |   0  MIG 1g.10gb       19     7/7        9.62       No     14     1     0   |
 |                                                             1     1     0   |
 +-----------------------------------------------------------------------------+
 |   0  MIG 1g.10gb+me    20     1/1        9.62       No     14     1     0   |
 |                                                             1     1     1   |
 +-----------------------------------------------------------------------------+
 |   0  MIG 1g.20gb       15     4/4        19.50      No     14     1     0   |
 |                                                             1     1     0   |
 +-----------------------------------------------------------------------------+
 |   0  MIG 2g.20gb       14     3/3        19.50      No     30     2     0   |
 |                                                             2     2     0   |
 +-----------------------------------------------------------------------------+
 |   0  MIG 3g.40gb        9     2/2        39.25      No     46     3     0   |
 |                                                             3     3     0   |
 +-----------------------------------------------------------------------------+
 |   0  MIG 4g.40gb        5     1/1        39.25      No     62     4     0   |
 |                                                             4     4     0   |
 +-----------------------------------------------------------------------------+
 |   0  MIG 7g.80gb        0     1/1        79.00      No     114    7     0   |
 |                                                             8     7     1   |
 +-----------------------------------------------------------------------------+
 # nvidia-smi mig -lgipp
 GPU  0 Profile ID 19 Placements: {0,1,2,3,4,5,6}:1
 GPU  0 Profile ID 20 Placements: {0,1,2,3,4,5,6}:1
 GPU  0 Profile ID 15 Placements: {0,2,4,6}:2
 GPU  0 Profile ID 14 Placements: {0,2,4}:2
 GPU  0 Profile ID  9 Placements: {0,4}:4
 GPU  0 Profile ID  5 Placement : {0}:4
 GPU  0 Profile ID  0 Placement : {0}:8

MIGインスタンスの作成

次に、MIGインスタンスを作成します。

 $ nvidia-smi mig -i 2 -cgi 1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb -C
 $ nvidia-smi mig -i 3 -cgi 1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb -C
 $ nvidia-smi mig -i 4 -cgi 1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb,1g.10gb -C
 #スライスのパターン内であれば一つずつ設定も可能
 $ nvidia-smi mig -i 5 -cgi 2g.20gb -C
 $ nvidia-smi mig -i 5 -cgi 2g.20gb -C
 $ nvidia-smi mig -i 5 -cgi 2g.20gb -C
 $ nvidia-smi mig -i 6 -cgi 2g.20gb,2g.20gb,2g.20gb -C
 $ nvidia-smi mig -i 7 -cgi 2g.20gb,2g.20gb,2g.20gb -C

変更後の状態確認

最後に、変更後の状態を確認します。 MIG devices欄が増え、MIGインスタンスの情報が表示されるようになります。

 $ nvidia-smi mig -lgi
 +-------------------------------------------------------+
 | GPU instances:                                        |
 | GPU   Name             Profile  Instance   Placement  |
 |                          ID       ID       Start:Size |
 |=======================================================|
 |   2  MIG 1g.10gb         19        7          0:1     |
 +-------------------------------------------------------+
 |   2  MIG 1g.10gb         19        8          1:1     |
 +-------------------------------------------------------+
 ~~~~~~~~~~~~~~~~~~~~~~~~以下略~~~~~~~~~~~~~~~~~~~~~~~~~~~

 $ nvidia-smi mig -lci
 +--------------------------------------------------------------------+
 | Compute instances:                                                 |
 | GPU     GPU       Name             Profile   Instance   Placement  |
 |       Instance                       ID        ID       Start:Size |
 |         ID                                                         |
 |====================================================================|
 |   2      7       MIG 1g.10gb          0         0          0:1     |
 +--------------------------------------------------------------------+
 |   2      8       MIG 1g.10gb          0         0          0:1     |
 +--------------------------------------------------------------------+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 $ nvidia-smi
 +---------------------------------------------------------------------------------------+
 | NVIDIA-SMI 535.54.03              Driver Version: 535.54.03    CUDA Version: 12.0     |
 |-----------------------------------------+----------------------+----------------------+
 | 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 H100 80GB HBM3          On  | 00000000:1B:00.0 Off |                    0 |
 | N/A   28C    P0              70W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 +-----------------------------------------+----------------------+----------------------+
 |   1  NVIDIA H100 80GB HBM3          On  | 00000000:43:00.0 Off |                    0 |
 | N/A   29C    P0              72W / 700W |      4MiB / 81559MiB |      0%      Default |
 |                                         |                      |             Disabled |
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 +-----------------------------------------+----------------------+----------------------+
 |   7  NVIDIA H100 80GB HBM3          On  | 00000000:DF:00.0 Off |                   On |
 | N/A   33C    P0              72W / 700W |      2MiB / 81559MiB |     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|                       |
 |==================+================================+===========+=======================|
 |  2    7   0   0  |              12MiB /  9984MiB  | 16      0 |  1   0    1    0    1 |
 |                  |               0MiB / 16383MiB  |           |                       |
 +------------------+--------------------------------+-----------+-----------------------+
 |  2    8   0   1  |              12MiB /  9984MiB  | 16      0 |  1   0    1    0    1 |
 |                  |               0MiB / 16383MiB  |           |                       |
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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

(おまけ)MIG設定削除

MIG設定の削除は以下のコマンドもしくは筐体の再起動で行えます。

  • 全てのMIG設定削除
 $ nvidia-smi mig -dci && sudo nvidia-smi mig -dgi
 # nvidia-smi -mig 0
  • 個別のMIG設定削除
 #MIG
 $ nvidia-smi mig -dgi <GPU ID> -i <GI ID>
 #GPU
 $ nvidia-smi -i <GPU ID> -mig 0

次回予告

この記事では、MIGの手動設定について紹介しました。 手動設定には、再起動するとMIGの有効化設定から全ての設定が消えるという致命的な弱点があります。 次の記事では、再起動時にMIG設定を自動的に適用するためのmig-partedの設定について詳しく説明します。

参考

公式紹介ページMulti-Instance GPU (MIG) | NVIDIA
公式ユーザーガイド1. Introduction — NVIDIA Multi-Instance GPU User Guide r560 documentation
公式のわかりやすい解説記事「DGX A100 テストドライブ」で MIG を試してみた #GPU - Qiita