1. 离散扩散VLA:机器人动作生成的新范式
当机械臂需要执行"将勺子放在毛巾上"这类复杂指令时,传统方法往往面临两难选择:要么采用自回归模型像念课文一样逐帧生成动作(速度慢且难以修正错误),要么使用连续扩散模型(需要额外训练扩散模块导致系统割裂)。香港大学穆尧团队提出的Discrete Diffusion VLA技术,通过将离散扩散引入视觉-语言-动作(VLA)模型,成功解决了这一行业痛点。
这项技术的核心创新在于用单一Transformer架构统一处理视觉、语言和动作三种模态。就像拼图高手会先拼出边缘部分再填充中心区域一样,该模型采用"先易后难"的自适应解码策略——早期迭代处理高置信度的简单动作片段,后期再逐步修正复杂部分。实测表明,在Franka Panda机械臂的LIBERO任务中成功率高达96.3%,比传统方法提升近20个百分点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构深度解析
2.1 整体设计思路
传统VLA模型存在明显的架构割裂问题:视觉和语言处理通常使用基于Transformer的预训练模型,而动作生成则要额外挂载扩散或自回归模块。Discrete Diffusion VLA的创新之处在于:
- 模态统一:将连续动作空间离散化为256个token,使动作数据与视觉/语言token具有相同表征形式
- 训练统一:沿用标准掩码语言建模(MLM)目标,无需为扩散模块设计特殊训练流程
- 架构统一:单个Transformer同时处理三种模态,参数共享率达100%
这种设计使得模型参数量减少约40%(相比挂载额外扩散模块的方案),推理速度提升4.7倍。
2.2 关键组件实现
2.2.1 输入编码层
-
视觉编码:采用SigLIP+DINOv2 ViT双编码器架构
- SigLIP提取物体识别特征
- DINOv2捕获空间关系特征
- 多视角图像(第三人称+手腕相机)分别编码后拼接
-
语言编码:直接使用Llama 2 tokenizer
- 支持自然语言指令输入
- 最大长度扩展到512token以适应复杂指令
-
动作离散化:
python复制# 7维连续动作空间(位置+旋转+夹持)离散化示例 action_bins = np.linspace(-1, 1, 256) # 每个维度256个分箱 discretized_action = [np.digitize(a, action_bins) for a in continuous_action]
2.2.2 统一Transformer层
采用Prismatic-7B作为backbone,关键改进包括:
-
注意力掩码设计:
- 视觉↔语言:完全双向注意力
- 动作→视觉/语言:双向注意力
- 视觉/语言→动作:受限注意力(防止信息泄漏)
-
位置编码扩展:
- 基础位置编码扩展到2048长度
- 新增模态类型编码(视觉=0, 语言=1, 动作=2)
2.2.3 自适应解码策略
创新性地将离散扩散过程转化为迭代式掩码预测:
-
置信度计算:
math复制\text{confidence}_i = \max(\text{softmax}(logits_i)) -
余弦调度保留率:
math复制\gamma_t = 0.5 \times (1 + \cos(\pi \times t/T)) -
重掩码校验:
- 残差校验:|p_t - p_{t-1}| > θ → 重新掩码
- 阈值θ随迭代线性衰减
3. 训练与推理全流程
3.1 训练流程优化
-
动态掩码调度:
- 线性调度:γ ∼ U(0.1, 1.0)
- 余弦调度:γ = 0.5(1 + cos(π·rand()))
-
混合精度训练:
- 主干网络:bf16精度
- 分类头:fp32精度
- 梯度裁剪阈值:1.0
-
课程学习策略:
- 第一阶段:固定γ=0.5(中等难度)
- 第二阶段:随机采样γ(全难度)
- 第三阶段:偏向小γ(精细调整)
3.2 推理过程详解
推理时12次迭代的典型过程:
| 迭代轮次 | 保留率 | 重掩码比例 | 典型耗时(ms) |
|---|---|---|---|
| 1 | 0.15 | 0.30 | 42 |
| 3 | 0.35 | 0.25 | 38 |
| 6 | 0.60 | 0.15 | 35 |
| 9 | 0.85 | 0.05 | 33 |
| 12 | 1.00 | 0.00 | 31 |
关键技巧:
- 早期迭代使用高温(T=1.0)采样鼓励探索
- 中期迭代逐步降温(T→0.5)稳定预测
- 后期迭代使用低温(T=0.1)确保确定性
4. 实战性能对比
4.1 LIBERO基准测试
在4类任务上的成功率对比(%):
| 任务类型 | 自回归(AR) | 连续扩散 | Discrete Diffusion VLA |
|---|---|---|---|
| Object | 82.3 | 94.7 | 98.6 |
| Spatial | 79.1 | 93.5 | 97.2 |
| Goal | 72.8 | 92.0 | 97.4 |
| Long | 63.8 | 90.1 | 92.0 |
优势分析:
- 长序列任务(Long)提升最显著(+28.2%)
- 空间关系任务(Spatial)错误率降低60%
- 物体交互任务(Object)接近人类水平
4.2 跨域迁移能力
Sim2Real性能对比(WidowX机械臂):
| 指标 | π₀ | Ours | 提升幅度 |
|---|---|---|---|
| 抓取成功率 | 52.1% | 70.8% | +18.7% |
| 堆叠成功率 | 45.3% | 79.2% | +33.9% |
| 避障成功率 | 38.7% | 62.1% | +23.4% |
关键发现:
- 对动态光照变化鲁棒性提升2.3倍
- 物体尺寸变化适应能力提升1.8倍
- 背景干扰下的稳定性提升1.5倍
5. 工程实践要点
5.1 部署优化方案
-
量化部署:
- 主干网络:8bit量化(损失<0.5%)
- 分类头:16bit保留
- 内存占用减少63%
-
延迟优化:
bash复制# 使用TensorRT加速 trtexec --onnx=model.onnx --fp16 --saveEngine=model.engine -
缓存机制:
- 视觉特征缓存3帧
- 语言指令编码预计算
- 实时性提升40%
5.2 常见问题排查
-
动作抖动问题:
- 检查离散化分箱是否均匀
- 增加重掩码残差阈值θ
- 尝试降低最后3轮的温度
-
长序列退化:
- 扩展动作token位置编码
- 增加最大生成长度
- 调整余弦调度结束值(0.1→0.05)
-
跨域适配建议:
- 在新域收集5%的标注数据
- 仅微调动作分类头
- 保持视觉/语言编码器冻结
6. 扩展应用方向
这项技术可延伸至多个领域:
-
医疗机器人:
- 手术动作规划
- 超声探头导航
- 误差敏感场景优势明显
-
无人驾驶:
- 连续决策序列生成
- 复杂路况应对
- 实时性要求满足
-
工业质检:
- 多角度检测路径规划
- 异常处理动作生成
- 适应不同产品型号
在实际部署中发现,将温度调度改为指数衰减(T=exp(-t/4))可使复杂任务成功率再提升2-3%。这种细调技巧在官方代码中尚未体现,值得开发者尝试。
