一种混合内存环境下深度神经网络的训练方法和系统技术方案

技术编号:23625224 阅读:55 留言:0更新日期:2020-03-31 22:52
本发明专利技术公开了一种混合内存环境下深度神经网络的训练方法和系统,属于深度学习技术领域。本发明专利技术基于NVRAM的读特性,将大量的训练数据缓存在NVRAM中,提高神经网络获取数据的速度。本发明专利技术通过将原本由GPU计算的训练数据分成两部分,分别由CPU和GPU并行计算,利用GPU和CPU的计算能力,采用两个神经网络进行训练,在利用CPU的算力的同时减少了拷贝到GPU内存的数据量,通过提高计算的并行度来提高神经网络的训练速度。本发明专利技术加权平均后的网络参数快照保存在NVRAM中,采用异步备份的方式,在数据写入NVRAM的过程中,不影响神经网络训练数据的速度,减少了NVRAM写速度对训练的影响。

A training method and system of deep neural network in mixed memory environment

【技术实现步骤摘要】
一种混合内存环境下深度神经网络的训练方法和系统
本专利技术属于深度学习
,更具体地,涉及一种混合内存环境下深度神经网络的训练方法和系统。
技术介绍
当前,人工智能(ArtificialIntelligence,AI)已经在图像、语音以及自然语言处理等多个领域的技术上,取得了全面的突破。近年来的AI技术突破,主要源于深度学习技术(DeepLearning)。深度学习技术通过构建结构复杂的深度神经网络(DeepNeuralNetwork,DNN)和海量的训练数据样本,在各类人工智能应用上取得了长足的进步,特别是在图像和声音领域相比传统的算法大大提升了识别率。在大数据分析挖掘领域,深度神经网络已经被广泛地应用。经典的神经网络模型主要在“宽度”与“深度”方面进行不同程度的扩增。借助于大规模数据的训练,AlexNet、VGG-16、VGG-19等经典网络通过宽度或深度增加的参数可以有效地提升其模型的表达能力。但当网络变得越来越深,其训练难度也随之相应增加,处理的数据量以及计算量越来越大。深度学习中大量使用GPU来加速神经网络的训练速度,GPU必须靠CPU提供数据,而CPU的数据又从外部存储,例如磁盘等介质中提取,磁盘的带宽相对于GPU和CPU的处理速度太过缓慢。而且,GPU和CPU的内存相对海量的训练数据样本显得太小,训练数据不能完全保存在内存中,在训练过程中就得反复从磁盘中读取,因此磁盘的带宽成为限制神经网络训练速度的主要瓶颈。针对以上的问题,现有的深度学习框架普遍采用了缓存队列的异步读取方案,但是在处理ImageNet等大规模数据集时仍然有巨大的时间开销。也有框架采用了数据并行读取的方式,但这仅仅是对磁盘仅有带宽的压榨,无法真正解决问题。此外,数据并行也能提高训练数据的读取速度,它将神经网络模型部署到多个机器上,由多个机器并行读取训练数据。该方法将训练时的数据读取开销分散到多个节点上,可以提高训练的速度,但是也因此引入了复杂的通信机制,带来了不可忽视的通信开销。训练过程中的每次迭代都需要多个GPU相互通信,造成整体训练性能的下降。因此优化训练数据的读取,是提高深度神经网络模型训练速度的关键之一。
技术实现思路
针对现有技术深度学习系统在读取数据速度上存在瓶颈的技术问题,本专利技术提供了一种混合内存环境下深度神经网络的训练方法和系统,其目的在于基于数据的划分实现CPU和GPU的并行计算,在保证正确率的前提下加速模型的收敛。为实现上述目的,按照本专利技术的第一方面,提供了一种混合内存环境下深度神经网络的训练方法,所述混合内存由CPU管理,包含DRAM和NVRAM,该方法包括以下步骤:S1.训练开始前,将训练数据集存入NVRAM;S2.在DRAM中构建与目标深度神经网络模型结构相同的神经网络NC,在GPU内存中构建与目标深度神经网络模型结构相同的神经网络NG,神经网络NC和NG的输入数据为一个batch,数据量大小为BS;S3.根据神经网络NC和NG处理一个batch的时间,计算训练过程中每个batch划分给CPU计算的比例R;S4.根据划分比例R,修正神经网络NC和NG的输入数据大小BSC和BSG;S5.训练过程中,神经网络NC从NVRAM中读取一个batch,将该batch划分为大小为BSC和BSG的数据块,将BSC大小的数据块拷贝到DRAM,将BSG大小的数据块传送到GPU内存;S6.神经网络NC对BSC大小的数据块进行训练并更新自身网络参数,神经网络NG对BSG大小的数据块进行训练并更新自身网络参数,这两个训练需同步进行,当两个训练均结束则认为一次迭代结束;S7.两个神经网络经过k次迭代后,按照划分比例R对NC和NG的网络参数进行加权平均,将加权平均后的网络参数替换掉NC和NG的原网络参数,本次网络参数同步结束,进入步骤S5直至训练完成。具体地,步骤S3包括以下步骤:S31.神经网络NC从NVRAM中读取M个batch,对每个batch分别训练,并记录该神经网络训练每个batch所用时间;神经网络NC将读取到的所有batch发送给神经网络NG,NG对每个batch分别训练,并记录该神经网络训练每个batch所用时间;S32.以神经网络NC执行M次训练batch所用时间的平均时间作为该网络处理一个batch的时间,以神经网络NG执行M次训练batch所用时间的平均时间作为该网络处理一个batch的时间。具体地,所述比例R的计算公式如下:其中,TC为网络NC处理一个batch的时间,TG为网络NG处理一个batch的时间。具体地,修正后神经网络NC和NG的输入数据大小BSC和BSG计算公式如下:BSc=BS*RBSG=BS*(1-R)。具体地,网络参数同步间隔k设置为每个epoch中迭代次数的1/20~1/10。具体地,第l层加权平均后的参数的计算公式如下:其中,和分别为神经网络NC和NG第l层的权重参数。具体地,当参数合并时,根据CPU和GPU各自内存的剩余情况,选择其中一个进行参数合并的计算,具体如下:(1)记录k次迭代后DRAM剩余内存MC、GPU的剩余内存MG及网络的参数所占的内存MN;(2)若MG>MN,则在GPU中执行参数合并,将加权平均后的参数从GPU中拷贝到内存DRAM,直接覆盖NC中的网络参数;否则,在CPU中执行参数合并,将从DRAM中拷贝到GPU内存,覆盖NG的网络参数。具体地,将加权平均后的网络参数快照保存在NVRAM中。为实现上述目的,按照本专利技术的第二方面,提供了一种混合内存环境下深度神经网络的训练系统,所述混合内存由CPU管理,包含DRAM和NVRAM,该系统包括:预评估模块,用于训练数据集缓存在NVRAM中,在DRAM中构建与目标深度神经网络模型结构相同的神经网络NC,在GPU内存中构建与目标深度神经网络模型结构相同的神经网络NG,神经网络NC和NG的输入数据为一个batch,数据量大小为BS,根据神经网络NC和NG处理一个batch的时间,计算训练过程中每个batch划分给CPU计算的比例R,根据划分比例R,修正神经网络NC和NG的输入数据大小BSC和BSG;训练模块,用于在训练过程的每次迭代中,神经网络NC从NVRAM中读取一个batch,将该batch划分为大小为BSC和BSG的数据块,将BSC大小的数据块拷贝到DRAM,将BSG大小的数据块传送到GPU内存,神经网络NC对BSC大小的数据块进行训练并更新网络参数,神经网络NG对BSG大小的数据块进行训练并更新网络参数,这两个训练需同步进行,当两个训练均结束则认为一次迭代结束;参数同步模块,用于在两个神经网络经过k次迭代后,按照划分比例R对NC和NG的网络参数进行加权平均,将加权平均后的网络参数替换掉NC和NG的原网络参数。为实现上述目的,按照本专利技术的第三方面,提供了一种计算机可读存储介质,所述计算机可读存本文档来自技高网
...

【技术保护点】
1.一种混合内存环境下深度神经网络的训练方法,其特征在于,所述混合内存由CPU管理,包含DRAM和NVRAM,该方法包括以下步骤:/nS1.训练开始前,将训练数据集存入NVRAM;/nS2.在DRAM中构建与目标深度神经网络模型结构相同的神经网络N

【技术特征摘要】
1.一种混合内存环境下深度神经网络的训练方法,其特征在于,所述混合内存由CPU管理,包含DRAM和NVRAM,该方法包括以下步骤:
S1.训练开始前,将训练数据集存入NVRAM;
S2.在DRAM中构建与目标深度神经网络模型结构相同的神经网络NC,在GPU内存中构建与目标深度神经网络模型结构相同的神经网络NG,神经网络NC和NG的输入数据为一个batch,数据量大小为BS;
S3.根据神经网络NC和NG处理一个batch的时间,计算训练过程中每个batch划分给CPU计算的比例R;
S4.根据划分比例R,修正神经网络NC和NG的输入数据大小BSC和BSG;
S5.训练过程中,神经网络NC从NVRAM中读取一个batch,将该batch划分为大小为BSC和BSG的数据块,将BSC大小的数据块拷贝到DRAM,将BSG大小的数据块传送到GPU内存;
S6.神经网络NC对BSC大小的数据块进行训练并更新自身网络参数,神经网络NG对BSG大小的数据块进行训练并更新自身网络参数,这两个训练需同步进行,当两个训练均结束则认为一次迭代结束;
S7.两个神经网络经过k次迭代后,按照划分比例R对NC和NG的网络参数进行加权平均,将加权平均后的网络参数替换掉NC和NG的原网络参数,本次网络参数同步结束,进入步骤S5直至训练完成。


2.如权利要求1所述的方法,其特征在于,步骤S3包括以下步骤:
S31.神经网络NC从NVRAM中读取M个batch,对每个batch分别训练,并记录该神经网络训练每个batch所用时间;神经网络NC将读取到的所有batch发送给神经网络NG,NG对每个batch分别训练,并记录该神经网络训练每个batch所用时间;
S32.以神经网络NC执行M次训练batch所用时间的平均时间作为该网络处理一个batch的时间,以神经网络NG执行M次训练batch所用时间的平均时间作为该网络处理一个batch的时间。


3.如权利要求1所述的方法,其特征在于,所述比例R的计算公式如下:



其中,TC为网络NC处理一个batch的时间,TG为网络NG处理一个batch的时间。


4.如权利要求1所述的方法,其特征在于,修正后神经网络NC和NG的输入数据大小BSC和BSG计算公式如下:
BSC=BS*R
BSG=BS*(1-R)。


5.如权利要求1所述的方法,其特...

【专利技术属性】
技术研发人员:蒋文斌金海刘湃彭晶马阳刘博
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1