跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

OpenVLA-OFT+ 在真实世界 ALOHA 机器人任务中的应用

OpenVLA-OFT+ 结合 FiLM 增强语言接地,支持在 ALOHA 真实机器人上进行微调与部署。流程涵盖数据预处理、RLDS 格式转换、模型配置及训练参数调整。重点包括动作块大小设置、学习率衰减策略及 LoRA 权重合并。评估阶段采用服务器 - 客户端架构,分离推理与控制环境,解决本地算力不足问题。提供常见 ROS 错误排查方案,确保端到端任务执行稳定。

落日余晖发布于 2026/4/9更新于 2026/9/1162 浏览

项目文件结构

评估相关:

  • experiments/robot/aloha/:ALOHA 训练和评估文件,包含 run_aloha_eval.py(客户端脚本)、aloha_utils.py 及从原始 ALOHA 仓库复制的环境文件(如 constants.py, real_env.py)。
  • experiments/robot/:通用评估工具,含 OpenVLA 特定工具 openvla_utils.py。
  • vla-scripts/deploy.py:VLA 服务器部署脚本(服务器端)。

注意:与 LIBERO 不同,此处采用服务器 - 客户端接口。若控制机器人的机器缺乏足够 GPU 运行微调后的策略,此架构尤为适用。

训练相关:

  • experiments/robot/aloha/:数据预处理脚本 preprocess_split_aloha_data.py。
  • vla-scripts/finetune.py:VLA 微调脚本。

环境设置

为训练策略及在 VLA 服务器上部署,需配置 conda 环境。建议参考官方 SETUP 文档进行初始化。

数据预处理与微调

假设已收集 ALOHA 专家演示数据。首先使用 preprocess_split_aloha_data.py 预处理原始数据集,将图像从 480x640 缩小至 256x256,并按比例划分训练集与验证集。例如针对'将 X 放入锅中'任务(含多个目标对象),需分别执行预处理命令。

随后,将预处理后的数据转换为 OpenVLA 兼容的 RLDS 格式。转换过程与原仓库一致,完成后需在 configs.py、transforms.py 和 mixtures.py 中注册新数据集(如 aloha1_put_X_into_pot_300_demos)。

微调前,请在 prismatic/vla/constants.py 中确认 ALOHA 动作块大小(NUM_ACTIONS_CHUNK)。默认设为 25(对应 25 Hz 控制频率),若使用 50 Hz 则建议调整为 50。一般 1 秒长的动作块是合理选择。注意不要修改 ACTION_PROPRIO_NORMALIZATION_TYPE,因 ALOHA 动作空间为绝对关节角度,避免使用会裁剪异常值的归一化方案。

开始微调!以下示例展示了使用 OFT+ 方法(含 FiLM 增强语言接地)在'将 X 放入锅中'任务上微调 OpenVLA 的命令。请将第一行中的 X 替换为实际 GPU 数量:

torchrun --standalone --nnodes 1 --nproc-per-node X vla-scripts/finetune.py \
  --vla_path openvla/openvla-7b \
  --data_root_dir /PATH/TO/RLDS/DATASETS/DIR/ \
  --dataset_name aloha1_put_X_into_pot_300_demos \
  --run_root_dir /YOUR/CHECKPOINTS/AND/LOG/DIR/ \
  --use_l1_regression True \
  --use_diffusion False \
  --use_film True \
  --num_images_in_input 3 \
  --use_proprio True \
  --batch_size 4 \
  --learning_rate 5e-4 \
  --num_steps_before_decay 50000 \
  --max_steps 100005 \
  --use_val_set True \
  --val_freq 10000 \
  --save_freq 10000 \
  --save_latest_checkpoint_only False \
  --image_aug True \
  --lora_rank 32 \
  --wandb_entity "YOUR_WANDB_ENTITY" \
  --wandb_project "YOUR_WANDB_PROJECT" \
  --run_id_note parallel_dec--25_acts_chunk--continuous_acts--L1_regression--3rd_person_img--left_right_wrist_imgs--proprio_state--film

若使用 8 张 GPU 评估 100K 步 checkpoint,上述命令可复现论文结果。模型将基于 3 个输入图像(1 个第三人称 + 2 个手腕相机)进行微调。经验表明,在 50K 步后衰减学习率有助于加快收敛,此时 L1 损失通常大幅下降。

微调最佳实践:

  • 建议微调至训练 L1 损失低于 0.01 并趋于稳定。若下降缓慢,可将学习率从 5e-4 衰减 10 倍至 5e-5,继续训练直至稳定。
  • 根据数据集规模调整超参数。大数据集可能需要更晚衰减学习率并延长训练时间,过早衰减可能导致次优策略。
  • 若任务无需强语言接地(如仅单条指令),可设置 --use_film False 以减少参数量。
  • 测试策略时务必使用与训练相同的设备/GPU,否则性能可能大幅下降。若跨设备测试(如 H100 训练转 A100 测试),建议先合并 LoRA 权重。可使用 vla-scripts/merge_lora_weights_and_save.py 离线合并适配器。

启动 ALOHA 机器人评估

在用于启动 VLA 服务器的 conda 环境(openvla-oft)中安装服务器端依赖:

conda activate openvla-oft
pip install uvicorn fastapi json-numpy

在控制机器人的机器上设置第二个 conda 环境(openvla-oft-aloha),用于运行机器人环境及查询 VLA 服务器:

# 创建并激活客户端环境
conda create -n openvla-oft-aloha python=3.10 -y
conda activate openvla-oft-aloha

# 安装 PyTorch(按官方指南选择版本)
pip3 install torch torchvision torchaudio

# 克隆仓库并安装依赖
git clone https://github.com/moojink/openvla-oft.git
cd openvla-oft
pip install -e .

# 安装 ALOHA 环境依赖
pip install -r experiments/robot/aloha/requirements_aloha.txt

在具备推理 GPU 的机器上启动 VLA 服务器:

python vla-scripts/deploy.py \
  --pretrained_checkpoint /PATH/TO/FINETUNED/MODEL/CHECKPOINT/DIR/ \
  --use_l1_regression True \
  --use_film True \
  --num_images_in_input 3 \
  --use_proprio True \
  --center_crop True \
  --unnorm_key aloha1_put_X_into_pot_300_demos

随后运行评估脚本,指定 VLA 服务器 URL:

python experiments/robot/aloha/run_aloha_eval.py \
  --center_crop True \
  --num_open_loop_steps 25 \
  --use_vla_server True \
  --vla_server_url <VLA 服务器的 URL> \
  --num_rollouts_planned <测试滚动次数> \
  --max_steps <每次滚动的最大步数>

故障排除提示

若遇到 ROS 错误(如 ImportError: ... undefined symbol: ffi_type_pointer...),可在客户端环境中尝试修复:

conda install -c conda-forge libffi

目录

  1. 项目文件结构
  2. 环境设置
  3. 数据预处理与微调
  4. 启动 ALOHA 机器人评估
  5. 创建并激活客户端环境
  6. 安装 PyTorch(按官方指南选择版本)
  7. 克隆仓库并安装依赖
  8. 安装 ALOHA 环境依赖
  9. 故障排除提示

更多推荐文章

查看全部
  • VS Code GitHub Copilot 不支持自定义模型 API 接入
  • 基于 Java SpringBoot 的校园餐厅在线点餐管理系统设计与实现
  • 积木报表快速入门:从零开始设计数据可视化报表
  • 通义千问 1.8B Chat GPTQ Int4 体验:vLLM 部署与 Chainlit 实测
  • Python 数据科学工具链入门:NumPy、Pandas、Matplotlib 快速上手
  • AstrBot+NapCat 一键部署智能 QQ 机器人及 cpolar 公网访问
  • VSCode Copilot MCP 配置与实战指南
  • OpenClaw 引爆低代码 AI 变革:从工具赋能到生态重构
  • 流处理与 RAG 驱动的 Python ETL 框架设计
  • OpenClaw Docker 部署教程:集成飞书钉钉 QQ 机器人
  • 免费在线 SQL 转 ER 图工具推荐
  • JDBC 连接 Oracle 数据库的常见连接串格式
  • VS Code 禁用 Copilot 自动补全,专注算法训练
  • ROG-Map: 基于机器人中心的大场景高分辨率 LiDAR 运动规划网格地图
  • 深入理解 ES6 核心语法:进制、Symbol 与类继承
  • 如何在本地计算机上安装和使用 DeepSeek R1
  • 基于 Leaflet 与 WebGIS 的省域区县天气可视化实现
  • OpenCode 集成 Kimi K2.5 配置与实战指南
  • 别让 AI 越权!OpenClaw 权限配置完全指南
  • AI 辅助区块链钱包开发:智能合约交互与监控脚本实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online