上一节介绍了模型的权值预加载方法,以及为什么要做权值预加载。
对于我们自己手写的模型,如何来完成权值预加载呢?其实大概分为以下几步:
-
申请足够大的内存来存放模型的权值,这一步模拟的是 GPU 拥有足够的显存来存放模型权值
-
将模型的所有权值加载到预申请的足够大的内存中,并且保持在推理过程中,这些内存中的权值数据不变,模拟的是GPU中权值驻留在显存空间中的操作。
-
运行神经网络进行推理,运行到某一需要权值的层时,直接从已经申请的内存对应的位置中读取权值,然后进行推理计算。
具体到这个项目代码中,是通过以下方式来实现的。这一优化的代码目录在:cv_learning_from_scratch: 课程[CV视觉从算法到调优]代码 - Gitee.com