Zero-Shot Transfer Results: Is the Render Upgrade Friend or Foe, Part 1
zero-shot 迁移(zero-shot transfer)指模型在源域 上训练完成后,不使用目标域 的任何样本做训练或适配,直接把原权重部署到 上评测。用分布语言说,训练时模型见到的是 ( 为输入画面, 为驾驶动作),测试时输入却来自 。当 而任务条件分布 被认为不变时,这就是典型的协变量偏移(covariate shift)设定。
工程上的判据非常朴素:
任何适配手段(微调、批归一化统计量重估、风格迁移)都会吸收一部分域差距,使测得的性能变化不再纯粹。zero-shot 没有任何缓冲层:如果渲染域差距对模型是致命的,分数会当场崩塌;如果没崩,说明模型学到的表征对该差异有一定不变性。
在 MySim 的设定里,源域是 CARLA 0.9.15(UE4 渲染),目标域是 CARLA 0.10(UE5 Lumen/Nanite 渲染)。上一集测得两侧画面的 KID(Kernel Inception Distance,核 inception 距离)为 0.0743,而域内基线约 0.0001,差约 700 倍——分布距离客观存在且很大。zero-shot 实验回答的问题正是:这个统计距离会不会传导为驾驶行为的崩塌。
“四同一换”是单变量控制(controlled experiment)在自动驾驶仿真里的落地:
| 控制项 | 具体内容 |
|---|---|
| 同权重 | 两侧加载同一份官方 ckpt,逐字节相同 |
| 同路线 | 十条对齐路线(同一套起点/终点/路径几何) |
| 同评分 | 驾驶分数 DS(Driving Score)同一口径 |
| 同背景交通口径 | UE4 侧动态低密度补丁(瞬时约 7 辆)对 UE5 侧固定 6 辆 |
| 换 | 渲染世界:CARLA 0.9.15(UE4)→ CARLA 0.10(UE5) |
只有控制项真的”同”,测出的 DS 差异才有资格归因到被换的变量上。任何一项松动,差异就有第二个解释来源。
CARLA leaderboard 体系的驾驶分数为
其中 是路线完成率(Route Completion), 是第 类违规的惩罚系数, 是该类违规次数。同一套系数若在两侧实现不同,DS 直接不可比。本项目 UE4 侧走官方 leaderboard 管线(与 CP1 复现同口径),UE5 侧是自建执行器,因此系数集必须交叉验证:通过单元测试加系数集一致性验收(T2.6),确认两侧对同一行为给出同一分数,差异才能往渲染上归因。
控制变量不是假装两侧一样,而是让差异集中在渲染/物理上。实测渲染管线开销差异显著:同机同画质档位(Epic 720p)下,UE4 同步模式 97.6 FPS(4.9 倍实时),UE5 仅 42.3 FPS(2.1 倍实时)——UE5 的 Lumen 全局光照与 Nanite 几何管线是实打实的更重渲染。这个 FPS 差距本身就被用作对比实验的基线事实。
“一换”换掉的其实不止渲染:物理引擎从 PhysX 换成 Chaos,地图也是整体重制。三者捆绑交付,单变量控制在工程上只能做到”渲染/物理/地图”这一捆与”模型/路线/评分”的分离。更细的归因要靠额外的统计检验(见下半集对 KID 与 ΔDS 相关性的检验),而不是实验设计本身。
十条对齐路线从二十条全量集里分层抽样(stratified sampling)收缩而来,直行、左转、右转场景组都保留覆盖,避免子集偏向某一类驾驶行为。代价是路线级样本从每模型 60 条降到 30 条,最小可检测效应(MDE)随之变弱约 倍——这是用统计检验力换工期的一次明确权衡,已在 CP3/CP5 报告中声明。
每条路线跑四个批次:
每模型每侧入账 个路线级样本,两侧完全同套。数据落盘在 EXP-T3.0(UE4 基线)、EXP-T3.3(SimLingo UE5)、EXP-T3.4(AutoMoT UE5)、EXP-T3.5(汇总)等目录,每个数字可按目录复算。
闭环评测不是确定性测量:即使同种子、同权重,车辆与背景交通的微小交互差异会被闭环动力学放大,同一条路线的 DS 可能大幅漂移。s0r 与 s0 逐路线做差,得到噪声标定
为路线数。实测 SimLingo UE4 侧噪声 12.91、UE5 侧 20.74,而 AutoMoT UE5 侧为 0.00(逐路线完全一致)。这个数后面直接决定”差异算不算数”:观测提升必须显著大于噪声带才有意义。
逐种子可复现的前提是仿真器跑在同步模式(synchronous mode):客户端每发一次 tick,世界才推进一步,传感器按固定时序出数。若用异步模式,帧率波动会直接改变决策时序,同种子重跑也无法对齐。CARLA 服务端在客户端断开时可能回滚同步设置,因此执行器在每条路线开始前都要重新 apply 一次同步参数——这是 socket 评测架构修坑史里的第 3 号坑。
闭环评测最隐蔽的事故不是跑崩,而是跑出一个不是模型跑出来的分数:agent 进程没加载模型、被旁路成 autopilot、或评分链张冠李戴。这类事故的特征是分数异常漂亮。因此看到满分的第一反应必须是怀疑链路,而不是庆祝。
第一道筛子是墙钟/仿真时间比
是真实流逝的墙钟时间, 是仿真内时间。比值刻画”每仿真一秒要花多少真实算力”,它对”车里到底有没有模型在推理”极其敏感:
| 驾驶员 | 实测 | 含义 |
|---|---|---|
| TrafficManager autopilot | 规则驱动,比实时还快 | |
| SimLingo(VLM 逐帧生成) | 每帧约 0.7–1 s 推理 | |
| AutoMoT(5.6B 双专家) | – | 符合大模型推理开销 |
若满分批次跑出 ,基本可判定模型被旁路;落在模型推理的预期区间,才说明车是被模型一帧一帧开起来的。AutoMoT 的满分批次 全部落在 1.4–5.8 区间,与推理开销吻合。
这条验证来自真实教训:T3.3 链路调试期间,曾被 autopilot 假成功骗过一轮——链路看着在跑、分数也在出,实际开车的不是模型。自此”每条链路都要做真伪验证”被写成规矩。
落在预期区间是必要不充分证据:它证明有重计算在逐帧发生,不证明计算结果就是最终动作。因此它只是三重验证的第一重,还要叠加同种子重跑(排除运气)与官方管线基线对照(排除评分口径错误)。
满分还有一种平凡解释:闭环评测本身有随机性,也许只是碰巧这一批全过了。排除法是把 s0 批在 UE5 上原样重跑(s0r 批):同种子、同权重、同路线,若结果是随机碰巧,重跑大概率会掉几条。
实测 AutoMoT 的 s0r 与 s0 逐路线完全一致,重跑噪声
零噪声意味着结果不依赖随机实现,满分是稳定性质而非抽样运气。
对照之下,SimLingo 的重跑噪声 UE4 侧 12.91、UE5 侧 20.74——同一套评测管线,噪声量级由模型决定。这支持一个方法论结论:闭环评测的噪声主要不是仿真器抖动,而是模型行为的混沌度。能力越强的模型行为越确定,其评测噪声越低;AutoMoT 的零噪声与它的满分是同一种”行为稳定”的两面。
zero-shot 对比是 UE5 分数相对 UE4 基线的差值,基线错了,差值全错。第三重验证是 UE4 侧全程走官方 leaderboard 管线,与 CP1 阶段的复现口径一致——即用社区公认实现再跑一遍,而不是用自建执行器给自己定基线。这样 UE4 侧 67.10 的可信度不依赖本项目自建的任何代码。
| 验证 | 排除的事故 |
|---|---|
| 墙钟/仿真时间比 | 模型被旁路、根本没在推理 |
| 同种子重跑 | 随机性碰巧凑出好结果 |
| 官方管线基线 | 基线口径错误导致差值失真 |
三者正交,全部通过才进入结果讨论。面对反常漂亮的数据,正确顺序永远是:先排除自己出错,再谈结论。
AutoMoT 从 UE4 基线 67.10 到 UE5 满分 100.00,提升 32.90。其 UE4 侧失败模式高度集中:五条失败路线里四条是 TickRuntime 超时(想走走不完),一条偏航(10008);成功的五条全部在 70 分以上。即 UE4 侧的问题不是”看不见”,而是”磨时间”。
三个解释同向叠加,与观测完全相容——这正是问题所在:数据无法区分它们。
UE4→UE5 是复合差异:渲染管线(Lumen/Nanite)、物理引擎(PhysX→Chaos)、地图重制三者捆绑交付,实验上无法单独开关。观测到 只能归到”这一捆”头上,拆不出渲染的份额。这正是下半集结论边界第二条的来历:逐路线 KID 与 ΔDS 的相关性检验(SimLingo 、;AutoMoT 、,均不显著)进一步说明,连”提升大小与渲染域差距大小相关”这条间接证据链也不成立。
当一个结果同时有多个相容解释时,严谨做法是全部列出并声明不可分,而不是挑一个最喜欢的写进结论。这也是 CP5 报告把 zero-shot 提升定性为”存在性案例证据”而非渲染红利的原因。
AutoMoT 的动作分支除相机画面外还吃 LiDAR 点云:点云先被投影成 BEV(鸟瞰图,Bird’s-Eye-View)直方图,再编码为 64 个 BEV token 进网络。LiDAR 是几何传感器——它测的是射线与三维几何的交点距离,读数不随渲染画面变化。换渲染引擎改的是纹理、光照、材质,不改场景几何,因此 UE4→UE5 的渲染差异在 LiDAR 通路上近乎不可见。
设模型输入为 ,渲染变量只作用于 。只要 对决策有实质贡献,渲染扰动对最终行为的影响就被这条几何通路稀释了——观测到的 +32.90 是”渲染+几何混合输入”的结果,不能照搬到纯视觉模型身上。
稀释不等于免疫。UE5 侧对齐参数后实测点云密度约 635 点/帧(25 帧均值),而 0.9.15 文档口径预期约 2800 点/帧(56000 点/秒 ÷ 20 FPS)。两侧 raycast 命中率的差异本身是引擎世代差异的一部分,也进入了模型——AutoMoT 的 UE5 成绩里同时混着”画面变了”和”点云稀了”两个变量。
另外两个实测工程细节:
isfinite 清洗,否则直方图被巨值污染。结论写成:“AutoMoT 的 UE5 提升须附 LiDAR 稀释声明——其动作分支含几何传感器输入,渲染变量的影响被稀释,且点云密度域差(约 635 vs 2800 点/帧)本身进入模型。“纯视觉的 SimLingo 才是对渲染最敏感的探针,它的方向为正比 AutoMoT 的满分更接近”渲染是否伤模型”的核心答案。这条规矩在研究设计阶段(选型时排除含 LiDAR 的主模型)就已定下。
闭环评测的每次测量都带噪声:同种子重跑,DS 也会漂移。因此观测差异 要与分数自身的抖动比较。本实验用同种子重跑批(s0r)标定噪声,再换算成最小可检测效应(MDE, Minimum Detectable Effect)——在给定样本量和检验水准下,能被判定为”非噪声”的最小差异。标准形式为
与 是标准正态分位数( 为显著性水准, 为检验力), 是配对差值噪声, 是配对样本数。实际计算常用 t 分位数替代,本项目按 路线配对口径落盘在 EXP-T3.5。
| 模型 | 观测 | 噪声(UE4/UE5) | MDE | 判定 |
|---|---|---|---|---|
| SimLingo | +6.76 | 12.91 / 20.74 | 20.63 | ,不显著 |
| AutoMoT | +32.90 | 1.90 / 0.00 | 1.89 | ,显著 |
同样是正数,统计学待遇天差地别:AutoMoT 的信号是噪声带的 17 倍,SimLingo 的信号只有噪声带的三分之一。“方向为正”是诚实的最强措辞,“显著”则属于大过噪声的差异。
SimLingo 的重跑噪声由 2/10 条路线的”卡死↔完成”二元翻转主导:路线 10000 重跑差 +64.7,10011 差 −44.3,其余 8 条 。分布是少量巨型翻转加一堆零附近的小扰动,而非对称钟形曲线。这有两个直接后果: