NVIDIA/k8s-device-plugin

NVIDIA device plugin for Kubernetes

何を解決するか

このプロジェクトは、KubernetesクラスタがNVIDIA GPUを認識し、利用できるようにします。デフォルトではKubernetesはGPUを最初のクラスのリソースとして管理する方法を知りません。このプラグインにより、クラスタは各ノード上のGPU数を自動検出し、その健全性を監視し、GPUを要求するコンテナに割り当てることができます。

動作方法

DaemonSetとして動作し、クラスタ内のすべてのノードで実行されます。Kubernetesデバイスプラグインフレームワークを実装して、nvidia.com/gpuリソースタイプを公開します。ポッドがGPUを要求すると、プラグインはNVIDIA Container Toolkitと連携して、ハードウェアがコンテナに正しく注入されるようにします。

複数の高度な割り当て戦略をサポートしています:

  • MIG(マルチインスタンスGPU):1つのGPUを複数の小さなインスタンスに分割できます。
  • タイムスライシング:1つのGPUに対して複数のワークロードが時間的に交互に使用できるように、リソースの仮想レプリカを作成します。
  • MPS(マルチプロセスサービス):各ワークロードごとにメモリと計算リソースを明示的に制限するための空間分割を提供します。

対象ユーザー

NVIDIAハードウェアを使用してKubernetes上でAI、機械学習、またはハイパフォーマンスコンピューティング(HPC)ワークロードを展開するクラスタ管理者およびDevOpsエンジニア。

主な特徴

  • 自動リソース公開:GPUの数をKubernetes APIに自動的に報告します。
  • 柔軟な共有:CUDAタイムスライシングとMPSをサポートし、GPUの過剰割り当てが可能です。
  • MIGサポート:マルチインスタンスGPUの使用を可能にし、ハードウェアの利用効率を向上させます。
  • カスタマイズ可能な割り当て:デバイスID(UUID vs インデックス)やデバイスリスト(環境変数、ボリュームマウント、またはCDIアノテーション)の複数の戦略を提供します。
  • GPU機能の自動発見:GPUの機能に基づいたノードラベルの自動付与を実装しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト