影子运行是什么
影子运行指新版本上线前先「跟着跑」:同一批真实请求同时送给新旧两个版本,新版结果只落日志不对外返回。这样可以在不影响用户的前提下拿到两版的逐条差异——改对了多少、改错了多少、格式有没有回归。它是灰度发布的前一步:影子阶段确认无关键劣化,才进入小流量灰度观察在线指标。
基本信息
| 适用平台 | 在线服务化部署的 LLM 应用;需要能复制流量并做结果落库 |
|---|---|
| 成本 | 双跑使调用量与推理成本翻倍,可按抽样比例运行以控制花费 |
| 抽样策略 | 优先覆盖高风险场景与历史 badcase 分布集中的切片 |
| 放行条件 | 确认无关键劣化后才进入灰度,灰度期间保留快速回滚开关 |
典型使用场景
- 模型升版:新旧模型同流量对比,观察实际业务样本上的差异
- 提示改版:字段级 diff 定位改动影响的具体字段
- 结构化输出变更:检查解析成功率的回归情况
- 高风险链路上线前:先影子验证再放量,降低投诉概率
- 长尾场景核查:线上真实样本分布比评测集更复杂,影子运行能暴露未知问题
影子运行检查点
影子运行检查点
# 1) 同输入双跑:新版结果只落日志,不对外返回、不触发下游动作
# 2) 过滤内部流量与测试请求,避免污染对比样本
# 3) 字段级 diff 统计:一致、改进、退化分别计数
# 4) 抽样人工评审 50-100 条,优先覆盖分歧样本与高风险切片
# 5) 按切片看差异,不只看平均值,确认高风险场景没有退化
# 6) 放行:无关键劣化后进入 5% 灰度,继续观察在线指标与投诉差异类型与判定
| 差异类型 | 判定方式 | 处置倾向 |
|---|---|---|
| 一致输出 | 逐字段比对相同 | 计入稳定比例,作为基线 |
| 改进 | 人工判定新版更符合要求 | 累计改进率,评估收益是否达标 |
| 退化 | 新版错误或格式不合规 | 逐条查原因,出现关键退化即阻断 |
| 无法自动判定 | 语义差异需人工判断 | 抽样评审,控制评审量 |
影子运行的样本量要足够覆盖低频路径:按平均指标判断会漏掉只在特定输入长度或特定渠道下出现的退化,切片统计是必需项。
影子阶段的结果不对外返回,因此不能替代灰度:真实用户交互中的多轮上下文与工具调用路径不同,仍需小流量灰度观察在线指标。