用途
benchmark-isaaclab 用于运行 Isaac Lab 的基准测试脚本,并对输出结果进行解读。它覆盖强化学习训练吞吐量、非强化学习环境步进 FPS、相机系统性能、机器人加载、应用启动、惰性导出/导入以及 XformPrimView 性能等多个维度。
主要能力与脚本
所有脚本均位于 scripts/benchmarks/ 目录,通过 ./isaaclab.sh -p scripts/benchmarks/<script>.py 运行。
- benchmark_non_rl.py:测量环境步进 FPS(最常用),关键参数为 --task、--num_envs、--num_frames。
- benchmark_rlgames.py:测量 RL-Games 训练吞吐量,关键参数为 --task、--num_envs、--max_iterations。
- benchmark_rsl_rl.py:测量 RSL-RL 训练吞吐量,关键参数为 --task、--num_envs、--max_iterations。
- benchmark_cameras.py:测量相机系统 FPS 与自动调优,关键参数为 --num_tiled_cameras、--num_standard_cameras、--height、--width、--autotune。
- benchmark_load_robot.py:测量机器人加载时间,关键参数为 --num_envs、--robot {anymal_d,h1,g1}。
- benchmark_startup.py:分析应用启动时间,关键参数为 --task(必填)、--num_envs、--top_n。
- benchmark_lazy_export.py:测量惰性导出/导入速度,关键参数为 --iterations、--tasks,仅输出到 stdout,无 JSON 后端。
- benchmark_view_comparison.py:对比 XformPrimView 与 PhysX,关键参数为 --num_envs、--num_iterations、--profile,仅输出 stdout/cProfile,无 JSON 后端。
- benchmark_xform_prim_view.py:测量 XformPrimView 性能,关键参数为 --num_envs、--num_iterations、--profile,仅输出 stdout/cProfile,无 JSON 后端。
注意:benchmark_lazy_export.py、benchmark_view_comparison.py 和 benchmark_xform_prim_view.py 不支持 --benchmark_backend 或 --output_path,结果输出到 stdout,可用 --profile 保存 cProfile .prof 文件。
通用参数包括 --device、--enable_cameras、--benchmark_backend、--output_path、--distributed。
--headless 已弃用:无头模式请省略 --viz,或使用 --viz none。
使用方式
前置准备:安装请参考 install-isaaclab 技能(克隆、conda 环境、Isaac Sim 链接)。分析详细信息(Tracy、Nsight)请参考 profiling 技能。
运行任何基准前:
- 使用 WARM 运行获取主要 FPS/frametime 指标,参见 profiling 技能中的 COLD/WARM/TRACY 方法。
- 将 CPU governor 设为 performance,参见 perf-tuning 技能。
- 默认不要修补 Isaac Sim 关闭逻辑。若 Tracy 在输出完成后关闭挂起,使用 profiling 技能中限定范围的后备指引。
传递 Kit 参数示例(用于分析、输出控制等):
./isaaclab.sh -p scripts/benchmarks/benchmark_non_rl.py
--task=Isaac-Ant-Direct-v0 --viz none --num_envs=4096
--kit_args "--/app/profilerBackend=tracy --/log/file=/tmp/kit.log"
批量套件:
bash scripts/benchmarks/run_training_benchmarks.sh # RSL-RL, 500 iters bash scripts/benchmarks/run_non_rl_benchmarks.sh # non-RL, various env counts bash scripts/benchmarks/run_physx_benchmarks.sh # PhysX assets
关键注意事项:参数格式。Isaac Lab 使用下划线(标准 argparse),Isaac Sim 使用连字符。例如 Isaac Lab 用 --num_envs 4096、--num_frames 100、--enable_cameras;Isaac Sim 用 --num-cameras 8、--num-gpus 1、--num-frames 600。混用是静默配置错误的常见来源。
常见任务与环境数量
相机任务(需加 --enable_cameras):Isaac-Cartpole-RGB-Camera-Direct-v0,512-4096 环境。
经典物理任务(4096 / 8192 / 16384 环境):Isaac-Ant-Direct-v0、Isaac-Cartpole-Direct-v0、Isaac-Humanoid-Direct-v0。
运动任务(4096 环境):Isaac-Velocity-Rough-Anymal-C-v0、Isaac-Velocity-Rough-H1-v0、Isaac-Velocity-Rough-G1-v0。
操作任务(128-8192 环境):Isaac-Reach-Franka-v0、Isaac-Factory-GearMesh-Direct-v0。
输出文件
- benchmark_<type><task><timestamp>.json:主结果文件。
- kit.log:执行日志(若通过 --kit_args 设置 --/log/file=)。
- *.tracy / *.nsys-rep:分析跟踪文件(仅在使用分析参数时)。
JSON 结构:由若干 phase 对象组成的数组,每个对象包含 phase_name、measurements({name, data, type, unit} 列表)和 metadata({name, data, type} 列表)。Phase 包括 benchmark_info、startup、runtime、hardware_info、version_info。RL 基准会额外增加 train phase。
限制
参数引用可能已过时,务必用 ./isaaclab.sh -p <script> --help 验证。安装步骤、profiling 细节未在本文档展开,需参考对应技能。部分脚本文档未提供 JSON 后端支持。运行时需注意参数格式差异以避免静默错误配置。