System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于计算机科学人工智能系统领域,涉及一种重要性感知的深度学习数据预取方法和系统。针对深度学习训练面对海量数据时,训练数据预取时间长导致训练性能较低的问题。
技术介绍
1、深度神经网络(deep neural network,dnn)是一种由多层神经元组成的复杂网络模型,能够学习数据中的复杂模式和特征。dnn的训练流程是一个迭代优化过程,整个训练过程通常包含多个周期(epoch),每个周期对整个训练数据集进行一次完整的遍历。每个周期又由多个迭代(iteration)组成,每次迭代处理一个一小批数据(batch)。每次迭代包含三个阶段:①数据加载:从待训练的数据集中随机选取一小批数据加载到内存中;②数据预处理:将数据进行增强操作(比如裁剪、翻转等);③计算阶段:通过前向传播和反向传播,得到模型参数梯度,并进行更新,从而实现训练模型的目的。
2、在处理大规模训练数据集时,将数据存储在远程并行文件系统中是一种普遍的做法。然而,由于dnn训练过程中的数据访问模式是强随机的,加之gpu等硬件的快速发展,数据加载的i/o过程往往成为训练过程中的瓶颈。为了缓解这一问题,缓存技术被广泛采用,通过将部分数据保留在内存中来减少i/o操作。但是,当缓存空间远小于训练数据集大小时,缓存的效果会受到限制。
3、数据预取技术是另一种重要的优化手段。它通过在计算当前batch的同时,使用多个线程提前加载未来几个batch的数据,从而实现数据加载与模型计算的并行化,减少数据加载的等待时间。尽管如此,由于预取本身耗时较长,无法完全
技术实现思路
1、针对现有技术存在的不足,本专利技术的目的是提供一种重要性感知的深度学习数据预取方法和系统,旨在解决训练数据预取时间长导致的训练性能低下的问题。
2、本专利技术的目的是通过以下方案来实现的:一种重要性感知的深度学习数据预取系统,包括:
3、训练数据分类模块:用于执行数据分类,根据每个周期训练结束时收集的训练数据重要性值波动信息,计算出每个训练数据的重要性值的变化方差;根据所有训练数据的方差使用自动聚类算法k-means将训练数据自动分为重要性波动大和波动小的两类训练数据;
4、训练数据采样器:用于在每个周期训练开始前,对所有的训练数据的重要性值进行评估,根据重要性值评估的结果对训练数据进行采样,从而让每个周期仅训练一部分数据;
5、多层次存储架构:包括底层存储、cpu内存和gpu内存;底层存储为本地的外存储设备或由多个远程服务器构成的并行存储系统,用于存放完整的训练数据;cpu内存用于存储部分从底层读取上来的训练数据,进行数据预处理;gpu内存用于对dnn进行模型训练。
6、进一步地,所述训练数据采样器包括以下两个模块:
7、实时重要值评估模块:用于评估重要性波动程度大的训练数据其当前的重要性值,在接下来的每个训练周期开始前,将重要性波动程度大的训练数据加载到cpu内存并通过该模块重新计算重要性值,得到所述数据当前最新的重要性值;
8、历史重要值评估模块:用于评估重要性波动程度小的训练数据其当前的重要性值,该评估方法直接采用上一周期训练数据向前传播计算得到的损失值来当做其当前的重要性值;该模块记录下这些历史重要性值,并在每个周期对该历史重要性值进行异步更新。
9、一种重要性感知的深度学习数据预取方法,其特征在于,包括以下两个阶段:
10、(1)数据分类阶段:该阶段由训练数据分类模块执行,包含k个周期;读取预先准备的每个周期所有的训练数据,并在前向传播后记录下其损失值,在第i个周期训练结束时,得到重要性值列表记录到训练数据分类模块中用于后续分类,k表示周期总数,n表示训练数据总数,i表示训练周期id,表示0号训练数据在第i个周期训练结束时的重要性值,表示1号训练数据在第i个周期训练结束时的重要性值,表示n-1号训练数据在第i个周期训练结束时的重要性值;
11、当k个周期训练结束时,对于某个特定的训练数据j,可以得到每个周期0至k-1,训练结束时的重要性值列表其中,表示训练数据j在第0周期训练结束时的重要性值,表示训练数据j在第1周期训练结束时的重要性值,表示训练数据j在第k-1周期训练结束时的重要性值;根据这个列表计算该训练数据j的方差varj;当得到所有训练数据的重要性值波动方差[var0,var1,…,varn-1]后,其中,var0表示训练数据0的方差,var1表示训练数据1的方差,varn-1表示训练数据n-1的方差,数据分类模块会使用k-means聚类算法,将所有训练数据的重要性值波动方差作为输入,从而使训练数据自动聚类成两个部分;设这两个训练数据组分别为g1和g2,其中包含的训练数据数量分别是n1和n2,将每个组别中训练数据的重要性波动方差均值分别记作和其中:
12、
13、由此,得到每个训练数据是重要性波动较大还是较小的数据,具体依据如下:
14、
15、该分类结果传输到训练数据采样器记录下来;
16、(2)重要性感知的预取训练阶段:
17、(2.1)在下一个训练周期开始前,训练数据采样器会先将本周期波动较大的训练数据id告知底层存储;从而,这部分数据先从底层存储中预取到cpu内存中;
18、(2.2)波动较大的训练数据传输到训练数据采样器中,并通过实时重要值评估模块对其重要性值进行评估,通过前向传播计算,根据最新损失值更新所述波动较大的训练数据的最新重要性值;将这部分的数据存入cpu内存中的缓存以加速这部分数据的读取;若缓存空间不够,则将其中重要性值相对更大的数据优先存入缓存;
19、(2.3)将重要性值波动较小的训练数据的历史重要性值从历史重要值评估模块中读取并作为当前周期重要性值;在此基础上,将所有训练数据按照重要性值降序排列,训练数据采样器选择其中重要性值较大的部分数据参与后续的训练;将这部分的数据id传输回cpu内存;
20、(2.4)根据步骤(2.3)选择出来的数据每次随机选择一个小批次,从缓存或存储设备中读取送入gpu内存中参与模型训练;训练过程中对于波动较小的训练数据,其重要性值即前向传播的损失值,该值需要由历史重要值评估模块进行更新;
21、(2.5)在训练当前批次数据的同时开启后续批次数据的预取;重复步骤(2.4)当把所有采样出来的数据都训练结束后,一个周期的训练结束。
22、进一步地,阶段(2)中所述缓存采用静态缓存。
23、本专利技术的有益效果在于:
24、(一)本专利技术提出的基于重要性感知的预取机制,可以减少不重要训练数据的预取数量,与传统对所有训练数据都进行预取的方法相比,从而缓解i/o是瓶本文档来自技高网...
【技术保护点】
1.一种重要性感知的深度学习数据预取系统,其特征在于,包括:
2.根据权利要求1所述的重要性感知的深度学习数据预取系统,其特征在于,所述训练数据采样器包括以下两个模块:
3.一种基于权利要求2所述系统的重要性感知的深度学习数据预取方法,其特征在于,包括以下两个阶段:
4.根据权利要求3所述的一种重要性感知的深度学习数据预取方法,其特征在于,阶段(2)中所述缓存采用静态缓存。
【技术特征摘要】
1.一种重要性感知的深度学习数据预取系统,其特征在于,包括:
2.根据权利要求1所述的重要性感知的深度学习数据预取系统,其特征在于,所述训练数据采样器包括以下两个模块:
3.一种基于...
【专利技术属性】
技术研发人员:何水兵,陈伟剑,张瑞东,瞿皓阳,陈平,杨斯凌,
申请(专利权)人:浙江大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。