一种适用于分布式机器学习的参数同步优化方法及其系统的制作方法_2

文档序号:8395772阅读:来源:国知局
nterval,若等于则转子步骤(2.5.2),否则结束子步骤(2.5),并转子步骤(2.6);
[0034](2.5.2)工作节点向参数服务器节点发送资源请求;如果服务器回复许可,则转子步骤(2.5.3),否则转子步骤(2.5.4);
[0035](2.5.3)工作节点向服务器推送子步骤(2.4)中得到的Σ Δ Θ,等待服务器更新参数完毕,将accrued_push_interval和Σ Δ Θ清零,转子步骤(2.5.5);
[0036](2.5.4)将当前 pushCounter 记录时间累加到 accrued_push_interval,若accrued_push_interval 多 max_interval 或 remain_batch_size = =0,贝丨J 车专子步骤(2.5.3),否则转子步骤(2.5.5);
[0037](2.5.5)重新设置push_interval,push_interval由工作节点随机生成,其值介于 I 到 max_interval-accrued_push_interval 和 remain_batch_size 的车交小值之间(包含边界值),将pushCounter清零,结束子步骤(2.5),并转子步骤(2.6);
[0038](2.6)拉取参数子步骤:根据参数同步时间间隔的控制,拉取参数,具体包括下述子步骤:
[0039](2.6.1)判断pullCounter记录的时间是否等于pull_interval,若是则转子步骤(2.6.2),否则结束子步骤(2.6),并转子步骤(2.1);
[0040](2.6.2)工作节点向参数服务器节点发送资源请求;如果服务器回复许可,则转子步骤(2.6.3),否则转子步骤(2.6.4);
[0041](2.6.3)工作节点向参数服务器请求拉取最新参数并等待参数服务器返回该值Θ ;将本地参数更新为Θ ;将accrued_pull_interval清零,转子步骤(2.6.5);
[0042](2.6.4)将当前 pullCounter 记录的时间累加到 accrued_pull_interval,若accrued_pull_interval ^ max_interval 或 remain_batch_size = = 0,贝丨J 车专子步骤(2.6.3);否则转子步骤(2.6.5);
[0043](2.6.5)重新设置pull_interval,pull_interval由工作节点随机生成,其值介于 I 到 max_interval-accrued_pull_interval 和 remain_batch_size 的车交小值之间(包含边界值),将pullCounter清零;结束子步骤(2.6),并转子步骤(2.1)。
[0044]上述子步骤(1.3)和(2.6.3)中所述的拉取服务器参数过程,具体包括:
[0045](1.3.1)工作节点向服务器端发送拉取参数请求,等待服务器响应;
[0046](1.3.2)服务器端接收来自某工作节点的拉取参数请求,复制服务器中存储的当前模型参数Θ,并返回给该工作节点;
[0047](1.3.3)工作节点接收服务器端返回的模型参数值Θ,拉取服务器参数完成。
[0048]上述子步骤(2.5.3)中所述的推送当前未同步参数梯度值过程,具体包括:
[0049](2.5.3.1)工作节点向服务器端推送当前未同步参数梯度值Σ Δ Θ,等待服务器响应;
[0050](2.5.3.2)服务器端接收来自某工作节点的推送请求,利用接收到的参数梯度值Δ Θ (即工作节点端的当前未同步参数梯度值Σ Λ Θ)更新本地模型参数Θ,并返回成功信号给该工作节点;
[0051](2.5.3.3)工作节点接收服务器端返回的成功信号,推送当前未同步参数梯度值完成。
[0052]上述子步骤(2.5.2)和(2.6.2)所述的发送资源请求过程,具体包括:
[0053](2.5.2.1)工作节点向服务器端发送资源请求信号,等待服务器响应;
[0054](2.5.2.2)服务器端接收来自某工作节点的资源请求信号,服务器根据当前资源占用情况,决定是否分配服务器资源;若服务器资源当前占用较低,则返回资源可用信号给该工作节点;否则返回资源不可用;
[0055](2.5.2.3)工作节点接收服务器端返回的资源可用与否信号,发送资源请求完成。
[0056]通过上述方法,本发明实现了参数同步时间间隔的动态设置,可以根据服务器资源使用情况,调度参数同步行为,从而避免了在同一时刻参数同步请求突发所造成的排队时延情况,解除了分布式机器学习训练中的参数同步瓶颈;本发明利用设置同步时间间隔上限值来控制同步时间间隔,保证了同步时间间隔不会因为过长而降低最终训练准确度;同现有分布式机器学习技术相比,本发明有效消除了参数同步瓶颈,提高了训练速度,并且保证了训练准确率。
【附图说明】
[0057]图1是本发明参数同步优化系统的结构框图;
[0058]图2是本发明参数同步优化方法的整体工作流程图;
[0059]图3是本发明参数同步优化方法的系统初始化子工作流程图;
[0060]图4是本发明参数同步优化方法的并行训练子工作流程图;
[0061]图5是本发明参数同步优化方法的推送参数梯度子工作流程图;
[0062]图6是本发明参数同步优化方法的拉取参数子工作流程图。
【具体实施方式】
[0063]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0064]图1是本发明参数同步优化系统的结构框图。如图1所示,本发明的参数同步优化系统包括位于参数服务器端的资源监控和分配模块、参数维护模块,位于各工作节点端的服务器资源请求模块、参数同步时间间隔控制模块、未同步时间累计模块、参数计算模块和参数同步模块。其中工作节点端,未同步时间累计模块与工作节点内其他各模块相连,另外服务器资源请求模块和参数计算模块还各自与参数同步时间间隔控制模块和参数同步模块相连,同时服务器端资源监控和分配模块与工作节点端服务器资源请求模块相连,月艮务器端参数维护模块与工作节点端参数同步模块相连。
[0065]资源监控和分配模块负责监控参数服务器的资源使用情况,在接收到来自工作节点的资源请求后,分析当前资源利用情况,若资源可用则分配服务器资源给相应工作节点的服务器资源请求模块,否则向该作节点回复资源不可用;其中,服务器资源状态具体而言是指影响参数同步流程的因素集合,如服务器传输带宽占用情况、内存使用情况、CPU使用率等;
[0066]参数维护模块负责在服务器端维护算法模型参数,响应来自工作节点的参数更新请求,若请求为更新服务器参数则根据得到的参数梯度计算并更新当前参数,若请求为获得服务器参数则参数服务器端的参数维护模块拷贝当前服务器参数并返回给相应工作节点的参数同步模块;
[0067]服务器资源请求模块在收到未同步时间累计模块的“达到参数同步时间点”通知时,向资源监控和分配模块请求分配资源,若得到许可则交付参数同步模块进行参数同步,否则将任务交给同步时间间隔模块;
[0068]参数同步时间间隔模块负责在接收到参数同步模块的通知或接收到来自服务器资源请求模块的通知时,设置合理的参数同步间隔时间,降低对服务器资源的竞争以减轻瓶颈;
[0069]未同步时间累计模块负责记录上一次设置参数同步间隔到现在为止的时间,一旦该时间达到参数同步时间间隔控制模块规定的参数同步时间间隔后,则通知服务器资源请求模块申请同步资源;在资源申请失败时,如果当前累计未同步时间达到同步时间间隔上限值时,则通知参数同步模块进行强制同步,其中所述当前累计未同步时间为上一次成功同步后到当前的时间。
[0070]参数计算模块负责根据训练数据在工作节点进行本地参数计算;
[0071]参数同步模块负责在获得服务器资源许可之后或者接收到未同步时间累计模块的强制同步命令后,和服务器之间进行参数同步。
[0072]上述中的未同步时间和同步时间间隔的时间计量单位为并行随机梯度下降算法的一个完整训练步,即每经过一个完整的训练步,时间计量加1,同步时间间隔即是“经过多少个完整的训练步,再开始进行参数同步”。具体实施时,由于“计算并得到新的参数梯度”和“更新参数”在一个完整训练步中出现且仅出现一次,故可以在“计算并得到新的参数梯度”或“更新参数”完成后对时间计量加I来实现计时。
[0073]上述中的同步时间间隔上限值为系统初始化步骤中根据用户定义所设置的常量值,其目的是避免因两次参数同步动作之间的时间间隔过长,而导致因服务器和各个工作节点长时间不能得到对方最新的参数信息而损失部分更新数据,最终使得训练准确率下降。
[0074]在本发明的参数同步优化系统中,对服务器资源的监控可同时监控传输带宽占用比、内存占用比、CPU使用率等是否达到某一额定值来判断;也可简化只采用以上几种条件中的一种来判断,如针对传输带宽占用情况判断,可以直接监控到达服务器端的请求包所组成的队列长度,如果队列长度长于某额定值(简单可设置为1,即仅允许I个包进入服务器进行等待),则认为服务器资源此时已被占用,不再分配资源。
[0075]本实施例中采用用于训练手写数字识别MNIST数据集的机器学习预训练算法一一AE (Autoencoder,自编码机)算法,该算法采用自编码机模型结构,实际梯度更新计算时采用并行随机梯度下降算法,本实施例将本发明提供的参数同步优化方法应用到AE算法中的并行随机梯度下降算法中,分布式结构采用I个服务器节点作为参数服务器维护参数矩阵数据,10个服务器节点作为工作节点进行并行训练。
[0076]本实施例的具体数据说明:MNIST数据集提供60000组输入数据,本实施例中取其中的40组数据用于训练,每组为一个由28*28像素点灰度值(每个像素点灰度值由0-1之间的双精度浮点数表示)组成的图片
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1