IsaacSim/Lab Benchmark

Hui Kang, DevTech | AI Open Day 5/30/2025

目录

议程 (Agenda)

  • IsaacSim 基准测试 (IsaacSim Benchmark)
  • IsaacLab 基准测试 (IsaacLab Benchmark)

IsaacSim 基准测试 (IsaacSim Benchmark)

基准测试介绍 (Benchmark Introduce)

  • 基准测试方法 (Benchmark method)

    • 使用 IsaacSim 提供的基准测试脚本 (${ISAACSIM_PATH}/standalone_examples/benchmarks) 来执行基准测试。
    • 使用 Nsight Systems 和 Tracy 来分析 IsaacSim 中每一帧的时间分布。
  • 基准测试目标 (Benchmark goals)

    • 理解 IsaacSim 在不同配置的计算机上的性能差异。
    • 理解 IsaacSim 的并行可扩展性,并识别哪些任务可以通过多 GPU 加速。
    • 理解 IsaacSim 的某些配置如何影响其性能。

不同计算机配置下的性能表现 (Performance Across Different Computer Configurations)

  • IsaacSim 在不同任务和各种配置下的性能表现。(最佳性能颜色,最差性能颜色)
Page 5 展示了在四种不同硬件配置下,针对相机渲染、机器人导航、物理仿真和图像生成任务的性能数据表格。
Page 5 展示了在四种不同硬件配置下,针对相机渲染、机器人导航、物理仿真和图像生成任务的性能数据表格。
  • 当 GPU 固定时,使用不同的 CPU 平台会对大多数基准测试任务产生显著影响。
  • 当 CPU 平台固定时,不同 GPU 的性能基本相同,其中 L40* 的性能略好于 4090 D 和 L20。

*仅供技术讨论。

不同任务的可扩展性 (Scalability Across Different Tasks)

  • 相机渲染(Camera Render)任务的性能取决于分辨率、相机数量以及可并行化渲染任务的 GPU 数量。(GPU 密集型,CPU 密集型)
    • 对于 GPU 密集型任务,并行化和多个 GPU 更好,并行效率超过 90%。
    • 对于 CPU 密集型任务,增加更多 GPU 不会提供加速,并可能导致性能波动,甚至可能降低性能。
Page 6 展示了在1280x720, 1920x1080, 和 3840x2160三种不同分辨率下,使用1、2、4个GPU时,相机渲染任务的帧时间(毫秒)数据。
Page 6 展示了在1280x720, 1920x1080, 和 3840x2160三种不同分辨率下,使用1、2、4个GPU时,相机渲染任务的帧时间(毫秒)数据。
  • 机器人仿真和 SDG 任务(多 GPU 可以加速,多 GPU 无法加速)
    • 对于主要工作负载在仿真和 SDG 的任务,增加更多 GPU 会导致 CPU 上的工作负载增加,从而导致性能下降。
    • 对于涉及多个传感器的任务,多个 GPU 可以处理不同的传感器,类似于处理多个相机的方式,从而实现并行加速。
Page 7 展示了在 Nova Carter ROS2 和 SDG 任务中,使用1个和4个GPU时的性能对比,以及对应的传感器配置。
Page 7 展示了在 Nova Carter ROS2 和 SDG 任务中,使用1个和4个GPU时的性能对比,以及对应的传感器配置。

相机渲染任务 (Camera Render Task)

  • 渲染任务中的瓶颈和不可并行化的部分

    • 相机数据检索会为每个相机产生大量拷贝,在数据采集阶段造成高开销。
      • 例如,在 1080p 分辨率下使用 8 个相机时,相机数据拷贝需要 14 毫秒,在 4-GPU 任务中占用了高达 37% 的时间。
    • 每个相机都需要终结并执行渲染图(Render Graph),这里的执行次数取决于分配给该 GPU 的平铺相机(tiling cameras)数量。
      • 增加 GPU 数量会增加此开销,这也是为什么在使用多个 GPU 时某些任务性能下降的原因。
    • 多个 GPU 的渲染结果通信可能会有显著波动,导致在使用多个 GPU 时帧时间不稳定。

线程数影响 (Thread num impact)

  • 在进行基准测试时,我们发现经常存在大量的线程等待。经过调查,我们发现这可能与 Carb 和 TBB 线程的数量有关。
Page 9 的 Tracy 性能分析截图显示了大量的线程等待时间。
Page 9 的 Tracy 性能分析截图显示了大量的线程等待时间。
  • 我们发现过多的 Carb Tasking 和 TBB 线程会导致性能下降。因此,我们测试了不同线程数对性能的影响。
Page 10 的表格和图表展示了在不同线程数(84, 64, 48, 32, 16)下,Camera Render 和 Nova Carter ROS2 任务的性能表现。
Page 10 的表格和图表展示了在不同线程数(84, 64, 48, 32, 16)下,Camera Render 和 Nova Carter ROS2 任务的性能表现。
  • 通过测试,我们发现过多的 Carb Tasking 和 TBB 线程会导致性能下降。因此,有必要对线程数进行优化测试,以反映真实的使用情况。建议将最大线程数设置为 32。如果 CPU 的核心数少于 32 个,则使用可用核心的数量。
  • 设置 Kit 参数:
  • 设置环境变量:
Page 11 展示了设置线程数的具体参数和环境变量。
Page 11 展示了设置线程数的具体参数和环境变量。

总结 (Takeaway)

  • 当运行 GPU 渲染任务相对较轻时,大部分工作负载主要在 CPU 上。如果在 IsaacSim 任务中有性能提升的空间,建议首先考虑更换到更好的 CPU 平台进行性能测试。
  • 只有在涉及多个传感器和高分辨率的任务中,多 GPU 加速才有潜力。对于低分辨率和少量传感器的任务,无法加速。事实上,使用多个 GPU 甚至可能增加 CPU 上的协调开销,导致性能下降。
  • 在使用 IsaacSim 时,更多的 CPU 线程并不一定意味着更好的性能。在我们的测试中,最新的 Xeon 处理器在设置为 32 个线程时表现最佳。

IsaacLab 基准测试 (IsaacLab Benchmark)

任务介绍 (Task introduce)

IsaacLab 基准测试 - Isaac-Velocity-Flat-Unitree-Go2-v0

  • 收集时间(collection time)占了非常高的百分比,而强化学习(RL)账户只占用了很少的时间。
  • 对于多 GPU 加速,实现良好的加速比是困难的。这主要是因为随着环境数量减少,收集时间不会成比例地缩短。
Page 15 的表格展示了 Isaac-Velocity-Flat-Unitree-Go2-v0 任务在不同 GPU 数量下的性能数据,包括收集时间、RL时间、总时间以及与单 GPU 相比的加速比。
Page 15 的表格展示了 Isaac-Velocity-Flat-Unitree-Go2-v0 任务在不同 GPU 数量下的性能数据,包括收集时间、RL时间、总时间以及与单 GPU 相比的加速比。

IsaacLab 基准测试:Isaac-Navigation-Flat-Obstacle-Anymal-C-v0

  • 数据收集时间占了非常高的百分比,而强化学习(RL)本身所占用的时间非常少。
  • 对于此任务,由于平铺相机(tiled camera)和强化学习模型(CNN+MLP)的处理时间较长,其可扩展性相对较好。
Page 16
Page 16

上图表格展示了在 Isaac-Navigation-Flat-Obstacle-Anymal-C-v0 任务中,使用不同数量的 GPU 进行训练时的性能数据。随着 GPU 数量从 1 增加到 8,总时间从 26.05 秒显著减少到 6.01 秒,实现了 433% 的加速比,表明在该类复杂任务中,多 GPU 训练具有良好的扩展性。

IsaacLab 基准测试:结论与启示

  • 对于 IsaacLab 当前提供的强化学习示例,例如导航和速度相关任务,其数据收集时间和强化学习模块的扩展性都不好。使用多个 GPU 可能无法实现显著的加速效果。
  • 对于更复杂的任务,例如我们示例中的平铺相机+导航避障任务,多 GPU 的可扩展性表现良好。可以尝试使用多 GPU 进行加速。

感谢

Page 18
Page 18