GKE Inference Quickstart レシピを使用してベスト プラクティスの推論を実行する


このページでは、GKE Inference Quickstart を使用して、Google Kubernetes Engine(GKE)での AI / ML 推論ワークロードのデプロイを簡素化する方法について説明します。Inference Quickstart は、推論のビジネス要件を指定し、モデル、モデルサーバー、アクセラレータ(GPUTPU)、スケーリングに関するベスト プラクティスと Google のベンチマークに基づいて、最適化された Kubernetes 構成を取得できるユーティリティです。これにより、構成を手動で調整してテストする必要がなくなり、時間を節約することができます。

このページは、AI / ML 推論用に GKE を効率的に管理して最適化する方法を探している機械学習(ML)エンジニア、プラットフォーム管理者、オペレーター、データおよび AI スペシャリストを対象としています。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。

モデル サービングのコンセプトと用語、GKE の生成 AI 機能を使用してモデル サービングのパフォーマンスを強化する方法については、GKE でのモデル推論についてをご覧ください。

このページを読む前に、KubernetesGKEモデル サービングについて理解しておいてください。

Inference Quickstart の使用

Inference Quickstart を使用する手順の概要は次のとおりです。詳しい手順については、リンクをクリックしてください。

  1. カスタマイズされたベスト プラクティスを表示する: Google Cloud コンソールの GKE AI / ML ページまたはターミナルの Google Cloud CLI で、優先するオープンモデル(Llama、Gemma、Mistral など)などを入力します。
    • アプリケーションのレイテンシ ターゲットを指定して、レイテンシの影響を受けやすい(chatbot など)か、スループットの影響を受けやすい(バッチ分析など)かを指定します。
    • Inference Quickstart は、要件に基づいてアクセラレータを選択し、パフォーマンス指標、Kubernetes マニフェストを提供します。これにより、デプロイやさらなる変更を完全に制御できます。生成されたマニフェストは公開のモデルサーバー イメージを参照するため、これらのイメージを自分で作成する必要はありません。
  2. マニフェストをデプロイする: Google Cloud コンソールまたは kubectl apply コマンドを使用して、推奨のマニフェストをデプロイします。デプロイする前に、 Google Cloud プロジェクトで選択した GPU または TPU に十分なアクセラレータ割り当てがあることを確認する必要があります。
  3. パフォーマンスをモニタリングする: GKE が提供するワークロード パフォーマンス指標を Cloud Monitoring でモニタリングします。モデルサーバー ダッシュボードを表示し、必要に応じてデプロイを微調整できます。

利点

Inference Quickstart から最適化された構成が提供されるため、時間とリソースを節約できます。この最適化により、次のようにパフォーマンスを向上させ、インフラストラクチャの費用を抑えることができます。

  • アクセラレータ(GPU と TPU)、モデルサーバー、スケーリング構成を設定する際の詳細なベスト プラクティスが提示されます。GKE は、最新の修正、イメージ、パフォーマンス ベンチマークを使用してツールを定期的に更新します。
  • Google Cloud コンソール UI またはコマンドライン インターフェースを使用して、ワークロードのレイテンシとスループットの要件を指定し、Kubernetes デプロイ マニフェストとして詳細なベスト プラクティスを取得できます。

ユースケース

Inference Quickstart は、次のようなシナリオに適しています。

  • 最適な GKE 推論アーキテクチャを見つける: オンプレミスや別のクラウド プロバイダなどの別の環境から移行する場合、特定のパフォーマンス要件に合わせて GKE で推奨される最新の推論アーキテクチャを取得できます。
  • AI / ML 推論のデプロイを迅速に行う: 経験豊富な Kubernetes ユーザーで、AI 推論ワークロードのデプロイをすぐに開始したい場合は、Inference Quickstart を使用することで、ベスト プラクティスに基づく詳細な YAML 構成により、GKE にベスト プラクティスのデプロイを検出して実装できます。
  • TPU を使用してパフォーマンスを向上させる: GKE で GPU を使用して Kubernetes をすでに利用している場合は、Inference Quickstart を使用することで、TPU のメリットを検討し、パフォーマンスの向上を図ることができます。

仕組み

Inference Quickstart は、モデル、モデルサーバー、アクセラレータ トポロジの組み合わせに対する単一レプリカのパフォーマンスについて、Google の包括的な内部ベンチマークを使用して、カスタマイズされたベスト プラクティスを提供します。これらのベンチマークでは、キューサイズや KV キャッシュ指標など、レイテンシとスループットをグラフで表示し、それぞれの組み合わせのパフォーマンス曲線を示します。

カスタマイズされたベスト プラクティスの生成方法

レイテンシは、出力トークンあたりの正規化された時間(NTPOT)でミリ秒単位で測定されます。また、アクセラレータを飽和させることで、出力トークンあたりのスループットが秒単位で測定されます。これらのパフォーマンス指標の詳細については、GKE でのモデル推論についてをご覧ください。

次のレイテンシ プロファイルの例は、スループットが横ばいになる変曲点(緑色)、レイテンシが悪化する変曲点(赤色)、レイテンシ ターゲットで最適なスループットを得るための理想的なゾーン(青色)を示しています。Inference Quickstart には、この理想的なゾーンのパフォーマンス データと構成が用意されています。

レイテンシ プロファイル。緑色のマーカーは 1 秒あたりの出力トークンが 2,000 未満で、赤色のマーカーは 1 秒あたりの出力トークンが 2,000 を超えています。

Inference Quickstart は、推論アプリケーションのレイテンシ要件に基づいて適切な組み合わせを特定し、レイテンシとスループットの曲線上の最適な動作ポイントを決定します。このポイントで、HorizontalPodAutoscaler(HPA)のしきい値が設定され、スケールアップ レイテンシを考慮したバッファが設定されます。全体的なしきい値では、必要なレプリカの初期数も示しますが、HPA はワークロードに基づいてこの数を動的に調整します。

ベンチマーク

提供されている構成とパフォーマンス データは、ShareGPT データセットを使用して次の入出力分布でトラフィックを送信するベンチマークに基づいています。

入力トークン 出力トークン
最小 中央値 平均 P90 P99 最大 最小 中央値 平均 P90 P99 最大
4 108 226 635 887 1024 1 132 195 488 778 1024

始める前に

始める前に、次の作業が完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。
  • Google Cloud コンソールのプロジェクト セレクタページで、 Google Cloud プロジェクトを選択または作成します。

  • Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  • プロジェクトに十分なアクセラレータ容量があることを確認します。

  • Hugging Face アクセス トークンと、対応する Kubernetes Secret を生成します(まだ生成していない場合)。Hugging Face トークンを含む Kubernetes Secret を作成するには、次のコマンドを実行します。

    kubectl create secret generic hf-secret \
        --from-literal=hf_api_token=HUGGING_FACE_TOKEN \
        --namespace=NAMESPACE
    

    次の値を置き換えます。

    • HUGGING_FACE_TOKEN: 先ほど生成した Hugging Face トークン。
    • NAMESPACE: モデルサーバーをデプロイする Kubernetes Namespace。
  • モデルによっては、ライセンス契約に同意して署名することが求められることもあります。

GKE AI / ML ユーザー インターフェースを使用する準備をする

Google Cloud コンソールを使用する場合、プロジェクトに Autopilot クラスタがまだ作成されていなければ、Autopilot クラスタの作成も必要になります。Autopilot クラスタを作成するの手順に沿って操作します。

コマンドライン インターフェースを使用する準備をする

gcloud CLI を使用して Inference Quickstart を実行する場合は、次の追加コマンドも実行する必要があります。

  1. gkerecommender.googleapis.com API を有効にします。

    gcloud services enable gkerecommender.googleapis.com
    
  2. API 呼び出しに使用する課金割り当てプロジェクトを設定します。

    gcloud config set billing/quota_project PROJECT_ID
    

制限事項

Inference Quickstart の使用を開始する前に、次の制限事項に注意してください。

  • Google Cloud コンソールでモデルをデプロイする場合、Autopilot クラスタへのデプロイのみがサポートされています。
  • Inference Quickstart では、特定のモデルサーバーでサポートされているすべてのモデルのプロファイルが提供されるわけではありません。

モデル推論用に最適化された構成を表示する

このセクションでは、 Google Cloud コンソールまたはコマンドラインを使用して構成の推奨事項を生成し、表示する方法について説明します。

コンソール

  1. Google Cloud コンソールの GKE AI/ML ページに移動

  2. [モデルをデプロイ] をクリックします。
  3. 表示するモデルを選択します。Inference Quickstart でサポートされているモデルには、「最適化」というタグが表示されます。

    • 基盤モデルを選択すると、モデルページが開きます。[デプロイ] をクリックします。実際のデプロイ前に構成を変更できます。
    • プロジェクトに Autopilot クラスタがない場合、Autopilot クラスタを作成するよう求められます。Autopilot クラスタを作成するの手順に沿って操作します。クラスタを作成したら、 Google Cloud コンソールの GKE AI/ML ページに戻り、モデルを選択します。

    モデルのデプロイページに、選択したモデルと、推奨されるモデルサーバー / アクセラレータが自動的に入力されています。最大レイテンシなどの設定も構成できます。

  4. 推奨構成のマニフェストを表示するには、[YAML を表示] をクリックします。

gcloud

gcloud alpha container ai recommender コマンドを使用して、モデル、モデルサーバー、モデルサーバー バージョン、アクセラレータの最適な組み合わせを探索して表示します。

モデル

モデルを探索して選択するには、models オプションを使用します。

  gcloud alpha container ai recommender models list

モデルサーバー

関心のあるモデルに推奨されるモデルサーバーを確認するには、model-servers オプションを使用します。例:

  gcloud alpha container ai recommender model-servers list \
      --model=meta-llama/Meta-Llama-3-8B

出力は次のようになります。

  Supported model servers:
  -  vllm

サーバーのバージョン

モデルサーバーのサポートされているバージョンを確認することもできます。その場合は、model-server-versions オプションを使用します。この手順をスキップすると、Inference Quickstart はデフォルトで最新バージョンを使用します。例:

  gcloud alpha container ai recommender model-server-versions list \
      --model=meta-llama/Meta-Llama-3-8B \
      --model-server=vllm

出力は次のようになります。

  Supported model server versions:
  -  e92694b6fe264a85371317295bca6643508034ef
  -  v0.7.2

アクセラレータ

関心のあるモデルとモデルサーバーの組み合わせに推奨されるアクセラレータを確認するには、accelerators オプションを使用します。例:

  gcloud alpha container ai recommender accelerators list \
      --model=deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
      --model-server-version=v0.7.2

出力は次のようになります。

  Supported accelerators:
  accelerator          | model                                   | model server | model server version                     | accelerator count | output tokens per second | ntpot ms
  ---------------------|-----------------------------------------|--------------|------------------------------------------|-------------------|--------------------------|---------
  nvidia-tesla-a100    | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 3357                     | 72
  nvidia-h100-80gb     | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 6934                     | 30

  For more details on each accelerator, use --format=yaml

出力には、アクセラレータ タイプのリストと次の指標が返されます。

  • スループット(1 秒あたりの出力トークン数)
  • 出力トークンあたりの正規化された時間(NTPOT)(ミリ秒)

この値は、このアクセラレータ タイプで特定のプロファイルの処理量の増加が停止し、レイテンシが急増し始めるポイント(つまり、変曲点または飽和点)で観測されたパフォーマンスを表します。これらのパフォーマンス指標の詳細については、GKE でのモデル推論についてをご覧ください。

その他のオプションについては、Google Cloud CLI のドキュメントをご覧ください。

モデル、モデルサーバー、モデルサーバーのバージョン、アクセラレータを選択したら、デプロイ マニフェストの作成に進みます。

推奨構成をデプロイする

このセクションでは、 Google Cloud コンソールまたはコマンドラインを使用して構成の推奨事項を生成し、デプロイする方法について説明します。

コンソール

  1. Google Cloud コンソールの GKE AI/ML ページに移動

  2. [モデルをデプロイ] をクリックします。
  3. デプロイするモデルを選択します。Inference Quickstart でサポートされているモデルには、「最適化」というタグが表示されます。

    • 基盤モデルを選択すると、モデルページが開きます。[デプロイ] をクリックします。実際のデプロイ前に構成を変更できます。
    • プロジェクトに Autopilot クラスタがない場合、Autopilot クラスタを作成するよう求められます。Autopilot クラスタを作成するの手順に沿って操作します。クラスタを作成したら、 Google Cloud コンソールの GKE AI/ML ページに戻り、モデルを選択します。

    モデルのデプロイページに、選択したモデルと、推奨されるモデルサーバー / アクセラレータが自動的に入力されています。最大レイテンシなどの設定も構成できます。

  4. (省略可)推奨構成のマニフェストを表示するには、[YAML を表示] をクリックします。

  5. 推奨構成でマニフェストをデプロイするには、[デプロイ] をクリックします。デプロイ オペレーションが完了するまでに数分かかることがあります。

デプロイを表示するには、[Kubernetes Engine] > [ワークロード] ページに移動します。

gcloud

  1. マニフェストを生成する: ターミナルで manifests オプションを使用して、Deployment、Service、PodMonitoring のマニフェストを生成します。

    gcloud alpha container ai recommender manifests create
    

    必要な --model--model-server--accelerator-type パラメータを使用して、マニフェストをカスタマイズします。

    必要に応じて、次のパラメータを設定できます。

    • --target-ntpot-milliseconds: このパラメータを設定して HPA しきい値を指定します。このパラメータを使用すると、スケーリングしきい値を定義し、出力トークンあたりの正規化時間(NTPOT)の P50 レイテンシ(50 番目の四分位で測定)を指定値未満に保つことができます。アクセラレータの最小レイテンシより大きい値を選択します。アクセラレータの最大レイテンシを超える NTPOT 値を指定すると、HPA は最大スループット用に構成されます。例:

      gcloud alpha container ai recommender manifests create \
          --model=google/gemma-2-27b-it \
          --model-server=vllm \
          --model-server-version=v0.7.2 \
          --accelerator-type=nvidia-l4 \
          --target-ntpot-milliseconds=200
      
    • --model-server-version: モデルサーバーのバージョン。指定しない場合、デフォルトで最新バージョンが使用されます。

    • --namespace: マニフェストをデプロイする Namespace。デフォルトの Namespace は「default」です。

    • --output: 有効な値として、manifestcommentsall があります。デフォルトでは、このパラメータは all に設定されます。ワークロードのデプロイ用のマニフェストのみを出力することもできます。また、機能を有効にする手順を確認する場合は、コメントのみを出力することもできます。

    • --output-path: 指定すると、出力はターミナルではなく、指定されたパスに保存されるため、デプロイする前に出力を編集できます。たとえば、マニフェストを YAML ファイルに保存する場合は、--output=manifest オプションを使用します。例:

      gcloud alpha container ai recommender manifests create \
          --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
          --model-server vllm \
          --accelerator-type=nvidia-tesla-a100 \
          --output=manifest \
          --output-path  /tmp/manifests.yaml
      

    その他のオプションについては、Google Cloud CLI のドキュメントをご覧ください。

  2. インフラストラクチャをプロビジョニングする: こちらのプロビジョニング手順に沿って、モデルのデプロイ、モニタリング、スケーリング用にインフラストラクチャが正しく設定されていることを確認します。

  3. マニフェストをデプロイする: kubectl apply コマンドを実行し、マニフェストの YAML ファイルを渡します。例:

    kubectl apply -f ./manifests.yaml
    

インフラストラクチャをプロビジョニングする

モデルのデプロイ、モニタリング、スケーリング用にインフラストラクチャが正しく設定されていることを確認する手順は次のとおりです。

  1. クラスタを作成する: GKE Autopilot クラスタまたは GKE Standard クラスタでモデルを提供できます。フルマネージドの Kubernetes エクスペリエンスを実現するには、Autopilot クラスタを使用することをおすすめします。ワークロードに最適な GKE の運用モードを選択するには、GKE の運用モードを選択するをご覧ください。

    既存のクラスタがない場合は、次の操作を行います。

    Autopilot

    次の手順で Autopilot クラスタを作成します。プロジェクトに必要な割り当てがある場合、GKE はデプロイ マニフェストに基づいて GPU または TPU 容量を持つノードのプロビジョニングを処理します。

    Standard

    1. ゾーンまたはリージョン クラスタを作成します。
    2. 適切なアクセラレータを使用してノードプールを作成します。選択したアクセラレータ タイプに応じて、次の操作を行います。

  2. (省略可、ただし推奨)オブザーバビリティ機能を有効にする: 生成されたマニフェストのコメント セクションには、推奨されるオブザーバビリティ機能を有効にするための追加コマンドがあります。これらの機能を有効にすると、ワークロードと基盤となるインフラストラクチャのパフォーマンスやステータスをモニタリングする際に役立つ詳細な分析情報を得ることができます。

    オブザーバビリティ機能を有効にするコマンドの例を次に示します。

    gcloud beta container clusters update $CLUSTER_NAME \
        --project=$PROJECT_ID \
        --location=$LOCATION \
        --enable-managed-prometheus \
        --logging=SYSTEM,WORKLOAD \
        --monitoring=SYSTEM,DEPLOYMENT,HPA,POD,DCGM \
        --auto-monitoring-scope=ALL
    

    詳細については、推論ワークロードをモニタリングするをご覧ください。

  3. (HPA のみ)指標アダプタをデプロイする: デプロイ マニフェストで HPA リソースが生成された場合は、Custom Metrics Stackdriver Adapter などの指標アダプタが必要です。指標アダプタを使用すると、HPA は kube external metrics API を使用するモデルサーバー指標にアクセスできます。アダプタをデプロイするには、GitHub のアダプタ ドキュメントをご覧ください。

デプロイ エンドポイントをテストする

コマンドラインを使用してマニフェストをデプロイした場合、デプロイされたサービスは次のエンドポイントで公開されます。

http://model-model_server-service:port/

サービスをテストします。別のターミナルで、次のコマンドを実行してポート転送を設定します。

kubectl port-forward service/model-model_server-service 8000:8000

エンドポイントにリクエストを作成して送信する方法の例については、vLLM のドキュメントをご覧ください。

推論ワークロードをモニタリングする

デプロイされた推論ワークロードをモニタリングするには、 Google Cloud コンソールの Metrics Explorer に移動します。

自動モニタリングを有効にする

GKE には、より広範なオブザーバビリティ機能の一部として自動モニタリング機能があります。この機能は、サポートされているモデルサーバーで実行されているワークロードをクラスタでスキャンし、これらのワークロード指標を Cloud Monitoring に表示できるようにする PodMonitoring リソースをデプロイします。自動モニタリングの有効化と構成の詳細については、ワークロードの自動アプリケーション モニタリングを構成するをご覧ください。

この機能を有効にすると、GKE はサポートされているワークロードのアプリケーションをモニタリングするための事前構築済みダッシュボードをインストールします。

Google Cloud コンソールの GKE AI / ML ページからデプロイすると、targetNtpot 構成を使用して PodMonitoring リソースと HPA リソースが自動的に作成されます。

トラブルシューティング

  • レイテンシを低く設定しすぎると、推奨事項が生成されないことがあります。この問題を解決するには、選択したアクセラレータで観測された最小レイテンシと最大レイテンシの間のレイテンシ目標を選択します。
  • Inference Quickstart は GKE コンポーネントとは独立して存在するため、クラスタのバージョンはサービスの使用に直接関係しません。ただし、パフォーマンスの差異を回避するため、新しいクラスタまたは最新のクラスタを使用することをおすすめします。
  • gkerecommender.googleapis.com コマンドで割り当てプロジェクトが見つからないという PERMISSION_DENIED エラーが発生した場合は、手動で設定する必要があります。gcloud config set billing/quota_project PROJECT_ID を実行して修正します。

次のステップ