G-genの杉村です。Vertex API 経由で Gemini モデルへ API リクエストを送信する際に、エラーコード 429 で Resource exhausted, please try again later.
というエラーが頻繁に発生しました。その原因と対処法を紹介します。
事象
Vertex API 経由で Gemini モデルへ API リクエストを送信した際、エラーコード 429 で Resource exhausted, please try again later.
というエラーが発生しました。レスポンス内の status は RESOURCE_EXHAUSTED
です。
しばらくして再試行するとリクエストが成功するときがありますが、しばしば同じエラーとなります。
原因
このエラーは、処理のためのリソースが Google 側で枯渇することを防ぐため、Google によって API 利用が制限されていることを意味しています。Google は随時、物理インフラストラクチャを強化していますが、Gemini API は多くのユーザーに利用されているため、しばしばこのメッセージが表示されることがあります。
- 参考 : エラーコード 429
対処法
2つの対処案
次のいずれかの対処法が考えられます。
- アプリケーションにエクスポネンシャルバックオフ(exponential backoff、指数バックオフ)を実装する
- Provisioned Throughput(プロビジョニングされたスループット)を購入する
エクスポネンシャルバックオフ
1.
のエクスポネンシャルバックオフ(指数バックオフ)は、クラウドサービスの API リクエストを使用するアプリケーションを実装する際に一般的な手法です。
エクスポネンシャルバックオフでは、API リクエストがサーバー側エラーや一時的な障害で失敗した場合に、待機時間を1秒、2秒、4秒、8秒...のようにべき乗しながら再試行を繰り返します。
再試行を無限に繰り返さないよう、試行回数が規定の回数に達してもリクエストが成功しない場合、エラー終了させるよう実装します。このようにリトライ回数に上限を設けることを truncated exponential backoff(切り捨て型エクスポネンシャルバックオフ)とも呼びます。
- 参考 : 指数バックオフ アルゴリズム
この手法を取ることにより、リージョンで多くのユーザーからの API リクエストが輻輳してリソースが枯渇している場合でも、しばらく待ってから再試行することで、最終的に API リクエストが成功する可能性を高められます。
Provisioned Throughput
Provisioned Throughput とは
2.
の Provisioned Throughput(プロビジョニングされたスループット)とは、Gemini や Claude の API スループットを事前に予約購入しておき、固定金額で利用する月額サブスクリプションサービスです。
Provisioned Throughput は、事前にモデルとロケーション(リージョン)を指定して購入します。サポートされているモデルは gemini-1.5-flash、gemini-1.5-pro、imagen-3.0-generate-001、Anthropic Claude 3.5 Sonnet などです。対象モデルの一覧は以下のドキュメントを参照してください。
- 参考 : プロビジョニングされたスループット
前述のエクスポネンシャルバックオフはリソース枯渇に対する根本的な対処にはなっていませんが、Provisioned Throughput を購入する方法では、従量課金利用よりもリソースが優先して確保されます。重要な本番環境アプリケーションでの Gemini の利用や、月額利用料金を固定したい場合などに利用を検討します。
GSU
Provisioned Throughput は、GSU(Generative AI Scale Unit)という単位で購入します。1 GSU は、例えば Gemini 1.5 Pro の場合、800文字/秒です。
この秒あたりの文字数について、1文字のインプットは1文字としてカウントされますが、例えば Gemini 1.5 Pro の場合、1文字のアウトプットは3文字としてカウントされます。また1枚の画像は1,052文字としてカウントされます。この消費文字数をバーンダウン率といいます。
1 GSU あたりのスループット(文字/秒)やバーンダウン率はモデルによって異なるので、以下のドキュメントを参照してください。
- 参考 : サポートされているモデル
購入期間
Provisioned Throughput は1ヶ月、3ヶ月、1年の期間で購入できます。自動更新を有効にすることで、更新作業を省略することができます。一度購入すると、コミットした期間は注文をキャンセルすることはできません。
購入時にはモデルを指定する必要があり、生成 AI では頻繁に新しいモデルが登場することを考慮すると、1年単位の購入には慎重になるべきと考えられます。ただし以下のドキュメントでは、同じリージョン内でかつ同じ事業者から提供されているモデルであれば、バージョンの切り替えができることも示されています。
- 参考 : 定期購入を開始する前に考慮すべきこと
購入方法と料金
購入は Google Cloud コンソールの「プロビジョニングされたスループット」画面(https://console.cloud.google.com/vertex-ai/provisioned-throughput)から購入することができます。
同画面でモデル、リージョン、GSU 数、期間を入力すると、料金見積もりが表示されます。
購入に必要な権限などの詳細は、以下のドキュメントをご参照ください。
考慮事項
考慮事項としては、以下が挙げられます。
- 実際のスループットが Provisioned Throughput の注文量を超えると、超過分は従量課金で処理される
- 未使用のスループットは翌月に繰り越せない
その他の考慮事項については以下のドキュメントを注意深くご参照ください。
- 参考 : 定期購入を開始する前に考慮すべきこと
杉村 勇馬 (記事一覧)
執行役員 CTO / クラウドソリューション部 部長
元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。
Follow @y_sugi_it