IsaacSim/Lab Benchmark
IsaacSim/Lab Benchmark
Hui Kang, DevTech | AI Open Day 5/30/2025
目录
- 议程 (Agenda
- IsaacSim 基准测试 (IsaacSim Benchmark
- 基准测试介绍 (Benchmark Introduce
- 不同计算机配置下的性能表现 (Performance Across Different Computer Configurations
- 不同任务的可扩展性 (Scalability Across Different Tasks
- 相机渲染任务 (Camera Render Task
- 线程数影响 (Thread num impact
- 总结 (Takeaway
- IsaacLab 基准测试 (IsaacLab Benchmark
- 任务介绍 (Task introduce
- IsaacLab 基准测试 - Isaac-Velocity-Flat-Unitree-Go2-v0
- IsaacLab 基准测试:Isaac-Navigation-Flat-Obstacle-Anymal-C-v0
- IsaacLab 基准测试:结论与启示
- 感谢
议程 (Agenda)
- IsaacSim 基准测试 (IsaacSim Benchmark)
- IsaacLab 基准测试 (IsaacLab Benchmark)
IsaacSim 基准测试 (IsaacSim Benchmark)
基准测试介绍 (Benchmark Introduce)
-
基准测试方法 (Benchmark method)
- 使用 IsaacSim 提供的基准测试脚本 (
${ISAACSIM_PATH}/standalone_examples/benchmarks) 来执行基准测试。 - 使用 Nsight Systems 和 Tracy 来分析 IsaacSim 中每一帧的时间分布。
- 使用 IsaacSim 提供的基准测试脚本 (
-
基准测试目标 (Benchmark goals)
- 理解 IsaacSim 在不同配置的计算机上的性能差异。
- 理解 IsaacSim 的并行可扩展性,并识别哪些任务可以通过多 GPU 加速。
- 理解 IsaacSim 的某些配置如何影响其性能。
不同计算机配置下的性能表现 (Performance Across Different Computer Configurations)
- IsaacSim 在不同任务和各种配置下的性能表现。(最佳性能颜色,最差性能颜色)
- 当 GPU 固定时,使用不同的 CPU 平台会对大多数基准测试任务产生显著影响。
- 当 CPU 平台固定时,不同 GPU 的性能基本相同,其中 L40* 的性能略好于 4090 D 和 L20。
*仅供技术讨论。
不同任务的可扩展性 (Scalability Across Different Tasks)
- 相机渲染(Camera Render)任务的性能取决于分辨率、相机数量以及可并行化渲染任务的 GPU 数量。(GPU 密集型,CPU 密集型)
- 对于 GPU 密集型任务,并行化和多个 GPU 更好,并行效率超过 90%。
- 对于 CPU 密集型任务,增加更多 GPU 不会提供加速,并可能导致性能波动,甚至可能降低性能。
- 机器人仿真和 SDG 任务(多 GPU 可以加速,多 GPU 无法加速)
- 对于主要工作负载在仿真和 SDG 的任务,增加更多 GPU 会导致 CPU 上的工作负载增加,从而导致性能下降。
- 对于涉及多个传感器的任务,多个 GPU 可以处理不同的传感器,类似于处理多个相机的方式,从而实现并行加速。
相机渲染任务 (Camera Render Task)
-
渲染任务中的瓶颈和不可并行化的部分
- 相机数据检索会为每个相机产生大量拷贝,在数据采集阶段造成高开销。
- 例如,在 1080p 分辨率下使用 8 个相机时,相机数据拷贝需要 14 毫秒,在 4-GPU 任务中占用了高达 37% 的时间。
- 每个相机都需要终结并执行渲染图(Render Graph),这里的执行次数取决于分配给该 GPU 的平铺相机(tiling cameras)数量。
- 增加 GPU 数量会增加此开销,这也是为什么在使用多个 GPU 时某些任务性能下降的原因。
- 多个 GPU 的渲染结果通信可能会有显著波动,导致在使用多个 GPU 时帧时间不稳定。
- 相机数据检索会为每个相机产生大量拷贝,在数据采集阶段造成高开销。
线程数影响 (Thread num impact)
- 在进行基准测试时,我们发现经常存在大量的线程等待。经过调查,我们发现这可能与 Carb 和 TBB 线程的数量有关。
- 我们发现过多的 Carb Tasking 和 TBB 线程会导致性能下降。因此,我们测试了不同线程数对性能的影响。
- 通过测试,我们发现过多的 Carb Tasking 和 TBB 线程会导致性能下降。因此,有必要对线程数进行优化测试,以反映真实的使用情况。建议将最大线程数设置为 32。如果 CPU 的核心数少于 32 个,则使用可用核心的数量。
- 设置 Kit 参数:
- 设置环境变量:
总结 (Takeaway)
- 当运行 GPU 渲染任务相对较轻时,大部分工作负载主要在 CPU 上。如果在 IsaacSim 任务中有性能提升的空间,建议首先考虑更换到更好的 CPU 平台进行性能测试。
- 只有在涉及多个传感器和高分辨率的任务中,多 GPU 加速才有潜力。对于低分辨率和少量传感器的任务,无法加速。事实上,使用多个 GPU 甚至可能增加 CPU 上的协调开销,导致性能下降。
- 在使用 IsaacSim 时,更多的 CPU 线程并不一定意味着更好的性能。在我们的测试中,最新的 Xeon 处理器在设置为 32 个线程时表现最佳。
IsaacLab 基准测试 (IsaacLab Benchmark)
任务介绍 (Task introduce)
- 为 IsaacLab 基准测试了两个任务:
- Isaac-Velocity-Flat-Unitree-Go2-v0:
- IsaacLab 已经提供了一个环境。更多细节请参考 IsaacLab 文档:https://isaac-sim.github.io/IsaacLab/main/source/overview/environments.html
- Isaac-Navigation-Flat-Obstacle-Anymal-C-v0:
- 我们使用带平铺相机的 Anymal-C 自定义了一个导航任务,该任务的目标是让 Anymal-C 避开障碍物。
- 用于 Anymal-C 平铺相机导航任务的代码位于:https://github.com/kanghui0204/IsaacLab/tree/fea/navi-obstacle-camera
- Isaac-Velocity-Flat-Unitree-Go2-v0:
IsaacLab 基准测试 - Isaac-Velocity-Flat-Unitree-Go2-v0
- 收集时间(collection time)占了非常高的百分比,而强化学习(RL)账户只占用了很少的时间。
- 对于多 GPU 加速,实现良好的加速比是困难的。这主要是因为随着环境数量减少,收集时间不会成比例地缩短。
IsaacLab 基准测试:Isaac-Navigation-Flat-Obstacle-Anymal-C-v0
- 数据收集时间占了非常高的百分比,而强化学习(RL)本身所占用的时间非常少。
- 对于此任务,由于平铺相机(tiled camera)和强化学习模型(CNN+MLP)的处理时间较长,其可扩展性相对较好。
上图表格展示了在 Isaac-Navigation-Flat-Obstacle-Anymal-C-v0 任务中,使用不同数量的 GPU 进行训练时的性能数据。随着 GPU 数量从 1 增加到 8,总时间从 26.05 秒显著减少到 6.01 秒,实现了 433% 的加速比,表明在该类复杂任务中,多 GPU 训练具有良好的扩展性。
IsaacLab 基准测试:结论与启示
- 对于 IsaacLab 当前提供的强化学习示例,例如导航和速度相关任务,其数据收集时间和强化学习模块的扩展性都不好。使用多个 GPU 可能无法实现显著的加速效果。
- 对于更复杂的任务,例如我们示例中的平铺相机+导航避障任务,多 GPU 的可扩展性表现良好。可以尝试使用多 GPU 进行加速。