GKE Inference Gateway について

このページでは、Google Kubernetes Engine(GKE)Inference Gateway の主なコンセプトと機能について説明します。これは、生成 AI アプリケーションの提供を最適化するために GKE Gateway を拡張したものです。

このページでは、次の内容を理解していることを前提としています。

このページは、次のような方を対象としています。

  • AI / ML ワークロードの提供に Kubernetes コンテナ オーケストレーション機能を使用することに関心をお持ちの ML エンジニア、プラットフォーム管理者 / オペレーター、データ / AI スペシャリスト。
  • Kubernetes ネットワーキングを操作するクラウド アーキテクトとネットワーク スペシャリスト。

概要

GKE Inference Gateway は GKE Gateway を拡張したもので、生成 AI ワークロードの提供に最適化されたルーティングとロード バランシングを提供します。これにより、AI 推論ワークロードのデプロイ、管理、オブザーバビリティが簡素化されます。

AI/ML ワークロードに最適なロード バランシング戦略を選択するには、GKE での AI 推論のロード バランシング戦略を選択するをご覧ください。

機能とメリット

GKE Inference Gateway は、GKE 上の生成 AI アプリケーションに生成 AI モデルを効率的に提供するために次の主要な機能を提供します。

  • サポートされている指標:
    • KV cache hits: キー値(KV)キャッシュでのルックアップの成功回数。
    • GPU または TPU の使用率: GPU または TPU がアクティブに処理している時間の割合。
    • リクエスト キューの長さ: 処理を待機しているリクエストの数。
  • 推論用に最適化されたロード バランシング: リクエストを分散して、AI モデル提供のパフォーマンスを最適化します。KV cache hitsqueue length of pending requests などのモデルサーバーからの指標を使用して、生成 AI ワークロードでアクセラレータ(GPU や TPU など)をより効率的に使用します。これにより、プレフィックス キャッシュ認識ルーティングが有効になります。これは、リクエスト本文を分析して特定された共有コンテキストを含むリクエストを、キャッシュ ヒットを最大化することで同じモデル レプリカに送信する重要な機能です。このアプローチにより、冗長な計算が大幅に削減され、Time-to-First-Token が改善されるため、会話型 AI、検索拡張生成(RAG)、その他のテンプレート ベースの生成 AI ワークロードに非常に効果的です。
  • 動的 LoRA ファインチューニング モデルの提供: 共通のアクセラレータで動的 LoRA ファインチューニング モデルを提供できます。これにより、共通のベースモデルとアクセラレータで複数の LoRA ファインチューニング モデルを多重化して、モデルの提供に必要な GPU と TPU の数を削減できます。
  • 推論用に最適化された自動スケーリング: GKE HorizontalPodAutoscaler(HPA)は、モデルサーバーの指標を使用して自動スケーリングを行います。これにより、コンピューティング リソースの効率的な使用と推論パフォーマンスの最適化が実現します。
  • モデル対応ルーティング: OpenAI API 仕様で定義されたモデル名に基づいて推論リクエストを GKE クラスタ内でルーティングします。トラフィック分割やリクエスト ミラーリングなどの Gateway ルーティング ポリシーを定義して、さまざまなモデル バージョンを管理し、モデルのロールアウトを簡素化できます。たとえば、特定のモデル名のリクエストを、それぞれ異なるバージョンのモデルを提供する異なる InferencePool オブジェクトにルーティングできます。この構成方法の詳細については、ボディベースのルーティングを構成するをご覧ください。
  • 統合された AI の安全性とコンテンツ フィルタリング: GKE Inference Gateway は Google Cloud Model Armor と統合されており、ゲートウェイでプロンプトとレスポンスに AI 安全性チェックとコンテンツ フィルタリングを適用します。Model Armor は、事後分析と最適化のために、リクエスト、回答、処理のログを提供します。GKE Inference Gateway のオープン インターフェースを使用すると、サードパーティのプロバイダとデベロッパーがカスタム サービスを推論リクエスト プロセスに統合できます。
  • モデル固有の提供の Priority: AI モデルの提供の Priority を指定できます。レイテンシに敏感なリクエストを、レイテンシに寛容なバッチ推論ジョブよりも優先します。たとえばリソースが制限されている場合は、レイテンシに敏感なアプリケーションからのリクエストを優先し、時間的制約の少ないタスクを破棄できます。
  • 推論のオブザーバビリティ: リクエスト率、レイテンシ、エラー、飽和度などの推論リクエストのオブザーバビリティ指標を提供します。Cloud Monitoring と Cloud Logging を使用して、推論サービスのパフォーマンスと動作をモニタリングします。詳細な分析情報については、専用の事前構築済みダッシュボードを活用します。詳細については、GKE Inference Gateway ダッシュボードを表示するをご覧ください。
  • Apigee を使用した高度な API 管理: Apigee と統合して、API セキュリティ、レート制限、割り当てなどの機能で推論ゲートウェイを強化します。詳細な手順については、認証と API 管理用に Apigee を構成するをご覧ください。
  • 拡張性: 拡張可能なオープンソースの Kubernetes Gateway API Inference Extension 上に構築されており、ユーザー管理の Endpoint Picker アルゴリズムをサポートしています。

主要なコンセプトを理解する

GKE Inference Gateway は、GatewayClass オブジェクトを使用する既存の GKE Gateway を拡張します。GKE Inference Gateway には、推論用の OSS Kubernetes Gateway API 拡張機能に合わせて、次の新しい Gateway API カスタム リソース定義(CRD)が導入されています。

  • InferencePool オブジェクト: 同じコンピューティング構成、アクセラレータ タイプ、ベース言語モデル、モデルサーバーを共有する Pod(コンテナ)のグループを表します。これにより、AI モデル提供リソースが論理的にグループ化されて管理されます。1 つの InferencePool オブジェクトは、異なる GKE ノードの複数の Pod にまたがってスケーラビリティと高可用性を提供できます。
  • InferenceObjective オブジェクト: OpenAI API 仕様に従って、InferencePool のサービング モデルの名前を指定します。InferenceObjective オブジェクトは、AI モデルの Priority など、モデルのサービング プロパティも指定します。GKE Inference Gateway は、優先度の値が高いワークロードを優先します。これにより、レイテンシが重要な AI ワークロードとレイテンシに寛容な AI ワークロードを GKE クラスタで多重化できます。LoRA ファインチューニング モデルを提供する InferenceObjective オブジェクトを構成することもできます。

次の図は、GKE クラスタ内の GKE Inference Gateway と、その AI の安全性、オブザーバビリティ、モデル提供との統合を示しています。

GKE Inference Gateway の InferencePool オブジェクトと InferenceObjective オブジェクトの関係
図: GKE Inference Gateway リソースモデル

次の図は、2 つの新しい推論重視のペルソナと、それらが管理するリソースに焦点を当てたリソースモデルを示しています。

推論重視のペルソナとそのリソースのリソースモデル
図: 推論に重点を置いたペルソナを含む GKE Inference Gateway リソースモデル

GKE Inference Gateway の仕組み

GKE Inference Gateway は、Gateway API 拡張機能とモデル固有のルーティング ロジックを使用して、AI モデルへのクライアント リクエストを処理します。リクエスト フローは次のとおりです。

リクエスト フローの仕組み

GKE Inference Gateway は、最初のリクエストからモデル インスタンスまでクライアント リクエストをルーティングします。このセクションでは、GKE Inference Gateway がリクエストを処理する方法について説明します。このリクエスト フローはすべてのクライアントに共通です。

  1. クライアントが、OpenAI API 仕様で説明されている形式のリクエストを、GKE で実行されているモデルに送信します。
  2. GKE Inference Gateway が、次の推論拡張機能を使用してリクエストを処理します。
    1. 本文ベースのルーティング拡張機能: クライアント リクエストの本文からモデル ID を抽出して、GKE Inference Gateway に送信します。GKE Inference Gateway は、この ID を使用して、Gateway API HTTPRoute オブジェクトで定義されたルールに基づいてリクエストをルーティングします。リクエスト本文のルーティングは、URL パスに基づくルーティングに似ています。違いは、リクエスト本文のルーティングではリクエスト本文のデータが使用されることです。
    2. セキュリティ拡張機能: Model Armor またはサポートされているサードパーティ ソリューションを使用して、コンテンツ フィルタリング、脅威検出、サニタイゼーション、ロギングなどのモデル固有のセキュリティ ポリシーを適用します。セキュリティ拡張機能は、これらのポリシーをリクエストと回答の両方の処理パスに適用します。
    3. エンドポイント選択拡張機能: InferencePool 内のモデルサーバーからの主要な指標をモニタリングします。各モデルサーバーの Key-Value キャッシュ(KV キャッシュ)の使用率、保留中のリクエストのキュー長、プレフィックス キャッシュ インデックス、アクティブな LoRA アダプタを追跡し、これらの指標に基づいてリクエストを最適なモデルレプリカにルーティングすることで、AI 推論のレイテンシの最小化とスループットの最大化を実現します。
  3. GKE Inference Gateway が、エンドポイント選択拡張機能によって返されたモデルレプリカにリクエストをルーティングします。

次の図は、GKE Inference Gateway によるクライアントからモデル インスタンスへのリクエスト フローを示しています。

GKE Inference Gateway によるクライアントからモデル インスタンスへのリクエスト フロー
図: GKE Inference Gateway のリクエスト フロー

トラフィック分散の仕組み

GKE Inference Gateway は、InferencePool オブジェクト内のモデルサーバーに推論リクエストを動的に分散します。これにより、リソース使用率を最適化し、さまざまな負荷条件下でパフォーマンスを維持できます。GKE Inference Gateway は、次の 2 つのメカニズムを使用してトラフィック分散を管理します。

  • エンドポイントの選択: 推論リクエストを処理するのに最適なモデルサーバーを動的に選択します。サーバーの負荷と可用性をモニタリングし、複数の最適化ヒューリスティックを組み合わせて各サーバーの score を計算することで、最適なルーティングの決定を行います。

    • プレフィックス キャッシュ認識ルーティング: GKE Inference Gateway は、各モデルサーバーで使用可能なプレフィックス キャッシュ インデックスを追跡し、プレフィックス キャッシュの一致が長いサーバーに高いスコアを付けます。
    • 負荷認識ルーティング: GKE Inference Gateway はサーバーの負荷(KV キャッシュ使用率と保留中のキューの深さ)をモニタリングし、負荷の低いサーバーに高いスコアを付けます。
    • LoRA 認識ルーティング: 動的 LoRA サービングが有効になっている場合、GKE Inference Gateway はサーバーごとにアクティブな LoRA アダプタをモニタリングし、リクエストされた LoRA アダプタがアクティブになっているサーバー、またはリクエストされた LoRA アダプタを動的に読み込むための追加の空き容量があるサーバーに高いスコアを付けます。上記の合計スコアが最も高いサーバーが選択されます。
  • キューイングと負荷制限: リクエストフローを管理し、トラフィックの過負荷を防ぎます。GKE Inference Gateway は、受信リクエストをキューに保存し、定義された優先度に基づいてリクエストの優先度を設定します。

GKE Inference Gateway は、数値 Priority システム(Criticality とも呼ばれます)を使用して、リクエスト フローを管理し、過負荷を防止します。この Priority は、ユーザーが各 InferenceObjective に対して定義する省略可能な整数フィールドです。値が大きいほど、リクエストの重要度が高くなります。システムに負荷がかかると、Priority0 より小さいリクエストは優先度が低いと見なされ、最初に破棄されて 429 エラーが返され、より重要なワークロードが保護されます。デフォルトでは、Priority0 です。リクエストが優先度によってドロップされるのは、Priority0 より小さい値に明示的に設定されている場合のみです。このシステムを使用すると、レイテンシに敏感なオンライン推論トラフィックを、時間的制約の少ないバッチジョブよりも優先できます。

GKE Inference Gateway は、継続的または準リアルタイムの更新が必要な chatbot やリアルタイム翻訳などのアプリケーションのためにストリーミング推論をサポートしています。ストリーミング推論では、回答を単一の完全な出力ではなく増分チャンクまたはセグメントで提供します。ストリーミング レスポンス中にエラーが発生すると、ストリーミングが終了し、クライアントにエラー メッセージが送信されます。GKE Inference Gateway はストリーミング レスポンスを再試行しません。

アプリケーションの例を確認する

このセクションでは、GKE Inference Gateway を使用してさまざまな生成 AI アプリケーション シナリオに対処する例を示します。

例 1: GKE クラスタで複数の生成 AI モデルを提供する

ある企業が、複数の大規模言語モデル(LLM)をデプロイして、さまざまなワークロードに対応したいと考えています。たとえば、chatbot インターフェース用に Gemma3 モデルをデプロイし、レコメンデーション アプリケーション用に Deepseek モデルをデプロイする、などです。これらの LLM のサービング パフォーマンスを最適化する必要もあります。

GKE Inference Gateway を使用すると、InferencePool で選択したアクセラレータ構成を使用してこれらの LLM を GKE クラスタにデプロイし、モデルの名前(chatbotrecommender など)と Priority プロパティに基づいてリクエストをルーティングできます。

次の図は、GKE Inference Gateway がモデルの名前と Priority に基づいてリクエストを異なるモデルにルーティングする方法を示しています。

モデルの名前と Priority に基づいてリクエストを異なるモデルにルーティングする
図: GKE Inference Gateway を使用して GKE クラスタで複数の生成 AI モデルを提供する

この図は、example.com/completions の GenAI サービスに対するリクエストが GKE Inference Gateway によって処理される仕組みを示しています。リクエストは、まず Infra Namespace の Gateway に到達します。この Gateway は、リクエストを GenAI Inference Namespace の HTTPRoute に転送します。この HTTPRoute は、チャットボット モデルと感情分析モデルのリクエストを処理するように構成されています。チャットボット モデルの場合、HTTPRoute はトラフィックを分割します。90% は現在のモデル バージョン({pool: gemma} で選択)を実行している InferencePool に転送され、10% は通常カナリア テスト用の新しいバージョン({pool: gemma-new})を含むプールに転送されます。両方のプールは、チャットボット モデルのリクエストに Priority の 10 を割り当てる InferenceObjective にリンクされています。これにより、これらのリクエストは優先度の高いリクエストとして扱われます。

例 2: 共有アクセラレータで LoRA アダプタを提供する

ある企業が、英語やスペイン語など複数の言語のオーディエンスに焦点を当てて、ドキュメント分析用の LLM を提供したいと考えています。言語ごとにファイン チューニングされたモデルがありますが、GPU と TPU の容量を効率的に使用する必要があります。GKE Inference Gateway を使用すると、各言語の動的 LoRA ファインチューニング アダプタ(english-botspanish-bot など)を、共通のベースモデル(llm-base など)とアクセラレータにデプロイできます。これにより、複数のモデルを共通のアクセラレータに密集させて配置することで、必要なアクセラレータの数を減らすことができます。

次の図は、GKE Inference Gateway が共有アクセラレータで複数の LoRA アダプタを提供する方法を示しています。

共有アクセラレータで複数の LoRA アダプタを提供する
図: 共有アクセラレータで LoRA アダプタを提供する

次のステップ