GKE の新しい複数インスタンス NVIDIA GPU でワークロードを大幅に加速
Google Cloud Japan Team
※この投稿は米国時間 2021 年 4 月 28 日に、Google Cloud blog に投稿されたものの抄訳です。
デベロッパーやデータ サイエンティストは、Google Kubernetes Engine(GKE)がサポートする NVIDIA GPU を活用して、機械学習、可視化やレンダリング、ハイ パフォーマンス コンピューティングなどの要求の厳しいワークロードを実行するために、GKE にますます注目しています。GKE が柔軟性、自動スケーリング、管理の容易性をもたらすのに対し、GPU は優れた処理能力をもたらします。このたび Google Cloud では、GKE での複数インスタンス GPU のサポートを開始いたしました(現在はプレビュー版)。これにより、GPU の投資環境からより優れた価値を引き出せるようになります。
コンテナでワークロードにほんの一部の GPU しか必要ない場合でも、オープンソースの Kubernetes は、コンテナごとに 1 つのフル GPU を割り振ります。これはとりわけ、最新世代の高性能な GPU を使用している場合において、リソースの浪費やコスト超過につながる恐れがあります。この問題が特に懸念されるのは、ごく少数のサンプルをリアルタイムで処理する推論ワークロードです(対照的に、トレーニング ワークロードでは数百万のサンプルを大規模なバッチ処理で処理します)。そのため、推論やその他の軽量な GPU ワークロードでは、使用率の改善とコスト削減を図るにあたり、GPU 共有が不可欠となります。
GKE での複数インスタンス GPU のサポート開始により、単一の NVIDIA A100 GPU を最大 7 つのインスタンスにパーティション分割し、それぞれが独自の高帯域幅のメモリ、キャッシュ、コンピューティング コアを持つことができるようになりました。各インスタンスを 1 つのコンテナに割り振ることができるため、1 つの NVIDIA A100 GPU あたり最大 7 つのコンテナが割り振られます。さらに、複数インスタンス GPU は、コンテナ間でのハードウェアの分離と、GPU 上で実行中のすべてのコンテナに一貫性のある予測可能なサービス品質(QoS)をもたらします。
Google Cloud の最大規模を誇る GPU ベースの Compute Engine インスタンス、A2 VM は、インスタンスあたり最大 16 個の A100 GPU をサポートします。つまり、ノードごとに最大 112 個のスケジュール可能な GPU インスタンスを持ち、それぞれが 1 つの独立したワークロードを実行できます。GKE の業界トップクラスの自動スケーリングと自動プロビジョニングの機能を活用することで、複数インスタンス GPU は自動的にスケールアップやスケールダウンができるため、低コストで優れたパフォーマンスを提供します。
CUDA® アプリケーションでは、複数インスタンス GPU をほとんど意識する必要がありません。各 GPU インスタンスは、通常の GPU リソースとして表示され、プログラミング モデルも変更されないため、複数インスタンス GPU を簡単かつ便利に使用できます。
お客様の声
複数インスタンス GPU ノードの先行ユーザーは、このテクノロジーを使用して GKE の使用を加速し、要求の厳しいワークロードに対応しています。保険業界向けの不動産に関する知見とワークフロー ツールを提供している Betterview は、航空画像の処理に GKE と NVIDIA GPU を使用しています。
「A100 による複数インスタンス GPU のアーキテクチャは、Kubernetes / GKE の GPU と連携しながら進化しています。GPU をリソースに接続するために必要な構成の数を減らすことで、Google Cloud と NVIDIA は大きな飛躍を遂げ、機械学習を大規模にデプロイするためのハードルは低くなりました。構成の複雑さが軽減されたことはもちろん、A100 による NVIDIA の完全な GPU 推論パフォーマンスは極めて高速です。Google Cloud と提携することで、当社にとって最適な方法で AI をデプロイするための多数の優れた選択肢を与えてもらいました。」- Betterview エンジニアリング担当バイス プレジデント兼 CTO、Jason Janofsky 氏
複数インスタンス GPU パーティションの作成
A100 GPU は 7 つのコンピューティング ユニットと 8 つのメモリユニットで構成されており、さまざまなサイズの GPU インスタンスにパーティション分割できます。各自のワークロードのスケーリングに適したものを自由に選べるのが特長です。たとえば、それぞれ 20 GB のメモリを持つ複数インスタンス GPU のインスタンスを 2 つ作成することも、10 GB のインスタンスを 3 つ、または 5 GB のインスタンスを 7 つ作成することもできます。
GPU パーティション インスタンスは、[compute]g.[memory]gb という構文を使用します。たとえば、GPU パーティション サイズの 1g.5gb は、1 つのコンピューティング ユニット(GPU のストリーミング マルチプロセッサの 1/7)と 1 つのメモリユニット(5 GB)を持つ GPU インスタンスを指します。A100 GPU のパーティション サイズは、GKE クラスタまたはノードプール API を通じて指定できます。
複数インスタンス GPU ノードへのコンテナのデプロイ
1 つのノード上の複数インスタンス GPU のインスタンスごとに、最大 1 つのコンテナをデプロイできます。1g.5gb のパーティション サイズの場合、1 つの A100 GPU を使用したノードでは 7 つの複数インスタンス GPU パーティションが利用可能です。これにより、GPU を要求するコンテナを最大 7 個までこのノードにデプロイできます。
各ノードには、利用可能な GPU パーティション サイズがラベル付けされます。このラベリングにより、ワークロードはノードセレクタまたはノード アフィニティを使用して適切なサイズの GPU インスタンスを要求できます。
使ってみる
GKE の複数インスタンス GPU を使用することで、ワークロードの高速化のニーズに応じて適切なサイズのリソースを容易に利用できます。さらに、GKE の処理能力を活用してインフラストラクチャを自動的にスケールして、より優れたユーザー エクスペリエンスを提供し、運用コストを最小限に抑えながら、お客様の高速化ニーズに効率的に対応することができます。ぜひ実際にお試しください。
-GCP シニア プロダクト マネージャー Maulin Patel
-GCP ソフトウェア エンジニア Pradeep Venkatachalam