【想法】LLM模型存在首字延迟,控制精度,缺乏物理直觉导致不能做快Action。人类开车,大多数是不需要思维链,是条件反射
文章目录1、LLM 首字延迟1.1. 未来展望超越 Transformer2、每轮对话生成新token需要和历史全部token进行注意力计算2.1 第一阶段处理你的输入Parallel / 并行2.2 第二阶段生成回复Sequential / 串行总结对比3、第二轮对话的过程3.1 第一步拼接序列Concatenation3.2 第二步生成 Q, K, V3.3 第三步执行自注意力计算4、第二轮对话的延迟4.1. ITL 的全称是什么4.2 ITL 不仅仅是“等待”它包含了完整的计算4.2.1 第一步新 Token 的嵌入 (Embedding)4.2.2 第二步自注意力计算 (Self-Attention) —— **这是大头**4.2.3 第三步前馈神经网络 (Feed-Forward Network / MLP)4.2.4 第四步输出层 (LM Head) 采样 (Sampling)5、VLA 中LLM模型的两种模式输出token、输出隐藏状态向量5.1 模式一离散 Token 化动作Discretized Actions—— 类似“说话”5.2 模式二连续动作头Continuous Action Head—— “回归”任务5.3 举个具体例子以 Google RT-2 为例5.4 总结6、VLA 直接控制自动驾驶车辆太慢6.1. 控制精度的差异离散 vs 连续6.2. 安全性与可解释性7、其实人类开车不需要思维链因为大多数是条件反射。那么自动驾驶中 VLA 有戏吗7.1. 人类驾驶主要是“模式匹配”而非“逻辑推导”7.2. 为什么传统自动驾驶架构像“人脑的分裂”7.3. 特斯拉的“端到端”End-to-End回归条件反射7.4. 那 VLA 在自动驾驶中还有意义吗7.4.1. VLA 作为“大脑”慢速、高层7.4.2. 传统/专用模块作为“小脑”快速、低层7.5 总结1、LLM 首字延迟我们需要先定义什么是“实时”首字延迟 (TTFT, Time To First Token)从用户输入完毕到模型吐出第一个字的时间。目前目标是 100ms - 500ms接近人类反应速度。生成速度 (Tokens Per Second, TPS)模型每秒生成的字数。目前目标是 20-100 tokens/sec接近流畅对话速度。1.1. 未来展望超越 Transformer目前 LLM 的自注意力机制复杂度是O ( N 2 ) O(N^2)O(N2)在处理超长序列时依然吃力。为了实现更极致的实时业界正在探索新架构Mamba / SSMs (State Space Models)复杂度为O ( N ) O(N)O(N)理论上是线性的。推理速度比 Transformer 快得多适合长上下文实时处理。现状正在被整合进混合架构中如 Jamba 模型。MoE (Mixture of Experts)每次只激活部分参数。在保持大模型能力的同时减少推理时的计算量提高速度。2、每轮对话生成新token需要和历史全部token进行注意力计算在你输入“提示词”Prompt的阶段文字是“一次性”进入模型进行计算的。但是为了生成回复模型会分两步走第一步处理你的输入批量/并行第二步生成回答逐个/串行。让我们详细拆解这个过程2.1 第一阶段处理你的输入Parallel / 并行当你发送“你好帮我写代码”这句话时模型并不是一个字一个字地读像人读书那样从左到右逐字扫视而是同时处理这10个 token。Embedding10个 token 同时被转换为10个向量。Self-Attention这10个向量同时进入 Transformer 层。在第1层每个位置都会与其他所有位置包括它自己计算注意力。例如理解第3个字“帮”时模型会同时参考第1个字“你”、第2个字“好”、第4个字“我”等所有其他字的信息。结果经过多层 Transformer 后你输入的这10个字变成了10个新的、富含上下文信息的向量。这些向量被存入KV Cache。为什么可以并行因为 Self-Attention 允许每个位置“看到”整个序列。你不需要先知道第1个字才能理解第2个字因为数学上可以同时计算所有关系。这就是为什么 LLM 推理提示词Prompt Processing速度很快。2.2 第二阶段生成回复Sequential / 串行一旦你的输入处理完毕模型开始生成回答比如它想回复“没问题”。这时候逻辑就变了生成第1个字“没”模型使用最后一个位置即“码”字的上下文向量。它计算这个向量与 KV Cache 中所有历史 K/V 的注意力。输出概率最高的 token“没”。关键点现在“没”成为了序列的一部分。生成第2个字“问”模型现在有一个更长的序列“你好帮我写代码没”。它只针对新加的这个“没”字计算 Q/K/V。它将这个新的 Q 与旧的 KV Cache包含“你好…”和现在的“没”进行注意力计算。输出下一个 token“问”。循环重复上述步骤直到生成结束符EOS。总结对比阶段输入方式注意力计算方式速度原因处理提示词 (Prompt)一次性全部输入并行计算所有10个字同时互相计算注意力快因为不需要依赖生成的结果可以直接利用 GPU 并行计算能力。生成回复 (Decoding)逐个生成串行计算每次只生成1个字并更新 KV Cache慢因为生成第 N 个字必须依赖前 N-1 个字的结果无法并行。你的输入10个字一次性进入并行计算自注意力。模型的回复一个字一个字生成串行计算自注意力。3、第二轮对话的过程第二轮对话的实际执行流程假设第一轮你说了“你好”模型回了“你好有什么可以帮你”现在第二轮你问“写代码。”模型内部发生的过程如下3.1 第一步拼接序列Concatenation模型并不区分“第一轮”和“第二轮”。它构建了一个新的输入序列[你好] [有什么] [可以] [帮你] [写] [代码]。假设标点也被作为 Token 处理3.2 第二步生成 Q, K, V对于新输入的 “写” 和 “代码”模型通过线性层生成它们的Q_new,K_new,V_new。关键点对于历史 token“你好”…“帮你”模型不使用新的 Q/K/V而是直接使用第一轮计算并缓存好的 KV Cache。3.3 第三步执行自注意力计算这是最关键的一步。模型执行自注意力机制但此时的“序列”变长了。查询Query新 token “写” 的 Q (Q_new_1)。键Key模型将Q_new_1与整个序列的 K 进行比对。整个序列的 K 包括历史 token 的 K从KV Cache中读取。新 token “代码” 的 K刚计算出来。值Value模型将Q_new_1与整个序列的 V 进行加权求和。整个序列的 V 包括历史 token 的 V从KV Cache中读取。新 token “代码” 的 V刚计算出来。公式表达Attention ( Q n e w , K h i s t o r y n e w , V h i s t o r y n e w ) \text{Attention}(Q_{new}, K_{historynew}, V_{historynew})Attention(Qnew,Khistorynew,Vhistorynew)因为Q QQ和K , V K, VK,V都来自同一个序列尽管K , V K, VK,V的一部分来自缓存所以这仍然是自注意力。4、第二轮对话的延迟4.1. ITL 的全称是什么ITL的全称是Inter-Token Latency。中文常称为词元间延迟或生成延迟。别名它也被称为TPOT(Time Per Output Token每个输出词元的时间)。定义从模型生成第N NN个 token 结束到生成第N 1 N1N1个 token 结束 所花费的时间间隔。通俗理解就是“字与字之间”跳出来的时间间隔。比如你看到模型每秒钟出 50 个字那么 ITL 大约是1000 m s / 50 20 m s 1000ms / 50 20ms1000ms/5020ms。4.2 ITL 不仅仅是“等待”它包含了完整的计算在第二轮或后续步骤中生成第 51 个 token 的过程并不是“凭空出现”的它必须重新跑一遍完整的 Transformer 前向传播Forward Pass只不过这次不需要重新计算历史部分的 Embedding 和 KV Cache。具体来说生成第 51 个 token 时GPU 做的动作如下4.2.1 第一步新 Token 的嵌入 (Embedding)动作将你输入的第 51 个 token假设是“你”转换成向量。耗时极短因为只有一个 token。4.2.2 第二步自注意力计算 (Self-Attention) ——这是大头动作生成“你”的 Q, K, V。检索 KV CacheGPU 从显存中读取之前 1050 个 token 的 K 和 V。计算 Attention将“你”的 Q 与所有 1050 个 K进行点积运算。加权求和根据结果混合所有 1050 个 V。耗时这是 ITL 中耗时最长的部分。虽然不需要重新计算历史的 Q但注意力矩阵的计算量依然很大取决于上下文长度。注意如果使用了滑动窗口这里可能只计算最近的一部分耗时会短一些如果是全注意力这里非常重。4.2.3 第三步前馈神经网络 (Feed-Forward Network / MLP)动作将 Attention 的输出向量通过两层全连接网络提取高级语义特征。耗时固定取决于模型层数和参数量。4.2.4 第四步输出层 (LM Head) 采样 (Sampling)动作将最终向量映射到词表大小比如 32,000 个可能的词。计算每个词的概率。根据概率采样出一个 token比如“好”。耗时通常很快但涉及 softmax 和采样算法。无论是一开始还是最后只要生成一个新 token模型就必须基于当前的 Q和全局的 KV重新算一次注意力没有任何捷径可以跳过这一步除非使用特殊的非自回归模型但那不是当前的 LLM 主流。5、VLA 中LLM模型的两种模式输出token、输出隐藏状态向量VLA 的输出分为两种主流模式来理解5.1 模式一离散 Token 化动作Discretized Actions—— 类似“说话”这是目前最主流、也是 Google RT-2、OpenVLA 等模型采用的方式。原理模型仍然是一个自回归的 LLM。它输出的依然是一串 Token ID整数。区别在于这串 Token ID 不再代表“单词”如 “apple”而是代表预先定义好的动作代码。流程用户说“拿起杯子”。LLM 内部思维[Thought]-[Act: 0x12]-[Act: 0x34]…输出Token IDs[0x12, 0x34, 0x56]。解码后端有一个码本Codebook将0x12映射为具体的物理参数比如x0.5, y0.2, z0.1坐标。为什么这样设计可以利用 LLM 强大的逻辑推理能力Chain-of-Thought先让模型“想”一下输出思维链 Token再输出动作 Token。动作 Token 数量固定且有限便于控制。5.2 模式二连续动作头Continuous Action Head—— “回归”任务这种方式更像传统的控制算法但使用了 LLM 作为特征提取器。原理LLM 处理完视觉和文本后产生一个最后的隐藏状态向量Hidden State Vector。这个向量不再送入“词表”去预测下一个字而是送入一个额外的线性层Linear Layer / MLP专门用于回归连续数值。流程用户说“拿起杯子”。LLM 最后一层输出一个向量H l a s t H_{last}Hlast。Action HeadA c t i o n L i n e a r ( H l a s t ) Action Linear(H_{last})ActionLinear(Hlast)。输出直接输出一组连续浮点数如[0.5, 0.2, 0.1, 0.0, 0.0, 0.0, 0.5]7维机械臂控制指令。特点速度更快因为不需要 Token 解码。但失去了 LLM 的“思维链”能力难以解释“为什么选这个动作”。LLM 依然需要生成 Token 序列来“思考”和“规划”。即使在模式二连续动作头中LLM 的前几层依然在处理文本和视觉 Token并进行自注意力计算。虽然最终没有“说话”但中间过程依然是基于 Token 的表示Representation。而在更常见的模式一离散 Token中动作本身就是由 Token 组成的。5.3 举个具体例子以 Google RT-2 为例当用户输入图像和文本“把苹果给爸爸”。LLM 的输出流Token 1:thought: I see an apple.思维链自然语言 TokenToken 2:action:动作标识符Token 3:grasp动作代码 Token映射到“抓取”参数Token 4:move_to: parent移动目标 Token映射到坐标后端解析系统检测到action: grasp查询码本得到机械臂关节角度变化。系统检测到move_to: parent查询码本得到父位置的坐标。5.4 总结特性传统 LLMVLA (模式一: 离散)VLA (模式二: 连续)输出物自然语言 Text动作代码 Token IDs连续数值 (Floats)是否需要 Token是是(动作即 Token)中间过程是 Token最终不是主要用途交流、推理推理 动作规划直接控制执行是否输出 Action否是(通过 Token 映射)是(通过线性层映射)结论VLA 中的 LLM依然依赖 Token 机制但它输出的 Token含义变了。它不再是为了“聊天”而是为了编码动作。你可以把这看作是将“物理世界的动作”离散化成了“数字世界的 Token”从而让大模型能用它最擅长的方式处理 Token 序列来指挥机器人。6、VLA 直接控制自动驾驶车辆太慢目前主流自动驾驶如 Waymo、Tesla FSD依然主要依赖**“感知-规划-控制”模块化架构**而不是端到端 VLA 的直接原因。Action 反应太快了LLM 太慢了。6.1. 控制精度的差异离散 vs 连续VLA 的输出是“离散”或“粗粒度”的LLM 擅长处理语义“转弯”、“停车”。但自动驾驶需要极其精确的物理控制转向角是 15.32 度还是 15.33 度油门力度是 45% 还是 46%LLM 很难直接输出这种高精度的连续物理控制信号因为它本质上是概率模型存在“幻觉”和抖动。传统架构的优势感知模块CNN/Transformer专门负责从像素中提取车道线、障碍物坐标精度极高。规划模块优化算法/学习算法负责生成平滑的轨迹曲线。控制模块PID/MPC负责以100Hz的频率微调电机确保车沿着轨迹走。这种“各司其职”的架构在速度和精度上都远超通用的 VLA。6.2. 安全性与可解释性VLA 的“黑盒”风险LLM 可能会因为prompt的一个微小变化或者图像中的噪声给出完全错误的动作指令比如把“停车”生成成“加速”。在机器人抓杯子时错了最多摔个杯子在自动驾驶中错了就是生死。缺乏底层物理直觉通用 LLM 并没有经过严格的物理动力学训练。它可能知道“避开障碍物”但不知道“以当前速度和摩擦力转这个角度会不会甩尾”。7、其实人类开车不需要思维链因为大多数是条件反射。那么自动驾驶中 VLA 有戏吗大模型LLM/VLA擅长“慢思考”系统2逻辑推理而驾驶本质上是一个“快思考”系统1条件反射的过程。驾驶的核心是条件反射而不是逻辑推理。7.1. 人类驾驶主要是“模式匹配”而非“逻辑推导”正如你所说绝大多数驾驶行为变道、跟车、过红绿灯并不经过大脑皮层的复杂逻辑计算而是基于小脑和基底核形成的肌肉记忆和条件反射。直觉驾驶Intuitive Driving当你在高速公路上看到前车刹车灯亮起你的脚会本能地松开油门并轻点刹车。这个过程几乎不需要语言介入比如你心里不会想“根据牛顿第二定律前车减速意味着我需要施加反向力…”。这是一种感知-运动闭环Perception-Action Loop速度极快毫秒级且高度自动化。什么时候需要“思维链”只有在复杂、罕见、需要推理的场景下人类才会启动“系统2”“这个路口没有红绿灯但我看到那边有车冲出来我是不是该让行”“前面修路导流线有点乱我该怎么走”这种情况下你会犹豫、思考甚至说出口。但这只占驾驶时间的5% - 10%。7.2. 为什么传统自动驾驶架构像“人脑的分裂”为了模拟人类驾驶早期的自动驾驶系统如 Waymo, Mobileye采用了模块化架构这其实是在刻意分离“条件反射”和“逻辑思考”因为当时的算力无法同时处理两者。感知模块CNN负责“看”。这对应人类的眼睛和视觉皮层条件反射的基础。规划模块Rule-based / Optimization负责“想”。这对应人类的前额叶皮层逻辑思考。它通过硬编码的规则如如果距离 2米则刹车来模拟条件反射。通过优化算法计算轨迹。控制模块PID/MPC负责“做”。这对应人类的小脑精细运动控制。问题在于这种架构是“拼接”出来的。感知不一定懂规划规划不一定懂控制。它没有形成像人类那样统一的、端到端的神经映射。7.3. 特斯拉的“端到端”End-to-End回归条件反射提到的“不需要思维链”正是特斯拉 FSD V12 版本所追求的目标——端到端神经网络End-to-End Neural Network。核心理念去掉中间的“代码逻辑”和“显式规划模块”。输入摄像头像素。输出转向角、油门、刹车。中间层一个巨大的 Transformer 或 Vision Transformer通过海量人类驾驶视频数据进行训练。为什么这样做因为人类驾驶专家无法穷尽所有情况下的规则Corner Cases 无穷无尽。但人类可以通过“看”来学会驾驶。通过模仿人类驾驶数据让神经网络直接学习从像素到动作的概率映射。这本质上就是让 AI 拥有**“驾驶直觉”而不是“驾驶逻辑”**。结果FSD V12 的表现更像“老司机”动作流畅、自然因为它在模仿人类的反射性操作而不是在“解题”。7.4. 那 VLA 在自动驾驶中还有意义吗既然驾驶主要是条件反射那为什么还要研究 VLA视觉-语言-动作因为“纯条件反射”有致命弱点泛化能力差。纯视觉-动作模型如 FSD V12的局限它依赖于大量的训练数据。如果它从未见过“穿着恐龙玩偶服的人在指挥交通”它可能会死机或做出奇怪的反应。它缺乏常识推理。它知道怎么开车但不知道“为什么”这里有个路障可能是事故可能是施工需要绕行。VLA 的作用注入“常识”引入语言模块LLM 部分不是为了做每一步的转向计算而是为了提供高层语义理解。场景举例你输入指令“去那个正在办婚礼的酒店小心别撞到人。”纯视觉模型只能看到红色的装饰物不知道那是婚礼可能无法理解“小心”的权重。VLA 模型通过语言理解“婚礼”、“人”、“小心”将这些语义信息转化为对底层控制信号的权重调整。对于日常驾驶我们确实不需要思维链。理想的自动驾驶应该是一个极简的、低延迟的、端到端的“反射弧”越像人越好越少“思考”越好因为思考意味着延迟和不确定性。对于极端场景当条件反射失效时我们才需要引入“思维链”VLA 的语言推理部分来处理长尾问题Long-tail Cases。未来的最佳形态可能是一个混合架构底层有一个极速的、类似“小脑”的端到端神经网络处理 99% 的条件反射驾驶动作上层挂载一个轻量级的 VLA/LLM 模块专门处理那 1% 的复杂语义和推理场景。这就是为什么 Tesla 在 FSD 上去掉了规则代码回归反射但同时也开始尝试加入一些高级指令理解引入语义。快是本能慢是智慧自动驾驶需要两者结合。7.4.1. VLA 作为“大脑”慢速、高层任务理解复杂的场景意图。输入鸟瞰图BEV 高精地图 用户指令“去那个有红旗的商场”。输出高层指令例如SetDestination: Mall_A,LaneChange: Left,Yield: Yes。频率1Hz - 5Hz每秒 1-5 次决策。优势利用了 LLM 的世界知识和推理能力处理长尾场景Corner Cases。7.4.2. 传统/专用模块作为“小脑”快速、低层任务实时避障、车道保持、精确控制。输入VLA 的高层指令 实时传感器数据雷达、摄像头。输出具体的转向角、加速度、刹车力度。频率10Hz - 100Hz。优势速度快、精度高、确定性性强。7.5 总结直接实现让 VLA 模型直接输出转向/油门指令在目前的算力和模型架构下对于高速自动驾驶是不可行的。延迟太高精度不够安全性无法保证。可行路径VLA 更可能作为自动驾驶系统的**“高层决策辅助”负责处理复杂的语义理解和长尾场景规划而将实时控制**交给专门优化的、轻量级的底层控制模型。未来的趋势可能是“LLM 负责想Planning专用模型负责做Control”。