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

文档序号:9263535阅读:294来源:国知局
多学习主体并行训练模型的方法、装置和系统的制作方法
【技术领域】
[0001]本发明涉及数据处理领域,特别是涉及一种多学习主体并行训练模型的方法、装置和系统。
【背景技术】
[0002]在机器学习领域,很多机器学习需要进行建模,即建立学习模型。在训练过程中,模型的结构固定,但是模型节点内和节点之间连接边上的权重需要通过训练过程来调整直到收敛点。节点内和节点间的权重被称为参数。很多机器学习算法属于多次迭代优化算法,模型训练过程中的每个迭代主要包括以下步骤:随机取一个或一批样本,根据当前模型的状态,给出模型对该样本的预测;根据预测值和样本的期望输出,计算出如何对模型状态进行调整,模型状态即指模型中各个参数的值。
[0003]一般采用一台机器利用单线程的方式根据模型状态做预测,随后根据残差调整模型状态。随着大数据时代的来临,训练样本越来越多,模型规模越来越大,所以计算代价也随着变大,此时采用单线程训练模型的方式,训练过程太慢,如在语音识别、图像分类等领域,训练一个模型可能需要数月或几年的时间,在实际中无法接受如此长的训练时间。
[0004]随着hadoop和Spark的成熟,很多公司也采用它们作为基础平台来训练机器学习模型。常用的方法是有一个主控角色,还有多个工作者,在一次迭代起始时,主控角色将最新模型分发到所有工作者上,工作者读取训练数据,独自更新它所维护的模型实例,然后在迭代结束时,主控角色收集多份模型,将其中的参数取平均化作为每个参数的最新值,即得到最新的模型状态。该方法的缺点时,一个迭代全局同步一次模型,造成模型收敛慢,对于非凸的优化问题,较易导致训练过程发散而使得训练作业失败。

【发明内容】

[0005]基于此,有必要针对传统的模型训练方法收敛慢的问题,提供一种多学习主体并行训练模型的方法,能提高收敛速度。
[0006]此外,还有必要提供一种多学习主体并行训练模型的装置和系统,能提高收敛速度。
[0007]一种多学习主体并行训练模型的方法,包括以下步骤:
[0008]通过单台机器中的多个训练的学习主体各自读取样本;
[0009]在同一时刻一个训练的学习主体从训练模型中获取当前的参数值;
[0010]根据所述当前的参数值对读取的样本进行训练得到新的参数值;
[0011]将所述新的参数值更新到所述训练模型中,所述训练模型中保存一个参数值。
[0012]一种多学习主体并行训练模型的装置,包括:
[0013]读取模块,用于通过单台机器中的多个训练的学习主体各自读取样本;
[0014]获取模块,用于在同一时刻一个训练的学习主体从训练模型的获取当前的参数值;
[0015]训练模块,用于根据所述当前的参数值对读取的样本进行训练得到新的参数值;
[0016]更新模块,用于将所述新的参数值更新到所述训练模型中,所述训练模型中保存一个参数值。
[0017]一种多学习主体并行训练模型的系统,所述系统包括单台机器,所述单台机器中的多个训练的学习主体各自读取样本,在同一时刻一个训练的学习主体从训练模型中获取当前的参数值,根据所述当前的参数值对读取的样本进行训练得到新的参数值,将所述新的参数值更新到所述训练模型中,所述训练模型中保存一个参数值。
[0018]上述多学习主体并行训练模型的方法、装置和系统,因每个学习主体独立工作,相互之间不需要同步和协调,在访问训练模型的参数时也不需要申请锁保护,所以其性能几乎随线程数或进程数的增加而线性增长,且因模型只保存一个参数值,它的最新状态所有学习主体都能访问,任何学习主体更新了模型的状态,随后读取模型状态的学习主体都能看到最新的更新,大大减少了由于模型不共享,不同学习主体看到的模型状态有差异带来的影响,训练过程中,模型可以收敛很快。
【附图说明】
[0019]图1A为一个实施例中终端的内部结构示意图;
[0020]图1B为一个实施例中服务器的内部结构示意图;
[0021]图2为一个实施例中多学习主体并行训练模型的方法的流程图;
[0022]图3为训练模型中参数的存储及读取和修改参数的过程示意图;
[0023]图4为线程B的写入丢失的过程示意图;
[0024]图5为线程A的写入丢失的过程示意图;
[0025]图6为线程A读取到过期数据的示意图;
[0026]图7为一个实施例中对等网络环境中的系统组件示意图;
[0027]图8为对等网络环境中单台机器利用其它机器模型差进行训练的流程图;
[0028]图9为对等网络环境中的模型更新的时序示意图;
[0029]图10为存在模型服务器的系统组件示意图;
[0030]图11为存在模型服务器环境中单台机器进行训练模型的流程图;
[0031]图12为一个实施例中多学习主体并行训练模型的装置的结构框图;
[0032]图13为另一个实施例中多学习主体并行训练模型的装置的结构框图;
[0033]图14为另一个实施例中多学习主体并行训练模型的装置的结构框图。
【具体实施方式】
[0034]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0035]图1A为一个实施例中终端的内部结构示意图。如图1A所示,该终端包括通过系统总线连接的处理器、存储介质、内存、网络接口和输入装置。其中,终端的存储介质存储有操作系统,还包括一种多学习主体并行训练模型的装置,该新闻数据显示装置用于实现一种多学习主体并行训练模型的方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存为存储介质中的多学习主体并行训练模型的装置的运行提供环境,网络接口用于与服务器进行网络通信,如发送模型差至服务器,接收服务器返回的参数值等。终端的输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是手机、平板电脑或者个人数字助理。本领域技术人员可以理解,图1A中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0036]图1B为一个实施例中服务器的内部结构示意图。如图1B所示,该服务器包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该服务器的存储介质存储有操作系统、数据库和多学习主体并行训练模型的装置,数据库中存储有训练模型的参数值,该多学习主体并行训练模型的装置用于实现适用于服务器的一种多学习主体并行训练模型的方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存为存储介质中的多学习主体并行训练模型的装置的运行提供环境。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的模型差以及向终端返回最新的参数值等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图1B中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0037]图2为一个实施例中多学习主体并行训练模型的方法的流程图。图2中的多学习主体并行训练模型的方法应用于图1A的终端上。如图2所示,一种多学习主体并行训练模型的方法,包括以下步骤:
[0038]步骤202,通过单台机器中的多个训练的学习主体各自读取样本。
[0039]具体地,学习主体可为单台机器中操作系统的线程或进程。该线程可为多核中央处理器上的物理线程,或者为基于英特尔Phi协处理器之上的多线程,或者为虚拟机(如java虚拟机)提供的用户态线程等。
[0040]在多台机器的场景中,学习主体可指一台机器。多个线程或进程各自读取样本进行训练。模型(即参数)被存放在共享内存区且只保存一份。
[0041 ] 样本是指训练数据。训练数据可为文本数据、语音数据、图像数据等等。
[0042]步骤204,在同一时刻一个训练的学习主体从训练模型获取当前的参数值。
[0043]从单一训练的线程或进程的角度来看,它不了解是否还有其他学习主体同时也在访问和修改模型,它认为只有自己在训练模型。对于单一参数的访问,无论是读取还是写入,可看作是一个原子性操作。原子性操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何切换。如此可保证在多进程或多线程访问资源时,所有其他的进程或线程都不在同一时间内访问相同的资源。
[0044]步骤206,根据该当前的参数值对读取的样本进行训练得到新的参数值。
[0045]具体地,单个进程或线程根据从训练模型中获取的当前的参数值对读取的样本进行训练得到新的参数值,再将新的参数值更新到训练模型中。
[0046]步骤208,将该新的参数值更新到该训练模型中,该训练模型中保存一个参数值。
[0047]每个学习主体按照步骤202
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1