はじめに
IBM Cloud Pak for Data (CP4D) のサービスで GPU を使用してパフォーマンスを向上が期待できるサービスが増えていますが、GPUは高価なため物理的に沢山のGPUを搭載できない場合もあると思います。GPUを複数のパーティションに分割して、複数のインスタンスとして使用する Multi GPU Instance (MIG) を使用すると GPU の物理個数以上のサービスで使用する事ができます。
今回は CP4D で MIG を使用する方法についてご紹介します。
参考マニュアル
NVIDIA Multi-Instance GPU の設定 (MIG)
前提
OpeenShift Container Platform (OCP) で GPU を使用するために、
Node Feature Discovery Operator と NVIDIA GPU Operator を OCP にインストールする必要があります。OCP の Webコンソールの OperatorHub から Node Feature Discovery Operator と NVIDIA GPU Operator を探してインストールします。
Node Feature Discovery Operator は NVIDIA GPU Operator の前提です。
MIG の構成手順
- 下記の手順で、搭載されている GPU のタイプを確認します。最初にプロジェクトを "vidia-gpu-operator" プロジェクト に切り替えて、この記事の中でのコマンドは全て このプロジェクトで実行しています。
例
# nvidia-gpu-operator プロジェクトに切り替える
$ oc project nvidia-gpu-operator
Now using project "nvidia-gpu-operator" on server "https://xxxx"
# nvidia-driver-daemonset の Pod を確認する
$ oc get pod | grep nvidia-driver-daemonset
nvidia-driver-daemonset-418.94.202510081222-0-sc29r 2/2 Running 0 37d
# nvidia-driver-daemonset Pod で nvidia-smi を実行する
$ oc exec -it nvidia-driver-daemonset-418.94.202510081222-0-sc29r -- nvidia-smi
Thu Nov 27 03:49:03 20255
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA H100 NVL On | 00000000:08:00.0 Off | 0 |
| N/A 32C P0 60W / 400W | 0MiB / 95830MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
この出力により NVIDIA H100 NVL タイプの GPU が1個搭載されている事が判ります。また Memory-Usage が "0MiB / 95830MiB" となっている事から 約94GMのメモリーが搭載されている事が判ります。
- MIG を構成する際に指定するプロファイルを決定します。GPU のタイプ毎に指定できるプロファイルが複数定義されています。
マニュアルには「サポートされているプロファイルは、GPU operator プロジェクトの mig-parted-config ConfigMap にリストされています。」と書かれていますが、ConfigMap の名前が異なってる場合があり、実際に ConfigMap を表示してみると下記のような出力で、とても判りにくくて初めて見る方が内容を理解するのは困難です。
$ oc get cm | grep mig
default-mig-parted-config 1 37d
nvidia-mig-manager-entrypoint 1 37d
oc get cm default-mig-parted-config -o yaml
apiVersion: v1
data:
config.yaml: "version: v1\nmig-configs:\n all-disabled:\n - devices: all\n mig-enabled:
false\n\n all-enabled:\n - devices: all\n mig-enabled: true\n mig-devices:
{}\n\n # A100-40GB, A800-40GB\n all-1g.5gb:\n - devices: all\n mig-enabled:
true\n mig-devices:\n \"1g.5gb\": 7\n\n all-1g.5gb.me:\n - devices:
all\n mig-enabled: true\n mig-devices:\n \"1g.5gb+me\": 1\n\n
\ all-2g.10gb:\n - devices: all\n mig-enabled: true\n mig-devices:\n
\ \"2g.10gb\": 3\n\n all-3g.20gb:\n - devices: all\n mig-enabled:
true\n mig-devices:\n \"3g.20gb\": 2\n\n all-4g.20gb:\n - devices:
all\n mig-enabled: true\n mig-devices:\n \"4g.20gb\": 1\n\n all-7g.40gb:\n
\ - devices: all\n mig-enabled: true\n mig-devices:\n \"7g.40gb\":
1\n\n
以下省略
そこで下記の手順で Mig Manager のPodの中にある config.yaml ファイルを参照する事をお勧めします。
# MIG Manager の Pod を確認する
$ oc get pod | grep mig-manager
nvidia-mig-manager-7fldr 1/1 Running 0 37d
# Mig Manager の Pod にログインする
$ oc rsh nvidia-mig-manager-7fldr
Defaulted container "nvidia-mig-manager" out of: nvidia-mig-manager, toolkit-validation (init)
/app #
# 構成ファイルのディレクトリーに移動する
/app # cd /mig-parted-config
/mig-parted-config #
# 構成ファイルを表示する
/mig-parted-config # cat config.yaml
大量の情報が表示されますが、この中から 該当する GPU タイプが含まれているセクションを探します。下記のように複数のセクションが表示される場合があります。
# H100 NVL, H800 NVL, GH200
all-1g.12gb: -----> プロファイル名
- devices: all
mig-enabled: true
mig-devices:
"1g.12gb": 7
...
# H100 NVL, H800 NVL, GH200
all-1g.12gb: -----> プロファイル名
- devices: all
mig-enabled: true
mig-devices:
"1g.12gb": 7
...
プロファイルの見方ですが、例えば "all-3g.47gb" の場合、下記のようになります。
all-3g.47gb:
- devices: all
mig-enabled: true
mig-devices:
"3g.47gb": 2
all : 区画化した全てのインスタンスを作成する
3g : 各インスタンスに3つのGPU論理コアを割り当てる
47gb : 各インスタンスに47GBのGPUメモリを割り当てる
"3g.47gb": 2 は 2つの区画に分ける
1つの物理 GPUを幾つの区画に分割するか、GPUのメモリーサイズ、それぞれの区画に割り当てる論理GPUコア数とメモリー から設定するプロファイルを決定します。分割する数を多くすると、各インスタンスに割り当てるメモリーが減るので注意が必要です。
3.GPUが搭載されている OCP のノードを確認します。
例
$ oc describe node | grep -E "Name:|nvidia.com/gpu.count="
Name: itz-d7ytxd-master-1
Name: itz-d7ytxd-master-2
Name: itz-d7ytxd-master-3
Name: itz-d7ytxd-worker-1
Name: itz-d7ytxd-worker-2
Name: itz-d7ytxd-worker-3
Name: itz-d7ytxd-worker-4
Name: itz-d7ytxd-worker-5
Name: itz-d7ytxd-worker-6
nvidia.com/gpu.count=1
この例では "itz-d7ytxd-worker-6" のノードにGPUが1個搭載されている事が判ります。
4.MIG を構成します。
この例では、"all-3g.47gb" プロファイルを使用して MIG を構成します。
# 使用するプロファイルに基づき MIG_LABEL を設定する
$ export MIG_LABEL=all-3g.47gb
# MIG を有効にしたい各 GPU ノードにラベルを付けます。
$ oc label nodes itz-d7ytxd-worker-6 nvidia.com/mig.config=${MIG_LABEL} --overwrite=true
# Mig Manager Pod のログを確認する。
$ oc logs nvidia-mig-manager-7fldr
......
time="2025-11-27T04:21:44Z" level=debug msg="Applying MIG device configuration..."
......
time="2025-11-27T04:21:45Z" level=info msg="Changing the 'nvidia.com/mig.config.state' node label to 'success'\n"
time="2025-11-27T04:21:45Z" level=info msg="Successfully updated to MIG config: all-3g.47gb"
上記のログの内容から、"all-3g.47gb" プロファイルが正常に適用された事が判ります。Mig Mager は MIG のプロファイルが変更されないか常時監視していて、変更があると即時に変更処理を行います。
GPU の論理インスタンスを確認してみます。
例
$ oc exec -it nvidia-driver-daemonset-418.94.202510081222-0-sc29r -- nvidia-smi mig -lgi
+---------------------------------------------------------+
| GPU instances: |
| GPU Name Profile Instance Placement |
| ID ID Start:Size |
|=========================================================|
| 0 MIG 3g.47gb 9 1 0:4 |
+---------------------------------------------------------+
| 0 MIG 3g.47gb 9 2 4:4 |
+---------------------------------------------------------+
上記の出力から2つのGPUインスタンス (ID 1と2)が作成されている事が判ります。
以上で CP4D で MIG を使用する方法についてのご紹介を終わります。