小鹏汽车 智驾 VLA 一面:多模态融合与闭环评测
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 请你先做一个自我介绍,然后讲讲你对 VLA 的理解。
- VLA 和传统端到端智驾有什么区别?核心差异在哪里?
- 你项目里 VLA 的输入有哪些?图像、点云还是语言指令?
- 视觉编码器用的什么?ViT 还是 CNN?为什么?
- 语言指令怎么编码?和视觉特征怎么融合?
- 早融合、中融合、晚融合你选哪个?为什么?
- 如果视觉和语言冲突,模型听谁的?怎么处理?
- 你项目里的动作空间是什么?轨迹还是控制量?
- 输出轨迹的话,怎么保证轨迹平滑?有没有后处理?
- 如果轨迹和障碍物冲突,怎么修正?
- 训练数据怎么构造?多少条?覆盖哪些场景?
- 长尾场景怎么处理?有没有做数据增强?
- 如果某个场景数据很少,你怎么保证模型学到?
- 训练时 loss 怎么设计的?有哪些项?
- 如果 loss 下降但实际效果不好,你怎么排查?
- 你怎么评估 VLA 的效果?开环还是闭环?
- 开环评测和闭环评测有什么区别?哪个更重要?
- 如果让你设计一个闭环评测方案,你会怎么做?
- 仿真里怎么测试?用的什么仿真器?
- Sim2Real 你做过哪些工作?有哪些坑?
- 如果仿真里很好但实车很差,你怎么排查?
- 你怎么做模型压缩?量化还是剪枝?
- 端侧推理延迟多少?用的什么芯片?
- 如果算力不够,你怎么降级?
- 你怎么做可观测性?关键指标有哪些?
- 线上出问题怎么排查?先看什么?
- 你怎么控制成本?训练用了多少卡?多久?
- 你怎么跟进 VLA 领域的最新进展?最近看了什么论文?
- 如果让你从零搭建一个 VLA 团队,你会怎么招人?
- 你觉得 VLA 落地最大的瓶颈是什么?
- 反问:团队现在做的是哪个车型?
- 手撕:实现一个简单的卡尔曼滤波器,要求支持预测和更新两步。
《参考解析》
VLA 与传统端到端智驾的差异。 传统端到端智驾是「感知 → 特征 → 规划/控制」的一条隐式链路,输入是传感器、输出是轨迹或控制量,中间没有显式的语义接口;VLA 在此基础上引入语言模态,把驾驶任务表述成「指令 + 场景」的条件生成问题,例如「在前方路口左转、注意右侧非机动车」。这带来三个实质变化:语义可控性(可以接受自然语言或结构化的高层意图,而不必为每种行为单独设计输出头)、可解释性与可迁移性(同一套视觉-语言表征可以复用到不同车型与不同任务)、以及新的失败模式(语言与视觉冲突、指令歧义、语言先验压过感知证据)。但它并不天然更强:语言模态只在「需要高层意图与常识推理」的场景有增益,而在纯几何的精确定位与避障上,语言表征往往是信息损失。所以一个务实判断是:VLA 更适合做决策与行为层,底层的高精度几何与安全兜底仍由确定性模块承担,而不是用一个模型端到端包办。
多模态编码与融合时机的取舍。 视觉侧现在的主流是 ViT 系(或带层次结构的混合结构):固定分辨率的 patch 化让规模化预训练更有效,且在需要长距离关系(路口整体结构)时比纯 CNN 更好;CNN 的优势在于计算效率与局部归纳偏置,对高分辨率与小目标更友好,所以量产端侧常见「CNN 主干 + 注意力模块」的折中。语言侧一般用现成的文本编码器(或直接复用 LLM 的 tokenizer 与嵌入层),关键是把它投影到与视觉同一维度的空间并控制 token 数量,避免语言 token 挤占视觉 token 的预算。融合时机上:早融合(在编码阶段就把语言 token 与视觉 token 拼在一起做联合注意力)表达能力强、交互充分,但训练成本高且语言可能污染底层视觉特征;晚融合(各自编码后在决策头处拼接或做交叉注意力)实现简单、模态解耦好、易调试,但交互较弱;中融合是最常见的落地选择——视觉主干共享,在若干中间层用交叉注意力引入语言。视觉与语言冲突时,原则是「安全与感知优先」:语言只作为条件而不是硬约束,遇到冲突(指令要求变道但盲区有车)应让确定性安全校验有否决权,同时把冲突事件作为样本回流用于训练,而不是指望模型在推理时自己权衡。
动作空间、轨迹平滑与冲突修正。 动作空间选轨迹还是控制量取决于下游:轨迹(未来若干秒的位姿序列)更容易表达意图、便于做可行性检查与平滑,也便于与规划器对接;控制量(加速度、曲率、方向盘转角)更贴近执行器、误差更小但难以表达多模态意图。现在常见的是「输出多模态轨迹候选 + 打分选择 + 后处理」,后处理包括:运动学可行性检查(曲率、加速度、jerk 是否超限)、平滑(样条/多项式拟合、或在优化里加 jerk 惩罚)、以及与时序上一帧结果的一致性约束(避免帧间抖动)。轨迹与障碍物冲突时的修正要有明确的优先级:先用安全层(基于预测的时空走廊或占用栅格的确定性检查)判定候选是否可行,不可行的候选直接剔除而不是靠模型重新生成;若所有候选都不可行,则降级到保守行为(减速、停车、请求接管),并把这一场景记录下来。这里要强调「模型负责提候选、确定性模块负责否决」这条边界,它是安全论证上最容易说清的分工。
数据构造、长尾与 loss 设计。 数据要按「真实路测 + 影子模式回捞 + 仿真生成 + 公开数据集」四个来源混合,每一类的价值不同:真实数据分布真实但长尾稀疏,影子模式能定向回捞特定场景但需要触发条件设计,仿真能批量造长尾但存在 Sim2Real gap,公开数据用于预训练与表征学习。长尾的工程解法不是一味加数据,而是把它拆成三类分别处理:低频但关键的场景(如异形车、施工区)靠定向采集与场景重建合成;规则可穷举的靠规则/仿真批量生成;真正难的是「交互类长尾」(路口博弈、加塞),这类要靠闭环仿真与对抗式生成。少样本场景保证学到的手段:场景级采样权重(重采样稀有场景)、课程学习、以及把任务分解成可复用的子技能(感知共享、决策多个头)。loss 设计通常包含轨迹回归项(或分布建模的 NLL/扩散损失)、分类项(意图/行为分类)、辅助项(占用预测、深度、检测)以及正则(平滑、时序一致性);权重用不确定性加权或按梯度量级平衡。loss 下降但实车效果差,最常见的三类原因是:指标与真实目标错位(评测的是开环 L2 而不是闭环表现)、数据泄漏或分布偏差(验证集与训练集同源)、以及后处理/部署环节的误差(量化、坐标系、时延),排查要按这三条逐一排除而不是先怀疑模型容量。
开环与闭环评测,以及闭环方案怎么设计。 开环评测是把记录的传感器数据喂给模型、用与人类轨迹的偏差(L2、碰撞率)打分,优点是便宜、可复现、可比性强;缺点是它惩罚了「合理的多模态选择」——模型选了一条安全但不是人类走的路也会被算成大偏差,而且开环里模型的动作不会改变未来输入,无法暴露误差累积与交互失效。闭环评测让模型的动作影响下一时刻的场景(仿真器或真实路测),能真实反映「会不会撞、能不能到达」,因此更能代表上线表现,但成本高、方差大、可复现性差。落地的组合一般是「闭环为主、开环为辅」:用开环做大范围回归筛查(快、便宜),用闭环做准入与安全验证(慢、贵、关键)。设计闭环评测方案要回答四个问题:场景库如何构建(按 ODD 分层、包含关键长尾与交互场景,每条场景固定初始条件以便复现)、如何判定成功(到达、无碰撞、无违规、舒适度指标、以及是否需要接管)、如何度量(多次运行的成功率分布而不是单次结果,并区分「策略问题」与「场景本身无解」)、以及如何对抗过拟合(保留未公开的场景集、定期换场景、把仿真参数随机化)。仿真器选择上,端到端训练常用可微或高吞吐的(如 Isaac/CARLA 系),交互与规则验证用交通流仿真,涉及感知真实性时用场景重建(神经渲染)来补真实感。
Sim2Real 与实车差的排查。 仿真好、实车差,按「数据 → 模型 → 部署 → 场景」四条线排查。数据线:仿真与实车的传感器特性差异(相机内参、曝光、镜头畸变、噪声、点云稀疏度)、时间同步与时延、以及标定误差。模型线:训练数据里仿真占比过高导致模型依赖渲染特征、或使用了实车不存在的输入(如完美真值)。部署线:量化导致的数值偏差、坐标系与单位不一致、推理频率与控制周期的匹配、以及流水线里的额外滤波引入的相位延迟。场景线:仿真里的交通参与者行为过于理想(不会加塞、不会违规),模型学到了「别人会让我」的隐含假设。缓解的核心手段是域随机化(视觉与动力学)加实车微调(少量真实数据做最后一公里适配),以及把系统时延显式建模进训练与仿真。要讲清一个判断:Sim2Real 的瓶颈很少是渲染真实度,更多是「动力学与交互行为的真实性」和「系统时延」,前者决定控制是否可用,后者决定闭环是否稳定。
模型压缩、端侧部署与降级策略。 VLA 模型上车的现实约束是算力、功耗与延迟。压缩顺序建议:先做结构性优化(减少输入分辨率与 token 数、共享视觉主干、蒸馏到更小的学生模型),再做量化(INT8 是量产主流,PTQ 优先、对敏感层保留 FP16,注意 LayerNorm/注意力这类对量化敏感的部分),剪枝更多用在宽度冗余明显的结构上,稀疏化收益取决于推理后端是否支持。量化前后必须逐层对比误差并做端到端回归,避免「精度看着没掉但某个行为崩了」。芯片选择上常见的是车端大算力 SoC(Orin/自研 NPU 等),要关注的不只是峰值 TOPS,还有内存带宽与算子支持度——很多情况下瓶颈是带宽而不是算力。算力不够时的降级要有明确分级:降分辨率/降帧率(影响感知距离)、降轨迹候选数(影响多模态覆盖)、降模型规模(走小模型或缓存策略)、最终降级为规则化的保守驾驶并提示接管。每一级降级都要能被观测到并统计触发率,否则它会长期静默运行,把「偶尔保守」变成常态。
可观测性、成本与落地瓶颈,以及手撕卡尔曼滤波。 线上可观测性要能回答「模型看到了什么、决定了什么、执行了吗」:记录感知摘要(目标数、关键目标状态)、候选轨迹与选择理由(分数、被否决原因)、下游执行量与偏差、时延分解(采集、推理、后处理、下发)、以及降级与接管事件;指标看端到端成功率、接管率(分场景)、急刹/急转等舒适度指标、推理 P99 与丢帧率。排查顺序是「影响面 → 是否集中在某版本/某车型/某 ODD → 时延与降级标记 → 再看模型输入输出」。训练成本控制要点是「先小规模验证再放大」:用采样后的数据跑通链路、固定随机种子与评测集做可比实验、按需租卡、把无效的消融实验砍掉;报账时说清卡数、训练时长、数据规模与达到的指标,而不是只报总时长。VLA 落地最大的瓶颈,我的判断是「评测与安全论证」而不是模型本身:开环指标无法证明闭环安全,闭环评测成本高且难复现,长尾交互的覆盖又很难穷尽,所以真正卡住量产的是「如何证明它够安全」这一整套验证体系。手撕卡尔曼滤波要写清两步:预测步 x = Fx + Bu、P = FPFᵀ + Q;更新步先算增益 K = PHᵀ(HPHᵀ + R)⁻¹,再更新状态 x = x + K(z - Hx) 与协方差 P = (I - KH)P,实现上建议用 Joseph 形式更新协方差、对 P 做对称化处理,并说明 Q/R 的物理含义(过程噪声与观测噪声的协方差,决定信任模型还是信任观测)。常见追问是「为什么用卡尔曼而不是最小二乘」「Q 和 R 怎么定」,答法分别是「卡尔曼利用了过程模型与历史信息做递推估计、且给出不确定性」「按传感器标称噪声初值再用一致性检验(NIS/新息)调」。