深度学习的高速推理方案:如何实现工业级的神经网络推理加速

首先,要知道这个问题是需要把推理和训练要分开,训练使用深度学习框架即可,也就是说性能最高的训练方法就是使用pytorch、TensorFlow、jax等等,这些框架来进行训练;可以说,训练的加速只能是使用多卡、多机、分布式的方法,但是推理则不同,推理的工业级加速则有特定的解决方法。


神经网络的推理,进行工业级加速有两种方法:

第一种,量化,也可以叫做混合计算,即在推理过程中将一部分计算使用低精度的数据类型,当然也有全部采用低精度的方法进行推理计算的,而这种低精度的推理计算往往也是有硬件设备来支持的,比如NVIDA公司的显卡有专为量化后推理计算的TensorRT Core。这种推理加速的方法其优点就是虽然牺牲一定的计算精度,但是却有较大的推理速度的提升,并且该种方法实现简单,毕竟依旧还是使用训练时的计算框架,如:TensorFlow、pytorch、jax等。


第二种,计算框架的重构,也可以叫做C++/CUDA重构。该种方法则不采用训练时的计算框架,也就是说完全不使用TensorFlow、pytorch、jax等框架,而是使用硬件的底层原语重新编写计算的kernel函数,也就是说使用CUDA直接编写需要用到的神经网络的kernel函数,而不是通过调用深度学习框架然后再调用CUDNN等框架实现的,并且使用C++或C++框架重写CPU端上的运行代码,同样不通过使用深度学习框架的方法来实现直接对硬件的操作,以此来提升运算性能。该种方法可以在保证计算精度不受影响的情况下获得和量化方法相当的推理速度,甚至可以更快,但其缺点也很明显,就是实现难度较大,可以说这种方法是不使用已有框架的实现方法,重构一个适用于特定结构的计算代码,这一种方式比较常见于网络AI围棋应用的项目,如:katago等等。不过也有公司对此种推理给出计算框架,也就是说有的公司推出项目,来对最常用的几种类型的神经网络的推理进行重构,并集成一个框架,如:Facebook的AITemplate。


相关:


相关地址:

https://github.com/facebookincubator/AITemplate/blob/main/static/include/cuda_device_functions.h#L415

image



image



image



posted on   Angry_Panda  阅读(83)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2022-02-01 再谈《强化学习算法之DQN算法中的经验池的实现》 experience_replay_buffer模块的实现
2022-02-01 DQN2013代码尝试复现版(存在各种实现问题及Bug,个人尝试复现版,没有follow价值)
2018-02-01 vim没有权限却可以强制保存时所引起的思考 ------ 文件夹权限对所属文件的权限影响

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示