在之前的PAI Physical AI系列Notebook中,涉及仿真遥操作、强化学习等任务,就会强依赖Omniverse作为可视化终端,PhysX作为物理引擎,而这两者又依赖RT Core GPU与云端可视化方案。虽然在PAI上提供了例如noVNC方案(参考:《PAI Physical AI Notebook详解6:Isaac Lab分布式感知强化学习》)实现Web端可视化,这些依赖也大大提高了整体技术栈的复杂度与选型难度。
NVIDIA Newton 是新一代基于 Warp 的高性能物理引擎,相比传统 PhysX 后端在可微分物理、柔性体仿真等方面具有更强的扩展能力。新版Isaac Lab 现可将物理引擎与可视化后端解耦,用户可在同一套任务代码上灵活切换 Omniverse、Newton、Rerun 三种渲染器。其中 Rerun 是一个轻量级的开源可视化工具,支持 Web 端实时渲染与回放,无需 Omniverse 环境即可完成训练过程的三维可视化,大幅降低了部署门槛。
在PAI-DSW中,Newton+Rerun成为更加“云原生”的可视化渲染方案:在后端,Newton 引擎可通过 Warp 接口,驱动 GU8T、GU8E、GU8TE 等 CUDA 核心 GPU 进行视觉渲染,而无需单独购买 GU8IS、GU8V 等 RT 核心 GPU,实现更大程度的资源复用;在前端,Rerun 窗口可直接嵌入在 Notebook Web 界面中,而无需再通过 VNC 启动 Isaac Lab 窗口。
在 PAI 的 Notebook Gallery 中,我们已经预置了这套的最佳实践:
gallery.pai-ml.com/#/preview/d…
启动 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官方文档或者我们提供的用户指引文档。