当前位置: 首页 > news >正文

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

相关文件

评估

  • experiments/robot/aloha/:ALOHA 训练和评估文件
    • run_aloha_eval.py:ALOHA 评估脚本(客户端;见下文 “服务器端”)
    • aloha_utils.py:ALOHA 评估工具
    • 从原始 ALOHA GitHub 仓库 复制的其他 ALOHA 机器人环境文件:
      • constants.py
      • real_env.py
      • robot_utils.py
  • experiments/robot/:通用评估工具文件
    • openvla_utils.py:OpenVLA 特定的评估工具
    • robot_utils.py:其他评估工具
  • vla-scripts/deploy.py:VLA 服务器部署脚本(服务器端)

注意:与 LIBERO 评估设置不同,这里我们使用服务器 - 客户端接口。如果用户用于控制机器人的机器无法访问具有足够规格的本地 GPU 来运行微调后的 VLA 策略,这将特别有用。

训练

  • experiments/robot/aloha/:ALOHA 训练和评估文件
    • preprocess_split_aloha_data.py:ALOHA 数据预处理脚本
  • vla-scripts/finetune.py:VLA 微调脚本

设置

为训练策略和在 VLA 服务器上部署它们设置一个 conda 环境(参见 SETUP.md 中的说明)。

在 ALOHA 机器人数据上进行微调

我们假设您已经收集了一组关于 ALOHA 机器人的专家演示。

首先,使用我们的 preprocess_split_aloha_data.py 脚本预处理原始 ALOHA 数据集:将图像从 480x640 缩小到 256x256,并分割为训练集和验证集。以下是我们论文中 “将 X 放入锅中” 任务的示例(每个情节有 3 个可能的目标对象):

python experiments/robot/aloha/preprocess_split_aloha_data.py \--dataset_path /scr/moojink/data/aloha1_raw/put_green_pepper_into_pot/ \--out_base_dir /scr/moojink/data/aloha1_preprocessed/ \--percent_val 0.05
python experiments/robot/aloha/preprocess_split_aloha_data.py \--dataset_path /scr/moojink/data/aloha1_raw/put_red_pepper_into_pot/ \--out_base_dir /scr/moojink/data/aloha1_preprocessed/ \--percent_val 0.05
python experiments/robot/aloha/preprocess_split_aloha_data.py \--dataset_path /scr/moojink/data/aloha1_raw/put_yellow_corn_into_pot/ \--out_base_dir /scr/moojink/data/aloha1_preprocessed/ \--percent_val 0.05

然后,将预处理后的 ALOHA 数据集转换为与 OpenVLA 微调兼容的单个 RLDS 数据集。此过程与原始 OpenVLA 仓库中的过程相同。有关转换为 RLDS 的说明,请参见 此处(示例 ALOHA 预处理到 RLDS 的转换脚本可在 此处 获得;该脚本将上述三个预处理数据集转换为一个统一的 RLDS 数据集,并包含训练 / 验证拆分)。

转换为 RLDS 后,通过在 configs.py(此处)、transforms.py(此处)和 mixtures.py(此处)中为其添加条目,将数据集(对于上面的示例任务,称为 aloha1_put_X_into_pot_300_demos)注册到我们的数据加载器。作为参考,在每个这些文件中,都有我们在论文中使用的 ALOHA 数据集的示例条目。

微调之前,在 prismatic/vla/constants.py 中设置所需的 ALOHA 动作块大小(参见 ALOHA_CONSTANTS 中的 NUM_ACTIONS_CHUNK)。我们默认将其设置为 25,因为在 ALOHA 设置中,我们使用 25 Hz 的控制频率以降低存储成本和训练时间(同时仍保持机器人运动的平滑性)。如果您使用 50 Hz,我们建议将 NUM_ACTIONS_CHUNK 设置为 50。一般来说,1 秒长的动作块是一个不错的默认值。不要修改 ACTION_PROPRIO_NORMALIZATION_TYPE:由于 ALOHA 机器人动作空间是绝对关节角度,我们不希望使用会剪辑异常值的归一化方案(例如我们在 LIBERO 中用于相对末端执行器姿态动作的 Q1-Q99 归一化),因为这会阻止模型输出某些对解决任务至关重要的机器人关节角度。

现在开始微调!以下是使用我们的 OFT+ 方法在上面的 “将 X 放入锅中” 任务上微调 OpenVLA 的示例命令(“OFT+” 中的 “+” 表示包含 FiLM 以增强语言接地)。将第一行中的 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

如果 X = 8 并且评估 100K 步 checkpoint,上述训练命令应该能复现我们在 “将 X 放入锅中” 任务上的 OpenVLA-OFT+ 结果。它将使用 3 个输入图像(1 个第三人称图像 + 2 个手腕相机图像)微调 OpenVLA。请注意,我们在某个时间点(上面的命令中是 50K 步)后使用学习率衰减,因为这样做可以加快训练收敛(根据我们的经验,训练 L1 损失会大幅下降)。

微调的最佳实践:

  • 一般来说,我们建议微调直到训练 L1 损失低于 0.01 并开始趋于稳定。
    • 实现这一点的一种方法是使用我们默认的学习率 5e-4 进行微调,直到损失开始非常缓慢地下降,然后将学习率衰减 10 倍至 5e-5(这应该会使损失大幅下降),并训练直到训练 L1 损失最终趋于稳定。
  • 根据您的数据集大小,您可能需要调整一些超参数。例如,如果您使用包含超过 300 个演示的大型数据集,您可能需要稍后衰减学习率并训练更长时间以获得最佳性能。过早衰减可能会导致次优策略。
  • 如果您的任务不需要良好的语言接地(例如,如果只有一个语言指令),则 FiLM 不是必需的;考虑设置 --use_film False 来训练更少的模型参数。
  • 请确保使用训练时使用的相同设备 / GPU 测试您的策略!否则,性能可能会大幅下降。如果您在用于测试的下游设备上(例如,在 H100 上训练,然后在 A100 上合并后在 A100 上测试)将 LoRA 权重合并到基础模型中,您可能能够避免性能下降。您可以查看我们的脚本 vla-scripts/merge_lora_weights_and_save.py 以离线将 LoRA 适配器合并到基础模型中。如果您在微调期间已经将 LoRA 权重合并到基础 OpenVLA 模型中也没关系;只要您仍然拥有 LoRA 适配器,您总是可以重新下载基础模型并再次合并(merge_lora_weights_and_save.py 将为您处理此问题)。

如果您遇到任何问题,请打开一个新的 GitHub 问题。

启动 ALOHA 机器人评估

在您将用于启动 VLA 服务器的主要 conda 环境(openvla-oft)中,安装一些用于服务器 - 客户端接口的包:

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

在您将用于控制机器人的机器上,设置第二个 conda 环境,该环境将用于运行机器人环境、查询 VLA 服务器并在环境中执行动作:

# 创建并激活客户端 conda 环境
conda create -n openvla-oft-aloha python=3.10 -y
conda activate openvla-oft-aloha# 安装 PyTorch
# 使用特定于您机器的命令:https://pytorch.org/get-started/locally/
pip3 install torch torchvision torchaudio# 克隆 openvla-oft 仓库并通过 pip 安装以下载依赖项
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 服务器(使用 openvla-oft conda 环境)。以下是为此的示例命令(根据需要更改):

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

然后,运行 ALOHA 评估脚本。在 vla_server_url 参数中指定 VLA 服务器 URL 或 IP 地址。以下是示例命令:

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 <每次滚动的最大步数>

如果您遇到任何问题,请打开一个新的 GitHub 问题。

故障排除提示

  • 提示 #1:如果您遇到 ROS 错误,例如 ImportError: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0,请尝试在您的客户端 conda 环境(openvla-oft-aloha)中运行以下命令:

    plaintext

    conda install -c conda-forge libffi
http://www.dtcms.com/a/537006.html

相关文章:

  • 网站调用字体四网合一网站建设
  • 网站优化包括整站优化吗公司管理体系
  • Spring—Springboot篇
  • 《拆解一封网络信:HTTP 报文详解》
  • wordpress仿站网桌子seo关键词
  • 如何判断服务器是否遭受攻击?
  • DGX A100服务器常见故障解析与维修攻略
  • 各品牌服务器IPMI配置实战经验分享
  • 海口自助建站知乎的网站建设和网站运营
  • 营销策略ppt聊城优化seo
  • 手表网站排行榜个人网站备案申请
  • [无人机sdk] MissionManager | WaypointMission | HotpointMission
  • UGUI源码剖析(16):实战——从零构建一个RadialSlider
  • 做网站要分几部分完成南京做网站公司哪家好
  • 软件测试和DevOps的关系
  • 【vllm】源码解读:DeepSeekV2 DP Rank 专家加载与分配机制
  • YOLOv5 代码深度解析总结
  • 钓鱼网站的制作教程全球网站排行榜
  • 解决 Codex 在 WSL/SSH/VSCODE 登录时报 “Token exchange failed: 403 Forbidden” 问题
  • JS逆向——encrypt-labs实现爆破登录
  • 扬中网站建设流程如何运营好一个网站
  • 公司网站推广计划书wordpress页面新建不了
  • 防爆手机与普通的区别:应用场景、功能、未来发展
  • 阿里云可以做网站wordpress自动加载
  • IGS 转换为 3DXML 全流程:迪威模型网在线实操 + 本地方案指南
  • 【论文精读】VBench:视频生成模型的全方位评估基准套件
  • jsp网站开发模式wap自助建论坛网站
  • WEBSTORM前端 —— 第5章:Web APIs —— 第6节:正则阶段案例
  • 长春 万网 网站建设千年之恋网页设计代码
  • h5游戏免费下载:保护鸡蛋