Shadow deploy 与 p99 latency SLA
离线涨点不上线,多半是 val 分布与生产不一致、latency 超标或 operating threshold 未重调——A/B 要看业务指标和 slice,不只看 mAP。

1. 离线涨 2 点 mAP,上线没变化
新 detector offline val mAP 52.1 → 54.3,A/B 一周业务指标无显著差异——查下来三道关没过:val 分布与生产不一致(离线用 test 增广、线上光照不同)、p99 latency 超标(模型更大,timeout 增多)、operating threshold 未在部署域重调(offline 最优 threshold 在线上 calibration 漂移)。离线 metric 是必要条件,不是上线充分条件。
2. Shadow deploy
线上 shadow:新模型 parallel infer 不 serving,log disagreement rate 和 latency。旧模型仍出结果,用户无感。对比同一 request 上两模型 output diff、confidence 分布、slice 级差异——比离线 batched eval 更接近真实分布。
shadow 期重点看:p99/p999 latency 是否超 SLA;disagreement 是否集中在某 slice(夜间、某相机);新模型 error 是否比旧模型更「自信」(calibration 退化)。
3. A/B 与业务 metric
小流量 A/B 对比 business metric:点击率、人工复核率、误报成本——不是 offline mAP。ML metric 与业务 metric 可对齐也可背离:mAP 涨但 false positive 在 costly slice 增加,业务反降。
from torch.utils.benchmark import Timer
t = Timer(stmt='model(x)', globals={'model': model, 'x': x})
print(t.blocked_autorange())ONNXRuntime / TensorRT 测 p99,用生产 input size 和 batch=1(若 serving 单请求)。
4. 上线前 checklist
部署域 hold-out 上 metric + calibration(ECE)。p99 latency ≤ SLA,含 pre/post processing。threshold 在部署域重搜,不沿用 offline val。rollback 预案:旧模型 checkpoint 一键切回。监控:business metric、error rate、latency 分位数。
5. 失败模式
offline 用 test 增广而线上 raw input → 分布 shift。模型更大 → timeout、队列堆积。只报 aggregate mAP → slice 退化未发现。无 rollback → 事故窗口长。
6. 案例:latency 超标抵消精度 gain
某模型 mAP 涨 1.8 但 p99 延迟涨百分之四十,队列 timeout 增多,有效吞吐降——业务指标反降。shadow 期应同时盯精度与延迟,不单独庆祝 offline 涨点。
7. 验收
- shadow 期 disagreement 与 latency 有 log,可复盘。
- A/B 有 business metric 显著性(或等价决策规则)。
- threshold 在部署域 fit,非 offline 直接搬。
- rollback 演练过,RTO 可接受。
- slice 级 metric 无 silent regression。
8. 落地与衔接
上线流程固定影子部署、小流量对比、再全量,每阶段同时盯离线指标、百分之九十九延迟与业务关键绩效。阈值与校准在部署域重搜,写入推理配置与模型同版本。回滚脚本与旧检查点保留在同一发布包,恢复时间演练进季度清单。切片级回归门槛与总体指标并列,关键场景跌超阈值则阻断推广,即使平均精度总体上涨。文档写清各阶段通过标准,避免口头「感觉更好」。
9. 案例复盘
某检测器离线平均精度涨一点八,影子期百分之九十九延迟涨百分之四十导致队列超时,业务人工复核率反升。回滚到旧模型后恢复服务等级,复盘把延迟与精度绑在同一仪表盘。下一版先减输入尺寸再影子验证,精度略降但延迟达标,对比实验业务指标才显著改善。离线涨点不再单独庆祝。该案例已写入上线评审材料,作为必讲项。
模型 A/B 是离线指标到线上价值的桥。Shadow 验分布和 latency;A/B 验业务结果。mAP 涨不上线,先查这三关,不继续堆 offline 实验。把 shadow disagreement 与 latency 分位数存档,便于事后解释为何离线更好却未推广。业务方签字前必须看到延迟分位数与切片指标,不能只看总体平均精度。推广决策须书面记录影子期与对比实验的关键切片结论,即使总体指标上涨,关键业务切片退化也应默认否决全量切换。 影子期须同时记录延迟分位数与关键切片指标,推广决策书面说明为何通过或否决。离线涨点若伴随延迟超标,默认不应进入小流量对比。
相关
也可以看看
- ·3 分钟阅读
Temperature scaling 与 ECE
Softmax 分数不是概率——高置信度仍可能常错时,threshold 和 risk 决策会误导;ECE、温度缩放和 isotonic 要在部署域上评。
- ·4 分钟阅读
KL 蒸馏温度 T 与 feature MSE
大教师教小学生,学生会在教师也错的区域过度自信——温度 T、loss 权重和 hard label 仍要保留,蒸馏不是复制 logits 就完事。
- ·5 分钟阅读
fbgemm PTQ 与 per-channel scale
PTQ 校准数据不代表部署分布时 INT8 掉点惨烈——校准集、per-channel 和 sensitive layer fp16 保留要一起调。
johan's blog