Skip to content

A1: A Fully Transparent Open-Source, Adaptive and Efficient Truncated Vision-Language-Action Model (Arxiv 2026)

Section titled “A1: A Fully Transparent Open-Source, Adaptive and Efficient Truncated Vision-Language-Action Model (Arxiv 2026)”

Paper


VLA 的部署成本主要来自两部分:

  • VLM Backbone 成本高:主干通常是数十亿参数级别,视觉编码器 + LLM 多层前向推理会带来很高延迟。
  • Action Head 成本高:如果动作头是 diffusion / flow matching,生成一个 action chunk 还需要 10-20 次迭代去噪/积分。

已有的 Efficient VLA 工作大多只优化 VLM 侧,比如量化、剪枝、缓存、early-exit。问题是 VLM 变快以后,迭代式 action head 会变成新的瓶颈;如果 early-exit 在每个候选层都重新跑完整 denoising,甚至可能出现 backbone 省下来的时间被 action head 吃掉。

所以 A1 的核心问题是:能不能根据动作是否已经稳定来提前终止 VLM,同时让 Flow Matching 动作头也跟着低成本运行?


alt text

SmolVLA 没有早停, DeeR-VLA 早停需要每层跑一遍 Action Head ,而 A1 可以通过上层信息热启动。

A1 的贡献:

  1. 全链路自适应推理:不是只加速 VLM,而是同时加速 VLM backbone 和 action head。
  2. Action-Consistency Early Exit:在中间 VLM layer 也接入共享 action head,比较相邻层输出的 action chunk 是否足够一致;如果动作已经稳定,就提前退出。
  3. Inter-Layer Truncated Flow Matching:每个候选层只跑少量 denoising steps(例如 2 步),并把上一层生成的动作作为下一层 denoising 的初始值,而不是每层都从随机噪声开始。
  • Early-exit 阈值依赖离线校准:需要先在训练集/校准集上跑一遍,统计 layer-wise action discrepancy,再根据目标 exit distribution 设阈值。如果部署域和校准域偏差大,动作稳定性阈值可能不可靠。
  • 同步执行仍然有延迟:论文已经显著降低推理耗时,但附录也提到推理-执行同步、云端服务器和机械臂之间的网络延迟仍会导致 lag。也就是说,A1 解决的是模型推理成本,还没有完整解决异步控制问题。
  • 仍然是 imitation learning 主线:论文提到累积误差会影响操作精度,后续可能需要 RL 或在线反馈机制增强鲁棒性。
  • Early-exit 的“动作一致”不等于“动作正确”:相邻层 action chunk 很接近只能说明模型内部已经收敛到某个动作,不保证这个动作在长程任务或强 OOD 场景下就是对的。

  • 多视角或单视角 RGB 图像。
  • 机器人本体状态,例如 gripper pose、joint angles。
  • 自然语言任务指令。
  • 长度为 HH 的未来动作块 At=(at,…,at+H−1)\mathbf A_t=(a_t,\dots,a_{t+H-1})。
  • 动作头有两种实现:
    • A1-FM:Flow Matching action expert。
    • A1-MLP:MLP action head,用 L1 loss 回归连续动作。

A1 的 VLM backbone 初始化自 Molmo-7B,主要由视觉编码器和 28 层 Qwen2-7B 组成。动作头有两种:

训练时从真实动作 A1\mathbf A_1 和噪声 A0\mathbf A_0 之间采样 flow timestep τ\tau,构造 noisy action:

Aτ=(1−τ)A0+τA1\mathbf A_\tau = (1-\tau)\mathbf A_0 + \tau \mathbf A_1

目标速度场为:

u=A1−A0\mathbf u = \mathbf A_1 - \mathbf A_0

模型学习:

LFM=Eτ,A0,A1[∥vθ(Aτ,τ∣ot,l)−(A1−A0)∥22]\mathcal L_{FM} = \mathbb E_{\tau,\mathbf A_0,\mathbf A_1} \left[ \left\| \mathbf v_\theta(\mathbf A_\tau,\tau \mid o_t,l) - (\mathbf A_1-\mathbf A_0) \right\|_2^2 \right]

推理时从随机噪声出发,用 Euler integration 逐步更新动作:

Aτ+Δτ=Aτ+Δτ⋅vθ(Aτ,τ∣ot,l)\mathbf A_{\tau+\Delta \tau} = \mathbf A_\tau + \Delta \tau \cdot \mathbf v_\theta(\mathbf A_\tau,\tau \mid o_t,l)

论文中 FM action expert 使用约 400M 参数的 Qwen3,通过 KV-conditioned self-attention 接收主 VLM 产生的 prefix context。

MLP action head 在输入 token 中加入 dedicated action query tokens,然后从这些 token 的 hidden states 并行回归连续动作:

LMLP=∥A^−A∥1\mathcal L_{MLP}=\|\hat{\mathbf A}-\mathbf A\|_1

MLP 头的计算开销相比 VLM 很小,因此 early-exit 时在多个 layer 上重复调用问题不大;真正困难的是 FM 头。


为了让中间层也能输出动作,训练时随机采样一个 VLM layer ll,只执行到该层,然后把该层 hidden state 接到共享 action head 上做监督。

更稳定的做法是对所有 layer 的 action prediction 同时监督:

  • 对 MLP head:每个 layer 的 hidden state 都可接动作回归头。
  • 对 FM head:主 LLM 执行到 layer ll,action expert 也执行对应深度,并计算 FM loss。

这样推理时就不必等完整 28 层都跑完,而是可以在中间层检查动作是否已经稳定。

在第 ll 层得到 action chunk A(l)\mathbf A^{(l)} 后,和上一候选层的 action chunk A(l−1)\mathbf A^{(l-1)} 比较:

d(A(l),A(l−1))<δld(\mathbf A^{(l)}, \mathbf A^{(l-1)}) < \delta_l

如果满足阈值 δl\delta_l,就认为动作已经稳定并提前退出。

论文尝试的 discrepancy metric 包括:

  • cosine similarity
  • L2 distance
  • mean absolute deviation

阈值不是手工写死的,而是在训练集上离线校准:

  1. 在训练集上收集每个候选 exit layer 的相邻层 action discrepancy。
  2. 根据目标计算预算生成一个 exit distribution。
  3. 按 quantile 为每个 layer 设阈值,使样本大致按目标比例分配到不同 exit layer。
  4. 最后一层强制 exit,作为 fallback。

论文主要使用 exponential distribution 控制早退倾向。exit criterion 越小,越偏向早层退出,计算量越低,但性能风险更高。

直接把 early-exit 用到 FM action head 会遇到一个问题:

普通 FM 推理只在完整 VLM 输出后跑一次 action head,例如 K=10K=10 个 denoising steps;但 early-exit 需要在多个候选 layer 都生成动作并比较,如果每层都跑 K=10K=10,action head 开销会爆炸。

A1 的做法是:

  1. 每个候选 layer 只跑很少的 denoising steps,例如 K′=2K'=2。
  2. 当前 layer 的输出动作不丢弃,而是作为下一层 denoising 的初始值。
  3. 下一层不再从随机噪声开始,而是从上一层已经 denoise 过的 action chunk 继续 refine。

可以理解为:

A0(l)=AK′(l−1)\mathbf A^{(l)}_0 = \mathbf A^{(l-1)}_{K'}

然后在第 ll 层执行少量 Euler steps:

Ai+1(l)=Ai(l)+Δτ⋅vθ(Ai(l),τi∣h(l))\mathbf A^{(l)}_{i+1} = \mathbf A^{(l)}_i + \Delta \tau \cdot \mathbf v_\theta(\mathbf A^{(l)}_i,\tau_i \mid h^{(l)})

这里 h(l)h^{(l)} 是第 ll 层 VLM hidden state 提供的条件。

直觉上,这把 “跨 layer 的 action prediction” 变成了一个连续 refinement 过程:浅层给出粗动作,深层只需在粗动作上修正,而不是每层都从噪声重新生成。

Streaming Flow Policy 是把动作生成从“轨迹空间去噪”改成“物理时间上的状态流”,目标是让每个时刻都能流式输出可执行动作。

A1 的 Inter-Layer Truncated Flow Matching 仍然是在 action chunk / denoising 语义里工作,目标不是把动作沿物理时间流式化,而是把 VLM layer 维度 也利用起来:

  • 普通 Flow Matching:在单个最终 hidden state 上,从 noise 积分到 action。
  • A1:在多个中间 hidden state 上,以少步 denoising + warm-start 跨层推进。

也就是说,Streaming Flow Policy 优化的是动作执行时间轴,A1 优化的是模型推理深度轴。


A1 使用 robot-trajectory-only 预训练语料,包含:

  • Open-source datasets:DROID、AgiBot、RoboCOIN、RoboMind、GM-100、RoboChallenge。
  • 自采数据:15,951 条真实机器人轨迹,覆盖 ARX、Franka、UR5、AgiBot 等平台。

所有数据转换为统一 episode 格式:

(ot,st,l,at)(o_t, s_t, l, a_t)

其中 oto_t 是视觉观察,sts_t 是本体状态,ll 是语言目标,ata_t 是连续动作。

  1. 大规模预训练:在混合机器人数据上端到端训练,学习通用操作先验。
  2. 下游任务微调:在特定 robot embodiment 或任务数据上微调。
  • 冻结 ViT backbone。
  • VLM 组件使用较小学习率。
  • Action head 使用更大学习率,以便快速适配连续控制。
  • 使用 warmup + cosine annealing。
  • 视觉增强包括 random erasing 和 sharpening。
  • 本体状态使用 state zero-out,提高对部分观测缺失的鲁棒性。
  • 不做跨数据集 state normalization,避免破坏相同 embodiment 下动作空间的物理含义。

Molmo-7B 的计算拆分:

  • CLIP / vision encoder:2013.36 GFLOPs,约 0.167s。
  • 28 层 LLM:9061.01 GFLOPs,约 0.612s。
  • FM action head:每个 denoising step 0.493 GFLOPs,10 steps 为 4.931 GFLOPs,约 0.366s。
  • A1-FM normal inference:约 11.130 TFLOPs。

但 early-exit 下,如果每个候选 layer 都跑 10 steps FM,虽然 FLOPs 不夸张,实际 latency 会明显变高:

  • A1-FMe, K=10K=10:4.443s。
  • A1-FMe, K=2K=2:0.728s。

这说明 FM action head 的迭代次数在 wall-clock 上是关键瓶颈。

LIBERO:

  • A1 平均成功率 96.6%。
  • Object suite 达到 99.8%。

VLABench:

  • A1 平均成功率 53.5%,高于 π0.5\pi_{0.5} 的 49.5%。
  • 论文认为多数失败来自物体掉落,而不是任务目标识别错误。

多机器人真实评测覆盖 Franka、AgiBot、OpenArm、Dobot-Arm 等平台,任务包括放杯子、摆水果、堆积木、拿胶水、擦桌子、整理物体、做菜等。

平均成功率:

  • A1:56.7%
  • π0.5\pi_{0.5}:47.5%
  • π0\pi_0:40.8%

在 RoboChallenge Table30 上:

  • A1:29.00%
  • π0\pi_0:28.33%
  • X-VLA:21.33%
  • RDT-1B:15.00%

A1 在 Open Drawer、Put Cup on Coaster、Stack Bowls 等精细操作 / 长程任务上表现较强。

A1-MLP 在 LIBERO 上:

  • no exit:95.8% / 243.0 TFLOPs / 17.5s。
  • multi-exit training + c=1.0c=1.0:96.6%,计算量下降 15.6%。
  • c=0.7c=0.7:96.3%,计算量下降 39.1%。
  • c=0.4c=0.4:94.0%,计算量下降 58.5%。
  • c=0.1c=0.1:92.3%,计算量下降 76.6%。

说明很多 VLM layer 的计算对最终动作是冗余的,并且多出口训练本身可能带来 regularization 效果。

Inter-Layer Truncated Flow Matching Ablation

Section titled “Inter-Layer Truncated Flow Matching Ablation”

A1-FM 在 LIBERO 上:

  • no exit + full-layer training + 10 steps:92.6%,37.9s。
  • no exit + multi-exit training + 10 steps:96.0%,37.8s。
  • early-exit c=1.0c=1.0 + 10 steps:96.4%,但时间上升到 40.9s。
  • early-exit c=1.0c=1.0 + 2 steps:95.4%,时间降到 27.5s。
  • early-exit c=1.0c=1.0 + 2 steps + warm-start:96.4%,时间降到 10.5s。
  • early-exit c=0.8c=0.8 + 2 steps + warm-start:94.6%,时间降到 9.0s。

最关键结论:early-exit 只有和 truncated FM + warm-start 一起用,才能真正把 FM VLA 的端到端延迟打下来。

在更难的 LIBERO-Plus zero-shot 设置中,A1-FM 取得 75.3% 平均成功率,高于 OpenVLA-OFT、π0\pi_0 和 π0\pi_0-FAST。


一般 LLM / VLM early-exit 常用 hidden state、logits 或 entropy 判断是否稳定。 A1 直接用 action chunk discrepancy 做 exit criterion,更贴近控制目标:如果更深层的语义理解不会改变动作,就没必要继续算。

但是如果浅层语义是稳定且错误的,到深层发现错误才会突然改变动作呢?

跨层 refinement 而不是每次 early-exit 判断都完整去噪

Section titled “跨层 refinement 而不是每次 early-exit 判断都完整去噪”

Inter-Layer Truncated Flow Matching 本质上把多个 layer 的短 denoising 串成一个跨层 refinement path。这个思路比单纯减少 denoising steps 更稳定,因为上一层的输出为下一层提供了强 prior。

但是这样下层基于上层修改会不会导致跳不出错误 mode ?上层就已经把大体方向定死了。

A1 解决的是单次 action chunk 推理更快,REMAC / StreamingVLA / DuoCore-FS 更关注推理和执行如何重叠、如何避免 chunk 边界和延迟导致的动作错位。