コンテンツに移動
Containers & Kubernetes

共有がもたらすメリット: GKE で GPU を共有して費用を削減する方法

2022年8月2日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 8 月 2 日に、Google Cloud blog に投稿されたものの抄訳です。

開発者やデータ サイエンティストは、Google Kubernetes Engine(GKE)がサポートする NVIDIA GPU を活用して、機械学習、可視化やレンダリング、ハイ パフォーマンス コンピューティングなどの要求の厳しいワークロードを実行するために、GKE にますます注目しています。現在の経済状況で、お客様はより多くのことをより少ないリソースで行う必要に迫られており、費用の削減が最優先事項となっています。7 月、Google はこれを支援するため、複数のコンテナで 1 つの物理 GPU を共有できる GPU 時間共有機能を GKE にリリースしました。これによって、GPU の使用率を改善できます。NVIDIA A100 GPU 向けのマルチインスタンス GPU に対する GKE の既存サポートに加えて、この機能によって GKE のあらゆる GPU ファミリーに GPU 共有のメリットが広がります。

これとは対照的に、オープンソースの Kubernetes ではコンテナごとに 1 つのフル GPU を割り当てることしかできません。GPU の一部しか必要としないワークロードでは、GPU の膨大なコンピューティング能力を十分に活用できないことになります。そのようなアプリケーションの例として、ノートブックや chat bot では、長時間アイドル状態が継続し、アクティブになっても GPU の一部しか消費しません。

十分に活用されていない GPU は、リアルタイム広告やプロダクトのレコメンデーションなどの多くの推論ワークロードにとって深刻な問題です。このようなアプリケーションは収益を生み出し、ビジネス クリティカルで、レイテンシの影響を受けやすいため、基盤となるインフラストラクチャで負荷の急増を適切に処理する必要があります。GKE の自動スケーリング機能は役立ちますが、1 つの GPU を複数のコンテナ間で共有できないため、過剰プロビジョニングと費用超過につながることが多いです。

GKE の時間共有 GPU

GPU 時間共有では、物理 GPU を共有するコンテナに、ラウンドロビン方式でタイムスライスを割り当てています。タイムスライスでは、GPU を共有するすべてのプロセス間でコンテキストを切り替えるという仕組みです。どの時点においても、1 つのコンテナのみが GPU を占有できます。しかし、一定の時間間隔でコンテキストを切り替えることで、各コンテナに偏りなくタイムスライスを割り当てられます。

タイムスライスの優れている点は、1 つのコンテナのみで GPU を使っている場合に、GPU の最大容量を活用できることです。同じ GPU に別のコンテナが追加された場合、各コンテナは GPU のコンピューティング時間の 50% を使用します。つまり、時間共有は GPU をオーバーサブスクライブし、使用率を改善するための優れた方法です。GPU の共有機能を、GKE の業界をリードする自動スケーリングおよび自動プロビジョニング機能と組み合わせることで、GPU を自動的にスケールアップまたはスケールダウンし、低コストで優れたパフォーマンスを提供できます。

時間共有の GPU ノードの先行ユーザーは、このテクノロジーを使って GKE の使用を加速し、要求の厳しいワークロードに対応しています。San Diego Supercomputing Center(SDSC)が、GKE における時間共有の GPU のパフォーマンスについてベンチマークを実施したところ、ローエンドの T4 GPU でさえも、共有することでジョブのスループットが約 40% 向上したことがわかりました。ハイエンドの A100 GPU では、GPU を共有するとスループットの向上が 4.5 倍になりました。これは非常に大きな変化です。

GKE の NVIDIA マルチインスタンス GPU(MIG)

GKE の GPU 時間共有機能はマルチインスタンス GPU を補完しています。マルチインスタンス GPU では、1 つの NVIDIA A100 GPU を最大 7 つのインスタンスにパーティション分割することで、GPU 使用率を改善し、費用を削減できます。独自の高帯域幅のメモリ、キャッシュ、コンピューティング コアを持つ各インスタンスを 1 つのコンテナに割り当てることで、1 つの NVIDIA A100 GPU につき最大で 7 つのコンテナに割り当てることができます。マルチインスタンス GPU を使用すると、ワークロード間でハードウェアを分離し、GPU で実行中のすべてのコンテナに予測可能で一貫性のある QoS を提供できます。

時間共有 GPU とマルチインスタンス GPU の比較

時間共有 GPU は、A100 といった GKE のあらゆる NVIDIA GPU 上で構成できます。マルチインスタンス GPU は、A100 アクセラレータでのみ利用可能です。

ワークロードで、同じ物理 GPU の他のコンテナからハードウェアを分離する必要がある場合は、マルチインスタンス GPU を使用してください。マルチインスタンス GPU のインスタンスを使うコンテナでは、そのインスタンスで利用可能な CPU とメモリリソースのみにアクセスできます。そのため、マルチインスタンス GPU は、並列ワークロードの予測可能なスループットとレイテンシが必要なときに適しています。しかし、マルチインスタンス GPU で実行しているコンテナが利用可能なインスタンスよりも少ない場合、残りのインスタンスは未使用になります。

一方で、時間共有の場合、コンテキストを切り替えることで、各コンテナで基盤となる物理 GPU をフル活用できます。そのため、1 つのコンテナのみを実行している場合でも、GPU の最大容量を使用できます。時間共有 GPU は、GPU 性能の一部しか必要としないワークロードとバースト可能なワークロードを実行するのに適しています。

時間共有では、最大 48 個のコンテナで 1 つの物理 GPU を共有できます。一方、A100 のマルチインスタンス GPU では、最大 7 つにパーティション分割できます。

GPU 使用率を最大化させたい場合は、各マルチインスタンス GPU のパーティション分割に時間共有を構成できます。コンテナがそのパーティションのリソースに対するアクセスを共有している状態で、各パーティションで複数のコンテナを実行できます。

今すぐ利用開始

GPU と GKE の組み合わせが、大きな変化をもたらすことが証明されています。GKE では自動プロビジョニング、自動スケーリング、管理の容易性を得られるのに対し、GPU では優れた処理能力を得られます。GKE を使用することで、データ サイエンティスト、開発者、インフラストラクチャ チームは、基盤となるインフラストラクチャ、ポータビリティ、互換性、ロード バランシング、スケーラビリティの問題を心配する必要はなく、ワークロードをビルド、トレーニング、処理できます。そして、GPU 時間共有を使えば、ワークロードの高速化ニーズに応じて適切なサイズの GPU リソースを利用できます。さらに、GKE の処理能力を活用してインフラストラクチャを自動的にスケールすることで、ユーザー エクスペリエンスを向上させ、運用費用を最小限に抑えながら、高速化ニーズに効率的に対応できます。GKE で時間共有 GPU の利用を開始するには、ドキュメントをご覧ください。

- Google Kubernetes Engine グループ プロダクト マネージャー Maulin Patel

投稿先