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。