Google Kubernetes Engine(GKE)の GPU について


このページでは、Google Kubernetes Engine(GKE)で GPU をリクエストする方法について、次のことを説明します。

GKE で GPU ハードウェアをリクエストする方法は、Autopilot と Standard のどちらのモードを使用しているかによって異なります。Autopilot では、ワークロードで GPU リソースを指定して GPU ハードウェアをリクエストします。GKE Standard モードでは、GPU ハードウェアをクラスタ内のノードに接続し、それらのノード上で実行されているコンテナ化されたワークロードに GPU リソースを割り当てることができます。 GPU を接続してワークロードで使用する方法については、Autopilot に GPU ワークロードをデプロイするまたは Standard ノードプールで GPU を実行するをご覧ください。

GKE で使用できる GPU ハードウェアは、コンピューティング ワークロード用 Compute Engine GPU のサブセットです。使用できる具体的なハードウェアは、クラスタの Compute Engine のリージョンやゾーンによって異なります。具体的な内容については、GPU のリージョンとゾーンをご覧ください。

GKE には、タイム シェアリング、マルチインスタンス GPU、NVIDIA MPS を使用したマルチインスタンス GPU など、ノードで実行されるワークロードの GPU リソース使用率を改善する GPU 固有の機能が用意されています。

GPU 割り当てを計画する

GPU 割り当てとは、Google Cloud プロジェクトで実行できる GPU の最大数のことです。GKE クラスタで GPU を使用するには、プロジェクトに十分な GPU が割り当てられている必要があります。

GPU 割り当ては、クラスタで実行しようとする GPU の総数以上であることが必要です。クラスタの自動スケーリングを有効にする場合は、クラスタの最大ノード数にノードあたりの GPU 数を掛けた数以上の GPU 割り当てをリクエストする必要があります。

たとえば、それぞれに 2 つの GPU がある 3 つのノードを使用する場合は、プロジェクトで 6 つの GPU 割り当てが必要です。

追加の GPU 割り当てをリクエストするには、指標として gpus を使用し、割り当て上限の引き上げリクエストの手順に沿って操作します。

Autopilot または Standard を使用して GPU のサポートを選択する

GPU は、Autopilot クラスタと Standard クラスタで使用できます。フルマネージドの Kubernetes エクスペリエンスを実現するには、Autopilot クラスタを使用することをおすすめします。Autopilot では、GKE がドライバのインストール、ノードのスケーリング、Pod の分離、ノードのプロビジョニングを管理します。

次の表に、Autopilot と Standard で対応している GPU の違いを示します。

説明 Autopilot Standard
GPU ハードウェアのリクエスト ワークロードで GPU リソースを指定します。 GPU ハードウェアをクラスタ内のノードに接続し、それらのノード上で実行されているコンテナ化されたワークロードに GPU リソースを割り当てます。
使用できる GPU ハードウェア
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40GB
  • NVIDIA A100 80GB
  • NVIDIA H100 80GB
Compute Engine で対応しているすべての GPU タイプ
GPU の選択 ワークロード仕様で GPU の数量とタイプをリクエストします。 デフォルトで Autopilot は、その GKE バージョン用のデフォルト ドライバをインストールしてノードを管理します。Autopilot で特定のドライバ バージョンを選択するには、Autopilot GPU Pod の NVIDIA ドライバの選択をご覧ください。 Standard ノードプールで GPU を実行するで説明されている操作を行います。
  1. 特定の GPU タイプと対応する Compute Engine マシンタイプを使用してノードプールを作成し、インストールするドライバを選択します。
  2. 自動インストールを使用しない場合は、ノードに GPU ドライバを手動でインストールします。
  3. Pod 仕様で GPU の数量をリクエストします。
GPU 使用率の改善
セキュリティ GKE Sandbox の GPU GKE Sandbox の GPU
料金 Autopilot GPU Pod の料金 Compute Engine GPU の料金

ワークロードに最適な GKE の運用モードを選択するには、GKE の運用モードを選択するをご覧ください。

GKE または GKE 上の NVIDIA GPU Operator を使用して GPU スタックを管理する

デフォルトでは、GKE は GPU ドライバの自動インストール、NVIDIA Data Center GPU Manager(DCGM)を使用した GKE 上の GPU ワークロードのモニタリング、GPU 共有戦略など、GPU ノードのライフサイクル全体を管理します。

GKE は GPU ノードのライフサイクルを完全に管理するため、GKE を使用して GPU ノードを管理することをおすすめします。次のいずれかを選択して、GPU ノード管理用の GKE を開始します。

NVIDIA GPU Operator は、Container-Optimized OS(COS)と Ubuntu の両方のノードイメージで、GKE のフルマネージド GPU サポートの代替として使用できます。複数のクラウド サービス プロバイダ間で一貫したエクスペリエンスを実現する場合、NVIDIA GPU Operator をすでに使用している場合、または NVIDIA GPU Operator に依存するソフトウェアを使用している場合は、このオプションを選択します。詳細については、NVIDIA GPU Operator を使用して GPU スタックを管理するをご覧ください。

ユースケースに最適なオプションを選択するには、GKE で GPU ノードを管理する 2 つの方法を比較した次の表をご覧ください。

説明 GKE を使用して GPU ノードを管理する GKE で NVIDIA GPU Operator を使用する
GPU ノードのライフサイクルの管理(インストール、アップグレード) GKE によるフルマネージド。 ユーザーが管理。
ドライバのインストール GPU ドライバの自動インストールと手動インストール GPU ドライバを手動でインストールします。
ノードセレクタ cloud.google.com/gke-gpu=true nvidia.com/gpu=true
GPU 共有戦略
  • マルチプロセス サービス: サポートされていません。
GPU ノードの健全性チェック
  • GPU の割り当て可能な数が容量と一致せず、自動修復が有効になっている場合は、15 分後にノードの修復をトリガーします。
  • デフォルトでは、すべてのエラーコードをモニタリングします。
  • GPU の割り当て可能な数が容量と一致せず、自動修復が有効になっている場合は、15 分後にノードの修復をトリガーします。
指標とオブザーバビリティ
  • システム指標が有効になっている場合、Cloud Monitoring で GPU 指標(デューティ サイクル、メモリ使用量、メモリ容量)を使用できます。
  • GPU オペレーターが提供するセルフマネージド DCGM。
  • GKE GPU システム指標が有効になっている場合でも、GPU 関連のシステム指標(デューティ サイクル、メモリ使用量、メモリ容量など)は収集されません。

GKE の GPU 機能を使用してリソース使用量を最適化する

デフォルトでは、Kubernetes は GPU をコンテナに割り当てるだけですが、GKE には GPU ワークロードのリソース使用量を最適化するための追加機能があります。

GKE では、使用率の低い GPU リソースの量を低減するために、次の機能を利用できます。

GPU の機能
マルチインスタンス GPU

以下で利用可能: Autopilot と Standard

単一の GPU を、ノード上のコンテナに個別の GPU として割り当て可能なハードウェア分離インスタンス(最大 7 個)に分割します。割り当てられた各コンテナは、対象のインスタンスで利用可能なリソースを取得します。

タイム シェアリング GPU

以下で利用可能: Autopilot と Standard

ノード上の複数のコンテナに対して、単一の GPU が複数のユニットとして提供されます。GPU ドライバがコンテキストを切り替えて、割り当てられた各コンテナに完全な GPU リソースを必要に応じて割り当てます。

NVIDIA MPS

利用可能なタイプ: Standard

1 つの物理 NVIDIA GPU を複数のコンテナで共有します。NVIDIA MPS は、CUDA API のバイナリ互換の代替実装です。これは、1 つの GPU デバイスで協調型マルチプロセス CUDA アプリケーションを同時に実行できるように設計されています。

CUDA アプリケーション用の NVIDIA CUDA-X ライブラリにアクセスする

CUDA は、NVIDIA の GPU 用並列コンピューティング プラットフォームおよびプログラミング モデルです。CUDA アプリケーションを使用するには、使用するイメージにライブラリが必要となります。NVIDIA CUDA-X ライブラリを追加するには、コンテナ仕様の LD_LIBRARY_PATH 環境変数に次の値を追加し、独自のイメージをビルドして使用します。

ノードで実行されている GKE パッチ バージョンに、選択した CUDA バージョンと互換性のある GPU ドライバのバージョンが含まれていることを確認します。GKE のバージョンに関連付けられている GPU ドライバのバージョンのリストについては、現在の GKE バージョン表にリンクされた、対応する Container-Optimized OS のページをご覧ください。

Autopilot クラスタでは、GKE によってドライバ バージョンの選択とインストールが管理されます。

GPU ノード ワークロードのパフォーマンスをモニタリングする

GKE クラスタでシステム指標が有効になっている場合、Cloud Monitoring で次の指標を使用して GPU ワークロードのパフォーマンスをモニタリングできます。

  • デューティ サイクル(container/accelerator/duty_cycle): 過去のサンプル期間(10 秒)に対する、アクセラレータがアクティブに処理していた時間の割合。1~100 までの間。
  • メモリ使用量(container/accelerator/memory_used): 割り当てられたアクセラレータ メモリの量(バイト単位)。
  • メモリ容量(container/accelerator/memory_total): アクセラレータの総メモリ(バイト単位)。

事前定義されたダッシュボードを使用して、GPU ノードを使用するクラスタをモニタリングできます。詳細については、オブザーバビリティ指標を表示するをご覧ください。クラスタとそのリソースのモニタリングに関する一般的な情報については、GKE のオブザーバビリティをご覧ください。

ワークロードの使用状況の指標を表示する

ワークロードの GPU 使用状況の指標は、Google Cloud コンソールの [ワークロード] ダッシュボードで表示できます。

ワークロードの GPU 使用状況を表示するには、以下の手順に沿って操作します。

  1. Google Cloud コンソールの [ワークロード] ページに移動します。

    [ワークロード] に移動
  2. ワークロードを選択します。

[ワークロード] ダッシュボードに、GPU メモリの使用量と容量、GPU デューティ サイクルのチャートが表示されます。

NVIDIA Data Center GPU Manager(DCGM)の指標を表示する

Google Cloud Managed Service for Prometheus を使用すると、NVIDIA DCGM 指標を収集して可視化できます。Autopilot クラスタの場合、GKE によってドライバがインストールされます。Standard クラスタの場合は、NVIDIA ドライバをインストールする必要があります。

GKE で管理されている DCGM パッケージをデプロイする方法については、NVIDIA Data Center GPU Manager(DCGM)の指標の収集と表示をご覧ください。

ノード メンテナンスによる中断に対処する

GPU をホストする GKE ノードは、メンテナンス イベントなど、ノード シャットダウンの原因となる可能性のある中断の影響を受けます。コントロール プレーンがバージョン 1.29.1-gke.1425000 以降を実行している GKE クラスタでは、ワークロードを正常に停止するように GKE を構成することで、ワークロードの中断を軽減できます。

AI / ML ワークロードを実行している GKE ノードで発生する可能性のある中断イベントを理解、構成、モニタリングするには、GPU と TPU の GKE ノードの中断を管理するをご覧ください。

次のステップ