MIGで仮想化されたGPUの使用率はどのように測定するのか?

初めに
NVIDIAのMIG(Multi-Instance GPU)技術は、単一のGPUを複数の独立したインスタンスに分割し、リソースを効率的に活用できるようにします。
しかし、MIGモードではGPU使用率(ユーティリゼーション)測定に制約があります。
この記事では、MIG環境におけるGPUモニタリング上の問題点と、DCGM_FI_PROF_GR_ENGINE_ACTIVEメトリクスを活用した解決方法について説明します。
MIGモードにおけるGPU使用率測定の制約
NVIDIAの公式文書によれば、MIGモードが有効なGPUでは、従来のGPU使用率メトリクスはサポートされていません。

NVIDIA MIGユーザーガイドでも次のように明記されています。
"GPU utilization is not supported when MIG mode is enabled"

実際の運用環境で発生するジレンマ
例えば、次のような環境を想定してみましょう。
- 1つのノードにA100 GPUを8枚設置
- その中の4枚はMIGモードとして活性化
- 残りの4枚は単独デバイスとして使用
この場合、ノードの平均GPU使用率を計算するにはどうすればよいでしょうか?
MIGモードが有効な4つのGPUは使用率がN/Aとして表示されるため、これらを除外して物理デバイス4枚のみで計算すべきでしょうか?
解決策: DCGM_FI_PROF_GR_ENGINE_ACTIVEを活用
MIGモードでも正確なGPU使用率を測定する方法があります。
DCGM_FI_PROF_GR_ENGINE_ACTIVEメトリックを使用することです。

MIGインスタンス毎の使用率の計算方法
計算方法
コピー編集
総GPU使用率 = Σ(各MIGインスタンス使用率 × 当該インスタンスのリソース比率)
例
- MIG A (2g.10gb): 60% × (2/7) = 17.14%
- MIG B (1g.5gb): 90% × (1/7) = 12.86%
- MIG C (1g.5gb): 40% × (1/7) = 5.71%
- MIG D (1g.5gb): 20% × (1/7) = 2.86%
- MIG E (1g.5gb): 70% × (1/7) = 10.00%
- MIG F (1g.5gb): 10% × (1/7) = 1.43%
総GPU使用率 = 50%
この方法はNVIDIAの公式文書と推奨事項に基づいています。
以下に代替メトリックの使用根拠と加重値計算方式を説明します。
1. 代替メトリック使用の根拠: NVIDIA GitHub公式回答
出典: NVIDIA DCGM GitHub イシュー #64
NVIDIA開発者の公式回答:
"DCGM_FI_DEV_GPU_UTIL is roughly equal to DCGM_FI_PROF_GR_ENGINE_ACTIVE. DCGM_FI_PROF_GR_ENGINE_ACTIVE is higher precision and works on MIG."
これにより、DCGM_FI_PROF_GR_ENGINE_ACTIVEがGPU_UTILの代替指標として使用できることが公式に確認されます。
GR_ENGINE_ACTIVEの特徴
- メトリック ID: DCGM_FI_PROF_GR_ENGINE_ACTIVE
- NVIDIA GPUのグラフィックスエンジン(GRエンジン)の活動レベル測定
- 特徴:名称は「Graphics」エンジンですが、グラフィックスおよび汎用演算ワークロードの両方を処理します。
- MIG互換性: MIGモードでも正確な測定が可能
- 精度: 既存のGPU_UTILよりも高い精度を提供
2. 加重値計算方式の根拠: NVIDIA DCGM公式文書
出典: NVIDIA DCGM - メトリクスの理解
計算方法論
1) 基本公式
編集
総GPU使用率 = Σ(各MIGインスタンスのGR_ENGINE_ACTIVE × 当該インスタンスのコンピュートスライス比率)
2) 詳細プロセス
- Instance_Utilization = DCGM_FI_PROF_GR_ENGINE_ACTIVE (0.0 ~ 1.0)
- Slice_Ratio = Instance_Compute_Slices ÷ Total_GPU_Compute_Slices
- Weighted_Contribution = Instance_Utilization × Slice_Ratio
3) 実際の計算例 (A100、合計8つのコンピュートスライスに基づく)

コピー編集
総GPU使用率 = 0.1714 + 0.1286 + 0.0571 + 0.0286 + 0.1000 + 0.0143 = 0.5000 (50.0%)
4) メトリック解釈 (DCGM文書基準)
- データ範囲: 0.0 ~ 1.0 (比率)
- 0.0 = GPUエンジン完全アイドル状態
- GPUエンジン100%活用状態
5) 実務適用時の考慮事項
- GPUワークロードの特性に応じて瞬時に変動することがあります。
- 安定したモニタリングのために移動平均を適用することを推奨します。
業界の採用事例
- OpenCost: GitHub PR #2853でMIG環境のGPUコスト計算に適用
- 大規模GPUクラスター:クラウドサービスプロバイダーのGPUモニタリングソリューションで採用
終わりに
MIGモードでのGPUモニタリングの問題は次の2つの根拠で解決できます。
- NVIDIAの公式回答: DCGM_FI_PROF_GR_ENGINE_ACTIVEはGPU_UTILの代替指標として使用可能
- NVIDIA公式文書:メトリック理解に基づいた加重値計算方式



