OpenVLA开源项目:机器人视觉语言动作模型的完整指南

【免费下载链接】openvla OpenVLA: An open-source vision-language-action model for robotic manipulation. 【免费下载链接】openvla 项目地址: https://gitcode.com/gh_mirrors/op/openvla

OpenVLA(Vision-Language-Action)是一个开源的视觉语言动作模型,专门设计用于机器人操作任务的研究和开发。这个拥有7亿参数的模型基于Open X-Embodiment数据集进行预训练,包含了超过97万个机器人操作序列,能够泛化到不同的机器人平台上执行复杂的任务。

项目核心特性

OpenVLA项目具有以下突出特性:

  • 多样化数据集支持:原生支持RLDS格式的任意数据集,包括Open X-Embodiment数据集中的任意混合数据
  • 易于扩展:基于PyTorch FSDP和Flash-Attention技术,能够快速高效地训练1B到34B参数的模型
  • 内置微调支持:提供完整的微调支持,包括完整微调、部分微调和LoRA微调
  • 多机器人兼容性:支持多种机器人平台,只需提供相应的传感器数据即可适应不同机器人的控制

快速开始

安装依赖

首先安装必要的依赖项:

pip install torch torchvision rlds prismatic

克隆仓库

git clone https://gitcode.com/gh_mirrors/op/openvla.git
cd openvla

基础推理示例

from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch

# 加载处理器和VLA模型
processor = AutoProcessor.from_pretrained("openvla/openvla-7b", trust_remote_code=True)
vla = AutoModelForVision2Seq.from_pretrained(
    "openvla/openvla-7b", 
    attn_implementation="flash_attention_2",
    torch_dtype=torch.bfloat16, 
    low_cpu_mem_usage=True, 
    trust_remote_code=True
).to("cuda:0")

# 获取图像输入并格式化提示
image = get_from_camera(...)
prompt = "In: What action should the robot take to {<INSTRUCTION>}?\nOut:"

# 预测动作(7自由度;针对BridgeData V2进行反规范化)
inputs = processor(prompt, image).to("cuda:0", dtype=torch.bfloat16)
action = vla.predict_action(**inputs, unnorm_key="bridge_orig", do_sample=False)

# 执行动作
robot.act(action, ...)

预训练模型

OpenVLA项目发布了两个主要的预训练模型:

openvla-7b

这是论文中的旗舰模型,基于Prismatic prism-dinosiglip-224px VLM训练,融合了DINOv2和SigLIP视觉主干以及Llama-2 LLM。在包含970K轨迹的Open X-Embodiment大型数据集混合上进行训练。

openvla-v01-7b

开发过程中使用的早期模型,基于Prismatic siglip-224px VLM训练,使用单一的SigLIP视觉主干和Vicuña v1.5 LLM。

完整安装指南

对于完整的预训练和分布式微调,需要按照以下步骤进行完整安装:

# 创建并激活conda环境
conda create -n openvla python=3.10 -y
conda activate openvla

# 安装PyTorch(根据您的计算平台调整)
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia -y

# 克隆并安装openvla仓库
git clone https://gitcode.com/gh_mirrors/op/openvla.git
cd openvla
pip install -e .

# 安装Flash Attention 2用于训练
pip install packaging ninja
pip install "flash-attn==2.5.5" --no-build-isolation

LoRA微调OpenVLA

使用Low-Rank Adaptation(LoRA)方法可以高效地对OpenVLA进行微调:

torchrun --standalone --nnodes 1 --nproc-per-node 1 vla-scripts/finetune.py \
  --vla_path "openvla/openvla-7b" \
  --data_root_dir <数据集根目录> \
  --dataset_name bridge_orig \
  --run_root_dir <日志/检查点目录> \
  --adapter_tmp_dir <适配器权重临时保存目录> \
  --lora_rank 32 \
  --batch_size 16 \
  --grad_accumulation_steps 1 \
  --learning_rate 5e-4 \
  --image_aug True \
  --wandb_project <项目名称> \
  --wandb_entity <实体名称> \
  --save_steps <每多少梯度步保存检查点>

完整微调OpenVLA

如果需要完全微调所有75亿参数,可以使用以下命令:

torchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts/train.py \
  --pretrained_checkpoint <预训练检查点路径> \
  --vla.type prism-dinosiglip-224px+mx-bridge \
  --data_root_dir <数据集根目录> \
  --run_root_dir <日志/检查点目录> \
  --run_id <可选的WandB运行ID> \
  --image_aug True \
  --wandb_project <项目名称> \
  --wandb_entity <实体名称> \
  --save_interval <每多少梯度步保存检查点> \
  --is_resume False

从零开始训练VLA

OpenVLA提供了完整的配置和脚本来在Open X-Embodiment数据集的任意子集上训练VLA模型:

# 在BridgeData V2上使用Prismatic DINO-SigLIP 224px主干训练VLA
torchrun --standalone --nnodes 1 --nproc-per-node 8 vla-scripts/train.py \
  --vla.type "prism-dinosiglip-224px+mx-bridge" \
  --data_root_dir <OXE数据根目录> \
  --run_root_dir <日志/检查点根目录> \
  --wandb_project "<项目名称>" \
  --wandb_entity "<实体名称>"

项目结构

OpenVLA项目采用模块化设计,主要目录结构包括:

  • prismatic/: 核心模型和训练代码
  • vla-scripts/: VLA特定的训练和微调脚本
  • experiments/: 实验代码和机器人相关工具
  • scripts/: 预处理和预训练脚本

技术栈

OpenVLA构建于以下强大的技术栈之上:

  • PyTorch: 深度学习框架基础
  • FSDP: Facebook Scale Data Parallelism,用于大规模模型训练
  • Flash-Attention: 计算注意力机制的优化库
  • RLDS: 强化学习数据集标准库
  • Open X-Embodiment Dataset: 提供多样化机器人操作场景的数据集
  • Prismatic VLMs: 可扩展的视觉语言模型基础架构

应用场景

OpenVLA适用于多种机器人操作场景:

  1. 工业自动化: 生产线上的物体抓取和放置
  2. 家庭服务机器人: 日常家务任务的执行
  3. 医疗机器人: 辅助手术和康复训练
  4. 仓储物流: 货物分拣和搬运
  5. 科研教育: 机器人学习算法研究

最佳实践

在使用OpenVLA时,建议遵循以下最佳实践:

  1. 数据预处理: 确保输入数据格式符合RLDS标准
  2. 模型选择: 根据任务复杂度选择合适的模型规模
  3. 微调策略: 对于新任务,优先尝试LoRA微调
  4. 硬件配置: 确保有足够的GPU内存进行训练和推理
  5. 评估指标: 使用适当的评估指标来验证模型性能

OpenVLA为机器人视觉语言动作建模提供了一个强大而灵活的开源框架,无论是学术研究还是工业应用,都能从中受益。

【免费下载链接】openvla OpenVLA: An open-source vision-language-action model for robotic manipulation. 【免费下载链接】openvla 项目地址: https://gitcode.com/gh_mirrors/op/openvla

Logo

更多推荐