基于 ManiSkill 的强化学习训练#
ManiSkill 是一个 GPU 并行化的机器人操作模拟器与基准。 一台 7 自由度机械臂完成语言条件下的桌面操作任务;RLinf 借助 ManiSkill3 对视觉-语言-动作(VLA) 策略进行强化学习微调,达到业界领先的成功率,并在分布外(OOD)变体上同样表现优异。
概览#
在 ManiSkill3 上对 VLA 进行强化学习微调;OpenVLA 与 OpenVLA-OFT 在 plate-25 上成功率均超过 90%。
OpenVLA · OpenVLA-OFT · π₀ / π₀.₅ · MLP · ResNet
PPO · GRPO · SAC · CrossQ · DAgger
桌面操作(plate-25 + OOD)
1–2 节点 · 8–16 张 GPU
run_embodiment.sh → 观察 env/success_once。任务#
参考方案在 PutOnPlateInScene25Main-v3 (plate-25) 任务上训练,并在分布内(IND)以及分布外
(OOD)设置上评测:
设置 |
考察内容 |
|---|---|
训练 (IND) |
plate-25 训练任务。 |
视觉 (OOD) |
场景的视觉变化。 |
语义 (OOD) |
语义变化(物体、指令)。 |
执行 (OOD) |
执行阶段的变化。 |
观测与动作#
字段 |
说明 |
|---|---|
观测 (Observation) |
第三人称相机的 RGB 图像(224×224);语言任务描述。 |
动作 (Action) |
7 维连续动作:3D 末端执行器位置、3D 旋转与 1 维夹爪开合。 |
奖励 (Reward) |
基于任务进展与成功的 step 级奖励。 |
任务提示 |
|
下面的流程以 OpenVLA / OpenVLA-OFT + PPO/GRPO 为例;切换配置即可使用其他受支持的模型。
参见
若要在 ManiSkill 上运行 OpenPI(π0 / π0.5),请参阅 在 π₀ 与 π₀.₅ 模型上进行强化学习。
安装#
首先,克隆 RLinf 仓库:
# 为提高国内下载速度,可以使用镜像:
# git clone https://ghfast.top/github.com/RLinf/RLinf.git
git clone https://github.com/RLinf/RLinf.git
cd RLinf
然后,使用下列两种方式之一准备依赖:预构建的 Docker 镜像(推荐)或自定义环境。
通用的安装流程(前置依赖、GPU 驱动、镜像内置的 switch_env 工具、镜像加速、常见问题排查)
在 安装说明 中统一说明;本方案中的命令仅在 Docker
镜像标签和 --env 取值上有所不同。
选项 1:Docker 镜像 —— 镜像标签 agentic-rlinf0.3-maniskill_libero:
docker run -it --rm --gpus all \
--shm-size 20g \
--network host \
--name rlinf \
-v .:/workspace/RLinf \
rlinf/rlinf:agentic-rlinf0.3-maniskill_libero
# 国内镜像加速:docker.1ms.run/rlinf/rlinf:agentic-rlinf0.3-maniskill_libero
# 进入容器后,切换到模型对应的虚拟环境:
source switch_env openvla # 或:source switch_env openvla-oft
选项 2:自定义环境 —— 安装包 --env maniskill_libero:
# 国内用户可添加 --use-mirror 以提升下载速度。
# OpenVLA-OFT 实验请使用 --model openvla-oft。
bash requirements/install.sh embodied --model openvla --env maniskill_libero
source .venv/bin/activate
下载资产#
下载 ManiSkill 资产:
# 国内可设置 HF_ENDPOINT=https://hf-mirror.com
hf download --repo-type dataset RLinf/maniskill_assets --local-dir ./maniskill_assets
重要
资产 必须 放置在 rlinf/envs/maniskill/assets 目录下——环境会从该路径加载资产。请将其复制到环境包目录:
cp -r ./maniskill_assets <path_to_RLinf>/rlinf/envs/maniskill/assets
下载模型#
下载预训练基座检查点(任选一种方式):
# 方式 1:git clone
git lfs install
git clone https://huggingface.co/gen-robot/openvla-7b-rlvla-warmup
# 方式 2:huggingface-hub(国内可设置 HF_ENDPOINT=https://hf-mirror.com)
pip install huggingface-hub
hf download gen-robot/openvla-7b-rlvla-warmup --local-dir openvla-7b-rlvla-warmup
下载完成后,在配置 YAML 中指向该检查点——为 rollout 与 actor 两处模型设置相同的路径:
rollout:
model:
model_path: /path/to/downloaded-checkpoint
actor:
model:
model_path: /path/to/downloaded-checkpoint
运行#
每个方案对应 examples/embodiment/config/ 下的一个 YAML 配置:
OpenVLA + PPO ——
maniskill_ppo_openvla.yamlOpenVLA-OFT + PPO ——
maniskill_ppo_openvlaoft.yamlOpenVLA + GRPO ——
maniskill_grpo_openvla.yamlOpenVLA-OFT + GRPO ——
maniskill_grpo_openvlaoft.yaml
使用 run_embodiment.sh 启动某个配置:
bash examples/embodiment/run_embodiment.sh maniskill_ppo_openvla
本命令做了什么:
加载
examples/embodiment/config/maniskill_ppo_openvla.yaml配置。连接(或启动)Ray,并按
cluster.component_placement放置 actor、rollout、env 各 worker。运行 PPO 训练循环,并将日志与检查点写入
runner.logger.log_path。
可视化与结果#
启动 TensorBoard 实时查看训练:
tensorboard --logdir ./logs --port 6006
最值得关注的指标是 ``env/success_once`` —— 未归一化的回合成功率。每个日志指标的含义见 训练指标。
如需保存评测视频,在配置中开启:
env:
eval:
video_cfg:
save_video: True
video_base_dir: ${runner.logger.log_path}/video/eval
ManiSkill3 结果#
在单台 8 卡 H100 机器上,OpenVLA(左)与 OpenVLA-OFT(右)在 ManiSkill3 的 plate-25-main 任务上成功率均超过 90%。
OpenVLA
OpenVLA-OFT
我们在分布内(IND)和 OOD 场景(视觉、语义、执行)上评测。每列最优结果以粗体标注。
备注
这里采用与 rl4vla 相同的 OOD 测试集以便公平比较。基座模型:
OpenVLA 采用预训练的 openvla-7b-rlvla-warmup;
OpenVLA-OFT 使用我们在 PutOnPlateInScene25Main-v3 数据上自行 LoRA 微调的权重
(OpenVLA-OFT (Base))。
模型 |
训练设置(IND) |
视觉 (OOD) |
语义 (OOD) |
执行 (OOD) |
OOD 平均 |
|---|---|---|---|---|---|
53.91% |
38.75% |
35.75% |
42.11% |
39.10% |
|
93.75% |
80.47% |
75.00% |
81.77% |
79.15% |
|
96.09% |
82.03% |
78.35% |
85.42% |
81.93% |
|
84.38% |
74.69% |
72.99% |
77.86% |
75.15% |
|
28.13% |
27.73% |
12.95% |
11.72% |
18.29% |
|
97.66% |
92.11% |
64.84% |
73.57% |
77.05% |
|
94.14% |
84.69% |
45.54% |
44.66% |
60.64% |
备注
rl4vla 是在小批量下的 PPO + OpenVLA,因此只应与在相近条件下训练的 PPO+OpenVLA 比较。
我们的 PPO+OpenVLA 依托 RLinf 的大规模基础设施以更大批量训练,显著提升了性能。
下面的动画展示了在 RLinf 中用 PPO 在 ManiSkill3 多任务基准上训练 OpenVLA 的结果。