终极指南:如何快速将OpenVLA模型从Prismatic格式转换为HuggingFace兼容模型

张开发
2026/4/13 15:45:13 15 分钟阅读

分享文章

终极指南:如何快速将OpenVLA模型从Prismatic格式转换为HuggingFace兼容模型
终极指南如何快速将OpenVLA模型从Prismatic格式转换为HuggingFace兼容模型【免费下载链接】openvlaOpenVLA: An open-source vision-language-action model for robotic manipulation.项目地址: https://gitcode.com/gh_mirrors/op/openvlaOpenVLA是一个开源的视觉-语言-动作模型专为机器人操作设计。本文将详细介绍如何将OpenVLA模型从Prismatic格式转换为HuggingFace兼容模型以便在transformers库中使用。准备工作环境与工具在开始转换之前确保你的环境中已安装必要的依赖。项目提供了两个关键的转换脚本分别用于Prismatic和OpenVLA模型的转换convert_prismatic_weights_to_hf.py用于将Prismatic VLM权重转换为HuggingFace格式convert_openvla_weights_to_hf.py专门用于OpenVLA模型的转换克隆项目仓库首先克隆OpenVLA项目仓库到本地git clone https://gitcode.com/gh_mirrors/op/openvla cd openvla转换流程从Prismatic到HuggingFace1. Prismatic模型转换Prismatic模型转换脚本位于scripts/extern/convert_prismatic_weights_to_hf.py主要步骤包括加载Prismatic配置和检查点创建HuggingFace配置对象实例化并修补分词器加载视觉 backbone 和图像处理器重映射状态字典键保存转换后的模型基本使用命令python scripts/extern/convert_prismatic_weights_to_hf.py \ --prismatic_model_path_or_id PRISMATIC_MODEL_PATH \ --output_hf_model_local_path OUTPUT_PATH2. OpenVLA模型转换OpenVLA专用转换脚本位于vla-scripts/extern/convert_openvla_weights_to_hf.py相比Prismatic转换它增加了对动作预测头和特定 normalization 统计的处理。主要转换步骤加载OpenVLA配置和检查点创建OpenVLAConfig对象处理数据集统计信息实例化图像处理器和分词器重映射状态字典包括视觉 backbone、投影器和LLM backbone保存转换后的模型和处理器基本使用命令python vla-scripts/extern/convert_openvla_weights_to_hf.py \ --openvla_model_path_or_id OPENVLA_MODEL_PATH \ --output_hf_model_local_path OUTPUT_PATH关键技术细节状态字典重映射转换过程中最关键的步骤之一是状态字典的重映射。项目定义了投影器键的映射关系PROJECTOR_KEY_MAPPING { projector.0.weight: projector.fc1.weight, projector.0.bias: projector.fc1.bias, projector.2.weight: projector.fc2.weight, projector.2.bias: projector.fc2.bias, projector.4.weight: projector.fc3.weight, projector.4.bias: projector.fc3.bias, }此外LLM backbone的键需要从llm.前缀替换为language_model.而视觉 backbone 则需要添加vision_backbone.前缀。视觉Backbone补丁由于HuggingFace Transformers会覆盖包含gamma的参数名需要对视觉backbone的LayerScale进行补丁def ls_apply_patch(ls_module: LayerScale): ls_module.scale_factor nn.Parameter(ls_module.gamma.clone()) ls_module.forward _ls_new_forward.__get__(ls_module, LayerScale) del ls_module.gamma验证转换结果转换完成后可以使用以下代码验证模型是否正确加载from transformers import AutoModelForVision2Seq, AutoProcessor model AutoModelForVision2Seq.from_pretrained( OUTPUT_PATH, trust_remote_codeTrue ) processor AutoProcessor.from_pretrained( OUTPUT_PATH, trust_remote_codeTrue )如果模型成功加载则转换过程完成。常见问题解决缺少依赖项如果遇到依赖问题可以参考项目根目录下的requirements-min.txt安装必要的依赖包。HF Token问题转换脚本需要HuggingFace Hub的访问令牌特别是对于像LLaMa-2这样的 gated 模型。可以通过以下方式提供令牌创建.hf_token文件并存储令牌通过--hf_token参数直接指定内存问题转换大型模型可能需要大量内存。如果遇到内存不足问题可以使用max_shard_size参数将模型分片保存在具有更多内存的机器上执行转换总结通过本文介绍的步骤你可以轻松将OpenVLA模型从Prismatic格式转换为HuggingFace兼容模型。这使得OpenVLA模型可以无缝集成到HuggingFace生态系统中利用transformers库的强大功能进行推理和部署。转换后的模型可以通过trust_remote_codeTrue参数直接加载为机器人操作任务提供强大的视觉-语言-动作建模能力。无论是研究还是应用开发这一转换过程都是使用OpenVLA模型的关键一步。【免费下载链接】openvlaOpenVLA: An open-source vision-language-action model for robotic manipulation.项目地址: https://gitcode.com/gh_mirrors/op/openvla创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章