跳转至

configuration_prismatic.py — 定义了 Prismatic 系列模型(包括 OpenVLA)的 HuggingFace 配置类

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

文件概述

定义了 Prismatic 系列模型(包括 OpenVLA)的 HuggingFace 配置类。配置类包含模型架构参数、视觉骨干配置、文本模型配置等。

核心类

PrismaticConfig

class PrismaticConfig(PretrainedConfig):
    """Prismatic VLM 的基础配置"""
    model_type = "prismatic"

    def __init__(
        self,
        # 视觉骨干配置
        use_fused_vision_backbone=True,   # 是否使用双骨干融合
        image_sizes=[224, 224],           # 输入图像尺寸
        timm_model_ids=["vit_so400m_patch14_siglip_224"],  # TIMM 模型ID
        timm_override_act_layers=[None],  # 激活函数覆盖

        # 文本模型配置
        text_config=None,                 # LLM 配置(如 Llama)

        # 其他
        pad_token_id=32000,
        pad_to_multiple_of=64,
        **kwargs
    ):
        super().__init__(**kwargs)
        ...

OpenVLAConfig(继承 PrismaticConfig)

class OpenVLAConfig(PrismaticConfig):
    """OpenVLA 专用配置,增加动作预测参数"""
    model_type = "openvla"

    def __init__(
        self,
        n_action_bins=256,     # 动作离散化的 bin 数量
        norm_stats=None,       # 动作归一化统计量
        **kwargs
    ):
        super().__init__(**kwargs)
        self.n_action_bins = n_action_bins
        self.norm_stats = norm_stats

视觉骨干映射

配置中包含预定义的骨干组合映射:

# model_id -> (视觉骨干列表, 融合标志, 图像尺寸列表, 激活层覆盖)
VISION_BACKBONE_MAPPING = {
    "siglip-224px": (
        ["vit_so400m_patch14_siglip_224"],
        False,
        [224],
        [None]
    ),
    "dinosiglip-224px": (
        ["vit_so400m_patch14_siglip_224", "vit_large_patch14_dinov2"],
        True,     # 融合双骨干
        [224, 224],
        [None, "gelu"]
    ),
}

核心类列表

名称 类型 说明
PrismaticConfig 配置类 Prismatic VLM 基础配置
OpenVLAConfig 配置类 OpenVLA 专用配置(含动作参数)

与其他模块的关系

  • 被 modeling_prismatic.py 的模型类使用
  • 被 register_vla_models.py 注册到 HuggingFace

小结

配置类是 HuggingFace 模型的"身份证"。model_type 字段决定了 AutoModel 如何找到对应的模型类。OpenVLA 通过继承 Prismatic 配置并添加 n_action_bins 等参数,将视觉语言模型扩展为动作预测模型。