Anthropicが再び説明:8月から9月初めにかけて、Claudeに問題が発生していたことは事実です。
先ほど、Anthropicは本日、3つのインフラストラクチャバグがどのようにClaudeの回答品質を急激に低下させたかを説明する詳細な技術レポートを発表しました。
彼らはいくつかの真実を語っているようですが、この報告は少々遅すぎます。
Claudeに一体何が起こったのか?
8月初めから、ユーザーはClaudeの回答品質の悪化について不満を述べ始めました。
当初、Anthropicはこれが通常のユーザーフィードバックの変動なのか、それとも本当に問題が発生しているのかを区別するのが困難でした。
しかし、苦情が増えるにつれて、彼らはついに8月末に調査を開始しました。
Anthropicは報告書で強調しています:
私たちは需要量、時間帯、またはサーバー負荷のためにモデル品質を低下させることは決してありません。
ユーザーが遭遇した問題は完全にインフラストラクチャバグによるものです。
調査により、3つの相互に重なり合うバグが発見され、診断が非常に困難になりました。
Anthropicは、現在、これら3つのバグはすべて修正されたと主張しています。
3つの厄介なバグ
Claude APIにおけるイベントの例示的なタイムライン。黄色:問題検出、赤:劣化悪化、緑:修正展開。
最初のバグ:ルーティングエラー
8月5日、一部のSonnet 4のリクエストが、今後リリースされる100万トークンのコンテキストウィンドウ用に設定されたサーバーに誤ってルーティングされました。
このバグは当初、リクエストの0.8%にしか影響しませんでした。
しかし、8月29日の通常の負荷分散調整により、より多くの短いコンテキストリクエストが誤って長いコンテキストサーバーにルーティングされました。
最悪の場合、8月31日のある時間帯には、Sonnet 4のリクエストの16%が影響を受けました。
さらに悪いことに、ルーティングは「スティッキー」でした。つまり、一度リクエストが誤ったサーバーによって処理されると、その後の会話も同じ誤ったサーバーによって処理され続けるというものでした。
2番目のバグ:出力の破損
8月25日、彼らはClaude APIのTPUサーバーに誤った設定をデプロイしました。
これにより、モデルが不必要に予期しないトークンを出力するようになりました。例えば、英語の会話中に突然タイ語や中国語の文字が現れたり、コードに明らかな構文エラーが発生したりしました。
ユーザーは英語の回答で「สวัสดี」のようなタイ語の挨拶を見たかもしれません。
この問題は、8月25日から28日までのOpus 4.1とOpus 4、および8月25日から9月2日までのSonnet 4に影響を与えました。
3番目のバグ:XLA:TPUコンパイラエラー
8月25日、彼らはトークン選択を改善するコードをデプロイしましたが、意図せずXLA:TPUコンパイラ内の潜在的なバグをトリガーしてしまいました。
このバグはClaude Haiku 3.5に影響を与えたことが確認されており、一部のSonnet 4とOpus 3にも影響を与えた可能性があります。
コンパイラバグの技術的詳細
温度 = 0 の場合に予期しないトークン削除バグを回避するための2024年12月のパッチのコードスニペット。
このバグは最も厄介でした。
Claudeがテキストを生成する際、可能な次の単語のそれぞれの確率を計算し、ランダムに一つを選択します。
TPUでは、モデルは複数のチップ上で実行され、確率計算は異なる場所で行われるため、チップ間でデータを調整する必要があります。
問題は混合精度演算にありました。
モデルはbf16(16ビット浮動小数点数)を使用して確率を計算しますが、TPUのベクトルプロセッサはネイティブでfp32をサポートしているため、コンパイラは特定の操作をfp32に変換してパフォーマンスを最適化します。
これにより、精度不一致が発生しました。最高の確率を持つトークンについて合意に達するはずの操作が、異なる精度レベルで実行されたために意見の相違が生じました。最高の確率を持つトークンが完全に消失することさえありました。
2024年12月に回避された「バグ」の根本原因となった8月11日の変更の一部としてマージされた最小限の再現コードスニペット。実際には、xla_allow_excess_precisionフラグの予期される動作です。
精度問題を修正する際、彼らはより深いバグ、つまり近似top-k操作の問題を露呈させました。
これは最高の確率を持つトークンを迅速に見つけるためのパフォーマンス最適化ですが、時には完全に誤った結果を返しました。
XLA:TPUエンジニアと共有された、基盤となる近似top-kバグの再現を示すSlackメッセージ。このコードはCPUで実行すると正しい結果を返します。
このバグの振る舞いは苛立たしいものでした。
前後にどのような操作が実行されたか、デバッグツールが有効になっているかなど、無関係な要因に基づいて変化しました。
同じプロンプトでも、ある時は完璧に機能し、次の時には失敗しました。
最終的に彼らは、厳密なtop-k操作が以前ほど大きなパフォーマンス損失を伴わないことを発見し、正確なアルゴリズムに切り替え、一部の操作をfp32精度に標準化しました。
なぜ発見がこれほど難しかったのか?
Anthropicの検証プロセスは通常、ベンチマーク、セキュリティ評価、およびパフォーマンスメトリクスに依存しています。
エンジニアリングチームは、小規模な「カナリア」グループにまずデプロイして、抜き打ち検査を実施します。
しかし、これらの問題は、彼らがもっと早く発見すべきだった重要な欠陥を露呈させました。
彼らの評価は、ユーザーが報告した品質低下を全く捉えていませんでした。これは、Claudeが孤立したエラーからうまく回復することが多いためでもあります。
プライバシー慣行も調査を困難にしました。社内のプライバシーおよびセキュリティ管理により、エンジニアがユーザーとClaudeとのやり取りにアクセスできる方法と時間が制限されていました。
これはユーザーのプライバシーを保護しましたが、同時に、バグを特定または再現するために必要な問題のあるやり取りをエンジニアが調査することを妨げました。
各バグは異なるプラットフォームで異なる速度で異なる症状を引き起こし、単一の原因を特定できない混乱した混合報告を生み出しました。
それはまるで、ランダムで一貫性のない品質低下のように見えました。
改善策
Anthropicは以下の変更を行うことを約束しました:
より敏感な評価:正常な実装と異常な実装をより確実に区別できる評価方法を開発します。
より広範な品質評価:コンテキストウィンドウの負荷分散エラーのような問題を捕捉するため、実際のプロダクションシステムで継続的に評価を実行します。
より高速なデバッグツール:ユーザーのプライバシーを犠牲にすることなく、コミュニティからのフィードバックをよりよくデバッグするためのインフラストラクチャとツールを開発します。
彼らは特に、ユーザーからの継続的なフィードバックが不可欠であることを強調しました。
ユーザーはClaude Codeで/bugコマンドを使用するか、Claudeアプリで「低評価」ボタンを使用してフィードバックを提供できます。
ネットユーザーの反応
Anthropicの透明性は賞賛に値しますが、ユーザーの反応は非常に複雑と言えます。
Denis Stetskov(@razoorka)は、大きな改善を感じたと述べています:
すでに大きな改善を感じています。何を修正したにしても、それが機能しています。
Rajat(@DRajat33)は透明性を賞賛しました:
説明と詳細に感謝します。透明性は、製品がどうであれ、企業を際立たせるものです。
しかし、より多くのユーザーが補償がないことに不満を表明しました。
Alexandr Os(@iamavalex)は直接的に要求しました:
影響を受けたアカウントのリストを公開し、直ちに返金してください。私もその一人です。
Conor Dart(@Conor_D_Dart)は疑問を呈しました:
影響を受けたユーザーに返金や補償をするつもりですか?報告は多くの人に影響を与え、あなたの価格は安くありません。
The City Keeps Building(@TheCity777)は簡潔かつ直接的でした:
私たちの返金はどうなるのですか?
peermux(@peermux)は次のように意見を述べました:
8月から9月の間に合意された製品を提供しなかったことを認めるなら、返金するか、少なくとも1ヶ月間の無料サービスを提供するべきです。これは誠意を示し、信頼を維持するのに役立つでしょう。
Baby Yoda(@grogu836)は失望を表明しました:
これに対して返金されないのですか?信じられない。もうClaude Codeは使いません。
他のユーザーは、問題がまだ完全に解決されていない可能性があると指摘しました。
tuna(@tunahorse21)は次のように述べています:
明らかにまだバグがあるのに、あなたたちはその問題を認めるまでに1ヶ月も待ちました。
Daniel Lovera(@dlovera)はさらに踏み込んだ疑問を呈し、短コンテキストリクエストが長コンテキストサーバーでパフォーマンスが低下することは、Anthropicが実際には需要に基づいて間接的にモデルの品質を低下させていたことを示唆していると主張しました。
Thomas Ip(@_thomasip)は3つのバグをまとめました:
tldr:
バグ1 - 一部のリクエストがテストサーバーにルーティングされた
バグ2 - パフォーマンス最適化バグが稀なトークンに高い確率を割り当てた
バグ3a - 精度不一致により、最高の確率を持つトークンが破棄された
バグ3b - 近似top-kアルゴリズムが完全に間違っていた
[1] 技術的事後分析レポート: https://www.anthropic.com/engineering/a-postmortem-of-three-recent-issues