Anthropicによる2024年8月〜9月のClaudeインフラバグに関するポストモーテム

TL;DR

Anthropicは、2024年8月上旬から9月上旬にかけて、Claudeの応答品質を断続的に低下させた3つの独立したインフラバグを開示し、根本原因、是正措置、再発防止のための今後の改善策について説明しました。


大規模なClaudeの提供方法

Claudeは、複数のクラウドプロバイダー(AWS、Amazon Bedrock、Google Cloud Vertex AI)とハードウェアバックエンド(AWS Trainium、NVIDIA GPU、Google TPU)にわたって展開されています。Anthropicは、基盤となるプラットフォームに関係なく、リクエストが同じ品質を受け取れるように、厳格な同等性基準を enforced しています。このマルチプラットフォーム戦略は複雑さをもたらします。つまり、コードや設定の変更は、すべてのハードウェアスタックで検証する必要があります。


インシデントのタイムライン

日付 イベント
8月5日 最初のバグ(コンテキストウィンドウルーティングエラー)が導入され、Sonnet 4リクエストの約0.8%に影響。
8月25日〜26日 さらに2つのバグがデプロイされました(TPUサーバーでの出力破損、近似top-k XLAの誤コンパイル)。
8月29日 ロードバランシングの変更により、ルーティングエラーが意図せず増幅され、1時間あたりのSonnet 4リクエストの最大16%に影響が拡大。
9月2日 出力破損バグをロールバック。
9月4日 ルーティングエラーの修正をデプロイ。Haiku 3.5の近似top-kバグをロールバック。
9月12日 Opus 3の近似top-kバグをロールバック。
9月16日〜18日 ファーストパーティプラットフォーム、Vertex AI、Bedrock全体へのルーティング修正の完全ロールアウト。

これらのバグが重なっていたため、プラットフォームごとに異なる症状がさまざまな頻度で発生し、診断が困難でした。


重複する3つの問題

1. コンテキストウィンドウルーティングエラー

  • 何が起こったか: 短いコンテキストのSonnet 4リクエストが、次期1Mトークンコンテキストウィンドウ用に設定されたサーバーに誤って送信されました。
  • 影響: 当初はリクエストの0.8%。8月31日にはSonnet 4トラフィックの16%でピークに達しました。Claude Codeユーザーの約30%が、少なくとも1回は誤ルーティングを経験しました。Amazon Bedrockでの誤ルーティングはSonnet 4リクエストの0.18%でピークに達し、Vertex AIでは0.0004%未満に留まりました。
  • なぜ重要だったか: ルーティングは「スティッキー」です。セッションが誤ったサーバーにヒットすると、後続のターンもそのサーバーに留まり、劣化が悪化しました。
  • 解決策: 9月4日にルーティングロジックを修正。9月18日までに全プラットフォームへのロールアウトを完了。

2. TPUサーバーでの出力破損

  • 何が起こったか: 設定ミスにより、非常に可能性が低いはずのトークンに高い確率を割り当てるランタイム最適化が導入され、無意味な文字(タイ語や中国語のグリフなど)やコードの構文エラーが発生しました。
  • 影響: 8月25日〜28日にOpus 4.1とOpus 4、8月25日〜9月2日にSonnet 4に影響。サードパーティプラットフォーム(Bedrock、Vertex AI)は影響を受けませんでした。
  • 解決策: 9月2日に変更をロールバックし、予期しない文字出力を検出する自動テストを追加。

3. 近似Top-k XLA:TPUの誤コンパイル

  • 何が起こったか: トークン選択を改善するためのコード変更により、XLA:TPUコンパイラの近似top-k操作の潜在的なバグがトリガーされ、特定のバッチサイズとモデル構成で誤った高確率トークンが返されるようになりました。
  • 影響: Claude Haiku 3.5で確認。Sonnet 4とOpus 3の一部で疑われました。サードパーティプラットフォームへの影響はありません。
  • 解決策: 9月4日にHaiku 3.5、9月12日にOpus 3の変更をロールバック。fp32精度の正確なtop-kに切り替え、わずかなパフォーマンスコストでバグを排除。XLAチームと恒久的なコンパイラ修正に協力。

詳細: XLAコンパイラバグ

Claudeの生成パイプラインはtop-pサンプリングを使用しています。TPUでは、確率計算が複数のチップにわたって実行され、トークン確率の協調ソートが必要です。システムは混合精度演算(モデル計算にはbf16、ベクトル処理にはfp32)に依存しています。デフォルトで有効なxla_allow_excess_precisionフラグにより、コンパイラは特定のbf16演算を速度向上のためにfp32に昇格させることができました。

近似top-k最適化が適用されたとき、精度の不一致により、特定のバッチ構成で最高確率のトークンが完全にドロップされました。これは、ランダムで再現が困難なトークン選択エラーとして現れ、英語の応答に外国語の文字が挿入されることがありました。

Anthropicの修正は、以前の2024年12月の回避策(症状を隠していた)を削除し、近似top-kを正確な実装に置き換え、わずかな効率低下で決定的なトークン選択を復元しました。


検出が困難だった理由

  • 評価のギャップ: 標準的なベンチマークと安全性評価では、Claudeが孤立したエラーから回復できることが多いため、劣化を表面化させませんでした。
  • プライバシー制約: 内部のプライバシー制御により、エンジニアの生のユーザーインタラクションへのアクセスが制限され、文書化されていない障害の根本原因分析が妨げられました。
  • シグナルノイズ: 複数のバグがプラットフォーム間で異なる症状を生み出し、単一の体系的な問題ではなく、ランダムな品質変動として現れました。
  • ロードバランシングの副作用: 8月29日のロードバランシング変更によりルーティングエラーが増幅され、根本的なコード変更にすぐには関連付けられない突然のスパイクが発生しました。

Anthropicが変更していること

  1. より高感度な評価 – 正しい実装と壊れた実装を確実に区別できる新しいテストを継続的に改良。
  2. 本番レベルの品質監視 – 内部のカナリアだけでなく、本番稼働中のシステムで評価を実行し、プラットフォーム固有の回帰を検出。
  3. より高速なデバッグツール – ユーザーのプライバシーを損なうことなくコミュニティからのフィードバックを安全に検査するインフラを構築し、将来のインシデントの是正時間を短縮。
  4. ユーザーフィードバックループ – Anthropicは、ユーザーがClaude Codeの/bugコマンドまたはClaudeアプリのサムズダウンボタンで異常を報告し、カスタム評価スクリプトをチームと共有することを推奨。

ユーザーと業界への影響

  • 信頼性の期待: 厳格なインフラストラクチャがあっても、複雑なマルチプラットフォーム展開では、モデル出力品質に影響を与える微妙なバグが発生する可能性があります。
  • 透明性の価値: Anthropicの詳細なポストモーテムは、フロンティアAIラボがインフラ障害を開示し、信頼を醸成し、コミュニティが検出に貢献できるようにするためのモデルを提供します。
  • ツールの重要性: このインシデントは、大規模LLMサービスにおける、正確でプライバシーを保護するデバッグツールと継続的な本番監視の必要性を浮き彫りにしています。
  • 将来の保護策: 正確なtop-kサンプリングへの移行と評価範囲の拡大により、AnthropicはすべてのハードウェアバックエンドにわたってClaudeのベースライン信頼性を引き上げることを目指しています。

Anthropicはコミュニティのフィードバックに感謝し、feedback@anthropic.com へのさらなるバグ報告と評価への貢献を歓迎します。

Sources