CN110097188B - 一种模型训练方法、工作节点及参数更新服务器 - Google Patents

一种模型训练方法、工作节点及参数更新服务器 Download PDF

Info

Publication number
CN110097188B
CN110097188B CN201910362862.1A CN201910362862A CN110097188B CN 110097188 B CN110097188 B CN 110097188B CN 201910362862 A CN201910362862 A CN 201910362862A CN 110097188 B CN110097188 B CN 110097188B
Authority
CN
China
Prior art keywords
model
calculation
training
target
gradient value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910362862.1A
Other languages
English (en)
Other versions
CN110097188A (zh
Inventor
李必然
吕亚飞
刘凯
刘远东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
iFlytek Co Ltd
Original Assignee
iFlytek Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by iFlytek Co Ltd filed Critical iFlytek Co Ltd
Priority to CN201910362862.1A priority Critical patent/CN110097188B/zh
Publication of CN110097188A publication Critical patent/CN110097188A/zh
Application granted granted Critical
Publication of CN110097188B publication Critical patent/CN110097188B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Analysis (AREA)

Abstract

本申请公开了一种模型训练方法、工作节点及参数更新服务器,该方法包括:根据第一模型的任务类型,确定第一模型中各个网络层的目标计算精度,并基于第一模型中各个网络层的目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值,以便根据该目标梯度值对第二模型进行参数更新。由于不同任务类型所需求的计算精度不同,因而,根据任务类型确定的目标计算精度更适应于该任务类型对精度的需求,从而使得在第一模型基于目标计算精度进行计算的过程中,不但可以减少在工作节点上的资源消耗和提升在工作节点上的计算加速,还可以降低因第一模型的计算精度损失带来的对第二模型的训练效果损失。

Description

一种模型训练方法、工作节点及参数更新服务器
技术领域
本申请涉及深度学习技术领域,尤其涉及一种模型训练方法、工作节点及参数更新服务器。
背景技术
当前深度学习技术蓬勃发展,一些常见的领域(例如物体检测与识别、语音识别与合成、和机器翻译等)对深度学习的开发和依赖程度也越来越高。深度学习的概念源于人工神经网络的研究,深度学习通过组合低层特征形成更加抽象的高层表示特征,以发现数据的分布式特征表示。深度学习分为训练和推理两部分,训练负责将准备好的数据送入设计好的网络中进行训练计算并更新网络中的参数,最终得到一个可用的网络参数模型;推理则是将训练好的网络参数模型部署到应用场景中,对输入数据进行推理计算,得到想要的结果。
在深度学习的训练方向上,需要对单个工作节点上的模型进行训练,但为了节省单个工作节点的资源消耗等需求,需要降低模型的计算精度,但精度损失会带来训练效果的损失。
发明内容
本申请实施例的主要目的在于提供一种模型训练方法、工作节点及参数更新服务器,能够降低精度损失带来的训练效果损失。
本申请实施例提供了一种模型训练方法,所述方法应用于一种工作节点,所述方法包括:
根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度;
基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值;
根据所述目标梯度值,对第二模型进行参数更新,完成本轮训练;
其中,在对所述第二模型进行参数更新之前,所述第一模型与所述第二模型的网络结构和网络参数相同、且所述第一模型中的全部或部分网络层的计算精度低于所述第二模型的网络层的计算精度。
可选的,所述第一模型中各个网络层的目标计算精度为:
所述第一模型的最后一层的计算精度为第一精度,所述第一模型中除最后一层以外的其他网络层的计算精度低于或等于所述第一精度。
可选的,所述根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度,包括:
若所述第一模型的任务类型为图像处理任务,则将所述第一模型的第一层和最后一层设置为所述第一精度,并将所述第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于所述第一精度;
若所述第一模型的任务类型为序列处理任务,则将所述第一模型的最后一层设置为所述第一精度,并将所述第一模型中除最后一层以外的其它网络层的计算精度设置为低于所述第一精度。
可选的,所述利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值,包括:
利用所述第一模型的训练数据进行前向计算和后向计算,并对经所述后向计算得到的梯度值进行放大,得到目标梯度值;
相应地,所述根据所述目标梯度值,对第二模型进行参数更新,包括:
缩小所述目标梯度值,以还原得到经所述后向计算得到的梯度值;
利用还原后的梯度值,对第二模型进行参数更新。
可选的,所述对经所述后向计算得到的梯度值进行放大,得到目标梯度值,包括:
获取经所述后向计算得到的第一个梯度值,并将所述第一个梯度值与一个预设的超参数进行相乘,得到放大后的梯度值;
利用所述放大后的梯度值继续所述后向计算,直至所述后向计算结束后得到所述目标梯度值;
相应地,所述缩小所述目标梯度值,包括:
将所述目标梯度值除以所述超参数。
可选的,所述方法还包括:
在进行所述本轮训练之后的下一轮训练时,将经所述本轮训练后的第二模型的计算精度按照所述目标计算精度进行转换,得到更新后的第一模型,并继续执行所述基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算的步骤。
本申请实施例还提供了一种模型训练方法,所述方法应用于一种参数更新服务器,所述方法包括:
获取各个工作节点上传的第一数据,所述工作节点为上述任一模型训练方法所提供的工作节点;
利用各个工作节点上传的第一数据,生成第二数据;
将所述第二数据下发至各个工作节点,所述第二数据用于对各个工作节点的第二模型进行参数更新。
可选的,所述第一数据为对应工作节点在每一轮训练得到的目标梯度值,或者,所述第一数据为对应工作节点进行至少一轮训练后得到的第二模型。
本申请实施例还提供了一种工作节点,包括:
目标计算精度确定单元,用于根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度;
目标梯度值计算单元,用于基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值;
第二模型更新单元,用于根据所述目标梯度值,对第二模型进行参数更新,完成本轮训练;
其中,在对所述第二模型进行参数更新之前,所述第一模型与所述第二模型的网络结构和网络参数相同、且所述第一模型中的全部或部分网络层的计算精度低于所述第二模型的网络层的计算精度。
可选的,所述第一模型中各个网络层的目标计算精度为:
所述第一模型的最后一层的计算精度为第一精度,所述第一模型中除最后一层以外的其他网络层的计算精度低于或等于所述第一精度。
可选的,所述目标计算精度确定单元,包括:
第一目标计算精度设置子单元,用于若所述第一模型的任务类型为图像处理任务,则将所述第一模型的第一层和最后一层设置为所述第一精度,并将所述第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于所述第一精度;
第二目标计算精度设置子单元,用于若所述第一模型的任务类型为序列处理任务,则将所述第一模型的最后一层设置为所述第一精度,并将所述第一模型中除最后一层以外的其它网络层的计算精度设置为低于所述第一精度。
可选的,所述目标梯度值计算单元,包括:
目标梯度值计算子单元,用于基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,并对经所述后向计算得到的梯度值进行放大,得到目标梯度值;
相应地,所述第二模型更新单元,包括:
梯度值还原子单元,用于缩小所述目标梯度值,以还原得到经所述后向计算得到的梯度值;
第二模型更新子单元,用于利用还原后的梯度值,对第二模型进行参数更新。
可选的,所述目标梯度值计算子单元,包括:
梯度值放大模块,用于获取经所述后向计算得到的第一个梯度值,并将所述第一个梯度值与一个预设的超参数进行相乘,得到放大后的梯度值;
目标梯度值确定模块,用于利用所述放大后的梯度值继续所述后向计算,直至所述后向计算结束后得到所述目标梯度值;
相应地,所述梯度值还原子单元,包括:
目标梯度值缩小模块,用于将所述目标梯度值除以所述超参数。
可选的,所述工作节点还包括:
第一模型更新单元,用于在进行所述本轮训练之后的下一轮训练时,将经所述本轮训练后的第二模型的计算精度按照所述目标计算精度进行转换,得到更新后的第一模型,并调用所述目标梯度值计算单元继续基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算。
本申请实施例还提供了一种参数更新服务器,包括:
第一数据获取单元,用于获取各个工作节点上传的第一数据;
第二数据生成单元,用于利用各个工作节点上传的第一数据,生成第二数据;
模型参数更新单元,用于将所述第二数据下发至各个工作节点,所述第二数据用于对各个工作节点的第二模型进行参数更新。
可选的,所述第一数据为对应工作节点在每一轮训练得到的目标梯度值,或者,所述第一数据为对应工作节点进行至少一轮训练后得到的第二模型。
基于上述技术方案,本申请具有以下有益效果:
本申请提供的模型训练方法、工作节点及参数更新服务器,可以根据第一模型的任务类型,确定第一模型中各个网络层的目标计算精度,然后,基于第一模型中各个网络层的目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值,以便根据该目标梯度值对第二模型进行参数更新。在本实施例中,由于不同任务类型所需求的计算精度不同,因而,根据任务类型确定的目标计算精度能够更适应于该任务类型对精度的需求,从而使得在第一模型基于目标计算精度进行计算的过程中,不但可以减少在工作节点上的资源消耗和提升在工作节点上的计算加速(尤其是对大数据量的计算加速),还可以降低因第一模型的计算精度损失带来的对第二模型的训练效果损失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请方法实施例一提供的模型训练方法的流程图;
图2为本申请实施例提供的第一示例中的目标计算精度的示意图;
图3为本申请实施例提供的第二示例中的目标计算精度的示意图;
图4为本申请实施例提供的第三示例中的目标计算精度的示意图;
图5为本申请实施例提供的S11的第四种实施方式对应的示例流程图;
图6为本申请实施例提供的获取目标梯度值的流程示意图;
图7为本申请实施例提供的第二模型的网络层的计算精度示意图;
图8为本申请方法实施例二提供的模型训练方法的流程图;
图9为本申请方法实施例三提供的模型训练方法的流程图;
图10为本申请实施例提供的分布式训练系统的示意图;
图11为本申请方法实施例四提供的模型训练方法的流程图;
图12为本申请装置实施例一提供的工作节点的结构示意图;
图13为本申请装置实施例二提供的参数更新服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
方法实施例一
参见图1,该图为本申请方法实施例一提供的模型训练方法的流程图。
本申请实施例提供的应用于一种工作节点的模型训练方法,该方法中的各个步骤的执行主体是工作节点,该方法包括以下步骤S11-S13:
S11:根据第一模型的任务类型,确定第一模型中各个网络层的目标计算精度。
S12:基于该目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值。
S13:根据目标梯度值,对第二模型进行参数更新,完成本轮训练;其中,在对第二模型进行参数更新之前,第一模型与第二模型的网络结构和网络参数相同、且第一模型中的全部或部分网络层的计算精度低于第二模型的网络层的计算精度。
需要说明的是,作为一种示例性的应用场景,本实施例中的工作节点可以包括计算引擎和本地更新模块,基于此,上述步骤S11和S12是在计算引擎内实现的,上述步骤S13是在本地更新模块内实现的。即,当计算引擎计算出目标梯度值后,可以将其发送至本地更新模块,由本地更新模块基于目标梯度值对其存储的第二模型进行参数更新。
还需要说明的是,第二模型在最终完成训练后,需要将其用于实际的任务(比如语音识别)中,而第一模型主要用于对第二模型实现辅助训练。具体来讲,在对第二模型所进行的本轮训练中,当对第二模型进行参数更新之前,第一模型与第二模型的网络结构和网络参数均相同、但二者的各个网络层的计算精度不完全相同;为了降低工作节点的系统资源消耗并加快计算速度,可以由低精度的第一模型对训练数据进行计算,以便快速计算得到目标梯度值,而且由于此时的第一模型与第二模型的网络结构和网络参数均相同,因此,可以基于第一模型计算的目标梯度值对第二模型进行参数更新,从而实现对第二模型的一轮训练。
作为一种实现方式,本实施例中的工作节点可以是图形处理器(GraphicsProcessing Unit,GPU),或者是其它类型的处理器。
以上为本申请方法实施例一提供的模型训练方法的具体执行步骤,为了便于理解和解释本申请方法实施例一提供的模型训练方法,下面将依次介绍S11至S13的具体实施方式。
首先介绍S11的具体实施方式。
在S11中,第一模型的任务类型可以是任何类型,例如,该任务类型可以是普通处理任务,也可以是图像处理任务(比如人脸识别任务),也可以是序列处理任务(比如语音识别任务),也可以是自定义处理任务,还可以是其他任务。
其中,普通处理任务是指不包括卷积层和循环神经网络(Recurrent NeuralNetwork,RNN)的第一模型所对应的任务类型;图像处理任务是指包括卷积层但不包括RNN类序列结构的第一模型所对应的任务类型;序列处理任务是指包括RNN类序列结构的第一模型所对应的任务类型;自定义处理任务是指携带有预先设定的目标计算精度的第一模型所对应的任务类型。
在本申请中,第一模型中各个网络层的目标计算精度可以相同,也可以不相同。
另外,由于第一模型的最后一层是输出层,使得该最后一层通常会涉及到第一模型的网络结构中大量网络参数,因此,当第一模型的最后一层具有较高的计算精度时,能够减少第一模型在计算过程(即S12)中的精度损失,进而可以降低因精度损失带来的对第二模型的训练效果损失,故而,为了降低因精度损失带来的训练效果损失,本申请提供了目标计算精度的一种实施方式,在该实施方式中,第一模型中各个网络层的目标计算精度具体可以为:第一模型的最后一层的计算精度为第一精度,且第一模型中除最后一层以外的其他网络层的计算精度低于或等于该第一精度。
其中,第一精度可以预先设定,例如,第一精度可以预先设定为单精度浮点数(简称为FP32),也可以预先设定为半精度浮点数(简称为FP16),还可以预先设定为其他精度值。
为了便于解释和理解上述目标计算精度的实施方式,下面将结合三个示例进行说明。
首先介绍第一示例的相关内容。
作为第一示例,如图2所示,当第一模型包括第1层至第N层,且第一精度为FP16时,则第一模型中各个网络层的目标计算精度可以为:第一模型的第1层的计算精度至第N层的计算精度均为FP16。
在第一示例中,由于第一模型中的各个网络层的计算精度均为FP16,而且FP16的计算精度需要较小的计算资源以及较少的计算时间,因而,该第一模型能够减少模型训练过程中的资源消耗,以及提高模型的训练效率。
需要说明的是,上述提供的第一示例中以第一模型中各个网络层的目标计算精度均为FP16为例进行说明的,然而,在本申请中,当第一模型中各个网络层的目标计算精度均为第一精度时,第一精度可以任一精度值,本申请对此不做具体限定。
以上为第一示例的相关内容,在该示例中,第一模型中的各个网络层的目标计算精度可以均为第一精度。
下面介绍第二示例的相关内容。
作为第二示例,如图3所示,当第一模型包括第1层至第N层,第N层是最后一层,且第一精度为FP32时,则第一模型中各个网络层的目标计算精度可以为:第一模型中的第1层的计算精度至第N-1层的计算精度均为FP16,且第N层的计算精度为FP32。
在第二示例中,第一模型的最后一层的计算精度为精度较高的FP32,如此能够提高最后一层中网络参数的计算精度,从而能够提高第一模型的计算精度,进而能够提高第一模型的训练效果。
需要说明的是,上述提供的第二示例是以最后一层为FP32,且第一模型中除了最后一层以外的其他网络层的计算精度均FP16为例进行说明的。然而,在本申请中,当第一模型中最后一层的计算精度为第一精度,且第一模型中除了最后一层以外的其他网络层的计算精度均低于第一精度时,第一精度可以是任一精度值,而且除了最后一层以外的其他网络层的计算精度可以是低于第一精度的任一精度值,本申请对此不作具体限定。
以上为第二示例的相关内容,在该示例中,第一模型的最后一层的计算精度为第一精度,且最后一层的计算精度高于第一模型中除了最后一层以外的其他各个网络层的计算精度。
另外,由于第一模型的第一层用于对第一模型的输入数据(比如语音数据、图像数据)进行特征提取,而且当所提取特征的全面性较高时,能够提高第一模型的计算精度,因而,为了进一步提高第一模型的计算精度,本申请还提供了目标计算精度的第三示例。
下面介绍第三示例的相关内容。
作为第三示例,如图4所示,当第一模型包括第1层至第N层,第N层是最后一层,且第一精度为FP32时,则第一模型中各个网络层的目标计算精度可以为:在第一模型中,第1层的计算精度为FP32,第2层的计算精度至第N-1层的计算精度均为FP16,且第N层的计算精度为FP32。
在该示例中,第一模型的第一层和最后一层的计算精度均为精度较高的FP32,如此不仅能够提高最后一层中所包括的网络参数的计算精度,还能够提高第一层中所提取特征的全面性,从而能够提高第一模型的计算精度,进而能够提高第一模型的训练效果。
需要说明的是,上述提供的第三示例是以第一层和最后一层均为FP32,且第一模型中除了第一层和最后一层以外的其他网络层的计算精度均以FP16为例进行说明的。然而,在本申请中,当第一模型中第一层和最后一层的计算精度均为第一精度,且第一模型中除了第一层和最后一层以外的其他网络层的计算精度均低于第一精度时,第一精度可以是任一精度值,而且除了第一层和最后一层以外的其他网络层的计算精度可以是低于第一精度的任一精度值,本申请对此不作具体限定。
以上为第三示例的相关内容,在该示例中,第一模型中第一层和最后一层的计算精度均为第一精度,且第一模型中除了第一层和最后一层以外的其他网络层的计算精度均低于第一精度。
需要说明的是,上述是以第一示例、第二示例和第三示例这三个示例为例对第一模型中除最后一层以外的其他网络层的计算精度低于或等于第一模型的最后一层的计算精度进行说明的。然而,在本申请中当第一模型中除最后一层以外的其他网络层的计算精度低于或等于第一模型的最后一层的计算精度时,可以包括多种目标计算精度的设定情况,为了简要起见,在此不再赘述。
以上为第一模型中各个网络层的目标计算精度的相关内容。
另外,由于第一模型可以是用于实现任何任务类型的模型,而且,不同任务类型所需求的精度不同,因而,当任务类型不同时,S11可以采用不同的实施方式。下面将以上述内容提及的普通处理任务、图像处理任务、序列处理任务以及自定义处理任务所对应的S11的具体实施方式为例进行介绍。
首先介绍普通处理任务所对应的S11的具体实施方式。
由于普通处理任务对第一模型的计算精度需求较低,因而为了减少模型训练过程中的资源消耗,以及提高模型的训练效率,本申请提供了S11的第一种实施方式,在该实施方式中,则S11具体可以为:若第一模型的任务类型为普通处理任务,则将第一模型的第一层至最后一层均设置为第一精度。
在该实施方式中,第一精度可以预先设定为较低的精度,例如,第一精度可以为FP16,此时S11可以参照图2所对应的第一示例进行实施。
以上为普通处理任务所对应的S11的具体实施方式,该实施方式中,可以将第一模型的各个网络层的目标计算精度均设置为第一精度,且第一精度为较低的精度,如此能够减少模型训练过程中的资源消耗,也能够提高模型的训练效率。
下面介绍图像处理任务所对应的S11的具体实施方式。
由于在图像处理任务中,第一层所提取的图像信息的完整性以及最后一层包括的大量网络参数所对应的计算精度均能够对第一模型的计算精度产生较大的影响,因而,为了提高第一模型的计算精度,从而提高第一模型的训练效果,本申请还提供了S11的第二种实施方式,在该实施方式中,S11具体可以为:若第一模型的任务类型为图像处理任务,则将第一模型的第一层和最后一层设置为第一精度,并将第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于第一精度。
在该实施方式中,第一精度可以预先设置为较高的精度,例如,第一精度可以预先设置为FP32,此时S11可以参照图4所对应的第三示例进行实施。
以上为图像处理任务所对应的S11的具体实施方式,在该实施方式中,可以将第一模型的第一层和最后一层设置为第一精度,并将第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于第一精度。如此,不仅提高了第一模型中第一层所提取的图像信息的完整性,也提高了第一模型中最后一层包括的大量网络参数所对应的计算精度,从而提高了第一模型的计算精度,进而提高了第一模型的训练效果。
下面介绍序列处理任务所对应的S11的具体实施方式。
由于在序列处理任务中比较注重序列之间的关系,如此使得对第一模型中第一层所进行的特征提取的精度要求不高,因而为了减少模型训练过程中的资源消耗,以及提高模型的训练效率,可以将第一模型中第一层设置为较低的计算精度;而且,由于在序列处理任务中最后一层包括的大量参数所对应的计算精度能够对第一模型的计算精度产生较大的影响,因而,为了提高第一模型的计算精度,从而提高第一模型的训练效果,可以将第一模型中最后一层设置为较高的精度。如此,本申请提供了S11的第三种实施方式,在该实施方式中,S11具体可以为:若第一模型的任务类型为序列处理任务,则将第一模型的最后一层设置为第一精度,并将第一模型中除最后一层以外的其它网络层的计算精度设置为低于第一精度。
在该实施方式中,第一精度可以设置为较高的精度,例如,第一精度可以预先设置为FP32,此时S11可以参照图3所对应的第二示例进行实施。
以上为序列处理任务所对应的S11的具体实施方式,在该实施方式中,可以将第一模型的最后一层设置为第一精度,并将第一模型中除最后一层以外的其它网络层的计算精度设置为低于第一精度。
下面介绍自定义处理任务对应的S11的具体实施方式。
为了提高模型训练方法的适用范围,在本申请中还提供了一种自定义处理任务,该自定义处理任务适用于用户根据自身精度需求自主设定目标计算精度的应用场景。另外,在自定义处理任务中,第一模型中各个网络层的目标计算精度可以实时地从用户提供的数据信息中提取。
基于上述内容,本申请提供了S11的第三种实施方式,在该实施方式中,S11具体可以为:若第一模型的任务类型为自定义处理任务时,从用户提供的数据信息中提取第一模型中各个网络层的目标计算精度。
用户提供的数据信息可以包括第一模型中各个网络层的目标计算精度值,也可以包括存储有第一模型中各个网络层的目标计算精度值的存储地址,还可以包括其他与目标计算精度相关的数据。
以上为自定义处理任务对应的S11的具体实施方式,在该实施方式中,可以从用户提供的数据信息中获取第一模型中各个网络层的目标计算精度,如此能够满足用户对计算精度的个性化需求,提高了模型训练方法的适用范围。
基于上述提供的不同任务类型对应的S11的具体实施方式,为了提高根据任务类型选择目标计算精度的准确性,本申请还提供了一种精度设定工具,该工具可以利用第一模型的任务类型和目标计算精度的映射关系准确地确定出第一模型中各个网络层的目标计算精度。
基于上述提供的精度设定工具,本申请提供了S11的第四种实施方式,在该实施方式中,S11具体可以为:根据第一模型的任务类型,利用精度设定工具,确定所述第一模型中各个网络层的目标计算精度。
其中,在精度预设工具中所使用的第一模型的任务类型和目标计算精度的映射关系能够唯一确定上述任一种任务类型所对应的第一模型中各个网络层的目标计算精度。
为了便于解释和理解S11的第四种实施方式,下面将以图5所述的执行步骤进行说明,其中,图5为本申请实施例提供的S11的第四种实施方式对应的示例流程图。
作为示例,如图5所示,S11具体可以利用精度设定工具中执行S11a至S11i步骤:
S11a:获取用户提供的数据信息。
用户提供的数据信息包括第一模型的网络结构信息;而且,当用户根据自身所需精度自主设定目标计算精度时,用户提供的数据信息还可以包括:预设的第一模型中各个网络层的目标计算精度值、预设的存储有第一模型中各个网络层的目标计算精度值的存储地址、以及其他与目标计算精度相关的数据中的至少一种数据。
S11b:判断用户提供的数据信息中是否包括预设的第一模型中各个网络层的目标计算精度,若是,则执行S11c;若否,则执行S11d。
其中,预设的第一模型中各个网络层的目标计算精度是由用户根据自身的精度需求自主设定的计算精度。
S11c:从用户提供的数据信息中获取预设的第一模型中各个网络层的目标计算精度,作为第一模型中各个网络层的目标计算精度。
S11d:从用户提供的数据信息中获取第一模型的任务类型。
作为一种实施方式,S11d具体可以为:根据用户提供的第一模型的网络结构,确定第一模型的任务类型。
在该实施方式中,如果用户提供的第一模型的网络结构中包括RNN类序列结构,则可以确定第一模型的任务类型为序列处理任务;如果用户提供的第一模型的网络结构中包括卷积层但不包括RNN类序列结构,则可以确定第一模型的任务类型为图像处理任务;如果用户提供的第一模型的网络结构中既不包括卷积层也不包括RNN类序列结构,则可以确定第一模型的任务类型为普通处理任务。
S11e:判断第一模型的任务类型是否是图像处理任务,若是,则执行S11f;若否,则执行S11g。
S11f:将第一模型的第一层和最后一层设置为第一精度,并将第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于第一精度。
S11f的具体实施方式与S11的第二种实施方式相同,在此不再赘述。
S11g:判断第一模型的任务类型是否是序列处理任务,若是,则执行S11h;若否,则执行S11i。
S11h:将第一模型的最后一层设置为第一精度,并将第一模型中除最后一层以外的其它网络层的计算精度设置为低于第一精度。
S11h的具体实施方式与S11的第三种实施方式相同,在此不再赘述。
S11i:确定第一模型的任务类型是普通处理任务,并将第一模型的各个网络层的计算精度设置为第一精度。
S11i的具体实施方式与S11的第一种实施方式相同,在此不再赘述。
需要说明的是,上述示例仅是提供了一种能够利用精度设定工具实现S11的第四种实施方式的执行步骤,但是在本申请中S11的第四种实施方式不仅可以采用上述示例提供的执行步骤实现,还可以采用其他的执行步骤实现,本申请对此不作具体限定。
以上为S11的第四种实施方式,在该实施方式中,可以使用精度预设工具确定第一模型中各个网络层的目标计算精度。
下面介绍S12的具体实施方式。
可以理解的是,在对一个模型进行训练时,需要进行至少一轮的训练,因此,在S12中,第一模型的训练数据为本轮训练使用的训练数据,而且,该训练数据是基于第一模型的任务类型所预先收集的数据,即,该训练数据是与第一模型的任务类型相关的数据。
在S12中,可以采用现有或未来出现的任一种能够根据第一模型的训练数据进行前向计算(Forward propagation,FWD)和后向计算(Back propagation,BWD)得到第一模型的目标梯度值的过程,本申请对此不做具体限定。
为了便于解释和理解S12的具体实施方式,下面将结合示例进行说明。
作为示例,如图6所示,S12具体可以为:基于目标计算精度,利用第一模型的训练数据进行FWD 601和BWD 602,得到第一模型的各个网络层的网络参数的目标梯度值。
需要说明的是,S12的一种具体实现方式将在方法实施例二(步骤S82-S83)中介绍,其可以降低因第一模型的计算精度损失带来的对第二模型的训练效果损失。
以上为S12的具体实施方式,在该实施方式中,可以基于目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值。
下面介绍S13的具体实施方式。
在S13中,在对第二模型进行参数更新之前,第一模型与第二模型的网络结构和网络参数相同、而且第一模型中的全部或部分网络层的计算精度低于第二模型的网络层的计算精度。
在第二模型中,各个网络层的计算精度可以采用相同的计算精度,也可以采用不同的计算精度。
为了便于解释和理解第二模型,下面将结合以下示例进行解释和说明。
作为示例,当第一模型和第二模型均包括N个网络层,且第一模型的各个网络层的目标计算精度如图2-4任一图所示、第二模型的各个网络层的计算精度均为FP32时,则S13具体可以为:根据所述目标梯度值,对图7所示的第二模型进行参数更新,得到更新后的第二模型。
另外,由于S13的具体实施方式可以与S12的具体实施方式相对应,也就是说,当S12中采用不同的具体实施方式时,则S13也将采用相对应的具体实施方式,因而,为了降低精度损失带来的训练效果损失,S13还可以采用另一种实施方式,且该实施方式将在方式实施例二的步骤S84-S85中进行具体介绍。
以上为方法实施例一提供的模型训练方法,可以根据第一模型的任务类型,确定第一模型中各个网络层的目标计算精度,然后,基于第一模型中各个网络层的目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值,以便根据该目标梯度值对第二模型进行参数更新。在本实施例中,由于不同任务类型所需求的计算精度不同,因而,根据任务类型确定的目标计算精度能够更适应于该任务类型对精度的需求,从而使得在第一模型基于目标计算精度进行计算的过程中,不但可以减少在工作节点上的资源消耗和提升在工作节点上的计算加速(尤其是对大数据量的计算加速),还可以降低因第一模型的计算精度损失带来的对第二模型的训练效果损失。
以上为方法实施例一提供的模型训练方法的具体实施方式,在该实施方式中,可以基于目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值。
然而,为了避免因第一模型的精度损失导致在后向计算过程中产生梯度弥散现象,从而进一步降低因第一模型精度损失带来的对第二模型的训练效果损失,本申请还提供了另一种模型训练方法,下面将在方法实施例二中结合附图进行解释和说明。
方法实施例二
方法实施例二是在方法实施例一的基础上进行的改进,为了简要起见,方法实施例二中与方法实施例一中内容相同的部分,在此不再赘述。
参见图8,该图为本申请方法实施例二提供的模型训练方法的流程图。
本申请实施例提供的应用于一种工作节点的模型训练方法,包括S81-S82:
S81:根据第一模型的任务类型,确定第一模型中各个网络层的目标计算精度。
S81的具体实施方式和方法实施例一中的S11的具体实施方式相同,在此不再赘述。
S82:基于目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,并对经该后向计算得到的梯度值进行放大,得到目标梯度值。
在S82中,可以将经该后向计算得到的梯度值放大预设倍数,且该预设倍数可以预先设定。
为了便于解释和理解S82,下面将结合S82的一种实施方式进行说明。
作为一种具体实施方式,S82具体可以包括步骤S821-S822:
S821:基于该目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,获取经后向计算得到的第一个梯度值,并将第一个梯度值与一个预设的超参数进行相乘,得到放大后的梯度值。
S822:利用放大后的梯度值继续后向计算,直至该后向计算结束后得到目标梯度值。
为了便于区分和理解,本申请将步骤S821中涉及到的“预设的超参数”标记为grad_scale参数,比如1000。
grad_scale参数可以用于避免因精度损失导致的梯度弥散现象。而且,当经后向计算得到的第一个梯度值与grad_scale参数进行相乘之后,能够放大该经后向计算得到的第一个梯度值,从而使之后的后向计算过程中的每一梯度值均被放大,进而能够有效地避免梯度弥散现象的发生。
S83:缩小目标梯度值,以还原得到经后向计算得到的梯度值。
作为示例,当在步骤S82中将经该后向计算得到的梯度值乘以预设的超参数(grad_scale参数)进行扩大时,则S83具体可以为:将目标梯度值除以该超参数,得到还原后的梯度值。
由于为了避免梯度弥散现象的发生,在步骤S821中将后向计算过程中得到的第一个梯度值扩大了grad_scale倍,如此使得经后向计算得到的各个网络层的目标梯度值均扩大了grad_scale倍,因而,为了获得后向计算得到的实际梯度值,需要将目标梯度值缩小grad_scale倍,这样便能够将扩大后的梯度值还原为经后向计算实际应获得的梯度值(也就是,还原后的梯度值)。
S84:利用还原后的梯度值,对第二模型进行参数更新,完成本轮训练;其中,在对第二模型进行参数更新之前,第一模型与第二模型的网络结构和网络参数相同、且第一模型中的全部或部分网络层的计算精度低于第二模型的网络层的计算精度。
S84的具体实施方式与方法实施例一中的S13的具体实施方式相同,在此不再赘述。
以上为本申请方法实施例二提供的模型训练方法,当利用第一模型的训练数据进行前向计算和后向计算时,可以将获取的经后向计算得到的第一个梯度值与grad_scale参数进行相乘得到放大后的梯度值,并利用该放大后的梯度值继续该后向计算,直至后向计算结束后得到目标梯度值,还利用由该目标梯度值除以超参数后得到的还原后的梯度值,对第二模型进行参数更新。如此,由于将经后向计算得到的第一个梯度值扩大grad_scale倍后,能够有效地避免因后向计算得到的第一个梯度值较小而导致的梯度弥散现象的发生,从而能够有效地提高经后向计算获得的各个梯度值的计算精度,进而能够有效地降低因第一模型的计算精度损失带来的对第二模型的训练效果损失。
以上为方法实施例一和方法实施例二提供的模型训练方法的具体实施方式,而且,在这些实施方式中,均介绍了对第二模型的一轮训练。
然而,通常情况下,为了提升对第二模型的训练效果,使其能够对其任务(比如语音识别、人脸识别等)具有较好的能力,可以对第二模型进行多轮训练,因而,本申请还提供了又一种模型训练方法,下面将在方法实施例三中结合附图进行解释和说明。
方法实施例三
方法实施例三是在方法实施例一或方法实施例二的基础上进行的改进,为了便于解释和说明,下面将以在方法实施例一的基础上进行的改进为例进行说明,而且,方法实施例三中和方法实施例一中内容相同的部分,为了简要起见,在此不再赘述。
参见图9,该图为本申请方法实施例三提供的模型训练方法的流程图。
本申请实施例提供的应用于一种工作节点的模型训练方法,包括:
S91:根据第一模型的任务类型,确定第一模型中各个网络层的目标计算精度。
S92:基于该目标计算精度,利用第一模型的训练数据进行前向计算和后向计算,得到第一模型的各个网络层的网络参数的目标梯度值。
S93:根据目标梯度值,对第二模型进行参数更新,完成本轮训练;其中,在对第二模型进行参数更新之前,第一模型与第二模型的网络结构和网络参数相同、且第一模型中的全部或部分网络层的计算精度低于第二模型的网络层的计算精度。
需要说明的是,步骤S91-S93的具体实施方式分别与上述方法实施例一中的S11-S13的具体实施方式相同,为了简要起见,在此不再赘述。
S94:判断本轮训练是否达到预设条件,若是,则执行S96;若否,则执行S95。
预设条件可以预先设定,尤其可以预先根据应用场景设定。例如,预设条件可以根据模型训练轮数进行设定,也可以根据模型训练结果所达到的效果进行设定。
为了便于解释和理解S94,下面将结合两个示例进行说明。
作为第一示例,当预设条件根据模型训练轮数进行设定时,则S94具体可以为:判断本轮训练所对应的训练轮数是否达到目标训练轮数,若是,则执行S96;若否,则执行S95。
本轮训练所对应的训练轮数用于记录从对第二模型进行训练开始到本轮训练为止所进行的训练总轮数。例如,当本轮训练是第3轮训练时,则本轮训练所对应的训练轮数为3。
目标训练轮数可以预先设定,尤其可以预先根据应用场景设定。
另外,作为第一示例的具体实施方式,当预设条件根据模型训练轮数设定时,则S94具体可以为:利用公式(1)来判断本轮训练所对应的训练轮数是否达到目标训练轮数,若是,则执行S96;若否,则执行S95。
result=nbatch%syncfreq (1)
式中,nbatch用于表示本轮训练所对应的训练轮数;syncfreq用于表示目标训练轮数;%用于表示取余运算;result用于表示本轮训练所对应的训练轮数对于目标训练轮数的取余结果,而且,当result=0时,表示本轮训练所对应的训练轮数达到了目标训练轮数;当result≠0时,表示本轮训练所对应的训练轮数没有达到目标训练轮数。
需要说明的是,上述实施方式仅是第一示例的一种实施方式,然而,本申请还可以采用其他的实施方式实现第一示例,本申请对此不作具体限定。
以上为第一示例的相关内容,在该示例中,可以通过判断本轮训练所对应的训练轮数是否达到目标训练轮数,来确定本轮训练是否达到预设条件。
作为第二示例,当预设条件根据模型训练结果所达到的效果进行设定时,则S94具体可以为:判断本轮训练的训练结果是否达到目标训练结果,若是,则执行S96;若否,则执行S95。
本轮训练的训练结果用于记录本轮训练所得的第二模型能够达到的效果;而且,本轮训练的训练结果可以利用第二模型在训练过程中所使用的目标函数进行衡量,也可以利用其他指标进行衡量,本申请对此不作具体限定。
目标训练结果可以预先设定,尤其可以预先根据应用场景设定。
以上为第二示例的相关内容,在该示例中,可以通过本轮训练的训练结果是否达到目标训练结果,来确定本轮训练是否达到预设条件。
以上为S94的具体实施方式。
S95:将经本轮训练后的第二模型的计算精度按照目标计算精度进行转换,得到更新后的第一模型,并返回执行步骤S92。
为了便于解释和理解,下面将结合三个示例进行说明。
作为第一示例,S95具体可以为:将经本轮训练后的第二模型的计算精度(比如图7所示)按照普通处理任务的目标计算精度(比如图2所示)进行转换,将经精度转换后的第二模型作为更新后的第一模型,并返回执行步骤S92。
作为第二示例,S95具体可以为:将经本轮训练后的第二模型的计算精度(比如图7所示)按照图像处理任务的目标计算精度(比如图4所示)进行转换,将经精度转换后的第二模型作为更新后的第一模型,并返回执行步骤S92。
作为第三示例,S95具体可以为:将经本轮训练后的第二模型的计算精度(比如图7所示)按照序列处理任务的目标计算精度(比如图3所示)进行转换,将经精度转换后的第二模型作为更新后的第一模型,并返回执行步骤S92。
需要说明的是,在上述三个示例中,第一模型在更新前后的计算精度不变,即一直是目标计算精度,但第一模型在更新前后的模型参数发生了变化,也就是说,更新后的第一模型,相比于更新前具有更好的任务处理能力。此时,第一模型与第二模型的网络结构和网络参数仍相同,且第一模型的目标计算精度仍低于第二模型的计算精度。
以上为S95的具体实施方式。
S96:结束模型训练。
以上为本申请方法实施例三提供的模型训练方法的具体实施方式,在该实施方式中,可以在进行本轮训练之后的下一轮训练时,将经本轮训练后的第二模型的计算精度按照目标计算精度进行转换,得到更新后的第一模型,并继续基于目标计算精度,利用更新后的第一模型的训练数据进行前向计算和后向计算。如此,经过多轮训练所得的第二模型将具有较好的任务处理能力。
上述方法实施例一至方法实施例三所提供的模型训练方法均可以应用于一种工作节点,使得该工作节点能够通过训练得到训练效果较好的第二模型。
另外,为了提高对大数据量的训练数据的训练效率,还可以将上述方法实施例一至方法实施例二提供的任一工作节点应用到包括预设数目的工作节点和一个参数更新服务器的分布式训练系统中,以便实现模型的分布式训练。
其中,预设数目可以预先设定,例如,预设数目可以预先设定为4的倍数,也就是说,预设数目可以预先设定为4、8、12、……、4×M中的任一数值,其中,M用于表示倍数,且M可以预先设定。
为了便于解释和理解分布式训练系统,下面将以包括4个工作节点的分布式训练系统为例进行说明。
图10所示的分布式训练系统100中包括第1个工作节点101至第4个工作节点104、以及参数更新服务器105;而且,第1个工作节点101至第4个工作节点104分别可以与参数更新服务器105进行通信。
需要说明的是,上述示例是以包括4个工作节点的分布式训练系统为例对分布式训练系统进行说明的。然而,在本申请提供的分布式训练系统中可以包括两个或两个以上的工作节点。
另外,在分布式训练系统中,为了提高模型的训练效率,可以将所有待训练的训练数据按照预设切割算法切割为至少一份训练数据子集,并将每份训练数据子集分发至各个工作节点,以便各个工作节点能够利用其接收到的训练数据子集进行模型训练。如此,在分布式训练系统中,各个工作节点只需根据其接收到的训练数据子集进行模型训练即可,无需根据所有待训练的训练数据进行训练,提高了模型的训练效率,使得该分布式训练系统能够根据大数据量的训练数据进行快速高效的模型训练。
此外,为了提高模型训练的训练效果,在分布式训练系统中,还需要由参数更新服务器将各个工作节点的训练结果进行汇总,以便能够得到训练效果更好的模型。
基于上述提供的分布式训练系统的相关内容,本申请还提供了一种应用于参数更新服务器的模型训练方法,下面将结合方法实施例四进行解释和说明。
方法实施例四
参见图11,该图为本申请方法实施例四提供的模型训练方法的流程图。
本申请实施例提供的应用于一种参数更新服务器的模型训练方法,该方法中的各个步骤的执行主体是参数更新服务器,该方法包括步骤S111-S113:
S111:获取各个工作节点上传的第一数据,该工作节点为上述方法实施例一至方法实施例三提供的任一工作节点。
第一数据指的是在对应工作节点上利用方法实施例一至方法实施例三所提供的任一模型训练方法进行训练所获得的模型相关数据。在一种实现方式中,第一数据可以为对应工作节点在每一轮训练得到的目标梯度值,也可以为对应工作节点进行至少一轮训练后得到的第二模型。
为了便于解释和理解第一数据,下面将结合两个示例进行说明。
作为第一示例,如图10所示,当在各个工作节点上均利用方法实施例一和方法实施例二所提供的任一模型训练方法获得目标梯度值,且第一数据为对应工作节点在每一轮训练得到的目标梯度值时,则S11具体可以为:参数更新服务器105获取第1个工作节点101上传的每一轮训练得到的目标梯度值、第2个工作节点102上传的每一轮训练得到的目标梯度值、第3个工作节点103上传的每一轮训练得到的目标梯度值、以及第4个工作节点104上传的每一轮训练得到的目标梯度值。
在上述所提供的第一示例中,各个工作节点在每完成一轮训练后便将获得的目标梯度值上传至参数更新服务器,以便该参数更新服务器在收集到各个工作节点上传的目标梯度值后,对这些目标梯度值进行统计计算,以重新计算出能够适用于各个工作节点的梯度值。
以上为第一示例的相关内容。
作为第二示例,如图10所示,当在各个工作节点上均利用方法实施例三所提供的模型训练方法进行至少一轮训练后得到第二模型时,则S11具体可以为:参数更新服务器105获取第1个工作节点101上传的进行至少一轮训练后得到的第二模型、第2个工作节点102上传的进行至少一轮训练后得到的第二模型、第3个工作节点103上传的进行至少一轮训练后得到的第二模型、以及第4个工作节点104上传的进行至少一轮训练后得到的第二模型。
在上述所提供的第二示例中,各个工作节点只需将经过至少一轮训练后得到第二模型上传至参数更新服务器即可,无需在每轮训练完成后便与参数更新服务器进行通信,如此极大地降低了工作节点与参数更新服务器之间的通信次数,节省了工作节点与参数更新服务器之间的通信时间,从而提高了模型的训练效率。
以上为第二示例的相关内容。
需要说明的是,第一示例和第二示例均是以4个工作节点与参数更新服务器进行通信为例进行说明的。然而,在本申请中不限定与参数更新服务器进行通信的工作节点的数目。
以上为S111的具体实施方式,在该实施方式中,参数更新服务器可以获取各个工作节点上传的第一数据。
S112:利用各个工作节点上传的第一数据,生成第二数据。
第二数据是由参数更新服务器综合各个工作节点上传的第一数据生成的可以应用于对应工作节点的数据。
例如,若第一数据为对应工作节点在每一轮训练得到的目标梯度值,那么第二数据则为参数更新服务器生成的该对应工作节点的梯度值;若第一数据为对应工作节点进行至少一轮训练后得到的第二模型,那么第二数据则为参数更新服务器生成的该对应工作节点的第二模型。
作为一种实施方式,S112具体可以为:参数更新服务器根据各个工作节点上传的第一数据,利用预设生成算法,生成第二数据。
预设生成算法可以是任一种应用于参数更新服务器的能够根据各个工作节点上传的第一数据生成第二数据的算法,本申请对此不作具体限定。
S113:将第二数据下发至各个工作节点,所述第二数据用于对各个工作节点的第二模型进行参数更新。
作为一种实施方式,当第二数据为梯度值时,则S113具体可以为:将第二数据下发至各个工作节点,以便各个工作节点利用第二数据更新第二模型的模型参数。
作为另一种实施方式,当第二数据为第二模型时,则将第二数据下发至各个工作节点,以便各个工作节点的利用第二数据替换该工作节点上的第二模型。
具体来讲,各个工作节点的本地更新模块在接收到第二数据后,利用第二数据对其存储的第二模型进行参数更新或模型更新,从而得到更新后的第二模型;接下来,对计算引擎中的第一模型进行更新,即,本地更新模块将更新后的第二模型按照目标计算精度进行转换,并将精度转换后的第二模型下发到计算引擎,计算引擎将精度转换后的第二模型替换掉之前的第一模型,或者,本地更新模块将更新后的第二模型下发到计算引擎,由计算引擎将该第二模型按照目标计算精度进行转换,并将精度转换后的第二模型替换掉之前的第一模型。此时,第一模型与第二模型的网络结构和网络参数相同,且第一模型和第二模型的计算精度不变。
此时,若分布式训练还未满足训练结束条件,比如未达到分布式训练的预设轮数,则继续下一轮的分布式训练,比如,各个工作节点重新开始执行方法实施例一中的S12、或方法实施例二中的S82、或方法实施例三中的S92。
需要说明的是,在参数更新服务器的工作过程中,可以使用block_lr参数(简称为blr)和block_momentom参数(简称为bm)参与运算,这两个参数是全局超参数,在进行分布式训练之前,需要预先设定这两个参数。其中,blr可以预先设定为1,且bm可以使用公式(2)进行计算。
Figure BDA0002047364680000241
式中,Numwork表示分布式训练系统中的工作节点总数目,bm表示block_momentom参数。
以上为本申请方法实施例三提供的模型训练方法的具体实施方式,在该实施方式中,可以由各个工作节点向参数更新服务器上传第一数据,以及参数更新服务器综合所有工作节点所上传的第一数据生成第二数据,以便各个工作节点能够根据其接收的第二数据对该工作节点上的第二模型进行参数更新或模型更新。可见,当多个工作节点形成了分布式系统时,由于多个工作节点可以同时参与训练,提高了模型训练速度,尤其可以实现大数量的训练加速,此外,在每一个工作节点上,在其模型训练过程中不但可以减少系统资源消耗,还可以降低因精度损失带来的在分布式训练中的训练效果损失。
基于上述方法实施例一至方法实施例三所提供的模型训练方法,本申请实施例还提供了一种工作节点,下面将结合附图进行解释和说明。
装置实施例一
本实施例将对一种工作节点进行介绍,相关内容请参见上述方法实施例一至方法实施例三的介绍。
参见图12,该图为本申请装置实施例一提供的工作节点的结构示意图,该工作节点1200包括:
目标计算精度确定单元1201,用于根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度;
目标梯度值计算单元1202,用于基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值;
第二模型更新单元1203,用于根据所述目标梯度值,对第二模型进行参数更新,完成本轮训练;
其中,在对所述第二模型进行参数更新之前,所述第一模型与所述第二模型的网络结构和网络参数相同、且所述第一模型中的全部或部分网络层的计算精度低于所述第二模型的网络层的计算精度。
作为一种实施方式,所述第一模型中各个网络层的目标计算精度为:
所述第一模型的最后一层的计算精度为第一精度,所述第一模型中除最后一层以外的其他网络层的计算精度低于或等于所述第一精度。
作为一种实施方式,所述目标计算精度确定单元1201,包括:
第一目标计算精度设置子单元,用于若所述第一模型的任务类型为图像处理任务,则将所述第一模型的第一层和最后一层设置为所述第一精度,并将所述第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于所述第一精度;
第二目标计算精度设置子单元,用于若所述第一模型的任务类型为序列处理任务,则将所述第一模型的最后一层设置为所述第一精度,并将所述第一模型中除最后一层以外的其它网络层的计算精度设置为低于所述第一精度。
作为一种实施方式,所述目标梯度值计算单元1202,包括:
目标梯度值计算子单元,用于基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,并对经所述后向计算得到的梯度值进行放大,得到目标梯度值;
相应地,所述第二模型更新单元1203,包括:
梯度值还原子单元,用于缩小所述目标梯度值,以还原得到经所述后向计算得到的梯度值;
第二模型更新子单元,用于利用还原后的梯度值,对第二模型进行参数更新。
作为一种实施方式,所述目标梯度值计算子单元,包括:
梯度值放大模块,用于获取经所述后向计算得到的第一个梯度值,并将所述第一个梯度值与一个预设的超参数进行相乘,得到放大后的梯度值;
目标梯度值确定模块,用于利用所述放大后的梯度值继续所述后向计算,直至所述后向计算结束后得到所述目标梯度值;
相应地,所述梯度值还原子单元,包括:
目标梯度值缩小模块,用于将所述目标梯度值除以所述超参数。
作为一种实施方式,所述工作节点1200还包括:
第一模型更新单元,用于在进行所述本轮训练之后的下一轮训练时,将经所述本轮训练后的第二模型的计算精度按照所述目标计算精度进行转换,得到更新后的第一模型,并调用所述目标梯度值计算单元继续基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算。
基于上述方法实施例四所提供的模型训练方法,本申请实施例还提供了一种参数更新服务器,下面将结合附图进行解释和说明。
装置实施例二
本实施例将对一种参数更新服务器进行介绍,相关内容请参见上述方法实施例四的介绍。
参见图13,该图为本申请装置实施例二提供的参数更新服务器的结构示意图,该参数更新服务器1300包括:
第一数据获取单元1301,用于获取各个工作节点上传的第一数据,所述工作节点为上述模型训练装置的任一实施方式所提供的工作节点;
第二数据生成单元1302,用于利用各个工作节点上传的第一数据,生成第二数据;
模型参数更新单元1303,用于将所述第二数据下发至各个工作节点,所述第二数据用于对各个工作节点的第二模型进行参数更新。
作为一种实施方式,所述第一数据为对应工作节点在每一轮训练得到的目标梯度值,或者,所述第一数据为对应工作节点进行至少一轮训练后得到的第二模型。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本申请各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (13)

1.一种模型训练方法,其特征在于,所述方法应用于一种工作节点,所述方法包括:
根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度;所述第一模型的任务类型包括图像处理任务或序列处理任务,所述第一模型的最后一层的计算精度为第一精度,所述第一模型中除最后一层以外的其他网络层的计算精度低于或等于所述第一精度;
基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值;所述训练数据是与所述第一模型的任务类型相关的数据;
根据所述目标梯度值,对第二模型进行参数更新,完成本轮训练;
其中,在对所述第二模型进行参数更新之前,所述第一模型与所述第二模型的网络结构和网络参数相同、且所述第一模型中的全部或部分网络层的计算精度低于所述第二模型的网络层的计算精度。
2.根据权利要求1所述的方法,其特征在于,所述根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度,包括:
若所述第一模型的任务类型为图像处理任务,则将所述第一模型的第一层和最后一层设置为所述第一精度,并将所述第一模型中除第一层和最后一层以外的其它网络层的计算精度设置为低于所述第一精度;
若所述第一模型的任务类型为序列处理任务,则将所述第一模型的最后一层设置为所述第一精度,并将所述第一模型中除最后一层以外的其它网络层的计算精度设置为低于所述第一精度。
3.根据权利要求1所述的方法,其特征在于,所述利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值,包括:
利用所述第一模型的训练数据进行前向计算和后向计算,并对经所述后向计算得到的梯度值进行放大,得到目标梯度值;
相应地,所述根据所述目标梯度值,对第二模型进行参数更新,包括:
缩小所述目标梯度值,以还原得到经所述后向计算得到的梯度值;
利用还原后的梯度值,对第二模型进行参数更新。
4.根据权利要求3所述的方法,其特征在于,所述对经所述后向计算得到的梯度值进行放大,得到目标梯度值,包括:
获取经所述后向计算得到的第一个梯度值,并将所述第一个梯度值与一个预设的超参数进行相乘,得到放大后的梯度值;
利用所述放大后的梯度值继续所述后向计算,直至所述后向计算结束后得到所述目标梯度值;
相应地,所述缩小所述目标梯度值,包括:
将所述目标梯度值除以所述超参数。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在进行所述本轮训练之后的下一轮训练时,将经所述本轮训练后的第二模型的计算精度按照所述目标计算精度进行转换,得到更新后的第一模型,并继续执行所述基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算的步骤。
6.一种模型训练方法,其特征在于,所述方法应用于一种参数更新服务器,所述方法包括:
获取各个工作节点上传的第一数据,所述工作节点为权利要求1至5任一项所述的工作节点;
利用各个工作节点上传的第一数据,生成第二数据;
将所述第二数据下发至各个工作节点,所述第二数据用于对各个工作节点的第二模型进行参数更新。
7.根据权利要求6所述的方法,其特征在于,所述第一数据为对应工作节点在每一轮训练得到的目标梯度值,或者,所述第一数据为对应工作节点进行至少一轮训练后得到的第二模型。
8.一种工作节点,其特征在于,包括:
目标计算精度确定单元,用于根据第一模型的任务类型,确定所述第一模型中各个网络层的目标计算精度;所述第一模型的任务类型包括图像处理任务或 序列处理任务,所述第一模型的最后一层的计算精度为第一精度,所述第一模型中除最后一层以外的其他网络层的计算精度低于或等于所述第一精度;
目标梯度值计算单元,用于基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,得到所述第一模型的各个网络层的网络参数的目标梯度值;所述训练数据是与所述第一模型的任务类型相关的数据;
第二模型更新单元,用于根据所述目标梯度值,对第二模型进行参数更新,完成本轮训练;
其中,在对所述第二模型进行参数更新之前,所述第一模型与所述第二模型的网络结构和网络参数相同、且所述第一模型中的全部或部分网络层的计算精度低于所述第二模型的网络层的计算精度。
9.根据权利要求8所述的工作节点,其特征在于,所述目标梯度值计算单元,包括:
目标梯度值计算子单元,用于基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算,并对经所述后向计算得到的梯度值进行放大,得到目标梯度值;
相应地,所述第二模型更新单元,包括:
梯度值还原子单元,用于缩小所述目标梯度值,以还原得到经所述后向计算得到的梯度值;
第二模型更新子单元,用于利用还原后的梯度值,对第二模型进行参数更新。
10.根据权利要求9所述的工作节点,其特征在于,所述目标梯度值计算子单元,包括:
梯度值放大模块,用于获取经所述后向计算得到的第一个梯度值,并将所述第一个梯度值与一个预设的超参数进行相乘,得到放大后的梯度值;
目标梯度值确定模块,用于利用所述放大后的梯度值继续所述后向计算,直至所述后向计算结束后得到所述目标梯度值;
相应地,所述梯度值还原子单元,包括:
目标梯度值缩小模块,用于将所述目标梯度值除以所述超参数。
11.根据权利要求8至10任一项所述的工作节点,其特征在于,还包括:
第一模型更新单元,用于在进行所述本轮训练之后的下一轮训练时,将经所述本轮训练后的第二模型的计算精度按照所述目标计算精度进行转换,得到更新后的第一模型,并调用所述目标梯度值计算单元继续基于所述目标计算精度,利用所述第一模型的训练数据进行前向计算和后向计算。
12.一种参数更新服务器,其特征在于,包括:
第一数据获取单元,用于获取各个工作节点上传的第一数据,所述工作节点为权利要求8至10任一项所述的工作节点;
第二数据生成单元,用于利用各个工作节点上传的第一数据,生成第二数据;
模型参数更新单元,用于将所述第二数据下发至各个工作节点,所述第二数据用于对各个工作节点的第二模型进行参数更新。
13.根据权利要求12所述的参数更新服务器,其特征在于,所述第一数据为对应工作节点在每一轮训练得到的目标梯度值,或者,所述第一数据为对应工作节点进行至少一轮训练后得到的第二模型。
CN201910362862.1A 2019-04-30 2019-04-30 一种模型训练方法、工作节点及参数更新服务器 Active CN110097188B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910362862.1A CN110097188B (zh) 2019-04-30 2019-04-30 一种模型训练方法、工作节点及参数更新服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910362862.1A CN110097188B (zh) 2019-04-30 2019-04-30 一种模型训练方法、工作节点及参数更新服务器

Publications (2)

Publication Number Publication Date
CN110097188A CN110097188A (zh) 2019-08-06
CN110097188B true CN110097188B (zh) 2021-07-06

Family

ID=67446633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910362862.1A Active CN110097188B (zh) 2019-04-30 2019-04-30 一种模型训练方法、工作节点及参数更新服务器

Country Status (1)

Country Link
CN (1) CN110097188B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443310B (zh) * 2019-08-07 2022-08-09 浙江大华技术股份有限公司 比对分析系统的更新方法、服务器及计算机存储介质
CN117474045A (zh) * 2022-07-15 2024-01-30 华为技术有限公司 一种模型训练方法及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108418825A (zh) * 2018-03-16 2018-08-17 阿里巴巴集团控股有限公司 风险模型训练、垃圾账号检测方法、装置以及设备
CN109257699A (zh) * 2018-11-15 2019-01-22 电子科技大学 一种利用梯度提升树的无线传感器网络定位方法
CN109600255A (zh) * 2018-12-04 2019-04-09 中山大学 一种去中心化的参数服务器优化算法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012079080A (ja) * 2010-10-01 2012-04-19 Nippon Hoso Kyokai <Nhk> パラメタ学習装置およびそのプログラム
US9390370B2 (en) * 2012-08-28 2016-07-12 International Business Machines Corporation Training deep neural network acoustic models using distributed hessian-free optimization
CN106650931A (zh) * 2016-12-09 2017-05-10 曙光信息产业(北京)有限公司 混合精度深度学习算法
CN107633242A (zh) * 2017-10-23 2018-01-26 广州视源电子科技股份有限公司 网络模型的训练方法、装置、设备和存储介质
CN108304918B (zh) * 2018-01-18 2020-08-28 中兴飞流信息科技有限公司 一种数据并行的深度学习的参数交换方法和系统
CN108491928B (zh) * 2018-03-29 2019-10-25 腾讯科技(深圳)有限公司 模型参数发送方法、装置、服务器及存储介质
CN109032671B (zh) * 2018-06-25 2022-05-03 电子科技大学 一种基于数据并行策略的分布式深度学习方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108418825A (zh) * 2018-03-16 2018-08-17 阿里巴巴集团控股有限公司 风险模型训练、垃圾账号检测方法、装置以及设备
CN109257699A (zh) * 2018-11-15 2019-01-22 电子科技大学 一种利用梯度提升树的无线传感器网络定位方法
CN109600255A (zh) * 2018-12-04 2019-04-09 中山大学 一种去中心化的参数服务器优化算法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A DAG Model of Synchronous Stochastic Gradient Descent in Distributed Deep Learning;Shaohuai Shi et al;《2018 IEEE 24th International Conference on Parallel and Distributed Systems》;20181231;全文 *
深度神经网络并行化研究综述;朱虎明等;《计算机学报》;20181231;全文 *

Also Published As

Publication number Publication date
CN110097188A (zh) 2019-08-06

Similar Documents

Publication Publication Date Title
EP3380939B1 (en) Adaptive artificial neural network selection techniques
US20190228762A1 (en) Method and apparatus for optimizing model applicable to pattern recognition, and terminal device
CN107729322B (zh) 分词方法及装置、建立句子向量生成模型方法及装置
CN110097188B (zh) 一种模型训练方法、工作节点及参数更新服务器
CN111612147A (zh) 深度卷积网络的量化方法
CN110858973A (zh) 小区网络流量预测方法及装置
CN108021982A (zh) 数据传输方法和系统、电子设备
WO2017124930A1 (zh) 一种特征数据处理方法及设备
CN113783717B (zh) 智慧城市网络流量预测方法及系统
WO2017090475A1 (ja) 情報処理システム、関数作成方法および関数作成プログラム
CN110597292A (zh) 无人机集群作业规划方法及装置
CN110691000B (zh) 基于FAHP与规划图融合的Web服务组合方法
CN114676522B (zh) 融合gan和迁移学习的气动形状优化设计方法及系统及设备
CN111832693B (zh) 神经网络层运算、模型训练方法、装置及设备
CN114995729A (zh) 一种语音绘图方法、装置及计算机设备
CN114239237A (zh) 一种支持数字孪生的配电网仿真场景生成系统与方法
CN114972695B (zh) 一种点云生成方法、装置、电子设备及存储介质
CN110610140A (zh) 人脸识别模型的训练方法、装置、设备及可读存储介质
CN111325343B (zh) 神经网络的确定、目标检测、智能行驶控制方法及装置
CN112149826B (zh) 深度神经网络推理计算中一种基于Profile图的优化方法
CN112561050B (zh) 一种神经网络模型训练方法及装置
CN111639490B (zh) 楼盘数据处理方法、装置、电子设备和存储介质
CN111738911B (zh) 图像风格转移方法及系统
CN104570759A (zh) 控制系统中点定位问题的快速二叉树法
CN115374126B (zh) 一种用于MySQL数据表的数据恢复方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant