SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

NVIDIA Multi-Instance GPU(MIG)の設定手順

AI
2026.05.07

こんにちは。SB C&S の野木です。
この記事ではNVIDIA Multi-Instance GPU(MIG: マルチインスタンス GPU)についてLinux OSにおける設定手順を紹介します。

MIGの設定手順

MIGを設定するには以下の条件を満たしている必要があります。

・GPUがMIG対応製品であること
(例:NVIDIA A100 / NVIDIA H100 / NVIDIA RTX PRO™ 6000 Blackwell Server Edition など)
・CUDA®がサポートするLinuxディストリビューションを利用していること
・CUDAバージョンおよびNVIDIAドライバのバージョンがMIG対応であること

その他の詳細条件については以下NVIDIA公式ドキュメントをご参照ください。
https://docs.nvidia.com/datacenter/tesla/mig-user-guide/getting-started-with-mig.html

本記事では、NVIDIA RTX PRO™ 6000 Blackwell Server Edition(以下、BSE)を1枚搭載したベアメタル環境において、Ubuntu 24.04 LTS上でMIGを有効化する手順を紹介します。

MIGの設定は、以下の手順で進めます。

  • Step1:MIGモードの有効化
  • Step2:GPUインスタンス(以下、GI)の作成
  • Step3:コンピュートインスタンス(以下、CI)の作成
  • Step4:MIG設定後の確認

以降、それぞれの手順を順に紹介します。

Step1:MIGモードの有効化

はじめに、GPUMIG機能を利用するためにMIGモードを有効化します。
有効化にはnvidia-smiコマンドと-iオプション、-migオプションを使用します。

  • -iオプション:MIGを有効化するGPUDevice IDを指定します。
  • -migオプション:MIGの有効化/無効化を指定します (1=有効化、0=無効化) 。

sudo nvidia-smi -i 0 -mig 1

## 出力
01.png

MIGモードを有効化した後に nvidia-smi コマンドを実行すると、出力結果に「MIG devices」の項目が追加されます。
※GPUの状態によっては、MIGモードの有効化後にGPUリセットや再起動が必要になる場合があります。

sudo nvidia-smi -i 0 -mig 1

## 出力
02.png

Step2:GPUインスタンスの作成

MIGモードを有効化すると、nvidia-smi migコマンドが利用できるようになります。
nvidia-smi migコマンドでは、GIプロファイルの確認や作成などの操作を行うことができます。
GIプロファイルは、MIGで作成できるGI構成を定義したものです。
※コマンド実行には管理者権限(sudo)が必要です。

まず、GPUで使用可能なGIプロファイル一覧を確認します。
GIプロファイルの一覧表示は-lgipオプションを使用します。
以下の例では、BSEで利用可能なGIプロファイル一覧を確認しています。

sudo nvidia-smi mig -lgip

## 出力
03.png

出力結果の「Instance Free/Total」を確認することで、各GIプロファイルの最大割り当て数および現在利用可能な残数を把握することができます。

また、GIプロファイルには+me+gfxといった機能拡張されたプロファイルが存在します。
これらはGPUの用途に応じて適切に選択する必要があります。
主なGIプロファイルの種類は以下の通りです。

  • 拡張なし
    • 軽量な推論処理や開発用途など、基本的なGPU計算用途に適したプロファイル
  • +me
    • NVENC / NVDEC / NVJPEG などのメディアエンジンを有効化したプロファイル
    • 動画解析、ストリーミング処理、監視カメラ映像の解析などに適しています
  • +gfx
    • グラフィックスAPIOpenGL / DirectX)に対応したプロファイル
    • 仮想デスクトップ(VDI)やリモートワークステーションなど、描画処理を伴うワークロードに適しています
  • +me.all
    • メディア処理用のハードウェアリソース(NVENC / NVDEC など)を多く割り当てたプロファイル
    • 動画処理やエンコード/デコードを多用するワークロードに適しています
  • -me
    • メディアエンジンを無効化し、SMやメモリなどの計算リソースに特化したプロファイル
    • 機械学習推論や数値計算など、純粋なGPU計算処理に適しています

次に、GIを作成します。
GIの作成には -cgi オプションを使用します。
このオプションでは、作成するGIプロファイルを指定します。
指定方法は、先ほどの-lgipオプションで確認したGIプロファイル名かIDを指定することで作成できます。
以下の例では、2g.48gb(ID 5)GIIDで指定して2つ作成しています。

sudo nvidia-smi mig -cgi 5,5

## 出力
04.png
※GI作成時に-Cオプションを加えることで、同時にCIを作成することができます (CIの作成については後ほど詳しく紹介します) 。

GIを作成した後、-lgi オプションを使用することで作成したGPUインスタンスの一覧を確認することができます。

sudo nvidia-smi mig -lgi

## 出力
05.png
出力結果の「Instance ID」は、作成されたGIごとに割り当てられる識別子(GIID)を示しています。
GI単位で操作を行う場合は、このGIIDを指定して対象のGIを選択します。

ここまでのMIG構成のイメージは以下の通りです。

06.png

48GBGI2つ作成されていますが、この時点ではCIが作成されていないため、実際にGPU処理を実行することはできません。
CIを作成することで、各GI内で実際に処理を実行できるようになります。

Step3:CIの作成

CIを作成する際にも、CIプロファイルを指定する必要があります。
使用可能なCIプロファイルの一覧を確認するには、-lcipオプションを使用します。
以下の例では、2g.48gbGI2つ作成した状態で利用可能なCIプロファイル一覧を確認しています。

sudo nvidia-smi mig -lcip

## 出力
07.png

出力結果を確認すると、「Profile ID」に「1*」の表記があります。
これは、GI作成時に -C オプションを指定した場合に自動的に選択される、デフォルトのCIプロファイルであることを示しています。

次に、CIを作成します。
CIの作成には -cci オプションを使用します。
このオプションではGI作成時と同様に、作成するCIプロファイル名かIDを指定することで作成できます。
なお作成の際に、-giオプションでGIIDを指定することで対象のGIを指定して作成することも可能です。
-giオプションを使用しない場合、現在作成しているすべてのGIが指定されます。
以下の例では、2つのGIそれぞれに対して、ID:0CI2つずつ作成しています。

sudo nvidia-smi mig -cci 0,0

## 出力
08.png

例では-giオプションを使用していないため、各GIそれぞれに2つのCIが作成されています。

CIを作成した後、-lci オプションを使用することで作成したCIの一覧を確認することができます。

sudo nvidia-smi mig -lci

## 出力
09.png

これで、MIGの設定はすべて完了です。

最終的なMIG構成のイメージは以下の通りです。

10.png

GI内に2つのCIが作成され、それぞれのCIGPU処理を実行する単位として利用されます。
CIGI内のリソースを分割して利用する仕組みであり、同一のGI内で複数のワークロードを並列に実行することが可能になります。

Step4:MIG設定後の確認

MIG設定後の状態を確認するために、nvidia-smi コマンドを実行します。

nvidia-smi

## 出力
11.png

MIG devices」の項目に、作成したインスタンスの一覧が表示されていることを確認できます。
Shared Memory-Usage」を見ると、GIID:1GIID:2にそれぞれ約48GBずつメモリが割り当てられており、BSEGPUメモリが2つのGPUインスタンスに分割されていることが分かります。
また、「MIG devices」の一覧が4つの項目に分かれていることから、各GPUインスタンス内に作成したコンピュートインスタンスごとにMIG Deviceが作成されていることが確認できます。
実際にGPU処理を実行する際は、このMIG Device単位でGPUを指定して利用することになります。
MIG Deviceの指定方法については次章でご説明します。

コンテナからMIG Deviceを利用する仕組み

GPUを利用する際は、コンテナ環境での利用が広く普及しています。
特にMIGを利用する場合、1つの物理GPUを複数のGIに分割し、それぞれをコンテナ単位で利用することで、複数のAIワークロードを同一GPU上で分割して実行することが可能です。

12.png

コンテナ環境では、NVIDIA Container Toolkitを利用することでGPUをコンテナへ割り当てることができます。
さらにMIGの場合は、コンテナ起動時にMIG DeviceUUIDを指定することで、特定のMIG DeviceCI単位)をコンテナへ割り当てることができます。
コンテナからは、このMIG Device1つのGPUとして認識されます。
MIG Deviceは、NVIDIA Container Runtimeを介してコンテナに認識されます。

13.png

以降、実際にコンテナへ割り当てる手順を紹介します。

コンテナ環境でのMIG利用手順

はじめに、MIG DeviceUUIDを確認します。
UUIDnvidia-smiコマンドの-Lオプションを使用することで確認できます。
以下は、BSEMIG 1g.24gb4つ作成した場合の例です。

nvidia-smi

## 出力
14.png

nvidia-smi

## 出力
15.png

出力結果から、各MIG Deviceに対して一意のUUIDが割り当てられていることが確認できます。
コンテナにMIG Deviceを割り当てる際は、このUUIDを指定することで、特定のMIG Deviceを利用することができます。

次に、コンテナを作成します。
前提条件として、コンテナを実行するためにDockerおよびNVIDIA Container Toolkitのインストールが必要です。
NVIDIA Container Toolkitのインストール手順は以下の公式ドキュメントをご参照ください。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

MIG Deviceの割り当ては、docker runコマンドの--gpusオプションでUUIDまたはGPU番号:MIG Device番号(例:0:1)を指定することで行います。
以下は、コンテナ作成時に1つのMIG Deviceを指定する例です。
コンテナはNVIDIANGCカタログにあるPyTorchのコンテナイメージを利用し、JupyterLabを起動する構成としています。
PyTorchCUDAアプリケーションを実行するためのフレームワークであり、JupyterLabはブラウザ上でコードを対話的に実行できる開発環境です。

docker run --rm -d -it \
--name torch_user00 \
--gpus '"device=MIG-a7a07799-35ae-599d-8bf0-81ed3a95ca79"' \
-p 8100:8880 \
nvcr.io/nvidia/pytorch:26.01-py3 \
bash -lc "jupyter lab \
--allow-root \
--ip=0.0.0.0 \
--no-browser \
--ServerApp.token='' \
--ServerApp.password='' \
--port=8880 \
--notebook-dir=/mnt"

コンテナの起動を確認します。

nvidia-smi

## 出力
16.png

実際にWebブラウザからhttp://localhost:8100にアクセスし、JupyterLabが起動していることを確認します。

17.png

JupyterLab内でGPUを検出するプログラムを実行します。

18.png

出力結果から、JupyterLabをコンテナ上で起動し、GPUが正常に認識されていることを確認できます。
また、GPUの情報として「MIG 1g.24gb」のプロファイルが表示されており、指定したMIGデバイスがコンテナに割り当てられていることが分かります。

最後にnvidia-smiをコンテナ内でも実行し、GPUの情報を確認してみます。
コンテナ内でコマンドを実行するにはdocker execコマンドを使用し、以下のようにコンテナ名と実行したいコマンドを指定します。

docker exec torch_user00 nvidia-smi

## 出力
19.png

出力結果から、約24192MiBGPUメモリが表示されており、1g.24gbMIGインスタンスが割り当てられていることが確認できます。
また、他のMIG Deviceはコンテナ内から見えず、指定したMIG Deviceのみが表示されていることが分かります。
このことから、コンテナ単位でGPUリソースを分割して利用できることが確認できます。
コンテナ環境でのMIG利用手順の紹介は以上です。

本記事では1つのMIG Deviceに対して1つのコンテナを割り当てる例を紹介しましたが、残りのMIG Deviceに対して別のコンテナを割り当てることも可能です。
これにより、複数のコンテナでGPUリソースを分割して利用することができ、ワークロードを並列に実行する構成を実現できます。

まとめ

本記事では、MIGの有効化手順と、コンテナ環境におけるMIG Deviceの割り当て方法について解説しました。
MIGにより、単一GPUを複数のGIに分割し、さらにCI単位で実行リソースを制御することで、コンテナごとにGPUを割り当てる運用が可能となります。

次回は、仮想化基盤におけるMIGNVIDIA® virtual GPUvGPU)を組み合わせた技術についても紹介していきますので、ぜひご覧ください。

MIGの概要紹介はこちら

著者紹介

SB C&S株式会社
ICT事業本部 技術本部 第1技術統括部
第2技術部 1課
野木 空良 - Sora Nogi -

サーバー・ネットワークを中心として、AIインフラ全般のプリセールス業務に従事。