---
title: A1
link: https://arxiv.org/abs/2604.05672
doi: arXiv:2604.05672
status: "已阅读"
doc_type: paper
tags: [实时VLA, Efficient VLA, Early Exit, Flow Matching, Truncated Flow Matching, Open-Source VLA]
date: 20260703
---

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

[Paper](https://arxiv.org/pdf/2604.05672)



---

## Motivation

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 动作头也跟着低成本运行？**

---

## Contribution
![alt text](asserts/A1/figure-01.png)

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 的初始值，而不是每层都从随机噪声开始。

## Limitation

- **Early-exit 阈值依赖离线校准**：需要先在训练集/校准集上跑一遍，统计 layer-wise action discrepancy，再根据目标 exit distribution 设阈值。如果部署域和校准域偏差大，动作稳定性阈值可能不可靠。
- **同步执行仍然有延迟**：论文已经显著降低推理耗时，但附录也提到推理-执行同步、云端服务器和机械臂之间的网络延迟仍会导致 lag。也就是说，A1 解决的是模型推理成本，还没有完整解决异步控制问题。
- **仍然是 imitation learning 主线**：论文提到累积误差会影响操作精度，后续可能需要 RL 或在线反馈机制增强鲁棒性。
- **Early-exit 的“动作一致”不等于“动作正确”**：相邻层 action chunk 很接近只能说明模型内部已经收敛到某个动作，不保证这个动作在长程任务或强 OOD 场景下就是对的。

---

## Architecture

### Input

- 多视角或单视角 RGB 图像。
- 机器人本体状态，例如 gripper pose、joint angles。
- 自然语言任务指令。

### Output

- 长度为 $H$ 的未来动作块 $\mathbf A_t=(a_t,\dots,a_{t+H-1})$。
- 动作头有两种实现：
  - **A1-FM**：Flow Matching action expert。
  - **A1-MLP**：MLP action head，用 L1 loss 回归连续动作。

### Backbone + Action Head

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

#### Flow Matching Action Expert

训练时从真实动作 $\mathbf A_1$ 和噪声 $\mathbf A_0$ 之间采样 flow timestep $\tau$，构造 noisy action：

$$
\mathbf A_\tau = (1-\tau)\mathbf A_0 + \tau \mathbf A_1
$$

目标速度场为：

$$
\mathbf u = \mathbf A_1 - \mathbf A_0
$$

模型学习：

$$
\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 逐步更新动作：

$$
\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

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

$$
\mathcal L_{MLP}=\|\hat{\mathbf A}-\mathbf A\|_1
$$

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

---

## Method

### Multi-Exit Training

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

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

- 对 MLP head：每个 layer 的 hidden state 都可接动作回归头。
- 对 FM head：主 LLM 执行到 layer $l$，action expert 也执行对应深度，并计算 FM loss。

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

### Action-Consistency Early Exit

在第 $l$ 层得到 action chunk $\mathbf A^{(l)}$ 后，和上一候选层的 action chunk $\mathbf A^{(l-1)}$ 比较：

$$
d(\mathbf A^{(l)}, \mathbf A^{(l-1)}) < \delta_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 越小，越偏向早层退出，计算量越低，但性能风险更高。

### Inter-Layer Truncated Flow Matching

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

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

A1 的做法是：

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

可以理解为：

$$
\mathbf A^{(l)}_0 = \mathbf A^{(l-1)}_{K'}
$$

然后在第 $l$ 层执行少量 Euler steps：

$$
\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)}$ 是第 $l$ 层 VLM hidden state 提供的条件。

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

### 和 Streaming Flow Policy 的关系

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

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 优化的是**模型推理深度轴**。

---

## Training Recipe

### 数据

A1 使用 robot-trajectory-only 预训练语料，包含：

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

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

$$
(o_t, s_t, l, a_t)
$$

其中 $o_t$ 是视觉观察，$s_t$ 是本体状态，$l$ 是语言目标，$a_t$ 是连续动作。

### 两阶段训练

1. **大规模预训练**：在混合机器人数据上端到端训练，学习通用操作先验。
2. **下游任务微调**：在特定 robot embodiment 或任务数据上微调。

### 训练细节

- 冻结 ViT backbone。
- VLM 组件使用较小学习率。
- Action head 使用更大学习率，以便快速适配连续控制。
- 使用 warmup + cosine annealing。
- 视觉增强包括 random erasing 和 sharpening。
- 本体状态使用 state zero-out，提高对部分观测缺失的鲁棒性。
- 不做跨数据集 state normalization，避免破坏相同 embodiment 下动作空间的物理含义。

---

## Experiments

### Computational Cost

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=10$：4.443s。
- A1-FMe, $K=2$：0.728s。

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

### Simulation

LIBERO：

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

VLABench：

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

### Real-World

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

平均成功率：

- A1：56.7%
- $\pi_{0.5}$：47.5%
- $\pi_0$：40.8%

在 RoboChallenge Table30 上：

- A1：29.00%
- $\pi_0$：28.33%
- X-VLA：21.33%
- RDT-1B：15.00%

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

### Early-Exit Ablation

A1-MLP 在 LIBERO 上：

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

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

### 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.0$ + 10 steps：96.4%，但时间上升到 40.9s。
- early-exit $c=1.0$ + 2 steps：95.4%，时间降到 27.5s。
- early-exit $c=1.0$ + 2 steps + warm-start：96.4%，时间降到 10.5s。
- early-exit $c=0.8$ + 2 steps + warm-start：94.6%，时间降到 9.0s。

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

### Generalization

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

---

## My Takeways

### Early-exit 的 loss

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

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

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

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

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

### 推理加速和异步控制

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