跳转至

constants.py — 定义了 OpenVLA-OFT 模型使用的常量

文件路径: verl/experimental/vla/models/openvla_oft/constants.py 模块路径: verl.experimental.vla.models.openvla_oft.constants

文件概述

定义了 OpenVLA-OFT 模型使用的常量,包括平台特定参数(不同机器人平台的动作维度)、归一化类型和动作 token 索引。

关键代码

平台常量

# LIBERO 平台
ACTION_DIM = 7          # 动作维度:3位移 + 3旋转 + 1抓手
NUM_ACTIONS_CHUNK = 1   # 每次预测的动作步数

# 如果是 ALOHA 双臂机器人
# ACTION_DIM = 14       # 两个手臂各 7 维
# NUM_ACTIONS_CHUNK = 1

归一化类型

class NormalizationType(Enum):
    """动作归一化的方式"""
    BOUNDS = "bounds"       # 使用 min/max 归一化
    BOUNDS_Q99 = "bounds_q99"  # 使用 1%/99% 分位数归一化(更鲁棒)

# 当前使用的归一化类型
ACTION_PROPRIO_NORMALIZATION_TYPE = NormalizationType.BOUNDS_Q99

Token 索引

ACTION_TOKEN_BEGIN_IDX = 31744  # 动作 token 在词表中的起始位置
STOP_INDEX = 2                  # 停止 token 的索引
IGNORE_INDEX = -100             # 在损失计算中忽略的标签值(PyTorch 约定)

自动平台检测

def auto_detect_platform():
    """根据模型配置自动检测机器人平台"""
    # 检查 action_dim、num_action_chunks 等参数
    # 返回对应的平台常量
    ...

核心常量列表

常量 值 说明
ACTION_DIM 7 动作空间维度
NUM_ACTIONS_CHUNK 1 动作 chunk 长度
ACTION_TOKEN_BEGIN_IDX 31744 动作 token 起始索引
STOP_INDEX 2 停止 token
IGNORE_INDEX -100 忽略标签

与其他模块的关系

  • 被 modeling_prismatic.py 广泛使用(动作 mask 计算、token 索引)
  • 被 train_utils.py 使用

小结

这个文件定义了 OpenVLA 模型的"魔法数字"。理解这些常量对于理解模型的动作预测机制至关重要,特别是 ACTION_TOKEN_BEGIN_IDX 和 ACTION_DIM,它们决定了模型如何在词表中找到动作 token。