GKE での GPU について


このページでは、Google Kubernetes Engine(GKE)における GPU のユースケース、対応している機能と GPU タイプ、Autopilot モードと Standard モードとの違いについて説明します。GPU を接続してワークロードで使用する方法については、Autopilot に GPU ワークロードをデプロイするまたは Standard ノードプールで GPU を実行するをご覧ください。

GKE で使用できる GPU

GKE Autopilot では、ワークロードで GPU リソースを指定して GPU ハードウェアをリクエストします。GKE Standard では、GPU ハードウェアをクラスタ内のノードに接続し、それらのノード上で実行されているコンテナ化されたワークロードに GPU リソースを割り当てることができます。こうしたアクセラレータを使用して、次のようなリソース使用量の多いタスクを実行できます。

  • ML の推論とトレーニング
  • 大規模なデータ処理

GKE で使用できる GPU ハードウェアは、コンピューティング ワークロード用 Compute Engine GPU のサブセットです。GKE では、GPU 固有の機能(時間共有 GPUマルチインスタンス GPU など)により、ノード上の GPU リソースを使用するワークロードの効率を改善できます。

使用できる具体的なハードウェアは、クラスタの Compute Engine のリージョンやゾーンによって異なります。具体的な内容については、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 クラスタで使用できます。次の表では、Autopilot と Standard で対応している GPU の違いを示します。

説明 Autopilot Standard
使用できる GPU ハードウェア
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40GB
  • NVIDIA A100 80GB
  • NVIDIA H100 80GB
Compute Engine で対応しているすべての GPU タイプ
GPU の選択 ワークロード仕様で GPU の数量とタイプをリクエストする。 Autopilot によって安定したドライバがインストールされノードが管理される。
  1. 特定の GPU タイプと対応する Compute Engine マシンタイプを使用してノードプールを作成し、インストールするドライバを選択する
  2. 自動インストールを使用しない場合は、ノードに GPU ドライバを手動でインストールする
  3. Pod 仕様で GPU の数量をリクエストする

手順については、Standard ノードプールで GPU を実行するを参照

その他の GPU 機能
料金 Autopilot GPU Pod の料金 Compute Engine GPU の料金

Autopilot では、GKE がドライバのインストール、ノードのスケーリング、Pod の分離、ノードのプロビジョニングを管理します。GPU のクラスタモードは、次のようにノードに対して必要とする柔軟性と制御レベルに基づいて選択することをおすすめします。

  • ノードを管理する必要性がなく、GPU ベースのワークロードのデプロイに重点的に取り組んでおり、使用できる GPU タイプがニーズに合っている場合は、Autopilot を使用してください。
  • ノード、ドライバのバージョン、スケーリング、分離、基盤となるマシンを自分で管理する場合は、Standard を使用してください。

GKE での GPU の機能

GKE には、ノードで GPU リソースを浪費しないように、GPU ワークロードのリソース使用量を最適化するための追加機能が用意されています。デフォルトの場合、Kubernetes は、利用可能な GPU のごく一部がコンテナで必要となる場合や、必ずしもコンテナでリソースが使用されるとは限らなくても、すべてのユニットとしてコンテナに割り当てられる GPU のみに対応しています。

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

GPU の特長
時間共有 GPU

以下で利用可能: Autopilot と Standard

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

マルチインスタンス GPU

以下で利用可能: Autopilot と Standard

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

NVIDIA CUDA-X ライブラリについて

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

CUDA は、NVIDIA の GPU 用並列コンピューティング プラットフォームおよびプログラミング モデルです。CUDA アプリケーションを使用するには、使用するイメージにライブラリが必要となります。NVIDIA CUDA-X ライブラリを追加するには、次のいずれかの方法を使用します。

  • 推奨: NVIDIA CUDA-X ライブラリがプリインストールされたイメージを使用します。たとえば、Deep Learning Containers を使用できます。これらのコンテナには、主要なデータ サイエンス フレームワーク、NVIDIA CUDA-X ライブラリ、ツールがプリインストールされています。また、NVIDIA CUDA イメージには NVIDIA CUDA-X ライブラリのみが含まれます。
  • 独自のイメージをビルドして使用します。この場合、コンテナ仕様の LD_LIBRARY_PATH 環境変数に次の値を含めます。
    1. /usr/local/cuda-CUDA_VERSION/lib64: ノード上の NVIDIA CUDA-X ライブラリの場所。CUDA_VERSION は、使用した CUDA-X イメージ バージョンに置き換えます。一部のバージョンには、/usr/local/nvidia/bin にデバッグ ユーティリティも含まれています。詳細については、DockerHub の NVIDIA CUDA イメージに関するページ をご覧ください。
    2. /usr/local/nvidia/lib64: NVIDIA デバイス ドライバの場所。

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

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 デューティ サイクルのチャートが表示されます。

次のステップ