影子流量、金丝雀发布与LLM渐进式部署
理解LLM部署的三阶段策略:影子→金丝雀→A/B测试
影子流量、金丝雀发布与LLM渐进式部署
LLM发布结合了软件部署最难的部分:无单元测试、扩散的失败模式、延迟信号。序列是(1)影子模式——复制生产请求到候选模型,记录,比较,零用户影响;捕获明显分布问题但不是质量保证;(2)金丝雀发布——渐进流量转移10% → 25% → 50% → 75% → 100%带每步门控;追踪延迟百分位、成本/请求、错误/拒绝率、输出长度分布、用户反馈率;(3)A/B测试用于稳定后确认的明确替代方案。非确定性是不可约的——相同输入跨运行高达15%准确率变化由于GPU FP非结合性加批次大小方差。成本是变量,非恒定——20%更好的模型可能每次调用3x更贵。回滚速度是决定性的:如果回滚需要重新部署,你太慢了。策略活在配置/标志中;模型活在带固定摘要的注册表中;回滚 = 翻转策略 + 恢复阈值 + 秒级固定旧模型。
类型: 学习 语言: Python (stdlib, toy金丝雀进展模拟器) 前置知识: Phase 17 · 13 (可观测性), Phase 17 · 21 (A/B测试) 时间: ~60分钟
学习目标
- 画出三阶段部署序列:影子→金丝雀→A/B测试。
- 解释为什么非确定性是不可约的(15%准确率变化)以及如何门控。
- 描述金丝雀每步门控指标:延迟百分位、成本/请求、错误率、输出长度、用户反馈。
- 设计回滚策略:配置/标志 + 模型注册表 + 秒级回滚。
问题
LLM部署不像软件部署。你不能写单元测试验证输出质量。失败模式是扩散的——更长的输出、不同的语气、微妙的推理错误。信号是延迟的——用户反馈数小时或数天后到达。你需要渐进式部署带每步门控。
概念
三阶段序列
-
影子模式:复制生产请求到候选模型。记录和比较。零用户影响。捕获分布问题(输出长度、拒绝率)但不是质量保证。
-
金丝雀发布:渐进流量转移10% → 25% → 50% → 75% → 100%。每步门控检查:延迟百分位、成本/请求、错误/拒绝率、输出长度分布、用户反馈率。
-
A/B测试:稳定后确认的明确替代方案。统计显著性测试。
非确定性
相同输入跨运行高达15%准确率变化。原因:GPU浮点非结合性 + 批次大小方差。门控:运行多次取众数,或在金丝雀期间使用更宽的容忍带。
回滚策略
- 策略活在配置/标志中(非代码)。
- 模型活在带固定摘要的注册表中。
- 回滚 = 翻转策略 + 恢复阈值 + 秒级固定旧模型。
- 如果回滚需要重新部署,你太慢了。
实践
code/main.py模拟金丝雀进展带每步门控检查。
输出
本课程产生outputs/skill-llm-deployment-playbook.md。给定模型变更,设计三阶段部署计划。
练习
- 设计金丝雀发布:从Claude 3.5升级到3.7。每步门控指标?
- 为什么影子模式不是质量保证?它捕获什么,遗漏什么?
- 15%非确定性如何影响金丝雀门控?设计容忍带。
- 设计回滚策略:配置格式、模型注册表、回滚流程。
- 成本是变量:20%更好的模型3x更贵。如何在金丝雀期间追踪成本?
关键术语
| 术语 | 常见说法 | 实际含义 |
|---|---|---|
| 影子模式 | ”双写比较” | 复制请求到候选模型,零用户影响 |
| 金丝雀发布 | ”渐进流量转移” | 10%→25%→50%→75%→100%带门控 |
| 门控 | ”每步检查” | 每步检查指标是否在阈值内 |
| 非确定性 | ”15%方差” | 相同输入不同运行间的输出变化 |
| 回滚 | ”秒级恢复” | 翻转配置恢复旧模型 |