找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 136|回复: 0

[软文] 不用写 CUDA,搬上移动端,用 Taichi 快速实现三维重建(NeRF)

[复制链接]
发表于 2023-8-27 23:05:25 | 显示全部楼层 |阅读模式 来自 中国–浙江–温州–平阳县
  与PyTorch不同的是,Taichi采用了类似CUDA的SIMT编程模式,可以将所有的运算尽可能封装在同一个kernel中,因此Taichi可以获得近似于CUDA的效率。

  此外,Taichi还具备自动微分(Autodiff)功能,消除了大量手动推导梯度的工作,从而显著提高开发效率并确保梯度的准确性。

  使用Taichi实现的Instant NGP的效率与原作者提供的CUDA实现的效率非常接近。根据我们的测试,训练部分Taichi仅慢20%左右,推理部分二者相差无几。如下表所示:

  使用Taichi快速进行模型修改

  除了不用手写CUDA代码,使用Taichi开发NeRF的另一个优势在于能对模型代码进行快速迭代。这里我们想分享一个在开发移动端部署过程中,对Instant NGP模型进行针对性修改的例子。

  在早期的尝试中,我们试图将Taichi NeRF训练代码的推理部分提取出来,原封不动地部署到手机上,只拿到了1 fps的惨淡性能。这其中主要的性能瓶颈在于Instant NGP中哈希编码的部分对数据的访问是高度随机的,在CUDA中当缓存可以装下所有哈希表时这不是什么问题,但是到了移动端以后,由于移动端的缓存不足,导致效率变得非常低。

  我们希望对数据的读写是以尽量连续的方式进行的,这需要数据具有紧密的内存排布。因此我们将哈希表替换为一个紧凑的网格结构,显著提高了内存访问的吞吐。这部分的代码修改只需要不到30行。再辅以其他优化手段,终于成功在移动端实现了超过20 fps的实时交互。

  Part III:用Taichi AOT在移动端部署Taichi-NGP

  在移动端上做NeRF的推理有两个难点,一是调用移动端的GPU资源进行神经网络计算需要手写相应的shader代码,这项工作既复杂也难以调试。二是移动端有限的硬件资源往往难以支持NeRF相对复杂的计算。Taichi AOT部署框架则恰恰能解决以上两个痛点,让我们轻松将训练好的Taichi Instant NGP模型运行在移动端。

  *另一种方案是把NeRF的推理放在云端,将图像传回给移动端进行显示。相比纯离线推理,这种方法不仅受网络限制,而且不能利用移动端计算资源导致成本较高,应用场景比较有限。

  Taichi AOT是Taichi编程语言配套的部署方案,它可以将同一份Taichi代码一键编译到Vulkan、Metal、OpenGL等移动端设备后端,并提供统一的C-API调用,大大降低移动端部署难度iPhone 14 Pro MaxiPhone 14Instant NGP22.4 fps18 fps13.5 fps

  taichi使用更适合部署的模型(基于Octree、Spherical Harmonics等)、针对性的模型迭代、优化Demo等等,可以进一步提升部署性能。这意味着Taichi在移动端NeRF部署方面还有大量的潜力可以发掘。taichi https://taichi-lang.cn/

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )|网站地图

GMT+8, 2026-3-5 08:14 , Processed in 0.033602 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表