π0和π0.5模型强化学习训练#
π0 / π0.5 基于流匹配的 VLA 模型。#
使用 RLinf 在多种仿真器上对 π0 与 π0.5 这两类基于流匹配的 VLA 模型进行强化学习微调(PPO / GRPO)。方法细节见论文 πRL: Online RL Fine-Tuning for Flow-Based Vision-Language-Action Models。
概览#
在 LIBERO、ManiSkill、MetaWorld、CALVIN 上用 PPO 或 GRPO 对 π0 / π0.5 做 RL 微调。
LIBERO · ManiSkill · MetaWorld · CALVIN
PPO · GRPO
Spatial · Object · Goal · Long
NVIDIA CUDA · AMD ROCm · 华为昇腾 CANN · 摩尔线程 MUSA (π₀ / π₀.₅,LIBERO · ManiSkill)
run_embodiment.sh → 观察 env/success_once。任务#
根据环境、任务族以及配置或权重工件选择对应的模型页面。
环境 |
任务 / 套件 |
配置 / 权重 |
重点 |
|---|---|---|---|
LIBERO |
Spatial · Object · Goal · Long |
|
在 LIBERO 操作套件上微调 π0 / π0.5。 |
ManiSkill3 |
PickCube 及相关任务 |
|
在 ManiSkill3 机器人控制任务上微调 π0.5。 |
MetaWorld |
MT50 |
|
评测跨 MetaWorld 操作任务的泛化能力。 |
CALVIN |
ABC-D |
|
训练长程语言条件操作任务。 |
观测与动作#
字段 |
说明 |
|---|---|
Observation |
来自 LIBERO、ManiSkill3、MetaWorld 或 CALVIN 的主视角 / 腕部 RGB 与机器人状态。 |
Action |
7 维连续控制,包括末端位置、旋转和夹爪状态。 |
Reward |
PPO / GRPO 使用的环境成功信号或 shaped reward。 |
Prompt |
环境提供的自然语言任务描述,由 VLA processor 消费。 |
π0 / π0.5 使用 PPO(actor-critic;GAE、ratio clipping、value clipping、entropy regularization)或 GRPO(基于 G 个采样动作的 group-relative advantages)训练。
安装#
下方为 NVIDIA 安装步骤;其他硬件请按 对应后端的步骤 准备环境。
首先,克隆 RLinf 仓库:
# 为提高国内下载速度,可以使用镜像:
# git clone https://gh-proxy.com/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.4-maniskill_libero:
docker run -it --rm --gpus all \
--shm-size 20g \
--network host \
--name rlinf \
-v .:/workspace/RLinf \
rlinf/rlinf:agentic-rlinf0.4-maniskill_libero
# 如果需要国内加速下载镜像,可以使用:
# infinigence-ai-registry.cn-beijing.cr.aliyuncs.com/rlinf/rlinf:agentic-rlinf0.4-maniskill_libero
请通过镜像内置的 switch_env 工具切换到对应的虚拟环境:
source switch_env openpi
选项 2:自定义环境
# 为提高国内依赖安装速度,可以添加`--use-mirror`到下面的install.sh命令
bash requirements/install.sh embodied --model openpi --env maniskill_libero
source .venv/bin/activate
下载模型#
在开始训练之前,您需要下载相应的预训练模型。例如,针对 LIBERO 环境的 Spatial、Object、Goal 类型的任务,您可以通过如下方式进行下载:
# 下载 Spatial-Object-Goal 模型(选择以下任一方式)
# 方式1:使用 git clone
git lfs install
git clone https://huggingface.co/RLinf/RLinf-Pi0-LIBERO-Spatial-Object-Goal-SFT
# 方式2:使用 huggingface-hub
# 为提升国内下载速度,可以设置:
# export HF_ENDPOINT=https://hf-mirror.com
pip install huggingface-hub
hf download RLinf/RLinf-Pi0-LIBERO-Spatial-Object-Goal-SFT --local-dir RLinf-Pi0-LIBERO-Spatial-Object-Goal-SFT
或者,您可以从 ModelScope 下载该模型 https://www.modelscope.cn/models/RLinf/RLinf-Pi0-SFT-Spatial-Object-Goal。
当然,RLinf 也提供了针对其他环境的预训练模型。模型列表如下:
环境 |
任务说明 |
SFT Model |
Flow-SDE |
Flow-Noise |
|---|---|---|---|---|
LIBERO |
Spatial, Object, Goal |
|||
LIBERO |
Long |
|||
ManiSkill3 |
多任务 |
|||
MetaWorld |
MT50 |
|||
CALVIN |
ABC-D |
环境 |
任务说明 |
SFT Model |
Flow-SDE |
Flow-Noise |
|---|---|---|---|---|
LIBERO |
Spatial, Object, Goal, Long |
|||
ManiSkill3 |
多任务 |
|||
MetaWorld |
MT50 |
|||
CALVIN |
ABC-D |
下载完成后,请确保在配置文件中正确指定模型路径。
运行#
1. 运行关键参数配置
cluster:
num_nodes: 1
component_placement:
env: 0-3
rollout: 4-7
actor: 0-7
rollout:
pipeline_stage_num: 2
你可以灵活配置 env、rollout、actor 三个组件使用的 GPU 数量。
此外,在配置中设置 pipeline_stage_num = 2,可实现 rollout 与
env 之间的流水线重叠,从而提升 rollout 效率。
cluster:
num_nodes: 1
component_placement:
env,rollout,actor: all
你也可以重新配置 Placement,实现 完全共享:env、rollout、actor 三个组件共享全部 GPU。
cluster:
num_nodes: 1
component_placement:
env: 0-1
rollout: 2-5
actor: 6-7
你还可以重新配置 Placement,实现 完全分离:env、rollout、actor 各用各的 GPU,互不干扰,这样就不需要 offload 功能。
2. 模型关键参数配置
2.1 模型参数
本文覆盖 π0/ π0.5 的 model_type: openpi 实现(模板 model/pi0、model/pi0_5)。网络 action horizon 和环境实际执行的 chunk 是分开的:
num_action_chunks/openpi.action_chunk是 环境实际执行 的 chunk(RLinf 发给模拟器的步数)。网络
action_horizon优先用 YAML 里的openpi.action_horizon;未设置时用openpi.config_name对应官方 OpenPITrainConfig.model.action_horizon;再没有才回退到num_action_chunks。
openpi 从官方 TrainConfig.model 拷出 action_horizon,再用 cfg.openpi 整表覆盖。默认模板只把 num_action_chunks 插值到 action_chunk,不会 把 num_action_chunks 写成网络 horizon。
LIBERO PPO 常见写法是 num_action_chunks: 5,而 pi0_libero 官方 horizon 仍是 50,pi05_libero 官方 horizon 是 10。只有 checkpoint 的 horizon 和该 TrainConfig 不一致时,才在实验 YAML 里覆写 openpi.action_horizon。
下面是 openpi 示例,启动命令为 bash examples/embodiment/run_embodiment.sh libero_spatial_ppo_openpi。
actor:
model:
pi05: False # π0.5 设为 True;写在 actor.model 下,不在 openpi 里
num_action_chunks: 5 # 环境接口,不是网络 horizon
openpi:
task: rl # sft | eval | rl | dagger | dsrl
config_name: "pi0_libero" # 官方 TrainConfig(网络 action_horizon 来自这里)
noise_level: 0.5 # flow_sde 的默认噪声强度
noise_logvar_range: [0.08, 0.16] # flow_noise 的默认可学习噪声范围
action_chunk: ${..num_action_chunks}
num_steps: ${..num_steps}
train_expert_only: True
action_env_dim: ${..action_dim}
noise_method: "flow_sde" # flow_sde, flow_noise
add_value_head: ${..add_value_head}
value_after_vlm: False
通过
num_steps设置不同的流匹配步数。通过修改
noise_method使用不同的加噪方式。我们提供flow_sde和flow_noise两种方式。其中noise_level用于控制flow_sde的加噪强度,noise_logvar_range用于控制flow_noise的可学习噪声范围。通过
openpi.config_name选择 π0.5(例如pi05_libero)。openpi还需设置actor.model.pi05: True;省略时默认为 True,model/pi0会显式设为 False。通过
value_after_vlm控制 critic 的位置:当该参数为 True 时,critic 接入到 VLM 模块的输出后;为 False 时,critic 的输入为 action expert 模块的输出。π0.5 PPO 应设value_after_vlm: True。
2.2 算法配置
在论文中,我们提供 flow-noise 和 flow-sde 两种技术方案来微调 π0和 π0.5模型。具体而言,你可以通过切换如下配置来选择不同的技术方案:
algorithm:
entropy_bonus: 0.0 # 熵正则化系数,flow-sde 设置为0.0,flow-noise 设置为0.005
openpi:
noise_method: "flow_sde" # [flow_sde,flow_noise] 噪声注入方式,flow-sde 通过ode-sde转换引入噪声,flow-noise 引入噪声网络注入噪声
noise_level: 0.5 # flow-sde 的噪声强度
noise_logvar_range: [0.08, 0.16] # 针对 flow-noise 的可学习噪声范围
joint_logprob: False # 是否优化联合概率密度函数,对于flow-sde,请设置为False,对于flow-noise,请设置为True
例如,完整的 flow-sde 设置见 libero_spatial_ppo_openpi.yaml,flow-noise 见 maniskill_ppo_openpi.yaml。
2.3 LoRA设置
model:
is_lora: True
lora_rank: 8
gradient_checkpointing: False
如果你想使用LoRA(Low-Rank Adaptation)对VLM部分进行参数高效微调,请设置 is_lora: True 并配置 lora_rank 参数。需要注意的是,当前不支持启用梯度检查点,请保持该参数为 gradient_checkpointing: False。
⭐ 2.4 最小测试案例 ⭐
如果你遇到OOM报错或者想用尽可能少的资源实现一个最小测试案例,可以参考 libero_spatial_ppo_openpi_quickstart.yaml。
相比于标准的任务配置,我们主要做了以下修改:
env.train.rollout_epoch: 8 -> 2
env.train.total_num_envs: 64 -> 32
actor.micro_batch_size: 128 -> 64
actor.global_batch_size: 2048 -> 256
actor.optim.lr: 5e-6 -> 1e-6
actor.enable_offload: False -> True
rollout.enable_offload: False -> True
在4张H100 GPU上,我们对比了标准参数和最小测试参数的结果,可以发现它们在相同时间下的性能几乎是持平的:(最小测试参数尽管每一轮优化的时间更快,但是收敛速度更慢)
同时,如果你在最小参数配置下仍然遇到了OOM问题,我们提供如下解决方案:
如果是rollout阶段遇到OOM问题:
可以尝试将渲染引擎从
egl替换为osmesa进一步减少
env.train.total_num_envs,从32减少为16,但是增加env.train.rollout_epoch从2为4,以保证每轮rollout环境总数一致检查actor的
enable_offload是否开启,如果是False则设置为True
如果是actor阶段遇到OOM问题:
可以尝试减少
micro_batch_size,从64减少为32,保持global_batch_size为256不变检查rollout的
enable_offload是否开启,如果是False则设置为True
备注
如果遇到 micro_batch_size 和 global_batch_size 不匹配的问题,需要保证 global_batch_size 是 micro_batch_size × GPU数量 的整数倍。
2.5 模型评测
针对SFT或RL训练后的模型,我们提供两种评测方式:
使用 RLinf 统一的评测脚本,参考 评测 进行评测,这种方式支持并行环境评测,速度快,但是只支持输出整个任务的成功率。
π0.5 还接入了 RTC:将动作块的执行与下一块的推理重叠,从而隐藏评测与部署时的推理延迟,参考 RTC。
备注
Metaworld 暂时不支持设置 env.eval.auto_reset=True 的评测模式,建议使用单个脚本文件进行模型评测。
使用单个脚本文件进行模型评测,参考示例 README.md,这种方式的评测脚本和
openpi官方提供的评测脚本一致,支持输出每个子任务的成功率,但是速度较慢。
3. 配置文件
以libero-10为例,对应π0和π0.5的配置文件:
- π0+ PPO:
examples/embodiment/config/libero_10_ppo_openpi.yaml
- π0+ GRPO:
examples/embodiment/config/libero_10_grpo_openpi.yaml
- π0.5+ PPO:
examples/embodiment/config/libero_10_ppo_openpi_pi05.yaml
- π0.5+ GRPO:
examples/embodiment/config/libero_10_grpo_openpi_pi05.yaml
4. 启动命令
OpenPI 支持 FSDP1 的 no_shard、shard_grad_op 和 full_shard。
在所选 YAML 中设置以下字段,即可在 actor 各 rank 之间对训练状态分片。
shard_grad_op 在前向与反向之间保留聚合后的参数,
full_shard 在前向结束后释放这些参数。保留配方已有的混合精度设置。
actor:
fsdp_config:
sharding_strategy: full_shard
use_orig_params: true
选择配置后,运行以下命令开始训练:
bash examples/embodiment/run_embodiment.sh CHOSEN_CONFIG
例如,在 LIBERO 环境中使用 PPO 训练 π0模型:
bash examples/embodiment/run_embodiment.sh libero_spatial_ppo_openpi_quickstart
在不同硬件后端上运行#
NVIDIA 使用上面的安装与启动流程。AMD ROCm、华为昇腾 CANN 和摩尔线程 MUSA 都通过共用平台安装器与 scheduler 设备 API 支持 OpenPI π₀ / π₀.₅ 系列在 LIBERO 和 ManiSkill 上运行。非 CUDA 后端上的 ManiSkill 使用 CPU simulation;MUSA 还需要厂商模拟器包。
AMD ROCm#
ROCm 使用 PyTorch 的 CUDA 兼容 API,因此 OpenPI 可直接使用共用的 AMD accelerator 与安装路径。
ROCm LIBERO 容器需要访问 AMD 内核与渲染设备。在宿主机的仓库根目录启动容器:
docker run -it --rm \
--device=/dev/kfd --device=/dev/dri --group-add video \
--ipc=host --shm-size 20g --network host \
-v "$PWD":/workspace/RLinf -w /workspace/RLinf \
rlinf/rlinf:agentic-rlinf0.4-maniskill_libero-rocm7.2 bash
该镜像基于 ROCm 7.2,包含全部 ManiSkill 与 LIBERO 模型环境。此前仅含 LIBERO 的镜像仍可使用,tag 为 agentic-rlinf0.3-libero-rocm6.4 与 agentic-rlinf0.3-libero-rocm7.2.3。中国大陆用户可使用 infinigence-ai-registry.cn-beijing.cr.aliyuncs.com/rlinf/rlinf 下的同名 tag。
如需从当前代码构建包含这些模型的共用镜像,在宿主机运行以下命令,再将上面的容器镜像替换为 rlinf:embodied-maniskill_libero-rocm7.2:
DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile \
--build-arg PLATFORM=amd \
--build-arg ROCM_VER=7.2 \
--build-arg 'ROCM_ARCHS=gfx90a;gfx942' \
--build-arg BUILD_TARGET=embodied-maniskill_libero \
-t rlinf:embodied-maniskill_libero-rocm7.2 .
警告
ROCM_ARCHS 必须与目标 GPU 匹配。Docker 构建期间可能无法访问设备,flash-attn 等扩展需要显式指定架构。Dockerfile 会将这些值传给 ROCm 构建工具。
进入容器后,或直接在已安装 ROCm 的宿主机上,创建 OpenPI LIBERO 环境:
bash requirements/install.sh --platform amd --rocm 6.4 embodied --model openpi --env libero
source .venv/bin/activate
省略 --rocm 可自动检测已安装的版本;中国大陆用户可添加 --use-mirror。
华为昇腾 CANN#
使用昇腾 LIBERO 容器,或在已安装 CANN 和 NPU 驱动的宿主机上运行。
昇腾 LIBERO 镜像需要访问宿主机的 NPU 驱动。在宿主机的仓库根目录运行以下命令,将驱动目录挂载到容器中:
docker run -it --rm \
--privileged \
--ipc=host \
--shm-size 20g \
--network host \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /var/log/npu:/usr/slog \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v "$PWD":/workspace/RLinf \
-w /workspace/RLinf \
rlinf/rlinf:agentic-rlinf0.4-maniskill_libero-cann9.1.1 bash
该镜像基于面向 910B 的 CANN 9.1.1,包含全部 ManiSkill 与 LIBERO 模型环境。上面的 tag 同时包含 arm64 与 amd64 两个版本,Docker 会按宿主机架构自动选择;如需指定单一架构,可使用带 -arm64 或 -amd64 后缀的 tag。此前仅含 LIBERO 的镜像仍可使用,tag 为 agentic-rlinf0.3-libero-cann9.0。中国大陆用户可使用 infinigence-ai-registry.cn-beijing.cr.aliyuncs.com/rlinf/rlinf 下的同名镜像 tag。若要指定可用的 NPU,可将 --privileged 替换为以下设备参数,并为每张需要使用的 NPU 添加一项 /dev/davinciN:
--device=/dev/davinci_manager
--device=/dev/devmm_svm
--device=/dev/hisi_hdc
--device=/dev/davinci0
如需从当前代码构建镜像,在宿主机执行以下命令,再将上面启动命令中的镜像替换为 rlinf-maniskill_libero-cann9:
DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile \
--build-arg PLATFORM=ascend \
--build-arg CANN_VER=9.1.1-910b \
--build-arg UBUNTU_VER=22.04 \
--build-arg BUILD_TARGET=embodied-maniskill_libero \
-t rlinf-maniskill_libero-cann9 .
CANN_VER 包含昇腾基础镜像 tag 中的硬件后缀。也可以通过 Dockerfile 的 ASCEND_BASE_IMAGE 参数指定完整的基础镜像地址。
已发布的 LIBERO 镜像不包含 OpenPI 环境。可以在容器内创建,也可以直接在昇腾宿主机上运行相同命令:
bash requirements/install.sh --platform ascend embodied --model openpi --env libero
source .venv/bin/activate
中国大陆用户可添加 --use-mirror。安装器会添加匹配的 torch-npu 并跳过 CUDA flash-attention,OpenPI 随后使用共用的 NPU worker 与 collective 路径。
在昇腾 950 NPU 上本地安装时,在 embodied 之前添加 --torch 2.11.0。昇腾安装脚本默认使用 PyTorch 和 torch-npu 2.6.0,而 torch-npu 2.6.0 初始化 950 NPU 时会报 Unsupported soc version。PyTorch 和 torch-npu 2.11.0 已在 NPU 驱动 25.7.rc1、CANN 9.1.1 的昇腾 950 上验证通过。
摩尔线程 MUSA#
MUSA 通过启用 system site-packages 的虚拟环境复用镜像中的 Python、PyTorch 与 torch_musa。安装器会保留这些厂商包,并跳过仅支持 CUDA 的依赖。
MUSA 使用摩尔线程 training-suite 镜像中相互匹配的 PyTorch 与 torch_musa。通过 mthreads runtime 启动容器,才能在容器内访问驱动库与设备:
export MUSA_IMAGE=registry.mthreads.com/mcctest/ai/training-suite:v2.1.5-musa4.3.7
docker run -it --rm --runtime=mthreads \
--ipc=host --shm-size=100g \
-e MTHREADS_VISIBLE_DEVICES=all \
-v "$PWD":/workspace/RLinf -w /workspace/RLinf \
"$MUSA_IMAGE" bash
预装 LIBERO 模型环境的镜像已发布为 rlinf/rlinf:agentic-rlinf0.4-maniskill_libero-musa,它基于同一个 training-suite 镜像,启动方式相同。ManiSkill 仍需要下文所述的厂商仿真器包,因此 ManiSkill 请使用厂商镜像。
安装模型环境前,先确认设备可用:
mthreads-gmi
python -c "import torch, torch_musa; print(torch.musa.device_count())"
警告
若设备数量为零,请先解决设备访问问题。保留镜像中配套的 PyTorch 与 torch_musa,安装通用 torch wheel 可能覆盖 MUSA 版本。具身示例使用 Hugging Face rollout 后端,因为 MUSA 安装会跳过仅支持 CUDA 的 vLLM 与 SGLang kernel。
如需从当前代码构建 RLinf 镜像,在宿主机使用 BuildKit:
DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile \
--build-arg PLATFORM=musa \
--build-arg MUSA_VER=v2.1.5-musa4.3.7 \
--build-arg BUILD_TARGET=embodied-maniskill_libero \
-t rlinf:embodied-maniskill_libero-musa .
MUSA 驱动库由 runtime 注入,因此设备感知容器启动前,镜像构建步骤不能导入 torch。BuildKit 还能避免解析无关的 CUDA 与 ROCm 基础镜像阶段。
进入容器后,创建 OpenPI LIBERO 环境:
bash requirements/install.sh --platform musa embodied --model openpi --env libero
source .venv/bin/activate
中国大陆用户可添加 --use-mirror。若 Transformers 模型路径指定 attn_implementation: flash_attention_2,但 Transformers 无法检测厂商包,请改用 sdpa。
在 AMD、昇腾或 MUSA 上运行 LIBERO#
从前面的模型列表选择 LIBERO checkpoint 与匹配配置。下面以 π₀.₅ + LIBERO-10 + PPO 为例:在 examples/embodiment/config/libero_10_ppo_openpi_pi05.yaml 中设置 actor 与 rollout 的模型路径,并在已激活的环境中启用软件渲染。
在 AMD、华为昇腾和摩尔线程上运行 LIBERO 时,使用 CPU 渲染。在已激活的模型环境中设置以下变量,再启动训练:
export MUJOCO_GL=osmesa
export PYOPENGL_PLATFORM=osmesa
export ROBOT_PLATFORM=LIBERO
run_embodiment.sh 会保留这些变量。安装脚本通过 requirements/sys_deps.sh 安装所需的 libosmesa6 系统库。
警告
直接启动 Python 时也需要设置这两个渲染变量。软件渲染会占用 CPU 资源,增加 rollout 并行度前,应按主机能力调整环境数量。
启动 LIBERO PPO 训练:
bash examples/embodiment/run_embodiment.sh libero_10_ppo_openpi_pi05
在 AMD、昇腾或 MUSA 上运行 ManiSkill#
AMD 与昇腾使用 OpenPI 的 ManiSkill + LIBERO 组合环境。根据所选模型 accelerator 执行对应命令:
# AMD ROCm
bash requirements/install.sh --platform amd --rocm 6.4 embodied --model openpi --env maniskill_libero
# 华为昇腾 CANN
bash requirements/install.sh --platform ascend embodied --model openpi --env maniskill_libero
source .venv/bin/activate
MUSA 使用厂商模拟器镜像及其中已有的 OpenPI 环境:
MUSA 上的 ManiSkill 需要使用包含修改版 SAPIEN 与匹配 ManiSkill 包的厂商镜像。在仓库根目录启动:
export MUSA_IMAGE=registry.mthreads.com/lgpublic/rlinf:rlinf0.2-maniskill_libero_openpi-0428-jingdong
docker run -it --rm --runtime=mthreads \
--ipc=host --shm-size=100g \
-e MTHREADS_VISIBLE_DEVICES=all \
-v "$PWD":/workspace/RLinf -w /workspace/RLinf \
"$MUSA_IMAGE" bash
download_assets --assets maniskill
警告
公开的 sapien 与 ManiSkill v3.0.0b22 无法组成可用的 MUSA 模拟器环境。请保留镜像中的厂商包;添加其他模型环境时使用 --env libero,避免 install.sh 替换这些模拟器包。
source switch_env openpi
三种非 CUDA 后端均使用以下 CPU simulation 配置:
ManiSkill 的 PhysX 仿真可以在 CPU 上运行,不依赖承载模型的 accelerator。请在所选 ManiSkill 配置的 env.train 与 env.eval 中使用以下设置:
env:
train:
total_num_envs: 2
init_params:
sim_backend: cpu
render_backend: "pci:0000:00:00.0"
eval:
total_num_envs: 2
init_params:
sim_backend: cpu
render_backend: "pci:0000:00:00.0"
sim_backend: cpu 会将 PhysX 移到 CPU,VLA 仍在所选 accelerator 上运行。render_backend 通过完整 PCI 地址选择 SAPIEN Vulkan renderer;RLinf 会在创建环境前保留 pci:<domain>:<bus>:<slot>.<function> 格式。若容器内的 renderer 使用其他地址,请替换示例值。
在 AMD 平台上,install.sh 会根据 GPU ISA 选择 Vulkan 驱动并写入环境:Radeon GPU 使用 Mesa 的 RADV 驱动渲染;CDNA accelerator(如 Instinct 系列)则使用 Mesa 的 lavapipe 软件光栅化器,因为 RADV 无法在这类卡上渲染。CPU 渲染比硬件渲染占用更多 CPU 时间。
警告
CPU simulation backend 无法在单个进程内向量化多个环境。请将训练与评测的 total_num_envs 分别设为对应 env worker 的 rank 数量,使每个 worker 只运行一个环境。
π₀.₅ 需要下载 RLinf/RLinf-Pi05-ManiSkill-25Main-SFT,并在 examples/embodiment/config/maniskill_ppo_openpi_pi05.yaml 中设置两个模型路径;π₀ 改用 maniskill_ppo_openpi.yaml。根据可用设备调整 placement 与 batch size 后启动所选方案,例如:
bash examples/embodiment/run_embodiment.sh maniskill_ppo_openpi_pi05
可视化与结果#
1. TensorBoard 日志
# 启动 TensorBoard
tensorboard --logdir ./logs --port 6006
2. 关键指标
关注任务成功率指标 env/success_once。各项指标的含义见
训练指标。
3. 视频生成
video_cfg:
save_video: True
info_on_video: True
video_base_dir: ${runner.logger.log_path}/video/train
4. WandB 集成
runner:
task_type: embodied
logger:
log_path: "../results"
project_name: rlinf
experiment_name: "libero_10_ppo_openpi"
logger_backends: ["tensorboard", "wandb"] # tensorboard, wandb, swanlab
LIBERO 结果#
我们在 LIBERO 环境中使用 PPO 和 GRPO 训练了 π0和 π0.5。通过 RL 训练所获得的结果如下:
Model |
Spatial |
Object |
Goal |
Long |
Average |
Δ Avg. |
|---|---|---|---|---|---|---|
π0(few-shot) |
65.3% |
64.4% |
49.8% |
51.2% |
57.6% |
--- |
+GRPO |
97.8% |
97.8% |
83.2% |
81.4% |
90.0% |
+32.4 |
+PPO |
98.4% |
99.4% |
96.2% |
90.2% |
96.0% |
+38.4 |
Model |
Spatial |
Object |
Goal |
Long |
Average |
Δ Avg. |
|---|---|---|---|---|---|---|
π0.5(few-shot) |
84.6% |
95.4% |
84.6% |
43.9% |
77.1% |
--- |
+GRPO |
97.4% |
99.8% |
91.2% |
77.6% |
91.5% |
+14.4 |
+PPO |
99.6% |
100% |
98.8% |
93.0% |
97.9% |
+20.8 |
MetaWorld 结果#
有关 MetaWorld 结果,请查看 MetaWorld 页面。
CALVIN 结果#
有关 CALVIN 结果,请查看 CALVIN 页面。