このページでは、Google Kubernetes Engine(GKE)の GPU について説明します。これにより、ワークロードに最適な GPU 構成を選択できます。GPU を使用すると、ML やデータ処理などのリソースを大量に消費するタスクを高速化できます。このページの情報は、次のことに役立ちます。
- 必要なときに GPU の可用性を確保する。
- GKE Autopilot モードのクラスタと GKE Standard モードのクラスタのどちらで GPU を使用するかを決定します。
- GPU 関連の機能を選択して、GPU 容量を効率的に使用します。
- GPU ノード指標をモニタリングします。
- 中断をより効果的に処理することで、GPU ワークロードの信頼性を向上させます。
このページは、アクセラレータ インフラストラクチャがワークロードに合わせて最適化されるようにしたいプラットフォーム管理者とオペレーターとML エンジニアを対象としています。
このページを読む前に、次のことをよく理解しておいてください。
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 固有の機能が用意されています。
このページでは、GKE で GPU をリクエストする方法について、次のことを説明します。
- GPU 割り当てを選択する(プロジェクトで実行できる GPU の最大数)
- Autopilot と Standard モードのどちらを使用するかを決める
- GKE または GKE 上の NVIDIA GPU Operator を使用して GPU スタックを管理する
- 使用率の低い GPU リソースの量を減らすための機能を選択する
- CUDA アプリケーション用の NVIDIA CUDA-X ライブラリにアクセスする
- 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 ハードウェア |
|
Compute Engine で対応しているすべての GPU タイプ |
GPU の選択 | ワークロード仕様で GPU の数量とタイプをリクエストします。 デフォルトで Autopilot は、その GKE バージョン用のデフォルト ドライバをインストールしてノードを管理します。Autopilot で特定のドライバ バージョンを選択するには、Autopilot GPU Pod の NVIDIA ドライバの選択をご覧ください。 |
Standard ノードプールで 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 ノードの健全性チェック |
|
|
指標とオブザーバビリティ |
|
|
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
環境変数に次の値を追加し、独自のイメージをビルドして使用します。
/usr/local/cuda-CUDA_VERSION/lib64
: ノード上の NVIDIA CUDA-X ライブラリの場所。CUDA_VERSION
は、使用した CUDA-X イメージ バージョンに置き換えます。一部のバージョンには、/usr/local/nvidia/bin
にデバッグ ユーティリティも含まれています。詳細については、DockerHub の NVIDIA CUDA イメージに関するページをご覧ください。ご使用の CUDA に最低限必要な GPU ドライバのバージョンを確認するには、CUDA のツールキットと対応するドライバ バージョンについての記事をご覧ください。
/usr/local/nvidia/lib64
: NVIDIA デバイス ドライバの場所。
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 使用状況を表示するには、以下の手順に沿って操作します。
Google Cloud コンソールの [ワークロード] ページに移動します。
[ワークロード] に移動- ワークロードを選択します。
[ワークロード] ダッシュボードに、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 ノードの中断を管理するをご覧ください。