
人工智能大模型具身智能机器人多模态微调LoRA预训练【免费下载链接】openvlaOpenVLA: An open-source vision-language-action model for robotic manipulation.项目地址https://gitcode.com/gh_mirrors/op/openvla点击查看免费下载OpenVLA 是一个开源的视觉-语言-动作Vision-Language-ActionVLA模型用于通用机器人操作。本指南以仓库根目录的 README.md 为主线结合仓库源码系统讲解 OpenVLA 的环境安装、零样本推理、LoRA 与全量微调、从零训练、真实机器人BridgeData V2 WidowX与仿真LIBERO评估以及微调后性能问题的排查实践。读完本文你将掌握 OpenVLA 从加载即用到私有数据集微调 部署 评估的完整闭环能力。项目概览一个可扩展的 VLA 训练与微调代码库OpenVLA 提供了一套简单且可扩展的代码库用于训练和微调面向通用机器人操作的 VLA 模型核心设计目标有三点多种数据集混合Different Dataset Mixtures原生支持任意 RLDS 格式的数据集包括 Open X-Embodiment Dataset 的OXE_NAMED_MIXTURES字典中。易于扩展Easy Scaling基于 PyTorch FSDP 与 Flash-Attention可高效训练 1B34B 参数的模型模型架构易于适配。原生微调支持Native Fine-Tuning Support内置全量、部分、LoRA 等多种微调方式及配套示例。整个仓库构建于 Prismatic VLMs 之上顶层目录结构如下详见 README 的 Repository Structure 一节prismatic/包源码提供模型加载、训练、数据预处理等核心工具vla-scripts/VLA 训练、微调、部署的核心脚本experiments/在真实机器人环境中评估 OpenVLA 策略的代码LICENSE全部代码以 MIT License 发布pyproject.toml完整的项目配置与依赖声明。快速上手加载 openvla-7b 进行零样本推理轻量级推理接口对于只想加载并运行 OpenVLA 做推理的场景项目提供了基于 HuggingFacetransformersAutoClasses 的轻量接口依赖极少。以在 BridgeData V2 环境的 WidowX 机器人上做零样本指令跟随为例# 安装最小依赖torch、transformers、timm、tokenizers ... # pip install -r requirements-min.txt from transformers import AutoModelForVision2Seq, AutoProcessor from PIL import Image import torch # 加载 Processor 与 VLA processor AutoProcessor.from_pretrained(openvla/openvla-7b, trust_remote_codeTrue) vla AutoModelForVision2Seq.from_pretrained( openvla/openvla-7b, attn_implementationflash_attention_2, # [可选] 需要安装 flash_attn torch_dtypetorch.bfloat16, low_cpu_mem_usageTrue, trust_remote_codeTrue ).to(cuda:0) # 获取图像输入并构造提示词 image: Image.Image get_from_camera(...) prompt In: What action should the robot take to {INSTRUCTION}?\nOut: # 预测动作7-DoF按 BridgeData V2 反归一化 inputs processor(prompt, image).to(cuda:0, dtypetorch.bfloat16) action vla.predict_action(**inputs, unnorm_keybridge_orig, do_sampleFalse) # 执行动作... robot.act(action, ...)需要说明的是requirements-min.txt明确锁定了推理所需的最小依赖版本torch2.2.0、torchvision0.16.0、transformers4.40.1、timm0.9.10、tokenizers0.19.1。此外README 指出仓库中的scripts/目录是原始 prismatic-vlms 的遗留用于训练和评估视觉条件语言模型虽然本仓库既能训练 VLM 也能训练 VLA但用scripts/generate.py对现有 OpenVLA 模型做文本生成是行不通的——因为当前 OpenVLA 模型只训练了生成动作且仅生成动作。提示词模板与动作反归一化的源码级原理从 processing_prismatic.py 可以看到PrismaticProcessor.__call__会同时把文本交给底层 LLM tokenizer、把图像交给PrismaticImageProcessor最终返回包含input_ids、attention_mask、pixel_values的BatchFeature并校验图像与文本数量一致。predict_action的完整流程定义在 modeling_prismatic.py它内部调用self.generate()生成动作 token然后按词汇表倒数第 N 个 token 对应第 N 个离散动作 bin的约定把 token 解码为归一化的连续动作再结合unnorm_key指定的数据集统计量q01/q99分位数做反归一化公式为actions 0.5 * (normalized_actions 1) * (action_high - action_low) action_low其中action_high q99、action_low q01unnorm_key为空时若模型只在一个数据集上训练过norm_stats长度恰好为 1则自动取唯一键否则会断言报错并提示可用的 key 列表见_check_unnorm_keymodeling_prismatic.py。REST API 部署项目在 deploy.py 中提供了一个轻量级 REST API 服务依赖pip install uvicorn fastapi json-numpy把 OpenVLA 模型封装成POST /act接口便于把模型集成进现有机器人控制栈、免除对机器人端算力的要求import requests import json_numpy json_numpy.patch() import numpy as np action requests.post( http://0.0.0.0:8000/act, json{image: np.zeros((256, 256, 3), dtypenp.uint8), instruction: do something} ).json()服务端实现要点deploy.py提示词按模型版本区分v01系列使用 Vicuna 风格模板... USER: What action should the robot take to {instruction}? ASSISTANT:而标准版使用In: ...?\nOut:若传入的是本地微调后的目录会自动读取目录下的dataset_statistics.json填充norm_stats支持unnorm_key可选字段指定反归一化所用的数据集统计若服务不在公网可通过ssh -L 8000:localhost:8000 ssh USERSERVER_IP做端口转发。预训练模型与许可说明项目在 HuggingFace 上发布了两个 OpenVLA 模型checkpoint、配置与模型卡均可在 HuggingFace 页面获取openvla-7b论文旗舰模型基于 Prismaticprism-dinosiglip-224pxVLM融合 DINOv2 与 SigLIP 的视觉骨干 Llama-2 LLM在 Open X-Embodiment 大型数据集混合覆盖 970K 条轨迹即 README 中的 Open-X Magic Soup上训练混合权重详见 mixtures.py 的oxe_magic_soup_plus。openvla-v01-7b早期开发模型基于siglip-224pxVLM单一 SigLIP 视觉骨干 Vicuña v1.5 LLM在 Octo 同款数据集混合即 Open-X Magic Soup上训练但 GPU 训练时长显著少于最终模型。许可与商用注意事项虽然仓库代码以 MIT License 发布但预训练模型可能继承底层基础模型的限制——上述两个模型都派生自 Llama-2因此受 Llama Community License 约束。安装环境全量预训练 / 分布式微调注意以下安装说明适用于全量预训练与分布式微调若只需推理或轻量微调请使用上文快速上手一节的最小依赖方案。仓库基于 Python 3.10 构建向后兼容 Python 3.8要求 PyTorch 2.2.*。当前版本经完整测试的依赖组合为PyTorch 2.2.0、torchvision 0.17.0、transformers 4.40.1、tokenizers 0.19.1、timm 0.9.10、flash-attn 2.5.5。由于后续版本的transformers、timm、tokenizers出现过回归与破坏性变更项目明确钉死了上述版本。# 创建并激活 conda 环境 conda create -n openvla python3.10 -y conda activate openvla # 安装 PyTorch。以下为示例命令请按你的计算平台到官方页面选择合适指令 conda install pytorch torchvision torchaudio pytorch-cuda12.4 -c pytorch -c nvidia -y # UPDATE ME! # 克隆并安装 openvla 仓库 git clone https://github.com/openvla/openvla.git cd openvla pip install -e . # 训练需要安装 Flash Attention 2若失败可先执行 pip cache remove flash_attn pip install packaging ninja ninja --version; echo $? # 验证 Ninja -- 应返回退出码 0 pip install flash-attn2.5.5 --no-build-isolation通过 LoRA 微调 OpenVLALoRALow-Rank Adaptation微调是算力有限时的推荐方案主脚本为 finetune.py。下面的示例在单张 A100 80GB GPU 上对 BridgeData V2 微调openvla-7b若 GPU 显存更小——不低于约 27GB——可调小 batch size 来适配。第一步下载 BridgeData V2 数据集# 切换到你的基础数据集目录 cd PATH TO BASE DATASETS DIR # 下载完整数据集124 GB wget -r -nH --cut-dirs4 --rejectindex.html* https://rail.eecs.berkeley.edu/datasets/bridge_release/data/tfds/bridge_dataset/ # 重命名为 bridge_orig注意省略此步可能导致后续运行时错误 mv bridge_dataset bridge_orig第二步启动 LoRA 微调torchrun --standalone --nnodes 1 --nproc-per-node 1 vla-scripts/finetune.py \ --vla_path openvla/openvla-7b \ --data_root_dir PATH TO BASE DATASETS DIR \ --dataset_name bridge_orig \ --run_root_dir PATH TO LOG/CHECKPOINT DIR \ --adapter_tmp_dir PATH TO TEMPORARY DIR TO SAVE ADAPTER WEIGHTS \ --lora_rank 32 \ --batch_size 16 \ --grad_accumulation_steps 1 \ --learning_rate 5e-4 \ --image_aug True or False \ --wandb_project PROJECT \ --wandb_entity ENTITY \ --save_steps NUMBER OF GRADIENT STEPS PER CHECKPOINT SAVE参数说明与内存提示--batch_size16搭配--grad_accumulation_steps1约需 72GB 显存显存较小时应降低--batch_size并增大--grad_accumulation_steps以维持足够大的有效 batch size 保证训练稳定。多卡训练时把torchrun中的--nproc-per-node设置为可用 GPU 数即可脚本内部会用 PyTorch DDP 包装模型。注意若把--image_aug设为False训练日志中会观察到接近 100% 的action_accuracy因为openvla-7b已经在包含 BridgeData V2 的超集上未加增强预训练过。源码视角FinetuneConfig 与训练循环从 finetune.py 的FinetuneConfig可以看到各参数默认值vla_pathopenvla/openvla-7b、batch_size16、max_steps200_000、save_steps5000、learning_rate5e-4、image_augTrue、shuffle_buffer_size100_000LoRA 侧为lora_rank32、lora_dropout0.0并支持use_quantization4-bit NF4 量化以省显存但会损伤性能仅支持 LoRA 模式。训练循环的关键实现finetune.py使用 PEFT 的LoraConfig默认target_modulesall-linear、init_lora_weightsgaussian、lora_alphamin(lora_rank, 16)数据加载走 RLDS 管线RLDSBatchTransform动作 tokenizer 提示词构造 图像变换RLDSDataset其中提示词构造根据模型版本选择PurePromptBuilder标准版或VicunaV15ChatPromptBuilderv01版数据集统计量用于推理时的动作反归一化会在训练开始时由主进程保存到 run 目录动作离散化由 action_tokenizer.py 的ActionTokenizer完成把连续动作按 256 个 bin 均匀离散化bins256, min_action-1, max_action1并映射到词汇表末尾 256 个最少使用的 tokenaction_token_begin_idx vocab_size - 257——这正是predict_action解码约定倒数第 N 个 token 第 N 个 bin的来源训练中同时记录train_loss、action_accuracy、l1_loss对离散 token 解码回连续动作后计算 L1三项指标并每 10 个梯度步推送 WB保存 checkpoint 时先把 LoRA adapter 权重存到临时目录再用PeftModel.merge_and_unload()合并回完整模型save_latest_checkpoint_onlyTrue默认会持续覆盖最新 checkpoint否则保存到带 step 后缀的独立目录。微调其他数据集OXE 数据可从 Open X-Embodiment mixture 下载社区有prepare_open_x.sh之类的脚本可参考自定义数据两条路径任选——(a) 转换为与微调脚本兼容的 RLDS 格式推荐预训练与微调实验均基于 RLDS 管线测试更充分(b) 自行实现 PyTorch Dataset 包装器见finetune.py注释。选择 (a) 时需要分别在 configs.py 注册数据集配置观测与动作空间定义、在 transforms.py 注册标准化转换函数然后在OXE_NAMED_MIXTURES中定义混合。全量微调 OpenVLA7.5B 参数全量微调所有 7.5B 参数需要使用 Prismatic VLMs 训练脚本经原生 PyTorch FSDP 分布式训练。它更进阶、更复杂仅推荐在算力充足如一整台 8×A100且 LoRA 不足以满足需求例如微调分布与预训练分布差异过大时使用。下载 Prismatic 兼容 checkpoint全量微调需要一个与 Prismatic VLMs 代码库兼容的 checkpoint 版本openvla-7b-prismatic约 30GB# 切换到你的基础模型 checkpoint 目录 cd PATH TO BASE MODEL CHECKPOINTS DIR # 下载 checkpoint30 GB git clone githf.co:openvla/openvla-7b-prismatic # 若上述命令未下载完整 checkpoint请通过 git LFS 手动拉取 cd openvla-7b-prismatic git lfs fetch --all准备数据集与 HF Token下载 BridgeData V2命令与 LoRA 一节相同含mv bridge_dataset bridge_orig重命名步骤。然后在仓库根目录创建.hf_token文件写入 HuggingFace 用户访问令牌以hf_开头# 进入 openvla 根目录 cd openvla # 把 HF token 值写入令牌文件。请把 hf_... 替换为你自己的 token echo hf_... .hf_token启动全量微调以下命令在单节点 8 张 GPU 上对 BridgeData V2 全量微调。要调整节点/GPU 数量请修改 prismatic/conf/vla.py 中的 VLA 训练配置并同步调整--nnodes与--nproc-per-nodetorchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts/train.py \ --pretrained_checkpoint PATH TO openvla/openvla-7b-prismatic CHECKPOINT FILE: step-295000-epoch-40-loss0.2200.pt \ --vla.type prism-dinosiglip-224pxmx-bridge \ --data_root_dir PATH TO BASE DATASETS DIR \ --run_root_dir PATH TO LOG/CHECKPOINT DIR \ --run_id OPTIONAL RUN ID FOR WANDB LOGGING \ --image_aug True or False \ --wandb_project PROJECT \ --wandb_entity ENTITY \ --save_interval NUMBER OF GRADIENT STEPS PER CHECKPOINT SAVE \ --is_resume False关于恢复训练--is_resume在上面设为False因为我们是用预训练 checkpoint 开启新训练而非恢复中断的 run。若训练中断需从最新 checkpoint 恢复应把--pretrained_checkpoint指向最新 checkpoint并设置--is_resume True、--resume_step与--resume_epoch为对应的 step 与 epoch 号例如 checkpoint 名为step-010000-epoch-20-loss0.0160.pt则resume_step10000、resume_epoch20。注意跑 BridgeData V2 微调命令时训练日志中应能观察到接近 100% 的 Action Token Accuracy——原因同上模型已在包含 BridgeData V2 的超集上预训练过。源码视角TrainConfig 与 VLAConfigvla-scripts/train.py的入口TrainConfigtrain.py通过draccus提供模块化的 dataclass 配置接口关键参数包括data_root_dir、run_root_dir、pretrained_checkpoint、is_resume/resume_step/resume_epoch、save_interval默认 2500 步、image_aug默认 False、seed默认 7、hf_token路径、trackers默认 jsonl wandb。它会在__post_init__中从self.vla提升训练参数并校验expected_world_size与实际 GPU 数一致不一致会直接断言失败。VLAConfigprismatic/conf/vla.py定义了每个训练变体的完整参数面vla_id、base_vlm、freeze_vision_backbone/freeze_llm_backbone/unfreeze_last_llm_layer、数据混合data_mix与shuffle_buffer_size、优化参数epochs/max_steps、expected_world_size、global_batch_size、per_device_batch_size、learning_rate、weight_decay、max_grad_norm、lr_scheduler_type、warmup_ratio、训练策略train_strategy以及默认开启的梯度 checkpointing 和 BF16 混合精度。以Exp_DinoSigLIP_224px_Bridgeprism-dinosiglip-224pxmx-bridge为例其配置为8 GPU、global batch 256、per-device batch 32、学习率 2e-5、constant 调度器、FSDP full-shard。全量微调其他数据集除 BridgeData V2 外可下载 OXE mixture 数据或把自定义数据转为 RLDS 格式随后需要修改以下四类文件prismatic/conf/vla.py新建一个实验类作为训练配置并在文件底部注册到VLARegistry。必须为微调 run 创建唯一vla_id并按需调整expected_world_size、per_device_batch_size、global_batch_size、shuffle_buffer_size等变量各变量含义见文件顶部VLAConfig注释prismatic/vla/datasets/rlds/oxe/mixtures.py在OXE_NAMED_MIXTURES字典中为微调混合定义新的 mixtureprismatic/vla/datasets/rlds/oxe/transforms.py为微调数据集定义新的标准化转换函数并注册到文件底部的OXE_STANDARDIZATION_TRANSFORMSprismatic/vla/datasets/rlds/oxe/configs.py在OXE_DATASET_CONFIGS中新增配置声明数据集的观测与动作空间例如 configs.py 中bridge_orig的image_obs_keys为image_0/image_1、state_encodingPOS_EULER、action_encodingEEF_POS。完成后用vla-scripts/train.py启动并把--vla.type设为新vla_id。微调结束后需要把最终 checkpoint 转换为 HuggingFacetransformers兼容格式见下一节。把 Prismatic 模型转换为 HuggingFace 格式若你通过 Prismatic VLMs 代码库训练了模型例如对 OpenVLA 做了全量微调需要把最终 checkpoint 转为 HuggingFace AutoClasses 可加载的格式。转换脚本 convert_openvla_weights_to_hf.py 期望输入名为latest-checkpoint.pt的 checkpoint 文件因此先建立符号链接# 进入 Prismatic 训练 run 的 checkpoints 目录 cd PRISMATIC_RUN_DIR/checkpoints # 创建指向目标 checkpoint 的符号链接 ln -s YOUR CHECKPOINT FILENAME latest-checkpoint.pt然后运行转换脚本python vla-scripts/extern/convert_openvla_weights_to_hf.py \ --openvla_model_path_or_id PRISMATIC_RUN_DIR \ --output_hf_model_local_path OUTPUT DIR FOR CONVERTED CHECKPOINT转换完成后可用 HF AutoClasses 正常加载。由于加载的是本地 checkpoint而非从 HF Hub 拉取需要先手动把 OpenVLA 注册到 AutoClassesimport torch from transformers import AutoConfig, AutoImageProcessor, AutoModelForVision2Seq, AutoProcessor from prismatic.extern.hf.configuration_prismatic import OpenVLAConfig from prismatic.extern.hf.modeling_prismatic import OpenVLAForActionPrediction from prismatic.extern.hf.processing_prismatic import PrismaticImageProcessor, PrismaticProcessor # 把 OpenVLA 模型注册到 HF AutoClasses若已推到 HF Hub 则无需此步 AutoConfig.register(openvla, OpenVLAConfig) AutoImageProcessor.register(OpenVLAConfig, PrismaticImageProcessor) AutoProcessor.register(OpenVLAConfig, PrismaticProcessor) AutoModelForVision2Seq.register(OpenVLAConfig, OpenVLAForActionPrediction) # 加载 Processor 与 VLA processor AutoProcessor.from_pretrained(PATH TO CONVERTED CHECKPOINT DIR, trust_remote_codeTrue) vla AutoModelForVision2Seq.from_pretrained( PATH TO CONVERTED CHECKPOINT DIR, attn_implementationflash_attention_2, # [可选] 需要安装 flash_attn torch_dtypetorch.bfloat16, low_cpu_mem_usageTrue, trust_remote_codeTrue, ).to(cuda:0) ...值得指出的是finetune.py 在启动时也会执行同样的 AutoClasses 注册逻辑因此这套注册代码是加载本地 OpenVLA checkpoint 的标准前置步骤。从零训练 VLA 模型仓库提供了在任意子集的Open X-Embodiment 数据集上从零训练 VLA 的完整说明与配置。预训练数据集准备各数据集按 RLDS 格式 下载与预处理社区有prepare_open_x.sh之类的脚本可参考。openvla-7b所用的全部组件数据集与混合权重见 mixtures.py。重要对于 BridgeData V2 组件OXE 中的版本已过时截至 2023/12/20。应从官方站点下载原始数据集并放到bridge_orig/子目录下并把 OXE 代码中对bridge的引用全部替换为bridge_orig。混合定义中确实同时保留了bridge_oxe注释掉与bridge_orig两条记录实际启用的是bridge_orig见 mixtures.py。训练配置与启动命令VLA 训练的入口是 vla-scripts/train.py通过draccus提供模块化、基于 dataclass 的配置接口已有 VLA 配置集中在 prismatic/conf/vla.py可通过--vla.type命令行参数引用也可自行新增配置。训练使用 PyTorch FSDP 跨 GPU 分发通过torchrun启动# 使用 Prismatic DINO-SigLIP 224px 骨干在单节点8 GPU上以 BridgeData V2 训练 VLA torchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts/train.py \ --vla.type prism-dinosiglip-224pxmx-bridge \ --data_root_dir PATH TO OXE DATA ROOT \ --run_root_dir PATH TO LOG/CHECKPOINT ROOT \ --wandb_project PROJECT \ --wandb_entity ENTITY已知问题排查VLA TroubleshootingFileNotFoundError: Failed to construct dataset fractal20220817_data, builder_kwargs {data_dir: /path/to/processed/datasets/}: Could not load dataset info from fractal20220817_data/0.1.0/dataset_info.json修复降级tensorflow-datasetspip install tensorflow-datasets4.9.3。AttributeError: DLataset object has no attribute traj_map. Did you mean: flat_map?修复升级dlimp到最新版本可能需要强制重装pip install --no-deps --force-reinstall githttps://github.com/moojink/dlimp_openvla。评估 OpenVLA真实机器人BridgeData V2与仿真LIBEROBridgeData V2 WidowX 真机评估环境搭建克隆 BridgeData V2 WidowX 控制器仓库 并安装widowx_envs包git clone https://github.com/rail-berkeley/bridge_data_robot.git cd bridge_data_robot pip install -e widowx_envs再安装edgeml库git clone https://github.com/youliangtan/edgeml.git cd edgeml pip install -e .最后按bridge_data_robotREADME 的指引创建 Bridge WidowX Docker 容器。启动评估服务器-客户端模式终端一例如在 tmux 中启动 WidowX Docker 容器cd bridge_data_robot ./generate_usb_config.sh USB_CONNECTOR_CHART$(pwd)/usb_connector_chart.yml docker compose up --build robonet终端二运行 WidowX 机器人服务器cd bridge_data_robot docker compose exec robonet bash -lic widowx_env_service --server终端三运行 OpenVLA 策略评估脚本cd openvla python experiments/robot/bridge/run_bridgev2_eval.py \ --model_family openvla \ --pretrained_checkpoint openvla/openvla-7b已知坑若报ModuleNotFoundError: No module named moviepy.editor可在 bridge_data_robot 仓库的 requirements.txt 中把moviepy固定为moviepy1.0.3然后回到第一步重建并重启 WidowX Docker 容器。从 run_bridgev2_eval.py 的配置看评估脚本会自动把unnorm_key固定为bridge_orig与快速上手示例一致并内置 WidowX 的初始末端位姿init_ee_pos、init_ee_quat、工作空间边界bounds、相机话题/blue/image_raw、control_frequency5、每 episode 上限max_steps60等默认参数同时脚本断言center_crop必须为 FalseBridge 评估不需要中心裁剪。LIBERO 仿真基准评估论文v2附录 E 讨论了在 LIBERO 模拟基准上微调 OpenVLA 的方法包括对提供的演示数据集的改造细节并给出如下结果每个成功率是 3 个随机种子 × 每任务 500 次 rollout 的平均值即 10 任务 × 每任务 50 次 rolloutMethodLIBERO-SpatialLIBERO-ObjectLIBERO-GoalLIBERO-LongAverageDiffusion Policy from scratch78.3 ± 1.1%92.5 ± 0.7%68.3 ± 1.2%50.5 ± 1.3%72.4 ± 0.7%Octo fine-tuned78.9 ± 1.0%85.7 ± 0.9%84.6 ± 0.9%51.1 ± 1.3%75.1 ± 0.6%OpenVLA fine-tuned (ours)84.7 ± 0.9%88.4 ± 0.8%79.2 ± 1.0%53.7 ± 1.3%76.5 ± 0.6%LIBERO 环境搭建克隆并安装 LIBERO 仓库git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git cd LIBERO pip install -e .再安装其余依赖cd openvla pip install -r experiments/robot/libero/libero_requirements.txt可选下载论文微调实验使用的 LIBERO 数据集修改版LIBERO-Spatial、LIBERO-Object、LIBERO-Goal、LIBERO-10RLDS 格式共约 10GB可用于微调 OpenVLA 或训练其他方法此步可选因为下面提供了预训练好的 OpenVLA checkpoint。生成修改版数据集的原始 HDF5 脚本位于 regenerate_libero_dataset.py转 RLDS 格式的代码可参考社区rlds_dataset_builder仓库git clone githf.co:datasets/openvla/modified_libero_rlds启动 LIBERO 评估项目在四个 LIBERO 任务套件上分别用 LoRAr32独立微调了 OpenVLA四个 checkpoint 均可在 HuggingFace 获取openvla-7b-finetuned-libero-spatial/-object/-goal/-10。下面四条命令会自动下载对应 checkpoint# 启动 LIBERO-Spatial 评估 python experiments/robot/libero/run_libero_eval.py \ --model_family openvla \ --pretrained_checkpoint openvla/openvla-7b-finetuned-libero-spatial \ --task_suite_name libero_spatial \ --center_crop True # 启动 LIBERO-Object 评估 python experiments/robot/libero/run_libero_eval.py \ --model_family openvla \ --pretrained_checkpoint openvla/openvla-7b-finetuned-libero-object \ --task_suite_name libero_object \ --center_crop True # 启动 LIBERO-Goal 评估 python experiments/robot/libero/run_libero_eval.py \ --model_family openvla \ --pretrained_checkpoint openvla/openvla-7b-finetuned-libero-goal \ --task_suite_name libero_goal \ --center_crop True # 启动 LIBERO-10LIBERO-Long评估 python experiments/robot/libero/run_libero_eval.py \ --model_family openvla \ --pretrained_checkpoint openvla/openvla-7b-finetuned-libero-10 \ --task_suite_name libero_10 \ --center_crop True评估注意事项评估脚本默认运行 500 次试验10 任务 × 每任务 50 episode可用--num_trials_per_task修改每任务试验次数用--seed修改随机种子必须设置--center_crop True因为微调时使用了随机裁剪增强每个训练样本随机裁剪 90% 面积测试时对应取中心 90% 裁剪脚本默认在本地记录结果若需同步到 Weights Biases设置--use_wandb True并指定--wandb_project PROJECT与--wandb_entity ENTITY论文结果是在Python 3.10.13、PyTorch 2.2.0、transformers 4.40.1、flash-attn 2.5.5、NVIDIA A100上、三个随机种子取平均得到的请保持这些包版本。由于大模型的 GPU 非确定性换用不同 GPU 评估结果可能略有差异不过在 A100 的不同机器间已验证结果一致。VLA 性能问题排查指南微调后的 VLA 策略性能不佳时可参考以下最佳实践。先记住一个重要前提OpenVLA 通常需要在目标域机器人的小规模演示数据集约 100 条演示上微调开箱即用的情况下它只在训练数据覆盖的领域上表现良好。两个必备的健全性检查Sanity Checks回放演示动作从微调数据集中取一条演示并回放其动作确认机器人能成功完成任务——这能验证数据采集管线是否正确回放训练输入微调完成后把模型加载进推理管线就像用于控制机器人那样但喂入的是微调数据集的图像假装它们来自机器人验证能否复现训练时的 token 准确率 / L1 误差——这能验证推理管线是否正确。若两项检查都通过问题大概率不在模型训练而在微调所用的数据。微调数据采集的最佳实践控制频率控制在 5–10HzOpenVLA 未用 action chunking 训练经验上难以应对高频数据。若机器人控制器频率较高如 50Hz考虑把动作降采样到 5Hz并先用 5Hz 动作验证机器人仍能完成任务即用 5Hz 动作重做上述检查 1避免采集中的停顿与小动作同样因为无 action chunking模型对数据中的空闲动作敏感。若数据里含有机器人几乎不动的步骤推理时模型可能卡在这些步骤上。尽量用连续、缓慢的运动采集演示保证足够的覆盖多样性若打算在测试中引入变化如物体初始位置不同确保微调数据同样包含足够多样的初始条件演示采集时保持一致的策略这不是硬约束但能让建模更容易。尽量用一致的方式演示任务如同侧接近物体、即使子步骤可任意排序也按固定顺序执行。一致性带来更少多模态的微调数据集降低建模难度。引用方式如果本项目的代码或模型对你的工作有帮助请引用论文arXiv:2406.09246article{kim24openvla, title{OpenVLA: An Open-Source Vision-Language-Action Model}, author{{Moo Jin} Kim and Karl Pertsch and Siddharth Karamcheti and Ted Xiao and Ashwin Balakrishna and Suraj Nair and Rafael Rafailov and Ethan Foster and Grace Lam and Pannag Sanketi and Quan Vuong and Thomas Kollar and Benjamin Burchfiel and Russ Tedrake and Dorsa Sadigh and Sergey Levine and Percy Liang and Chelsea Finn}, journal {arXiv preprint arXiv:2406.09246}, year{2024} }延伸阅读仓库内的关键源码入口vla-scripts/finetune.pyLoRA 微调主脚本含全部参数默认值与训练循环vla-scripts/train.pyFSDP 全量训练入口含恢复训练逻辑与配置校验vla-scripts/deploy.pyREST API 部署服务prismatic/conf/vla.pyVLA 训练配置注册表prismatic/vla/datasets/rlds/oxe/mixtures.pyOXE 数据集混合与采样权重prismatic/vla/datasets/rlds/oxe/configs.py各数据集的观测/动作空间配置prismatic/vla/action_tokenizer.py连续动作的 256-bin 离散化 tokenizerprismatic/extern/hf/modeling_prismatic.pyOpenVLAForActionPrediction与predict_action实现experiments/robot/bridge/run_bridgev2_eval.py 与 experiments/robot/libero/run_libero_eval.py真机与仿真评估脚本。另外仓库的 Makefile 默认支持 lint检查与自动修复可作为代码规范工具使用pyproject.toml 内含完整的项目配置与依赖声明。官方最近还发布了 OFTOptimized Fine-Tuning recipe相比标准微调推理提速 25–50 倍、支持多输入图像与高频双臂控制、使用连续动作与 FAST动作 tokenizer将动作块压缩为更少 token离散动作推理最多提速 15 倍两项相关工作可结合自身场景关注。赞分享人工智能大模型具身智能机器人多模态微调LoRA预训练【免费下载链接】openvlaOpenVLA: An open-source vision-language-action model for robotic manipulation.项目地址https://gitcode.com/gh_mirrors/op/openvla点击查看免费下载相关推荐OpenVLA开源的视觉-语言-动作模型OpenVLA开源的视觉 语言 动作模型 项目介绍 OpenVLA 是一个开源的视觉 语言 动作模型VLA专为通用机器人操作任务设计。该项目提供了一个简人工智能大模型具身智能机器人多模态微调LoRA预训练OpenVLA模型加载终极指南从零开始掌握机器人视觉语言动作模型OpenVLA模型加载终极指南从零开始掌握机器人视觉语言动作模型 OpenVLA作为开源视觉语言动作模型正在彻底改变机器人操作领域。这个强大的模型能够理解视人工智能大模型具身智能机器人多模态微调LoRA预训练CLIP模型实战避坑指南从零开始的视觉语言模型选型与部署CLIP模型实战避坑指南从零开始的视觉语言模型选型与部署 在当今AI视觉应用遍地开花的时代如何选择既高效又精准的视觉语言模型成为了每个开发者的必修课。想象一人工智能基础模型大模型多模态计算机视觉创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考