面灵AI→

小鹏汽车 智驾 VLA 一面:多模态融合与闭环评测

轮次
一面
时间
2026-10
来源
牛客网

《面试题目》

  1. 请你先做一个自我介绍,然后讲讲你对 VLA 的理解。
  2. VLA 和传统端到端智驾有什么区别?核心差异在哪里?
  3. 你项目里 VLA 的输入有哪些?图像、点云还是语言指令?
  4. 视觉编码器用的什么?ViT 还是 CNN?为什么?
  5. 语言指令怎么编码?和视觉特征怎么融合?
  6. 早融合、中融合、晚融合你选哪个?为什么?
  7. 如果视觉和语言冲突,模型听谁的?怎么处理?
  8. 你项目里的动作空间是什么?轨迹还是控制量?
  9. 输出轨迹的话,怎么保证轨迹平滑?有没有后处理?
  10. 如果轨迹和障碍物冲突,怎么修正?
  11. 训练数据怎么构造?多少条?覆盖哪些场景?
  12. 长尾场景怎么处理?有没有做数据增强?
  13. 如果某个场景数据很少,你怎么保证模型学到?
  14. 训练时 loss 怎么设计的?有哪些项?
  15. 如果 loss 下降但实际效果不好,你怎么排查?
  16. 你怎么评估 VLA 的效果?开环还是闭环?
  17. 开环评测和闭环评测有什么区别?哪个更重要?
  18. 如果让你设计一个闭环评测方案,你会怎么做?
  19. 仿真里怎么测试?用的什么仿真器?
  20. Sim2Real 你做过哪些工作?有哪些坑?
  21. 如果仿真里很好但实车很差,你怎么排查?
  22. 你怎么做模型压缩?量化还是剪枝?
  23. 端侧推理延迟多少?用的什么芯片?
  24. 如果算力不够,你怎么降级?
  25. 你怎么做可观测性?关键指标有哪些?
  26. 线上出问题怎么排查?先看什么?
  27. 你怎么控制成本?训练用了多少卡?多久?
  28. 你怎么跟进 VLA 领域的最新进展?最近看了什么论文?
  29. 如果让你从零搭建一个 VLA 团队,你会怎么招人?
  30. 你觉得 VLA 落地最大的瓶颈是什么?
  31. 反问:团队现在做的是哪个车型?
  32. 手撕:实现一个简单的卡尔曼滤波器,要求支持预测和更新两步。

《参考解析》

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/新息)调」。