阴影交通,加拿大陆部署和LLM的逐步部署
Type: Learn
Languages: Python (stdlib, toy canary-progression simulator)
Prerequisites: Phase 17 · 13 (Observability), Phase 17 · 21 (A/B Testing)
Time: ~60 minutes
学习目标
- 区分影子模式 (零冲击比较),加拿大 (现场流量进步),A/B (稳定证实比较).
- 列出五项专为LLM的加拿大标准 (延迟,成本/请求,错误/拒绝,输出长度分布,用户反).
- 解释为什么LLM非决定性 (高达15%) 改变了"稳定"在推广中意味着什么.
- 设计一个需要几秒钟 (政策转换) 而不是几小时 (重新部署) 的反转路径.
问题
你发出了新车型. 离线评估显示了3%的准确度,你将其转换到生产中. 在24小时内,成本上升了40%,用户指下降了8%,三个客户的门票报告了"奇怪的答案". 你回头. 再部署需要3小时. 你的周末是破产的.
影模式在任何用户看到之前就会发现成本上40%的. 利将在指下移动时停止在10%的水平. 政策旗倒车将需要30秒. 纪律是填补"离线评估看起来很好"和"真实用户很开心"之间的差距.
概念
影子模式
申请人收到与生产相同的请求;输出记录,而不是返回用户.用户影响零.记录:
- 产量含量 (与生产差异).
- 代币计数 (成本分数).
- 延迟.
- 拒绝和错误.
捕获:成本升高,长度回归,明显的拒绝变化,严重的错误. 没有捕获: 质量的德尔塔用户会感觉. 影子是一个烟雾测试,而不是质量测试.
卡纳里地区的部署
随着门的转移,流量逐步转移.典型的进步:1% → 10% → 25% → 50% → 75% → 100%.每步5个指标的门:
- Latency percentiles P50, P95, P99. 违规性:鱼的P99> 1.5x基线.
- Cost per request混合. 违规:超过原线20%
- Error / refusal rate5xx加上明确拒绝.
- Output length distribution平均值+P99. 违规性:分布转移.
- User-feedback rate指/票票申请. 违规:1.5倍的基线.
无决定主义是新的变化
相同的输入产生的输出不相同.
- GPU FP非关联性 (浮点降低顺序因批量而异).
- 批量差异 (在128批量和16批量时相同的提示).
- 采样 (温度 > 0).
测量:在相同的评估集中,可进行最大15%的精度变化.在推出中"稳定"意味着指标在预期变化范围内,不与基线相同.设置门在噪音地面以上.
成本是变量
通过"更好的"模型,每次通话都会有3倍的成本.成本/请求是五个门口之一.
滚动是武器
- 政策标志 (功能标志系统):配置中的翻转百分比;需要几秒钟.
- 模型点 (注册表消化):点模型不会自动升级.
- 翻转=反转旗+设置固定的消化到之前.
如果你的堆需要重新部署,然后在滚动之前修复.
工具
Argo Rollouts现在,Flagger Kubernetes 渐进式交货控制器. 集成到Istio/Linkerd权重路由.
Istio weighted routing服务网层面的交通分区.
KServe / Seldon Core模型提供内置的菜.
Feature flags发射,暗,旗,释放.
计量序列
卡纳里大门根据流量每5-15分钟检查.1%的流量每窗口提供50-150个数据点,但对用户反来说足够.10%的数据提供了10倍多.进步应该停留足够长时间,以在每个步骤上积累足够的样本.
选项:A/B
如果新型号明显不同 (不同行为,不同的成本曲线,不同的调度),在鱼通过后,A/B测试它50%;如果它只是一个改进的版本,当鱼门通过时,跳到100%.
你应该记住的数字
- 鱼进展:1% → 10% → 25% → 50% → 75% → 100%.
- 无决定性性上限:在相同输入中,可达15%的连续变异.
- 五个可取量指标:延迟,成本,错误/拒绝,输出长度,用户反.
- 成本门:超过原线20%是违规行为.
- 秒钟,不是几个小时.
用它
code/main.py报告中,哪个阶段的推出停止,哪个门启动.
运送它
这一课产生了outputs/skill-rollout-runbook.md鉴于候选模型,基线和风险耐受性,设计了 shadow→canary→100%计划.
运动
- 跑步
code/main.py鱼在哪个阶段停止? - 您的新型号在线上获得3%的准确度,但成本/请求是+18%.
- 设计一个不到60秒的回滚,并列出所需的基础设施.
- 没有确定性在你的评估中显示 ±7% 设置鱼门,所以你不会错误报警.你使用什么乘法?
- 影子模式在鱼之前,成本上升了40%.
关键词
| Term | What people say | What it actually means |
|---|---|---|
| Shadow mode | "duplicate to new" | Zero-impact send-to-candidate for logging |
| Canary | "progressive traffic" | Gradual user-exposed rollout with gates |
| Gates | "rollout checks" | Metric thresholds that block progression |
| Non-determinism | "LLM variance" | Irreducible run-to-run differences |
| Policy flag | "flag flip rollback" | Config-level rollback, seconds not hours |
| Model pin | "registry digest" | Immutable reference to a model version |
| Argo Rollouts | "K8s progressive" | Kubernetes-native canary/rollback controller |
| KServe | "inference K8s" | Model serving with canary primitives |
| Istio weighted | "mesh split" | Service-mesh traffic splitter |
进一步阅读
- TianPan — Releasing AI Features Without Breaking Production
- MarkTechPost — Safely Deploying ML Models
- APXML — Advanced LLM Deployment Patterns
- Argo Rollouts docs
- Flagger docs
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.