本节我们开启对手写的 resnet50 模型的第二个优化,对应到仓库中的优化代码为 https://gitee.com/iwaihou/cv_learning_from_scratch/tree/master/practice/cpp/3rd_preload。
本次优化内容为模型的权值预加载。
将模型的权值进行预加载,可以减少甚至消除模型推理过程中冗余的内存操作,降低推理延迟,大幅提高模型性能。
所以,接下来的几节内容,会围绕这个优化来展开。在开始这个优化之前,先介绍一下计算机的基础知识,以及为什么要做这个优化。
数据流的加载
大家可能听说过冯诺依曼架构,事实上,现在很多的计算机(芯片)都是基于冯诺依曼架构来进行的设计。
冯诺依曼架构的特点,总结下来可以这么理解:计算部件和存储部件的分离。
下图是从网络中找到的一张冯诺依曼架构示意图。
本文介绍了计算机的冯诺依曼架构和数据流加载原理,探讨了权值预加载在模型推理中的重要性,以减少内存操作延迟,提升性能。内容包括计算机的多级存储系统,解释了为何需要权值预加载,并通过手写 resnet50 模型的优化实例说明优化现实意义。
订阅专栏 解锁全文
863

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



