【技术实现步骤摘要】
一种加速深度学习训练任务数据载入的方法
[0001]本专利技术涉及深度学习领域,尤其是涉及一种加速深度学习训练任务数据载入的方法。
技术介绍
[0002]深度学习是机器学习的分支,是一种基于人工神经网络对资料进行表征学习的算法,它被广泛用于计算机视觉、语音识别、自然语言处理等领域。深度学习训练任务的训练过程,分多个周期执行,通过重复训练产生收敛的模型。每个周期的训练过程可分为三个阶段,即数据载入,数据增强,神经网络模型训练。数据载入阶段需实现两个功能,一是从后端存储系统中将训练集读到内存,二是对训练集进行随机化洗牌。数据增强阶段的功能是对内存中的训练数据进行翻转,旋转,缩放,裁剪,移位,调色等操作,增大训练集涵盖的样本空间。
[0003]神经网络模型训练阶段,利用增强后的数据,计算出一个包含众多参数的神经网络模型。
[0004]其中,数据载入阶段属于I/O密集型,而其他两个阶段属于计算密集型。近年来计算机算力的增长速度远大于存储端I/O性能的提升速度,这使得数据载入阶段的时间开销在总训练开销中的占比不断攀升,并逐渐成为深度学习训练的瓶颈之一。
[0005]传统的加速数据载入的方法,侧重于优化训练集在后端存储系统的组织方式和访问模式,例如将训练集中的小文件打包成捆,并以捆为单位将训练集载入内存,从而避免性能低下的小文件随机读操作,或是按数据存储的顺序依次将小文件载入内存,然后在内存中实现局部随机化,从而将性能低下的随机读转换为快速的顺序读。这些方法能有效利用后端存储系统的I/O带宽,加快训练集载 ...
【技术保护点】
【技术特征摘要】
1.一种加速深度学习训练任务数据载入的方法,其特征在于包括如下步骤:S1,内存中单独划分一块区域作为缓存,记为Cache
next
;S2,构建双随机序列模式,用于决定训练集的数据进入神经网络的顺序,随机序列的元素与训练集的数据一一对应,每一个训练周期内,同时存在新旧两个互不相同且彼此独立的随机序列;S3,第一个训练周期之前,生成一个随机序列S
next
,而任一训练周期开始时,将现存的随机序列S
next
赋值给S
cur
,并由它决定当前周期数据进入神经网络的顺序,然后生成一个新的随机序列,记为S
next
,用于决定下一个周期数据进入神经网络的顺序,S
next
包括子序列S
next_prefix
,涵盖下一个周期初始阶段将使用到的训练集的数据,随着数据载入阶段周期性地执行,每个周期遍历S
cur
,对于S
cur
的每一个元素S
cur
[i],从Cache
next
或后端存储系统获取S
cur
[i]对应的训练集的数据,将此数据放入内存,然后参考S
next_prefix
更新Cache
next
,包括如下步骤:S31,当S
cur
[i]在Cache
next
的前段curList命中时,S
cur
[i]对应的训练集的数据从curList拷贝至内存,然后在curList中删除S
cur
[i]对应的数据,此时,若S
cur
[i]存在于S
next_prefix
中,则S
cur
[i]对应训练集的数据被插入Cache
next
的后段nexList;S32,当S
cur
[i]在Cache
next
的前段curList不命中时,从后端存储系统读取S
cur
[i]对应的训练集的数据至内存,此时,若S
cur
[i]存在于S
next_prefix
中,则S
cur
[i]对应训练集的数据被插入Cache
next
的后段nexList;S33,当S
cur
遍历结束时,清空S
cur
,只剩下一个随机序列S
next
;S4,当前周期完成,若完成的周期数小于预先设定的数目N,则返回S3开始下一个周期的训练,若所有训练周期都已完成,则深度学习训练任务结束。2.根据权利要求1所述的一种加速深度学习训练任务数据载入的方法,其特征在于所述S2包括如下步骤:S21,在深度学习训练任务的第一个周期开始之前,生成一个随机序列,记为S
next
;S22,每一个周期开始时,S
next
赋值给S
cur
,S
c...
【专利技术属性】
技术研发人员:朱春节,银燕龙,何水兵,曾令仿,秦亦,周方,
申请(专利权)人:之江实验室,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。