多学习主体并行训练模型的方法、装置和系统的制作方法_3

文档序号:9263535阅读:来源:国知局
件提供商特定的驱动和传输协议。图10为存在模型服务器的系统组件示意图,图10与图7的区别在于,增加了模型服务器,图7中的对等网络中,机器间交换的是模型差;图10中存在模型服务器时,机器从模型服务器拉取的是最新的参数值,发送给模型服务器的是模型差。在模型特别大的应用领域,需要采用多台模型服务器拆分模型,每台模型服务器存放一部分模型。一台物理机器为一个学习主体。存在模型服务器的环境包括与模型服务器网络连接的多台机器,单台机器作为一个训练机器,单台机器内包括多个训练的学习主体、拉取参数的学习主体、发送模型差的学习主体,且单台机器内设有工作副本和基础副本;该基础副本用于存储更新前的参数值;该工作副本用于存储更新后的参数值;该模型服务器用于存储最新的参数值。
[0073]图11为存在模型服务器环境中单台机器进行训练模型的流程图。如图11所示,存在模型服务器环境中各个单台机器进行训练模型的步骤包括:
[0074]步骤1102,通过拉取参数的学习主体从模型服务器获取最新的参数值。
[0075]具体地,学习主体为线程或进程。最开始时,每台训练机器从模型服务器拉取最新的参数值,每台训练机器内部按照单台机器环境中多线程或多进程并行更新的方式进行训练。
[0076]步骤1104,将该工作副本中存储的参数值更新为将工作副本中存储的参数值加上从模型服务器获取的参数值再减去基础副本中存储的参数值所得到的值,以及将基础副本中存储的参数值更新为从模型服务器获取的参数值。
[0077]步骤1106,根据更新后该工作副本中存储的参数值进行训练。
[0078]步骤1108,将该基础副本内存储的参数值更新为更新后工作副本中存储的参数值。
[0079]步骤1110,将更新前工作副本中的参数值与更新前基础副本中的参数值之差作为模型差通过发送模型差的学习主体发送给模型服务器,以使该模型服务器根据该模型差调整自身所存储的参数值。
[0080]例如,以某一参数P为例说明,假设基础副本中存储的参数值为w0,工作副本中存储的参数值为wl,模型服务器上存储的最新参数值为《2,某台训练机器从模型服务器拉取最新参数值w2到本地,将基础副本中存储的参数值更新为w2,同时将工作副本存储的参数值更新为wl+w2-w0。如此,拉取参数的学习主体(线程或进程)不会破坏本地已经积累的模型差,本地的模型差依然为wl_wO。发送模型差的学习主体将基础副本更新为wl+w2_w0,同时将模型差wl-wO发送给模型服务器。模型服务器接收到训练机器发送的模型差后,可以根据一个步长更新参数P的值。步长大小可根据具体情况调整。例如当参与数据并行的训练机器数目特别多,而网络条件又不好时,有必要适当调整这个步长。如果物理网络非常好,机器间交换模型差非常快速,不同机器看到的模型状态(即参数值)差异较小,时延低,此时模型的收敛速度快。当物理网络条件较差,因为交换模型差导致的时延较大,此时需要适当降低步长以保证训练过程的正常进行。
[0081]上述多学习主体并行训练模型的方法,在模型服务器环境中,每台机器通过拉取参数的学习主体从模型服务器获取最新的参数值,根据训练的学习主体进行训练,并将训练结果即模型差通过发送模型差的学习主体发送给模型服务器,模型服务器根据模型差进行调整参数值,实现不同学习主体分离,处理不同任务,不同单台机器各自训练模型,因多台机器并行训练,提高了模型的收敛速度,且单台机器内部多个学习主体无协调并行训练一份模型,进一步提高了收敛速度。
[0082]需要说明的是,在多机环境中,单台机器内部的训练不局限于单台机器环境中所描述的方法,也可以是基于单GPU (Graphics Processing Unit,图形处理器)卡、多GPU卡或英特尔Phi协处理器进行模型训练。
[0083]图12为一个实施例中多学习主体并行训练模型的装置的结构框图。如图12所示,一种多学习主体并行训练模型的装置,包括读取模块1210、获取模块1220、训练模块1230和更新模块1240,其中:
[0084]读取模块1210用于通过单台机器中的多个训练的学习主体各自读取样本。
[0085]具体地,学习主体可为单台机器中操作系统的线程或进程。该线程可为多核中央处理器上的物理线程,或者为基于英特尔Phi协处理器之上的多线程,或者为虚拟机(如java虚拟机)提供的用户态线程等。
[0086]在多台机器的场景中,学习主体可指一台机器。多个线程或进程各自读取样本进行训练。模型(即参数)被存放在共享内存区且只保存一份。样本是指训练数据。训练数据可为文本数据、语音数据、图像数据等等。
[0087]获取模块1220用于在同一时刻一个训练的学习主体从训练模型的获取当前的参数值。
[0088]训练模块1230用于根据该当前的参数值对读取的样本进行训练得到新的参数值。
[0089]更新模块1240用于将该新的参数值更新到该训练模型中,该训练模型中保存一个参数值。
[0090]上述多学习主体并行训练模型的装置,因每个学习主体独立工作,相互之间不需要同步和协调,在访问训练模型的参数时也不需要申请锁保护,所以其性能几乎随线程数或进程数的增加而线性增长。且因模型只保存一个参数值,它的最新状态所有学习主体都能访问,任何学习主体更新了模型的状态,随后读取模型状态的学习主体都能看到最新的更新,大大减少了由于模型不共享,不同学习主体看到的模型状态有差异带来的影响,训练过程中,模型可以收敛很快。
[0091]在一个实施例中,多学习主体并行训练模型的装置应用在无模型服务器的多机对等网络环境的情况。无模型服务器的对等网络环境包括网络连接的多台机器,单台机器作为一个训练机器,单台机器内包括多个训练的学习主体、广播模型差的学习主体、收集模型差的学习主体,且单台机器内设有工作副本和基础副本,该工作副本用于存储更新后的参数值;该基础副本用于存储更新前的参数值。
[0092]图13为另一个实施例中多学习主体并行训练模型的装置的结构框图。如图13所示,一种多学习主体并行训练模型的装置,除了包括读取模块1210、获取模块1220、训练模块1230和更新模块1240,还包括收集模块1250、广播模块1260。其中:
[0093]收集模块1250用于通过该收集模型差的学习主体获取广播的模型差。
[0094]更新模块1240还用于将该工作副本中存储的参数值和基础副本中存储的参数值均加上获取的模型差得到更新后工作副本中存储的参数值和基础副本中存储的参数值。
[0095]具体地,例如训练模型中的参数P的初始值为w0,机器A训练后,参数P被更新为wl,则机器A的工作副本中存储的参数值为wl,基础副本中存储的参数值为wO。机器B训练后,参数P被更新为《2,机器B的训练成果即模型差为w2-w0。机器A获取到机器B的模型差w2-w0后,将工作副本中存储的参数值更新得到参数值w3 = wl+w2-w0,将基础副本中存储的参数值更新得到参数值为w2 = w0+w2-w0 ο
[0096]训练模块1230用于通过该训练的学习主体按照更新后工作副本中存储的参数值进行训练。
[0097]广播模块1260用于将更新后工作副本中存储的参数值和基础副本中存储的参数值之差作为自身的模型差,通过该广播模型差的学习主体将自身的模型差广播出去。
[0098]具体地,按照w3进行训练。自身的模型差为更新后的工作副本中存储的参数值w3与基础副本中存储的参数值w2之差,即wl-wO。通过广播模型差的线程或进程将模型差w3-w2广播出去。
[0099]更新模块1240还用于将更新后的基础副本中存储的参数值再更新为更新后工作副本中存储的参数值。具体地,将基础副本中存储的参数值w2再更新为更新后工作副本中存储的参数值w3。
[0100]上述对等网络环境中单台机器利用其它机器模型差进行训练,通过模型的工作副本和基础副本存储更新后的参数值和更新前的参数值,训练的学习主体进行训练模型,广播模型差的学习主体发送自身的模型差,收集模型差的学习主体接收其他模型差,实现不同学习主体分离,处理不同任务,不同单台机器各自训练模型,始终不间断的将自身的模型差分享给他人,同时也不间断接收他人学到的模型差,提高了收敛速度。且单台机器内部多个学习主体无协调并行训练一份模型,进一步提高了收敛速度。
[0101]上述多学习主体并行训练的装置可应用于存在模型服务器的环境中。存在模型服务器的环境可以基于以太网或InfiniBand或Roce等网络条件。软件实现可以基于 TCP (Transmiss1n Control Protocol,传输控制协议)协议或基于 MPI (Multi PointInterface,多点接口)或者硬件提供商特定的驱动和传输协议。存在模型服务器的环境包括与模型服务器网络连接的多台机器,单台机器作为一个训练机器,单台机器内包括多个训练的学习主体、拉取参数的学习主体、发送参数差的学习主体,且单台机器内设有工作副本和基础副本;该基础副本用于存储更新前的参数值;该工作副本用于存储更新后的参数值;该模型服务器用于存储最新的参数值。
[0102]图14为另一个实施例中多学习主体并行训练模型的装置的结构框图。如图14所示,一种多学习主体并行训练模型的装置,除了包括读取模块1210、获取模块1220、训练模块12
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1