エヌビディアの佐々木です。
この記事は、エヌビディアのパートナー企業で、多くの 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 設定の変更など、何でも試すことができます。
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 個ずつ作ると下図のようになりますが、ここで注目していただきたいのは、図の中の「コンピュート インスタンス」の部分です。
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 メモリにアクセス可能です。
先ほどは、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 つを選んでコンテナに指定してみます。
- GPU 0 の MIG Dev 3 (1c.4g.20gb)
- GPU 0 の MIG Dev 4 (2g.10gb)
- GPU 1 の MIG Dev 0 (4g.20gb)
- 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:
- CUDA can only enumerate a single compute instance
- 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
- GPU Instance ID: 4 の、
という意味です。直感的ですよね!
-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!