GPU ワークロードの効率的な配置と最適化には、多くの場合、リソースの使用率とパフォーマンスを可視化する必要があります。 AKS のマネージド GPU メトリック (プレビュー) は、NVIDIA GPU 対応ノード プール全体で GPU 使用率、メモリ、パフォーマンス データの自動収集と公開を提供します。 これにより、プラットフォーム管理者はクラスター リソースと開発者を最適化し、限られた手動インストルメンテーションでワークロードを調整およびデバッグできます。
この記事では、Azure Kubernetes Service (AKS) のフル マネージド GPU 対応ノード プール (プレビュー) を使用して NVIDIA Data Center GPU Manager (DCGM) エクスポーターによって収集される GPU メトリックについて説明します。
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
前提条件
- フル マネージド GPU 対応ノード プール (プレビュー) を備えた AKS クラスター。GPU がスケジュール可能であることを確認します。
- ノード プールにデプロイされた サンプル GPU ワークロード 。
制限事項
- マネージド GPU メトリックは、 Azure Managed Prometheus または Azure Managed Grafana では現在サポートされていません。
マネージド GPU コンポーネントがインストールされていることを確認する
次の手順に従ってマネージド NVIDIA GPU ノード プール (プレビュー) を作成した後、az aks nodepool show コマンドを使用して GPU ソフトウェア コンポーネントがインストールされたことを確認します。
az aks nodepool show \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--name <node-pool-name> \
出力には、次の値が含まれている必要があります。
...
...
"gpuInstanceProfile": …
"gpuProfile": {
"driver": "Install"
},
...
...
GPU メトリックについて
GPU 使用率メトリック
GPU 使用率メトリックは、GPU のコアが作業をアクティブに処理している時間の割合を示します。 高い値は、GPU が頻繁に使用されていることを示します。これは、通常、トレーニングやデータ処理などのワークロードに適しています。 このメトリックの解釈では、ワークロードの種類を考慮する必要があります。AI トレーニングは通常、使用率が高いまま維持されますが、推論はトラフィックが急増して使用率が断続的になる可能性があります。
メモリ使用率: 使用中の GPU メモリの割合を示します。 GPU 使用率が高くなくメモリ使用率が高い場合は、GPU がメモリ転送を待機するメモリバインド ワークロードを示すことができます。 ワークロードが小さすぎるため、メモリ使用量と使用率が低く、GPUを十分に活用できない可能性があります。
SM (ストリーミング マルチプロセッサ) 効率: GPU のコアが使用される効率を測定します。 SM 効率が低い場合は、ワークロードの不均衡または最適でないカーネル設計により、コアがアイドル状態または使用率が低いことが示されます。 高効率は、コンピューティング負荷の高いアプリケーションに最適です。
メモリメトリクス
メモリ帯域幅使用率: 消費されている理論上のメモリ帯域幅の量を反映します。 コンピューティング使用率が低い高帯域幅使用率は、メモリにバインドされたワークロードを示している可能性があります。 逆に、コンピューティング帯域幅とメモリ帯域幅の両方で使用率が高い場合は、バランスの取れたワークロードが提案されます。
メモリ エラー: ECC (Error-Correcting コード) エラーを追跡します (有効な場合)。 エラーの数が多い場合は、ハードウェアの劣化や熱の問題を示している可能性があり、信頼性を監視する必要があります。
温度と電力のメトリック
GPU 温度: GPU の動作温度を示します。 高温が持続すると、温度調整がトリガーされ、パフォーマンスが低下する可能性があります。 このメトリックの理想的な解釈には、GPU の熱制限と冷却容量に対する温度の観測が含まれます。
電力使用: 瞬時の電力消費を示します。 電力使用量を TDP (サーマル デザインパワー) と比較すると、GPU がその制限にプッシュされているかどうかを理解するのに役立ちます。 電力の急激な低下は、スロットリングまたは不足利用を示している可能性があります。
クロックと周波数メトリック
GPU クロック: GPU の実際の動作周波数。 使用率と組み合わせることで、GPU がその可能性能に対して制限されているか、パフォーマンスが低いかを判断するのに役立ちます。
メモリ クロック: GPU メモリの動作周波数。 メモリバインドワークロードは、より高いメモリクロックの恩恵を受ける可能性があります。メモリとコンピューティングの使用率が一致しない場合、ボトルネックが強調される可能性があります。
PCIe と NVLink のメトリック
PCIe 帯域幅: PCIe バス経由のスループットを測定します。 高負荷の作業で使用率が低い場合、CPUとGPU間の通信がボトルネックではない可能性があります。 使用率が高い場合は、パフォーマンスに影響を与えるデータ転送の制限を示している可能性があります。
NVLink 帯域幅: このメトリックは PCIe 帯域幅に似ていますが、NVLink 相互接続に固有であり、GPU 間通信用のマルチ GPU システムに関連します。 SM 使用率が低い NVLink 使用率が高い場合は、同期またはデータ転送の遅延を示している可能性があります。
エラーと信頼性のメトリック
廃止されたページと XID エラー: GPU メモリ エラーと重大なエラーを追跡します。 頻繁に発生すると、ハードウェア障害の可能性が通知され、実行時間の長いワークロードに注意が必要になります。
解釈ガイダンス
DCGM メトリックは、常に AKS 上のワークロードの種類に応じて解釈される必要があります。 コンピューティング負荷の高いワークロードでは、GPU と SM の使用率が高く、メモリ帯域幅の使用率が高く、安定した温度がスロットルしきい値を下回り、電力が TDP の近く(ただし下回る)を示すのが理想的です。
メモリにバインドされたワークロードでは、高いメモリ使用率と帯域幅が表示されますが、コンピューティング使用率は低くなる可能性があります。 温度や電力消費量が高い使用率が低いなどの異常は、多くの場合、調整、非効率的なスケジュール設定、またはシステム レベルのボトルネックを示します。
単一のスナップショットではなく、時間の経過に伴う傾向を監視することが重要です。 使用率が急激に低下したり、エラーが急増したりすると、多くの場合、運用環境のワークロードに影響を与える前に、根本的な問題が明らかになります。 複数の GPU 間でメトリックを比較すると、クラスター内の外れ値や不適切な動作のデバイスを特定するのにも役立ちます。 分離ではなく、これらのメトリックを組み合わせて理解することで、GPU の効率とワークロードのパフォーマンスに関する最も明確な分析情報が得られます。
一般的な GPU メトリック
次の NVIDIA DCGM メトリックは、Kubernetes 上の GPU ノード プールのパフォーマンスについて一般的に評価されます。
| GPU メトリック名 | Meaning | 一般的な範囲/インジケーター | 使用に関するヒント |
|---|---|---|---|
DCGM_FI_DEV_GPU_UTIL |
GPU 使用率 (% GPU コアがアクティブな時間) | 0 ~ 100% (より高い方が良い) | ノードごとおよびポッドごとに監視する。低い値は、CPU または I/O のボトルネックを示している可能性があります |
DCGM_FI_DEV_SM_UTIL |
ストリーミング マルチプロセッサの効率 (アクティブ コア%) | 0 ~ 100% | メモリ使用量が多い低い値は、メモリバインドワークロードを示します |
DCGM_FI_DEV_FB_USED |
使用されたフレームバッファー メモリ (バイト) | 0 から合計のメモリまで | ポッド GPU メモリ制限を使用し、ポッドごとのメモリ使用量を追跡する |
DCGM_FI_DEV_FB_FREE |
空き GPU メモリ (バイト) | 0から総メモリに | スケジュール設定と OOM エラーの回避に役立ちます |
DCGM_FI_DEV_MEMORY_UTIL |
メモリ使用率 (%) | 0 ~ 100% | GPU/SM 使用率と組み合わせてメモリバインドワークロードを決定する |
DCGM_FI_DEV_MEMORY_CLOCK |
現在のメモリ クロック周波数 (MHz) | 0 ~ 最大メモリ クロック | メモリ使用率が高い状況での低い値は、スロットリングを示している可能性があります。 |
DCGM_FI_DEV_POWER_USAGE |
瞬時電力使用量 (ワット) | 0 から TDP | 使用率が高い場合のドロップは、スロットリングを示している可能性があります |
DCGM_FI_DEV_TEMPERATURE |
GPU 温度 (°C) | ~30~85°C標準 | 持続的な高温に関するアラート |
DCGM_FI_DEV_NVLINK_RX |
NVLink 受信帯域幅使用率 (%) | 0 ~ 100% | 低い SM 使用率で高い場合のマルチ GPU 同期のボトルネック |
DCGM_FI_DEV_XID_ERRORS |
ドライバーによって報告された GPU 重大エラー | 通常は 0 | 緊急の調査が必要です。Kubernetes のノードをテイントする可能性があります。 |
GPU メトリックの完全なスイートについては、 NVIDIA DCGM Upstream のドキュメントを参照してください。
次のステップ
- Node Problem Detector (NPD) を使用して GPU ノードの正常性 を追跡する
- AKS でマルチインスタンス GPU ノード プールを作成する
- AI 推論と微調整のための AI ツールチェーン オペレーター アドオン を調べる