CN112836796B - 一种深度学习训练中系统资源和模型超参协同优化的方法 - Google Patents
一种深度学习训练中系统资源和模型超参协同优化的方法 Download PDFInfo
- Publication number
- CN112836796B CN112836796B CN202110111227.3A CN202110111227A CN112836796B CN 112836796 B CN112836796 B CN 112836796B CN 202110111227 A CN202110111227 A CN 202110111227A CN 112836796 B CN112836796 B CN 112836796B
- Authority
- CN
- China
- Prior art keywords
- test
- layer
- module
- point
- solution
- 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.)
- Active
Links
Images
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
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种深度学习训练中系统资源和模型超参数协同优化的方法。包括以下步骤:步骤1,设计一套针对深度学习训练中系统资源和模型超参协同优化问题的系统,步骤2,一次调参实验,步骤3,设计针对多目标场景的试验调度算法,步骤4,依据非支配层链表,设计针对多目标场景的试验调度算法,本发明所述方法的有益效果是:设计了一种面向深度学习训练中系统资源和模型超参数协同优化问题的系统,能够在给定超参搜索范围内找到一组近似最优超参数组合,在保证模型训练准确度的同时,最小化训练程序占用的系统资源,并具有应用于分布式计算场景的功能。
Description
技术领域
本发明属于深度学习模型训练优化领域与超参数调优技术领域,尤其涉及一种深度学习训练中系统资源和模型超参数协同优化的方法。
背景技术
目前,深度学习技术在多个领域迅速发展并取得系列成功,例如自动驾驶、文本翻译、智能商品推荐且其底层技术的主体是一些人工神经模型,包含大量网络参数且能对输入数据进行复杂的数学计算并进行决策,为使模型获得较好决策能力,需要大量训练,以优化网络参数。神经网络的训练需要妥善分配系统资源与设置超参。网络训练需要耗费大量系统资源(如内存、CPU)以及时间。分配过少系统资源会降低训练效率;而分配过多系统资源不但无法获得有效提升,还造成了资源浪费,在多任务场景下将对其他任务造成妨碍。因此,系统资源的分配与训练效率之间需要权衡。此外,网络训练存在一些对训练效率造成直接影响的参数,即模型超参,需要在训练前指定,如学习率(learning rate)、批大小(batchsize)、期数(epoch),不好的超参设置要拖慢训练,甚至可能使损失值无法收敛以致实验失败;而人为调参效率低且很难保证所选超参的质量。申请号为2013100158326的专利申请公开了一种三网协同优化的方法,包括:利用全球移动通信系统(GSM)的Abis信令信息,建立GSM小区的干扰矩阵,利用各个干扰矩阵建立GSM小区之间的业务关联度列表;根据业务关联度列表,对从GSM中选出的小区进行聚合计算得到GSM原子区域列表;将GSM原子区域列表与第一网络及第二网络关联得到原子区域列表,根据原子区域列表对三网业务进行协同优化。综上,目前大部分调参框架倾向于分别调整模型超参数与系统资源配置,其中隐含了两者之间几乎没有相互依赖的假设,如BoTorch、GPyTorch、Ax、Tune、Nevergrad,其专注于模型超参的优化,并没有考虑系统资源配置。Starfish、MRTuner则倾向于调整系统资源配置以最大程度减少作业执行时间。
发明内容
本发明的目的是提供一种深度学习训练中系统资源和模型超参协同优化的方法,本发明所述方法用于协同优化深度学习训练任务的模型超参和系统资源配置并能在给定超参搜索范围内找到一组近似最优超参数组合,以保证模型训练准确度的同时能够最小化训练程序占用的系统资源。
本发明所述方法包括以下步骤:
步骤1,设计一套针对深度学习训练中系统资源和模型超参协同优化问题的系统且系统包括以下7个模块:
(1)目标程序模块:目标程序模块为训练代码程序,在运行初始需要接收一组模型超参数来决定训练模型方法,例如学习率、批大小、期数,每一次迭代后,训练程序能选择性地进行验证并计算出模型在验证集中的准确率;
(2)系统资源分配模块:系统资源分配模块接收来自执行者程序的一组系统资源配置参数并为目标程序分配相应系统资源,当目标程序实际资源使用量超出分配量后,目标程序将强制退出;
(3)试验生成器模块:试验生成器模块根据实验配置中的超参数搜索范围通过使用用户指定的搜索算法选出超参数组合并封装成试验对象,不同搜索算法有不同的试验生成方式,例如网格或随机搜索算法在最初生成所有试验,贝叶斯搜索算法则需要先生成部分试验并待运行结束后依据试验反馈再生成接续试验;
(4)试验执行器模块:试验执行器模块用于根据试验生成器模块生成的试验对象信息来生成具体的执行者程序(Actor),执行者程序将来自试验执行器给出的超参数划分为模型超参数和系统资源配置参数并分别传给目标程序和系统资源分配模块,使目标程序在给定系统资源的环境中运行并通过控制器模块交互,然后试验执行器记录各执行者程序的反馈信息并发送给试验调度器并直至试验终止;
(5)试验调度器模块:试验调度器模块根据执行者程序的反馈来决定是否对试验早停止(early stopping),具体使用的调度算法是可配置的,返回CONTINUE表示应继续训练,返回STOP表示早停止;
(6)控制器模块:控制器模块控制单个试验的训练过程且其行为包括暂停、继续、终止、获取反馈,控制器模块包括分别内嵌于目标程序模块与执行者模块中的两部分,控制器模块的每一部分都能通过心跳机制检测到另一部分的存活状态;
控制器实际控制端:内嵌于目标程序模块,能够控制目标程序的运行流程,中途反馈信息需要由控制器记录;
控制器执行者端:内嵌于执行者程序,通过调用相应接口向控制器传输命令或者获取反馈信息;
(7)决策器模块:待所有试验结束之后,决策器模块根据实验结果决定最佳超参数;
步骤2,一次调参实验,包括以下步骤:
步骤2.1:配置实验(Experiment,是指整个调参任务在运行一个实验前需要对其进行配置,即设置超参数的搜索范围、实验的试验总数、使用的超参数搜索算法(SearchingAlgorithm)、试验的调度方法(Scheduling Algorithm)、最终决策方法),最大并行数是指确定超参数搜索范围、最大试验(Trial,试验是将将机器学习模型的训练任务视为一种灰盒,初始输入为模型超参数与系统资源配置且统称为超参数,最终输出为训练好的模型,在训练过程中周期性地获取包括当前训练效果的反馈信息,灰盒过程被视为一个试验,即本发明中最小的调度与优化单元,一个试验的元信息中至少需要包含试验所用的超参数组合以及涉及程序启动的相关配置)数;
步骤2.2:当已完成的试验达到最大试验数,则进入步骤2.5,否则,试验生成器模块依据超参数搜索范围与超参数搜索算法生成多组试验对象(具体数量与配置有关,如使用的搜索算法),新生成的试验数量、已完成试验数量、正在运行的试验数量之和不超过最大试验数;
步骤2.3:试验执行器模块收到试验生成器提供的试验对象,分别启动各执行者程序,各执行者程序也分别依据自身配置向系统资源分配模块申请系统资源并启动对应的目标程序,执行者程序通过控制器模块控制目标程序模型训练行为并获取反馈信息;
步骤2.4:试验调度器模块根据反馈信息,使用调度算法判断相应试验是否能够成为最佳试验,当不能够成为最佳试验,则对试验进行早停止(early stopping,早停止是指根据试验运行中的反馈信息决定中止一些效果不好的试验并使其不会运行到最后正常结束或者达到设定的运行时间上限以节约部分的试验的运行时间并提升整体优化效率),目标程序运行结束的试验则会被正常停止,转到步骤2.2;
步骤2.5:此时所有试验已经完成,决策器模块根据决策算法选出最佳试验并选出当前最优超参数组;
需要说明的是,目标程序模块的反馈信息写成<当前训练效果,程序是否运行成功>的二元组,当程序运行失败,则认为资源参数配置得不好;当程序运行成功,而当前训练效果不好,则认为神经网络模型超参数设置的不好,依据这种二元组反馈信息,实现协同调优;
步骤3,设计针对多目标场景的试验调度算法:
步骤3.1,设计非支配层链表数据结构:
依据非支配层的全序关系设计了一种称为非支配层链表的数据结构并基于此数据结构设计了一种多目标试验调度算法;
步骤3.2,依据非支配层的一个性质设计非支配层链表的添加点操作:
非支配层的性质是将一个非支配点集S添加到一个被维护好的非支配层L,构成一个新的点集,再从点集中取出其帕累托前沿,作为一个新的非支配层Lnew,并将不属于帕累托前沿的点淘汰,这些淘汰的点构成的集合为Se,能够证明,Se也是一个非支配点集;
步骤3.3,为非支配层链表添加点包括以下步骤:
当需要添加一个新点,先将新点加入第一个结点并维护结点,淘汰掉一个非支配点集,将非支配点集加入下一结点并维护结点,又淘汰掉一个非支配点集,以此类推,直到不可淘汰任何点为止;
步骤3.4,给非支配层链表添加点并返回此刻点被添加到的层级索引,包括以下步骤:
步骤3.4.1,将一个量index置为空,量index用于记录最后目标点A被添加到的结点在当前链表中的层级,设定从0开始计数,非支配层链表是一种动态的数据结构且其中的点当前所在位置不一定和以后所在位置相同;
步骤3.4.2,在非支配层链表中加入一点A,设置点独自构成非支配点集S0;
步骤3.4.3,非支配层Li中加入一个非支配点集Si,淘汰出另一个非支配点集Si+1,加入下一层Li+1,当Li不存在,则在操作之前创建对应结点加入链表尾部;
步骤3.4.5,当被淘汰的Si+1为空,则停止运行,返回index,否则,转到步骤3.4.3;
步骤4,依据非支配层链表,设计针对多目标场景的试验调度算法,当用于描述时间的量为T(如训练时间或者迭代数),目标为metric,设定一个起始时间T0,表示开始进行淘汰的时间值,设定一个时间量Tmax,表示任务最多运行的时间,将[T0,Tmax]区间分为k+1个时间段,除去两端,中间各分界点的时间为T1、T2、…、Tk,建立k个空的非支配层链表P1、P2、…、Pk,其中Pi和Ti相对应(1≤i≤k),确定启动的最少试验数Nmin且只有当前已运行试验数超过这个值时则早停止,对于第K个试验运行到某轮(Round,轮是指机器学习模型的训练任务包括了多个迭代的参数优化,而在本发明中,一轮包括了多个迭代以及在这些迭代后进行的一次验证(validation),试验的每轮结束后都会生成一组反馈,包括模型验证准确率(accuracy)、损失值(loss)、内存占用量、CPU占用量,反馈信息由用户设定,反馈信息的生成需要用户自己实现)时,时间量为TC,在[T0,Tmax]区间设置k个检查阶段(checkingphase),当TC首次超过Ti时,进入第i个检查阶段;当试验调度器在时间TC获得了K号试验的反馈结果,算法的运作过程是返回标志CONTINUE或者STOP时结束所有步骤,CONTINUE标志表示继续进行下一轮训练,STOP表示停止训练:
步骤4.1,将metric结果和TC记录到results[trial_id]列表中;
步骤4.2,当TC≤T0,返回CONTINUE,训练继续,否则进入步骤4.3;
步骤4.3,当K≤Nmin,返回CONTINUE,否则进入步骤4.4;
步骤4.4,当处于第i个检查阶段且检查阶段未结束,进入步骤4.5,否则返回CONTINUE;
步骤4.6,统计第1层到第(j-1)层的点数M以及支配层链表的总点数Mall,当M/Mall≥0.5,则返回STOP,表示停止训练,否则返回CONTINUE。
本发明所述方法的有益效果是:
1.设计了一种面向深度学习训练中系统资源和模型超参数协同优化问题的系统,能够在给定超参搜索范围内找到一组近似最优超参数组合,在保证模型训练准确度的同时,最小化训练程序占用的系统资源,并具有应用于分布式计算场景的功能;
2.设计了一种用于目标向量判优的非支配层链表数据结构,并进一步设计了一种面向多目标场景的试验调度算法且能有效地检测出表现差的试验并及时停止以节约调参实验花费的时间。
附图说明
图1是本发明所述方法的调参系统的结构示意图;
图2是本发明所述方法的一次调参实验的步骤示意图;
图3是本发明所述方法的给非支配层链表添加点并返回此刻点被添加到的层级索引的步骤示意图;
图4是本发明所述方法的非支配层链表试验调度算法模块在某一时刻接收到试验反馈后的行为示意图;
图5是本发明所述方法的具体实施方式中实验层级的步骤示意图;
图6是本发明所述方法的设置过少内存时试验的行为示意图;
图7是本发明所述方法的目标程序能正常运行时试验的行为示意图;
图8是本发明所述方法的向非支配层链表加入一个点的过程示意图,其中(7,7)、(10,4)、(4,3)、(10,2)表示当前步骤被淘汰的点,(10,7)表示输入点,cur_idx表示当前所在结点索引。
具体实施方式
下面结合附图对本发明的实施方式进行详细描述。本发明所述方法包括以下步骤:
步骤1,设计一套针对深度学习训练中系统资源和模型超参协同优化问题的系统且系统结构如图1所示,包括以下7个模块:
(1)目标程序模块:目标程序模块为训练代码程序,在运行初始需要接收一组模型超参数来决定训练模型方法,例如学习率、批大小、期数,每一次迭代后,训练程序能选择性地进行验证并计算出模型在验证集中的准确率;
(2)系统资源分配模块:系统资源分配模块接收来自执行者程序的一组系统资源配置参数并为目标程序分配相应系统资源,当目标程序实际资源使用量超出分配量后,目标程序将强制退出;
(3)试验生成器模块:试验生成器模块根据实验配置中的超参数搜索范围通过使用用户指定的搜索算法选出超参数组合并封装成试验对象,不同搜索算法有不同的试验生成方式,例如网格或随机搜索算法在最初生成所有试验,贝叶斯搜索算法则需要先生成部分试验并待运行结束后依据试验反馈再生成接续试验;
(4)试验执行器模块:试验执行器模块用于根据试验生成器模块生成的试验对象信息来生成具体的执行者程序(Actor),执行者程序将来自试验执行器模块给出的超参数划分为模型超参数和系统资源配置参数并分别传给目标程序和系统资源分配模块,使目标程序在给定系统资源的环境中运行并通过控制器模块交互,然后试验执行器模块记录各执行者程序的反馈信息并发送给试验调度器模块并直至试验终止;
(5)试验调度器模块:试验调度器模块根据执行者程序的反馈来决定是否对试验早停止(early stopping),具体使用的调度算法是可配置的,返回CONTINUE表示应继续训练,返回STOP表示早停止;
(6)控制器模块:控制器模块控制单个试验的训练过程且其行为包括暂停、继续、终止、获取反馈,控制器模块包括分别内嵌于目标程序模块与执行者模块中的两部分,控制器模块的每一部分都能通过心跳机制检测到另一部分的存活状态;
控制器实际控制端:内嵌于目标程序模块,能够控制目标程序的运行流程,中途反馈信息需要由控制器记录;
控制器执行者端:内嵌于执行者程序,通过调用相应接口向控制器传输命令或者获取反馈信息;
(7)决策器模块:待所有试验结束之后,决策器模块根据实验结果决定最佳超参数;
步骤2,一次调参实验,包括以下步骤,如图2所示:
步骤2.1:配置实验,即确定超参数搜索范围、最大试验数配置;
步骤2.2:当已完成的试验达到最大试验数,则进入步骤2.5,否则,试验生成器模块依据超参数搜索范围与超参数搜索算法生成多组试验对象(具体数量与配置有关,如使用的搜索算法),新生成的试验数量、已完成试验数量、正在运行的试验数量之和不能超过最大试验数;
步骤2.3:试验执行器模块收到试验生成器提供的试验对象,分别启动各执行者程序,各执行者程序也分别依据自身配置向系统资源分配模块申请系统资源并启动对应的目标程序,执行者程序通过控制器模块控制目标程序模型训练行为并获取反馈信息;
步骤2.4:试验调度器模块根据反馈信息,使用调度算法判断相应试验是否能够成为最佳试验,当不能够成为最佳试验,则对试验进行早停止,目标程序运行结束的试验则会被正常停止,转到步骤2.2;
步骤2.5:此时所有试验已经完成,决策器模块根据决策算法选出最佳试验并选出当前最优超参数组;
需要说明的是,目标程序的反馈信息写成<当前训练效果,程序是否运行成功>的二元组,当程序运行失败,则认为资源参数配置得不好;当程序运行成功,而当前训练效果不好,则认为神经网络模型超参数设置的不好,依据这种二元组反馈信息,实现协同调优;
步骤3,设计针对多目标场景的试验调度算法:
步骤3.1,设计非支配层链表数据结构:
依据非支配层的全序关系设计了一种称为非支配层链表的数据结构并基于此数据结构设计了一种多目标试验调度算法:
首先需要介绍以下两个基本概念:
(1)帕累托(Pareto)理论:即当解A对应的所有目标不差于解B且至少有一个目标优于B时,称为解A支配解B,当A和B之间不存在支配关系时,称为A无差别于B,当解空间中找不到能够支配解A的解,则解A就是帕累托最优解,在此定义下的最优解是一个集合,被称为帕累托前沿(Pareto Frontier);
(2)非支配层:即从一个有限解集中选出帕累托前沿,并分离出来,在剩余解中重复这个过程,直到没有解剩下,每次取出的解构成一个集合,被称为非支配层,某一层里至少存在一个解支配下一层中的某些解,且不存在解会被下一层中的任意解支配,这是一种全序关系;
以下称非支配层中存储的解向量为数据点,简称点;在非支配层链表中,每个链表结点维护了一个非支配层,结点中任意两点间不存在支配关系,从第二个存储解数据的链表结点开始,从任意结点中任取一点,此点必定被前一结点中至少一个点支配且不会被后一结点中的任意点支配;由此建立一种点之间的优劣比较方式,即位于非支配层链表中靠前结点的点优于位于靠后结点的点,维护非支配层链表的关键在于添加点后调整新点以及旧点的位置,维持住链表结点内以及结点间的关系;
步骤3.2,依据非支配层的一个性质设计非支配层链表的添加点操作:
非支配层的性质是将一个非支配点集S添加到一个被维护好的非支配层L,构成一个新的点集,再从点集中取出其帕累托前沿,作为一个新的非支配层Lnew,并将不属于帕累托前沿的点淘汰,这些淘汰的点构成的集合为Se,能够证明,Se也是一个非支配点集;
步骤3.3,为非支配层链表添加点包括以下步骤,如图8所示:
当需要添加一个新点,先将新点加入第一个结点并维护结点,淘汰掉一个非支配点集,将非支配点集加入下一结点并维护结点,又淘汰掉一个非支配点集,以此类推,直到不可淘汰任何点为止;
步骤3.4,流程如图3所示,给非支配层链表添加点并返回此刻点被添加到的层级索引,包括以下步骤:
步骤3.4.1,将一个量index置为空,量index用于记录最后目标点A被添加到的结点在当前链表中的层级,设定从0开始计数,非支配层链表是一种动态的数据结构且其中的点当前所在位置不一定和以后所在位置相同;
步骤3.4.2,在非支配层链表中加入一点A,设置点独自构成非支配点集S0;
步骤3.4.3,非支配层Li中加入一个非支配点集Si,淘汰出另一个非支配点集Si+1,加入下一层Li+1,当Li不存在,则在操作之前创建对应结点加入链表尾部;
步骤3.4.5,当被淘汰的Si+1为空,则停止运行,返回index,否则,转到步骤3.4.3;
步骤4,依据非支配层链表,设计针对多目标场景的试验调度算法,流程如图4所示,当用于描述时间的量为T(如训练时间或者迭代数),目标为metric,设定一个起始时间T0,表示开始进行淘汰的时间值,设定一个时间量Tmax,表示任务最多运行的时间,将[T0,Tmax]区间分为k+1个时间段,除去两端,中间各分界点的时间为T1、T2、…、Tk,建立k个空的非支配层链表P1、P2、…、Pk,其中Pi和Ti相对应(1≤i≤k),确定启动的最少试验数Nmin且只有当前已运行试验数超过这个值时则早停止,对于第K个试验运行到某轮时,时间量为TC,在[T0,Tmax]区间设置k个检查阶段(checking phase),当TC首次超过Ti时,进入第i个检查阶段;当试验调度器在时间TC获得了K号试验的反馈结果,算法的运作过程是返回标志CONTINUE或者STOP时结束所有步骤,CONTINUE标志表示继续进行下一轮训练,STOP表示停止训练:
步骤4.1,将metric结果和TC记录到results[trial_id]列表中;
步骤4.2,当TC≤T0,返回CONTINUE,训练继续,否则进入步骤4.3;
步骤4.3,当K≤Nmin,返回CONTINUE,否则进入步骤4.4;
步骤4.4,当处于第i个检查阶段且检查阶段未结束,进入步骤4.5,否则返回CONTINUE;
步骤4.6,统计第1层到第(j-1)层的点数M以及支配层链表的总点数Mall,当M/Mall≥0.5,则返回STOP,表示停止训练,否则返回CONTINUE。
在具体实施例中,当进行一次调参实验,目标程序用于训练神经网络NN,调优的参数包括:lr(learning rate,学习率)、bs(batch size,批大小)、mem(memory,内存)、cpus(number of CPUs,CPU占用量);优化目标包括:acc(accuracy,准确率)、loss(损失值)、mem、cpus,且用户知道对NN各参数取值范围,流程如图5所示,包括以下步骤:
步骤101:用户进行实验配置,与优化过程相关的包括以下几点:
设定调参范围Space:
lr:从[0.01,0.5]区间取浮点数;
bs:从{32,64,128,256,512}集合中取一个;
mem:从[800,3000]区间取整数(单位:MB);
cpus:从[1,16]区间取整数(单位:核);
设定超参数搜索算法A1为:贝叶斯优化算法以及算法实现的相关配置;
设定试验调度算法A2为:非支配层链表调度算法即本发明所述方法所设计的调度算法以及算法实现的相关配置;
设定决策算法A3为:帕累托前沿中的超体积法以及算法实现的相关配置;
最大并行数M:3;
试验总数N:100;
步骤102:当前正在运行的试验数量为C,C初始为0,已经结束的试验数量为K,K初始为0,当正在运行的试验和已完成的试验数量之和已达N,转到步骤105,否则试验生成器模块调用超参数搜素算法A1在搜索范围Space选出一些超参数组合并从已经生成且未使用的超参数组合集中选出max(0,min(M,N-K)-C)个组合,分别生成新的试验对象,提交给试验执行器模块;
步骤103:试验执行器模块运行各新试验,试验执行器模块对每个试验生成执行者程序,执行者程序启动目标程序并通过控制器通信,单个试验执行初始,执行者程序根据mem与cpus配置向系统资源分配模块请求系统资源,分配给目标程序,目标程序在运行时会收到超参数lr和bs,试验调度器模块能在试验执行过程中从执行者程序处获取反馈信息并使用调度算法A2判断是否需要早停止;
步骤104:每当有一个试验结束,包括失败、正常运行结束、早停止,停止对应目标程序、执行者程序,释放系统资源,转到步骤102;
步骤105:决策器模块使用决策算法A3选出最佳试验及其对应超参数组合;
从试验的层级看,分多种情况,下面举几个典型例子:
假如NN在bs==64时训练所需的内存大约为1200,而某个试验中超参数组合为(lr,bs,mem,cpus)==(0.02,64,1000,2),则目标程序必然因内存不足运行失败,此时试验运行包括以下步骤,流程如图6所示:
步骤201:执行者程序向系统资源分配模块申请1000MB内存和2个CPU核心,在(mem,cpus)==(1000,2)环境下运行目标程序,传入超参数(lr,bs)==(0.02,64);
步骤202:执行者程序中控制器执行者端检测到实际控制端不再存活,标记当前试验为“失败”,目标各值设定为对应最差值,上报给试验调度器模块;
步骤203:释放系统资源,停止当前试验:
假如NN在bs==64时训练所需的内存大约为1200,而某个试验中超参数组合为(lr,bs,mem,cpus)==(0.02,64,1600,2),目标程序能够正常运行,假定每轮的反馈信息为五元组:<acc,loss,mem,cpus,end>,其中<acc,loss,mem,cpus>是目标向量,而end是bool值,end==True表示目标训练程序自然结束,end==False表示目标程序中的模型训练正在进行;此时试验运行包括以下步骤,流程如图7所示:
步骤301:执行者程序向系统资源分配模块申请1600MB内存和2个CPU核心,在(mem,cpus)==(1600,2)环境下运行目标程序,传入超参数(lr,bs)==(0.02,64);
步骤302:目标程序运行到下一个控制点,控制器即实际控制端待执行者端传来的命令,当是“继续”命令,则进行下一轮训练,总结本轮结果,向控制器即执行者端发送反馈信息,此时当是最后一轮,则发送<acc,loss,mem,cpus,True>,否则发送<acc,loss,mem,cpus,False>,当是“停止”命令,则发送最后一轮残留的反馈信息<acc,loss,mem,cpus,True>,结束运行;
步骤303:当试验调度器模块决定早停止当前试验,执行者程序调用控制器(执行者端)接口,向控制器实际控制端发送“停止”命令,将最后的反馈信息上报给试验调度器,进入步骤304,否则发送“继续”命令,以设定的时间间隔周期向对方询问当前轮的反馈信息,当得到了当前轮的反馈信息后,将反馈信息上报给试验调度器模块,目标程序再次进入步骤302的状态,当反馈信息中end==True,进入步骤304;
步骤304:释放系统资源,停止当前试验。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。
Claims (3)
1.一种深度学习训练中系统资源和模型超参协同优化的方法,其特征在于,包括以下步骤:
步骤1,设计一套针对深度学习训练中系统资源和模型超参协同优化问题的系统且系统包括以下7个模块:
(1)目标程序模块:目标程序模块为训练代码程序,在运行初始需要接收一组模型超参数来决定训练模型方法,所述模型超参数包括:学习率、批大小、期数,每一次迭代后,训练程序能选择性地进行验证并计算出模型在验证集中的准确率;
(2)系统资源分配模块:系统资源分配模块接收来自执行者程序的一组系统资源配置参数并为目标程序分配相应系统资源,当目标程序实际资源使用量超出分配量后,目标程序将强制退出;
(3)试验生成器模块:试验生成器模块根据实验配置中的超参数搜索范围通过使用用户指定的搜索算法选出超参数组合并封装成试验对象,不同搜索算法有不同的试验生成方式,网格或随机搜索算法在最初生成所有试验,贝叶斯搜索算法则需要先生成部分试验并待运行结束后依据试验反馈再生成接续试验;
(4)试验执行器模块:试验执行器模块用于根据试验生成器模块生成的试验对象信息来生成具体的执行者程序,执行者程序将来自试验执行器给出的超参数划分为模型超参数和系统资源配置参数并分别传给目标程序和系统资源分配模块,使目标程序在给定系统资源的环境中运行并通过控制器模块交互,然后试验执行器记录各执行者程序的反馈信息并发送给试验调度器并直至试验终止;
(5)试验调度器模块:试验调度器模块根据执行者程序的反馈来决定是否对试验早停止,具体使用的调度算法是可配置的,返回CONTINUE表示应继续训练,返回STOP表示早停止;
(6)控制器模块:控制器模块控制单个试验的训练过程且其行为包括暂停、继续、终止、获取反馈,控制器模块包括分别内嵌于目标程序模块与执行者模块中的两部分,控制器模块的每一部分都能通过心跳机制检测到另一部分的存活状态;
控制器实际控制端:内嵌于目标程序模块,能够控制目标程序的运行流程,中途反馈信息需要由控制器记录;
控制器执行者端:内嵌于执行者程序,通过调用相应接口向控制器传输命令或者获取反馈信息;
(7)决策器模块:待所有试验结束之后,决策器模块根据实验结果决定最佳超参数;
步骤2,一次调参实验,包括以下步骤:
步骤2.1:配置实验,即确定超参数搜索范围、最大试验数配置;
步骤2.2:当已完成的试验达到最大试验数,则进入步骤2.5,否则,试验生成器模块依据超参数搜索范围与超参数搜索算法生成多组试验对象,新生成的试验数量、已完成试验数量、正在运行的试验数量之和不能超过最大试验数;
步骤2.3:试验执行器模块收到试验生成器模块提供的试验对象,分别启动各执行者程序,各执行者程序也分别依据自身配置向系统资源分配模块申请系统资源并启动对应的目标程序,执行者程序通过控制器模块控制目标程序模型训练行为并获取反馈信息;
步骤2.4:试验调度器模块根据反馈信息,使用调度算法判断相应试验是否能够成为最佳试验,当不能够成为最佳试验,则对试验进行早停止,目标程序运行结束的试验则会被正常停止,转到步骤2.2;
步骤2.5:此时所有试验已经完成,决策器模块根据决策算法选出最佳试验并选出当前最优超参数组;
步骤3,设计针对多目标场景的试验调度算法:
步骤3.1,设计非支配层链表数据结构:
依据非支配层的全序关系设计了一种称为非支配层链表的数据结构并基于此数据结构设计了一种多目标试验调度算法:
首先需要介绍以下两个基本概念:
(1)帕累托理论:即当解A对应的所有目标不差于解B且至少有一个目标优于B时,称为解A支配解B,当A和B之间不存在支配关系时,称为A无差别于B,当解空间中找不到能够支配解A的解,则解A就是帕累托最优解,在此定义下的最优解是一个集合,被称为帕累托前沿;
(2)非支配层:即从一个有限解集中选出帕累托前沿,并分离出来,在剩余解中重复这个过程,直到没有解剩下,每次取出的解构成一个集合,被称为非支配层,某一层里至少存在一个解支配下一层中的某些解,且不存在解会被下一层中的任意解支配,这是一种全序关系;
以下称非支配层中存储的解向量为数据点,简称点;在非支配层链表中,每个链表结点维护了一个非支配层,结点中任意两点间不存在支配关系,从第二个存储解数据的链表结点开始,从任意结点中任取一点,此点必定被前一结点中至少一个点支配且不会被后一结点中的任意点支配;由此建立一种点之间的优劣比较方式,即位于非支配层链表中靠前结点的点优于位于靠后结点的点,维护非支配层链表的关键在于添加点后调整新点以及旧点的位置,维持住链表结点内以及结点间的关系;
步骤3.2,依据非支配层的一个性质设计非支配层链表的添加点操作:
非支配层的性质是将一个非支配点集S添加到一个被维护好的非支配层L,构成一个新的点集,再从点集中取出其帕累托前沿,作为一个新的非支配层Lnew,并将不属于帕累托前沿的点淘汰,这些淘汰的点构成的集合为Se,能够证明,Se也是一个非支配点集;
步骤3.3,为非支配层链表添加点包括以下步骤:
当需要添加一个新点,先将新点加入第一个结点并维护结点,淘汰掉一个非支配点集,将非支配点集加入下一结点并维护结点,又淘汰掉一个非支配点集,以此类推,直到不可淘汰任何点为止;
步骤3.4,给非支配层链表添加点并返回此刻点被添加到的层级索引;
步骤4,依据非支配层链表,设计针对多目标场景的试验调度算法,当用于描述时间的量为T,目标为metric,设定一个起始时间T0,表示开始进行淘汰的时间值,设定一个时间量Tmax,表示任务最多运行的时间,将[T0,Tmax]区间分为k+1个时间段,除去两端,中间各分界点的时间为T1、T2、…、Tk,建立k个空的非支配层链表P1、P2、…、Pk,其中Pi和Ti相对应(1≤i≤k),确定启动的最少试验数Nmin且只有当前已运行试验数超过这个值时则早停止,对于第K个试验运行到某轮时,时间量为TC,在[T0,Tmax]区间设置k个检查阶段,当TC首次超过Ti时,进入第i个检查阶段;当试验调度器在时间TC获得了K号试验的反馈结果,算法的运作过程是返回标志CONTINUE或者STOP时结束所有步骤,CONTINUE标志表示继续进行下一轮训练,STOP表示停止训练。
2.根据权利要求1所述的一种深度学习训练中系统资源和模型超参协同优化的方法,其特征在于,所述步骤4包括以下步骤:
步骤4.1,将metric结果和TC记录到results[trial_id]列表中;
步骤4.2,当TC≤T0,返回CONTINUE,训练继续,否则进入步骤4.3;
步骤4.3,当K≤Nmin,返回CONTINUE,否则进入步骤4.4;
步骤4.4,当处于第i个检查阶段且检查阶段未结束,进入步骤4.5,否则返回CONTINUE;
步骤4.6,统计第1层到第(j-1)层的点数M以及支配层链表的总点数Mall,当M/Mall≥0.5,则返回STOP,表示停止训练,否则返回CONTINUE。
3.根据权利要求1所述的一种深度学习训练中系统资源和模型超参协同优化的方法,其特征在于,所述步骤步3.4包括以下步骤:
步骤3.4.1,将一个量index置为空,量index用于记录最后目标点A被添加到的结点在当前链表中的层级,设定从0开始计数,非支配层链表是一种动态的数据结构且其中的点当前所在位置不一定和以后所在位置相同;
步骤3.4.2,在非支配层链表中加入一点A,设置点独自构成非支配点集S0;
步骤3.4.3,非支配层Li中加入一个非支配点集Si,淘汰出另一个非支配点集Si+1,加入下一层Li+1,当Li不存在,则在操作之前创建对应结点加入链表尾部;
步骤3.4.5,当被淘汰的Si+1为空,则停止运行,返回index,否则,转到步骤3.4.3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110111227.3A CN112836796B (zh) | 2021-01-27 | 2021-01-27 | 一种深度学习训练中系统资源和模型超参协同优化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110111227.3A CN112836796B (zh) | 2021-01-27 | 2021-01-27 | 一种深度学习训练中系统资源和模型超参协同优化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112836796A CN112836796A (zh) | 2021-05-25 |
CN112836796B true CN112836796B (zh) | 2022-07-01 |
Family
ID=75931880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110111227.3A Active CN112836796B (zh) | 2021-01-27 | 2021-01-27 | 一种深度学习训练中系统资源和模型超参协同优化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112836796B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115374910B (zh) * | 2022-08-25 | 2024-06-28 | 上海人工智能创新中心 | 一种更新深度学习训练超参数的方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103929757A (zh) * | 2013-01-16 | 2014-07-16 | 中国移动通信集团内蒙古有限公司 | 一种三网协同优化的方法及装置 |
GB202002157D0 (en) * | 2020-02-17 | 2020-04-01 | Facesoft Ltd | Method of training an image classification model |
CN111325284A (zh) * | 2020-03-09 | 2020-06-23 | 武汉大学 | 一种基于多目标动态分布自适应学习方法及装置 |
CN111444009A (zh) * | 2019-11-15 | 2020-07-24 | 北京邮电大学 | 一种基于深度强化学习的资源分配方法及装置 |
CN111752708A (zh) * | 2020-06-16 | 2020-10-09 | 杭州电子科技大学 | 一种基于深度学习的存储系统自适应参数调优方法 |
CN111858072A (zh) * | 2020-08-06 | 2020-10-30 | 华中科技大学 | 一种大规模分布式深度学习的资源管理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200279187A1 (en) * | 2019-02-28 | 2020-09-03 | Cisco Technology, Inc. | Model and infrastructure hyper-parameter tuning system and method |
-
2021
- 2021-01-27 CN CN202110111227.3A patent/CN112836796B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103929757A (zh) * | 2013-01-16 | 2014-07-16 | 中国移动通信集团内蒙古有限公司 | 一种三网协同优化的方法及装置 |
CN111444009A (zh) * | 2019-11-15 | 2020-07-24 | 北京邮电大学 | 一种基于深度强化学习的资源分配方法及装置 |
GB202002157D0 (en) * | 2020-02-17 | 2020-04-01 | Facesoft Ltd | Method of training an image classification model |
CN111325284A (zh) * | 2020-03-09 | 2020-06-23 | 武汉大学 | 一种基于多目标动态分布自适应学习方法及装置 |
CN111752708A (zh) * | 2020-06-16 | 2020-10-09 | 杭州电子科技大学 | 一种基于深度学习的存储系统自适应参数调优方法 |
CN111858072A (zh) * | 2020-08-06 | 2020-10-30 | 华中科技大学 | 一种大规模分布式深度学习的资源管理方法及系统 |
Non-Patent Citations (2)
Title |
---|
Work-in-Progress: Maximizing Model Accuracy in Real-time and Iterative Machine Learning;Rui Han,et al.;《2017 IEEE Real-Time Systems Symposium (RTSS)》;20180201;全文 * |
基于超限学习机与随机响应面方法的深度学习超参数优化算法;孙永泽等;《高技术通讯》;20191215(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112836796A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Son et al. | Multiheuristic approach for resource leveling problem in construction engineering: Hybrid approach | |
CN108321795B (zh) | 基于深度确定性策略算法的发电机组启停配置方法及系统 | |
CN109376869A (zh) | 一种基于异步贝叶斯优化的机器学习超参优化系统及方法 | |
CN110222938B (zh) | 一种梯级水电站群短期调峰调度协同优化方法和系统 | |
CN113515884A (zh) | 分散式电动汽车实时优化调度方法、系统、终端及介质 | |
CN111160755B (zh) | 一种基于dqn的飞机大修车间实时调度方法 | |
CN112836796B (zh) | 一种深度学习训练中系统资源和模型超参协同优化的方法 | |
CN113902116A (zh) | 一种面向深度学习模型推理批处理优化方法与系统 | |
CN117591285A (zh) | 一种算力资源调度分配系统及方法 | |
CN116663819A (zh) | 改进种群初始化策略的机器人任务调度方法及相关装置 | |
CN113592064A (zh) | 环抛机工艺参数预测方法、系统、应用、终端及介质 | |
CN117149410A (zh) | 一种基于ai智能模型训练调度指挥监控系统 | |
WO2023070274A1 (en) | A method and an apparatus for continual learning | |
CN113394807B (zh) | 清洁能源互补基地装机配比的优化方法和装置 | |
CN115441469A (zh) | 一种考虑光储荷运行模态切换的配电网调频方法及系统 | |
CN113157344B (zh) | 移动边缘计算环境下基于drl的能耗感知任务卸载方法 | |
CN109726797B (zh) | 数据处理方法、装置、计算机系统及存储介质 | |
CN114844058A (zh) | 一种海上风电储能参与调峰辅助服务的调度方法 | |
CN110647381B (zh) | 一种虚拟机资源均衡和部署优化方法 | |
CN110502582A (zh) | 一种分布式数据库的在线扩容方法 | |
CN118494258B (zh) | 一种基于光谱优化算法的充电策略优化方法、装置和设备 | |
CN117408832B (zh) | 应用于环保胶生产控制系统的异常分析方法及系统 | |
CN115796294B (zh) | 一种面向量子计算的大规模数据调用系统 | |
CN118494259B (zh) | 基于斑马优化算法的充电站功率优化方法、装置和设备 | |
NL2029431B1 (en) | Cloud software service resource allocation method based on qos model self-correction |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |