CN110414669A - 一种加速神经网络结构选择的方法 - Google Patents
一种加速神经网络结构选择的方法 Download PDFInfo
- Publication number
- CN110414669A CN110414669A CN201910589376.3A CN201910589376A CN110414669A CN 110414669 A CN110414669 A CN 110414669A CN 201910589376 A CN201910589376 A CN 201910589376A CN 110414669 A CN110414669 A CN 110414669A
- Authority
- CN
- China
- Prior art keywords
- network structure
- global
- neural network
- txt file
- training
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种加速神经网络结构选择的方法,涉及神经网络技术领域,本发明利用主线程M读取global.txt文件,判断该文件中记录的神经网络结构的个数是否小于t,若是,则逐行判断是否存在global.txt文件未记录的神经网络结构,若存在,则查询空闲显卡,主线程M启动一个子线程,通过该子线程将未记录的神经网络结构放到空闲显卡上进行训练,主线程M休眠一定时间后,继续判断是否存在global.txt文件未记录的神经网络结构,子线程训练完成后将未记录的神经网络结构写入到global.txt文件中,从更新后的global.txt文件中,选择出对应于当前情景最优的神经网络结构,本发明确保了得到准确及性能最优的神经网络结构,成本较低。
Description
技术领域
本发明涉及神经网络技术领域,更具体的是涉及一种加速神经网络结构选择的方法。
背景技术
当今社会,基于深度学习的人工智能技术已对人们的日常生活产生了重要影响,同时也带来了极大便利,例如通过在自助机器上自动进行人脸比对,常用的银行业务已不需要在柜台排队办理。当今深度学习技术的主要方法是神经网络,而要想让深度学习技术达到最优的效果,必须针对当前任务设计出特定的神经网络结构,然后基于当前任务的数据,对该网络结构进行训练,由于神经网络的结构依赖于具体的任务,因此针对不同的问题,需要单独设计与其相应的最好的神经网络结构。
神经网络结构的设计本质上是一个非常复杂的优化问题,它可能是一个离散的优化问题,也可能是一个约束条件非常复杂的优化问题,也可能同时包含了这些问题,这就导致神经网络结构的设计,不能有效地使用传统的数学优化的方式来处理。目前设计神经网络结构的方法主要是基于“试错法”,也就是说,先根据经验设计出来很多备选的网络结构,然后逐一训练每一个网络结构并得到其训练结果,最终根据这些训练结果,挑选出来具有最优性能的神经网络结构。
神经网络结构的训练是一个非常耗时的过程,当前的主流训练方法是借助于高效的GPU服务器进行加速训练。尽管如此,在常见的数据上,完成一组神经网络结构的训练,还是相当的耗时,这就导致在有限的时间内,无法大范围的“试错”待选的神经网络结构,这就可能导致错过最优的神经网络结构,进而影响处理任务的性能。值得注意的是,尽管当今神经网络的训练框架,比如PyTorch或者TensorFlow都提供了神经网络对多GPU服务器或者多GPU的支持,但是这些支持是建立在单个神经网络结构上,通过拆分单个结构到各个GPU进行协同训练或者拆分训练数据到多个GPU进行的,这种方法在神经网络结构的最优设计中,起不到加速作用。主要原因是常见的情况下,主流单个GPU足够支撑一个神经网络结构的训练,此外通过拆分数据的情况会造成训练后合并的IO开销,反而比使用单个GPU在不拆分训练数据的情况下,耗费的时间更久。
由上可知,影响神经网络结构选择效率的主要原因是神经网络结构的耗时训练,为了解决该问题,研究者们提出了一些方法来加速神经网络结构的选择,这些方法一共可以分为三类:
第一类:“减少训练次数”来降低单个网络结构的训练时间;
第二类:“降低训练数据量”来降低单个网络结构的训练时间;
第三类:“采用大量GPU服务器”来同时训练多个网络结果,来降低总体的训练时间。
正常情况下,在单机训练单个神经网络结构的流程如下:
1、给定特定任务上的一组训练数据和一组验证数据,假定该训练数据的个数为N,训练的批量大小为n,训练的轮回次数为T;
2、在每一个训练轮回中,首先把训练数据随机打散,然后把打散后的训练数据按照每组为n个数据,分成N/n组;
3、依次训练每一组数据,并更新神经网络的权重,直至该训练轮回内的数据全部训练完;
4、继续操作步骤2,进入下一个轮回训练,直至训练T个轮回;
5、利用训练完的神经网络,在验证数据上计算该神经网络结构的性能;
通过上述步骤可知,对于单机上的每个神经网络结构需要训练的总次数为:T*N/n;
加速神经网络结构选择的第一类和第二类方法主要是基于单机GPU的情况下,提出的加速单个训练神经网络结构的方法,“减少训练次数”是通过减少轮回次数T实现的;“降低训练数据量”是通过减小N来实现的,由此可见,这两种方法都可以通过减少每个神经网络结构训练的总次数,来达到减少每个神经网络结构的训练时间,进而达到使用较少的总时间,来完成一定数量的神经网络结构的训练;而“采用大量GPU服务器”的方法是通过同时把每一个神经网络结构,放入到一个单独的GPU服务器上进行训练,由于多个神经网络结构可以同时进行训练,所以该方法也可以加速神经网络结构的选择。
但是上述三个方法各自都存在以下不足之处:
1、第一类“减少训练次数”的方法,容易造成最终选择出来的结果可能是错误的。当采用较小的训练次数的时候,当前神经网络结构并没有充分的被训练,而每个神经网络结构的训练结果并不是具有相同的发展趋势,比如计划训练的总轮回为300,第一个神经网络结构的最终性能为96%,在第100个训练轮回的时候性能达到90%;而另一个神经网络结构的最终性能为94%,在第100个训练轮回的时候性能为93%;此时如果设置T为100,我们将选出来第二个神经网络结构为最终的最优结构,很明显,这种选择结果是错误的,造成这种问题的主要原因就是,每个神经网络的训练性能的发展趋势是不同的,不能在训练终止之前作出准确的判断;
2、第二类“减少训练数据”的方法,容易造成选出的结果可能性能不是最好的。当采用较少训练数据的时候,我们往往得到的是对于当前训练数据较好的网络结构。当该网络结构用于真实环境时,由于其没有充分的学习之前未见过的数据,很自然的会在新的数据情况下表现很差。该方法的另外一个不足之处是,很难从整个测试数据集中,选择出来一批有代表性的部分数据,来代表整个测试数据。比如我们处理的是一个20分类的数据分类问题,如果我们只是选择了其中10分类的数据,通过该方法进行网络结构选择,最终我们选择出来的神经网络结构肯定只对这10分类的数据效果好,而在整个20分类的数据中表现很差;
3、第三类“采用大量GPU服务器”的主要不足是需要大量的资金投入,来购买大量的GPU服务器,而并不是全部的相关研究人员或者神经网络技术使用者都具备这种条件。比如目前主流的NVIDIA计算GPU卡,每张卡的购买费用需要十几万,为此还需要其它的资金投入用以配备专门的机房,以及周边设备,一般的公司或者科研院校不具备这种条件。目前在科研单位或者大学,最常见的机房配置还是多个单机,每个单机配备2-4块左右的GPU。
发明内容
本发明的目的在于:为了解决现有的神经网络结构的选择方法通过减少训练次数或训练数据来加速选择,容易造成所选择出来的神经网络结构有误或性能不好的问题,本发明提供一种加速神经网络结构选择的方法,采用完整的训练轮回,在全部的测试数据集上,通过设计相应的算法,充分利用单机所装备的全部GPU,实现加速神经网络结构的选择。
本发明为了实现上述目的具体采用以下技术方案:
一种加速神经网络结构选择的方法,所述方法中设定待选神经网络结构有t个,分别表示为C1,C2,…,Ct;当前能够使用的单机装备有g块显卡,分别表示为X1,X2,…,Xg;训练数据的个数为N,训练的批量大小为n,N>n,训练的轮回次数为T,所述方法包括如下步骤:
S1:采用多线程编程,启动一个主线程M;
S2:主线程M判断当前文件夹下是否存在用于记录各神经网络结构性能的名为global.txt的文件,若存在,则执行S3;若不存在,则新建一个global.txt文件;
S3:主线程M读取global.txt文件,判断该文件中记录的神经网络结构的个数是否小于t,若是,则执行S4;否则结束进程;
S4:主线程M读取global.txt文件,逐行判断是否存在global.txt文件未记录的神经网络结构,若存在,设该神经网络结构为Ci,执行S5;否则结束进程;
S5:主线程M根据显卡驱动提供的相应命令,依次查询本机显卡是否空闲,若当前查询的显卡Xj空闲,j为大于等于1,且小于等于g的整数,则执行S6;若不空闲,则休眠一定时间后查询下一块显卡,直至查询到空闲显卡;
S6:主线程M启动一个子线程,通过该子线程将Ci放到Xj上进行训练,主线程M休眠一定时间后,返回S3,子线程训练完成后将Ci及其对应性能写入到global.txt文件中,更新global.txt文件;
S7:从更新后的global.txt文件中,选择出对应于当前情景最优的神经网络结构。
进一步的,所述S6中,子线程将Ci放到Xj上进行训练,包括如下步骤:
S6.1:随机初始化Ci的权重;
S6.2:从N个训练数据中随机抽取n个训练数据,对Ci进行训练,并采用梯度下降法更新Ci权重后,再进行下一次训练,重复训练T*N/n次;
S6.3:训练完成后,利用验证数据对Ci进行性能验证,得到验证结果。
进一步的,所述S6中,子线程将Ci及其对应性能写入到global.txt文件中,具体为:
子线程对global.txt文件加锁,保持对global.txt文件写操作的独占,将S6.3得到的验证结果写入global.txt文件中,然后解锁,取消对global.txt文件写操作的独占。
进一步的,所述global.txt文件中,每行记录一个神经网络结构的名称以及其对应的性能。
进一步的,所述S5中,若查询到所有显卡均不空闲,则主线程M休眠一定时间后,继续从X1开始查询。
本发明的有益效果如下:
1、本发明采用完整预设的训练轮回次数以及全部训练数据,利用单机多GPU进行神经网络结构训练的加速,进而加速了神经网络结构的选择,避免了减少训练次数以及减少训练数据导致的所选择的神经网络结构错误或性能不佳,确保了得到准确及性能最优的神经网络结构,成本较低。
2、本发明利用一个全局文件global.txt文件可以保存该次评估中的全部神经网络结构,并且本发明在运行过程中,不管因何种原因导致意外终止,均可以跳过已经评价过的神经网络结构,不需要重复评估,进一步加速了神经网络结构的选择。
具体实施方式
为了本技术领域的人员更好的理解本发明,下面结合以下实施例对本发明作进一步详细描述。
实施例1
本实施例提供一种加速神经网络结构选择的方法,所述方法中设定待选神经网络结构有t个,分别表示为C1,C2,…,Ct;当前能够使用的单机装备有g块显卡,分别表示为X1,X2,…,Xg;训练数据的个数为N,训练的批量大小为n,N>n,训练的轮回次数为T,所述方法包括如下步骤:
S1:采用多线程编程,启动一个主线程M,本实施例中可以选用现有的任一种编程语言进行编程;
S2:主线程M判断当前文件夹下是否存在用于记录各神经网络结构性能的名为global.txt的文件,若存在,则执行S3;若不存在,则新建一个global.txt文件;所述global.txt文件中,每行记录一个神经网络结构的名称以及其对应的性能,例如对于神经网络结构C1,设其性能为90%,则记录的内容为C1=90%;
S3:主线程M读取global.txt文件,判断该文件中记录的神经网络结构的个数是否小于t,若是,则执行S4;否则结束进程;
S4:主线程M读取global.txt文件,逐行判断是否存在global.txt文件未记录的神经网络结构,一旦出现一个未记录的神经网络结构,设该神经网络结构为Ci,则执行S5;否则结束进程;
S5:主线程M根据显卡驱动提供的相应命令,依次查询本机显卡是否空闲,若当前查询的显卡Xj空闲,j为大于等于1,且小于等于g的整数,则执行S6;若不空闲,则休眠一定时间后查询下一块显卡,直至查询到空闲显卡;若查询到所有显卡均不空闲,则主线程M休眠一定时间后,继续从X1开始查询;
S6:主线程M启动一个子线程,通过该子线程将Ci放到Xj上进行训练,主线程M休眠一定时间后,返回S3,子线程训练完成后将Ci及其对应性能写入到global.txt文件中,更新global.txt文件,主线程M休眠的时间根据评估环境及设备性能进行设定,本实施例的休眠时间为5分钟;
S7:从更新后的global.txt文件中,选择出对应于当前情景最优的神经网络结构。
本实施例采用完整预设的训练轮回次数以及全部训练数据,利用单机多GPU进行神经网络结构训练的加速,进而加速了神经网络结构的选择,避免了减少训练次数以及减少训练数据导致的所选择的神经网络结构错误或性能不佳,确保了得到准确及性能最优的神经网络结构,并且不需要投入大量GPU服务器,成本较低;
并且本实施例利用一个全局文件global.txt文件可以保存该次评估中的全部神经网络结构,在运行过程中,不管因何种原因导致意外终止,均可以跳过已经评估过的神经网络结构,不需要重复评估,进一步加速了神经网络结构的选择。
实施例2
本实施例在实施例1的基础之上进一步优化,具体是:
所述S6中,子线程将Ci放到Xj上进行训练,包括如下步骤:
S6.1:随机初始化Ci的权重,所采用的初始化方法为目前常用的方法,例如Xavier方法;
S6.2:从N个训练数据中随机抽取n个训练数据,对Ci进行训练,并采用梯度下降法更新Ci权重后,再进行下一次训练,重复训练T*N/n次;
S6.3:训练完成后,利用验证数据对Ci进行性能验证,得到验证结果,设验证结果为50%,则Ci性能为“Ci=50%”,本实施例中若当前数据中提供有验证数据则直接使用,否则事先从训练数据中随机选择一部分数据作为验证数据,采用机器学习中的惯例,通常情况下选择20%的数据作为验证数据;
子线程将Ci及其对应性能写入到global.txt文件中,具体为:
子线程对global.txt文件加锁,保持对global.txt文件写操作的独占,将S6.3得到的验证结果即字符串“Ci=50%”写入global.txt文件中,然后解锁,取消对global.txt文件写操作的独占。
以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
Claims (5)
1.一种加速神经网络结构选择的方法,所述方法中设定待选神经网络结构有t个,分别表示为C1,C2,…,Ct;当前能够使用的单机装备有g块显卡,分别表示为X1,X2,…,Xg;训练数据的个数为N,训练的批量大小为n,N>n,训练的轮回次数为T,其特征在于,所述方法包括如下步骤:
S1:采用多线程编程,启动一个主线程M;
S2:主线程M判断当前文件夹下是否存在用于记录各神经网络结构性能的名为global.txt的文件,若存在,则执行S3;若不存在,则新建一个global.txt文件;
S3:主线程M读取global.txt文件,判断该文件中记录的神经网络结构的个数是否小于t,若是,则执行S4;否则结束进程;
S4:主线程M读取global.txt文件,逐行判断是否存在global.txt文件未记录的神经网络结构,若存在,设该神经网络结构为Ci,执行S5;否则结束进程;
S5:主线程M根据显卡驱动提供的相应命令,依次查询本机显卡是否空闲,若当前查询的显卡Xj空闲,j为大于等于1,且小于等于g的整数,则执行S6;若不空闲,则休眠一定时间后查询下一块显卡,直至查询到空闲显卡;
S6:主线程M启动一个子线程,通过该子线程将Ci放到Xj上进行训练,主线程M休眠一定时间后,返回S3,子线程训练完成后将Ci及其对应性能写入到global.txt文件中,更新global.txt文件;
S7:从更新后的global.txt文件中,选择出对应于当前情景最优的神经网络结构。
2.根据权利要求1所述的一种加速神经网络结构选择的方法,其特征在于,所述S6中,子线程将Ci放到Xj上进行训练,包括如下步骤:
S6.1:随机初始化Ci的权重;
S6.2:从N个训练数据中随机抽取n个训练数据,对Ci进行训练,并采用梯度下降法更新Ci权重后,再进行下一次训练,重复训练T*N/n次;
S6.3:训练完成后,利用验证数据对Ci进行性能验证,得到验证结果。
3.根据权利要求2所述的一种加速神经网络结构选择的方法,其特征在于,所述S6中,子线程将Ci及其对应性能写入到global.txt文件中,具体为:
子线程对global.txt文件加锁,保持对global.txt文件写操作的独占,将S6.3得到的验证结果写入global.txt文件中,然后解锁,取消对global.txt文件写操作的独占。
4.根据权利要求1所述的一种加速神经网络结构选择的方法,其特征在于,所述global.txt文件中,每行记录一个神经网络结构的名称以及其对应的性能。
5.根据权利要求1所述的一种加速神经网络结构选择的方法,其特征在于,所述S5中,若查询到所有显卡均不空闲,则主线程M休眠一定时间后,继续从X1开始查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910589376.3A CN110414669A (zh) | 2019-07-02 | 2019-07-02 | 一种加速神经网络结构选择的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910589376.3A CN110414669A (zh) | 2019-07-02 | 2019-07-02 | 一种加速神经网络结构选择的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110414669A true CN110414669A (zh) | 2019-11-05 |
Family
ID=68358683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910589376.3A Pending CN110414669A (zh) | 2019-07-02 | 2019-07-02 | 一种加速神经网络结构选择的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110414669A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290855A (zh) * | 2020-02-06 | 2020-06-16 | 四川大学 | 分布式环境中多gpu服务器的gpu卡管理方法、系统及存储介质 |
CN113609310A (zh) * | 2021-08-25 | 2021-11-05 | 上海交通大学 | 单机大规模知识图谱嵌入系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184367A (zh) * | 2014-06-09 | 2015-12-23 | 讯飞智元信息科技有限公司 | 深度神经网络的模型参数训练方法及系统 |
CN109299142A (zh) * | 2018-11-14 | 2019-02-01 | 中山大学 | 一种基于进化算法的卷积神经网络结构搜索方法及系统 |
CN109733415A (zh) * | 2019-01-08 | 2019-05-10 | 同济大学 | 一种基于深度强化学习的拟人化自动驾驶跟驰模型 |
CN109923558A (zh) * | 2016-11-04 | 2019-06-21 | 谷歌有限责任公司 | 混合专家神经网络 |
-
2019
- 2019-07-02 CN CN201910589376.3A patent/CN110414669A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184367A (zh) * | 2014-06-09 | 2015-12-23 | 讯飞智元信息科技有限公司 | 深度神经网络的模型参数训练方法及系统 |
CN109923558A (zh) * | 2016-11-04 | 2019-06-21 | 谷歌有限责任公司 | 混合专家神经网络 |
CN109299142A (zh) * | 2018-11-14 | 2019-02-01 | 中山大学 | 一种基于进化算法的卷积神经网络结构搜索方法及系统 |
CN109733415A (zh) * | 2019-01-08 | 2019-05-10 | 同济大学 | 一种基于深度强化学习的拟人化自动驾驶跟驰模型 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290855A (zh) * | 2020-02-06 | 2020-06-16 | 四川大学 | 分布式环境中多gpu服务器的gpu卡管理方法、系统及存储介质 |
CN113609310A (zh) * | 2021-08-25 | 2021-11-05 | 上海交通大学 | 单机大规模知识图谱嵌入系统及方法 |
CN113609310B (zh) * | 2021-08-25 | 2023-08-08 | 上海交通大学 | 单机大规模知识图谱嵌入系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7853540B2 (en) | System and method for constructing cognitive programs | |
Mäkinen et al. | Business ecosystems’ evolution—an ecosystem clockspeed perspective | |
Jordan et al. | Empirical game-theoretic analysis of the TAC supply chain game | |
Goldwaser et al. | Deep reinforcement learning for general game playing | |
CN105184367A (zh) | 深度神经网络的模型参数训练方法及系统 | |
Kroer et al. | Robust Stackelberg equilibria in extensive-form games and extension to limited lookahead | |
CN110414669A (zh) | 一种加速神经网络结构选择的方法 | |
CN109710357A (zh) | 一种基于Unity3D引擎实现服务器操作的方法及系统 | |
CN108629476A (zh) | 非暂时性计算机可读存储介质、工序规划方法和装置 | |
Borovikov et al. | Winning isn’t everything: Training agents to playtest modern games | |
Blachowicz | Of two minds: The nature of inquiry | |
JP6937759B2 (ja) | データベース操作方法及び装置 | |
CN113469372A (zh) | 强化学习训练方法、装置、电子设备以及存储介质 | |
CN105045651A (zh) | 业务处理系统及方法 | |
Steinmetz et al. | More trees or larger trees: Parallelizing Monte Carlo tree search | |
Kozelek | Methods of MCTS and the game Arimaa | |
Preuss et al. | Torcs sensor noise removal and multi-objective track selection for driving style adaptation | |
Galli et al. | On the application of game mechanics in information retrieval | |
GB2420886A (en) | Scoring mechanism for automatically generated test programs | |
Leece et al. | Sequential pattern mining in Starcraft: Brood War for short and long-term goals | |
Bertsimas et al. | World-class interpretable poker | |
CN109614455A (zh) | 一种基于深度学习的地理信息的自动标注方法及装置 | |
US11413541B2 (en) | Generation of context-aware, personalized challenges in computer games | |
KR20230090862A (ko) | 인공 지능 모델을 기반으로 게임 컨텐츠의 난이도를 관리하는 방법 및 장치 | |
CN110837726A (zh) | 生成成语游戏关卡的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191105 |