26
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「DGX A100 テストドライブ」で MIG を試してみた

Last updated at Posted at 2021-01-26

エヌビディアの佐々木です。

この記事は、エヌビディアのパートナー企業で、多くの GPU 搭載コンピューターの導入を手掛けている株式会社ジーデップ・アドバンスさん (以下: GDEP-A) との共同企画です。

昨年の 9 月に、「NVIDIA DGX A100 開封の儀」なる動画が公開されましたが、ご覧いただけましたか?エヌビディアからは森野と私が出演して、ホンモノ (GDEP-A の自社用) の DGX A100 を開封し、その外観と内部を解説したものです。(実は、COVID-19 の影響で本社へ行けなくなったため、私も DGX A100 の実機に触れたのは、あの撮影が初めてでした!)

この時開封した DGX A100 は現在、設備の整った DGX Ready データセンターに設置され、DGX A100 の購入を検討中のお客様向けの「NVIDIA DGX A100 TRY & BUY プログラム (DGX A100 テストドライブ)」で利用されています。私もこの DGX A100 を借りることができましたので、ちょっとどんな感じか紹介したいと思います。

テストドライブの形式

テストドライブでは、1 台の DGX A100 へのリモートアクセスが提供されます。もちろん管理者権限が得られますし、SSH でのログインのほか、お願いすれば BMC (Baseboard Management Controller: サーバーに内蔵されている管理用のコンピューター) へのアクセスも可能なので、リモートアクセスとはいえ、実機への物理アクセスに近い状態で、電源の OFF/ON や BIOS 設定の変更など、何でも試すことができます。

Web ブラウザで BMC にアクセスしたところ:

電源のコントロール:

BIOS 画面:

GDEP-A さんによるわかりやすい説明書も提供されるので、利用開始は非常に簡単です。

Multi-Instance GPU (MIG) を試してみよう

さて、せっかく DGX A100 をまるまる 1 台借りることができたので、NVIDIA A100 GPU の特徴である Multi-Instance GPU (MIG: ミグ) を試してみました。エヌビディア社内にはもちろん DGX A100 がたくさんあって、いつでもジョブを実行できるのですが、自由に MIG の設定を変えたり、再起動したりできる環境は、実はそんなに多くないのです。テストドライブはまたとないチャンス!

MIG とは

MIG は、NVIDIA A100 GPU で初めて実装され、そして現時点では A100 及び A30 GPU のみが備える GPU の物理分割機構です。GPU のパーティショニングとしては、すでに NVIDIA 仮想 GPU (vGPU) がありますが、vGPU と MIG は別物です。MIG は、ハイパーバイザなどの外部ソフトウェアに依存しない GPU 単体の機能で、A100 GPU では最大 7 つ、A30 GPU では最大 4 つのスライスに分割することができます。なお、この記事では、A100 GPU を対象にします。

7 分割というのはやや半端な印象を与えるかもしれませんが、これは A100 GPU の内部構造に由来します。下図の通り、A100 GPU (に搭載されている GA100 チップ) には 8 つの GPC (Graphics Processing Cluster) が存在し、そのうち 7 つが有効化されています。それぞれの GPC はいわば「小さな GPU」ともいえる存在で、MIG はこの GPC を単位に GPU を分割します。GPC が 7 つあるので、「最大 7 分割」なのです。

なお、GPC の内部には TPC (Texture Processing Cluster) があり、それぞれの TPC が、演算器の集まりである SM (Streaming Multiprocessor) を 2 個ずつ含んでいるのですが、上の図を見ていただくと、GPC 毎の有効 TPC 数が、7 あるいは 8 とばらついているのがわかります(灰色の部分は無効)。これでは、7 分割した MIG のスライスに含まれる演算器の数が不揃いになってしまいます。そのため、A100 GPU は MIG がデフォルト状態では無効化されており、MIG を有効にすると、下図の通りすべての GPC で 7 つの TPC だけが有効になります。

つまり、MIG を有効にすると、使える SM が 10 個減ってしまうわけですが、そもそも「A100 GPU の能力を 1 つのプログラムでは使いきれないから複数に分割」するのが MIG の動機ですから、これが大きな問題になることはない、と信じています。

MIG の有効化とインスタンスの作成

ここから、具体的に MIG の使い方を紹介してきます。まず、先ほど紹介したとおり、MIG はデフォルトでは無効化されていますので、これを有効化します。

と、その前に。

GPU 関連サービスの停止

何らかのプロセスが GPU にアクセスしていると、MIG の有効・無効の切り替えができません。DGX A100 では、標準で動作している NVSM (NVIDIA System Management) 及び DCGM (Data Center GPU Manager) サービスがそれに該当します。まずはこれらを停止する必要があります。

# systemctl stop nvsm
# systemctl stop dcgm

MIG の有効化

MIG の有効・無効は A100 GPU 1 基ずつ個別に設定できるので、まずは 8 基ある A100 のうち 1 基だけ、MIG を有効にしてみましょう。

# nvidia-smi -i 0 -mig 1
Enabled MIG Mode for GPU 00000000:07:00.0
All done.

これで、MIG が有効になりました。確認してみましょう。

# nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.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  A100-SXM4-40GB      On   | 00000000:07:00.0 Off |                   On |
| N/A   31C    P0    69W / 400W |      0MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
~ 中略 ~
+-------------------------------+----------------------+----------------------+
|   7  A100-SXM4-40GB      On   | 00000000:BD:00.0 Off |                    0 |
| N/A   33C    P0    55W / 400W |      0MiB / 40537MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| MIG devices:                                                                |
+------------------+----------------------+-----------+-----------------------+
| GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
|      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
|                  |                      |        ECC|                       |
|==================+======================+===========+=======================|
|  No MIG devices found                                                       |
+-----------------------------------------------------------------------------+

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

0番 (先頭) の A100 で、右端の "MIG M." 欄が Enabled になりましたね。しかし、まだ MIG を有効化しただけで、実際の分割を行ってはいません。そのため、下のほうの MIG devices: 欄が "No MIG devices found" となっています。

GPU インスタンス (GI) とコンピュート インスタンス (CI)

MIG における GPU の分割は、まず「GPU インスタンス (GI)」の作成という形で行われます。前述の通り、7 つある GPC を組み合わせる形でインスタンスを作っていくわけですが、作成可能なインスタンスの種類は「GPU インスタンス プロファイル」として定義されており、下記のコマンドで確認できます。(-lgip オプションは、List Gpu Instance Profile の略です)

# 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.5gb     19     7/7        4.75       No     14     0     0   |
|                                                          1     0     0   |
+--------------------------------------------------------------------------+
|   0  MIG 2g.10gb    14     3/3        9.75       No     28     1     0   |
|                                                          2     0     0   |
+--------------------------------------------------------------------------+
|   0  MIG 3g.20gb     9     2/2        19.62      No     42     2     0   |
|                                                          3     0     0   |
+--------------------------------------------------------------------------+
|   0  MIG 4g.20gb     5     1/1        19.62      No     56     2     0   |
|                                                          4     0     0   |
+--------------------------------------------------------------------------+
|   0  MIG 7g.40gb     0     1/1        39.50      No     98     5     0   |
|                                                          7     1     1   |
+--------------------------------------------------------------------------+

1g.5gb は、1 個の GPC と、5GB のメモリを備える最小のインスタンスで、最大 7 個作成できます。2g.10gb は 1g.5gb の2倍の大きさ、4g.20gb ならさらにその 2 倍です。7g.40gb は、A100 全体を使った最大のインスタンスで、当然 1 基の A100 に 1 個しか作れません。

例えば 1g.5gb、2g.10gb、4g.20gb を 1 個ずつ作ると下図のようになりますが、ここで注目していただきたいのは、図の中の「コンピュート インスタンス」の部分です。

単純に 3 つの GPU インスタンスを作成した例

MIG では、GPU インスタンス (GI) を作るだけでは、まだそれは 1 個の GPU として機能しません。GI の中に必ず、コンピュート インスタンス (CI) が必要です。CI は、この図のように GI と 1:1 でも構いませんし、複数の GPC を持つ GI では、GPC の数を上限として、複数の CI を定義できます (後述)。

GI と CI の作成

なんだか話が少しややこしくなってしまったので、実際にインスタンスを作ってみましょう。先ほどの図と同じように、1g.5gb、2g.10gb、4g.20gb を 1 個ずつ作ってみます。-cgi オプションは Create Gpu Instance の略です。さらに、-C オプションをつけることで、GI 内に、GI と 1:1 になる大きさの CI を同時に作ることができます。
※ なお、この -C オプションは、450.80.02 より前のドライバを使っている環境では使えません。

# nvidia-smi mig -cgi 1g.5gb,2g.10gb,4g.20gb -C
Successfully created GPU instance ID  9 on GPU  0 using profile MIG 1g.5gb (ID 19)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  9 using profile MIG 1g.5gb (ID  0)
Successfully created GPU instance ID  3 on GPU  0 using profile MIG 2g.10gb (ID 14)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  3 using profile MIG 2g.10gb (ID  1)
Successfully created GPU instance ID  2 on GPU  0 using profile MIG 4g.20gb (ID  5)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  2 using profile MIG 4g.20gb (ID  3)

3 つの GI と、それぞれの GI に 1 つずつの CI が作成されました。

作成した GI/CI の確認

nvidia-smi で確認してみましょう。"MIG devices: " 欄に注目です。 3 つの GI が確認できますね。

# nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
~ 中略 ~
+-----------------------------------------------------------------------------+
| MIG devices:                                                                |
+------------------+----------------------+-----------+-----------------------+
| GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
|      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
|                  |                      |        ECC|                       |
|==================+======================+===========+=======================|
|  0    2   0   0  |     14MiB / 20096MiB | 56      0 |  4   0    2    0    0 |
|                  |      0MiB / 32767MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0    3   0   1  |      7MiB /  9984MiB | 28      0 |  2   0    1    0    0 |
|                  |      0MiB / 16383MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+

左側の方に、何種類か ID が表示されていますが、これらの意味は次の通りです。

  • GPU: MIG とは無関係に、A100 GPU 単体を識別する番号。DGX A100 には A100 GPU が 8 基搭載されているので、この ID は 0 から 7 まで。
  • GI ID: GPU インスタンスの ID。GPU 内でユニーク。GI の作成から削除までの間、不変。
  • CI ID: コンピュート インスタンスの ID。GI 内でユニーク。CI の作成から削除までの間、不変。
  • MIG Dev: 「今見えている GPU 内の CI」に連番を振ったもの。GPU 内でユニーク。環境変数 CUDA_VISIBLE_DEVICES などの設定により、同じ CI に別の番号がつくことが当然ある。

nvidia-smi -L では、各 CI を指す UUID (正確には、GPU の UUID に GI ID と CI ID を付与したもの) が得られます。この UUID、後ほど使います。

# nvidia-smi -L
GPU 0: A100-SXM4-40GB (UUID: GPU-a4139e7e-4d09-d80b-486e-030e04d3e4b1)
  MIG 4g.20gb Device 0: (UUID: MIG-GPU-a4139e7e-4d09-d80b-486e-030e04d3e4b1/2/0)
  MIG 2g.10gb Device 1: (UUID: MIG-GPU-a4139e7e-4d09-d80b-486e-030e04d3e4b1/3/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-a4139e7e-4d09-d80b-486e-030e04d3e4b1/9/0)
GPU 1: A100-SXM4-40GB (UUID: GPU-731444f0-aa05-00b0-a35f-ea9dc09ce349)
GPU 2: A100-SXM4-40GB (UUID: GPU-d55668a0-bd8d-be8e-cf19-14ba757360a5)
GPU 3: A100-SXM4-40GB (UUID: GPU-fea1bc89-8f1d-f399-36ac-2debab0e6a59)
GPU 4: A100-SXM4-40GB (UUID: GPU-bc6d7c29-3fc5-6430-6b41-5da0793a14ed)
GPU 5: A100-SXM4-40GB (UUID: GPU-eb5d3a40-2edf-f587-5cdd-40b67a07cc3e)
GPU 6: A100-SXM4-40GB (UUID: GPU-66757085-9010-e66d-d7f8-28b3c59d3cdc)
GPU 7: A100-SXM4-40GB (UUID: GPU-e87e3b42-52e7-a3b2-7b8d-b3b9833dff58)

また、 nvidia-smi mig -lgi (lgi: List GPU Instance) コマンドでも、GI の一覧が取得できます。

# nvidia-smi mig -i 0 -lgi
+----------------------------------------------------+
| GPU instances:                                     |
| GPU   Name          Profile  Instance   Placement  |
|                       ID       ID       Start:Size |
|====================================================|
|   0  MIG 1g.5gb       19        9          6:1     |
+----------------------------------------------------+
|   0  MIG 2g.10gb      14        3          4:2     |
+----------------------------------------------------+
|   0  MIG 4g.20gb       5        2          0:4     |
+----------------------------------------------------+

そろそろ nvidia-smi mig コマンドのパターンが読めてきましたよね?CI の一覧を取得するなら、-lci (List Compute Instance) です。

# nvidia-smi mig -i 0 -lci
+--------------------------------------------------------------------+
| Compute instances:                                                 |
| GPU     GPU       Name             Profile   Instance   Placement  |
|       Instance                       ID        ID       Start:Size |
|         ID                                                         |
|====================================================================|
|   0      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0      3       MIG 2g.10gb          1         0          0:2     |
+--------------------------------------------------------------------+
|   0      2       MIG 4g.20gb          3         0          0:4     |
+--------------------------------------------------------------------+

GI に複数の CI を作ってみる

前述の通り、GI には複数の CI を作ることができます。同一 GI 内の複数の CI は、専用の演算器 (GPC) を持ちますが、メモリを共有しています。
例えば下の図では、4g.20gb という GI 内に、4 つの CI (1c.4g.20gb) を作っています。一つの 1c.4g.20gb は、演算器の数では 1g.5gb と一緒ですが、20GB の GPU メモリにアクセス可能です。

4c.20gb に 4 つの CI

先ほどは、nvidia mig -cgi-C オプションを付けて簡単に CI を作ったので、4g.20gb にも CI が一つしかありませんでした。今度は、上の図と同じように、4g.20gb には 4 つの CI を作ってみましょうか。

CI のプロファイルを確認

まず、作成可能なコンピュートインスタンスのプロファイルを確認してみます。はい。 -lcip (List Compute Instance Profile) です。
先ほど作った 4g.20gb の GI の GPU Instance ID は 2 なので、 -gi 2 で絞り込んでみます。

# nvidia-smi mig -gi 2 -lcip
+--------------------------------------------------------------------------------------+
| Compute instance profiles:                                                           |
| GPU     GPU       Name             Profile  Instances   Exclusive       Shared       |
|       Instance                       ID     Free/Total     SM       DEC   ENC   OFA  |
|         ID                                                          CE    JPEG       |
|======================================================================================|
|   0      2       MIG 1c.4g.20gb       0      4/4           14        2     0     0   |
|                                                                      4     0         |
+--------------------------------------------------------------------------------------+
|   0      2       MIG 2c.4g.20gb       1      2/2           28        2     0     0   |
|                                                                      4     0         |
+--------------------------------------------------------------------------------------+
|   0      2       MIG 4g.20gb          3*     1/1           56        2     0     0   |
|                                                                      4     0         |
+--------------------------------------------------------------------------------------+

Profile ID が 0 の、1c.4g.20gb というのがありますね。これが、GPC を 1 個だけ使う CI のプロファイルです。これを 4 個作ってやればよいわけです。

既存の CI の削除

まず、既存の CI を削除します。-gi で、GPU インスタンスの ID を指定して、-dci (=Destroy Compute Instance) します。

# nvidia-smi mig -gi 2 -dci
Successfully destroyed compute instance ID  0 from GPU  0 GPU instance ID  2

新たな CI を作成

では、空っぽになった 4g.20gb の GI に、新たな CI を作ります。1c.4g.20gb の Profile ID である 0 を指定して、 -cci (Create Compute Instance) します。

# nvidia-smi mig -gi 2 -cci 0
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  2 using profile MIG 1c.4g.20gb (ID  0)

とりあえず、確認してみましょう。できてますね。

# nvidia-smi mig -gi 2 -lci
+--------------------------------------------------------------------+
| Compute instances:                                                 |
| GPU     GPU       Name             Profile   Instance   Placement  |
|       Instance                       ID        ID       Start:Size |
|         ID                                                         |
|====================================================================|
|   0      2       MIG 1c.4g.20gb       0         0          0:1     |
+--------------------------------------------------------------------+

4g.20gb (GI) には 1c.4g.20gb (CI) が 4 つ作れますので、あと 3 つ作りましょう。

# nvidia-smi mig -gi 2 -cci 0
Successfully created compute instance ID  1 on GPU  0 GPU instance ID  2 using profile MIG 1c.4g.20gb (ID  0)
# nvidia-smi mig -gi 2 -cci 0
Successfully created compute instance ID  2 on GPU  0 GPU instance ID  2 using profile MIG 1c.4g.20gb (ID  0)
# nvidia-smi mig -gi 2 -cci 0
Successfully created compute instance ID  3 on GPU  0 GPU instance ID  2 using profile MIG 1c.4g.20gb (ID  0)

改めて確認、ちゃんと 4 つできましたね。

# nvidia-smi mig -gi 2 -lci
+--------------------------------------------------------------------+
| Compute instances:                                                 |
| GPU     GPU       Name             Profile   Instance   Placement  |
|       Instance                       ID        ID       Start:Size |
|         ID                                                         |
|====================================================================|
|   0      2       MIG 1c.4g.20gb       0         0          0:1     |
+--------------------------------------------------------------------+
|   0      2       MIG 1c.4g.20gb       0         1          1:1     |
+--------------------------------------------------------------------+
|   0      2       MIG 1c.4g.20gb       0         2          2:1     |
+--------------------------------------------------------------------+
|   0      2       MIG 1c.4g.20gb       0         3          3:1     |
+--------------------------------------------------------------------+

nvidia-smi -L でも確認してみます。

# nvidia-smi -L
GPU 0: A100-SXM4-40GB (UUID: GPU-391cab19-446b-9b97-5eca-d30416a299de)
  MIG 1c.4g.20gb Device 0: (UUID: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/2/0)
  MIG 1c.4g.20gb Device 1: (UUID: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/2/1)
  MIG 1c.4g.20gb Device 2: (UUID: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/2/2)
  MIG 1c.4g.20gb Device 3: (UUID: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/2/3)
  MIG 2g.10gb Device 4: (UUID: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/3/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/9/0)
GPU 1: A100-SXM4-40GB (UUID: GPU-8ba56bff-d648-6313-4754-9fc3fe27255f)
GPU 2: A100-SXM4-40GB (UUID: GPU-b3d39792-5a5c-4097-d1e2-243f13876a90)
GPU 3: A100-SXM4-40GB (UUID: GPU-4a18354b-102e-afba-01b6-fc7110238d07)
GPU 4: A100-SXM4-40GB (UUID: GPU-f539233d-cae6-fa4c-62bf-374db51c0f1e)
GPU 5: A100-SXM4-40GB (UUID: GPU-e7057e65-91a2-f25e-212f-aab3c83ebf85)
GPU 6: A100-SXM4-40GB (UUID: GPU-6531d762-fc17-0c9c-7d30-0d1d63ad5e23)
GPU 7: A100-SXM4-40GB (UUID: GPU-3aa368d6-3830-bccf-2679-6edd8f282dfc)

これで、GI と CI をひとまず作成することができました。

プログラムの実行

では、いよいよ MIG でプログラムを実行してみましょう。まずはシンプルに、コンテナを使わず生の Linux 上で、題材は何でも良いのですが、MIG のユーザーガイドに倣って、CUDA Toolkit に付属のサンプルプログラム BlackScholes を使います。

/usr/local/cuda/samples/4_Finance/BlackScholes ディレクトリで sudo make して、ビルドします。

これを、先ほど作成した、 1c.4g.20gb と 2g.10gb で動かしてみます。nvidia-smi -L で取得した UUID でいうと:

  • 1c.4g.20gb: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/2/0
  • 2g.10gb: MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/3/0

ですね。この長ーい UUID を、おなじみの環境変数 CUDA_VISIBLE_DEVICES に設定すれば OK です。
下記のようにして、 BlackScholes を 2 プロセス動かしてみます。

$ CUDA_VISIBLE_DEVICES=MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/2/0 /usr/local/cuda/samples/4_Finance/BlackScholes/BlackScholes &
$ CUDA_VISIBLE_DEVICES=MIG-GPU-391cab19-446b-9b97-5eca-d30416a299de/3/0 /usr/local/cuda/samples/4_Finance/BlackScholes/BlackScholes

nvidia-smi で確認すると、Processes 欄に、BlackScholes のプロセスと、それが動いている GI/CI 情報が表示されていますね!

# nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
~ 中略 ~
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0    2    0       7736      C   ...BlackScholes/BlackScholes      153MiB |
|    0    3    0       7737      C   ...BlackScholes/BlackScholes      203MiB |
+-----------------------------------------------------------------------------+

コンテナでの MIG の利用

次に、NGC のコンテナイメージで MIG を使ってみましょう。DGX A100 には新しい (19.03 以降の) Docker がインストールされていますから、GPU の指定には下記のように --gpus オプションを使い、そのオプションへの引数として、 device={MIG の UUID} を付ければ OK です。

下記のコマンドで、TensorFlow コンテナ内で nvidia-smi を実行してみます。

# docker run --gpus device=MIG-GPU-a4139e7e-4d09-d80b-486e-030e04d3e4b1/2/0 --rm -it nvcr.io/nvidia/tensorflow:20.09-tf2-py3 nvidia-smi

================
== TensorFlow ==
================
~ 中略 ~
+-----------------------------------------------------------------------------+
| MIG devices:                                                                |
+------------------+----------------------+-----------+-----------------------+
| GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
|      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
|                  |                      |        ECC|                       |
|==================+======================+===========+=======================|
|  0    2   0   0  |     14MiB / 20096MiB | 56      0 |  4   0    2    0    0 |
|                  |      0MiB / 32767MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+

ちゃんとコンテナ内で MIG のインスタンスが見えていますね!

しかし、この長ーい UUID を指定する方法では、複数のインスタンスを並べるのが少し大変です。そこで、もう一つの指定方法を試しましょう「device=GPU ID:MIG Dev ID」の形式でも指定できるのです。

例として、下記のように 2 基の A100 で MIG が有効になっており、GPU 0 には 6 つ、GPU 1 には 3 つの CI があるとしましょう。

+-----------------------------------------------------------------------------+
| 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  |     14MiB / 20096MiB | 14      0 |  4   0    2    0    0 |
|                  |      0MiB / 32767MiB |           |                       |
+------------------+                      +-----------+-----------------------+
|  0    1   1   1  |                      | 14      0 |  4   0    2    0    0 |
|                  |                      |           |                       |
+------------------+                      +-----------+-----------------------+
|  0    1   2   2  |                      | 14      0 |  4   0    2    0    0 |
|                  |                      |           |                       |
+------------------+                      +-----------+-----------------------+
|  0    1   3   3  |                      | 14      0 |  4   0    2    0    0 |
|                  |                      |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0    5   0   4  |      7MiB /  9984MiB | 28      0 |  2   0    1    0    0 |
|                  |      0MiB / 16383MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0   13   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    2   0   0  |     14MiB / 20096MiB | 56      0 |  4   0    2    0    0 |
|                  |      0MiB / 32767MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    3   0   1  |      7MiB /  9984MiB | 28      0 |  2   0    1    0    0 |
|                  |      0MiB / 16383MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+

この中から、以下の 4 つを選んでコンテナに指定してみます。

  1. GPU 0 の MIG Dev 3 (1c.4g.20gb)
  2. GPU 0 の MIG Dev 4 (2g.10gb)
  3. GPU 1 の MIG Dev 0 (4g.20gb)
  4. GPU 1 の MIG Dev 1 (2g.10gb)

--gpus オプションへの指定方法は次のようになります。GPU ID と MIG Dev ID をコロンを挟んで連結する形式です。複数指定する際はカンマで区切ります。

$ docker run --gpus '"device=0:3,0:4,1:0,1:1"' --rm -it nvcr.io/nvidia/tensorflow:20.09-tf2-py3 nvidia-smi

なお、上記コマンド例では、クォートが二重になっていてなんだか冗長な感じですが、これには意味があります。Docker がこの文字列を解析する際に、カンマの部分で文字列をちょん切っちゃうようなので、"device=0:3,0:4,1:0,1:1"のように、クォート記号を含めて Docker コマンドに渡してやる必要があるのです。
'"device=0:3,0:4,1:0,1:1"' は、まずシェルによって外側のシングルクォートが除去され、"device=0:3,0:4,1:0,1:1" が Docker コマンドに渡ります。めでたしめでたし(?)

結果として、コンテナの中での GPU および MIG デバイスの見え方は次のようになります。

~ 中略 ~
+-----------------------------------------------------------------------------+
| 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   3   0  |     14MiB / 20096MiB | 14      0 |  4   0    2    0    0 |
|                  |      0MiB / 32767MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0    5   0   1  |      7MiB /  9984MiB | 28      0 |  2   0    1    0    0 |
|                  |      0MiB / 16383MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    2   0   0  |     14MiB / 20096MiB | 56      0 |  4   0    2    0    0 |
|                  |      0MiB / 32767MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    3   0   1  |      7MiB /  9984MiB | 28      0 |  2   0    1    0    0 |
|                  |      0MiB / 16383MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+

注意したいのは、 MIG Dev ID がホストで見た値とは異なっている点です。MIG Dev ID は前述の通り「今見えている GPU 内の CI に連番を振ったもの」なので、こうなります。

というわけで、ちょっと長くなってしまいましたが、これで、MIG の基本的な使い方を確認できました。

MIG の考慮事項

さて、いろいろ便利に使えそうな MIG ですが、いくつか要注意ポイントもありますので、簡単にまとめます。

GI と CI は揮発性

MIG の GI や CI は、稼働中に動的に作成・削除できます。この記事でも、作成した GI 内の CIをいったん削除して、より細かい CI を複数作成してみました。このように、「用途に応じてダイナミックに作り替える」のが MIG のコンセプトで、作成した GI や CI は、コンピューターを再起動すると、すべて消えてしまいます。ハイパーバイザー型仮想化における仮想マシンのような、長いライフサイクルを想定していると、面食らうことになるので、ご注意ください。
※ MIG の有効・無効の状態は、GPU の InfoROM と呼ばれる不揮発メモリに格納されますので、いったん設定するとコンピューターを再起動しても維持されます。

なお、定義ファイルに基づいて MIG のパーティションを構成する MIG Partiton Editor と、それをサービス化する nvidia-mig-manager サービス を利用すると、システム起動時に MIG のインスタンスを自動作成することが可能です。

1 プロセス : 1 インスタンス

現在のところ、MIG が有効な環境の CUDA プログラム上で GPU のリストを取得すると、たとえ環境に複数の GPU が存在しても、先頭のデバイスしか取得できません。言い換えると、シングルプロセスでマルチ GPU の処理は実行できません。先ほど、BlackScholes のプログラム自体を複数動かしたように、複数のプロセスを起動し、それぞれに別の MIG デバイスを指定することで、複数の MIG デバイスを活用することができます。

この制限に関して、詳しくはユーザーガイドの CUDA Device Enumeration 節をご覧ください。
一部、引用しておきます。

With CUDA 11, only enumeration of a single MIG instance is supported.

<中略>

CUDA is limited to use a single CI and will pick the first one available if several of them are visible.
To summarize, there are two constraints:

  1. CUDA can only enumerate a single compute instance
  2. CUDA will not enumerate non-MIG GPU if any compute instance is enumerated on any other GPU

GPU 使用率のモニタリング

下記の通り、MIG を有効にした GPU では、nvidia-smi で表示される GPU 使用率が "N/A" となってしまいます。

# nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.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  A100-SXM4-40GB      On   | 00000000:07:00.0 Off |                   On |
| N/A   31C    P0    69W / 400W |      0MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+

これはちょっと困った制限なのですが、NVIDIA DCGM を使うと、MIG インスタンスの活動状況を取得することができます。
DCGM を使う簡単な方法は、コマンドラインツールの dcgmi を使うことで、 DGX A100 にはこれが標準でインストールされています。やったね!

DCGM に関して、詳しくは稿を改めて紹介しようと思いますが、ここではごく簡単にコマンドの例だけお伝えします。dcgmi dmon サブコマンドに、 -i オプションで対象 GPU デバイスを、そして -e オプションで、収集対象のメトリクスを指定します。

$ dcgmi dmon -i 0/4/0 -e 100,113,150,155,203,1001,1002,1003,1004,1006,1007,1008
# Entity  SMCLK  SMMAX  TMPTR       POWER       GPUTL  GRACT  SMACT  SMOCC  TENSO  FP64A  FP32A  FP16A
      Id                    C           W
    GPU 0   1410   1410     37     138.545         N/A  0.105  0.103  0.043  0.022  0.000  0.017  0.002
    GPU 0   1410   1410     36     122.252         N/A  0.111  0.107  0.047  0.022  0.000  0.017  0.003
    GPU 0   1410   1410     37     138.545         N/A  0.105  0.102  0.043  0.022  0.000  0.017  0.002
    GPU 0   1410   1410     36      86.032         N/A  0.111  0.107  0.047  0.023  0.000  0.017  0.003
    GPU 0   1410   1410     37     136.407         N/A  0.105  0.101  0.043  0.022  0.000  0.017  0.002

上記コマンド例では、 -i オプションに "0/4/0" を指定していますが、これは、

  • GPU ID: 0 の
    • GPU Instance ID: 4 の、
      • Compute Instance ID: 0

という意味です。直感的ですよね!

-e オプションには、わかりやすい文字列ではなく Field ID を指定しなければならず、そしてこの Field ID は 360 種類以上あってなかなかフクザツなのですが、とりあえず、先ほどのコマンド例で指定している以下の ID あたりは使いやすいと思います。

  • 100: sm_clock
  • 113: sm_max_clock
  • 150: gpu_temp
  • 155: power_usage
  • 203: gpu_utilization (MIG では値なし)
  • 1001: gr_engine_active
  • 1002: sm_active
  • 1003: sm_occupancy
  • 1004: tensor_active
  • 1006: fp64_active
  • 1007: fp32_active
  • 1008: fp16_active

※ 完全な Field ID のリストは、 dcgmi dmon --list で得られます。

まとめ

  • MIG は NVIDIA A100 GPU の物理分割機構です。
  • MIG 自体の有効・無効は GPU 1基ごとに個別設定可能です。
  • MIG は GPU インスタンス (GI) とコンピュート インスタンス (CI) の 2 段階の構成要素からなります。
  • GI や CI は動的に構成可能。用途に応じて柔軟に形を変えられます。
  • 環境変数 CUDA_VISIBLE_DEVICES や、 Docker の --gpus オプションで、利用する MIG デバイスを指定可能です。
  • 現時点では、1 プロセスあたり、1 つの MIG デバイスだけ使えます。複数のデバイスは、マルチプロセスで活用してください。
  • MIG 環境では、nvidia-smi で GPU 使用率が見えません!DCGM を使いましょう。

DGX A100 をちょっと真面目に試してみたくなったら「NVIDIA DGX A100 TRY & BUY プログラム」へ GO!

関連情報

DGX A100 System User Guide
NVIDIA Multi-Instance GPU User Guide
Data Center GPU Manager User Guide
NVIDIA Docker って今どうなってるの? (20.09 版)

おまけ: 56 x 1g.5gb

長ーくなってしまうので、最後に持ってきましたが、DGX A100 に搭載されている 8 基の A100 GPU すべてで MIG を有効にし、「一番細かく刻んだ」、つまり 1g.5gb が 56 個ある状態での nvidia-smi の出力、こんな感じです。

nvidia-smi

# nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.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  A100-SXM4-40GB      On   | 00000000:10:1C.0 Off |                   On |
| N/A   28C    P0    41W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   1  A100-SXM4-40GB      On   | 00000000:10:1D.0 Off |                   On |
| N/A   28C    P0    38W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   2  A100-SXM4-40GB      On   | 00000000:20:1C.0 Off |                   On |
| N/A   28C    P0    41W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   3  A100-SXM4-40GB      On   | 00000000:20:1D.0 Off |                   On |
| N/A   28C    P0    41W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   4  A100-SXM4-40GB      On   | 00000000:90:1C.0 Off |                   On |
| N/A   29C    P0    42W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   5  A100-SXM4-40GB      On   | 00000000:90:1D.0 Off |                   On |
| N/A   30C    P0    41W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   6  A100-SXM4-40GB      On   | 00000000:A0:1C.0 Off |                   On |
| N/A   30C    P0    40W / 400W |     25MiB / 40537MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+
|   7  A100-SXM4-40GB      On   | 00000000:A0:1D.0 Off |                   On |
| N/A   29C    P0    42W / 400W |     25MiB / 40537MiB |     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    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0   11   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0   12   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0   13   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  0   14   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1   10   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1   11   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1   12   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  1   13   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2   10   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2   11   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2   12   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  2   13   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3   10   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3   11   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3   12   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  3   13   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4   10   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4   11   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4   12   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  4   13   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5   11   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5   12   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5   13   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  5   14   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6   11   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6   12   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6   13   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  6   14   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7    7   0   0  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7    8   0   1  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7    9   0   2  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7   10   0   3  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7   11   0   4  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7   12   0   5  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+
|  7   13   0   6  |      3MiB /  4864MiB | 14      0 |  1   0    0    0    0 |
|                  |      0MiB /  8191MiB |           |                       |
+------------------+----------------------+-----------+-----------------------+

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

nvidia-smi -L

# nvidia-smi -L
GPU 0: A100-SXM4-40GB (UUID: GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/11/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/12/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/13/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-7f965474-fdf7-85c6-5b7c-f05d43ec9fb5/14/0)
GPU 1: A100-SXM4-40GB (UUID: GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/10/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/11/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/12/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-e69fc8e1-1d2b-ec03-727e-6f86acdd89fe/13/0)
GPU 2: A100-SXM4-40GB (UUID: GPU-336c0e69-cc08-745b-919f-654c58739264)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/10/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/11/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/12/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-336c0e69-cc08-745b-919f-654c58739264/13/0)
GPU 3: A100-SXM4-40GB (UUID: GPU-30464763-777b-6cc6-9520-7cd692f76caf)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/10/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/11/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/12/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-30464763-777b-6cc6-9520-7cd692f76caf/13/0)
GPU 4: A100-SXM4-40GB (UUID: GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/10/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/11/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/12/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-f30e3e80-31aa-0d7e-cba6-7f8ba6a183cc/13/0)
GPU 5: A100-SXM4-40GB (UUID: GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/11/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/12/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/13/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-76906707-811a-5ae0-d6b8-36ea5af5f9f9/14/0)
GPU 6: A100-SXM4-40GB (UUID: GPU-96c022b2-3415-fd87-c3a7-190df923366e)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/11/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/12/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/13/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-96c022b2-3415-fd87-c3a7-190df923366e/14/0)
GPU 7: A100-SXM4-40GB (UUID: GPU-8aa52044-5af0-51ee-9c76-aa396416b78c)
  MIG 1g.5gb Device 0: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/7/0)
  MIG 1g.5gb Device 1: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/8/0)
  MIG 1g.5gb Device 2: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/9/0)
  MIG 1g.5gb Device 3: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/10/0)
  MIG 1g.5gb Device 4: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/11/0)
  MIG 1g.5gb Device 5: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/12/0)
  MIG 1g.5gb Device 6: (UUID: MIG-GPU-8aa52044-5af0-51ee-9c76-aa396416b78c/13/0)

nvidia-smi mig -lgi

# nvidia-smi mig -lgi
+----------------------------------------------------+
| GPU instances:                                     |
| GPU   Name          Profile  Instance   Placement  |
|                       ID       ID       Start:Size |
|====================================================|
|   0  MIG 1g.5gb       19        7          4:1     |
+----------------------------------------------------+
|   0  MIG 1g.5gb       19        8          5:1     |
+----------------------------------------------------+
|   0  MIG 1g.5gb       19        9          6:1     |
+----------------------------------------------------+
|   0  MIG 1g.5gb       19       11          0:1     |
+----------------------------------------------------+
|   0  MIG 1g.5gb       19       12          1:1     |
+----------------------------------------------------+
|   0  MIG 1g.5gb       19       13          2:1     |
+----------------------------------------------------+
|   0  MIG 1g.5gb       19       14          3:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19        7          0:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19        8          1:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19        9          2:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19       10          3:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19       11          4:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19       12          5:1     |
+----------------------------------------------------+
|   1  MIG 1g.5gb       19       13          6:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19        7          0:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19        8          1:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19        9          2:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19       10          3:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19       11          4:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19       12          5:1     |
+----------------------------------------------------+
|   2  MIG 1g.5gb       19       13          6:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19        7          0:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19        8          1:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19        9          2:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19       10          3:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19       11          4:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19       12          5:1     |
+----------------------------------------------------+
|   3  MIG 1g.5gb       19       13          6:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19        7          0:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19        8          1:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19        9          2:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19       10          3:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19       11          4:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19       12          5:1     |
+----------------------------------------------------+
|   4  MIG 1g.5gb       19       13          6:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19        7          4:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19        8          5:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19        9          6:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19       11          0:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19       12          1:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19       13          2:1     |
+----------------------------------------------------+
|   5  MIG 1g.5gb       19       14          3:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19        7          4:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19        8          5:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19        9          6:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19       11          0:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19       12          1:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19       13          2:1     |
+----------------------------------------------------+
|   6  MIG 1g.5gb       19       14          3:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19        7          0:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19        8          1:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19        9          2:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19       10          3:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19       11          4:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19       12          5:1     |
+----------------------------------------------------+
|   7  MIG 1g.5gb       19       13          6:1     |
+----------------------------------------------------+

nvidia-smi mig -lci

# nvidia-smi mig -lci
+--------------------------------------------------------------------+
| Compute instances:                                                 |
| GPU     GPU       Name             Profile   Instance   Placement  |
|       Instance                       ID        ID       Start:Size |
|         ID                                                         |
|====================================================================|
|   0      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   0     14       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1     10       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   1     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2     10       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   2     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3     10       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   3     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4     10       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   4     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   5     14       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   6     14       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7      7       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7      8       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7      9       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7     10       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7     11       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7     12       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+
|   7     13       MIG 1g.5gb           0         0          0:1     |
+--------------------------------------------------------------------+

Enjoy DGX!

26
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?