一种基于矩阵表示的分布式模型训练优化方法与流程

文档序号:22626806发布日期:2020-10-23 19:35阅读:148来源:国知局
一种基于矩阵表示的分布式模型训练优化方法与流程

本发明涉及深度学习领域,尤其涉及一种基于矩阵表示的分布式模型训练优化方法。



背景技术:

深度学习是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。至今深度学习模型在计算机视觉、语音识别、自然语言处理、音频识别等领域取得了广泛的应用。用于计算机视觉的深度学习模型由一系列内部连接的深度学习模型网络层组成,输入数据经由深度学习模型网络层处理后得到输出。深度学习模型的网络层数目通常高达几十层,参数量更是达到百万级,因此训练深度学习模型的是计算密集型任务。

现代数据智能挖掘技术在图像识别、语音识别、自然语言处理等领域表现突出,深度神经网络中通常包含大量可训练的参数,因此训练出一个性能良好的神经网络需要耗费大量时间。另一方面,为了能从海量的数据中学习到更有价值的特征,深度神经网络的层次正不断加深,但是进一步增加了训练的耗时。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供基于矩阵表示的分布式模型训练优化方法,基于卷积神经网络典型的现代数据智能挖掘技术,将卷积计算、池化处理以及梯度计算过程抽象为矩阵表示,采用矩阵计算的方法优化分布式模型训练,减少模型训练的耗时。

本发明的目的是通过以下技术方案来实现的:

一种基于矩阵表示的分布式模型训练优化方法,方法包括以下步骤:

s1,节点配置,在子节点中搭建神经网络,通过前向传播获取参数,随机梯度下降算法更新参数,将节点搭建成完全二叉树集群的形式;

s2,消息上传,在不同的主机上搭建通讯协议,叶子节点将消息通过消息队列并行传输到根节点,并使用算法对神经网络中所有节点进行节点验证;

s3,模型上传,将模型文件分割成等份,并标注索引,开启线程采用并行io流的方式,通过模型队列将模型文件上传到根节点;

s4,安全检测,根节点首先对消息队列进行安全检查,确认安全后,从模型队列中取出模型文件,按照分割后的模型的索引号组建成完整的模型,将这个模型作为当前神经网络的隐含层进行迁移学习的训练。

具体的,所述步骤s1中节点配置过程具体包括:

s101,设置一个管理者manger,在创建n个容器部署在不同的机器上面,将容器记为节点node,将数据集平分为n份,设置节点控制表;

s102,对数据集进行排序,并将排好序的前n个数据集子集分别送入node中,设置一个周期的时间片t;

s103,在子节点中搭建神经网络,通过前向传播取参数,并利用随机梯度下降算法更新参数,将节点搭建成完全二叉树的形式,每个树节点采用相同数据结构。

具体的,所述步骤s2中消息上传具体包括:

s201,每个周期结束后,从叶子节点开始,以异步并行的方式向根节点报备消息;

s202,非叶子节点将收到的信息结合自身状态码、公钥和消息认证码,依次入队到消息队列中,并将消息上传到根据节点。

具体的,所述步骤s3中模型上传过程具体包括:

s301,每两个周期结束后,子节点保存一次模型到模型队列中,队列元素后接有模型文件情况说明表,标注节点id,loss值等信息;

s302,进行模型周期性上传时,将模型文件分割成等份,并对每份模型文件标注索引;

s303,开启一定量的线程,每个线程为其分配的任务保存一个双向链式队列,将分割好的模型文件平均分配到双向链式队列中,采用并行io流的方式上传模型文件到根节点;

s304,线程每完成一个模型文件上传任务,从模型队列的队列头取出下一个任务开始执行,当某个线程完成其分配的任务时,从消息队列的队尾上取出一个任务执行,直至所有任务都执行完毕,所有队列清空。

具体的,所述步骤s4中消息队列的安全检测过程具体包括:

s401,根节点接收到消息队列上传的消息后,通过签名聚合和密钥聚合的算法,对子节点进行安全检测;

s402,确认子节点安全后,根节点接收消息队列并取出自身队列的队尾元素,结合收到的消息队列组成新的队列上传到父节点,同时向父节点报备;

s403,父节点按照后续递归对遍历整个集群,找到最后一个节点,将其消息队列中的元素出队,查看状态码;

s404,根据状态码的状态,查询该状态码id,找到主机重启该容器,取出模型队列队尾存储的模型,待该主机重启容器完后,用取出的模型进行迁移学习继续训练,并清空队列元素。

具体的,所述状态码的状态包括因网络延迟等不可靠因素而阻塞、文件传输的消息等待和正在运行三种状态。

本发明的有益效果:本发明将卷积计算、池化处理以及梯度计算过程抽象为矩阵表示,采用矩阵计算的方法优化分布式模型训练,可大大减少模型训练的耗时,进一步提高模型的训练效率。

附图说明

图1是本发明的方法流程图。

图2是本发明的完全二叉树集群架构图。

图3是本发明的完全二叉树数据结构图。

图4是本发明的文件分割与并行io流的设计模式图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。

本实施例中,如图1所示,一种基于矩阵表示的分布式模型训练优化方法,方法主要包括以下步骤:

步骤1,节点配置,在子节点中搭建神经网络,通过前向传播获取参数,随机梯度下降算法更新参数,将节点搭建成完全二叉树集群的形式。

步骤2,消息上传,在不同的主机上搭建通讯协议,叶子节点将消息通过消息队列并行传输到根节点,并使用算法对神经网络中所有节点进行节点验证。

步骤3,模型上传,将模型文件分割成等份,并标注索引,开启线程采用并行io流的方式,通过模型队列将模型文件上传到根节点。

步骤4,安全检测,根节点首先对消息队列进行安全检查,确认安全后,从模型队列中取出模型文件,按照分割后的模型的索引号组建成完整的模型,将这个模型作为当前神经网络的隐含层进行迁移学习的训练。

其中,如图2所示,在节点配置过程中,设置一个管理者manger,再创建n个容器部署在不同的机器上面,将容器记为节点node,平分数据集n份,设置节点控制表。节点控制表用来记录节点id,节点对应的数据集,当前批次误差值,将排好序的前n个数据集子集分别送入node中,设置一个周期的时间片t,在子节点中搭建神经网络,通过前向传播获取参数,随机梯度下降算法更新参数,将节点搭建成完全二叉树集群的形式,完全二叉树的数据结构如图2所示,包括左指针、消息队列、模型队列和右指针。本发明的完全二叉树架构能实现子节点的松耦合,比起常规的模型训练方法能实现模型并行和数据并行相结合,累积误差反向传播和标准误差逆向传播相结合的方法增加了架构处理数据的能力,子节点的单个批次快速训练,并使用异步io流的方式实现数据的上传,拥有更强的容错机制。

对于传统的分布式架构模型并行和数据并行的训练方式来说,本架构采用基于二叉树形式的模型并行和数据并行相结合的方法,采用继承机制,根节点继承来自字节点的模型,并使用队列的形式存储模型,大量的缩短了训练时间(传统的没有实现模型并行会导致gpu集群的利用率不够,成串行训练的方式),实现模型的流通,并平均分配数据集到字节点上面,实现数据并行,提升了整个集群处理数据的综合性能,集群整体结构呈二叉树的形式,便于周期性交互时候的遍历和管理工作。

消息上传过程中,在不同的主机上搭建通讯协议,进行消息并行输到根节点,周期性传输一次,通过密码机制在树节点间设置安全协议防止黑客伪造消息进行攻击。各个节点之间流通的消息包括公钥签名、消息认证码以及消息摘要。其中,对消息摘要进行签名并将其附加到消息文本上。每个节点独立产生自己的私钥片段,然后将可验证的公钥广播出去,以及系统中其他节点需要验证本地节点的可靠性的信息。使用签名聚合和密钥聚合的算法,使所有的节点的验证都没有错误,每个节点达成一致,从而达到节点有可验证性、随机性、唯一性、确定性的效果。

具体的,消息传输在每个周期的时间传输一次,并由主节点负责检查子节点的状态码。状态码有以下几种状态,包括因网络延迟等不可靠因素而阻塞为-1,文件传输的消息等待为0,正在运行为1三种状态和状态码。本发明采用自发现的报备的方式将状态告知管理者,从叶子节点开始报备,在每个周期结束后,叶子节点采用异步并行的方式向根节点报备消息,非叶子节点将收到到的信息跟自身状态码,公钥,消息认证码的信息,依次入队到消息队列中,上传到根节点。根节点通过安全检测后,确认是自己的孩子节点上传的,才接受该消息队列,并取出自身队列的队尾元素跟收到的消息队列组成新的队列上传到根节点,并自动进行状态报备。报备完成后,系统管理员按照后续递归遍历整个集群,找到最后一个节点,以此将消息队列中的元素出队,查看状态码,如状态码为-1,则查询该状态码id,找到主机重启该容器,取出模型队列对尾存储的模型,待该主机重启完后,用取出的模型进行迁移学习继续训练,并清空队列元素,在该主机重启容器的时候,暂停对其孩子节点的训练,其双亲节点和兄弟节点的训练不受影响。

模型传输每两个周期结束,保存一次模型到模型队列中,队列元素后接一张模型文件情况说明表,标注节点id,loos值等重要信息。在进行模型周期性上传时候,如图4所示,采用并行io流的方式上传模型文件,将模型文件切割成等份,并标注索引,开启一定量的线程,每个线程都会为分配给它的任务保存一个双向链式队列,将分割好的模型文件平均分配到双向链式队列中,每完成一个任务,就会从队列头上取出下一个任务开始执行。基于种种原因,某个线程可能很早就完成了分配给它的任务,而其他的线程还未完成,那么这个线程就会,随机选一个线程,从队列的尾巴上偷走一个任务。这个过程一直继续下去,直到所有的任务都执行完毕,所有的队列都清空。批次上传到根节点,在根节点接受模型前进行消息队列的传输,需先检查安全性,才能接受模型,确认安全后,再按照分割后的模型的索引号组建成完整的模型,将这个模型作为当前神经网络的隐含层进行迁移学习的训练。

按照这种方法,整个集群的节点同时开始工作,可以达到异步并行训练,并周期性交互,周期性检查系统安全性,在一定范围内允许系统出错,很大程度上优化了分布式模型训练的速度。并对子节点的模型训练给予一定范围的容错性,保存出错前的模型,并使用迁移学习的方法训练,在一定程度上减少了子节点重新训练的时间,在模型文件上传机制采取双端队列的数据结构,在二叉树每层内采用从队列对尾偷取任务的方式可以节省模型上传的时间。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由所附的权利要求书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1