コンテンツに移動
Containers & Kubernetes

GKE での ML / AI 推論向けのデータ読み込みに関するベスト プラクティス

2024年11月25日
Brian Kaufman

Senior Product Manager GKE AI/ML

Akshay Ram

Group Product Manager GKE AI/ML

Join us at Google Cloud Next

Early bird pricing available now through Feb 14th.

Register

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

AI モデルが高度化するなかで、サービス提供には大規模なモデル データがますます必要となってきています。推論のために必要なフレームワークとともにモデルと重みを読み込むと、数秒、場合によっては数分のスケーリングの遅延が発生し、費用とエンドユーザーのエクスペリエンスの両方に影響を与えます。

たとえば、TritonText Generation InferenceTGI)、vLLM などの推論サーバーはコンテナとしてパッケージ化されており、多くの場合、そのサイズは 10GB を超えています。そのため、ダウンロードに時間がかかり、Kubernetes Pod の起動時間が長くなる可能性があります。その後、推論 Pod が起動すると、モデルの重みを読み込む必要があり、そのサイズは数百 GB にもなり、データ読み込みの問題がさらに大きくなります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/11_jEFgWwa.max-1600x1600.jpg

このブログでは、推論サービング コンテナおよびモデルと重みのダウンロードの両方でデータ読み込みを高速化する手法をご紹介します。これにより、Google Kubernetes EngineGKE)での AI / ML 推論ワークロードの読み込み時間を全体的に短縮できるようになります。

1. コンテナ読み込み時間を短縮するために、セカンダリ ブートディスク を使用してコンテナ イメージをお使いの推論エンジンと適用可能なライブラリを使用して直接 GKE ノードでキャッシュに保存する。

2. Google Cloud Storage からのモデルと重みの読み込み時間を短縮するために、 Cloud Storage FUSE または Hyperdisk ML を使用する。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_hmSczMo.max-1600x1600.jpg

上の画像は、セカンダリ ブートディスク(1)がコンテナ イメージを事前に保存することで、Pod やコンテナの起動中にイメージをダウンロードするプロセスを回避できることを示しています。スピードとスケールが要求される AI / ML 推論ワークロードでは、Cloud Storage またはネットワーク接続されたディスクに保存されたモデルと重みのデータに Pod を接続するオプションとして、Cloud Storage Fuse2)と Hyperdisk ML3)があります。以下でそれぞれのアプローチをより詳しく見ていきましょう。

セカンダリ ブートディスクでコンテナ読み込み時間を短縮する

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_w1FAwbt.max-1600x1600.jpg

GKE を使用すると、作成時にノードに接続されるコンテナ イメージを事前にセカンダリ ブートディスクにキャッシュ保存できます。この方法でコンテナを読み込むメリットは、イメージのダウンロード ステップを省略し、コンテナの起動をすぐに開始できるため、起動時間が大幅に短縮されることです。以下の図は、コンテナ イメージのダウンロード時間がコンテナ イメージのサイズに比例して長くなることを示しています。そしてこれらの時間を、ノードで事前に読み込まれキャッシュに保存されたバージョンのコンテナ イメージを使用した場合と比較しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_om4H3ws.max-1500x1500.jpg

セカンダリ ブートディスクに 16GB のコンテナ イメージを事前にキャッシュ保存することで、Container Registry からコンテナ イメージをダウンロードする場合と比較して、読み込み時間が最大 29 倍短縮されたのがわかります。さらに、このアプローチでは、コンテナサイズに依存しないアクセラレーションのメリットを享受できるため、大規模なコンテナ イメージを想定どおりの速さで読み込むことができます。

セカンダリ ブートディスクを使用するには、まずすべてのイメージを含むディスクを作成し、そのディスクからイメージを作成して、GKE ノードプールを作成する際にディスク イメージをセカンダリ ブートディスクとして指定します。詳しくは、ドキュメントをご覧ください。

モデルの重みの読み込み時間の短縮

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_KQH6Q6x.max-1800x1800.jpg

多くの ML フレームワークは、長期の保存によく使用される Google Cloud Storage などのオブジェクト ストレージにチェックポイント(モデルの重みのスナップショット)を出力します。Cloud Storage を信頼できる情報源として使用して、GKE-Pod レベルでデータを取得するには、Cloud Storage Fuse Hyperdisk MLHdML)の 2 つのプロダクトがあります。  

どちらか一つのプロダクトを選ぶ際に考慮すべき主な点は次の 2 つです。

  • パフォーマンス - GKE ノードがどれだけ迅速にデータを読み込めるか

  • 運用のシンプルさ - いかに簡単にデータを更新できるか

Cloud Storage Fuse は、オブジェクト格納バケットに存在するモデルの重みについて、Cloud Storage への直接リンクを提供します。さらに、ソースバケットからの追加ダウンロード(レイテンシが発生する)を防ぐために、読み取りが複数回必要なファイル向けにキャッシング メカニズムを備えています。なぜ Cloud Storage Fuse が魅力的かというと、特定のバケットで新しいファイルをダウンロードするために Pod が事前にハイドレーションの運用アクティビティを行う必要がないからです。ここで注意すべき重要な点は、Pod が接続しているバケットを切り替える場合は、更新された Cloud Storage FUSE の構成を使用して Pod を再起動する必要があることです。パフォーマンスをさらに向上させるには、並列ダウンロードを有効化できます。並列ダウンロードは、モデルをダウンロードするために複数のワーカーを生成し、モデルの pull パフォーマンスを大幅に向上させます。

Hyperdisk ML は、Cloud Storage やその他のオンラインの場所から Pod に直接ファイルをダウンロードするよりも優れたパフォーマンスとスケーラビリティを提供します。さらに、1 つの Hyperdisk ML インスタンスに最大 2,500 ノードを接続でき、総帯域幅は最大1.2 TiB/となります。これは、多くのノードにまたがる推論ワークロードや、同じデータを読み取り専用で繰り返しダウンロードするような場合に特におすすめです。Hyperdisk ML を使用するには、データを使用する前に Hyperdisk ML ディスクに読み込み、更新するたびに再度読み込みます。ただし、データが頻繁に変更される場合、業務にかかるオーバーヘッドが増えます。

モデルと重みの読み込みにどのプロダクトを使用するかは、ユースケースによって異なります。次の表で、各プロダクトの詳細な比較を確認できます。

ストレージ オプション

理想的なユースケース

パフォーマンス

対象

モデル更新プロセス

GKE CSI を使用した Cloud Storage Fuse

頻繁なデータ更新

高速

リージョン。Pod はゾーンにまたがって自由にデプロイでき、データにアクセスできます。

Pod を再デプロイし、永続ボリュームの要求を更新して、Cloud Storage CSI に新しいデータを使用したバケットまたはファイルを参照させます。

GKE CSI を使用した Hyperdisk ML

最小限のデータ更新

最速

ゾーン。データは、自動化された GKE のクローニング機能によってリージョン化し、ゾーンをまたいで利用できるようにすることが可能です。

新しい永続ボリュームを作成し、新しいデータを読み込み、新しいボリュームを参照する PVC を含む Pod を再デプロイします。

ご覧のとおり、パフォーマンスの高いモデル読み込み戦略を構築する際は、スループット以外にも考慮事項があります。

まとめ

大規模な AI モデル、重み、コンテナ イメージを GKE ベースの AI モデルに読み込むと、ワークロードの起動時間の遅延が発生します。上で説明した 3 つの方法の組み合わせ(コンテナ イメージのセカンダリ ブートディスク、Hyperdisk ML またはモデルと重み向け Cloud Storage Fuse)を使用することで、AI / ML 推論アプリケーションのデータ読み込み時間を短縮しましょう。

次のステップ:

-GKE AI / ML、シニア プロダクト マネージャー Brian Kaufman
-
GKE AI / ML、グループ プロダクト マネージャー Akshay Ram
投稿先