pi0 and pi0-FAST:用于通用机器人控制的视觉-语言-动作模型

Hugging Face 已将由 Physical Intelligence 开发的通用视觉-语言-动作 (VLA) 模型 π0 and π0-FAST 集成到了 LeRobot 仓库中。这些模型通过利用大规模预训练和创新的动作表示技术,使机器人能够在不同的硬件配置下执行复杂的灵巧操作任务。

π0:通过流匹配实现通用机器人控制

π0 (Pi-Zero) 是一种专为通用机器人控制设计的 VLA 模型,它在来自七个机器人平台和 68 个独特任务的数据上进行了训练。它能够在零样本 (zero-shot) 和微调设置下执行现实世界的任务,如折叠衣物、装购物篮、组装纸箱和物体检索。

与标准的机器人策略不同,π0 使用 flow matching 以 50Hz 的频率生成平滑的实时动作轨迹。这一过程从随机噪声开始,并逐渐收敛到一系列电机动作序列,确保模型在部署过程中既高效又精准。

π0-FAST:自回归效率与 FAST 分词

π0-FAST 是 π0 的自回归版本,它利用 Frequency-space Action Sequence Tokenization (FAST) 来提高训练速度和动作保真度。

π0-FAST 的主要优势

π0-FAST 相比基于扩散 (diffusion) 的 VLA 有几项改进:

  • 训练速度: 实现了 5 倍的训练加速。
  • 动作表示: 减少了动作序列中的冗余,从而提高了表示能力。
  • 泛化能力: 在不同的机器人形态和未知环境中表现出更强的泛化能力。

FAST 分词的工作原理

FAST 使用 Discrete Cosine Transform (DCT) 将连续的动作序列压缩为离散的 token。该流程遵循以下步骤:

  1. 归一化: 将原始机器人动作进行分位数归一化到 [-1, 1] 范围内,以确保不同系统之间的一致性。
  2. DCT 变换: 将每个动作维度从时域转换到频域。
  3. 压缩: 通过缩放并取整操作移除不重要的系数。
  4. 展平: 将生成的稀疏 DCT 系数矩阵展平为 1D 整数序列,并优先考虑低频分量。
  5. BPE 编码: 使用字节对编码 (BPE) 合并频繁出现的模式,以维持固定大小的词表。

由于这些操作是可逆的,因此可以无损地重建动作。一个通用版本 FAST+ 已在来自移动机器人、双臂机器人和单臂机器人的 100 万个动作序列上进行了训练,并作为 Hugging Face AutoProcessor 提供使用。

技术架构:VLA 注意力机制

VLA 通过结合动作和观测状态 token 扩展了视觉-语言模型 (VLM)。π0 采用了一种特定的注意力结构来处理这些多模态输入:

  • Prefix Tokens: 代表完整的场景(图像和文本)并相互完全关注,类似于 PaliGemma。
  • State Tokens: 代表机器人当前的运行环境状态(例如关节角度)。它们以三角(因果)方式关注 prefix tokens 和之前的 state tokens。
  • Action Tokens: 代表电机指令序列。这些 token 对图像 token、文本 token、状态 token 和其他动作 token(不包括 padding)具有完全可见性。

使用 FlexAttention 优化注意力

为了处理由此产生的 2D 因果掩码(表现出强烈的块稀疏性),实现过程中使用了 PyTorch FlexAttention。该团队没有使用朴素的矩阵乘法或 FlashAttention2(后者在处理不规则块掩码时表现不佳),而是使用通过对因果掩码进行索引创建的块掩码。这种方法有效地跳过了不必要的计算,提高了性能。

在 LeRobot 中的实现

π0 和 π0-FAST 现在已在 LeRobot 仓库中可用。用户可以对预训练模型进行推理,或针对特定环境对其进行微调。微调可以通过 lerobot/scripts/train.py 脚本执行,从而使基础 π0 模型能够适应特定的机器人任务和环境。

Sources