跳到主要内容

没人会写的 AI 系统 On-Call 运维手册

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 p99 延迟刚刚飙升到了 12 秒。警报在凌晨 3:14 响起。你打开运维手册 (runbook),看到如下指令:检查数据库连接池、验证负载均衡器、重启服务。你三样都做了。延迟依然居高不下。服务并没有宕机——它正在运行且有响应。但有些地方不对劲。事实证明,由于最近的一次提示词 (prompt) 变更无意中开启了“啰嗦”模式,模型生成的响应比平时长了三倍。运维手册里没有关于这一条的说明。

这是工程团队尚未准备好应对的新一类值班事故:系统正在运行,但模型表现异常。传统的 SRE 运维手册假设的是二进制的故障状态。AI 系统是以概率方式失效的,其症状看起来不像停机,而更像“漂移”(drift)。

为什么传统的运维手册在 AI 系统面前会失效

传统的运维手册是一种程序化的产物。它规定:当警报 X 触发时,检查 Y,然后执行 Z。这在故障是确定性的情况下是有效的。崩溃的数据库要么能启动,要么不能。内存泄漏要么导致 OOM,要么不会。你复现问题,应用修复,验证恢复。

LLM 系统从三个维度打破了这一模式。

故障是行为性的,而非运行性的。 模型可能完全可用,接受请求并以正常的吞吐量返回响应——但产出的内容却存在微妙的错误、过度谨慎,或逐渐偏离预期特征。服务健康检查通过了。模型却表现异常。传统监控对此无能为力。

复现是不可靠的。 当你复现一个软件 Bug 时,你会得到同样的 Bug。当你试图复现 LLM 输出故障时,由于温度 (temperature)、上下文窗口效应以及检索数据的差异,你往往无法重建完全相同的行为。你是在调试一个概率分布,而不是一个确定性函数。

因果关系不明显。 延迟飙升的原因可能是:模型生成了更长的输出(上游内容变更)、并发长上下文请求带来的 KV 缓存压力、提供商端的问题、检索层返回了更多文档,或者工具调用返回了出乎意料的大载荷。每种原因都需要不同的对策。传统的运维手册假设你可以直接观察到原因;而 LLM 运维手册需要从间接信号中进行推断。

真正重要的信号

有效的 AI 值班始于扩展你的测量指标。大多数团队监控延迟、错误率和吞吐量。对于 LLM 系统,这些指标只能告诉你故事的一部分。

输出长度分布。 跟踪响应长度随时间变化的均值和方差。平均输出长度的突然上升通常发生在延迟飙升之前——模型正在生成更多 token,这会消耗更多计算资源并增加实际耗时。输出骤减可能预示着过度拒绝,或者是由于损坏的提示词导致响应被截断。这两者都不会表现为错误。

拒绝率。 每一次拒绝都是一次未能给用户返回有用信息的请求。将此作为与错误率并列的一级指标进行跟踪。拒绝率飙升通常由三个原因之一引起:提供商端的內容策略变更、由于用户流量变化导致提示词更频繁地触及安全边界,或者防护栏 (guardrail) 配置过于激进。每种情况都需要不同的应对方式,但在延迟和错误率仪表盘上,这三者看起来是一模一样的。

工具调用错误率和耗时。 对于智能体 (agentic) 系统,工具故障往往是导致模型性能退化的真正根源。如果检索工具开始返回空结果,模型就没有推理的依据。如果一个 API 工具在 20% 的调用中超时,智能体就会不断重试并耗尽 token 预算。独立监控每个工具——哪些工具被调用、它们的失败频率以及 P95 耗时。

质量分漂移。 这是最难量化但最重要的信号。实时质量评估——无论是通过 LLM-as-a-judge、基于嵌入 (embedding) 的已知优质响应相似度分析,还是特定任务的指标——都能为你提供关于模型实际产出内容的持续信号,而不仅仅是它是否产生了内容。质量分下降 10% 通常是回归的第一个征兆,而这种回归不会出现在任何基础设施指标中。

单次请求的 Token 成本。 意外的成本飙升是模型行为变化的领先指标。如果平均单次响应的 token 数翻倍,说明某些东西变了——可能是提示词、模型版本、检索到的上下文或用户流量模式。这比质量评估的实现成本低得多,且通常最先发出警报。

AI 系统的事故分类法

在编写运维手册之前,你需要一套针对可能出现的问题的分类系统。AI 系统的故障模式无法完全映射到基础设施事故上。

模型回归。 模型输出质量相对于基准线有所下降。这可能是因为:上游提供商在同一个 API 端点下默默更新了模型版本;在未进行回归评估的情况下更改了提示词;或者流量转向了模型不擅长处理的输入分布。检测这需要将当前输出与存储的基准进行对比,而不是检查服务健康状况。

防护栏绕过或配置错误。 安全防护栏开始拒绝过多(过度拒绝,对用户表现为服务降级)或过少(拒绝不足,这属于安全事故)。这是两个相反的问题,需要相反的对策,但两者都会表现为异常的拒绝率。

成本飙升。 Token 消耗超出了预期范围。这通常是由于传递给模型的上下文变长(检索变更、对话历史 Bug)、触发了啰嗦响应的提示词或流量模式转变引起的。成本飙升在被用户察觉之前,可能已经在财务上造成重大影响。

延迟退化。 P99 响应时间升高。这有 AI 特有的原因:并发长上下文带来的 KV 缓存压力、由于输出长度增加导致的 token 生成速度变慢,或者工具调用增加了智能体管线的延迟。传统服务中常见的延迟与错误相关性在这里往往失效——服务仍有响应,只是很慢。

提示词注入或安全事故。 对抗性输入导致模型的行为超出了其预期的操作范围。这表现为异常的输出模式、意外的工具调用或违反对话策略的行为。大多数监控栈都没有针对此类的信号。

凌晨 3 点的排查真相

你收到了一个告警。以下是适用于 AI 系统的排查流程,按执行速度排序:

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates