跳转至

configuration_pi0_torch.py — 定义 PI0 模型的 HuggingFace 配置类

文件路径: verl/experimental/vla/models/pi0_torch/configuration_pi0_torch.py 模块路径: verl.experimental.vla.models.pi0_torch.configuration_pi0_torch

文件概述

定义 PI0 模型的 HuggingFace 配置类,包含状态/动作归一化统计量和 PI0.5 开关。

关键代码

class PI0TorchConfig(PretrainedConfig):
    """PI0/PI0.5 模型配置"""
    model_type = "pi0_torch"

    def __init__(
        self,
        state_norm_stats=None,   # 状态归一化统计量 {mean, std}
        action_norm_stats=None,  # 动作归一化统计量 {mean, std, q01, q99}
        pi05_enabled=False,      # 是否启用 PI0.5 模式
        sac_enable=False,        # 是否启用 SAC 支持
        double_q=True,           # 是否使用 Double Q(SAC)
        **kwargs
    ):
        super().__init__(**kwargs)
        self.state_norm_stats = state_norm_stats
        self.action_norm_stats = action_norm_stats
        self.pi05_enabled = pi05_enabled
        self.sac_enable = sac_enable
        self.double_q = double_q

PI0 vs PI0.5 的区别

特性 PI0 PI0.5
时间条件化 拼接到动作嵌入 通过 AdaRMS 调制
状态输入 通过投影层 忽略(直接用图像)
文本提示长度 最大 48 token 最大 200 token
pi05_enabled False True

与其他模块的关系

  • 被 PI0ForActionPrediction(modeling_pi0_torch.py)使用
  • 被 register_vla_models.py 注册到 AutoConfig

小结

PI0 的配置相比 OpenVLA 更简洁,核心差异在于使用归一化统计量(连续动作空间)而非离散 bin。pi05_enabled 是区分 PI0 和 PI0.5 两个版本的关键开关。