Skip to content

Real-Time Robot Execution with Masked Action Chunking (ICLR 2026)

Section titled “Real-Time Robot Execution with Masked Action Chunking (ICLR 2026)”

Paper


alt text

Action Chunking 可以缓解单步动作生成太慢的问题,但传统同步执行会出现“执行完一个 chunk 后等待下一个 chunk 生成”的停顿(图 a )。

异步执行在执行当前 chunk 的同时生成下一个 chunk,保证动作队列不断流(图 b )。但是 naive async 会引入两个问题(图 c ):

  1. Inter-chunk discontinuity:相邻 chunk 的边界不连续,动作会跳。
  2. Intra-chunk inconsistency:推理期间机器人已经执行了一部分旧动作,而新 chunk 是基于当前 observation 生成的,导致一个 chunk 内前缀动作和当前感知状态不一致。

已有 RTC / BID 等方法主要在 test-time 做边界平滑或 inpainting,关注的是 inter-chunk discontinuity;REMAC 认为 intra-chunk inconsistency 也是关键失败原因,且应该在训练阶段让策略学会适配 delay。

提出 REMAC(Real-time Execution with Masked Action Chunking),将 Chunk 前半部分(已经执行的部分)通过 mask 转化为条件约束而不是优化目标,从而让后半部分据此修正:

  • 训练一个 delay-aware policy v^π(At∣ot,d)\hat{\mathbf v}_\pi(\mathbf A_t|\mathbf o_t,d) ,让策略显式知道当前推理延迟 dd。
  • 通过 Prefix Masking 只监督会被执行的后半段动作,避免让模型过度拟合那些推理时已经错过、不再会被执行的 prefix。
  • 通过 Self-conditioned Curriculum 用 pretrained policy 的预测逐渐替换 ground-truth action chunk,缓解训练和 rollout 时输入分布不一致的问题。
  • 通过 Residual Alignment 让 LoRA 学的是相对 pretrained policy 的修正,而不是完全重新学习动作生成。
  • 推理时使用 Prefix-preserved Sampling,把旧 chunk 中已经承诺/正在执行的 prefix 保留下来,只生成剩余动作,从而增强 chunk 之间的连续性。

REMAC 主要是训练时改 backbone policy,而不是在 test-time 增加复杂优化;LoRA merge 后基本不增加推理延迟。

需要预先设定最大 inference delay,让训练覆盖可能出现的 delay 范围。如果实际部署 delay 超出训练覆盖范围,可能失败。

另外,REMAC 需要针对 masked finetuning 收集一定量的数据。论文主实验真实机器人用了 200 条轨迹做 adaptation,附录中也测试了 10 条 demo 的 data-efficiency,但整体仍然依赖 finetuning 数据。


alt text

设 chunk 长度为 PP,动作维度为 DD。在异步执行中,模型在生成当前 chunk At\mathbf A_t 时,机器人可能已经继续执行了上一段 chunk At−h\mathbf A_{t-h} 的一部分动作。

这导致训练和测试的对应关系发生错位:预训练时每个 chunk 的所有动作都被当成从当前 observation 出发的监督目标;但异步推理时,前 dd 个动作往往已经由上一轮 chunk 决定,当前模型真正影响的是后面的可执行部分。

Prefix Masking (遮掩已经做出的动作)

Section titled “Prefix Masking (遮掩已经做出的动作)”

定义 delay-conditioned prefix mask:

md={mdτ}τ=0P−1=1[τ≥d]\mathbf m_d=\{m_d^\tau\}_{\tau=0}^{P-1}=\mathbf 1[\tau \ge d]

其中 τ\tau 是 chunk 内部时间步,dd 是 inference delay。也就是说,前 dd 个动作不参与监督,只监督 τ≥d\tau \ge d 的部分。

Masked flow matching loss:

Lm=∑d∑τ=0P−1mdτ∥u^τ−uτ∥22max⁡(1,∑τ=0P−1mdτ)\mathcal L_m=\sum_d \frac{\sum_{\tau=0}^{P-1}m_d^\tau\|\hat{\mathbf u}_\tau-\mathbf u_\tau\|_2^2} {\max(1,\sum_{\tau=0}^{P-1}m_d^\tau)}

Self-conditioned Curriculum (逐步将理想动作情况替换为实际不完美动作训练)

Section titled “Self-conditioned Curriculum (逐步将理想动作情况替换为实际不完美动作训练)”

训练时如果一直用 ground-truth action chunk 做 interpolation,和 rollout 时“模型基于自己的预测继续生成”的情况仍然不一致。于是论文用 pretrained policy 的预测 A~t\tilde{\mathbf A}_t 来构造 self-conditioned 输入:

A^t=γAt+sg((1−γ)A~t),γ∼Bernoulli(σ),σ∈[0,1]\hat{\mathbf A}_t=\gamma \mathbf A_t+\text{sg}((1-\gamma)\tilde{\mathbf A}_t),\quad \gamma\sim\mathrm{Bernoulli}(\sigma),\quad \sigma\in[0,1]

σ\sigma 随训练进度从 1 anneal 到 0:

  • 早期主要用 ground-truth,保证训练稳定。
  • 后期逐渐用 pretrained policy 的预测,模拟 rollout 时的自条件输入。

如果一开始就完全 self-conditioned,训练不稳定;如果一直用 ground-truth,则有 exposure bias。

Residual Alignment (仅微调原模型,学习残差)

Section titled “Residual Alignment (仅微调原模型,学习残差)”

REMAC 不是让 LoRA 完整重学一个策略,而是让它学习相对 pretrained policy 的 residual correction。

设 pretrained backbone 的 flow 预测为 u~\tilde{\mathbf u},REMAC 预测为 u^\hat{\mathbf u},ground-truth target 为 u\mathbf u,残差对齐项为:

LΔ=∑d∑τ=0P−1∥mdτ(uτ−u~τ)−mdτ(u^τ−u~τ)∥22max⁡(1,∑τ=0P−1mdτ)\mathcal L_\Delta=\sum_d \frac{\sum_{\tau=0}^{P-1} \|m_d^\tau(\mathbf u_\tau-\tilde{\mathbf u}_\tau) -m_d^\tau(\hat{\mathbf u}_\tau-\tilde{\mathbf u}_\tau)\|_2^2} {\max(1,\sum_{\tau=0}^{P-1}m_d^\tau)}

总 loss:

L=λmLm+λΔLΔ\mathcal L=\lambda_m\mathcal L_m+\lambda_\Delta\mathcal L_\Delta

论文中 λm=0.01,λΔ=0.01\lambda_m=0.01,\lambda_\Delta=0.01。

Prefix-preserved Sampling (不直接从纯噪声采样,将已生成动作作为先验)

Section titled “Prefix-preserved Sampling (不直接从纯噪声采样,将已生成动作作为先验)”

推理时不再完全从 Gaussian prior 初始化新 chunk,而是把上一轮 chunk 中可以继续作为先验的部分填入 Atp\mathbf A_t^p。其前 P−hP-h 个位置来自 previous predicted chunk 的最后 P−hP-h 个动作,剩余位置置零。

采样/积分过程中保留 prefix,只对未保留部分生成:

Atτ+1n=m⊙(Atτ+1nv^π(Atτ,ot,τ))+(1−m)⊙Atp\mathbf A_t^{\tau+\frac{1}{n}} =\mathbf m\odot\left(\mathbf A_t^\tau+\frac{1}{n}\hat{\mathbf v}_\pi(\mathbf A_t^\tau,\mathbf o_t,\tau)\right) +(1-\mathbf m)\odot\mathbf A_t^p

这一步对应的是 inter-chunk continuity:已执行/已承诺的动作作为 hard prior 保留下来,减少 chunk 边界跳变。


alt text alt text alt text alt text


暂无