机器人策略的默认架构已经相当稳定:一个视觉语言模型看懂场景、听懂指令,再外挂一个东西把"看懂"翻译成动作。外挂有两种主流写法------把动作维度量化成词表里的 bin 用交叉熵训练,或者另起一个流匹配/扩散的动作专家生成连续轨迹。两条路都能跑,但共享同一个前提:动脑和动手该由不同的参数负责。
Concertina 这篇论文不接受这个前提。它的主张可以压成一句话:机器人的操作和认知不该被切开,应该住在同一个模型里,作者给这个形态起了名字叫 eVLM(Embodied Vision-Language Model)。具体做法是把"一个控制步的完整动作向量"压成主干隐空间里的一个连续潜动作 token,然后复用这个扩散 VLM 预训练时就在跑的掩码---重建算子把它填出来。
先把三件事报出来。统一到什么程度:动作侧专用参数只占 0.21%(9.49M / 4.46B),没有独立的动作生成层;对照是 π0 的 16.51% 与 X-VLA 的 35.10%。拿到了什么:常规 LIBERO 98.15%(2,000 episodes)、10,030 个扰动任务的 LIBERO-Plus 85.9%、CALVIN ABC--D 链长 4.142。付了什么:一块 10 步动作至少一次主干前向,中位 65.8 毫秒;想再准要 7 次前向、223 毫秒。
还有一条边界必须提前说清:论文全程是仿真 benchmark,没有真机;标题里的 cognition 在全文只作为论证与架构目标出现,没有任何 VQA、推理或规划基准的分数。它证明的是"一个扩散 VLM 能在不损失操作性能的前提下原生输出连续动作",不是"它同时会做题"。这个区别后面单独展开。
一分钟速览
- 痛点:主流 VLA 把动作当挂件。挂成离散 token,误差几何与物理位移脱钩(单 token 出错,位移误差跨度 25.14 倍);挂成独立动作专家,专用参数吃掉 16.5%--35.1%,梯度冲突只能靠 Knowledge Insulation 掐断。
- 主张:把操作和认知放进同一个模型,即 eVLM------动作在主干隐空间里表示、由主干的生成算子产生、在物理坐标上端到端监督。
- 做法:一个控制步的 D 维动作向量经位置级 MLP 编码成 1 个 d 维潜动作 token,H 步轨迹占 H 个 token;块内双向、块间因果;复用 BARD-VL 的掩码块重建算子。
- 代价:动作接口 9.49M 参数(0.21%),无外挂动作生成层;单次前向 65.8 ms 出 10 步块,折合 6.58 ms 一步。
- 结果:LIBERO 98.15%、LIBERO-Plus 85.9%(比 EFFVLA 高 6.1 点、比 OpenVLA-OFT 高 16.3 点)、CALVIN ABC--D 4.142。
- 审计:仅位置级接口时跨时耦合严格为 0,加一次主干前向后全路径 NLR 为 4.058%、4.103%、1.217%,耦合出现在第 27 与 35 层。
- 反证:给同一共享隐空间再加一个绝对动作目标,梯度余弦 −0.891,CALVIN 链长从 2.970 掉到 0.237。
- 论文没给的:真机、认知任务、显存峰值、训练墙钟、FLOPs、与自回归 VLM 的吞吐对比,以及那 65.8 ms 是在什么卡上测的。
一个模型为什么不能既动手又动脑
两种拼法,各自丢掉了什么
第一种拼法是离散化。RT-2 和 OpenVLA 把每个动作维度切成 256 个均匀 bin,塞进语言词表,用交叉熵当损失。好处是架构和训练范式一点没改,坏处是把控制从物理空间搬到了符号空间:交叉熵对"差一个 bin"和"差两百个 bin"给同样的惩罚,单位 token 误差到物理位移的映射就不再稳定。
论文用误差几何一致性(EGC = p95/p05)把这种不稳定性量了出来。512 个 CALVIN 窗口上做单 token 替换,256 桶量化后物理误差 p05 是 0.0549、p95 是 1.3804,跨度 25.14 倍(8,192 窗口扩样 25.57 倍);连续坐标监督按构造是 1.0。FAST 那种 DCT 加 BPE 更脆:单 token 替换后 82.23% 的窗口直接解不出 30×7 的形状,修复版 MolmoAct2-FAST 是 77.93%;能解出来的窗口里,一次编辑中位数扰动 30/30 个时间步,等于整段轨迹作废。
第二种拼法是外挂动作专家。π0、π0.5、SmolVLA、GR00T N1、X-VLA 都走这条路:主干出视觉语言表征,另起流匹配专家或 24 层动作 Transformer 生成连续轨迹。连续坐标保住了,代价是参数和梯度两笔账。参数账是 16.51%(π0)、19.17%(π0.5)、22.19%(SmolVLA)、35.10%(X-VLA)的容量划给动作。梯度账更麻烦:专家梯度回传冲击预训练特征,Knowledge Insulation 干脆把它挡在主干外------用架构硬隔离换训练稳定,等于把解耦钉死。
eVLM 的三条判据
作者没有停在"这样不好",而是给了三条正面理由,我认为第二条最有说服力。
- 认知应该在每一层参与操作。抓取、放置、避障用的空间与物理线索,和场景理解用的是同一批;如果轨迹生成发生在 VLM 外面,认知就退化成一次性的条件交接,无法随动作状态在深度上互动。
- 操作应该反过来塑造认知。机器人轨迹是 VLM 物理与空间 grounding 的主要来源;只有连续动作梯度真的更新了视觉语言参数,操作经验才能沉淀进主干的空间表征,而不是被封在外挂头里。
- 保留主干的架构、训练范式与表征稳定性,才谈得上端到端扩展。当认知与运动模块依赖不兼容的范式时,梯度会互相拉扯,实践中的应对就是冻结或隔离主干------而这正好把感知与控制的分工永久固定下来。
论文的 Table 1 把判据展开成十列,覆盖表示耦合(连续动作值、物理坐标监督)、计算与参数耦合(主干是否直接生成轨迹、有没有外挂动作生成器、有没有预训练 tokenizer 或 codec)与生成结构(单一动作表示与损失、并行生成、因果时序、迭代精化、序列长度 O(H))。Concertina 是唯一十项全过的,下面按路线归并。
| 路线 | 动作表示 | 谁生成轨迹 | 训练目标 | 跨时耦合在哪 | 动作专用参数 |
|---|---|---|---|---|---|
| A. OpenVLA 类 | 每个坐标一个离散 bin | 主干词表头 | 语言交叉熵 | 主干的因果注意力 | 0(复用 LM head) |
| B. π0 类 | 32 维连续向量 | 外挂流匹配专家 | 专家侧流匹配 | 专家内部(NLR 8.141%) | 16.51%--19.17% |
| C. Dream-VLA 类 | 连续标量 | 共享主干 | 把目标换成流匹配 | 主干,但范式已换 | 少量投影层 |
| D. Concertina | 每步 1 个连续潜 token | 共享主干 | 原生掩码块重建 + 物理坐标回归 | 主干第 27/35 层(NLR 4.058%) | 0.21% |
这篇论文真正下的赌注
看清这张表就会发现,A 和 C 已经各自放弃了一样东西:A 放弃了物理坐标,C 放弃了原生训练范式。B 保住了坐标但放弃了统一。Concertina 赌的是第四种可能------物理坐标和原生范式可以同时保住,只要你把动作的表示形式改成主干本来就吃得下的形状。
所谓"本来就吃得下",指的是 BARD-VL 预训练时处理的就是"挖掉一块、再补回来":文本和图像 token 按块组织,块内双向、块间因果,按腐蚀率随机遮蔽,模型学会从残缺序列重建完整序列。这个算子在离散 token 上已经跑通,用到连续向量上就不需要新的扩散网络、新的噪声调度、新的损失范式------只需要一个把 D 维向量塞进 d 维隐空间的位置级投影。
这也解释了论文标题里"diffusion"的位置:它不是给动作新接了一个扩散头,而是整个主干本来就是扩散式的。

图 1|四条通往机器人操作的路线:A 用词表头输出离散 bin,B 外挂独立动作专家,C 共享主干但把目标换成流匹配,D 共享主干并保留原生掩码块重建算子。
统一的那一刀:一步动作 = 一个连续 token
输出空间:H 个 token,不是 H×D 个符号
这是全篇最关键的一个设计决定,值得单独拆开。设一个控制步的动作是 a_i ∈ R^D(论文里 D = 20,单臂占前十维:3 个笛卡尔平移、6 维连续旋转表示、1 个夹爪闭合量;双臂占满二十维)。传统做法有两种粒度:离散化是每个坐标一个 token,所以一步要 D 个 token;或者干脆把 H 步摊平成 H×D 个标量符号。Concertina 选的粒度是"一步一个 token"。
一步一个 token 有三层后果。第一层是序列长度:H 步轨迹占 H 个 token 而不是 H×D 个,和多模态前缀拼起来是 P + 2H 个位置(训练时打包了腐蚀与干净两份动作)。第二层是物理耦合:平移、旋转、夹爪在同一步里本来强相关,拆成 20 个独立符号等于让模型重新学这层约束,压成一个 token 则天然保留。第三层是可监督性:一个 token 对应一个完整物理向量,损失可以直接写在归一化坐标上,不需要反量化、不需要码本。
作者还检查了这个压缩会不会把动作空间压塌。方法是看动作编码器雅可比 ∂E_ϕ/∂a ∈ R^{2560×20} 的奇异值谱:预训练全程保持 20 维满秩,有效秩从初始化的 19.78/20 降到 5k、10k、15k 步的 19.30、18.90、18.63,条件数中位数从 1.73 升到 3.22,与物理坐标的 Spearman 相关维持在 0.855--0.931。这些数字说明它是一条光滑、未退化的 20 维坐标图,不是把动作硬塞进一个低维瓶颈。
编解码器只做坐标投影
桥接物理坐标和隐空间的是两个位置级模块:动作编码器 E_φ 与动作解码器 D_ψ,都是 4 层 MLP、隐宽 1,024、SiLU、零 dropout。关键在"位置级":它们对每个时间步独立作用,不做时间混合,所有跨时依赖都交给主干。
zi=Eϕ(ai),a^i=Dψ(hi) z_{i}=E_{\phi}(a_{i}),\qquad \hat{a}{i}=D{\psi}(h_{i}) zi=Eϕ(ai),a^i=Dψ(hi)
z_i 是第 i 步的潜动作 token(d = 2560 维),h_i 是主干输出的对应位置隐状态,â_i 是还原出的 D 维物理动作。整条前向是 [H_C, H_A] = F_θ([C, Z]) 再 bA = D_ψ(H_A):前缀 C 与潜动作 Z 拼成一条序列进主干,全部位置联合上下文化,最后只在动作位置读出。本体状态也走同一个 E_ϕ,因为它共享同一套 20 维布局------论文特意强调,没有动作边界特殊 token、没有 embodiment adapter、没有 soft prompt。
意图很清楚:把"翻译"和"思考"分开。E_ϕ 与 D_ψ 只负责坐标和隐空间之间的搬运,跨模态对齐与跨时规划全在 F_θ 里。所以问"动作专用参数有多少",答案只有 9.49M,而不是几十层 Transformer。

图 2|整体结构:文本、多视图图像与状态经各自前端进入共享掩码扩散 Transformer,动作块以连续潜动作 token 的形式与多模态前缀一起过全部层,再由位置级动作解码器还原成物理坐标;右侧是块内去噪、打包训练注意力与跨块生成三个局部示意。
三张掩码与 500:10:1 的坐标权重
多 embodiment 训练是这套坐标布局最容易出错的地方,论文用三张正交的掩码解决:坐标有效性 q_{n,d} 标记这条样本的哪些维度是真的(单臂只有前十维),重建选择 m_{n,i} 标记这个槽位这一轮是否被遮蔽,时间有效性 v_{n,i} 标记这个时间步是不是补齐出来的。三者的关系是"被监督的支撑集 = v_{n,i} · m_{n,i} · q_{n,d}"。
无效坐标在输入端直接置零,并从损失的分母里剔除;无效时间步不仅不算损失,还被遮蔽成注意力 key,同时为了避免出现整行全遮的注意力(Flash/SDPA 会出问题),无效 query 只注意自己。

图 3|左侧是规范的 20 维动作布局(单臂占前十维、双臂占满二十维),右侧是三张正交掩码:坐标有效性 q、重建选择 m、时间补齐 v 各管一件事。
坐标权重 ω_d 是另一处容易被忽略、但消融里影响最大的设定。平移以米为单位,数值方差比归一化后的旋转和夹爪小几个数量级;如果按 1:1:1 直接回归,共享主干会系统性地低估平移精度。论文把每臂的权重设成(500, 500, 500, 10, 10, 10, 10, 10, 10, 1)------平移 500、6 维旋转各 10、夹爪 1。夹爪通道不走回归,而是先映射到规范闭合量 p = (g − g_open)/(g_closed − g_open) ∈ 0,1,再用带目标熵扣减的概率型 BCE:ρ_grip(r, p) = BCEWithLogits(r, p) − H§ = KL(Ber§ ‖ Ber(σ®))。减去 H§ 不改变梯度,但让硬 0/1 目标和中间闭合目标的最小损失都归零,正好对上不同 embodiment 里 −1,1 与 0,1 两套夹爪约定的差异。
扩散解码在动作侧:语言 token 一个都没动
训练:一条序列装下前缀、腐蚀副本与干净副本
先说清一个易误解的点:这里没有高斯噪声调度,也没有"从纯噪声逐步去噪"。腐蚀算子是遮蔽------按块抽一个腐蚀率,块内每个时间步独立地以该概率被替换成"未知动作"哨兵(实现上是零向量),再让模型重建。这是掩码扩散/吸收式扩散那一支,不是 π0 的流匹配。主干预训练时文本与图像 token 走的也是这套算子,所以语言侧在预训练阶段同样是扩散式生成;但推理时指令是给定前缀、不参与生成,真正迭代填充的只有动作槽位。
训练时的一条序列是 X_train = C, Z̃, Z:多模态前缀、被腐蚀的动作副本、干净的教师强制副本。两份动作共享位置编码但可见性不同:腐蚀分支的第 i 个查询能看到前缀、本块的腐蚀槽位、严格更早的干净块;干净分支能看到前缀与本块及更早的干净块。预测只从腐蚀分支读出,干净分支只提供块级上下文且不泄漏当前块目标。
这个打包一次前向就监督了全部 M 个块的条件分布,序列长度对 H 线性,是这套方法算力上能跑通的前提。腐蚀率按块分层采样:把 [0,1] 均分 M 段,每段均匀抽一个点再随机置换到块上,下截断 ϵ = 10⁻³,这样每次前向都覆盖整个腐蚀谱而不是碰运气。
监督写在归一化物理坐标上。每个 token 的坐标重建误差是
ℓn,i=∑d=1Dqn,d ωd ρd(a^n,i,d, an,i,d)max(∑d=1Dqn,dωd, δ) \ell_{n,i}=\frac{\sum_{d=1}^{D}q_{n,d}\,\omega_{d}\,\rho_{d}(\hat{a}{n,i,d},\,a{n,i,d})}{\max(\sum_{d=1}^{D}q_{n,d}\omega_{d},\ \delta)} ℓn,i=max(∑d=1Dqn,dωd, δ)∑d=1Dqn,dωdρd(a^n,i,d,an,i,d)
其中 ρ_d 对连续位姿用 Smooth-L1、对夹爪用上面那个概率型 BCE,分母做了按有效维度加权和的归一化,δ 防止除零。整块的损失再按"被选中概率的倒数"加权:
Lact=1N∑n=1N1max(∑i=1Hvn,i, 1)∑i=1Hvn,i mn,i ℓn,imax(tn,b(i), ϵ) \mathcal{L}{act}=\frac{1}{N}\sum{n=1}^{N}\frac{1}{\max(\sum_{i=1}^{H}v_{n,i},\ 1)}\sum_{i=1}^{H}\frac{v_{n,i}\,m_{n,i}\,\ell_{n,i}}{\max(t_{n,b(i)},\ \epsilon)} Lact=N1n=1∑Nmax(∑i=1Hvn,i, 1)1i=1∑Hmax(tn,b(i), ϵ)vn,imn,iℓn,i
关键是那个 1/t 的权重:因为 E[m_{n,i}/t_{n,b(i)} | t] = 1,按选中概率的倒数加权之后,不同腐蚀率下的损失估计是同尺度的,梯度能干净地穿过 D_ψ、F_θ、E_ϕ 回传到整条链路上。
推理:块内并行填,块间因果推
推理比训练直观:前缀 C 进 KV cache 只做一次,然后按块顺序生成。块内动作槽位先初始化为零哨兵,再分轮提交------一个轻量风险头从 detach 的隐状态回归对数重建误差 log(ℓ + 10⁻⁶),候选槽位按负预测风险排序,高置信度的先定格;可选精修轮次把低分槽位重新遮住再预测,分数变高才接受。一块定稿后,其连续动作被 E_ϕ 重编码并追加进持久 KV cache。
text
# 仅示意:块级闭环解码,省略张量形状与并行细节
KV ← F_θ.prefill(C) # 文本 + 多视图图像 + 状态,只做一次
for b in 0 .. M-1: # 块间因果
槽位 ← 全零哨兵 # 块内所有动作槽位待填
for r in 0 .. D_prop: # proposal 轮次,配置 D_prop = 4
H ← F_θ(KV, E_φ(槽位)) # 只读缓存,不写
候选 ← D_ψ(H); 风险 ← risk_head(H.detach())
按 −风险 排序,把最高分的若干槽位定格成候选值
for r in 0 .. R_ref: # 精修轮次,配置 R_ref = 5
重遮低分槽位 → 再预测 → 分数变高才接受
A[b] ← 槽位 # 提交该块
KV ← KV + E_ϕ(A[b]) # 定稿动作重编码进缓存
执行 A[0 .. H_exec-1],重新观察,回到 prefill 之后
为什么不是再训一个 flow head
看到"迭代填槽"很容易反问:这和流匹配的多步积分有什么区别,为什么值得为此改掉动作表示?
区别有三处。数量上,流匹配每步都要跑一遍专家(π0.5 常用 10 步),这里的轮数也是超参(D ≤ 4、R = 5,实测平均 7 次前向),但每步跑的是同一个共享主干、复用同一份前缀 KV cache,没有第二个网络。质量上,流匹配从噪声积分误差会累积,掩码重建是从"已知上下文 + 未知槽位"直接推断,单轮就能给可用动作------实测 D=1、R=0 就有 3.92 AvgLen。最关键的是第三处:它不需要新的训练范式。换成给共享主干接流匹配目标,就回到了路线 C 的问题------保住了主干,换掉了主干预训练时学到的生成方式。4.4 节那组反事实实验说明,换目标的代价比看上去大得多。

图 4|风险引导解码:风险头从 detach 的隐状态回归对数重建误差,据此按置信度提交候选槽位,并对低分槽位做选择性重遮与精修。
训练:80.2M 帧、两阶段预训练与四步配方
数据:146,433 条轨迹、五个来源
预训练混合一共 146,433 条 episode、80,212,225 帧,来自五个来源,采样权重和帧数并不成比例(这是刻意的重加权):
| 数据源 | 子集/视角 | Episodes | 帧数 | 采样权重 |
|---|---|---|---|---|
| AgiBotWorld--Alpha | 34 / 34 | 32,735 | 46,156,708 | 44.44% |
| DROID(30 Hz 对齐) | 1 / 2 | 97,685 | 27,348,488 | 33.33% |
| RoboMIND Franka | 1 / 1 | 5,333 | 943,842 | 11.11% |
| RoboMIND AgileX | 1 / 1 | 8,906 | 5,387,380 | 7.78% |
| RoboMIND FR3 | 1 / 1 | 1,774 | 375,807 | 3.33% |
| 合计 | 38 / 39 | 146,433 | 80,212,225 | 100% |
DROID 的 episode 最多(97,685)却只占三分之一权重,AgiBotWorld 用 32,735 条拿到 44.44%,说明权重按任务多样性与质量调而不是按条数。清洗是离线的:校验时间戳连续、坐标范围有限、帧与动作对齐,再用末端速度、关节通道与光流三重交叉检查剔除静置片段,同时用语义规则保住"夹爪稳定""倒液体"这类功能性停顿;被剔除的片段重置局部 episode 边界,跨边界窗口用 v_{n,i} 补齐。
训练分两阶段,再各自微调:
| 阶段 | 数据 | 更新数 | 配置 |
|---|---|---|---|
| Stage-1 预训练 | 五源混合 | 60,000 | 规范 20 维动作,H=50、M=5、K=10,有效维掩码,30 Hz 对齐 |
| Stage-2 继续预训练 | 五源混合 | 30,000 | 双块 H=20、M=2、K=10,mask-only inverse-t,概率型夹爪 BCE |
| 下游微调 | CALVIN ABC--D | 5,000 | 绝对末端动作,单块 H=10、M=1、K=10 |
| 下游微调 | 常规 LIBERO / LIBERO-Plus | 5,000 | 相对末端动作,单块 H=10、M=1、K=10 |
算力是 8 张 GPU,预训练与 CALVIN 微调全局批 1,536(每卡 192),LIBERO 微调全局批 448(每卡 56),80 步线性 warmup,seed 42。注意:论文通篇没写 GPU 型号,这对复现和延迟解读都有影响。
K=10 的证据:动作相干性半衰期 19 帧
块宽 K 是这套方法里最"物理"的超参:块内双向意味着同一块里的动作可以互相看见、联合重建,块间因果意味着只能往前看。K 太小,正在进行的动作阶段会被切在因果边界两侧,块内看不到彼此;K 太大,双向注意力又会把过长的时间跨度混在一起,且训练时有效轨迹起点变少。
论文没有拍脑袋选 K,而是先量了动作本身的相干长度。在 34 个 AgiBot 任务、680 条 episode、999,830 帧、30 Hz 的数据上,算动作增量(平移差、SO(3) 测地旋转差、夹爪变化)的方向余弦随帧间滞后的衰减:Δt=5 时 0.775,Δt=10 时 0.663,到 Δt=19 首次跌破 0.5,Δt=27 跌破 1/e。也就是说,"伸手---对准---闭合夹爪"这类连续原语在 15--20 帧内保持强方向性。
在这个前提下把 K 从 5 提到 10,块内能圈住的相干动作质量从 9.8% 升到 21.3%(2.17 倍)。对应的闭环收益是:同样 H=50、同样 2,400 步微调预算下,M=5/K=10 在 200 个 LIBERO episode 上拿到 73.0%(146/200),M=10/K=5 只有 38.5%(77/200),整体 +34.5 点,40 个任务里 32 个提升、7 个持平、1 个下降;CALVIN 上平均链长从 0.055 涨到 1.945(35 倍),SR@1 从 5.1% 到 78.2%。
这里有个读法上的坑:73.0% 和 98.15% 不是同一件事。前者是 2,400 步短预算下的受控对照,后者是 5,000 步微调的终态成绩。拿它们对撞会得出"块宽值 25 个点"的错误结论,正确读法是"同等短预算下块宽决定了收敛速度"。
从 0.41 到 4.14:四步配方
论文最有信息量的一张图是累积配方推进:每一步只加一个改动,链长从 0.41 一路爬到 4.142。
| 累积改动 | CALVIN 平均链长 | SR@1 |
|---|---|---|
| 均匀坐标权重 1:1:1 | 0.41 | 31% |
| 换成物理权重 500:10:1 | 1.09 | 62% |
| 加状态掩码 + RRC | 1.84 | 73% |
| 60k 多块预训练(H=50) | 3.54 | 93% |
| 对齐执行块(H=10) | 4.13 | 99% |
| 再加 30k 双块继续预训练 | 4.14 | 99% |
前两步最反直觉。第一步把 1:1:1 换成 500:10:1:有状态掩码时这一项单独值 +1.431(1.837 对 0.406),没有时值 +0.558(1.093 对 0.535)。第二步是"把本体状态遮掉"------训练时随机遮掉状态通道,逼主干从视觉语言上下文推轨迹而不是靠状态外推,单独值 +0.744(1.837 对 1.093),SR@1 +11.2 点、SR@5 +9.1 点。逻辑说得通:状态永远可见,模型就能学一个"状态到动作"的捷径,视觉语言那半边成了摆设;遮掉它,主干才被迫把动作锚在场景上,正好呼应"操作经验要沉淀进主干"的主张。
后三步的收益来自预训练规模与执行视界对齐。最后一步只值 +0.01(4.135→4.142),但换统计口径就有意义了:多块继续预训练(H=20)比单块(H=10)高 +0.208 AvgLen(95% 配对 bootstrap CI +0.119, +0.298),而两者执行配置完全相同(H_exec=10)。说明多块预训练灌进主干的"多相动力学表征"在单块执行时也在起作用。

图 5|四个面板:(a) 块宽 K=5 与 K=10 在 LIBERO 四个套件上的成功率;(b) 动作增量方向余弦随帧间滞后的衰减,半衰期 19 帧;© CALVIN 链存活曲线;(d) 累积配方推进,从 0.41 一路加到 4.142。
评测:操作数字很硬,认知数字缺席
主结果
三个 benchmark 的口径:常规 LIBERO 每任务 50 episodes、四个套件共 2,000;LIBERO-Plus 跑全部 10,030 个扰动任务;CALVIN ABC--D 在 A、B、C 训练、在没见过的 D 上跑 1,000 条五次任务链。
| 方法 | LIBERO 平均 | LIBERO-Plus | CALVIN AvgLen | CALVIN SR@1 | 动作专用参数 |
|---|---|---|---|---|---|
| OpenVLA | 76.5 | 15.6 | --- | --- | 0 |
| π0-FAST | 85.5 | 61.6 | --- | --- | 0 |
| π0 | 94.2 | 53.6 | --- | --- | 16.51% |
| π0.5 | 97.5 | --- | --- | --- | 19.17% |
| UniVLA | 95.5 | 42.9 | 4.41 | 98.9 | --- |
| X-VLA | 98.1 | --- | 4.43 | 97.1 | 35.10% |
| OpenVLA-OFT | 97.1 | 69.6 | --- | --- | 0 |
| RIPT-VLA | 97.5 | 68.4 | --- | --- | --- |
| EFFVLA | --- | 79.8 | --- | --- | --- |
| LLaDA-VLA | --- | --- | 4.01 | 95.6 | --- |
| Discrete Diffusion VLA | 96.4 | --- | --- | --- | --- |
| Dream-VLA | 97.2 | --- | --- | --- | --- |
| Concertina | 98.15 | 85.9 | 4.142 | 98.6 | 0.21% |
真正有说服力的是 LIBERO-Plus 那一列。15.6、42.9、53.6、61.6、68.4、69.6、79.8、85.9------跨度 70 个点的分布说明扰动泛化才是当前 VLA 的分水岭。Concertina 比第二名 EFFVLA 高 6.1 点、比 OpenVLA-OFT 高 16.3 点,四个套件全是最高的(合计 8,615/10,030)。
与专用模型的具体差距
常规 LIBERO 上 98.15% 是表内最高,但要说清三件事。
第一,这个榜已经饱和。前三名是 98.15、98.1(X-VLA)、98.0(IMLE-VLA),差 0.15 个点。这个量级上比高低没有置信区间就没意义------论文给了个别实验的 Wilson 区间(图 5a 那 200 个 episode),主表的 2,000 episodes 却没报。
第二,有几行不是自己跑的。表注写明 π0.5 与 IMLE-VLA 沿用 Hosseinkhani 等人的报告值;EFFVLA 报的是套件级 LIBERO-Plus 均值,而 Concertina 与其余行报的是官方 10,030 任务全集。作者自己标了,对账时别把两种口径直接相减。
第三,CALVIN 上它不是第一。平均链长 X-VLA 4.43、UniVLA 4.41 都更高,Concertina 的 4.142 排第三;它拿的是 SR@1 98.6%(仅次于 UniVLA 98.9%)和 SR@2 93.8%。论文摘要里写的是"second-best overall",指的是 SR 那一列,不是 AvgLen------这一点原文表述没写错,但被转述时容易变形。
认知那一半,论文没有测
这是整篇文章最需要克制的部分。论文标题是"把操作与认知具身进一个扩散 VLM",摘要反复讲 cognition 不该被 decouple,但评测里没有一个认知任务:没有 VQA,没有指令推理,没有子目标规划,没有场景问答,也没有"同一套权重在操作数据上微调后,原本的视觉语言能力掉了多少"的对照。
它给的是间接证据,而且这些证据并不弱:LIBERO-Plus 的 85.9% 说明扰动场景下的语义 grounding 还在;NLR 的层间分布说明跨时耦合确实发生在共享主干中后层而不是接口处;ASCR 的 0.21% 说明没有独立动作生成器。这三条合起来能支持"操作确实是在主干里算出来的"。
但"在主干里算"不等于"认知能力被保住了"。要证明后者,最少需要一组对照:同一个 BARD-VL 底座,一份只做视觉语言微调,一份加动作训练,在同一批 VLM 基准上看退化幅度。论文没有这一组。所以准确的说法是:它提出并实现了一种让操作与认知共用参数路径的架构,并在操作 benchmark 上验证了不弱于外挂方案;至于共用之后认知有没有变好、或至少没变差,仍是开放问题。
我认为这不是写作疏忽,而是这类工作的共同难点:一旦去测 VLM 基准,就要引入"用哪套 prompt、哪套协议"的争议,作者选择先把"不牺牲操作性能"钉死。这个取舍合理,但读者不该把"架构上统一"读成"能力上双赢"。
Action Interface Audit:把「统一」量起来
统一是个形容词,很难证伪。论文造了三个能在 checkpoint 上直接算的指标,对应三条解耦轴。
EGC:单位误差能不能稳定映射到物理位移
第一个指标是表示耦合。固定"一个单位的训练事件误差"(离散 tokenizer 是一次替换,连续头是一个单位坐标误差),看它在 512 个 CALVIN 窗口(H=30、D=7)上引起的物理误差分布,取 p95/p05 作跨度。
结果前文已给:连续监督按构造 1.0,256 桶均匀量化 25.14,FAST+ 与 MolmoAct2-FAST 分别在 82.23% 与 77.93% 的窗口上解不出合法形状。这个指标的价值是把"离散化到底损失了什么"从直觉变成一个数:损失的不是精度,是误差的可预测性。
NLR:跨时耦合长在哪一层
第二个指标是计算耦合。做法很直接:动一个输入动作坐标 (t₀, d₀),用中心差分测输出动作张量 R ∈ R^{H×D} 的响应,然后算响应能量里有多少落在"至少隔 6 步之外"的位置上。
NLR=∑∣t−t0∣≥6∥Rt,:∥22∥R∥F2 \mathrm{NLR}=\frac{\sum_{|t-t_{0}|\geq 6}\left\|R_{t,:}\right\|{2}^{2}}{\left\|R\right\|{F}^{2}} NLR=∥R∥F2∑∣t−t0∣≥6∥Rt,:∥22
在 4.46B 的 checkpoint 上(H=50、36 层、float32、确定性 SDPA),只跑位置级接口 D_ψ∘E_ϕ 时 NLR 严格为 0------它是逐点作用的,物理上不可能有跨时响应。加一次主干前向后全路径 NLR 变成 4.058%(60k 预训练)、4.103%(CALVIN)、1.217%(LIBERO),离时能量 23.4%--34.0%;ε 从 0.01 换到 0.02、0.04 数值几乎不动,说明不是差分噪声。
更有说服力的是层间分布:第 0 层 0.19%--0.34%,第 9 层 0.29%--0.50%,到第 27 层升到 4.66%--9.93%,第 35 层 3.03%--7.42%。跨时耦合不是接口给的,是在共享主干的中后层自己长出来的。
对照组的关键在于位置:π0 与 π0.5 的全路径 NLR 是 8.141% 与 7.141%,比 Concertina 更高,但这些响应全部产生在外挂的流匹配专家内部。X-VLA 更极端,跳过那个外挂的 24 层动作 Transformer 后,只剩 3.72% 的同维动作能量。也就是说,外挂式方案不是没有跨时耦合,而是把耦合搬到了一个 VLM 看不见的房间里。
ASCR:0.21% 是怎么算出来的
第三个指标是参数耦合,定义简单粗暴:只服务于动作生成的参数占总参数的比例。Concertina 的 4.46B 里,动作编码器 E_ϕ 是 4,744,704 个参数、解码器 D_ψ 是 4,742,164 个,合计 9,486,868,占 4,447,963,669 的 0.213%;把 660,993 个参数的风险头也算进去是 10,147,861,占 0.228%。没有独立的动作 Transformer,外挂生成器容量 0%。
对照组的 16.51%(π0)、19.17%(π0.5)、22.19%(SmolVLA)、35.10%(X-VLA)就是"78×--167×"的来源。这个数字好看,但要读准:它衡量"专供动作的容量",不是总容量。外挂方案的主干一样大,只是把动作计算分散在主干与专家两处,ASCR 只统计后者。所以 0.21% 的正确读法是"不在主干之外另建一套动作机器",不是"用 0.21% 参数做完了动作"。
反事实证明:加第二个目标为什么把 2.970 打成 0.237
这是整篇论文里我最看重的一个实验,因为它回答的是"为什么不干脆多目标一起上"。
设定:拿一个 8.35B 的共享主干 checkpoint(H=25),模型与优化设置全不变,只改监督目标------单目标版只监督相对动作,双目标版额外挂一个冻结的辅助解码器监督绝对动作,权重 0.5,21/21 个主动作接口张量按位一致初始化。
结果很难看:八个固定 CALVIN 窗口上,主相对目标与辅助绝对目标在共享隐状态上的梯度余弦是 −0.891,99% 的动作槽方向相反;权重只有 0.5,辅助梯度范数仍是主梯度的 0.881 倍,把合梯度与主目标的对齐度压到 0.474。参数更新更清楚:26 个可训练层里两边幅度几乎一样(总范数比 1.003×),但更新方向余弦从第 2 层 0.604 掉到第 22 层 0.138(池化 0.225)------正是轨迹耦合所在的中后层。
后果是读出全面退化:教师强制主损失 5.12 倍、单次位置误差 2.47 倍、归一化 MAE 1.60 倍,闭环 CALVIN 链长从 2.970 掉到 0.237,−92.0%。
意义不在于"多目标不好",而在于它证明共享隐空间不是被动的特征缓冲:往里接任何坐标读出,都在改这块空间的优化几何。所以"统一"不是把两个东西放进一个模型就完事,动作表示与监督目标必须当成一个接口一起设计。这也解释了为什么只监督相对动作------不是不想多监督,是试过发现会互相拆台。

图 6|审计四面板:(a) 单 token 扰动下的物理误差跨度与结构解码失败率;(b) 连续动作编码器雅可比的奇异值谱,保持 20 维满秩;© 跨时耦合随层出现的位置,接口单独为零;(d) 各架构的动作专用参数占比。

图 7|共设计的四个证据:(a) 主目标与辅助绝对动作目标的梯度余弦 −0.891;(b) 逐层参数更新方向余弦从第 2 层 0.604 跌到第 22 层 0.138;© 读出退化与闭环崩塌,2.970 掉到 0.237;(d) 2×2×2 因子实验,夹爪 BCE 平均 +0.427。
顺带说一个容易被忽略的正向结果:那组 2×2×2 因子实验(每臂 5,000 次更新,共 8,000 条 CALVIN 链)显示,当动作接口与夹爪目标设计对了之后,把 36 层主干全部端到端训练(3.525 AvgLen、92.7% SR@1)和只冻结最前两层(3.535、92.6%)几乎一样好,都不需要 Knowledge Insulation。这是"统一不会毁掉主干"最直接的一条证据:主干可以全放开,只要接口设计对。
统一 vs 拼接:什么时候一个模型更划算
先算延迟:扩散多步到底几步
"扩散"在这里不是必须多步。三种解码预算在同一 checkpoint 上的实测:
| 解码策略 | 平均主干前向次数 | 延迟 p50 | CALVIN AvgLen | LIBERO-Spatial 成功 |
|---|---|---|---|---|
| D=1, R=0(单次并行) | 1.00 | 65.8 ms | 3.92 | 50/50(100%) |
| D≤4, R=0(只做候选) | 2.00 | 91.7 ms | 3.90 | --- |
| D≤4, R=5(风险精修) | 7.00 | 223.0 ms | 4.04 | 50/50(100%) |
单次前向出一整块 10 步动作,65.8 ms,折合 6.58 ms 一个控制步。按 30 Hz 算,一个控制步的实时预算是 33.3 ms,所以单次前向留了约 5 倍余量,7 次前向也还有约 1.5 倍。
但 7 次前向换来的很薄:AvgLen 从 3.92 到 4.04,LIBERO-Spatial 上 50/50 没变。风险精修确实在 25/32 个 CALVIN 窗口和 25/32 个 LIBERO 窗口上降低了离线 MAE,但闭环收益远小于算力代价。按每个控制步的延迟预算选,D=1, R=0 是默认答案,精修只在离线数据生成或高精度场景才值得开。
与 π0.5 的 flow steps 对账
更公平的比较是同一任务上换不同生成方式。LIBERO-Spatial 的 50 个 episode:
| 方法 | 解码预算 | 块长 | 执行视界 | 成功率 | 平均步数 |
|---|---|---|---|---|---|
| Concertina | 1 次前向 | 10 | 10 | 100%(50/50) | 102.40 |
| Concertina | 7 次前向 | 10 | 10 | 100% | 102.84 |
| Concertina | 7 次前向 | 10 | 1(每步重规划) | 92.0% | 118.82 |
| π0.5 | 流匹配 2 步 | 50 | 10 | 98.0% | 105.92 |
| π0.5 | 流匹配 10 步 | 50 | 10 | 96.0% | 115.26 |
| π0.5 | 流匹配 10 步 | 50 | 50(不重规划) | 84.0% | 133.60 |
两个结论。第一,生成范式不是主要矛盾:π0.5 把流匹配从 10 步砍到 2 步只掉 2 个点,说明流匹配的步数早就不是瓶颈;差距在 96% 对 100%。第二,执行视界比生成方式更值钱:每步重规划掉到 92.0%,50 步不重规划掉到 84.0%,两端都不如"执行一个完整 K=10 块再重观察"。这跟块宽实验是同一个故事的两面------块内一致性本身就是信息,别在解码阶段把它拆散。
显存账:省的是一个网络,不是数量级
论文没给峰值显存、激活占用或 KV cache 大小,只能按结构推,结论比宣传口径保守。
- 确定能省的:外挂专家那份参数与优化器状态。按 ASCR,π0 是 16.51%、X-VLA 是 35.10%,换算到 4.46B 量级就是 0.7B--1.6B 的差别;推理省权重显存,训练再省一份梯度和两份优化器状态。
- 不一定省的:主干本身一样大,它省的是"第二个网络",不是"大模型"。
- 可能更费的:KV cache 生命周期更复杂------前缀只读、块定稿后重编码再追加,实现上多一层状态机。
一句话:显存优势就是把 ASCR 那份省掉,量级是总参数的 16%--35%;瓶颈若来自高分辨率视觉输入或长指令 KV cache,换架构救不了。
维护账:一套算子 vs 两套目标
拼接要维护两套目标:主干的预训练范式(交叉熵或掩码重建)和专家的(流匹配或扩散),也就是两套超参、两套调参经验,外加一个永远存在的梯度冲突隐患。Knowledge Insulation 本质是给这个隐患上保险------既然会冲就别让专家梯度进主干;保险上了,架构也就焊死了。
统一的代价是这套算子必须同时吃离散 token 和连续向量:腐蚀率分层、逆概率加权、坐标归一化、夹爪概率化都不难,但整套是新东西。夹爪从 Smooth-L1 换成概率型 BCE 就值 +0.427 AvgLen,说明细节调校空间很大。
| 维度 | 拼接(外挂专家) | 统一(共享主干) | 判断依据 |
|---|---|---|---|
| 参数与显存 | 多 16.5%--35.1% 动作专用容量 | 0.21%,省一个网络 | 显存吃紧且模型不大时统一更划算 |
| 单步延迟 | 专家前向 + 主干前向 | 主干前向,可单次出整块 | 延迟敏感选统一,但要盯块长 |
| 训练稳定性 | 需梯度隔离或冻结,否则退化 | 放开全部 36 层也稳(接口设计对时) | 想端到端扩展选统一 |
| 工程复杂度 | 两套范式、两套超参 | 一套范式,但腐蚀/掩码细节多 | 已有流匹配积累时拼接起步更快 |
| 认知侧收益 | 认知被冻结在交接点 | 动作梯度真的更新主干 | 想用操作数据反哺 VLM 才值得换 |
三条分界线
线一:要不要用操作数据反哺 VLM。要,就只能选统一------拼接方案的主干要么冻结要么被梯度隔离,操作经验上不去;不要(只想让现成 VLM 驱机械臂),拼接成熟得多。
线二:瓶颈在延迟还是泛化。延迟上两者已打平,泛化上统一在 LIBERO-Plus 这种扰动基准领先 6 个点以上。如果你的场景是分布内的重复任务,这 6 个点买不到什么;如果是开放环境,它值钱。
线三:有没有能力做接口设计。共享隐空间对监督目标极其敏感(−0.891 就是证据),统一方案典型的失败不是"跑不动",而是"能跑但悄悄退化",要靠 EGC、NLR 这类审计才看得见。没有这套诊断能力,很容易掉进"loss 正常但闭环崩了"的坑。
局限与失效场景
证据边界:三个仿真 benchmark,零真机
第一个也是最硬的限制:全部实验在仿真里。三个 benchmark 都是桌面操作的标准仿真环境,动作是末端位姿增量或绝对位姿,没有真实传感器噪声、标定误差、执行器延迟与物体形变。
这不是吹毛求疵。"物理坐标监督让误差几何稳定"是核心主张之一,而仿真里的物理坐标是干净的;真机末端位姿通常带毫米级标定误差,EGC = 1.0 会被传感器噪声重新定义。65.8 ms 同理,它不含真实感知栈的图像传输与预处理。
会崩的输入与设置
按论文自己的数据和结构,我能指出三类高风险场景。
- 控制频率偏离 30 Hz 时块宽要重扫。K=10 的依据是"动作相干性半衰期 19 帧 @30 Hz"。如果换到 10 Hz 或 100 Hz 的控制器,同一个物理时间窗对应的帧数完全不同,K 必须重标定,否则块内双向圈住的可能是几个不相关的动作阶段。论文没有给这个重标定的方法。
- 多目标扩展会互相拆台。4.4 节已经证明:往共享隐空间加第二个绝对动作目标,链长掉 92%。这意味着"同时学相对动作和绝对动作""同时学操作和导航"这类多任务扩展,不能简单加损失,必须重新设计接口。论文只做了单目标的验证。
- 双目标实验用的是 8.35B 的 checkpoint(H=25),不是主实验的 4.46B(H=50)。这个不一致论文没解释。它不影响定性结论(梯度冲突是结构性的),但意味着 −92.0% 这个具体数字不能直接搬到主模型上。
复现门槛
按论文给的信息,复现这件事的门槛比数字看上去高。
- 数据拿不到全量。AgiBotWorld、DROID、RoboMIND 都是公开数据集,但 80.2M 帧的混合、清洗、静置片段剔除、语义阶段保留规则,论文只给了原则没给代码;这类清洗的影响在别的论文里往往是几个点。
- 算力没写清。8 张 GPU,型号未给;60k + 30k 次更新、全局批 1,536、4.46B 参数,这个量在 H100 上是周级,换卡可能翻倍。65.8 ms 同理,没有硬件标注就没有可比性。
- 主干是别人的。BARD-VL-B4-Mask-4B-Instruct 是 Chen 等人 2026 年的工作,Concertina 的"复用原生算子"这个核心卖点完全依赖于这个主干的存在。如果 BARD-VL 权重或代码不可得,这套方法就没法照搬:换成自回归 VLM,"同一个 mask-and-reconstruct 算子"的论证就失效了。
- 关键超参没做敏感性分析。K=10 有相干性统计支撑,但腐蚀率分层、逆概率加权的 ϵ、风险头的损失权重 0.05、proposal 预算 4 与精修 5 这些,论文没给扫描曲线。
落地判断
值得试的团队
- 手里已有扩散式 VLM 底座、想让它出动作的团队。边际成本最低:不用新训专家,只要两个 4 层 MLP 加一套腐蚀调度。
- 对泛化比对绝对精度更敏感的团队。LIBERO-Plus 那 +6.1 点是这篇论文最实的收益。
- 想做"操作数据反哺 VLM"的团队。这是统一架构唯一无法被拼接替代的价值。
- 有诊断能力、愿意做审计的团队。EGC、NLR、ASCR 本身就可以拿来评估任何 VLA。
别碰的团队
- 需要真机部署、延迟预算紧到 10 ms 级的团队。论文全部延迟数据来自仿真路径,没有硬件标注,也没有真机闭环。
- 底座是自回归 VLM 的团队。抄不了:合法性来自"主干预训练时就在做掩码块重建",换成自回归底座只会得到一个没有预训练支撑的怪异目标。
- 想做多任务统一的团队。单目标才稳,加第二个坐标目标直接 −92%,这条路目前封死。
- 只想复现数字、不打算改架构的团队。清洗配方、BARD-VL 权重、8 张卡的预算,缺一样就复现不了 98.15%。
最小验证路径
如果你想在自己的栈上验一遍这个想法,我建议按这个顺序,每一步都能独立证伪:
- 先只验表示:动作从"每坐标一个 token"改成"每步一个连续 token",位置级 MLP 编解码,损失仍写在物理坐标上。看 EGC 是否变成 1.0、序列长度是否降到 H。不改主干与范式,风险最低。
- 再验算子:把动作槽位接进主干现有的遮蔽---重建流程,先只做单块(M=1)、单次前向(D=1, R=0)。单次前向就能出可用整块,说明块内双向在你手上成立。
- 然后验块宽:按自己的控制频率算相干性半衰期,取 K 覆盖 1--2 个动作原语,别照抄 10。
- 最后验审计:跑 NLR,看跨时耦合是否出现在主干中后层。若仍集中在接口,说明实现退化成了隐式动作头,退回第 1 步查编码器是否真的位置级。
- 全程用短预算对照(如 2,400 步)比较块宽与权重,别拿终态成绩做消融。
术语速查表
| 术语 | 原文 | 一句话解释 |
|---|---|---|
| VLA | Vision-Language-Action Model | 把视觉观测与语言指令直接映射成动作序列的策略模型 |
| eVLM | Embodied Vision-Language Model | 本文提出的形态:操作与认知共用一套参数、一套生成算子、一套目标 |
| 潜动作 token | continuous latent action token | 把一个控制步的完整 D 维动作压成主干隐空间里的一个 d 维向量 |
| 掩码块重建 | masked block reconstruction | 主干预训练时的生成方式:按块遮蔽再补回,块内双向、块间因果 |
| 腐蚀率 | corruption rate, t_{n,b} |
一个块里被替换成未知动作哨兵的时间步比例,按块分层采样 |
| 逆概率加权 | inverse-t weighting | 按 1/t 加权被遮蔽位置,使不同腐蚀率下的损失同尺度 |
| 打包教师强制 | packed teacher forcing | 把前缀、腐蚀副本、干净副本拼成一条序列,一次前向监督所有块 |
| 块宽 | K |
一个块里的动作步数,本文取 10 |
| EGC | Error-Geometry Consistency | 单位训练误差到物理误差的跨度 p95/p05,越接近 1 越好 |
| NLR | non-local response ratio | 响应能量里落在 6 步之外的比例,用来定位跨时耦合发生在哪 |
| ASCR | Action-Specific Capacity Ratio | 只服务动作生成的参数占总参数比例 |
| 风险头 | token-risk head | 从 detach 的隐状态回归对数重建误差,给解码槽位排优先级 |
| 相干性半衰期 | coherence half-life | 动作增量方向余弦首次跌破 0.5 的帧间滞后,本文测得 19 帧 |
| Knowledge Insulation | --- | 挡掉动作专家梯度、保护主干的做法,本文证明设计对了就不需要 |