基于 EmbodiChain 的强化学习训练#

https://raw.githubusercontent.com/RLinf/misc/main/pic/embodichain.gif

EmbodiChain(图片来源:EmbodiChain)。#

EmbodiChain 是一个通过 Gym 风格接口暴露 RL 任务的具身智能实验室框架。你将使用 RLinf 在 EmbodiChain CartPole 任务上,通过 PPO 训练 MLP actor-critic。

概览#

在 EmbodiChain CartPole 上训练基于状态的 MLP policy。

模型

MLP

算法

PPO

任务

CartPole

硬件

1 节点 · 4 GPUs

你将完成: 安装 → 启动 run_embodiment.sh → 观察 rollout reward。
前置条件: 安装 · EmbodiChain 包与任务资源。

任务#

任务

描述

CartPole

使用 embodichain_tasks/configs/tasks/classic_control/cart_pole/env.json 中的状态观测平衡 pole。

观测与动作#

字段

规格

观测

由 state_keys: ["qpos", "qvel", "qf"] 构造的单个 states 张量。

动作

policy_setup: cartpole-delta-qpos 对应的 2 维连续动作。

奖励

EmbodiChain Gym config 中定义的任务奖励。

提示词

不使用;这是低维状态控制配方。

安装#

首先,克隆 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 取值上有所不同。

Docker 镜像

docker run -it --rm --gpus all \
   --shm-size 32g \
   --network host \
   --name rlinf \
   -v .:/workspace/RLinf \
   rlinf/rlinf:agentic-rlinf0.4-embodichain

# 国内用户可使用:
# infinigence-ai-registry.cn-beijing.cr.aliyuncs.com/rlinf/rlinf:agentic-rlinf0.4-embodichain

在镜像中切换到 EmbodiChain 虚拟环境:

source switch_env embodichain

自定义环境

安装 EmbodiChain 0.3.0 及其依赖。安装脚本从 http://pyp.open3dv.site:2345/simple/dexsim-engine/ 获取 dexsim-engine==0.5.0,其余包通过配置的 Python 包索引解析。运行安装的机器需要能够访问厂商服务器的 2345 端口。

# 国内用户可添加 --use-mirror。
bash requirements/install.sh embodied --env embodichain
source .venv/bin/activate

警告

EmbodiChain 的 dexsim 依赖需要 libpython3.xx.so。如果在 UV Python 布局下遇到 libpython3.11.so 运行时错误,请使用 Conda 环境,并重新运行 bash requirements/install.sh embodied --env embodichain --no-root。

默认使用已安装包中的配置。如需指向本地 EmbodiChain checkout,请设置:

export EMBODICHAIN_PATH=/path/to/EmbodiChain

如果运行时提示缺少任务资源,请在同一个 Python 环境中下载:

export EMBODICHAIN_DATA_ROOT=/path/to/data
python -m embodichain.data download --name CartPole
python -m embodichain.data download --name SimResources

下载模型#

不需要检查点。MLP policy 从头开始训练。

运行#

启动 CartPole 配方:

配方

配置

命令后缀

MLP + PPO

examples/embodiment/config/embodichain_ppo_cart_pole.yaml

embodichain_ppo_cart_pole

bash examples/embodiment/run_embodiment.sh embodichain_ppo_cart_pole

这条命令会:

  1. 通过 gym_config_path 加载 EmbodiChain CartPole Gym JSON。

  2. 为 actor、rollout 和 EmbodiChain env 组件创建 Ray worker。

  3. 将配置的状态字段拼接成 states,并使用 PPO 训练 MLP policy。

备注

将此配方迁移到其他 EmbodiChain 任务时,请保持 actor.model.obs_dim、 actor.model.action_dim 和 actor.model.policy_setup 与任务配置一致。

可视化与结果#

默认配置使用 W&B 记录日志。可改为 TensorBoard:

runner:
  logger:
    logger_backends: ["tensorboard"]

然后在 RLinf 仓库根目录启动 TensorBoard:

tensorboard --logdir ../results --port 6006

完整指标说明见 训练指标。

评测与 CI#

EmbodiChain CartPole 也被 embodied e2e 配置覆盖,位于 tests/e2e_tests/embodied/。仅当需要非默认 checkout 时设置 EMBODICHAIN_PATH。