CN110135573A - 一种深度学习模型的训练方法、计算设备以及*** - Google Patents

一种深度学习模型的训练方法、计算设备以及*** Download PDF

Info

Publication number
CN110135573A
CN110135573A CN201810104670.6A CN201810104670A CN110135573A CN 110135573 A CN110135573 A CN 110135573A CN 201810104670 A CN201810104670 A CN 201810104670A CN 110135573 A CN110135573 A CN 110135573A
Authority
CN
China
Prior art keywords
training
model
parameter
deep learning
model parameter
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.)
Granted
Application number
CN201810104670.6A
Other languages
English (en)
Other versions
CN110135573B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810104670.6A priority Critical patent/CN110135573B/zh
Publication of CN110135573A publication Critical patent/CN110135573A/zh
Application granted granted Critical
Publication of CN110135573B publication Critical patent/CN110135573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/58Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Electrically Operated Instructional Devices (AREA)

Abstract

本申请提供了一种深度学习模型的训练方法、训练***、计算设备以及计算机可读存储介质,涉及数据处理技术领域。所述训练方法包括:获取深度学习模型的模型参数;基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。本申请的技术方案,由于在多次训练的过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果。

Description

一种深度学习模型的训练方法、计算设备以及***
技术领域
本申请属于数据处理技术领域,尤其涉及一种深度学习模型的训练方法、深度学习模型的训练***、计算设备以及计算机可读存储介质。
背景技术
深度学***。
但是,由于深度神经网络模型本身的训练过程一般又会涉及很大量的计算,因此往往需要较长的训练周期,例如,使用3000万的训练数据在单个图形处理器(GPU)上一般需要训练20天以上,才能得到一个初步可用的模型。因此,如何缩短模型训练的周期,快速支持各个业务场景是迫切需要解决的技术难题。
对于此,业界有多种业已成熟的深度学习框架,为了提高训练效率,使用了分布式技术来进行模型训练。例如,Google公司发布的Tensorflow,就可以支持多GPU计算、分布式计算。
Tensorflow是Google发布的第二代深度学习框架,在当前发布的版本上可以支持分布式标准的分布式训练,它和MXNet都是基于有向无环图的计算执行框架,并且均包含两种训练方案,即分布式同步训练和普通异步式分布式训练,并且都是基于参数服务器实现的。用户在构造完单机单卡训练模型之后,使用Tensorflow提供的分布式训练接口可以很容易的将单机单卡训练过程自动的扩展成多机多卡分布式训练过程。虽然这两种方式在功能上能够支持任何模型的分布式训练过程,但是却并不能对所有的模型起到训练加速的作用,甚至可能出现分布式训练的计算速度慢于单机单卡训练速度。这主要是因为分布式加速的效果主要取决于模型本身的特点,对于模型参数量较大的模型来说,由于训练时每轮均要涉及参数服务器和工作节点间的通信,而通信带宽相对而言又是个缓慢的过程。因此无论是TensorFlow还是MXNet的同步或异步训练方式都不能很好的为这种模型进行训练加速。
目前,针对分布式学习框架,存在两种主流的分布式训练方案:同步训练以及普通的异步式训练方法。
1、同步训练过程
如图1所示,该例中以1机2卡为例,来说明同步训练方法的训练过程,该过程可以推广到多机多卡的训练过程。当1机2卡的环境启动时,用户提交的深度学***均时需要所有的计算节点都计算完成后才能进行,因此参数服务器必须等待所有计算节点完成梯度计算,这就是同步训练的关键点。另外,与单机单卡在训练时是只有一个计算节点参与计算的,假定一个迭代计算时,从数据库读取一批数量的数据,那么为了使n卡在一个步骤时的训练效果与单卡保持相同,必须使每个计算节点上读取的数据量是单卡一批数量的n分之一。
这种做法虽然能够与单机单卡的训练效果一致,但是其多机多卡并行计算时并不一定有加速效果,还可能有减速效果。这是因为多机多卡计算时,虽然每个计算节点各自承担了n分之一的计算量并且是并行的计算,总体计算时间缩短到了n分之一左右,但是却带来了机器与机器之间的通信开销,通信的内容是梯度和模型参数,由于单个计算节点计算的梯度量和模型参数量相同,所以通信量的大小与模型参数的大小与计算节点数量成正比。当模型的参数量较大时,通信会占据一个训练步骤的绝大部分时间。以神经网络机器翻译的神经网络机器翻译模型为例,神经网络机器翻译的模型是具有通过门循环单元制作的编码器、通过门循环单元制作的解码器和注意力机制的,由于计算量大,同时模型参数量更是巨大的,所以神经网络机器翻译模型在使用Tensorflow上多机多卡同步训练时由于通信量大且通信较为频繁,并且通信介质带宽是10Gbps时,其训练速度会比单机单卡还要慢。
2、普通异步训练过程
如图2所示,普通异步训练的大部分流程是和同步训练相同的,区别在于每个计算节点在计算出各自的梯度后,无须在参数服务器上做规约操作,参数服务器也无须等到所有的计算节点都计算出各自的梯度之后在更新本地参数。只要某个计算节点已经完成了梯度的计算,那么直接就可以加到参数服务器上的参数中,所以各个计算节点之间是异步计算的。
此种方法的缺点之一就是由于异步性的存在,其收敛性与单机训练情况不同,需要更加细致的调整参数,才能获得比较好的收敛性。另外,该种方法虽然没有了计算节点之间的同步开销,但是通信量从总体上看并没有任何变化,只是当两个计算节点的计算速度不同时,不会发生多个计算节点同时向参数服务器发送梯度而导致带宽拥挤拖慢整体运算速度的情况,但是加速比仍然不够理性。
由于上述深度学习模型的同步训练或普通的异步式训练存在上述诸多缺陷。因此,急需一种新的训练方案来提升训练速度,缩短训练周期。
发明内容
有鉴于此,本申请提供了一种深度学习模型的训练方法、深度学习模型的训练***、计算设备以及计算机可读存储介质,在深度学习模型进行训练时,首先将参数服务器上的模型参数拉取到工作服务器上,结合工作服务器上存储的训练数据对深度学习模型进行多次训练,并将训练生成的模型梯度依次进行累加,确定出累加梯度数据,对深度学习模型的训练为由多个有向无环图构成的有向有环图,然后将累加梯度数据输出至参数服务器,最后由参数服务器根据累加梯度数据更新模型参数,由于在多次训练的过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果,后续能够实现更好的翻译质量。
为实现上述目的,本申请提供技术方案如下:
根据本申请的第一方面,提出了一种深度学习模型的训练方法,包括:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
根据本申请的第二方面,提出了一种深度学习模型的训练***,包括参数服务器以及至少一个工作服务器,
所述工作服务器用于:获取所述参数服务器上存储的深度学习模型的模型参数,基于训练数据,使用所述模型参数对所述深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,将所述累加梯度数据输出,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
所述参数服务器用于:接收所述累加梯度数据,根据所述累加梯度数据更新所述深度学习模型的模型参数。
根据本申请的第三方面,提出了一种计算设备,包括:适于实现各指令的处理器以及存储设备,所述存储设备存储有多条指令,所述指令适于由处理器加载并执行:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
根据本申请的第四方面,提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序用于执行:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
由以上技术方案可见,本申请的深度学习模型的训练为由多个有向无环图构成的有向有环图,首先将参数服务器上的模型参数拉取到工作服务器上,结合工作服务器上存储的训练数据对深度学习模型进行多次训练,并将训练生成的模型梯度依次进行累加,确定出累加梯度数据,然后将累加梯度数据输出至参数服务器,最后由参数服务器根据累加梯度数据更新模型参数,由于在多次训练的过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果,后续能够实现更好的翻译质量。
为让本申请的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了现有技术中同步梯度训练过程的示意图;
图2示出了现有技术中普通异步梯度训练过程的示意图;
图3示出了本申请一种深度学习模型的训练***的结构示意图;
图4示出了本申请一种深度学习模型的训练***中工作服务器以及参数服务器之间的交互示意图;
图5示出了本申请一种深度学习模型的训练***中工作服务器的结构示意图;
图6示出了本申请一种深度学习模型的训练***中参数服务器的结构示意图;
图7示出了本申请一种深度学习模型的训练***中的实施方式二的结构示意图;
图8示出了本申请一种深度学习模型的训练***的实施方式二中工作服务器、参数服务器以及翻译服务器之间的交互示意图;
图9示出了本申请一种深度学习模型的训练***中翻译服务器的结构示意图;
图10示出了本申请的多轮间隔式异步更新训练方法的流程示意图;
图11示出了本申请一种深度学习模型的训练方法的流程示意图;
图12示出了本申请一种深度学习模型的训练方法的实施方式二的流程示意图;
图13示出了本申请一种深度学习模型的训练方法的实施方式三的流程示意图;
图14为本申请提供的具体实施例中收敛性曲线示意图;
图15示出了一具体实施例中的一有向有环图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面参考本申请的若干代表性实施方式,详细阐释本申请的原理和精神。
虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行。
下面首先介绍本申请所涉及的技术术语。
模型参数(model parameter):训练过程中学习到的模型参数(权重)。
PS(parameter server):参数服务器,用于在分布式模型训练中存储全局模型参数。
TensorFlow:谷歌第二代深度学习框架。
worker:工作服务器,分布式框架下的一个计算节点,在分布式模型训练中承担计算任务。
神经网络机器翻译(Neural Machine Translation,NMT):基于端到端的神经网络模型设计实现的机器翻译***。
收敛加速比:单卡方案下模型训练至收敛的绝对时间和分布式方案下模型训练至收敛的绝对时间之间的倍数关系。
Mini batch size:批处理数据量大小,min-batch是神经网络模型训练中的训练数据一次批处理的规模,mini-batch size是随即梯度下降法中最重要的超参数之一,它直接关系到训练的计算速度和收敛速度。
Momentum(梯度冲量):momentum模拟了物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向(梯度冲量),同时利用当前min-batch的梯度微调最终的更新方向。可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力。
learning rate:学习率,代表一次min-batch计算出的梯度在模型参数上的更新权重。
GPGPU:General Purpose Graphics Processing Unit.通用图形处理单元,通常用于高性能计算所用。目前深度学习由于计算量大,传统的CPU的计算速度已经不能满足需求,所以一般是用GPGPU来处理深度学习训练过程中的大规模计算。
多机多卡:指多台机器组成的集群,并且每台机器上装有多个GPGPU。这是用来对深度学习模型进行分布式训练的硬件环境。
BLEU值:一种评价神经网络机器翻译效果的指标,该指标越高越好。
计算加速比:相对于baseline的每秒钟处理的样本数的倍数。
大规模并行训练:指使用多机多卡进行深度学习模型的分布式训练。
同步训练:指在大规模并行训练的一次迭代中,所有Worker都计算出梯度后,再进行加和更新到Parameter Server中,关键点在于Worker与Worker之间需要互相等待。
异步训练:与同步训练相对应,指Worker与Worker之间不需要相互等待。
RNN:Recurrent Nurual Network,是很重要的一种神经网络,主要特征是具有自连接的特性,于是形成了一种循环结构,他的输出会自连接到输入,因此可看作是对时间序列任务的重要利器,即上一时刻的输出作为下一时刻的输入。
GRU:Gated Recurrent Unit。一种特殊的RNN结构。
Downpour SGD:一种异步的并行训练算法。
针对现有技术中深度学习模型的同步训练或普通的异步式训练方式在训练过程中存在的由于通信量大且通信较为频繁导致的训练速度慢的技术缺陷,本申请的申请人提出一种深度学习模型的训练***,其通过降低训练过程中的通信量以加快训练的迭代过程,最终达到加快训练速度的目的。
具体的,本申请的申请人发现在深度学习模型的训练过程中,工作服务器在本地根据模型参数进行多次训练时需要与参数服务器进行多次通信,这是造成现有训练过程缓慢的重要因素,而工作服务器在本地根据模型参数进行多次训练时使用有向有环图能够有效降低工作节点与参数服务器之间的通信次数,进而降低整个训练过程中的通信量,加快训练的迭代过程,以获得更好的加速和收敛效果。在本申请中,有向有环图是指从图中的一点出发,按照图中的箭头所指的方向走,还能回到该点。然而深度学习框架为了避免进入无限死循环无法执行有向有环图。具体的,如图15所示的一个有向有环图,其从节点a执行至节点b,由节点b执行至节点c,由节点c执行至节点a,然后再重复由节点a执行至节点b的过程。由于有向有环图是一个环,其不停的在a、b、c三个节点之间执行相关操作而无法结束,因此深度学习框架无法执行有环图。
基于此,本申请的申请人创造性的提出了将有向有环图分割为多个无环图,由深度学习框架分别执行多个有向无环图,最终实现了在深度学习框架里执行有向有环图,有效降低整个训练过程中的通信量,加快训练的迭代过程,获得更好的加速和收敛效果。
具体的,本申请采用将构图和实际运行分开的策略。构图后,完整的架构图如图10所示,其从整体而言是一个有环图,由于深度学习框架无法执行有向有环图,因此在本申请的图10所示的有环图中,首先将其切割成三个子图,如图10所示,第一个子图即为图10中的虚线细箭头,其为无环图。第二个子图为图中的实线箭头,其包括两个无环图,第一个无环图包括训练数据至网络训练之间的实线箭头、网络训练至模型梯度之间的实线箭头以及模型参数副本至网络训练之间的实线箭头,其为无环图;第二个无环图包括模型梯度至模型参数副本之间的实线箭头以及模型梯度与累加梯度之间的实线箭头,其为无环图。第三个子图即为图10中的虚线粗箭头,其为无环图。通过将图10的有环图切割为三个子图,每个子图均由无环图组成,后续深度学习框架即可依次执行每个子图,从而在深度学习框架中实现了有向无环图。
下面介绍本申请的具体技术方案。本申请提出了一种深度学习模型的训练***,图3示出了该深度学习模型的训练***的结构示意图,请参阅图3,该训练***包括至少一个工作服务器100以及参数服务器200。图4示出了训练***中工作服务器100以及参数服务器300之间的交互示意图,图10示出了本申请的深度学习模型的训练方法的流程示意图,请参阅图4、图10,在本申请中,对深度学习模型的训练为由多个有向无环图构成的有向有环图,在本申请中,所述有向无环图为从图中的一点出发,按照图中的箭头所指的方向走,无法回到该点的图,所述有向有环图为从图中的一点出发,按照图中的箭头所指的方向走,还能回到该点的图,具体的:
S1:所述工作服务器获取参数服务器上存储的深度学习模型的模型参数,即切割后的第一个子图。本申请的一种实施方式中,如图10所示,每个工作服务器上均开辟有一段存储本地模型副本的存储空间(即图10中的模型参数副本),将模型参数从参数服务器上拉取到工作服务器后存储至本地模型参数副本。
S2:获取预设的训练数据以及训练次数m,m为正整数。
在本申请的一种实施方式中,预设了多个批量的训练数据。
S3:基于所述训练数据,使用所述模型参数对所述深度学习模型进行m次训练,将m次训练生成的模型梯度依次进行累加,确定出累加梯度数据,即切割后的第二个子图。在本申请的一种实施方式中,每个工作服务器上开辟有一段存储累积梯度的存储空间,用于存储累加梯度数据。
在本申请的一种实施方式中,进行m次训练的具体过程如下:
以1至m中的任意一个数k为例进行说明,则基于所述训练数据,使用所述模型参数对所述深度学习模型进行第k次训练,所述k为1、2、3、……m,包括:
从所述训练数据中获取出一批量的训练数据,作为第k次的训练数据;
将第k-1次的模型梯度应用于第k-1次的模型参数,得到第k次的模型参数,其中,当k=1时,第1次的模型参数即为参数服务器上存储的深度学习模型的模型参数;
根据所述第k次的训练数据以及所述第k次的模型参数求解第k次的模型梯度。在具体的实施例中,该步骤包括:根据第k次的训练数据计算第k次的损失值,根据第k次的损失值和第k次的模型参数计算出第k次的模型梯度。
也即,每个工作服务器根据读取的训练数据以及参数服务器求解本地的模型参数相对应的模型梯度,在每次训练的求解过程中,不但要对本地的模型参数副本进行梯度更新,还要将每次计算出来的模型梯度累加到另一组变量(即图10中的累加梯度)中保存起来。
S4:将所述累加梯度数据输出至所述参数服务器,即切割后的第三个子图。
当训练过程持续m次后,工作服务器就将本地的累积梯度发送至参数服务器。在m次的训练过程中,本申请的工作服务器仅与参数服务器进行两次交互,即步骤S1的从参数服务器上拉取模型参数以及步骤S4的将累加梯度数据输出至参数服务器。因此,本申请的训练方案有效减少了工作服务器与参数服务器的通信频次,进而减少了通信开销,从而能够获得更高的加速性能。
S5:参数服务器接收到至少一个工作服务器输出的累加梯度数据后,根据所述累加梯度数据更新所述深度学习模型的模型参数。
在本申请的一种实施方式中,参数服务器首先对累加梯度数据进行一系列运算,其后与参数服务器上存储的模型参数进行累加后,作为新的模型参数。在具体的实施例中,对累加梯度数据进行的一系列运算具有多种表现形式,诸如Adam方法、AdaGrad方法,AdaDelta方法,本申请对此不再赘述。
由于在训练过程中,若m值过大,会导致本地累积梯度的模长过大,很有可能导致更新到参数服务器后的模型参数的变动会非常大,从而使训练过程失效。因此,在本申请的一种实施方式中,当参数服务器接收到累加梯度数据后,首先判断所述累加梯度数据是否超过预设阈值,当判断为否时,将所述累加梯度数据应用于所述模型参数,得到更新后的模型参数;否则,对所述累加梯度数据进行梯度裁剪操作(gradient clipping),将梯度裁剪操作后的累加梯度数据应用于所述模型参数,得到更新后的模型参数。
在本申请的一种实施方式中,预设阈值可预先根据损失值进行设置,具体的,首先设定任意预设阈值a,在训练的过程中观察工作服务器的不同迭代过程中损失值的变化趋势,当损失值不变时,则说明当前设置的预设阈值a过小,则将a调大;当相邻损失值下降时,则说明当前设置的预设阈值a合适,不再调整;当损失值上下波动时,则说明当前设置的预设阈值a过大,则将a调小。
在本申请的一种实施方式中,当累加梯度数据t超过预设阈值a时,对累加梯度数据t进行梯度裁剪操作可通过如下公式进行:
t′=t_list×clip_norm/max(global_norm,clip_norm)
其中,t_list为累加梯度数据对应的向量,t′为进行梯度裁剪操作后的累计梯度数据,clip_norm为一常数,global_norm=||t_list||2
根据上述公式计算得出累加梯度数据t进行梯度裁剪操作后的累计梯度数据t′后,将t′应用于所述模型参数,即可得到更新后的模型参数。
在本申请的其他实施例中,当累加梯度数据t超过预设阈值时,对累加梯度数据t进行梯度裁剪操作还可通过其他方式进行。
在训练过程中,各个工作服务器之间的异步性会导致模型收敛不稳定的情况,需要对异步性进行一定的控制。因此,在本申请的一种实施方式中,当参数服务器接收至少一个工作服务器输出的累加梯度数据后,所述参数服务器对其存储的模型参数进行异步性控制-加锁操作。
具体的,在本申请提供的一具体实施例中,假设参数服务器上存储有一模型参数v=[1,2,3,4,5,6,7,8],当参数服务器收到一工作服务器输出的累加梯度数据t=[1,1,1,1,1,1,1,1]时,参数服务器对模型参数v进行异步性控制-加锁操作,然后根据累加梯度数据t更新模型参数。当根据所述累加梯度数据t更新所述深度学习模型的模型参数v结束后,所述参数服务器对模型参数v进行解锁操作。
异步性控制-加锁操作是在参数服务器根据本地工作服务器输出的累加梯度数据对参数服务器上的模型参数进行更新时的保护,加锁的目的是在参数服务器根据本地工作服务器输出的累加梯度数据对参数服务器上的模型参数进行更新的过程中,防止其他工作服务器输出的累加梯度数据也参与到模型参数的更新过程中来,避免出现模型训练参数的不稳定的情形。在本申请的一种实施方式中,异步性控制-加锁操作可使用加锁函数来实现。
S6:工作服务器在步骤S4输出累加梯度数据结束后,获取所述参数服务器上存储的深度学习模型的模型参数,此处的模型参数为所述参数服务器根据所述累加梯度数据更新后的模型参数,即步骤S5中更新后的模型参数,将更新的模型参数拉取到本地同时,工作服务器将累积梯度数据清零。在本申请的其他实施方式中,还可以将累积梯度数据清零的过程在步骤S4输出累计梯度数据之后执行。
S7:获取预设的总训练次数n,n为正整数,当所述深度学习模型的训练次数未达到n时,返回执行步骤S3,继续训练下一个m次。在本申请中,n远大于m。
S8:当所述深度学习模型的训练次数达到n时,输出结束信息至所述参数服务器,所述结束信息用于显示所述深度学习模型训练结束。
S9:参数服务器接收到至少一个工作服务器输出的结束信息时,将此时的深度学习模型的模型参数输出。此时的模型参数即为训练结束后得到的最终的模型参数。
因此,本申请提供的一种深度学习模型的训练***,在对深度学习模型训练时,首先将参数服务器上的模型参数拉取到工作服务器上,结合工作服务器上存储的训练数据对深度学习模型进行多次训练,并将训练生成的模型梯度依次进行累加,确定出累加梯度数据,然后将累加梯度数据输出至参数服务器,最后由参数服务器根据累加梯度数据更新模型参数,当训练次数未达到总训练次数时,继续进行下一个m次训练,否则训练结束,此时的模型参数即为训练得到的模型参数,由于在多次训练的过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果。
在本申请的一种实施方式中,如图3所示,多个工作服务器之间并未进行信息交互,每个工作服务器独立进行训练过程。当多个工作服务器中有一个工作服务器训练完成时,即可认为对深度学习模型的训练结束。在本申请的其他实施方式中,也可当所有工作服务器训练均训练结束后,认为对深度学习模型的训练过程结束。
在本申请的一种实施方式中,如图3所示,多个工作服务器、参数服务器可以耦合部署在同一独立的服务器集群中,也可以分别部署在不同的服务器集群上。
图5示出了本申请一种深度学习模型的训练***中工作服务器的结构示意图,请参阅图5,所述工作服务器100包括:
模型参数获取模块101,用于获取深度学习模型的模型参数;
模型参数存储模块102,用于将获取到的所述深度学习模型的模型参数进行存储;
梯度数据确定模块103,用于基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据;
在本申请的一种实施方式中,预设了多个批量的训练数据以及训练次数m,m为正整数。
在本申请的一种实施方式中,模型参数可从一参数服务器上存储的深度学习模型的模型参数进行获取。
梯度数据输出模块104,用于将所述累加梯度数据输出至所述参数服务器,以使所述参数服务器根据所述累加梯度数据更新所述模型参数。
在本申请的一种实施方式中,所述梯度数据确定模块用于基于所述训练数据,使用所述模型参数对所述深度学习模型进行第k次训练,所述k为1、2、3、……m,包括:
训练数据确定模块,用于从所述训练数据中获取出一批量的训练数据,作为第k次的训练数据;
模型参数确定模块,用于将第k-1次的模型梯度应用于第k-1次的模型参数,得到第k次的模型参数,其中,当k=1时,第1次的模型参数即为参数服务器上存储的深度学习模型的模型参数;
模型梯度确定模块,用于根据所述第k次的训练数据以及所述第k次的模型参数求解第k次的模型梯度。在具体的实施例中,模型梯度确定模块用于根据第k次的训练数据计算第k次的损失值,根据第k次的损失值和第k次的模型参数计算出第k次的模型梯度。
也即,每个工作服务器根据读取的训练数据以及参数服务器求解本地的模型参数相对应的模型梯度,在每次训练的求解过程中,不但要对本地的模型参数副本进行梯度更新,还要将每次计算出来的模型梯度累加到另一组变量中保存起来。在本申请的一种实施方式中,所述模型参数获取模块还用于当所述累加梯度数据输出结束后,获取所述参数服务器上存储的深度学习模型的模型参数,所述模型参数为所述参数服务器根据所述累加梯度数据更新后的模型参数,同时将累加梯度数据清空。
图6示出了本申请一种深度学习模型的训练***中参数服务器200的结构示意图,请参阅图6,所述参数服务器存储有深度学习模型的模型参数,包括:
梯度数据接收模块201,用于接收工作服务器输出的累加梯度数据;
模型参数更新模块202,用于根据所述累加梯度数据更新所述深度学习模型的模型参数,得到更新后的模型参数。
在本申请的一种实施方式中,模型参数更新模块首先对累加梯度数据进行一系列运算,其后与参数服务器上存储的模型参数进行累加后,作为新的模型参数。在具体的实施例中,对累加梯度数据进行的一系列运算具有多种表现形式,诸如Adam方法、AdaGrad方法,AdaDelta方法,本申请对此不再赘述。由于在训练过程中,若m值过大,会导致本地累积梯度的模长过大,很有可能导致更新到参数服务器后的模型参数的变动会非常大,从而使训练过程失效。
因此,在本申请的一种实施方式中,所述模型参数更新模块包括:
梯度数据判断模块,用于判断所述累加梯度数据是否超过预设阈值。
在本申请的一种实施方式中,预设阈值可预先根据损失值进行设置,具体的,首先设定任意预设阈值a,在训练的过程中观察工作服务器的不同迭代过程中损失值的变化趋势,当损失值不变时,则说明当前设置的预设阈值a过小,则将a调大;当相邻损失值下降时,则说明当前设置的预设阈值a合适,不再调整;当损失值上下波动时,则说明当前设置的预设阈值a过大,则将a调小。
第一参数更新模块,用于当所述梯度数据判断模块判断为否时,将所述累加梯度数据应用于所述模型参数,得到更新后的模型参数;
第二参数更新模块,用于当所述梯度数据判断模块判断为是时,对所述累加梯度数据进行梯度裁剪操作,将梯度裁剪操作后的累加梯度数据应用于所述模型参数,得到更新后的模型参数。
在本申请的一种实施方式中,当累加梯度数据t超过预设阈值a时,对累加梯度数据t进行梯度裁剪操作可通过如下公式进行:
t′=t_list×clip_norm/max(global_norm,clip_norm)
其中,t_list为累加梯度数据对应的向量,t′为进行梯度裁剪操作后的累计梯度数据,clip_norm为一常数,global_norm=||t_list||2
根据上述公式计算得出累加梯度数据t进行梯度裁剪操作后的累计梯度数据t′后,将t′应用于所述模型参数,即可得到更新后的模型参数。
在本申请的其他实施例中,当累加梯度数据t超过预设阈值时,对累加梯度数据t进行梯度裁剪操作还可通过其他方式进行。
在训练过程中,各个工作服务器之间的异步性会导致模型收敛不稳定的情况,需要对异步性进行一定的控制。因此,在本申请的一种实施方式中,所述参数服务器还包括:
加锁模块,用于当所述梯度数据接收模块执行结束后,对所述参数服务器进行加锁操作;
解锁模块,用于当所述模型参数更新模块执行结束后,对所述参数服务器进行解锁操作。
具体的,在本申请提供的一具体实施例中,假设参数服务器上存储有一模型参数v=[1,2,3,4,5,6,7,8],当参数服务器收到一工作服务器输出的累加梯度数据t=[1,1,1,1,1,1,1,1]时,参数服务器对模型参数v进行异步性控制-加锁操作,然后根据累加梯度数据t更新模型参数。当根据所述累加梯度数据t更新所述深度学习模型的模型参数v结束后,所述参数服务器对模型参数v进行解锁操作。
异步性控制-加锁操作是在参数服务器根据本地工作服务器输出的累加梯度数据对参数服务器上的模型参数进行更新时的保护,加锁的目的是在参数服务器根据本地工作服务器输出的累加梯度数据对参数服务器上的模型参数进行更新的过程中,防止其他工作服务器输出的累加梯度数据也参与到模型参数的更新过程中来,避免出现模型训练参数的不稳定的情形。在本申请的一种实施方式中,异步性控制-加锁操作可使用加锁函数来实现。
在本申请的一种实施方式中,所述工作服务器的模型参数获取模块还用于:获取所述参数服务器上存储的更新后的模型参数,并清除所述累加梯度数据。
在本申请的一种实施方式中,所述工作服务器还包括:
参数获取返回模块,用于当所述深度学习模型的训练次数未达到预设的总训练次数n时,返回执行所述模型参数获取模块;
结束信息发送模块,用于当所述深度学习模型的训练次数达到预设的总训练次数n时,输出结束信息至所述参数服务器,所述结束信息用于显示所述深度学习模型训练结束。
在本申请的一种实施方式中,所述参数服务器还包括:
结束信息接收模块,用于接收至少一个工作服务器输出的结束信息;
模型参数输出模块,用于当所述结束信息接收模块执行结束后,将此时深度学习模型的模型参数输出至一翻译服务器。
本申请提供的一种深度学习模型的训练***,其可被用于图像、语音、视频、机器翻译等多种场景。具体的,本申请提出的一种深度学习模型的训练***的实施方式二是将深度学习模型的训练***应用于机器翻译场景下,如图7所示,该实施方式二中包括至少一个工作服务器100、参数服务器200以及翻译服务器300。图8示出了训练***中工作服务器、参数服务器以及翻译服务器之间的交互示意图,请参阅图8,在本申请中:
S1:所述工作服务器获取参数服务器上存储的神经网络机器翻译模型的模型参数;
S2:获取预设的训练数据以及训练次数m,m为正整数。
在本申请的一种实施方式中,预设了训练数据,其包括多个批量的训练数据。
S3:基于所述训练数据,使用所述模型参数对所述神经网络机器翻译模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据。
在本申请的一种实施方式中,进行多次训练的具体过程如下:
以1至m中的任意一个数k为例进行说明,则基于所述训练数据,使用所述模型参数对所述神经网络机器翻译模型进行第k次训练,所述k为1、2、3、……m,包括:
从所述训练数据中获取出一批量的训练数据,作为第k次的训练数据;
将第k-1次的模型梯度应用于第k-1次的模型参数,得到第k次的模型参数,其中,当k=1时,第1次的模型参数即为参数服务器上存储的神经网络机器翻译模型的模型参数;
根据所述第k次的训练数据以及所述第k次的模型参数求解第k次的模型梯度。
S4:将所述累加梯度数据输出至所述参数服务器。
也即,当训练过程持续m次后,工作服务器就将本地的累积梯度发送至参数服务器。在m次的训练过程中,本申请的工作服务器仅与参数服务器进行两次交互,即步骤S1的从参数服务器上拉取模型参数以及步骤S4的将累加梯度数据输出至参数服务器。因此,本申请的方案有效减少了工作服务器与参数服务器的通信频次,进而减少了通信开销,从而能够获得更高的加速性能。
S5:参数服务器接收到至少一个工作服务器输出的累加梯度数据后,根据所述累加梯度数据更新所述神经网络机器翻译模型的模型参数。
在本申请的一种实施方式中,参数服务器首先对累加梯度数据进行一系列运算,其后与参数服务器上存储的模型参数进行累加后,作为新的模型参数。在具体的实施例中,对累加梯度数据进行的一系列运算具有多种表现形式,诸如Adam方法、AdaGrad方法,AdaDelta方法,本申请对此不再赘述。
S6:工作服务器在步骤S4输出累加梯度数据结束后,获取所述参数服务器上存储的神经网络机器翻译模型的模型参数,此处的模型参数为所述参数服务器根据所述累加梯度数据更新后的模型参数,即步骤S5中更新后的模型参数,将更新的模型参数拉取到本地同时,工作服务器将累积梯度数据清零。在本申请的其他实施方式中,还可以将累积梯度数据清零的过程在步骤S4输出累计梯度数据之后执行。
S7:获取预设的总训练次数n,当所述神经网络机器翻译模型的训练次数未达到n时,返回执行步骤S3,继续训练下一个m次。在本申请中,n远大于m。
S8:当所述神经网络机器翻译模型的训练次数达到n时,输出结束信息至所述参数服务器,所述结束信息用于显示所述神经网络机器翻译模型训练结束。
S9:参数服务器接收到至少一个工作服务器输出的结束信息时,将此时的神经网络机器翻译模型的模型参数输出。此时的模型参数即为训练结束后得到的最终的模型参数。
S10:根据模型参数以及预设的计算流图更新神经网络机器翻译模型,所述模型参数为训练结束后得到的最终的模型参数;
S11:获取用户输入的待翻译信息;
S12:基于神经网络机器翻译模型翻译所述待翻译信息,得到翻译结果;
S13:输出所述翻译结果。
因此,本申请提供的一种深度学习模型的训练***,在对神经网络机器翻译模型训练时,首先将参数服务器上的模型参数拉取到工作服务器上,结合工作服务器上存储的训练数据对神经网络机器翻译模型进行多次(m)训练,并将训练生成的模型梯度依次进行累加,确定出累加梯度数据,然后将累加梯度数据输出至参数服务器,最后由参数服务器根据累加梯度数据更新模型参数,当训练次数未达到总训练次数时,继续进行下一个m次训练,否则训练结束,此时的模型参数即为训练得到的模型参数,由于在多次训练的过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果,训练得到的神经网络机器翻译模型进行翻译时能够实现更好的翻译效果。
在本申请的一种实施方式中,如图3所示,多个工作服务器、参数服务器、翻译服务器可以耦合部署在同一独立的服务器集群中,也可以分别部署在不同的服务器集群上。
图9示出了本申请一种深度学习模型的训练***中的翻译服务器的结构示意图,请参阅图9,所述翻译服务器300包括:
翻译模型更新模块301,用于根据所述模型参数以及预设的计算流图更新得到神经网络机器翻译模型;
翻译模块302,用于基于神经网络机器翻译模型翻译待翻译信息,得到翻译结果;
翻译结果输出模块303,用于输出所述翻译结果。
本申请还提出了一种计算设备,包括:适于实现各指令的处理器以及存储设备,所述存储设备存储有多条指令,所述指令适于由处理器加载并执行:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
本申请还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
在介绍了本申请的深度学习模型的训练***、计算设备以及计算机可读存储介质之后,接下来,参考附图对本申请的方法进行介绍。该方法的实施可以参见上述***的实施,重复之处不再赘述。
图11示出了本申请一种深度学习模型的训练方法的流程示意图,对深度学习模型的训练为由多个有向无环图构成的有向有环图,在本申请中,所述有向无环图为从图中的一点出发,按照图中的箭头所指的方向走,无法回到该点的图,所述有向有环图为从图中的一点出发,按照图中的箭头所指的方向走,还能回到该点的图,请参阅图11,所述方法包括:
S101:获取深度学习模型的模型参数;
S102:基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据。
在本申请的一种实施方式中,该步骤包括:基于所述训练数据,使用所述模型参数对所述深度学习模型进行第k次训练,所述k为1、2、3、……m,包括:
从所述训练数据中获取出一批量的训练数据,作为第k次的训练数据。
在本申请的一种实施方式中,预设了多个批量的训练数据。
将第k-1次的模型梯度应用于第k-1次的模型参数,得到第k次的模型参数,其中,当k=1时,第1次的模型参数即为参数服务器上存储的深度学习模型的模型参数;
根据所述第k次的训练数据以及所述第k次的模型参数求解第k次的模型梯度。在具体的实施例中,该步骤包括根据第k次的训练数据计算第k次的损失值,根据第k次的损失值和第k次的模型参数计算出第k次的模型梯度。
S103:输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
在本申请的一种实施方式中,该方法还包括:将获取到的所述深度学习模型的模型参数进行存储。在具体的实施方式中,可在工作服务器上开辟本地存储空间,存储从参数服务器上获取到的模型参数。
图12示出了本申请一种深度学习模型的训练方法的实施方式二的流程示意图,请参阅图12,所述方法还包括:
S104:参数服务器接收所输出的累加梯度数据;
S105:根据所述累加梯度数据更新所述深度学习模型的模型参数,得到更新后的模型参数。
在本申请的一种实施方式中,该步骤首先对累加梯度数据进行一系列运算,其后与参数服务器上存储的模型参数进行累加后,作为新的模型参数。在具体的实施例中,对累加梯度数据进行的一系列运算具有多种表现形式,诸如Adam方法、AdaGrad方法,AdaDelta方法,本申请对此不再赘述。
由于在训练过程中,若m值过大,会导致本地累积梯度的模长过大,很有可能导致更新到参数服务器后的模型参数的变动会非常大,从而使训练过程失效。因此,在本申请的一种实施方式中,该步骤S105包括:判断所述累加梯度数据是否超过预设阈值;
当判断为否时,将所述累加梯度数据应用于所述模型参数,得到更新后的模型参数,得到更新后的模型参数;
否则,对所述累加梯度数据进行梯度裁剪操作,将梯度裁剪操作后的累加梯度数据应用于所述模型参数,得到更新后的模型参数。
在训练过程中,各个工作服务器之间的异步性会导致模型收敛不稳定的情况,需要对异步性进行一定的控制。因此,在本申请的一种实施方式中,接收至少一个工作服务器输出的累加梯度数据后,所述方法还包括:所述参数服务器对存储的所述深度学习模型的模型参数进行加锁操作进行加锁操作,当根据所述累加梯度数据更新所述深度学习模型的模型参数结束后,所述参数服务器对所述模型参数进行解锁操作。加锁操作是在参数服务器根据本地工作服务器输出的累加梯度数据对参数服务器上的模型参数进行更新时的保护,加锁的目的是在参数服务器根据本地工作服务器输出的累加梯度数据对参数服务器上的模型参数进行更新的过程中,防止其他工作服务器输出的累加梯度数据也参与到模型参数的更新过程中来,避免出现模型训练参数的不稳定的情形。在本申请的一种实施方式中,加锁操作可使用加锁函数来实现。
在本申请的一种实施方式中,该方法还包括:获取所述参数服务器上存储的更新后的模型参数,并清除所述累加梯度数据。在具体的实施方式中,工作服务器可以在获取到更新后的模型参数后清除累加梯度数据,也可以在输出累加梯度数据之后即刻清除本地存储的累加梯度数据。
在本申请的一种实施方式中,该方法还包括:
当所述深度学习模型的训练次数未达到预设的总训练次数时,返回执行获取根据累加梯度数据更新得到的模型参数,否则,输出结束信息至所述参数服务器,所述结束信息用于显示所述深度学习模型训练结束。
在本申请的一种实施方式中,所述方法还包括参数服务器接收至少一个结束信息;将此时的深度学习模型的模型参数输出。
本申请提供的一种深度学习模型的训练方法,其可被用于图像、语音、视频、机器翻译等多种场景。图13示出了本申请一种深度学习模型的训练方法的实施方式三的流程示意图,请参阅图13,该方法还包括:
S106:根据参数服务器输出的模型参数以及预设的计算流图更新得到神经网络机器翻译模型;
S107:基于神经网络机器翻译模型翻译待翻译信息,得到翻译结果;
S108:输出所述翻译结果。
由于在模型参数的训练过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果,训练得到的神经网络机器翻译模型进行翻译时能够实现更好的翻译效果。
本申请提供的一种深度学习模型的训练方法,在具体的实施例中可通过具体的算法来实现,NMT中的多种并行训练的分布式方案例如Downpour SGD、Model Average以及BMUF均可以实现。Downpour SGD不仅可以在Tensorflow上实现,也可以在MXNet、caffe2、Theano上实现。
此外,Google的GNMT虽然使用了Downpour SGD对神经网络机器翻译做了分布式训练,但是并没有指出其使用的Tensorflow框架,并且对Downpour SGD的调参方法也不相同。在Tensorflow上实现Downpour SGD需要使用本申请提供的训练方法,将构图和执行图两步分开来达到最终目的。
现有技术中的同步训练过程,如图1所示,每个工作服务器在每一轮迭代前就要从参数服务器上拉取模型参数到本地,并且在该工作服务器运行一个迭代后,马上就要将梯度推到参数服务器中,而且参数服务器需要等待所有的工作服务器均完成后才能做规约操作,然后更新到参数服务器模型参数上。假设有n个工作服务器,模型大小为g,那么20次迭代时参数服务器上发生的通信量为2*n*g*20(每一轮迭代开始时,参数服务器要将g大小的模型发送到n个工作服务器上,迭代结束时,每个工作服务器均需要将g大小的梯度发送到ps上,一共20轮)。
现有技术中的异步训练过程,如图2所示,每个工作服务器之间由于存在异步性,所以在此假定一种针对异步并行最理想最有利的情形来分析其通信量。假定某一个工作服务器在与参数服务器交互过程中,不会发生其他工作服务器同时与参数服务器发生交互造成带宽拥挤的情况,其他条件相同,那么工作服务器与参数服务器之间的总通信量依然是2*n*g*20,但是由于异步性,所以实际的通信情况要比同步并行算法训练过程中好很多,因为在异步并行算法训练过程中不会发生同一时刻所有工作服务器都与参数服务器发生交互的情况,所以带宽情况比同步并行算法训练过程好很多。
反观本申请的并行训练过程,假设每个工作服务器本地执行每20轮与参数服务器发生一次交互,那么这20轮中的通信量就只有2*n*g,远小于现有技术的同步并行算法训练过程和异步并行算法训练过程,仅占用非常小的训练开销。
在具体的实施例中,使用Downpour SGD来对NMT项目进行模型训练,经验证在大规模数据集上其加速效果比较明显,如图14所示。在图14中:
基准实验:单机单卡训练实验,学习率等于1,批处理数据量大小为160。
实验一:两机四卡训练实验,学习率等于1,单工作节点批处理数据量大小为160,梯度削减最大模长的阈值为1,与参数服务器交互的间隔轮数为20。
实验二:两机四卡训练实验,学习率等于1,单工作节点批处理数据量大小为160,梯度削减最大模长的阈值为5,与参数服务器交互的间隔轮数为20。
实验三:两机四卡训练实验,学习率等于6,单工作节点批处理数据量大小为160,梯度削减最大模长的阈值为5,与参数服务器交互的间隔轮数为10。
实验四:两机四卡训练实验,学习率等于6,单工作节点批处理数据量大小为160,梯度削减最大模长的阈值为5,与参数服务器交互的间隔轮数为20。
在图14中,横坐标是时间单位,纵坐标是翻译质量评估指标。可以看出,即使在不同配置下,使用本申请的训练方法都能获得很好的加速效果,提前收敛到较好的翻译质量。
综上所述,本申请提供了一种深度学习模型的训练方法、深度学习模型的训练***、基于神经网络机器翻译模块的翻译***、计算设备以及计算机可读存储介质,在深度学习模型进行训练时,首先将参数服务器上的模型参数拉取到工作服务器上,结合工作服务器上存储的训练数据对深度学习模型进行多次训练,并将训练生成的模型梯度依次进行累加,确定出累加梯度数据,然后将累加梯度数据输出至参数服务器,最后由参数服务器根据累加梯度数据更新模型参数,由于在多次训练的过程中减少了工作服务器与参数服务器之间的通信次数,因此能够加快深度学习模型的训练速度,获得更好的加速和收敛效果,将训练得到的神经网络机器翻译模型进行翻译时实现了更好的翻译效果。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (24)

1.一种深度学习模型的训练方法,其特征在于,包括:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
2.根据权利要求1所述的方法,其特征在于,所述有向无环图为从图中的一点出发,按照图中的箭头所指的方向走,无法回到该点的图,所述有向有环图为从图中的一点出发,按照图中的箭头所指的方向走,还能回到该点的图。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将获取到的所述深度学习模型的模型参数进行存储。
4.根据权利要求1所述的方法,其特征在于,基于训练数据,使用模型参数对深度学习模型进行多次训练包括:
基于训练数据,使用模型参数对深度学习模型进行第k次训练,所述k为1、2、3、……m,包括:
从训练数据中获取出一批量的训练数据,作为第k次的训练数据;
将第k-1次的模型梯度应用于第k-1次的模型参数,得到第k次的模型参数;
根据所述第k次的训练数据以及所述第k次的模型参数求解第k次的模型梯度,其中所述m为训练次数,是正整数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
参数服务器接收所输出的累加梯度数据,根据所述累加梯度数据更新所述参数服务器上存储的所述深度学习模型的模型参数,得到更新后的模型参数。
6.根据权利要求5所述的方法,其特征在于,根据所述累加梯度数据更新所述参数服务器上存储的所述深度学习模型的模型参数,得到更新后的模型参数包括:
判断所述累加梯度数据是否超过预设阈值;
当判断为否时,将所述累加梯度数据应用于所述参数服务器上存储的所述深度学习模型的模型参数,得到更新后的模型参数;
否则,对所述累加梯度数据进行梯度裁剪操作,将梯度裁剪操作后的累加梯度数据应用于所述参数服务器上存储的所述深度学习模型的模型参数,得到更新后的模型参数。
7.根据权利要求5所述的方法,其特征在于,所述参数服务器接收所述累加梯度数据后,所述方法还包括:
所述参数服务器对存储的所述深度学习模型的模型参数进行加锁操作,当得到更新后的模型参数后,对所述模型参数进行解锁操作。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述参数服务器上存储的更新后的模型参数,并清除所述累加梯度数据。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述深度学习模型的训练次数未达到预设的总训练次数时,返回执行获取所述参数服务器上存储的更新后的模型参数,否则,输出结束信息,所述结束信息用于显示所述深度学习模型训练结束。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述参数服务器接收至少一个结束信息,将此时的模型参数输出。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据参数服务器输出的模型参数以及预设的计算流图更新得到神经网络机器翻译模型;
基于所述神经网络机器翻译模型翻译待翻译信息,得到翻译结果;
输出所述翻译结果。
12.一种深度学习模型的训练***,其特征在于,所述训练***包括参数服务器以及至少一个工作服务器,
所述工作服务器用于:获取所述参数服务器上存储的深度学习模型的模型参数,基于训练数据,使用所述模型参数对所述深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,将所述累加梯度数据输出,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
所述参数服务器用于:接收所述累加梯度数据,根据所述累加梯度数据更新所述深度学习模型的模型参数。
13.根据权利要求12所述的深度学习模型的训练***,其特征在于,所述工作服务器包括:
模型参数获取模块,用于获取深度学习模型的模型参数;
模型参数存储模块,用于将获取到的所述深度学习模型的模型参数进行存储;
梯度数据确定模块,用于基于训练数据,使用所述模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据;
梯度数据输出模块,用于输出所述累加梯度数据。
14.根据权利要求13所述的深度学习模型的训练***,其特征在于,所述有向无环图为从图中的一点出发,按照图中的箭头所指的方向走,无法回到该点的图,所述有向有环图为从图中的一点出发,按照图中的箭头所指的方向走,还能回到该点的图。
15.根据权利要求13所述的深度学习模型的训练***,其特征在于,所述梯度数据确定模块用于基于训练数据,使用模型参数对深度学习模型进行第k次训练,所述k为1、2、3、……m,包括:
训练数据确定模块,用于从训练数据中获取出一批量的训练数据,作为第k次的训练数据;
模型参数确定模块,用于将第k-1次的模型梯度应用于第k-1次的模型参数,得到第k次的模型参数;
模型梯度确定模块,用于根据所述第k次的训练数据以及所述第k次的模型参数求解第k次的模型梯度,其中所述m为训练次数,是正整数。
16.根据权利要求13所述的深度学习模型的训练***,其特征在于,所述参数服务器包括:
梯度数据接收模块,用于接收所输出的累加梯度数据;
模型参数更新模块,用于根据所述累加梯度数据更新所述深度学习模型的模型参数,得到更新后的模型参数。
17.根据权利要求16所述的深度学习模型的训练***,其特征在于,所述模型参数更新模块包括:
梯度数据判断模块,用于判断所述累加梯度数据是否超过预设阈值;
第一参数更新模块,用于当所述梯度数据判断模块判断为否时,将所述累加梯度数据应用于所述模型参数,得到更新后的模型参数;
第二参数更新模块,用于当所述梯度数据判断模块判断为是时,对所述累加梯度数据进行梯度裁剪操作,将梯度裁剪操作后的累加梯度数据应用于所述模型参数,得到更新后的模型参数。
18.根据权利要求16所述的深度学习模型的训练***,其特征在于,所述参数服务器还包括:
加锁模块,用于当所述梯度数据接收模块执行结束后,对所述模型参数进行加锁操作;
解锁模块,用于当所述模型参数更新模块执行结束后,对所述模型参数进行解锁操作。
19.根据权利要求16所述的深度学习模型的训练***,其特征在于,所述模型参数获取模块还用于:获取所述参数服务器上存储的更新后的模型参数,并清除所述累加梯度数据。
20.根据权利要求19所述的深度学习模型的训练***,其特征在于,所述工作服务器还包括:
参数获取返回模块,用于当深度学习模型的训练次数未达到预设的总训练次数时,返回执行所述模型参数获取模块;
结束信息发送模块,用于当所述深度学习模型的训练次数达到预设的总训练次数时,输出结束信息,所述结束信息用于显示所述深度学习模型训练结束。
21.根据权利要求20所述的深度学习模型的训练***,其特征在于,所述参数服务器还包括:
结束信息接收模块,用于接收所述结束信息;
模型参数输出模块,用于当所述结束信息接收模块执行结束后,将此时的模型参数输出。
22.根据权利要求21所述的深度学习模型的训练***,其特征在于,所述训练***还包括:
翻译模型更新模块,用于根据所述模型参数以及预设的计算流图更新得到神经网络机器翻译模型;
翻译模块,用于基于所述神经网络机器翻译模型翻译待翻译信息,得到翻译结果;
翻译结果输出模块,用于输出所述翻译结果。
23.一种计算设备,其特征在于,所述计算设备包括:适于实现各指令的处理器以及存储设备,所述存储设备存储有多条指令,所述指令适于由处理器加载并执行:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行:
获取深度学习模型的模型参数;
基于训练数据,使用模型参数对深度学习模型进行多次训练,将多次训练生成的模型梯度依次进行累加,确定出累加梯度数据,所述多次训练中的每一次均为有向无环图,且所述多次训练构成有向有环图;
输出所述累加梯度数据,以根据所述累加梯度数据更新所述模型参数。
CN201810104670.6A 2018-02-02 2018-02-02 一种深度学习模型的训练方法、计算设备以及*** Active CN110135573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810104670.6A CN110135573B (zh) 2018-02-02 2018-02-02 一种深度学习模型的训练方法、计算设备以及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810104670.6A CN110135573B (zh) 2018-02-02 2018-02-02 一种深度学习模型的训练方法、计算设备以及***

Publications (2)

Publication Number Publication Date
CN110135573A true CN110135573A (zh) 2019-08-16
CN110135573B CN110135573B (zh) 2023-10-03

Family

ID=67566983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810104670.6A Active CN110135573B (zh) 2018-02-02 2018-02-02 一种深度学习模型的训练方法、计算设备以及***

Country Status (1)

Country Link
CN (1) CN110135573B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110619388A (zh) * 2019-09-20 2019-12-27 北京金山数字娱乐科技有限公司 一种分布式训练中梯度同步方法及装置
CN111105016A (zh) * 2019-12-06 2020-05-05 浪潮电子信息产业股份有限公司 一种数据处理方法、装置、电子设备及可读存储介质
CN111130698A (zh) * 2019-12-26 2020-05-08 南京中感微电子有限公司 无线通信接收窗口预测方法、装置及无线通信设备
CN111324630A (zh) * 2020-03-04 2020-06-23 中科弘云科技(北京)有限公司 基于mpi的神经网络架构搜索并行化方法和设备
CN111460528A (zh) * 2020-04-01 2020-07-28 支付宝(杭州)信息技术有限公司 一种基于Adam优化算法的多方联合训练方法及***
CN111461340A (zh) * 2020-03-10 2020-07-28 北京百度网讯科技有限公司 权重矩阵的更新方法、装置及电子设备
CN111488277A (zh) * 2020-04-08 2020-08-04 矩阵元技术(深圳)有限公司 一种节点匹配方法、装置、设备及***
CN111930768A (zh) * 2020-09-10 2020-11-13 腾讯科技(深圳)有限公司 增量数据获取方法、发送方法、装置及其计算机存储介质
CN112446487A (zh) * 2019-08-29 2021-03-05 佳能株式会社 神经网络模型的训练和应用方法、装置、***及存储介质
CN112465835A (zh) * 2020-11-26 2021-03-09 深圳市对庄科技有限公司 用于翡翠图像分割的方法及模型训练方法
CN112528108A (zh) * 2019-09-17 2021-03-19 华为技术有限公司 一种模型训练***、模型训练中梯度聚合的方法及装置
CN112949853A (zh) * 2021-02-23 2021-06-11 北京金山云网络技术有限公司 深度学习模型的训练方法、***、装置及设备
CN113327598A (zh) * 2021-06-30 2021-08-31 北京有竹居网络技术有限公司 模型的训练方法、语音识别方法、装置、介质及设备
CN114449550A (zh) * 2020-11-05 2022-05-06 中国电信股份有限公司 基站节能***的参数优化方法和装置
CN114936323A (zh) * 2022-06-07 2022-08-23 北京百度网讯科技有限公司 图表示模型的训练方法、装置及电子设备
CN116070720A (zh) * 2023-03-23 2023-05-05 山东海量信息技术研究院 基于分布式集群的数据处理方法、***、设备及存储介质
WO2023125521A1 (zh) * 2021-12-29 2023-07-06 华为技术有限公司 一种深度学习模型训练方法、装置及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150324690A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
CN106650922A (zh) * 2016-09-29 2017-05-10 清华大学 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作***
CN107229966A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 一种模型数据更新方法、装置及***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150324690A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
CN107229966A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 一种模型数据更新方法、装置及***
CN106650922A (zh) * 2016-09-29 2017-05-10 清华大学 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作***

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112446487A (zh) * 2019-08-29 2021-03-05 佳能株式会社 神经网络模型的训练和应用方法、装置、***及存储介质
CN112528108B (zh) * 2019-09-17 2023-02-07 华为技术有限公司 一种模型训练***、模型训练中梯度聚合的方法及装置
CN112528108A (zh) * 2019-09-17 2021-03-19 华为技术有限公司 一种模型训练***、模型训练中梯度聚合的方法及装置
CN110619388B (zh) * 2019-09-20 2024-04-02 北京金山数字娱乐科技有限公司 一种分布式训练中梯度同步方法及装置
CN110619388A (zh) * 2019-09-20 2019-12-27 北京金山数字娱乐科技有限公司 一种分布式训练中梯度同步方法及装置
CN111105016A (zh) * 2019-12-06 2020-05-05 浪潮电子信息产业股份有限公司 一种数据处理方法、装置、电子设备及可读存储介质
CN111105016B (zh) * 2019-12-06 2023-04-28 浪潮电子信息产业股份有限公司 一种数据处理方法、装置、电子设备及可读存储介质
WO2021109588A1 (zh) * 2019-12-06 2021-06-10 浪潮电子信息产业股份有限公司 一种数据处理方法、装置、电子设备及可读存储介质
CN111130698A (zh) * 2019-12-26 2020-05-08 南京中感微电子有限公司 无线通信接收窗口预测方法、装置及无线通信设备
CN111324630B (zh) * 2020-03-04 2023-07-25 中科弘云科技(北京)有限公司 基于mpi的神经网络架构搜索并行化方法和设备
CN111324630A (zh) * 2020-03-04 2020-06-23 中科弘云科技(北京)有限公司 基于mpi的神经网络架构搜索并行化方法和设备
CN111461340A (zh) * 2020-03-10 2020-07-28 北京百度网讯科技有限公司 权重矩阵的更新方法、装置及电子设备
CN111461340B (zh) * 2020-03-10 2023-03-31 北京百度网讯科技有限公司 权重矩阵的更新方法、装置及电子设备
CN111460528A (zh) * 2020-04-01 2020-07-28 支付宝(杭州)信息技术有限公司 一种基于Adam优化算法的多方联合训练方法及***
CN111460528B (zh) * 2020-04-01 2022-06-14 支付宝(杭州)信息技术有限公司 一种基于Adam优化算法的多方联合训练方法及***
CN111488277A (zh) * 2020-04-08 2020-08-04 矩阵元技术(深圳)有限公司 一种节点匹配方法、装置、设备及***
CN111488277B (zh) * 2020-04-08 2023-04-21 矩阵元技术(深圳)有限公司 一种节点匹配方法、装置、设备及***
CN111930768A (zh) * 2020-09-10 2020-11-13 腾讯科技(深圳)有限公司 增量数据获取方法、发送方法、装置及其计算机存储介质
CN114449550A (zh) * 2020-11-05 2022-05-06 中国电信股份有限公司 基站节能***的参数优化方法和装置
CN112465835B (zh) * 2020-11-26 2022-07-08 深圳市对庄科技有限公司 用于翡翠图像分割的方法及模型训练方法
CN112465835A (zh) * 2020-11-26 2021-03-09 深圳市对庄科技有限公司 用于翡翠图像分割的方法及模型训练方法
CN112949853A (zh) * 2021-02-23 2021-06-11 北京金山云网络技术有限公司 深度学习模型的训练方法、***、装置及设备
CN112949853B (zh) * 2021-02-23 2024-04-05 北京金山云网络技术有限公司 深度学习模型的训练方法、***、装置及设备
CN113327598A (zh) * 2021-06-30 2021-08-31 北京有竹居网络技术有限公司 模型的训练方法、语音识别方法、装置、介质及设备
CN113327598B (zh) * 2021-06-30 2023-11-14 北京有竹居网络技术有限公司 模型的训练方法、语音识别方法、装置、介质及设备
WO2023125521A1 (zh) * 2021-12-29 2023-07-06 华为技术有限公司 一种深度学习模型训练方法、装置及相关设备
CN114936323A (zh) * 2022-06-07 2022-08-23 北京百度网讯科技有限公司 图表示模型的训练方法、装置及电子设备
CN116070720A (zh) * 2023-03-23 2023-05-05 山东海量信息技术研究院 基于分布式集群的数据处理方法、***、设备及存储介质
CN116070720B (zh) * 2023-03-23 2023-07-21 山东海量信息技术研究院 基于分布式集群的数据处理方法、***、设备及存储介质

Also Published As

Publication number Publication date
CN110135573B (zh) 2023-10-03

Similar Documents

Publication Publication Date Title
CN110135573A (zh) 一种深度学习模型的训练方法、计算设备以及***
CN114756383B (zh) 一种分布式计算方法、***、设备及存储介质
CN109299781B (zh) 基于动量和剪枝的分布式深度学习***
CN108053119B (zh) 一种求解零等待流水车间调度问题的改进粒子群优化方法
CN109754060A (zh) 一种神经网络机器学习模型的训练方法及装置
CN111353582B (zh) 一种基于粒子群算法的分布式深度学习参数更新方法
CN107330516A (zh) 模型参数训练方法、装置及***
CN110348571A (zh) 一种神经网络模型训练方法、装置、芯片和***
CN112149808B (zh) 拓展单机图神经网络训练至分布式训练方法、***及介质
CN106297774A (zh) 一种神经网络声学模型的分布式并行训练方法及***
CN108269568A (zh) 一种基于ctc的声学模型训练方法
CN109902820A (zh) Ai模型训练方法、装置、存储介质及设备
CN112862088A (zh) 一种基于流水线环形参数通信的分布式深度学习方法
CN110097186A (zh) 一种神经网络异构量化训练方法
CN109344969B (zh) 神经网络***及其训练方法以及计算机可读介质
CN109214512A (zh) 一种深度学习的参数交换方法、装置、服务器及存储介质
CN110390206A (zh) 边云***框架下具有隐私保护的梯度下降加速算法
CN114970830A (zh) 一种面向数据并行分布式深度学习训练加速的灵活通信方法
CN111858058A (zh) 基于并行计算的sgd负载均衡方法、装置及存储介质
CN114756706A (zh) 一种资源合成方法、装置、设备及存储介质
CN112891947B (zh) 跳跃动画处理方法、装置、电子设备及计算机可读介质
CN112162734B (zh) 一种面向深度学习的模型生成方法
CN104616338A (zh) 基于二维动画的时空一致的变速内插方法
CN108009111A (zh) 数据流连接方法及装置
CN110135067A (zh) 一种双时间步方法下的直升机流场重叠混合网格并行方法

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40012229

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant