はじめに

Gemini等の生成AIを商用サービスで利用する場合、コストとレスポンスの安定性の問題について検討する必要があります。

標準の従量課金(Pay-as-you-go)は手軽に始められる反面、トラフィックが増えると 429 Too Many Requests エラーが発生したり、時間帯によってレスポンス速度にバラつきが出る可能性があります。これらの懸念を解消する仕組みが、Vertex AIのプロビジョンドスループット(Provisioned Throughput、以下PT)です。

📘プロビジョンド スループットの概要
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/overview?hl=ja

今回は、実際にPTの導入に向けて試算を行った際に得た知見や、公式ドキュメントだけでは読み取りきれなかった実務上の注意点についてまとめたいと思います。

プロビジョンドスループットの仕組みとリージョン選び

PTとは端的に言うと、特定のモデルの推論容量をあらかじめ予約しておく仕組みです。GSU(Generative AI Scale Unit)という単位でスループットを事前購入することで、リソースが優先的に確保され、混雑時でも安定したスループットを維持できるようになります。

導入にあたっては、利用するモデルと、どのロケーションでGSUを確保するかという点を決定する必要があります。

モデルの選定についてはプロジェクトの要件によりますが、2026年2月現在 Gemini 3 はプレビューとなっており、この記事ではGemini 2.5 Flash について記載します。

📘デプロイとエンドポイント
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/locations?hl=ja#available-regions

📘サポートされているモデル
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/supported-models?hl=ja

ロケーションについては、基本的にグローバルエンドポイントを選択することが推奨されますが、データ保管場所の要件がある場合は特定のリージョンを選択することになります。
例えば、日本国内向けのサービスでレイテンシを最小化したいとか、あるいはデータの国外移転に制約があるケースでは、東京リージョンが候補となります。
ただし、東京リージョンは現状シングルゾーンプロビジョンドスループットとなっており、いくつか制限事項があります。詳細はリンク先を参照してください。

📘データ所在地
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/data-residency?hl=ja

📘シングルゾーン プロビジョンド スループット
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/szpt?hl=ja

また、PTで購入したスループットを超過した場合、標準では従量課金(Standard PayGo)で処理されます。従量課金では過去 30 日間の合計費用に基づいてティアが決定され、ベースラインスループット(1 分あたりのトークン数(TPM))が規定されます。
シングルゾーンPTの場合はこれが適用されないため、超過して従量課金で処理される際にはベースラインが確保されず429エラーの発生が増えそうです。

📘Standard PayGo
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/standard-paygo?hl=ja

さらに、ドキュメントに「シングルゾーン プロビジョンド スループットを購入する場合は、 Google Cloud アカウント担当者にお問い合わせください。」とあり、コンソールからポチッと購入できるわけではありません。

試算のステップ

PTでGSUをいくつ予約すべきか、はじめこの計算が分かりづらいと感じました。
試算は以下の順に計算します。

  1. 1クエリあたりの負荷を計算
  2. 必要な秒間スループットを計算
  3. 必要なGSUを計算
  4. 費用を計算

1. クエリあたりの負荷を計算

どのモデルでも基本的に以下の計算式で計算可能です。

(入力トークン * バーンダウン率) + (キャッシュ入力トークン * バーンダウン率) + (出力トークン * バーンダウン率) + (推論トークン * バーンダウン率) = 合計負荷トークン

各トークン数についてはすでに動くアプリケーションがあるのであれば、実測値を元に算出するのが良いと思います。実測値は以下の記事の方法でカウントできます。

📘プロンプト内のトークンをカウントする
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/samples/generativeaionvertexai-gemini-token-count?hl=ja

見落としがちなポイントとして、実測値をAPIのレスポンスで測る場合、入力トークン(promptTokenCount)の中にキャッシュ入力トークン分が合算されているため、計算の際に「入力トークン」にセットする値からキャッシュ分を減算する必要があります。

promptTokenCount プロンプト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの合計サイズであり、キャッシュに保存されたコンテンツのトークン数も含まれます

📘Gemini API
https://ai.google.dev/api/generate-content?hl=ja

バーンダウン率とは「入力単位と出力単位(トークン、文字、画像など)をそれぞれ 1 秒あたりの入力トークン数、1 秒あたりの入力文字数、1 秒あたりの入力画像数に変換する比率です。この比率はスループットを表し、モデル間で標準単位を生成するために使用されます。」と説明されており、モデルごとに決まっている係数をトークン数にかける必要があります。

Gemini 2.5 Flashでは以下の値となっており、出力トークンに9をかけることになります。

1 入力テキスト トークン = 1 トークン
1 入力画像トークン = 1 トークン
1 入力動画トークン = 1 トークン
1 入力音声トークン = 4 トークン
1 出力レスポンス テキスト トークン = 9 トークン
1 出力推論テキスト トークン = 9 トークン

※明示されていませんが、キャッシュ入力トークンのバーンダウン率は 0.1
1 キャッシュ入力テキスト トークン = 0.1 トークン

📘プロビジョンド スループットの要件を計算する
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/measure-provisioned-throughput?hl=ja

2. 必要な秒間スループットを計算

次に必要な秒間スループットを計算します。

合計負荷トークン * 秒間クエリ数 (QPS) = 秒間必要スループット

合計負荷トークンは先ほど計算した値です。
QPSはサービスの想定アクセス数などから計算します。

3. 必要なGSUを計算

最後にGSUを計算します。

秒間必要スループット / GSU ごとの1秒あたりのスループット = 必要なGSU数(切り上げ)

GSUごとの1秒あたりのスループットはモデルごとに決まっており、Gemini 2.5 Flash では 2690 です。(リンク先、表内の「GSU ごとの 1 秒あたりのスループット」を参照)

📘サポートされているモデル
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/supported-models?hl=ja

4. 費用を計算

GSUが算出できたら、購入に必要な費用が計算できます。

GSU * GSUあたりの料金

利用するモデルやロケーションは関係なく、購入する期間によって金額が決まります。例えば1年分購入する場合、1GSUあたり月額$2,000となります。

📘Vertex AI での AI モデルの構築とデプロイの費用 – プロビジョンド スループット
https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja#provisioned-throughput

5. 実例

ここまでの計算に従って、実際に計算してみます。使用モデルはGemini 2.5 Flashとします。

条件

  • 入力トークン:5000
  • キャッシュ入力トークン:3000
  • 出力トークン:300
  • 推論トークン:100
  • QPS:2

計算結果

① (5000*1)+(3000*0.1)+(300*9)+(100*9) = 8900
② 8900*2 = 17800
③ 17800/2690 = 6.6.. => 7
④ 7*2000 = $14000/月

画像出力の場合

画像出力の場合も計算方法は同じですが、出力する画像のサイズとトークン数が決まっています。
Gemini 2.5 Flash Imageの場合は1K(1024×1024)の画像が出力され、そのトークン数は 1290 で固定となっています。計算時にはこの値を「出力トークン」として、ここにバーンダウン率をかける必要があります。

📘Vertex AI での AI モデルの構築とデプロイの費用
https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja#gemini-models-2.5

*** 1024×1024 の画像は 1290 トークンを消費します。画像あたりのトークン数は、画像の解像度によって異なります。トークンの計算方法について詳しくは、ドキュメントをご覧ください。

おわりに

とにかくドキュメントが散らばっていて情報に辿りつくのが大変でした。

長々と書きましたが、実は料金計算ツールがあり、Google Cloudのコンソール内で試算ができます。上に書いたことを分かった上で料金計算ツールを使うと分かりやすいと思います。

📘標準のプロビジョンド スループットを注文する
https://docs.cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/purchase-provisioned-throughput?hl=ja#place-an-order

今回試算にあたり、Google社のサポートを存分に受けられて、パートナーとしてのメリットを実感しました!