上两节介绍的权值预加载技术,在很多业务中是真实存在的。
只不过限于本小册内容以及大部分同学硬件设备的局限,这里无法通过真正的推理框架(比如 tvm, pytorch) + GPU 来实现底层细节,这些推理框架中一般会将类似的优化技术封装起来。
作为 tvm 或者 pytorch 的用户,你一般看不到这些实现细节,除非你是这些框架的开发者。
因此,为了介绍这个优化,我通过 81、82 这两节内容来引入了一个简单的硬件-内存模型。
整个权值预加载技术的实现思路为:尽可能的在执行模型推理前,将权值存放在距离计算单元最近的存储器中,比如内存中或 L2 缓存中。如果你用 CUDA 写过 GPU 的 kernel,可能你会有更深刻的理解。
这里,我们模拟的就是将权值从 txt 文件(硬盘),预加载到了内存中,相比于硬盘,内存距离计算单元(CPU)更近一些。
评估下性能
在相同的环境下,分别运行 2nd_avx2 和 3rd_preload 下的 compile.sh 脚本进行代码编译,然后运行编译后生成的可执行文件 ./resnet。
可以分别获取到权值预加载前后的性能指标。

本文介绍了权值预加载技术在深度学习中的应用,通过模拟硬件-内存模型展示了预加载如何减少推理延迟。在实验中,权值从硬盘预加载到内存,性能提升显著,平均推理延时从5044ms降低到862ms,实现了约6倍的性能提升。尽管实际框架如tvm和pytorch中这一过程被封装,但理解其原理对于优化模型性能至关重要。
订阅专栏 解锁全文
214

被折叠的 条评论
为什么被折叠?



