上一节介绍了模型的权值预加载方法,以及为什么要做权值预加载。
对于我们自己手写的模型,如何来完成权值预加载呢?其实大概分为以下几步:
-
申请足够大的内存来存放模型的权值,这一步模拟的是 GPU 拥有足够的显存来存放模型权值
-
将模型的所有权值加载到预申请的足够大的内存中,并且保持在推理过程中,这些内存中的权值数据不变,模拟的是GPU中权值驻留在显存空间中的操作。
-
运行神经网络进行推理,运行到某一需要权值的层时,直接从已经申请的内存对应的位置中读取权值,然后进行推理计算。
具体到这个项目代码中,是通过以下方式来实现的。这一优化的代码目录在:cv_learning_from_scratch: 课程[CV视觉从算法到调优]代码 - Gitee.com
1、预申请足够的内存并加载
预申请的内存通过 3rd_preload/resnet_preload.cc 中定义的一个全局变量 __gl
本文介绍如何在手写模型中实现权值预加载以提高推理性能。通过预申请内存模拟GPU显存,将模型权值加载到全局变量,避免推理时重复加载,提升了模型运行速度。详细步骤包括预申请内存并加载、取用权值进行推理以及解释优化关键区别。
订阅专栏 解锁全文
642

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



