基于IsaacLab评测平台的强化学习训练#
本示例提供了在 IsaacLab 环境中使用 RLinf 框架 通过强化学习微调gr00t算法的完整指南。它涵盖了整个过程——从环境设置和核心算法设计到训练配置、评估和可视化——以及可重现的命令和配置片段。
主要目标是开发一个能够执行机器人操作能力的模型:
视觉理解:处理来自机器人相机的 RGB 图像。
语言理解:理解自然语言的任务描述。
动作生成:产生精确的机器人动作(位置、旋转、夹爪控制)。
强化学习:结合环境反馈,使用 PPO 优化策略。
环境#
IsaacLab 环境
环境:高度客制化的仿真系统,基于isaacsim制作
任务:高度客制化适应多个智能体的任务
观测:高度客制化输入
动作空间:高度客制化动作
数据结构
任务描述: 参考 IsaacLab-Examples 获取已有可用任务. 如果您想自定义任务请参考 IsaacLab-Quickstart .
添加自定义任务
如果您想添加自定义任务请参考 RLinf/rlinf/envs/isaaclab/tasks/stack_cube.py , 并将您自定义的脚本放置在 RLinf/rlinf/envs/isaaclab/tasks 下, 同时在 RLinf/rlinf/envs/isaaclab/__init__.py 内添加相关代码
算法#
核心算法组件
PPO (近端策略优化)
使用 GAE (广义优势估计) 进行优势估计
带比例限制的策略裁剪
价值函数裁剪
熵正则化
GRPO (组相对策略优化)
对于每个状态/提示,策略生成 G 个独立动作
通过减去组平均奖励来计算每个动作的优势
依赖安装#
选项 1:Docker 镜像
使用 Docker 镜像 rlinf/rlinf:agentic-rlinf0.1-isaaclab 来运行实验。
选项 2:自定义环境
pip install uv
bash requirements/install.sh embodied --model gr00t --env isaaclab
source .venv/bin/activate
ISAAC-SIM下载#
在使用IsaacLab之前,您需要下载并设置Isaac Sim。请按照以下说明操作:
mkdir -p isaac_sim
cd isaac_sim
wget https://download.isaacsim.omniverse.nvidia.com/isaac-sim-standalone-5.1.0-linux-x86_64.zip
unzip isaac-sim-standalone-5.1.0-linux-x86_64.zip
rm isaac-sim-standalone-5.1.0-linux-x86_64.zip
下载后,通过以下方式设置环境变量:
警告
每次打开新终端使用Isaac Sim时都必须执行此步骤。
source ./setup_conda_env.sh
模型下载#
cd /workspace
# 下载libero spatial少样本SFT模型(任选其一)
# 方法1:使用git clone
git lfs install
git clone https://huggingface.co/RLinf/RLinf-Gr00t-SFT-Spatial
# 方法2:使用huggingface-hub
pip install huggingface-hub
hf download RLinf/RLinf-Gr00t-SFT-Spatial --local-dir RLinf-Gr00t-SFT-Spatial
运行脚本#
备注
因为现在暂时没有isaaclab的专家数据,所以我们现在的脚本都是可以跑通流程的demo
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 数量。使用上述配置,您可以实现
env 和 rollout 之间的管道重叠,以及与 actor 的共享。
此外,通过在配置中设置 pipeline_stage_num = 2,
您可以实现 rollout 和 actor 之间的管道重叠,提高 rollout 效率。
cluster:
num_nodes: 1
component_placement:
env,rollout,actor: all
您也可以重新配置布局以实现完全共享, 其中 env、rollout 和 actor 组件都共享所有 GPU。
cluster:
num_nodes: 1
component_placement:
env: 0-1
rollout: 2-5
actor: 6-7
您也可以重新配置布局以实现完全分离, 其中 env、rollout 和 actor 组件各自使用自己的 GPU,无 干扰,消除了卸载功能的需要。
2. 配置文件
gr00t上测试isaaclab中的 Isaac-Stack-Cube-Franka-IK-Rel-Visuomotor-Cosmos-v0 任务
gr00t demo配置文件:
examples/embodiment/config/isaaclab_ppo_gr00t_demo.yaml
请将配置文件中的 rollout.model.model_path 参数修改为您本地下载的模型文件地址。
3. 启动命令
体验在isaaclab中训练gr00t:
bash examples/embodiment/run_embodiment.sh isaaclab_ppo_gr00t_demo
若想测试gt00t,请运行
bash examples/embodiment/eval_embodiment.sh isaaclab_ppo_gr00t_demo
可视化和结果#
1. TensorBoard 日志记录
# 启动 TensorBoard
tensorboard --logdir ./logs --port 6006
2. 关键监控指标
训练指标
actor/loss: 策略损失actor/value_loss: 价值函数损失 (PPO)actor/grad_norm: 梯度范数actor/approx_kl: 新旧策略之间的 KL 散度actor/pg_clipfrac: 策略裁剪比例actor/value_clip_ratio: 价值损失裁剪比例 (PPO)
Rollout 指标
rollout/returns_mean: 平均回合回报rollout/advantages_mean: 平均优势值
环境指标
env/episode_len: 平均回合长度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: "test_isaaclab"
logger_backends: ["tensorboard", "wandb"] # tensorboard, wandb, swanlab