1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud Pak for Data 5.2.2 で Multi GPU Instance (MIG) を構成してみた

1
Posted at

はじめに

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 OperatorNVIDIA GPU Operator を OCP にインストールする必要があります。OCP の Webコンソールの OperatorHub から Node Feature Discovery Operator と NVIDIA GPU Operator を探してインストールします。
Node Feature Discovery Operator は NVIDIA GPU Operator の前提です。

MIG の構成手順

  1. 下記の手順で、搭載されている 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のメモリーが搭載されている事が判ります。

  1. 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 を使用する方法についてのご紹介を終わります。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?