在之前的PAI Physical AI系列Notebook中,涉及仿真遥操作、强化学习等任务,就会强依赖Omniverse作为可视化终端,PhysX作为物理引擎,而这两者又依赖RT Core GPU与云端可视化方案。虽然在PAI上提供了例如noVNC方案(参考: PAI Physical AI Notebook详解6:Isaac Lab分布式感知强化学习
在 PAI 的 Notebook Gallery 中,我们已经预置了这套的最佳实践:
https://gallery.pai-ml.com/#/preview/deepLearning/cv/isaac_lab_newton

启动 DSW 并执行环境准备
通过 Notebook Gallery 启动 DSW,使用 Notebook Gallery 中指定的镜像,可以使用 GU8T等仅具备CUDA Core的机型规格


在 DSW 启动完成后,执行 Notebook 中相应 Cell 以下载代码并完成环境配置

执行一键测试脚本,以验证环境配置的正确性:

看到上述日志,即证明环境配置完成
使用Rerun观察Newton渲染过程
Isaac Lab 现在将「物理引擎」与「可视化后端」解耦,用户可以在同一套任务 / 场景代码上自由切换不同的可视化器(Omniverse、Newton、Rerun), 后两者基于Newton 中的visualizer 实现。本示例以Rerun visualizer 为例,展示其web端渲染能力。
首先, 我们指定使用的visualizer类型为rerun。

上述命令中,--visualizer argument 来指定渲染方式,可以有三种选项 :
- rerun
- newton
- omniverse
实际使用过程中可以选择多种visualizer同时可视化,但需注意 如果其中包含omniverse, 需要另外安装Isaac Sim。
接下来,我们实例化Isaac-Cartpole-RGB-Camera-Direct-v0任务对应的Environment。这是一个经典的倒立摆控制场景,我们将通过Newton渲染,并通过Rerun观察倒立摆移动过程中的运动姿态。
注意,我们在设置RerunVisualizerCfg中,需指定keep_historical_data=True, rerun提供record/replay功能, 会记录下仿真过程中的状态。

第一次运行此段代码,会进行warp kernel的编译,需要等几秒钟时间,成功运行后可以看到输出"[INFO]: Completed setting up the environment…"
然后通过env.reset()进行仿真环境的初始化:

接下来调用rerun viewer, 在DSW环境下,会直接内嵌显示一个可视化窗口; 通过鼠标操作可以进行视角的调整

接下来,我们运行这个任务,以在刚才Rerun可视化窗口中展示单臂摆的动作。此示例中我们运行100步,也可以修改这个数值调整仿真过程的长短。

单卡与多卡强化学习
利用Newton物理引擎,我们可以基于GU8T等CUDA Core资源在DLC中进行单卡或多卡强化学习。
单卡强化学习
使用以下任务镜像:
dsw-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-training-algorithm/isaac-sim:isaaclab-newton-v2-1-20260210
并使用以下脚本作为启动命令:
# 设置环境变量
export EXT_ROOT=/mnt/data/NB12
cd ${EXT_ROOT}/code/Pai-PhysxTrainTools
# 启动训练脚本
/workspace/isaaclab/isaaclab.sh -p ./Examples/IsaacLabNewton/rl_games/train.py --task Isaac-Cartpole-RGB-Camera-Direct-v0 --headless --num_envs 512 --max_iterations 12000
其中:
- rl_games:当前版本IsaacLab_newton分支对CartpoleRGBEnv仅适配了rl_games库
- --headless:指定headless, 关闭所有可视化,提高训练速度。实际上此分支如果没有指定–visualizer, 那么默认是headless模式。
- -–num_envs:根据硬件资源指定环境个数,此示例中我们使用512个环境并行训练
- -–max_iterations 指定训练迭代次数, 此例中为12000步,实际观察训练曲线,此任务收敛较快,可以适当调小。
多卡强化学习
使用以下脚本在DLC中启动多卡强化学习:
# 设置环境变量
export EXT_ROOT=/mnt/data/NB12
cd ${EXT_ROOT}/code/Pai-PhysxTrainTools
# 启动训练脚本
/workspace/isaaclab/isaaclab.sh -p -m torch.distributed.run --nproc_per_node=4 --nnodes=1 ./Examples/IsaacLabNewton/rl_games/train.py --task Isaac-Cartpole-RGB-Camera-Direct-v0 --headless --distributed --num_envs 512 --max_iterations 12000
其中:
- –nproc_per_node,使用的GPU卡数。可以根据硬件资源指定,这里我们使用4卡。
- –nnodes,使用的节点数。在单机情况下,指定1个节点。
- –distributed,使用分布式训练。
- –num_envs,在这里我们还是指定每张卡512个环境。在多卡情况下,总的环境个数,是单卡的数倍。
- –max_iterations,迭代次数和之前保持一致
训练情况对比分析
我们可以通过tensorboard 对保存的logs进行训练情况的对比分析。
当我们指定使用多卡时候,环境的总数也随之成倍增加, 如下图fps图所示。对于RL训练任务,并行更多的环境可以加快训练的收敛速度,对应的rewards也更加稳定,波动更少:


小结
目前PAI平台已经实现对Isaac Sim、Isaac Lab系列的工具链的全面支持,针对基于PAI平台的Isaac Lab强化学习训练的场景,我们也总结了多个用户指引示例归档到“Pai-PhysxTrainTools/IsaacLab230和IsaacLabNewton”中,涵盖基于Isaac Sim的RL训练以及基于Newton引擎的RL训练等。
本Notebook主要针对集成Newton的Isaac Lab强化学习训练做了详细介绍以及实验分析,其他示例可以参考NVIDIA官方文档或者我们提供的用户指引文档。