使用NVIDIA Nsight开发者工具优化神经重建管线实战指南
NVIDIA Omniverse NuRec 是一个神经重建管线,专门用于从多传感器数据(比如摄像头和激光雷达)中构建高保真的真实世界三维模型。它的核心用途是,把自动驾驶和机器人平台捕捉到的动态场景,转化成一套可以直接用于仿真环境的数字资产——你可以在 Omniverse 里随时渲染、回放、分析这些
NVIDIA Omniverse NuRec 是一个神经重建管线,专门用于从多传感器数据(比如摄像头和激光雷达)中构建高保真的真实世界三维模型。它的核心用途是,把自动驾驶和机器人平台捕捉到的动态场景,转化成一套可以直接用于仿真环境的数字资产——你可以在 Omniverse 里随时渲染、回放、分析这些场景,并集成到各种仿真工作流里。
这类重建在物理 AI 和自主系统的开发中扮演着关键角色。工程师只需要录一段真实的驾驶或机器人运行场景,把环境重建出来,就能像放录像一样反复审视。这样一来,理解模型行为、验证感知结果、生成虚拟视角,甚至为下游的机器学习工作流准备训练数据,都变得非常方便。
NuRec 融合了神经渲染技术(比如高斯泼溅)与 GPU 加速渲染及仿真管线,生成的场景重建极其逼真。但这么高的保真度,代价也不小。重建和渲染的过程需要处理海量的传感器数据,跑复杂的 PyTorch 训练循环,还要执行大量高度特化的 CUDA 内核——这些都会把 GPU 资源压到极限。
接下来,我们就通过一个具体例子,看看如何借助 NVIDIA Nsight 开发者工具来优化 NuRec 的神经重建管线。
解决性能优化的挑战
对 NuRec 来说,性能就是效率。重建的周转时间直接决定了工程师的迭代速度。常见的场景是:工程师发现一段有意思或出问题的自动驾驶记录——比如感知或规划模块表现异常——然后立刻启动重建,以便尽快检查。如果重建要等好几个小时,那调试和迭代的节奏就被严重拖慢了。
在优化工作开始的时候,哪怕是一段很短的场景,重建时间也动辄一小时以上,具体时长取决于场景复杂度和配置。团队的长期目标要激进得多:做到实时重建——也就是说,一段 30 秒的录制,重建时间也控制在 30 秒左右。
性能的重要性还不止于重建本身。场景重建好之后,后续的纯渲染工作流可能会生成海量的帧,用于强化学习、合成数据生成和大规模仿真。在这种规模下,哪怕性能只有一点提升,都能直接转化成 GPU 时间和基础设施成本的大幅节省。
为了应对这些挑战,NVIDIA 的工程师们使用了 Nsight Systems 和 Nsight Compute 来分析 NuRec 的工作负载,定位整个软件栈中的瓶颈,并迭代优化应用层和 CUDA 内核层。
用 Nsight Systems 做性能剖析与优化
Nsight Systems 是一个平台级的性能剖析工具,能帮你可视化并理解 CPU、GPU、存储、网络等资源的占用情况和行为。优化工作的第一步,通常是跑一次 Nsight Systems 分析,建立基准,然后找出初步的瓶颈或改进方向。
这次优化聚焦在训练循环上。我们利用 Nsight Systems 的内置函数支持和 PyTorch 自带的 NVIDIA Tools Extension SDK (NVTX),把视线聚焦到一次前向传播的迭代上,如图 1 所示。最初的直觉是,渲染内核会占据绝大部分运行时间,应该是优化的最佳切入点。但 CUDA 硬件时间线(顶部)却显示,GPU 大部分时间要么利用率很低,要么根本没用上——注意顶部那一排蓝色的缺失。而且,实际运行的微内核数量远多于预期。

有了这个发现,接下来就得深挖前向传播的各个阶段,搞清楚时间到底花在了哪里,哪些阶段让 GPU 吃不饱。我们在代码里额外加了一些 NVTX 标注,把不同阶段和函数区分开。新的一轮分析(图 2)显示,collect_gaussian_parameters 这个函数在渲染还没开始之前就占了大头时间,而且每次前向传播里会被调用多次。

collect_gaussian_parameters 占据了执行时间的大头再往下挖,发现 interpolate 函数占的时间最多(4.148 毫秒),它调用了很多小内核和内存操作,把 GPU 给拖累了(见图 3 底部的 CUDA API 行)。

interpolate 函数中大量小内核带来的优化机会我们仔细研究了 interpolate 函数的代码,重点是把这些小内核做融合,让 GPU 一次处理更大块的任务。最终我们把所有这些操作合并成一个内核,interpolate 函数的耗时从 4.184 毫秒降到了 83.81 微秒(图 4)。这相当于将近 50 倍的加速。

interpolate 函数(CUDA API 行上只有一个内核)接下来,我们找到了长的 cudaStreamSynchronize API 调用(时间线上显示为绿色条)。这些同步操作让 CPU 在 GPU 忙的时候无法及时排队很多小内核,结果就出现了图 5 顶部 CUDA HW 行里那种断断续续的 GPU 利用率——同步调用一返回,那些小内核才被逐个调度和启动,导致利用率很碎片化。

cudaStreamSynchronize(底部绿色行)之后是碎片化的 GPU 执行(顶部蓝色行)移除了一个同步点之后,后面的同步点又成了瓶颈。我们就一直这么清下去,直到 CPU 能在 GPU 忙碌时高效地排队任务。这样一来,那些小内核就能密集运行了,因为不再受 CPU 启动时间的限制。

参数收集时间缩短了,同步瓶颈也清掉了,接下来就可以深入做一些内核优化了。Nsight Systems 能帮你找出哪些内核是最热的——在这个案例里,renderBackward 内核当之无愧地排第一。

用 Nsight Compute 做内核优化
Nsight Compute 是剖析和优化单个内核的最佳工具。它能自动重放内核,利用硬件计数器、软件补丁和插桩机制,在非常细的粒度上收集大量性能数据。它内置了规则系统和引导式分析,帮助用户发现和理解问题。
renderBackward 内核既用于处理摄像头数据,也用于处理激光雷达数据。我们用 Nsight Compute 分析了这个内核的不同实例,发现它的占用率只有大约 15%,而且根据处理的是摄像头还是激光雷达输入,内核的行为和资源需求差异很大。
最耗时的三个 renderBackward 内核来自激光雷达数据,另外三个来自摄像头数据。尽管存在这些差异,两者每个线程都分配了 167 个寄存器(图 8)。

renderBackward 内核实例的性能数据我们把最耗时的激光雷达内核设为 Nsight Compute 的基线,然后自动与一个摄像头内核对比,结果发现:虽然两者绝大部分访问都在共享内存中,但摄像头内核的请求量比激光雷达内核少了约 75%,尽管两者在静态分配上每个块的共享内存大小是一样的。

注意到 renderBackward 内核在处理摄像头和激光雷达数据时行为不同,并且寄存器和共享内存的分配是静态且完全一样的,下一步自然就是把内核拆开——让它根据处理的来源(摄像头还是激光雷达)走不同的分支。
针对每个版本的内核,团队用 launch_bounds 限定符实验并调整了寄存器分配,以及每个块分配的共享内存量。还用了 cudaFuncSetCacheConfig 运行时 API,把两个内核的缓存偏好都设为更大的共享内存和更小的 L1 缓存。
经过这番测试和优化,激光雷达和摄像头内核的寄存器需求分别从 167 降到了 64 和 128,而且两者都能用大约原来一半的共享内存高效运行。占用率从约 15% 提升到了 30%-50%,整体运行时间显著缩短,最耗时的激光雷达内核从 31 毫秒降到了 18 毫秒。

但还有改进的空间。下一个被识别出来的问题(在本文撰写时正在解决中)是内核中的长尾效应,由工作负载不均衡导致。这可以从 Nsight Compute 的 PM Sampling 部分看到(图 11)。内核的前半段平均有 32 个活跃 warp,然后逐渐减少,到最后的几毫秒里,每个周期活跃的 warp 不到一个。理想情况下,所有 warp 应该在整个内核执行期间都保持活跃。

开始使用 NVIDIA Nsight 开发者工具
性能分析和优化是一个迭代的过程:跑一轮分析,找出问题,解决它,然后重新来。借助 Nsight Systems 和 Nsight Compute 这类工具,在 NVIDIA GPU 上开发和优化的整个流程会轻松很多。这两款工具都是免费的——去下载 Nsight Systems 和 Nsight Compute,拿你自己的用例试试吧。如果有问题,或者想分享你的发现,欢迎在 NVIDIA Developer Forums 上留言。
致谢
特别感谢 NVIDIA 的贡献者 Francois Trudel、Joey Lai 和 Rodolfo Lima。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:使用NVIDIA Nsight开发者工具优化神经重建管线实战指南要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点RAG落地的关键在于数据检索而非大模型。直接大模型、微调与RAG各有适用场景。检索效果受分块粒度、排序策略及混合检索影响。常见误解包括认为RAG总是更优、简单余弦检索足够、更多文档效果更好。应注重数据质量,采用渐进式部署和用户反馈闭环。
微软推出AutoGenStudio低代码工具,业务人员可通过可视化拖拽组装模型、技能和记忆组件,构建智能体工作流。工具集成实时监控、调试评估功能,支持导出JSON配置文件进行部署,降低开发门槛。
英国国民保健署正将人工智能引入医疗体系,智能手机可居家监测肾脏疾病,穿戴贴片实时捕捉心律不齐,AI加速乳腺癌筛查分析。这些技术有望改善筛查、癌症治疗和中风护理,但全面应用仍需长期推进。
近年来,人工智能、云计算与大数据无疑是科技领域最受瞩目的三大趋势。其中,人工智能技术已深入渗透到各行各业,成为名副其实的核心驱动力。其背后的原因并不难理解——它不仅能带来实实在在的效益,更关键的是,正大力推动制造业向智能化方向转型升级。 众多学者同样对人工智能的发展前景给予了高度评价。他们认为,未来
- 日榜
- 周榜
- 月榜
热点快看
