基于 EmbodiChain 的强化学习训练#
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。任务#
任务 |
描述 |
|---|---|
CartPole |
使用 |
观测与动作#
字段 |
规格 |
|---|---|
观测 |
由 |
动作 |
|
奖励 |
EmbodiChain Gym config 中定义的任务奖励。 |
提示词 |
不使用;这是低维状态控制配方。 |
安装#
首先,克隆 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 取值上有所不同。
Docker 镜像
docker run -it --rm --gpus all \
--shm-size 32g \
--network host \
--name rlinf \
-v .:/workspace/RLinf \
rlinf/rlinf:agentic-rlinf0.3-embodichain
# 国内用户可使用:
# docker.1ms.run/rlinf/rlinf:agentic-rlinf0.3-embodichain
在镜像中切换到 EmbodiChain 虚拟环境:
source switch_env embodichain
自定义环境
安装 EmbodiChain 依赖:
# 国内用户可添加 --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 |
|
|
bash examples/embodiment/run_embodiment.sh embodichain_ppo_cart_pole
这条命令会:
通过
gym_config_path加载 EmbodiChain CartPole Gym JSON。为 actor、rollout 和 EmbodiChain env 组件创建 Ray worker。
将配置的状态字段拼接成
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。