【技术实现步骤摘要】
一种降低深度神经网络训练过程中GPU内存占用的方法
[0001]本专利技术涉及深度学习和计算机科学等领域。尤其涉及一种降低深度神经网络训练过程中GPU内存占用的方法。
技术介绍
[0002]深度学习在学术界和工业界都被广泛研究和应用,这主要得益于硬件计算能力的增长,尤其是GPU,提供了强大的并行浮点数矩阵运算能力。但即使是现在,GPU内存不足(out of memory,OOM)仍然是多数研究者在训练神经网络时遭受的主要困扰之一。究其原因,主要是因为神经网络模型的参数量十分庞大,且仍在飞快增长当中。不论是什么方面的课题,让网络训练得以正常运行,都是绕不开的一步。由此不难看出,在内存资源固定的情况下,在软件层面做出改进,提升内存使用效率,降低神经网络训练过程中的内存使用量,具有相当意义上的研究价值。
[0003]在以往的方法中,降低内存使用的方法主要有:
[0004]1、模型量化:使用更低精度的数据类型来表示模型参数;
[0005]2、内存共享:生命周期不重叠的变量可以共享同一块内存;
[000 ...
【技术保护点】
【技术特征摘要】
1.一种降低深度神经网络训练过程中GPU内存占用的方法,其特征在于,包含如下步骤:根据checkpoint集合计算得到实际的内存申请方案;具体包括以下子步骤:(a)根据静态计算图中每个节点输出的数量,初始化相应Tensor的引用依赖:(b)以拓扑顺序考察每个Tensor;(c)检查当前空闲内存块列表是否非空,若不存在空闲内存块,则为当前Tensor申请新的内存块;若存在空闲内存块,检查其大小和当前Tensor的大小之比是否落在合理区间内;若存在空闲内存块且其大小和当前Tensor的大小之比落在合理区间,则将该空闲内存块分配给当前Tensor以避免新的内存申请,否则则为该Tensor申请新的内存空间;(d)对当前Tensor的所有输入,减少其引用计数,表示当前Tensor已完成计算,不再依赖输入Tensor;若输入Tensor列表中存在引用计数减少到0的对象,则释放该Tensor的内存,对应的内存块加入到空闲内存块列表中;(e)以重复步骤(c)至(d),直至完成对所有Tensor的考察,输出最终的内存申请方案。2.根据权利要求1所述的方法,其特征在于,所述步骤(c)中的合理区间为可搜索的值,取1,2,4,8,16。3.根据权利要求1所述的方法,其特征在于,所述checkpoint集合为空集或由以下步骤得到;(1)初次训练时启动试运行,收集设备环境信息与神经网络逐层运行情况;(2)checkpoint候选点选择:根据步骤(1)采集的信息,选择合适的节点(层)作为重计算checkpoint的候选点;(3)在步骤(2)给出的候选点中选择合适的若干节点作为checkpoints集合。4.根据权利要求3所述的方法,其特征在于,所述步骤(1)中初次训练时启动试运行时,收集计算图中每个节点的算子类型、内存占用量、计算时长、辅助空间大小,以及CPU和GPU之间拷贝操作的执行时长和吞吐量。5.根据权利要求3所述的方法,其特征在于,所述步骤(2)中评估一个节点是否适合作为重计算checkpoint时,考虑其存活时长、计算耗时、特征图大小;评估一个节点是否适合被交换到CPU时,考虑依赖该节点的两...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。