3. 灰度发布核心概念

在自动驾驶模型发布中,灰度发布不是“把新模型放出去看看”这么简单,而是一套围绕风险可控、效果可测、问题可退设计的工程机制。它把一次全量上线拆解为多个可观测、可干预的小步骤,让新模型在真实车端与仿真环境中逐步获得流量,同时保留随时回滚的能力。理解灰度发布,关键要抓住五个核心概念:灰度策略、流量切分、用户分组、发布阶段、回滚机制与风险控制。

一、灰度策略:决定“先给谁、给多少、看什么”

灰度策略是发布的总纲,回答三个问题:先给哪些用户或场景、给多少流量、用什么指标判断继续或停止。常见的灰度策略包括:

  • 按用户分组灰度:先内部员工、测试车队,再种子用户,最后全量用户。
  • 按地域灰度:先在园区、封闭测试场或低风险城市验证,再扩展到复杂城区。
  • 按场景灰度:先开放高速巡航、泊车等低风险场景,再逐步开放城区NOA。
  • 按车型/硬件灰度:先在同一传感器配置的车型上验证,再覆盖不同算力平台。
  • 按比例灰度:以1%、5%、20%、50%、100%的流量比例逐步放量。

策略的核心不是“分得越细越好”,而是让每一层灰度都能回答一个明确问题:新模型在该群体中是否安全、是否稳定、是否达到预期收益。

二、流量切分:把请求精确分配到不同模型版本

流量切分是灰度策略的执行层。它决定一个车端请求、一次仿真任务或一条数据回放,究竟由旧模型还是新模型处理。常见切分方式有:

切分方式 依据 适用场景 风险点
随机比例 按百分比随机分配 快速验证整体稳定性 小样本场景覆盖不足
用户ID哈希 用户标识取模 保证同一用户始终命中同一版本 哈希倾斜导致分组不均
地域/场景标签 城市、道路类型、天气 定向验证特定场景 标签缺失或错误
设备/车型 硬件版本、算力平台 验证兼容性与性能 硬件差异引入混淆

工程上通常采用“一致性哈希 + 标签过滤 + 动态比例”的组合:先按用户或设备稳定分组,再在组内按比例放量,同时支持运营后台实时调整比例。切分必须保证可复现、可审计、可回滚,否则A/B结论不可信。

三、用户分组:让实验组与对照组可比

用户分组是灰度发布和A/B验证的基础。分组不当,会导致新旧模型效果差异被用户本身差异掩盖。分组时要遵循:

  • 同质性:实验组与对照组在车型、地域、驾驶习惯、道路类型上尽量接近。
  • 稳定性:同一用户在一次实验周期内不频繁切换版本,避免体验割裂。
  • 独立性:组间不互相污染,尤其避免同一路段同时混跑两个版本造成对比失真。
  • 可追踪:每个分组都要有唯一标识,便于日志关联和问题回溯。
在自动驾驶场景中,用户分组往往不是“人”,而是“车+路线+场景”的组合。因为同一驾驶员在不同道路上的表现差异,可能远大于两个模型版本之间的差异。

四、发布阶段:从影子模式到全量

一个典型的自动驾驶模型灰度发布可分为六个阶段:

  1. 离线回放:用历史数据回放新模型,验证基础指标不退化。
  2. 影子模式:新模型在车端运行但不控车,只记录输出,与旧模型对比。
  3. 小流量灰度:1%~5%流量,新模型参与控车,重点看安全与接管。
  4. 扩大灰度:20%~50%流量,覆盖更多场景与地域。
  5. 全量发布:100%流量切换,保留快速回滚通道。
  6. 观察期:全量后持续监控至少一个完整周期,确认无长尾问题。

每个阶段都要设定进入条件和退出条件。例如,影子模式要求“新模型与旧模型决策差异率低于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"

六、常见误区与复盘

误区一:把灰度当全量预演,忽略对照组。没有对照,就无法判断指标变化是新模型导致还是环境波动。误区二:流量切分粒度过粗,导致高风险场景被过早覆盖。误区三:回滚只回模型不回配置,新旧配置混用引发二次故障。误区四:只看平均值,不看长尾,自动驾驶的严重问题往往出现在极低概率场景。

灰度发布不是“慢”,而是“可控地快”。真正危险的不是多花几天灰度,而是把未经验证的模型一次性推给全部车辆。

总结来看,灰度策略决定方向,流量切分决定精度,用户分组决定可比性,发布阶段决定节奏,回滚机制决定底线,风险控制决定上限。六者共同构成自动驾驶模型发布的安全网。

自动驾驶模型灰度发布核心机制 灰度策略与流量切分 用户分组 地域/场景 车型/硬件 比例放量 一致性哈希 + 标签过滤 + 动态比例 发布阶段推进 离线回放 影子模式 小流量 扩大灰度 全量发布 观察期 进入条件 / 退出条件 / 指标门禁 回滚与风险控制 版本回滚 流量回滚 配置回滚 场景熔断 监控指标 + 自动熔断 + 人工确认 关键监控指标与熔断阈值 接管次数 ≤ 1.2x 基线 急刹率 ≤ 1.1x 基线 推理时延 P99 ≤ 120ms 碰撞预警 0 次严重 规划抖动 ≤ 5% 帧 置信度分布 无异常偏移 灰度发布 = 策略 × 切分 × 分组 × 阶段 × 回滚 × 风控