一种基于NDN的P2P分布式机器学习训练系统数据传输方法技术方案

技术编号:27876950 阅读:15 留言:0更新日期:2021-03-31 00:55
本发明专利技术涉及一种基于NDN的P2P分布式机器学习训练系统数据传输方法,属于分布式机器学习领域。本发明专利技术方法,将NDN中基于PIT的请求聚合机制、基于CS的网内缓存机制以及“一对多”的内容分发机制应用于P2P架构下的分布式机器学习中,在同步训练与异步训练中,能够满足减小传输冗余数据的需求。本发明专利技术方法减小了分布式机器学习训练系统中的传输冗余,从而减小了传输时延,提高了网络传输效率。同时,可以支持异步机器学习。在传输失败进行重传时,可以通过网内缓存实现就近获取,减少了对服务器端链路的占用,降低了传输延迟。

【技术实现步骤摘要】
一种基于NDN的P2P分布式机器学习训练系统数据传输方法
本专利技术涉及一种分布式机器学习训练系统中的数据传输方法,尤其涉及一种基于NDN(NamedDataNetworking,命名数据网络)的P2P(PeertoPeer,对等网络)分布式机器学习训练数据传输方法,属于分布式机器学习领域。
技术介绍
分布式机器学习训练系统,利用多个图形处理器(GraphicsProcessingUnit,GPU)进行模型并行训练,从而加速模型训练的速度。机器学习训练的目标是尽可能让模型预测出的结果与实际的结果接近。在进行训练时,预测结果与实际结果的差距通过以模型参数为自变量的损失函数表示。在分布式机器学习训练系统中,训练样本被分为多份,每一份样本由训练系统中的一个GPU所持有,训练会进行多轮直至训练出的模型的总体损失小于一定值。每一轮训练包含三个步骤:首先,训练系统中的每一个GPU使用其持有的样本中的部分样本完成一次训练,获得该轮对应的参数梯度;然后,GPU之间交换各自计算所得的参数梯度,并对训练模型进行更新;最后,GPU使用更新后的模型进行下一轮训练。分布式机器学习训练包括同步训练和异步训练两种:在同步训练中,每个GPU收到该轮所有GPU计算的参数梯度后再进行模型更新与下一轮计算;在异步训练中,每个GPU完成一轮训练后立即利用该轮训练开始时收到的参数梯度进行模型更新,并进行下一轮计算。上述分布式训练过程中需要进行训练参数梯度的数据交互。目前,在采用P2P(PeertoPeer,对等网络)架构进行数据交互的分布式机器学习训练系统中,若每个GPU与其它所有GPU分别建立连接来参数梯度,则每个同样内容的参数梯度需要重复传输N-1次(N为GPU的个数)以传送给其余所有GPU,这种重复的数据传输过程存在大量冗余。为了减小参数梯度的重复传输,目前常用的参数梯度的传输方法为环形全局规约法(RingAllReduce),该方法下所有GPU计算完成后,在GPU间环形传输分块化的参数梯度从而将最新的参数梯度传递给所有GPU。该方法大幅减少了传输冗余,参数梯度的传输次数和GPU的数量呈线性关系。但是,目前的环形全局规约方法存在着在所有GPU计算完成后才能进行参数梯度传递的限制,即其只能在同步训练系统中使用。
技术实现思路
本专利技术的目的是为了解决在P2P架构下的分布式机器学习训练系统存在的参数梯度冗余传输的技术问题,创造性地提出一种基于NDN的P2P分布式机器学习训练系统数据传输方法。本专利技术的创新点在于:利用NDN的流量聚合特性,在减少每轮参数梯度冗余传输次数的同时满足同步训练与异步训练的传输需求。NDN通过两种包结构与三种表结构实现数据传输、请求聚合与网内缓存。其中,两种包结构分别为兴趣包与数据包,三种表结构分别为转发信息表(ForwardingInformationBase,FIB)、待定请求表(PendingInterestTable,PIT)和内容存储表(ContentStore,CS)。NDN通过用户终端发送兴趣包驱动内容发布者回复数据包的方式进行数据通信。将NDN数据传输方式应用到分布式模型训练中时,以GPU的参数梯度作为名称,某个GPU可以向其他GPU发送申请名称为“参数梯度”的兴趣包,当路由器收到兴趣包时,若其CS中储存有同名的参数梯度数据包,路由器会将该数据包直接回复给用户;若CS中没有被请求的参数梯度数据包,但PIT中已经记录了相同的请求,则路由器聚合相同请求,在PIT表项中添加新兴趣包的输入接口,保证接收的参数梯度数据包能按照兴趣包转发的反向路径,以多播的方式回复多个用户终端;若收到兴趣包时CS和PIT均无法提供数据信息,那么路由器会以兴趣包名称与兴趣包输入接口创建一个PIT表项,并根据FIB进行兴趣包的转发,若兴趣包被转发到了发布数据的GPU处,发布数据的GPU根据兴趣包的名称提供相应的参数梯度数据包转发到对应兴趣包的输入接口。将NDN中基于PIT的请求聚合机制、基于CS的网内缓存机制以及“一对多”的内容分发机制应用于P2P架构下的分布式机器学习中,在同步训练与异步训练中,能够满足减小传输冗余数据的需求。本专利技术采用以下技术方案实现。一种基于NDN的P2P分布式机器学习训练系统数据传输方法,包括以下步骤:步骤1:由网络中的路由器建立持久PIT表结构。所述PIT指PendingInterestTable,待定请求表。其中,持久PIT表是以数据名称为键、以上游接口为值的表。步骤2:每个GPU发送分发兴趣包及其余GPU回复分发确认数据包。具体如下:步骤2.1:每个GPU为其余每个GPU构造一个以“/*插入*/其余GPU名称/训练名称”为名称的分发兴趣包,以便从其余GPU获取其计算得到的参数梯度及损失的推送。步骤2.2:GPU之间的路由器接收到分发兴趣包,识别名称前缀“/*插入*/”,提取出名称中的“/其余GPU名称/训练名称”,检查其持久PIT表中是否存在以“/其余GPU名称/训练名称”为键的表项,若存在,执行步骤2.2.1,否则,执行步骤2.2.2。步骤2.2.1:路由器在以“/其余GPU名称/训练名称”为键的持久PIT表项的对应值中添加“分发兴趣包的输入接口”。步骤2.2.2:路由器在其持久PIT中添加以“/其余GPU名称/训练名称”为键,以“分发兴趣包的输入接口”为值的表项。步骤2.3:当每个“其余GPU”收到分发兴趣包时,以“/*分发*/该‘其余GPU’名称/训练名称”为名称,构建并发送内容为“空”的分发确认数据包,以通知发送分发兴趣包的GPU其发送的分发兴趣包已被接收。步骤2.4:GPU之间的路由器接收到分发确认数据包,识别名称前缀“/*分发*/”,提取出数据包中的“/其余GPU名称/训练名称”,与持久PIT表中的同名表项匹配,并根据表项中记录的接口将分发确认数据包转发至所有发送了同名分发兴趣包的GPU。步骤3:每个GPU发送分发数据包并选择性启动试探计时器。具体如下:步骤3.1:每个GPU在完成计算时,以“计算得到的参数梯度与损失函数的值”为内容,以“/*分发*/本GPU名称/训练名称/参数版本”为名称构建并发送分发数据包以将参数梯度发送给其余所有GPU。步骤3.2:GPU之间的路由器接收到分发数据包,识别名称前缀“/*分发*/”,提取出数据包中的“/‘本GPU’名称/训练名称/参数版本”,与持久PIT表项“/‘本GPU’名称/训练名称”匹配,并根据表项中记录的接口将分发数据包转发至发送了同名分发兴趣包的GPU。步骤3.3:若本次训练为同步训练,执行步骤3.3.1,否则,执行步骤3.4。步骤3.3.1:当GPU发送分发数据包后,记录发送的分发数据包名称中的“参数版本”,并根据以往“发送分发数据包至收到其余每个GPU发送的分发数据包的时间差”的经验,为其余每个GPU设置一个试探计时器Ti的时间并开始计时,当试探计时器到期时,执行步骤5。其中,n为本文档来自技高网
...

【技术保护点】
1.基于NDN的P2P分布式机器学习训练系统数据传输方法,其特征在于,包括以下步骤:/n步骤1:由网络中的路由器建立持久PIT表结构;/nPIT指Pending Interest Table,待定请求表;/n所述持久PIT表是以数据名称为键、以上游接口为值的表;/n步骤2:每个GPU发送分发兴趣包及其余GPU回复分发确认数据包;/n步骤2.1:每个GPU为其余每个GPU构造一个以“/*插入*/其余GPU名称/训练名称”为名称的分发兴趣包,以便从其余GPU获取其计算得到的参数梯度及损失的推送;/n步骤2.2:GPU之间的路由器接收到分发兴趣包,识别名称前缀“/*插入*/”,提取出名称中的“/其余GPU名称/训练名称”,检查其持久PIT表中是否存在以“/其余GPU名称/训练名称”为键的表项,若存在,执行步骤2.2.1,否则,执行步骤2.2.2;/n步骤2.2.1:路由器在以“/其余GPU名称/训练名称”为键的持久PIT表项的对应值中添加“分发兴趣包的输入接口”;/n步骤2.2.2:路由器在其持久PIT中添加以“/其余GPU名称/训练名称”为键,以“分发兴趣包的输入接口”为值的表项;/n步骤2.3:当每个“其余GPU”收到分发兴趣包时,以“/*分发*/该‘其余GPU’名称/训练名称”为名称,构建并发送内容为“空”的分发确认数据包,以通知发送分发兴趣包的GPU其发送的分发兴趣包已被接收;/n步骤2.4:GPU之间的路由器接收到分发确认数据包,识别名称前缀“/*分发*/”,提取出数据包中的“/其余GPU名称/训练名称”,与持久PIT表中的同名表项匹配,并根据表项中记录的接口将分发确认数据包转发至所有发送了同名分发兴趣包的GPU;/n步骤3:每个GPU发送分发数据包并选择性启动试探计时器;/n步骤3.1:每个GPU在完成计算时,以“计算得到的参数梯度与损失函数的值”为内容,以“/*分发*/本GPU名称/训练名称/参数版本”为名称构建并发送分发数据包以将参数梯度发送给其余所有GPU;/n步骤3.2:GPU之间的路由器接收到分发数据包,识别名称前缀“/*分发*/”,提取出数据包中的“/‘本GPU’名称/训练名称/参数版本”,与持久PIT表项“/‘本GPU’名称/训练名称”匹配,并根据表项中记录的接口将分发数据包转发至发送了同名分发兴趣包的GPU;/n步骤3.3:若本次训练为同步训练,执行步骤3.3.1,否则,执行步骤3.4;/n步骤3.3.1:当GPU发送分发数据包后,记录发送的分发数据包名称中的“参数版本”,并根据以往“发送分发数据包至收到其余每个GPU发送的分发数据包的时间差”的经验,为其余每个GPU设置一个试探计时器Ti的时间并开始计时,当试探计时器到期时,执行步骤5;/n其中,n为GPU的总数,1≤i≤n-1;试探计时器T1至Tn用于在分发数据包丢包时允许GPU主动获取其他GPU更新后的参数;/n步骤3.4:收到分发数据包的GPU,若设置了试探计时器,则将针对“发送了分发数据包的GPU”的试探计时器销毁;/n步骤3.5:重复步骤2和3,直至GPU计算出的总体损失小于一定值;其中,总体损失的值由所有GPU计算得到的损失共同求得;/n步骤4:每个GPU发送结束兴趣包及其余GPU回复结束数据包;/n步骤4.1:在GPU计算得到的总体损失的值小于训练所要求的值时,GPU为其余每个GPU构造一个以“/*删除*/其余GPU名称/训练名称”为名称的结束兴趣包,以便删除训练中使用的持久PIT表项;/n步骤4.2:GPU之间的路由器删除持久PIT表中的表项,并在PIT中添加同名表项;具体如下:/n步骤4.2.1:GPU之间的路由器接收到结束兴趣包,识别名称前缀“/*删除*/”,提取出名称中的“‘其余GPU’名称/训练名称”;/n步骤4.2.2:路由器检查持久PIT中是否有以“/‘其余GPU’名称/训练名称”为键的表项,如果有,则路由器删除以“/‘其余GPU’名称/训练名称”为键的表项,否则,路由器检查PIT中是否有以“/‘其余GPU’名称/训练名称”为键的表项,如果有,则路由器在以“/‘其余GPU’名称/训练名称”为键的PIT表项中添加该兴趣包的输入接口,否则,路由器在其PIT中添加以“/‘其余GPU’名称/训练名称”为键,以兴趣包的输入接口为值的表项;/n步骤4.3:当“其余CPU”在收到结束兴趣包时,以“/本‘其余CPU’名称/训练名称”为名称构建并发送内容为“空”的结束确认数据包,以通知发送结束兴趣包的GPU其与本GPU之间用于本次训练的持久PIT表项已被清除,结束本步骤;/n步骤5:当试探计时器到期时GPU发送试探兴趣包;/n步骤5.1:当试探计时器Ti到期时,GPU以“/训练名称/试探计时器Ti对应的GPU的名称/最新发送的分发数据包的参数版...

【技术特征摘要】
1.基于NDN的P2P分布式机器学习训练系统数据传输方法,其特征在于,包括以下步骤:
步骤1:由网络中的路由器建立持久PIT表结构;
PIT指PendingInterestTable,待定请求表;
所述持久PIT表是以数据名称为键、以上游接口为值的表;
步骤2:每个GPU发送分发兴趣包及其余GPU回复分发确认数据包;
步骤2.1:每个GPU为其余每个GPU构造一个以“/*插入*/其余GPU名称/训练名称”为名称的分发兴趣包,以便从其余GPU获取其计算得到的参数梯度及损失的推送;
步骤2.2:GPU之间的路由器接收到分发兴趣包,识别名称前缀“/*插入*/”,提取出名称中的“/其余GPU名称/训练名称”,检查其持久PIT表中是否存在以“/其余GPU名称/训练名称”为键的表项,若存在,执行步骤2.2.1,否则,执行步骤2.2.2;
步骤2.2.1:路由器在以“/其余GPU名称/训练名称”为键的持久PIT表项的对应值中添加“分发兴趣包的输入接口”;
步骤2.2.2:路由器在其持久PIT中添加以“/其余GPU名称/训练名称”为键,以“分发兴趣包的输入接口”为值的表项;
步骤2.3:当每个“其余GPU”收到分发兴趣包时,以“/*分发*/该‘其余GPU’名称/训练名称”为名称,构建并发送内容为“空”的分发确认数据包,以通知发送分发兴趣包的GPU其发送的分发兴趣包已被接收;
步骤2.4:GPU之间的路由器接收到分发确认数据包,识别名称前缀“/*分发*/”,提取出数据包中的“/其余GPU名称/训练名称”,与持久PIT表中的同名表项匹配,并根据表项中记录的接口将分发确认数据包转发至所有发送了同名分发兴趣包的GPU;
步骤3:每个GPU发送分发数据包并选择性启动试探计时器;
步骤3.1:每个GPU在完成计算时,以“计算得到的参数梯度与损失函数的值”为内容,以“/*分发*/本GPU名称/训练名称/参数版本”为名称构建并发送分发数据包以将参数梯度发送给其余所有GPU;
步骤3.2:GPU之间的路由器接收到分发数据包,识别名称前缀“/*分发*/”,提取出数据包中的“/‘本GPU’名称/训练名称/参数版本”,与持久PIT表项“/‘本GPU’名称/训练名称”匹配,并根据表项中记录的接口将分发数据包转发至发送了同名分发兴趣包的GPU;
步骤3.3:若本次训练为同步训练,执行步骤3.3.1,否则,执行步骤3.4;
步骤3.3.1:当GPU发送分发数据包后,记录发送的分发数据包名称中的“参数版本”,并根据以往“发送分发数据包至收到其余每个GPU发送的分发数据包的时间差”的经验,为其余每个GPU设置一个试探计时器Ti的时间并开始计时,当试探计时器到期时,执行步骤5;
其中,n为GPU的总数,1≤i≤n-1;试探计时器T1至Tn用于在分发数据包丢包时允许GPU主动获取其他GPU更新后的参数;
步骤3....

【专利技术属性】
技术研发人员:于珊平欧阳巧琳胡晗安建平
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1