3. 灰度发布核心概念
在自动驾驶模型发布中,灰度发布不是“把新模型放出去看看”这么简单,而是一套围绕风险可控、效果可测、问题可退设计的工程机制。它把一次全量上线拆解为多个可观测、可干预的小步骤,让新模型在真实车端与仿真环境中逐步获得流量,同时保留随时回滚的能力。理解灰度发布,关键要抓住五个核心概念:灰度策略、流量切分、用户分组、发布阶段、回滚机制与风险控制。
一、灰度策略:决定“先给谁、给多少、看什么”
灰度策略是发布的总纲,回答三个问题:先给哪些用户或场景、给多少流量、用什么指标判断继续或停止。常见的灰度策略包括:
- 按用户分组灰度:先内部员工、测试车队,再种子用户,最后全量用户。
- 按地域灰度:先在园区、封闭测试场或低风险城市验证,再扩展到复杂城区。
- 按场景灰度:先开放高速巡航、泊车等低风险场景,再逐步开放城区NOA。
- 按车型/硬件灰度:先在同一传感器配置的车型上验证,再覆盖不同算力平台。
- 按比例灰度:以1%、5%、20%、50%、100%的流量比例逐步放量。
策略的核心不是“分得越细越好”,而是让每一层灰度都能回答一个明确问题:新模型在该群体中是否安全、是否稳定、是否达到预期收益。
二、流量切分:把请求精确分配到不同模型版本
流量切分是灰度策略的执行层。它决定一个车端请求、一次仿真任务或一条数据回放,究竟由旧模型还是新模型处理。常见切分方式有:
| 切分方式 | 依据 | 适用场景 | 风险点 |
|---|---|---|---|
| 随机比例 | 按百分比随机分配 | 快速验证整体稳定性 | 小样本场景覆盖不足 |
| 用户ID哈希 | 用户标识取模 | 保证同一用户始终命中同一版本 | 哈希倾斜导致分组不均 |
| 地域/场景标签 | 城市、道路类型、天气 | 定向验证特定场景 | 标签缺失或错误 |
| 设备/车型 | 硬件版本、算力平台 | 验证兼容性与性能 | 硬件差异引入混淆 |
工程上通常采用“一致性哈希 + 标签过滤 + 动态比例”的组合:先按用户或设备稳定分组,再在组内按比例放量,同时支持运营后台实时调整比例。切分必须保证可复现、可审计、可回滚,否则A/B结论不可信。
三、用户分组:让实验组与对照组可比
用户分组是灰度发布和A/B验证的基础。分组不当,会导致新旧模型效果差异被用户本身差异掩盖。分组时要遵循:
- 同质性:实验组与对照组在车型、地域、驾驶习惯、道路类型上尽量接近。
- 稳定性:同一用户在一次实验周期内不频繁切换版本,避免体验割裂。
- 独立性:组间不互相污染,尤其避免同一路段同时混跑两个版本造成对比失真。
- 可追踪:每个分组都要有唯一标识,便于日志关联和问题回溯。
四、发布阶段:从影子模式到全量
一个典型的自动驾驶模型灰度发布可分为六个阶段:
- 离线回放:用历史数据回放新模型,验证基础指标不退化。
- 影子模式:新模型在车端运行但不控车,只记录输出,与旧模型对比。
- 小流量灰度:1%~5%流量,新模型参与控车,重点看安全与接管。
- 扩大灰度:20%~50%流量,覆盖更多场景与地域。
- 全量发布:100%流量切换,保留快速回滚通道。
- 观察期:全量后持续监控至少一个完整周期,确认无长尾问题。
每个阶段都要设定进入条件和退出条件。例如,影子模式要求“新模型与旧模型决策差异率低于5%”,小流量灰度要求“接管率不高于基线1.2倍”。
五、回滚机制与风险控制
灰度发布的价值,很大程度上体现在“出问题时能多快退回去”。回滚机制包括:
- 版本回滚:切回上一稳定模型版本,通常要求分钟级完成。
- 流量回滚:把新模型流量比例降为0,旧模型承接全部请求。
- 配置回滚:恢复阈值、开关、参数到上一版本。
- 场景熔断:在特定城市、天气或道路类型下自动禁用新模型。
风险控制则依赖监控指标 + 自动熔断 + 人工确认三层防线。关键指标包括:接管次数、急刹率、碰撞预警、规划抖动、推理时延、内存占用、模型输出置信度分布等。一旦触发阈值,系统应自动降级或回滚,而不是等待人工发现。
# 灰度发布配置示例
release:
model: "planning_v2.3.1"
strategy: "canary"
traffic:
- stage: "shadow"
ratio: 0
mode: "record_only"
- stage: "canary_1"
ratio: 0.01
groups: ["internal_fleet"]
- stage: "canary_2"
ratio: 0.20
groups: ["seed_users", "city_a"]
- stage: "full"
ratio: 1.0
rollback:
auto_trigger:
takeover_rate: "> 1.2x baseline"
latency_p99: "> 120ms"
action: "traffic_to_previous"
六、常见误区与复盘
误区一:把灰度当全量预演,忽略对照组。没有对照,就无法判断指标变化是新模型导致还是环境波动。误区二:流量切分粒度过粗,导致高风险场景被过早覆盖。误区三:回滚只回模型不回配置,新旧配置混用引发二次故障。误区四:只看平均值,不看长尾,自动驾驶的严重问题往往出现在极低概率场景。
总结来看,灰度策略决定方向,流量切分决定精度,用户分组决定可比性,发布阶段决定节奏,回滚机制决定底线,风险控制决定上限。六者共同构成自动驾驶模型发布的安全网。