Vertex AI経由でClaudeを使っていると「応答が返ってくるまで数十秒〜数分かかる」「直接APIより明らかに遅い」と感じる場面があります。原因はリージョン設定の不備やクォータ不足、プロンプトキャッシング未活用など複数存在し、対策も一つではありません。

Anthropicが公開しているドキュメントと第三者ベンチマークの数値をもとに、遅延の仕組みと即効性のある改善策を整理しました。

Vertex AI経由でClaudeが遅くなる5つの原因

1. エンドポイントタイプの選択ミス

Vertex AIにはグローバルエンドポイントとリージョナルエンドポイントの2種類があります。Sonnet 4.5以降のモデルでは両方が利用でき、それぞれ特性が異なります(出典: Anthropic公式ドキュメント)。

項目グローバルエンドポイントリージョナルエンドポイント
ルーティング空きリージョンへ動的分散指定リージョン固定
レイテンシ可変(遠方リージョンへ飛ぶ場合あり)予測しやすい
可用性高いリージョン依存
料金標準10%プレミアム(Sonnet 4.5以降)

グローバルエンドポイントは可用性が高い反面、リクエストが地理的に遠いリージョンへルーティングされると往復のネットワーク遅延が増大します。逆にリージョナルエンドポイントは安定したレイテンシを得やすいものの、そのリージョンのキャパシティが上限に達するとリクエスト自体が失敗するリスクがあります。

2. プロンプトキャッシングの未活用

同じシステムプロンプトやコンテキストを繰り返し送信する場合、プロンプトキャッシングを有効にしないとリクエストのたびにフルの入力トークンが処理されます。Anthropicの公式値では、キャッシュヒット時にレイテンシが最大85%削減、コストが最大90%削減されます(出典: Anthropic Prompt Caching)。

キャッシュのデフォルトTTL(生存時間)は5分です。cache_controlオブジェクト内で"ttl": "1h"を指定すれば1時間に延長できますが、Claude 3.7 SonnetやClaude 3.5 Sonnetなど一部の旧モデルでは1時間TTLに非対応です(出典: Google Cloud ドキュメント)。

3. クォータ・レート制限の超過

Vertex AIではモデルごと・リージョンごとにクォータ(QPM/TPM)が設定されています(出典: Google Cloud Quotas)。クォータを超えると429エラーが返り、リトライ待機時間が発生して体感速度が大幅に低下します。

主なクォータの種類は以下のとおりです。

  • QPM(Queries Per Minute): 1分あたりのリクエスト数。システム上限は1モデル1リージョンあたり30,000 RPM
  • TPM(Tokens Per Minute): 1分あたりの処理トークン数(入力+出力の合計)
  • 入力/出力TPM: モデルによっては入力と出力を別々にカウント

デフォルトのクォータ値はモデルとリージョンの組み合わせで異なるため、Cloud Consoleの「Quotas & System Limits」で確認してください。

4. モデルと用途のミスマッチ

Claudeモデルはサイズによってレイテンシが大きく異なります。Opus 4.6で高速なレスポンスを期待するのは用途として不適切です。

モデル得意領域レイテンシ傾向
Claude Haiku 4.5リアルタイム応答・分類・要約最速
Claude Sonnet 4.6コーディング・分析・汎用タスク中程度
Claude Opus 4.6高度な推論・長文生成・研究最も遅い

用途に対して過剰に大きいモデルを選ぶと、TTFT(Time To First Token)と出力速度の両方で不利になります。

5. 入力コンテキストの肥大化

Claudeのレイテンシは入力トークン数にほぼ比例して増加します。数万トークンのコンテキストを送信している場合、不要な情報を削減するだけで応答速度が改善します。max_tokensパラメータで出力長を制限するのも有効です。

プロバイダー別ベンチマーク比較

Artificial Analysisが公開している第三者ベンチマークデータから、主要プロバイダーのTTFT(初回トークン到達時間)と出力速度を比較します(出典: Artificial Analysis)。

Claude Sonnet 4.5

プロバイダーTTFT出力速度
Google Vertex AI0.80秒
Anthropic API1.17秒
Amazon Bedrock93.5 tokens/s
Databricks100.6 tokens/s
Azure1.55秒72.0 tokens/s

Claude Sonnet 4

プロバイダーTTFT出力速度
Databricks0.99秒70.3 tokens/s
Google Vertex AI1.09秒
Anthropic API1.16秒70.1 tokens/s
Amazon Bedrock76.6 tokens/s

Claude Haiku 4.5

プロバイダーTTFT出力速度
Anthropic API0.49秒108.5 tokens/s
Google Vertex AI0.55秒
Azure0.76秒104.9 tokens/s
Amazon Bedrock94.6 tokens/s

ベンチマーク上、Vertex AIのTTFTはAnthropicの直接APIと同等かそれ以上のスコアを示しています。「Vertex AIだから遅い」というわけではなく、設定やネットワーク環境、クォータの状態が遅延の主因であるケースが大半です。

なお、Amazon Bedrockには「Latency-Optimized Inference」機能があり、Haiku 3.5ではTTFT P50を最大42.2%、P90を最大51.7%短縮可能と報告されています(出典: AWS Blog)。

Vertex AI上のClaudeを高速化する7つの対策

対策1: リージョンとエンドポイントを適切に選ぶ

Vertex AI上でClaudeが利用可能なリージョンはモデルによって異なります(出典: Claude on Vertex AI)。

モデルリージョナルグローバル
Sonnet 4.6 / 4.5 / 4us-east5, europe-west4対応
Opus 4.6 / 4.5対応
Opus 4.1 / 4us-east5対応
Haiku 4.5us-east5対応

※リージョンの対応状況は随時更新されます。最新情報はVertex AI Model Gardenで確認してください。

日本から利用する場合の推奨:

  • まずCLOUD_ML_REGION=globalで試す。グローバルエンドポイントは空きキャパシティへ動的にルーティングするため可用性が高い
  • レイテンシの安定性を重視する場合はus-east5を指定(Sonnet/Haikuが利用可能)
  • Opusモデルのリージョナルが必要ならus-east5を指定
# グローバルエンドポイント(推奨)
export CLOUD_ML_REGION=global

# リージョナルエンドポイント
export CLOUD_ML_REGION=us-east5

対策2: プロンプトキャッシングを有効にする

Vertex AI上のClaudeではプロンプトキャッシングが利用可能です。繰り返し送信するシステムプロンプトやドキュメントにcache_controlを設定します。

from anthropic import AnthropicVertex

client = AnthropicVertex(project_id="YOUR-PROJECT-ID", region="global")

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "あなたは技術ドキュメントの専門家です。" + large_context,
            "cache_control": {"type": "ephemeral", "ttl": "1h"}
        }
    ],
    messages=[{"role": "user", "content": "この仕様書の要点を整理してください"}]
)

キャッシュヒット時のコストは基本入力トークン価格の10%、キャッシュ書き込みは125%です。2回目以降のリクエストでコストとレイテンシの両方が削減されます。

Vertex AI固有の挙動として、キャッシュされたプロンプトの後続リクエストはキャッシュを保持するリージョンへ優先ルーティングされます。これによりグローバルエンドポイント使用時でもキャッシュの恩恵を最大限に受けられます。

対策3: ストリーミングで体感速度を改善する

ストリーミングを使うと、モデルが全出力を生成し終わる前にトークンが逐次返却されるため、ユーザーの待ち時間が大幅に短縮されます。

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Rustの所有権システムを説明してください"}]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

curlで直接叩く場合はstreamRawPredictエンドポイントを使用します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://global-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/global/publishers/anthropic/models/claude-sonnet-4-6:streamRawPredict" \
  -d '{
    "anthropic_version": "vertex-2023-10-16",
    "messages": [{"role": "user", "content": "Hello"}],
    "max_tokens": 256,
    "stream": true
  }'

対策4: 用途に応じたモデルを選択する

レイテンシが重要な場面ではHaikuを検討してください。Haiku 4.5のTTFTはSonnet 4.5の約3分の2です。

選定の目安:

  • チャットボット・カスタマーサポート → Haiku 4.5
  • コード生成・データ分析 → Sonnet 4.6
  • 論文執筆・戦略的意思決定 → Opus 4.6

Claude Code使用時はデフォルトモデル(Sonnet 4.6)に加えて、小さいタスク用に自動でHaikuが使われます。環境変数でモデルを明示的に指定すると、意図しないモデル切り替えを防止できます。

export ANTHROPIC_MODEL='claude-sonnet-4-6'
export ANTHROPIC_SMALL_FAST_MODEL='claude-haiku-4-5@20251001'

対策5: max_tokensとプロンプトを最適化する

入力トークン数とmax_tokensはレイテンシに直接影響します。

  • 不要なコンテキストを削除: 関係のないドキュメントや過去の会話履歴を含めない
  • max_tokensを適切に設定: 100トークンの応答で十分な場合に4096を指定すると、モデルが長文を生成しようとして余計な時間がかかる
  • タスクを分割: 1リクエストで複数のことを要求するより、単一タスクに絞った方がレスポンスは速い

対策6: バッチ処理を活用する

リアルタイム性が不要な大量処理にはバッチ予測が有効です。Vertex AI上のClaudeでは、BigQueryテーブルまたはCloud StorageのJSONLファイルから一括でリクエストを送信できます。

  • オンライン予測のクォータとは別枠で処理される
  • 結果は全行完了後または24時間後に取得可能
  • レイテンシを気にせず大量のプロンプトを処理できる

対策7: クォータを増加申請する

デフォルトのクォータが用途に対して不十分な場合、Cloud Consoleからクォータ増加を申請できます。

  1. Cloud Console → IAMと管理 → 割り当て
  2. aiplatform.googleapis.com でフィルタ
  3. 対象モデルのクォータを選択して「割り当ての編集」
  4. 必要な値を入力して申請

高スループットが求められる本番環境では、Google Cloudサポートへ直接連絡するのが確実です。

Claude Code × Vertex AI の接続設定

Claude CodeをVertex AIバックエンドで利用する手順を整理します(出典: Claude Code Docs)。

前提条件

  • GCPアカウント(課金有効)
  • Vertex AI APIが有効化されたGCPプロジェクト
  • Claudeモデルへのアクセス承認(Model Gardenで申請、承認まで24〜48時間)
  • Google Cloud SDK(gcloud)のインストール

セットアップ手順

# 1. Vertex AI APIの有効化
gcloud config set project YOUR-PROJECT-ID
gcloud services enable aiplatform.googleapis.com

# 2. 認証
gcloud auth login
gcloud auth application-default login

# 3. 環境変数の設定
export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=global
export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

# 4. モデルバージョンのピン留め(必須)
export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-6'
export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

# 5. グローバルエンドポイント未対応モデルのリージョン指定
export VERTEX_REGION_CLAUDE_3_5_HAIKU=us-east5
export VERTEX_REGION_CLAUDE_4_0_OPUS=us-east5
export VERTEX_REGION_CLAUDE_4_1_OPUS=us-east5

モデルバージョンのピン留めは特に重要です。 エイリアス(sonnet, opus)をそのまま使うと、Anthropicが新モデルをリリースした際に未有効化のモデルを参照して動作が破損する場合があります。

よくあるエラーと対処法

症状原因対処法
404「model not found」モデル未有効化またはリージョン不一致Model Gardenでモデルを有効化し、グローバルエンドポイント対応を確認
429エラー(レート制限)クォータ超過CLOUD_ML_REGION=globalへの変更、またはクォータ増加申請
応答が数分かかるネットワーク遅延またはリージョン混雑リージョンを変更するか、Google Cloudサポートに問い合わせ
認証エラーgcloud認証の期限切れgcloud auth application-default loginを再実行

2025年インフラバグとVertex AIへの影響

2025年8月〜9月にかけて、Anthropicのインフラで3つのバグが発覚し、Claudeの応答品質に影響が出ました。Anthropicは公式ポストモーテムで詳細を公開しています(出典: Anthropic Engineering)。

Vertex AIへの影響は以下のとおりです。

バグ概要Vertex AIへの影響
コンテキストウィンドウ誤ルーティング1Mトークン用サーバーへの誤送信0.0004%未満(ほぼ影響なし)
TPU出力破損トークン生成時の確率異常影響なし(API TPUサーバー限定)
XLA:TPUコンパイラ不具合Haiku 3.5に約2週間影響影響なし(API TPUサーバー限定)

3つのバグのうち、Vertex AIに影響したのはBug 1の極めて軽微なケースのみで、Bug 2とBug 3はAnthropicの自社APIサーバー固有の問題でした。

Anthropicは「需要やサーバー負荷によってモデル品質を意図的に劣化させることは一切行っていない」と明言しています。遅延や品質低下を感じた場合、インフラ障害の可能性もあるためAnthropic Statusを確認するのが有効です。

まとめ

Vertex AI経由のClaude利用は、ベンチマーク上ではAnthropic直接APIと同等以上のTTFTスコアを記録しており、プラットフォームそのものが遅延の原因であるケースは多くありません。

遅いと感じた際のチェックリストを整理します。

  1. エンドポイント: グローバルとリージョナルのどちらが用途に適しているか確認
  2. プロンプトキャッシング: 繰り返し送信するコンテキストにcache_controlを設定しているか
  3. ストリーミング: 有効にしているか
  4. モデル選択: レイテンシ重視ならHaiku、バランス重視ならSonnetを選んでいるか
  5. 入力トークン数: 不要なコンテキストを送信していないか
  6. クォータ: 429エラーが発生していないか(Cloud Consoleで確認)
  7. ステータスページ: Anthropic Statusでインフラ障害が報告されていないか

Google Cloudの契約がある環境ではVertex AIを経由することで請求統合やIAM管理の面で運用メリットがあります。レイテンシ面でのデメリットは上記7つの対策でほぼ解消できるため、まずはプロンプトキャッシングとストリーミングの有効化から試してみてください。