Skip to content

Model Rollout Canary:新模型上线如何灰度和回滚 ​

这篇文章解决什么问题 ​

大模型能力变化很快,团队经常想把旧模型换成新模型。但模型切换不是简单改一个 model name。新模型可能更便宜但格式不稳定,或者推理更强但延迟更高,也可能在某些安全样本上退化。

Model Rollout Canary 的目标是让模型上线像代码发布一样:先离线评测,再 shadow,再 canary,再全量,随时可回滚。

为什么不能直接全量切换 ​

风险示例
输出格式变化JSON 不稳定,结构化解析失败
安全退化更容易被 Prompt Injection 诱导
RAG 忠实度变化更会总结但引用不准确
工具调用变化参数更激进或遗漏必填字段
成本变化输出更长,token 上升
延迟变化p95 超过 SLA
用户体验变化语气、详细程度、拒答风格改变

模型升级要用数据证明,而不是凭一次体验判断。

发布阶段 ​

阶段做什么
offline eval固定评测集对比旧模型和新模型
shadow traffic真实请求复制给新模型但不展示
canary小比例真实用户使用新模型
ramp-up逐步扩大比例
full rollout全量切换
rollback指标退化时回旧模型

每个阶段都要有进入条件和退出条件。

评测维度 ​

维度指标
任务质量task_success、human preference
事实性factuality、grounding
RAGcitation_accuracy、no_answer_accuracy
工具tool_selection、args_validity、tool_success
格式schema_valid_rate
安全injection_block_rate、unsafe_output_rate
成本cost_per_task、output_tokens
延迟p50、p95、timeout_rate
稳定性retry_rate、parse_error_rate

上线门禁不能只看总体分数,必须看关键维度是否退化。

Canary 策略 ​

策略示例
按流量比例1% -> 5% -> 20% -> 50%
按租户内部租户先试用
按功能先在摘要功能使用,不在高风险工具使用
按风险低风险任务先切换
按用户种子用户或白名单用户

高风险任务不应该最先灰度。先从只读、低风险、可人工修正的功能开始。

自动回滚条件 ​

条件示例
schema_valid_rate 下降低于 99%
p95_latency 上升超过基线 30%
cost_per_task 上升超过预算 20%
safety incident任意 critical 事件
citation_accuracy 下降低于阈值
tool_error_rate 上升超过基线 2 倍
negative_feedback 上升超过阈值

回滚条件要提前写进 Control Plane,而不是事故发生时临时讨论。

版本记录 ​

每次模型发布记录:

  • rollout_id
  • old_model / new_model
  • model_route_version
  • affected_agents
  • affected_tenants
  • eval_report
  • canary_start / end
  • metrics_snapshot
  • rollback_target
  • owner
  • changelog

模型发布也是生产变更,必须能审计。

面试表达模板 ​

我不会直接把模型名从旧模型改成新模型,而是走 offline eval、shadow traffic、canary、ramp-up 和 rollback。评测维度包括 task success、RAG citation、tool args validity、schema_valid_rate、安全、成本和 p95 延迟。Canary 会先放在低风险功能或内部租户,Control Plane 里配置自动回滚条件,比如格式错误率上升、成本超预算、安全事件或 citation accuracy 下降。

常见误区 ​

误区一:新模型 benchmark 更高就一定更适合 ​

通用 benchmark 不代表你的业务任务、工具调用和格式输出更好。

误区二:只看质量不看成本延迟 ​

新模型质量提升一点,但成本和延迟大幅上升,可能不值得全量。

误区三:灰度没有回滚条件 ​

没有自动回滚条件的灰度只是慢速全量。

相关链接 ​