Claude服务质量下降事故的事后分析

核心概要

八月至九月初 期间,三个独立的基础设施Bug间歇性地导致了Claude模型响应质量的下降。目前所有问题均已解决。

我们的声明:我们绝不会因为需求、时段或服务器负载而降低模型质量。用户报告的问题完全是由基础设施的Bug引起的。我们承认在这些事件中未能达到用户对Claude一致高质量的期望标准。

事故时间线

多个Bug的重叠使得诊断变得异常困难。

8月5日: 引入第一个Bug(上下文路由错误),最初影响约 0.8%Sonnet 4 请求。
8月25-26日: 部署引入了第二个(输出损坏)和第三个(编译器错误)Bug。
8月29日: 一次常规的负载均衡变更,导致受影响的流量增加,问题恶化。
9月2日: 回滚了导致“输出损坏”问题的变更。
9月4日: 部署了“上下文路由错误”的修复程序,并回滚了影响 Haiku 3.5 的编译器Bug。
9月12-16日: 完成了对所有平台的Bug修复和回滚。

三个重叠的Bug详解

Bug 1: 上下文窗口路由错误

问题描述: 部分 Sonnet 4 的请求被错误地路由到为即将推出的 1M Token 上下文窗口配置的服务器上。

影响范围:

  • 最初影响 0.8% 的请求。在 8月31日 的高峰期,影响了 16%Sonnet 4 请求。
  • 由于路由具有“粘性”,一旦用户的请求被错误服务器处理,后续请求很可能继续被错误处理,加重了对部分用户的影响。
  • Amazon Bedrock 上,错误路由的流量峰值为 0.18%;在 Google Cloud Vertex AI 上,影响小于 0.0004%

解决方案: 修复了路由逻辑,确保长短上下文请求被定向到正确的服务器池。该修复已于 9月16日 前在自有平台和Google Cloud上完成部署。

Bug 2: 输出内容损坏

问题描述: 8月25日,在 Claude API 的 TPU 服务器上部署的一个错误配置,导致Token生成过程中出现错误。

具体表现: 一项运行时性能优化偶尔会给本不应出现的Token分配高概率,例如在英文回答中插入泰语("สวัสดี")或中文字符,或在代码中产生明显的语法错误。

影响范围:

  • 影响了 8月25-28日Opus 4.1Opus 4 请求。
  • 影响了 8月25日–9月2日Sonnet 4 请求。
  • 第三方平台未受此问题影响。

解决方案: 9月2日 发现问题并回滚了变更。同时,在部署流程中增加了对意外字符输出的检测测试。

Bug 3: XLA:TPU 近似 top-k 编译错误

问题描述: 8月25日,部署的一段旨在改进Token选择的代码,无意中触发了 XLA:TPU 编译器中的一个潜在Bug。

影响范围:

  • 已确认影响了 Claude Haiku 3.5
  • 据信可能也影响了 Claude API 上的部分 Sonnet 4Opus 3 请求。
  • 第三方平台未受此问题影响。

解决方案: 分别于 9月4日9月12日 回滚了相关代码。同时,正在与XLA:TPU团队合作修复编译器Bug,并已部署了使用更高精度的“精确top-k”作为内部修复方案。

技术深潜:XLA编译器Bug探究 (点击展开)

这个Bug的根本原因在于混合精度计算性能优化的冲突。

  • 模型在 bf16(16位浮点)精度下计算概率,但TPU的向量处理器是 fp32(32位)原生的。
  • 编译器(XLA)为了优化,会自动将某些操作转换为更高精度的 fp32
  • 这导致了不同芯片上的计算单元在“哪个Token概率最高”这个问题上出现分歧,有时甚至导致概率最高的Token被完全丢弃。
  • 2024年12月 的一个临时修复方案无意中掩盖了一个更深层次的、关于“近似top-k”操作的Bug。
  • 8月26日 的代码重写移除了这个临时方案,从而暴露了这个更棘手的底层Bug,其行为极其不稳定且难以复现。

模型质量是不可协商的,因此我们接受了切换到性能稍低的“精确 top-k”方案带来的微小效率影响。

为何难以检测?

未来的改进措施

为了防止类似事件再次发生,我们将做出以下改变:

  1. 更敏感的评估: 开发能更可靠地区分正常与故障实现的评估方法,并持续改进。
  2. 扩大质量评估范围: 在真实的生产系统上持续运行质量评估,以及时发现类似“上下文窗口负载均衡错误”的问题。
  3. 更快的调试工具: 开发新的基础设施和工具,以便在不牺牲用户隐私的前提下,更好地调试来自社区的反馈。
  4. 重视用户反馈: 用户的直接反馈至关重要。我们鼓励用户继续通过“/bug”命令或“踩”按钮提交反馈。

原文

源链接