小白篇:先搞懂"扩散模型用在机器人上"到底在干什么

如果你对扩散模型和机器人的交叉不熟,先读这里。

扩散模型不只是画图的

大多数人对扩散模型的印象是"画图"–从噪声一步步去噪生成图片。但扩散模型的本质是:

从一个混乱的起点,一步步"整形"成目标形状。

这个"形状"可以是图片,也可以是一条机器人动作轨迹

这就是 RDT(Robotics Diffusion Transformer)的核心思想:用扩散模型生成机器人动作

为什么机器人需要扩散模型?

机器人动作有两个特点,让传统方法很难处理:

特点一:多模态(同一个任务可能有多种正确做法)

"ABC"""

传统回归模型(如 ACT)会把三种做法"平均"成一条轨迹–结果是一条谁都不像的"鬼影"轨迹。

扩散模型天然擅长建模多模态分布–它可以在采样时"选择"其中一个模式,生成一条清晰、合理的轨迹。

特点二:双臂协调更复杂

12~~714

这就是为什么 RDT 选择扩散模型–它是目前唯一能同时解决多模态和高维动作的生成方法。

RDT 系列两篇论文一览

RDT-1BRDT-2
时间2024.10(ICLR 2025)2026.02
核心目标双臂操作基础模型跨具身零样本泛化
基座模型自研 DiT(1.2B)Qwen2.5-VL(7B VLM)+ 动作专家(400M)
生成方法DDPM 扩散Flow Matching(更高效)
训练数据46 个数据集,1M+ 轨迹10,000+ 小时 UMI 人类演示
核心创新统一动作空间 + 大规模预训练RVQ 对齐语言与动作 + 三阶段训练
推理速度5 步去噪1 步蒸馏(UltraFast 版)

RDT-1B:第一个机器人扩散基础模型

要解决什么问题?

双臂机器人操作面临两大难题:

  1. 数据稀缺:特定机器人的数据极少(不像互联网有海量图片/文字)
  2. 多模态动作分布:两只手协调时,同一个任务有多种正确做法

现有方法的困境:

方法做法问题
ACT(回归)直接回归动作均值多模态时"平均"成鬼影轨迹
Octo(离散化)把连续动作离散成 token精度损失,丢失连续性
OpenVLA(VLA)用 LLM 预测离散动作 token动作空间受限,不适用高维双臂

RDT 的解法:用扩散模型建模动作分布 + 用 Transformer 做可扩展的骨干网络

整体架构:DiT + 多模态编码

:R:GBa1:,(a(23TD,5i-TX)X(.)L2,8aM6L,4SPi1(g+.L2IFBPo6u4troi)6ke4ern)totkoeknen

扩散模型在 RDT 中怎么工作?–逐公式拆解

训练时:给动作加噪声,学着去噪

RDT 用的是标准 DDPM(Denoising Diffusion Probabilistic Model):

第一步:加噪(前向过程)

$$a_t^k = \sqrt{\bar\alpha^k} \cdot a_t^0 + \sqrt{1 - \bar\alpha^k} \cdot \varepsilon$$

翻译成人话:

  • $a_t^0$:真实的动作轨迹(64 步 x 维度)
  • $\varepsilon \sim \mathcal{N}(0, I)$:随机噪声
  • $k$:当前加噪到第几步(从 1 到 1000)
  • $\bar\alpha^k$:噪声调度参数,随 $k$ 增大而减小
  • $a_t^k$:加噪后的动作轨迹

直觉:$k$ 小 -> 噪声少,动作还比较清晰;$k$ 大 -> 噪声多,动作接近纯噪声。

第二步:训练网络预测噪声

$$\mathcal{L} = \mathbb{E}\Big[\big\| \varepsilon - f_\theta(\ell, o_t, a_t^k, k) \big\|^2\Big]$$

翻译:

  • $f_\theta$:RDT 网络(DiT),输入是语言 $\ell$、观测 $o_t$、加噪动作 $a_t^k$、时间步 $k$
  • 输出:预测的噪声 $\hat\varepsilon$
  • 正确答案:真实的噪声 $\varepsilon$
  • Loss:MSE(预测噪声 vs 真实噪声)

训练目标:让网络学会"从带噪动作中识别出噪声"。训练完后,它就能从纯噪声中一步步去噪,生成合理动作。

推理时:从噪声出发,5 步去噪

012345aaaaaa³²¹======~N(0,I)

用 DPM-Solver++ 加速器,只需要 5 步就能从噪声变成高质量动作(比原始 DDPM 的 1000 步快 200 倍)。

为什么用 DiT 而不是普通 Transformer?

RDT 用的是 DiT(Diffusion Transformer),和普通 Transformer 有三个关键区别:

区别一:QKNorm + RMSNorm

# 普通 Transformer
output = softmax(Q @ K.T / sqrt(d)) @ V  # 可能数值爆炸

# RDT 的 DiT
Q = rmsnorm(Q)  # 归一化
K = rmsnorm(K)  # 归一化
output = softmax(Q @ K.T / sqrt(d)) @ V  # 稳定

为什么?机器人动作是时间序列,Token 之间的对称性很重要。普通 LayerNorm 会破坏这种对称性,导致大规模预训练时数值爆炸。RMSNorm 不做中心化,保留了时间序列的对称结构。

区别二:MLP 解码器

# 普通 DiT:最后用线性层
output = linear(latent)  # 线性投影

# RDT:最后用 MLP
output = mlp(latent)     # 非线性投影

为什么?机器人动力学是非线性的(关节角度 -> 末端位置不是线性关系)。线性层无法捕捉这种非线性,MLP 可以。消融实验显示:去掉 MLP 解码器,灵巧操作任务成功率暴跌。

区别三:交替条件注入(ACI)

# 普通 DiT:所有条件一起注入
tokens = concat([image_tokens, text_tokens, noisy_action])

# RDT:交替注入
for layer in layers:
    if layer % 2 == 0:
        tokens = cross_attention(tokens, image_tokens)  # 偶数层注入图像
    else:
        tokens = cross_attention(tokens, text_tokens)   # 奇数层注入文本

为什么?图像 token 远多于文本 token(3 张图 x 196 patch = 588 token vs 文本 ~20 token)。如果同时注入,图像会"淹没"文本信息。交替注入让每种模态都有独立的交互窗口。

统一动作空间(PIUAS):让不同机器人"说同一种语言"

这是 RDT 最巧妙的设计之一。

问题:46 个数据集来自不同机器人–有的是 6 自由度机械臂,有的是 7 自由度,有的是双臂,有的是单臂。它们的动作格式完全不同。

解法:设计一个 128 维的统一向量,每个维度有固定的物理含义:

[[[[[[[[[[[01123335611,0550390000,,,,,,,,031,,012333466)5503920511))))))))0238))线/160D(x姿,y,z)

每个机器人把自己的动作"映射"到这个统一空间:

  • 7 自由度双臂:填满左右臂各 7 个关节位置
  • 6 自由度单臂:填右臂前 6 个位置,其余补零
  • 移动机器人:额外填底座速度

好处

  1. 不同机器人可以共享同一个模型
  2. 每个维度有物理含义–模型能学到"关节角度变化 -> 末端移动"这种可迁移的物理规律
  3. 未使用的维度补零,不引入噪声

训练:预训练 + 微调两阶段

预训练(大规模多机器人数据)

项目内容
数据46 个数据集,1M+ 轨迹,21 TB
来源RT-1, DROID, RH20T, Mobile ALOHA, BridgeData V2, Open X-Embodiment 等
硬件48 x H100 80GB GPU
时间~1 个月
步数1,000,000 步
批大小32 x 48 = 1,536

微调(目标任务)

项目内容
数据自建双臂数据集:300+ 任务,6K+ 轨迹
时间~3 天
步数130,000 步
数据增强颜色抖动、图像损坏、高斯噪声、GPT-4 扩展语言指令

实验结果

零样本泛化(Zero-Shot)

任务ACTRDT
未见物体25%50%
未见场景0%62.5%
语言指令跟随50%100%

消融实验–扩散模型的贡献有多大?

变体未见物体未见场景指令跟随
不用扩散(直接回归)12.5%50%12.5%
小模型(166M 参数)37.5%62.5%25%
不预训练(从零开始)0%25%62.5%
RDT(完整版)50%62.5%100%

关键发现:扩散建模、大规模预训练、大模型规模三个因素缺一不可


RDT-2:从"会操作"到"跨具身零样本"

RDT-1B 的局限

RDT-1B 虽然强,但有三个问题:

  1. 推理太慢:5 步去噪对实时控制(如打乒乓球)来说还是太慢
  2. 不能跨具身:训练时用的机器人和部署时必须一样
  3. 语言理解有限:用冻结的 T5 编码语言,不能理解复杂指令

RDT-2 的解法:用 7B VLM 替换自研骨干 + Flow Matching 替换 DDPM + 三阶段训练

架构:7B VLM + 400M 动作专家

RRDDTT--12BQw+eDni2T.51-.V42L0B07M=B==+++
RDT-1BRDT-2
骨干自研 DiT 1.2BQwen2.5-VL 7B(冻结)
动作生成DiT 自己做独立动作专家 400M
语言理解T5-XXL(冻结)Qwen2.5-VL 原生(强得多)
注意力Multi-Head AttentionGQA(Grouped Query Attention,更快)

核心创新一:RVQ–把连续动作变成离散 token

这是 RDT-2 最关键的设计–用残差向量量化(RVQ)桥接语言和动作

问题:VLM(如 Qwen)处理的是离散 token(文字),扩散模型处理的是连续向量(动作)。两者格式不兼容。

解法:用 RVQ 把连续动作编码成离散 token,让 VLM 能"看懂"动作。

RVQ 的工作原理

t||12mAzk_1etD,cnoizdne,mbRC=o{^N8ok{Nk16.e,4,1x(k1zk241,})i6ne42.R(,^kCr2kx1)}1=4z-r2e1=(mkr11)-toek2e(nk2)

为什么用 RVQ 而不是普通 VQ?

方法同等量化误差需要的 token 数效率
均匀量化很多(效率低)
RVQ1x(最少)

RVQ 通过"残差逐级细化",用最少的 token 达到最低的量化误差。

RVQ 如何桥接语言和动作?

SSttaaVggLeeMV1L2tMokeVnL""M+VLMtokenF+tlooRkwVeQnMatch"tionk"genVLMtokenCEloss

关键洞察:VLM 不直接生成动作,而是提供"理解";动作专家不理解语义,只负责"执行"。分工明确。

核心创新二:Flow Matching 替换 DDPM

RDT-2 用 Flow Matching 替换了 RDT-1B 的 DDPM,效率大幅提升。

为什么 Flow Matching 更好?

DDPM(RDT-1B)Flow Matching(RDT-2)
训练目标预测噪声预测速度场 u = A_t - epsilon
路径弯路(逐步加噪再去噪)直线(从噪声直走到动作)
推理步数5 步(DPM-Solver++)5 步(Euler 积分)
训练收敛较慢更快(更直接的梯度信号)
与 VLM 兼容需要额外适配天然兼容(线性插值更简单)

Flow Matching 在 RDT-2 中的具体实现

训练时

$$A_t^\tau = (1-\tau)\varepsilon + \tau \cdot A_t$$$$\mathcal{L}_{\text{expert}} = \mathbb{E}\Big[\big\| v_\theta(\tau, A_t^\tau, \text{VLA}(\ell, o_t)) - (A_t - \varepsilon) \big\|^2\Big]$$

翻译:

  • $\tau \in [0, 1]$:流时间($\tau=0$ 是噪声,$\tau=1$ 是真实动作)
  • $A_t^\tau$:在 $\tau$ 时刻的插值动作
  • $v_\theta$:动作专家网络,预测速度场
  • 正确答案:$A_t - \varepsilon$(从噪声指向真实动作的方向)

推理时

AfA_o_trt^^0tvA1a_~u=t=^Ni{(n_t0ta,[hu0e+I,t0)a.0(2.t}2a,u=,0A.A_4_t,t^^t0ta.au6u,,+0V0.L.8A2](:lx,v_t))

VLA 骨干只算一次:在整个 5 步积分过程中,Qwen2.5-VL 的输出不变–只需要编码一次图像和语言,5 步积分只跑轻量的动作专家(400M),非常快。

核心创新三:三阶段训练配方

SSStttaaagggeeeVV12LL3VVMM5RLLFV=VMMVlLQLoM5vMws""RRMVVaFQQt"l1"c1o2hw8iKn4MMg0aS0tEMchi6"nt6FgoKlko"ewnM=at1cVhLiMngtokenCEloss

为什么需要三阶段?直接端到端不行吗?

如果直接在 VLM 上做扩散:扩散过程的噪声会破坏 VLM 预训练的离散知识–VLM 被训练来处理清晰的离散 token,给它加噪声会让它"忘记"语言理解能力。

三阶段的精妙之处

  1. Stage 1 用 RVQ 把动作变成离散 token -> VLM 用它熟悉的方式(CE loss)学习动作
  2. Stage 2 冻结 VLM -> 扩散过程只影响动作专家,不破坏 VLM
  3. Stage 3 蒸馏 -> 把多步采样压缩成单步,不改变模型能力

跨具身零样本泛化:4U 设置

RDT-2 实现了四个维度同时零样本泛化

维度含义怎么做到的
Unseen Embodiment从未见过的机器人UMI 是具身无关的–记录的是末端执行器位姿,不是关节角度
Unseen Scene从未见过的场景大规模数据覆盖 100+ 家庭环境
Unseen Object从未见过的物体VLM 的开放词汇理解能力
Unseen Instruction从未见过的指令VLM 的语言泛化能力

UMI 的关键作用:UMI(Universal Manipulation Interface)是一个手持设备,记录 6-DoF 末端执行器位姿 + 夹爪宽度。它不记录机器人关节角度–所以用 UMI 数据训练的策略,可以部署到任何机器人上(只要装了同款相机和夹爪)。

实验结果

零样本泛化(4U 设置)

RDT-2 是第一个在开放词汇任务上同时实现四个维度零样本泛化的模型。

下游任务表现

任务RDT-1BRDT-2提升
拾取物体62.5%100%+37.5%
拾取放置50%87.5%+37.5%
擦桌子25%75%+50%
按按钮37.5%87.5%+50%
摇晃物体12.5%62.5%+50%

打乒乓球(高速动态任务):

RDT-2-UltraFast(1 步蒸馏版)在打乒乓球任务上超越了所有基线,包括比它小得多的模型–证明单步蒸馏既快又准。


RDT -> RDT-2 的技术演进总结

维度RDT-1B(2024)RDT-2(2026)为什么改
骨干网络自研 DiT 1.2BQwen2.5-VL 7B + 动作专家 400MVLM 的语言/视觉理解远强于自研编码器
生成方法DDPM(5 步)Flow Matching(5 步->1 步蒸馏)FM 训练更快,蒸馏后推理更快
动作编码连接直接输入RVQ 离散化桥接 VLM 的离散 token 空间和动作的连续空间
训练方式单阶段扩散训练三阶段(RVQ->FM->蒸馏)保护 VLM 知识不被扩散破坏
数据46 数据集 1M 轨迹10,000+ 小时 UMI更大规模 + 具身无关数据
泛化能力同具身零样本跨具身零样本(4U)UMI + VLM 的开放词汇能力
推理速度5 步去噪1 步生成蒸馏压缩,实时控制

一句话总结

RDT 证明了"扩散模型 + 大规模预训练"是机器人基础模型的有效路径;RDT-2 在此基础上用 VLM 替换自研骨干、用 Flow Matching 替换 DDPM、用 RVQ 桥接语言与动作,实现了跨具身的零样本泛化–从"会操作一个机器人"进化到"理解任务后在任何机器人上操作"。


个人解读与思考

1. 扩散模型在机器人领域的独特优势

扩散模型在图像生成领域被 Flow Matching 追赶(后者更快),但在机器人动作生成领域仍有独特优势:

  • 多模态建模:双臂协调天然多模态,扩散模型能自然建模
  • 动作平滑性:去噪过程天然产生平滑轨迹(不像离散 token 可能有跳变)
  • 采样可控:可以通过调整去噪步数在质量和速度间权衡

RDT-2 的 Flow Matching 进一步说明:只要底层是生成式模型,具体用 DDPM 还是 FM 不重要,重要的是大规模数据 + 可扩展架构

2. RVQ 是连接语言和动作的关键桥梁

RDT-2 最有启发性的设计是 RVQ–它解决了一个根本问题:VLM 处理离散 token,动作是连续向量,两者格式不兼容

RVQ 不是唯一解法(pi0 用的是直接在连续空间做 Flow Matching),但它有一个独特优势:让 VLM 用它最熟悉的方式(下一个 token 预测)来理解动作。这保留了 VLM 预训练的全部知识。

3. UMI 数据是跨具身泛化的关键

RDT-2 的跨具身能力不是来自模型架构,而是来自数据–UMI 记录的是末端执行器位姿(具身无关),不是关节角度(具身相关)。这意味着:

数据格式的统一比模型架构的统一更重要。

4. 蒸馏让实时控制成为可能

RDT-2-UltraFast 的 1 步蒸馏证明:多步去噪的知识可以压缩到单步。这对高速任务(打乒乓球、接球)至关重要–5 步去噪的延迟可能让机器人错过最佳击球时机。


一句话总结

RDT = 扩散模型生成机器人动作(DiT 骨干 + DDPM + 统一动作空间,1.2B 参数,1M+ 轨迹预训练)。RDT-2 = VLM 理解 + Flow Matching 生成(7B VLM + RVQ 桥接 + 三阶段训练 + 1 步蒸馏,10K+ 小时 UMI 数据,跨具身零样本泛化)。


深度拆解:RVQ、DiT、GQA、PIUAS、π0 对比等核心概念全讲透

这一节专门回答常见困惑,每个概念都从"它到底是什么"讲起,配合流程图和伪代码。

一、RVQ 到底在干嘛?–为什么 Flow Matching 能直接输出连续动作,还要搞离散 token?

这是最核心的困惑。先说结论:

Flow Matching 确实能直接输出连续动作序列。RVQ 不是给 Flow Matching 用的,而是给 VLM 用的。

问题的根源:VLM 和动作专家"说不同的语言"

VLMVVLQLMwAMtecontk2tie.oon5kn-eVnE?Lx?p??te?or?-ktt>eonkentoken

RVQ 就是这个"翻译官"–它让 VLM 能"理解"动作,同时让动作专家能"接收" VLM 的理解。

RVQ 的完整工作流程

=1=D=128=z=zrr̂=AzCrC1rC7=_C11228t==tNimzz8o=Nn==_==_=kz=i8hhe_nR{az{arnh^etet1aRC1k1-22t^¹1¹k-k1{C,=z,2=86==_z{+45eehe=e_=kx11a1a22h1z12²rt²aaa,_4,g¹1,r²trh+}cmg2gkaoimm2t6dnii,24e._.nnb,k,__+okk=oee.=k1|2,=^z||=KKrrk=x}-}178+=}=1Ke--z=4=18_=1eeh=0|28a2|t4||8||z8

为什么用 RVQ 而不是普通 VQ?

普通 VQ(向量量化)

zinR^551122KK1C={ez¹,e²,z.,e^K}1token

RVQ(残差向量量化)

zin8R^5121K=1t10o2k4en8r1toKk^e8n2=1024^81r02^248

类比

RVQVQ81"""175cm+1707c0mkg18+0cm."

RVQ vs 普通 VQ

普通 VQRVQ(RDT-2)
量化方式1 级量化8 级残差量化
每个时间步需要的 token 数1 个8 个
量化精度低(码本要很大才够用)高(残差累积逼近原值)
码本大小K(如 1024)8 x K = 8K(但等效 K^8 的表达能力)
为什么选 RVQ-token 少 + 精度高

为什么不用 Flow Matching 直接输出连续动作,非要加 RVQ?

核心原因:VLM 需要离散 token 才能"理解"动作。

V12341234AL....B....MVVVVVLLLLLMMRMMMR线VVQQRRV线DQT-t2VoLkMeCnEVlLoMtsCosEkelnvoesrsVCLEMtolkoesCnsElossverVLMFM

方案 C:π₀ 原版的做法(不用 RVQ,也不用 FAST)

πV1234L....πMV-PLFa3MAl0Sπi0TGMem-"m>VaL"MF-l>ocwroFMsAassSte-Tclahftti-t/onae"kgtnettnei"inoztneironVLMKVKcVacchaecheFlowMatching

RVQ 在 RDT-2 完整 pipeline 中的位置

=======VVLV=L=12Af=LLoL=o=_oA=MMsM=s=tr_V=sV=s=+^tL=_L=_=+VF0tvA^M=tlACM=tAM=Lla_1=_r=_S=Mo~u=t=t[o""=t(E"=w^=sh(Ni{s_vM(ntQQR-"t_Va0aRwwtVE,tLQt,[uVSeeRoQnShMwc0(+QtnnVkttAe=ehI,t0a22QeraQ__t=ni)a.Rg..nogwtta=2n0u2Vhe55,pee^h,=.g.,}Q_--tynte=52t1VVo22atA=-,A=LLkV.ua_=V_6ReLRF5,t=L0tA4VtnMVl-=5.^_Qo8QoVt-=4ttkwLa,a^SetueutxttnoM)p0,aao,kas1.u1gkteti"6h4eh=eRtoncl,_+_=nVokhot1t=ttQkeinh0)0=oo{ennV)_..=kkkngLt82=ee1hM]=nn,=_:x=t"=t=kov=v=2ks=,e=n=+1=,=.t=,o=kk.e8,n+}RVQtoken7]

一句话总结 RVQ 的作用

RVQ 是训练时的"桥梁":把连续动作变成离散 token,让 VLM 用它熟悉的方式(CE loss)学会理解动作。推理时不需要 RVQ–VLM 直接输出特征向量,动作专家直接生成连续动作。


二、DiT vs 普通 Transformer:架构到底有什么区别?

DiT(Diffusion Transformer)不是"发明了一种新 Transformer",而是在标准 Transformer 基础上做了三处关键修改,让它特别适合做扩散模型的骨干网络。

完整架构对比

=TL=DM=ra=iL=aLLy---=TQQP----=tnaae=tKK=osyyr线=oBNNAQMA=kfeeN=kloodKLd=eorroL=eorraRNPa=nrNNra=ncmmpMop=moomy=ktLSrt=erre=++iiNmirmmrxvnovNDRReereEBoi2MMammlLrT8SSnrQ线nTboimNNoorecMFnR-oorradkuFeD>rrmmndlNaTmmaKasixtr-PlSlfni(1aiiiogN-LBtzL线zrHicaUamenhMFtteaeiuFiirdaflNoor=ytnnSl=i(Leo=+-LiGlg=HinPfi=EeneT-Gt=maea-AEs=bda+r2tL=ertU=dS=e=de=nil=tnfL=ig-Si=oLAin=nitLe=ntUa=eer=an=rt-)i>oLninear)

三处关键修改的详细解释

修改一:RMSNorm 替换 LayerNorm

# LayerNorm(普通 Transformer)
def layer_norm(x):
    mean = x.mean(dim=-1, keepdim=True)
    std = x.std(dim=-1, keepdim=True)
    return (x - mean) / (std + eps)  # 中心化 + 缩放

# RMSNorm(DiT)
def rms_norm(x):
    rms = x.pow(2).mean(dim=-1, keepdim=True).sqrt()
    return x / (rms + eps)  # 只缩放,不中心化

为什么?机器人动作是时间序列,token 之间的相对位置关系很重要。LayerNorm 会把每个 token 的均值减掉,破坏了"这个 token 比那个 token 大多少"的相对关系。RMSNorm 不减均值,保留了这种对称性。

修改二:QKNorm(Query-Key Normalization)

# 普通 Transformer 的注意力
Q = x @ W_Q  # 可能值很大
K = x @ W_K  # 可能值很大
attn = softmax(Q @ K.T / sqrt(d))  # Q @ K.T 可能爆炸 -> softmax 饱和 -> 梯度消失

# DiT 的注意力
Q = rms_norm(x @ W_Q)  # 归一化到合理范围
K = rms_norm(x @ W_K)  # 归一化到合理范围
attn = softmax(Q @ K.T / sqrt(d))  # 数值稳定

为什么?扩散模型在去噪过程中,噪声大小从 0 到 1 变化很大。如果不做 QKNorm,注意力分数会随噪声大小剧烈波动,训练不稳定。QKNorm 保证注意力分数始终在合理范围内。

修改三:MLP 解码器替换线性层

# 普通 DiT / Transformer:最后用线性层
output = linear(transformer_output)  # 线性投影:y = Wx + b

# RDT 的 DiT:最后用 MLP
h = silu(linear1(transformer_output))  # 第一层:y₁ = SiLU(W₁x + b₁)
output = linear2(h)                     # 第二层:y₂ = W₂y₁ + b₂

为什么?机器人动力学是高度非线性的:

线MLtttP线hhheeetttthaaaSeit===La线U091°08°0°(x(,0(.0y5,-,,00.z0,5),,00.0.8,3))0.3)

消融实验验证:去掉 MLP 解码器,换成线性层,灵巧操作(如拧瓶盖)的成功率从 62.5% 暴跌到 25%。

DiT 的 Adaptive Normalization:条件注入的机制

DiT 有一个普通 Transformer 没有的东西–Adaptive Normalization(自适应归一化):

# 普通 Transformer:条件信息通过注意力注入
# 所有条件(图像、文本、时间步)都 concat 成 token 序列

# DiT:条件信息通过归一化层注入
def adaptive_norm(x, condition):
    # condition 包含时间步 t 和语言/图像信息
    gamma, beta = mlp(condition).chunk(2, dim=-1)  # 从条件生成缩放和偏移
    return rms_norm(x) * (1 + gamma) + beta  # 缩放 + 偏移

# 在每个 DiT Block 中:
x = x + self_attn(adaptive_norm(x, condition))
x = x + ffn(adaptive_norm(x, condition))

为什么?扩散模型需要知道"当前在去噪的第几步"。这个时间步信息通过 Adaptive Normalization 注入每一层,而不是通过注意力。这样时间步信息能直接影响每一层的特征分布,而不仅仅是"参与计算"。


三、GQA vs MHA:注意力机制的区别

这是 RDT-1B 和 RDT-2 在骨干网络层面的核心区别之一。

MHA(Multi-Head Attention)– RDT-1B 用的

QKV===hoWxeu_xxxatQidp,4n@@@_uitWxRWWW_^___==Kd{QKV,_sscmeooWoqfn_d_tcVelma,leat²n(x(Ws(h_xeQeOq_ad_id_l_me@1(on,dd,K_e_mldio}_..dmT,eold/heexlsa)qddr__thm()odd_@ekl)W))_Oh@V_i(seq_len,d_k)

GQA(Grouped Query Attention)– RDT-2 用的

QKV===QQWWWWxh____xxx=QKVOiQ3::::n@@@204g,,,((((4RWWW/15dddd^___hhg,,____x{QKV=26mmmms8,,oooode37dddd_qQeeeem_lllloldeKxxxxen(((KKlsssdddd²xeee____qqqVmkvmxd___K01oo_llldxxd(meeeVee1onnnlggld,,,gVV))))-eldddh}___/mkv01go))dgel<)h)hggg<h

直观理解

MGHQAAMGHQAA==Q3322KKKVVV8QKKgPVVPTKVhPPT""

为什么 RDT-2 选 GQA?

MHA(RDT-1B)GQA(RDT-2)
KV 缓存大(每个头一组 KV)小(g 组 KV)
推理速度快 30-50%
显存占用
表达能力略弱,但够用
适用场景模型小(1.2B),不需要极致优化模型大(7B),需要控制计算量

RDT-2 用 7B 的 Qwen2.5-VL,如果用 MHA,KV 缓存会非常大。GQA 把 KV 头从 32 个减到 8 个,推理时省了 75% 的 KV 缓存,速度提升明显。


四、统一动作空间(PIUAS):到底是什么?

你说得对–PIUAS 本质上就是**“动作分桶分区间”**。但它的设计比简单的分桶更巧妙。

简单分桶 vs PIUAS

PI123U...AS76--0RDDO.D0133ooc5T01FFt-==[[[[o1==0503B,0,07,6,")5)3173212))52812"61828xy"767""1""1"

PIUAS 的完整维度定义

[[[[[[[[[[[[[[[[[[[[01123334456678889911,0550392500550392500,,,,,,,,,,,,,,,,,031,,012333445667888991)5503925005503925011))))))))))))))))002)38))线线线66DDv(x1x姿姿,0,vxvy,y,)vzy+),vz)(ωz)

为什么 PIUAS 比简单分桶好?

简单分桶PIUAS
维度含义无(桶编号 128 是什么?)(维度 30 = 右末端 x 坐标)
跨机器人桶编号对不上,不能共享模型维度对齐,可以共享模型
物理规律模型需要重新学习模型能学到"维度 0 变化 -> 维度 30 变化"的物理规律
未使用维度不确定填什么补零,明确无歧义

核心insight:PIUAS 让不同机器人的动作"说同一种语言"。模型在预训练时学到了"关节角度变化 -> 末端位置变化"这种可迁移的物理规律,而不是"这个机器人的编号 128 对应那个机器人的编号 256"这种不可迁移的映射。


五、UMI 和 4U 到底是什么?

UMI(Universal Manipulation Interface)

UMI 是斯坦福 Qiuyuan(Chi)团队在 2024 年提出的一个数据采集接口,核心思想是:

不记录机器人的关节角度,而是记录末端执行器的位姿。

UMIUM"I6姿-D"oF"-"-+--IM姿U(x,thye,taz,,rtxh,etray姿,,rz).,+theta

UMI 硬件

UMI1234....IIMUMUMUII(n+tel,RealSen姿se,D姿姿405RGB)-D

4U(四个 Unseen)

RDT-2 实现了四个维度同时零样本泛化

1234....UUUUnnnnsssseeeVeVeeeLeLnUFnnMnMMrUEIaMS1OImnIc0bnbke0jsoan+etdecritumc"etnitUoR"n5"-.>.."

为什么 4U 很厉害?

RDTVV-LL2MM"FUr4MaUInk"a""Franka

六、π₀ vs RDT-2:到底有什么区别?

很多人觉得 π₀ 和 RDT-2 很像(都是 VLM + 动作专家),但它们在动作专家如何获取 VLM 信息这个关键设计上有本质区别。

先搞清楚:π₀ 有两个版本

Physical Intelligence 发布了两个模型,很多人搞混:

π₀(原版)π₀-FAST(变体)
动作生成Flow Matching(连续输出)自回归 token 预测(离散输出)
动作编码不需要(直接 cross-attention 读 VLM)FAST tokenizer(DCT + BPE 压缩)
推理速度快(10 步去噪,~100ms)慢(30-60 个 token 逐个生成,~750ms)
动作专家300M 参数的独立 action expert用整个 2B VLM 做自回归解码

关键:π₀ 原版没有 FAST。π₀ 原版的动作专家通过 cross-attention 直接读取 VLM 的 KV cache,不需要任何离散化。π₀-FAST 才用 FAST tokenizer 做自回归解码。

架构对比:cross-attention vs RVQ

这是两个模型最核心的区别–动作专家如何获取 VLM 的语义信息

πVLMPPha3yl0Vsi0LiGMQMcesKc_ameVracVlmlocrLatfcstoMIo-asisn3kact-os"tBethoan-entektaleet@t"l+nnetitnKegit_neotivtnnoolictknmoeoe.nknTenVVtKLLoeMaMkytetneKnKVVdValctcuaoaecchVheLeM
RDTSS-tt2aVVaVVgLLgLLReMMeMMVVFQ1L2lSMotCwaV[EcgLRrMeMVloaQo"stS2tssctos-hak"aigetneRntgV,e1Q4n0t"0iMottn"ooRVkkVLeeQMcnnr,tVooLsRkMsVe-Qnattenttoikoenn]VLM

核心区别:cross-attention 的起点不同

πRDVVTVVLL-LLMM2MMKScVtcrar"ocgosaesscs-h1-aeat"t"tteRen"VntQtiio"oSnnta"geV1VLLMMKVcache

类比

πRDT=-2=VLM""""RVQ/Stage1

核心区别对比表

维度π₀ 原版π₀-FASTRDT-2
VLMPaliGemma 3BPaliGemma 3BQwen2.5-VL 7B
动作生成Flow Matching自回归 tokenFlow Matching
动作专家如何读 VLMcross-attention 读 KV cacheVLM 直接解码 tokencross-attention 读 VLM 特征
是否需要离散化不需要需要(FAST tokenizer)Stage 1 需要(RVQ),推理时不需要
VLM 是否需要理解动作不需要需要(学预测动作 token)需要(RVQ Stage 1 训练)
训练阶段2 阶段2 阶段3 阶段(多一步蒸馏)
推理步数5-10 步30-60 token1 步(蒸馏后)
模型大小3B + 300M 动作专家3B(全模型解码)7B + 400M
跨具身(UMI + 4U)

为什么 RDT-2 要用 RVQ 而不是直接 cross-attention?

这是最核心的问题。既然 π₀ 直接 cross-attention 就能工作,为什么 RDT-2 还要搞 RVQ?

πRVRR1DL2V3DTMQ使TV"-SS-VL2tSVt2LMV"atLVaVMLgaMLgVLMegMeLM"VeM"L12M1""πC"FS"SEVlttLo/aalMwggoeesM"saV11CtLEcM"hliCRonEVsgQslo"sFsl"owtoMkaSettncahgieng2VLM

一句话总结

π₀ 和 RDT-2 的根本区别不在于"用不用离散化",而在于"VLM 是否需要理解动作"。π₀ 的 VLM 不需要理解动作,动作专家自己从原始特征中提取信息;RDT-2 的 VLM 被 RVQ “教会"了理解动作,输出的特征更有语义,动作专家更容易学习。


七、为什么 Flow Matching 能直接输出连续动作,还要 RVQ?–最核心的困惑解答

这个问题值得单独回答,因为它是理解 RDT-2 架构的关键。

先澄清一个误解

RVQ 不是在推理时把 Flow Matching 的输出离散化。RVQ 是在训练时让 VLM “理解"动作的工具。

++hR_VtQVLMFlowMatchh_itngA_t

那 RVQ 在哪用?

RSSVttQaVVaVVgLLgLLeMMeMMV1L2AM_RSt[VtQagR"etVRoQR1VkVQetQno,ken"8FtCloEokweltnoMo,saksteRcnVhQi{nktg1o,ken1.,,k8.},RVQtoken7]

为什么不能跳过 Stage 1,直接训练动作专家?

V1234RVSL....VLtMQMaVVgRLLeVMMQS2tageS"Vt1CLa-/EMg>"VeLlMo2ss西""FlowMatching

一句话总结

RVQ 是训练时的"脚手架”:帮助 VLM 理解动作。房子盖好后(训练完成),脚手架拆掉(推理时不用 RVQ),房子照样站得住(VLM 输出的特征已经有语义了)。


参考

  • RDT-1B:Liu S, Wu L, Li B, et al. RDT-1B: a Diffusion Foundation Model for Bimanual Manipulation (ICLR 2025)
  • RDT-2:Liu S, Li B, Ma K, et al. RDT2: Exploring the Scaling Limit of UMI Data Towards Zero-Shot Cross-Embodiment Generalization (arXiv:2602.03310)
  • 代码库:https://github.com/thu-ml/RoboticsDiffusionTransformer
  • 模型:https://huggingface.co/robotics-diffusion-transformer/rdt-1b
  • DiT:Peebles & Xie, Scalable Diffusion Models with Transformers (ICCV 2023)
  • DDPM:Ho et al., Denoising Diffusion Probabilistic Models (NeurIPS 2020)
  • Flow Matching:Lipman et al., Flow Matching for Generative Modeling (ICLR 2023)
  • UMI:Chi et al., Universal Manipulation Interface (RSS 2024)
  • π₀:Black K, et al. π₀: A Vision-Language-Action Flow Model for General Robot Control (2024)