CN114356540A - 一种参数更新方法、装置、电子设备和存储介质 - Google Patents

一种参数更新方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114356540A
CN114356540A CN202111276305.1A CN202111276305A CN114356540A CN 114356540 A CN114356540 A CN 114356540A CN 202111276305 A CN202111276305 A CN 202111276305A CN 114356540 A CN114356540 A CN 114356540A
Authority
CN
China
Prior art keywords
model
data
data parallel
parallel
state quantity
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.)
Pending
Application number
CN202111276305.1A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111276305.1A priority Critical patent/CN114356540A/zh
Publication of CN114356540A publication Critical patent/CN114356540A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及计算机技术领域,尤其涉及人工智能技术领域,提供一种参数更新方法、装置、电子设备和存储介质,用以提高模型训练性能。其中,方法包括:获取训练样本数据集,基于待更新的自然语言模型中的模型状态量的总数目,确定匹配的目标参数更新模式;确定自然语言模型对应的数据并行粒度,基于目标参数更新模式及数据并行粒度,将模型状态量划分为多个状态量组,并分配至各个数据并行进程;通过数据并行进程,对自然语言模型进行参数更新,获得更新后的模型状态量组;通过数据并行进程之间进行通信,对更新后的模型状态量组进行聚合,获取更新后的全量模型状态量。由于本申请通过根据不同的参数规模自动选择不同的更新模式,提高模型训练效率。

Description

一种参数更新方法、装置、电子设备和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及人工智能技术领域,提供一种参数更新方法、装置、电子设备和存储介质。
背景技术
随着深度学习技术的发展,各种深度神经网络模型不断涌现。以自然语言模型为例,根据当前人工智能的趋势,越大的自然语言模型可以提供越好的准确性,网络深度也从几层扩大到成百上千层。虽然深层次的网络大大提高了精确率,但也使得网络模型参数越来越多、训练时间越来越长,成为深度学习技术快速发展和广泛应用的一大阻碍。
然而,在相关技术中,针对自然语言模型的预训练,主要是基于Collective(分布式)架构或Parameter server(参数服务器)架构来实现的。
但是,上述两种方式都是从模块角度考虑的,Collective架构很少被用于搜索推荐领域,而Parameter server架构则受服务器带宽的影响,因此,如何平衡模型训练时的内存效率和计算效率,提高模型训练性能是亟待解决的。
发明内容
本申请实施例提供一种参数更新方法、装置、电子设备和存储介质,用以针对不同参数规模提供不同训练方式,提高模型训练性能,平衡内存效率和计算效率。
本申请实施例提供的一种参数更新方法,包括:
获取包含多条训练样本的训练样本数据集,每条训练样本包括样本多媒体内容以及对应的样本标签;
基于待更新的自然语言模型中的模型状态量的总数目,以及预先构建的参数数目与参数更新模式之间的映射关系,确定与所述总数目相匹配的目标参数更新模式;
确定所述自然语言模型对应的数据并行粒度,基于所述目标参数更新模式及所述数据并行粒度,将所述模型状态量划分为相应的多个模型状态量组,以及将所述多个模型状态量组分别分配至各个数据并行进程;
通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组;
通过所述各个数据并行进程之间进行通信,对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量,其中,所述自然语言模型用于对待处理多媒体内容进行自然语言处理。
本申请实施例提供的一种参数更新装置,包括:
获取单元,用于获取包含多条训练样本的训练样本数据集,每条训练样本包括样本多媒体内容以及对应的样本标签;
确定单元,用于基于待更新的自然语言模型中的模型状态量的总数目,以及预先构建的参数数目与参数更新模式之间的映射关系,确定与所述总数目相匹配的目标参数更新模式;
分配单元,用于确定所述自然语言模型对应的数据并行粒度,基于所述目标参数更新模式及所述数据并行粒度,将所述模型状态量划分为相应的多个模型状态量组,以及将所述多个模型状态量组分别分配至各个数据并行进程;
更新单元,用于通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组;
聚合单元,用于通过所述各个数据并行进程之间进行通信,对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量,其中,所述自然语言模型用于对待处理多媒体内容进行自然语言处理。
可选的,所述目标参数更新模式包括数据并行,所述分配单元具体用于:
根据所述模型状态量包含的各个权重张量所包含的元素的总数目,将所述模型状态量分别分配至所述各个数据并行进程,所述权重张量表征所述自然语言模型中各网络层所对应的权重矩阵。
可选的,所述目标参数更新模式包括模型并行与数据并行,所述分配单元具体用于:
按照每个模型进程组包含的数据并行进程的数量,对所述自然语言模型的网络结构进行切分,得到多个子模型;
针对多个模型进程组,分别执行以下操作:
将所述多个子模型各自包含的模型状态量,分别分配给一个模型进程组中的各个数据并行进程;
将所述一个模型进程组中的各个数据并行进程对应的子模型的模型状态量,分配给自身对应的数据并行组中的各个数据并行进程,其中,每个数据并行进程对应的模型状态量为一个模型状态量组。
可选的,所述目标参数更新模式为数据并行模式,所述更新单元具体用于:
将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给各个数据并行进程;
针对所述各个数据并行进程,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,所述目标参数更新模式为包括数据并行与模型并行的第一混合并行模式,所述更新单元具体用于:
将所述自然语言模型按照对应的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程;以及,将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;
针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,所述目标参数更新模式为包括数据并行与流水线并行的第二混合并行模式,所述更新单元具体用于:
将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;
针对各个数据并行进程,按照每个数据并行组内部采用数据并行的方式,不同数据并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,所述目标参数更新模式为包括模型并行、数据并行与流水线并行的第三混合并行模式,所述更新单元具体用于:
将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;以及,将所述自然语言模型按照获取的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程;
针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行,不同数据并行组,不同模型并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,所述目标参数更新模式为包括模型并行、数据并行与流水线并行的异构分布式模式,所述模型状态量包括权重张量,梯度张量和优化器状态量,所述权重张量表征所述自然语言模型中各网络层所对应的权重矩阵,所述梯度张量表征所述自然语言模型中各网络层所对应的梯度矩阵,所述优化器状态量为用于将所述梯度张量转换为权重张量的参数,
所述更新单元具体用于:
基于GPU(Graphics Processing Unit,图形处理器)相关的各个数据并行进程,对各自对应的模型状态量组中的梯度张量进行更新,得到更新后的梯度张量,并将更新结果发送给相应CPU(Central Processing Unit,中央处理器)相关的各个数据并行进程;
基于所述CPU相关的各个数据并行进程内保存的原始的优化器状态量和原始的梯度张量,分别对相应的更新后的梯度进行转换,获得更新后的权重张量;
将所述更新后的权重张量发送给相应GPU相关的数据并行进程,作为各自对应的更新后的模型状态量组。
可选的,所述更新单元还用于:
通过GPU将所述模型状态量中的原始的优化器状态量和原始的梯度张量发送给所述CPU;
将所述原始的优化器状态量和原始的梯度张量,分别分配给所述CPU相关的各个数据并行进程。
可选的,所述优化器状态量在整个训练过程中都保存在CPU上。
可选的,通过下列方式获得数据并行组和模型并行组:
按照所述自然语言模型对应的模型并行粒度,将所有数据并行进程划分,获得各个模型进程组,每个模型进程组中的数据并行进程的数量相同,且不同模型并行组中的数据并行进程不同;
按照所述数据并行粒度,从多个模型并行组中的选取一个数据并行进程进行组合,获得各个数据并行组,每个数据进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
可选的,通过下列方式获得数据并行组:
按照所述数据并行粒度,将所有数据并行进程划分,获得各个数据进程组,每个模型进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述一种参数更新方法的步骤。
本申请实施例提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任意一种参数更新方法的步骤。
本申请实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行上述一种参数更新方法的步骤。
本申请有益效果如下:
本申请实施例提供了一种参数更新方法、装置、电子设备和存储介质,由于本申请实施例中通过预先构建的参数数目与参数更新模式之间的映射关系,自动的选择与待更新的自然语言模型当前的参数规模相匹配的目标参数更新模式,来进行模型参数的更新,该方式下,对于不同参数规模的自然语言模型具有更好的针对性,此外,根据目标参数更新模式和自然语言模型对应的数据并行粒度,将模型状态量划分为多个模型状态量组,并分配到多个数据并行进程,减少了每个数据并行进程维护的模型状态量,节省了显示内存占用;各个数据并行进程,只需对自身分配的模型状态量组进行更新,进而对获得的更新后的各个模型状态量组进行聚合,即可获取更新后的全量模型状态量,可以获得较好的加速性能。因而,基于上述方式进行参数更新,能够根据不同的参数规模自动选择不同的更新模式,减少内存占用,节约模型训练时间,提高模型训练效率,能够有效平衡模型训练过程中的内存效率和计算效率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中的现有技术中模型对应的参数规模示意图;
图2A为本申请实施例中的相关技术中一种All-Reduce Collective架构的结构示意图;
图2B为相关技术中一种Parameter server架构的结构示意图;
图3为本申请实施例中的一种应用场景示意图;
图4为本申请实施例中的一种参数更新方法的流程示意图;
图5为本申请实施例中的一次完整参数更新的流程示意图;
图6为本申请实施例中的一种模型状态量划分方法的示意图;
图7A为本申请实施例中的一种一种梯度规约方法的示意图;
图7B为本申请实施例中的一种一种全聚集方法的示意图;
图8为本申请实施例中的一种第一混合并行模式的结构示意图;
图9为本申请实施例中的一种第二混合并行模式的结构示意图;
图10为本申请实施例中的一种第三混合并行模式的结构示意图;
图11为本申请实施例中的一中异构分布式参数更新模式的交互时序图;
图12为本申请实施例中的一种参数更新装置的组成结构示意图;
图13为本申请实施例中的一种电子设备的组成结构示意图;
图14为应用本申请实施例的一种计算装置的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
下面对本申请实施例中涉及的部分概念进行介绍。
模型状态量:指在模型训练过程中需要进行计算的状态量,包括但不限于梯度张量,优化器状态量,权重张量。其中,权重张量指自然语言模型中各网络层对应得权重矩阵;梯度张量即模型在优化过程即反向传播中所产生的梯度参数;优化器状态量则是用于将梯度张量转换为权重张量的。
数据并行:指不同的机器有同一个神经网络模型的多个副本,每个机器分配到不同的训练数据,然后将所有机器的计算结果按照某种方式合并。数据并行模式下,每一个节点(或者叫进程)都有一份模型,各个节点取不同的数据,各自完成前向和后向的计算得到梯度,然后组合各个工作节点的结果,并且在节点之间同步模型参数。
模型并行:指分布式系统中的不同机器负责神经网络模型的不同部分,共同训练同一批数据,计算过程中的中间数据需要在不同机器之间传递。例如,神经网络模型的不同网络层被分配到不同的机器,或者同一网络层内部的不同参数被分配到不同机器。
进程和数据并行进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。本申请中,因为参数更新至少是基于数据并行实现的,因而,称作数据并行进程。
模型并行粒度和模型并行组:在基于模型并行进行参数更新时,一个模型需要被划分为多个子模型(可以是基于网络层划分,或者根据参数量划分等),模型并行粒度则是指,一个模型所需被划分的子模型的数量。一个模型进程组中包括多个数据并行进程(也称进程),每个模型进程组中的模型并行进程的数量都与模型并行粒度一致,同一模型并行进程组中的各个数据并行进程用于对不同子模型进行参数更新。
数据并行粒度和数据并行组:在基于数据并行进行参数更新时,训练样本需要被划分为多个训练样本组,数据并行粒度则是指,一个训练样本所需被划分的训练样本组的数量。一个数据进程组中包括多个数据并行进程,每个数据进程组中的数据并行进程的数量都与数据并行粒度一致,同一数据并行进程组中的各个数据并行进程,用于基于不同的训练样本组对相同的模型状态量进行参数更新。
流水线并行粒度和流水线并行组:在基于数据并行进行参数更新时,将整个模型的各层划分为可以并行处理的阶段,不同阶段在不同的设备上,前后阶段流水分批工作,通过一种“接力”的模式并行。流水线并行粒度是指,一个流水线进程组中的所有数据并行进程上的模型组合起来为一个完整的模型,同一流水线进程组中的各个数据并行进程使用相同的训练数据进行训练。
AllReduce(全规约):是对所有服务器上的数据做一个规约操作(如最大值、求和),再将数据写入根服务器。这也就是分布式训练最基础的框架,将所有的数据通过规约操作集成到各个服务器中,各个服务器也就获得了完全一致的、包含原本所有服务器上计算参数的规约数据。
ReduceScatter(散射规约):服务器先做Scatter(散射),将自身的数据分为同等大小的数据块,再按照序列,每个服务器将得到的数据做Reduce(规约),这就类似于全聚集,只不过我们将数据不是简单拼接到一起而是做了规约操作即先做Scatter再做Reduce。
CUDA(Compute Unified Device Architecture,同一计算设备架构)流:表示一个GPU操作队列,该队列中的操作将以添加到流中的先后顺序而依次执行。可以将一个流看做是GPU上的一个任务,不同任务可以并行执行。使用CUDA流,首先要选择一个支持设备重叠功能的设备,支持设备重叠功能的GPU能够在执行一个CUDA核函数的同时,还能在主机和设备之间执行复制数据操作,能够提高运算性能。
本申请实施例涉及AI(Artificial Intelligence,人工智能)、NLP(NatureLanguage processing,自然语言处理)和ML(Machine Learning,机器学习技术),基于人工智能中的计算机视觉技术和机器学习而设计。
人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。
人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术主要包括计算机视觉技术、自然语言处理技术、以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。随着人工智能技术研究和进步,人工智能在多个领域展开研究和应用,例如常见的智能家居、智能客服、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、机器人、智能医疗等,相信随着技术的发展,人工智能将在更多的领域得到应用,并发挥越来越重要的价值。
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。对比于数据挖掘从大数据之间找相互特性而言,机器学习更加注重算法的设计,让计算机能够自动地从数据中“学习”规律,并利用规律对未知数据进行预测。
机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习等技术。本申请实施例中的自然语言模型就是采用机器学习或深度学习技术训练得到的。基于本申请实施例中的自然语言模型的参数更新方法,可以进行文本处理、语音处理、语义理解、机器翻译、机器人问答、知识图谱等模型的参数更新。
在本申请实施例中提出的参数更新方法主要是模型训练部分,该部分就涉及到机器学习这一技术领域,通过机器学习这一技术训练自然语言模型,并进行参数更新。具体的,确定匹配的目标参数更新模式,将模型状态量进行划分,通过各个数据并行进程,基于划分得到的模型状态量组和目标参数更新模式,对自然语言模型进行参数更新,并将各个数据并行进程更新后的模型状态量组进行聚合,获得更新后的全量模型状态量。在模型训练完成后,即可使用基于上述方式获取的更新后的模型状态量确定的自然语言模型,来进行自然语言处理,比如文本处理、语义理解、机器翻译、机器人问答、知识图谱等。
下面对本申请实施例的设计思想进行简要介绍:
根据当前人工智能的趋势,越大的自然语言模型可以提供越好的准确性,参阅图1所示,给出了目前几种模型对应的Parameters(参数)规模,例如,BERT(预训练语言模型)、RoBERTa(中文预训练模型)、GPT-2(第二代生成式预训练解码器)、T5(文本到文本传输转换器)、Turing NLG(基于转换器架构的语言生成模型)、GPT-3(第三代生成式预训练解码器)其中,GPT-3模型的参数规模已经达到175B(1B为10亿)。
模型的显存占用主要包括两个部分,一部分为Model States(模型状态量),主要包括优化器状态量和梯度以及权重参数等,另一部分为其他内存占用,如激活内存用于保存中间结果,在反向计算中用到;还有临时数据块的频繁创建和释放导致的内存碎片,导致明明还有显存但是申请失败。
下面以NLP领域常用的Adam(自适应矩阵估计)优化器结合混合精度训练为例,分析模型状态量的显存占用。
在训练过程中,将各层权重参数保存为FP32(单精度浮点)格式,每次迭代时,制作这些权重的FP16(半精度浮点格式)副本并使用它们用于前向计算和反向计算,更新时将梯度再转换为FP32并用于更新FP32的权重。使用这种方法可以解决权重相较于其更新值过大的问题。因此Adam优化器保存了每个参数的FP32 master weight(主权值),momentum(动量)和variance(方差),同时保存了每个参数的FP16的weights(权值)和gradients(梯度)。以一个83亿大小的模型为例,model states(模型状态量)的显存占用需要133GB,远大于V00机型32GB的显存上限。
虽然深层次的网络大大提高了精确率,但也使得网络模型参数越来越多、训练时间越来越长,成为深度学习技术快速发展和广泛应用的一大阻碍。相关技术中针对这种超大自然语言模型的预训练,包括Collective架构中多个节点进行模型训练,并将训练好的参数同步到所有节点,以及Parameter server架构新增一个server,用于从各个节点收集汇总并分发训练好的参数。
目前,针对超大型NLP模型的训练,主要是采用All-Reduce Collective(集合通信的分布式训练)架构和Parameter server架构。
参阅图2A所示,为Collective架构的结构示意图,在Collective架构中,集群中存在多个地位平等的Trainer(训练器),也可以叫Worker(工作器),指一个节点/一台机器。在数据并行的方式下,每个Trainer上都保存一份完整的模型网络结构和模型参数,在前向计算和反向计算过程中,每个Trainer使用自己划分的数据进行计算,得到对应的梯度;然后Trainer之间通过All-Reduce(全规约)等通信方式同步梯度到所有Trainer,最后每个Trainer使用同步后的梯度独立完成参数更新。但是,当模型较大,需要规约的参数过多,导致容易出现显存不足和卡间同步时间耗费等问题,比如Collective架构很少被用于搜索推荐领域,因为搜索推荐领域一般embedding(嵌入)参数过多。
参阅图2B所示,为Parameter server架构的结构示意图,与Collective相比,参数服务器架构中除了Trainer之外还有一个角色叫Server(服务器)。在执行前向计算与反向计算过程中,Server负责从各个Trainer收集汇总梯度,然后使用这些梯度信息计算更新参数,并向各个Trainer分发更新后的参数信息。但是,Parameter server架构中参数服务器节点的带宽会成为瓶颈,因为分布式参数服务器之间的权重协调一致将是不得不考虑的问题,对于某一块特定的参数来说,参数服务器:训练器都是1:N的关系,当Trainer数量较大时,还是不可避免遇到带宽瓶颈。最后,木桶效应仍然存在。
上述方式都是从模块角度去考虑,没有考虑NLP场景下,如何给用户提供门槛低的分布式训练解决方案,也没有去解决实际训练性能问题,并且没有考虑不同的参数规模下训练瓶颈不同。
有鉴于此,本申请实施例提供了一种参数更新方法、装置、电子设备和存储介质,由于本申请实施例中通过预先构建的参数数目与参数更新模式之间的映射关系,自动的选择匹配的目标参数更新模式,能够获得较好的加速性能,并根据目标参数更新模式和自然语言模型对应的数据并行粒度,将模型状态量划分为多个模型状态量组,并分配到多个数据并行进程,减少了每个数据并行进程维护的模型状态量,节省了显示内存占用。通过各个数据并行进程,基于模型状态量组和目标参数更新模式,进行参数更新,获得更新后的模型状态量组,并对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量。基于上述方式进行参数更新,能够根据不同的参数规模自动选择不同的更新模式,减少内存占用,节约模型训练时间,提高模型训练效率。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图3所示,其为本申请实施例的应用场景示意图。该应用场景图中包括两个终端设备310和一个服务器320。本申请实施例中的终端设备310上可以安装有客户端。
本申请实施例中,终端设备310包括但不限于个人计算机、手机、平板电脑、笔记本、电子书阅读器、智能语音交互设备、智能家电、车载终端等具有一定计算能力并且运行有即时通信类软件及网站或者社交类软件及网站的用户终端。各终端设备310通过无线网络与服务器320连接,服务器320可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
可选的,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
可选的,在本申请实施例中,自然语言模型可以部署于终端设备310上进行训练,也可以部署于服务器320上进行训练。服务器320中可存储有大量训练样本,包含至少一组样本多媒体内容,用于训练自然语言模型。可选的,在基于本申请实施例中的训练方法训练得到自然语言模型之后,可直接将训练好的自然语言模型部署于服务器320或终端设备310上。一般情况下都是直接将自然语言模型部署于服务器320上,在本申请实施例中,自然语言模型常用于文本处理、语义理解、机器翻译、机器人问答、知识图谱等方面。
本申请实施例提供的自然语言模型可应用于进行文本处理、语音处理、语义理解、机器翻译、机器人问答、知识图谱等场景下,下面对本申请中的参数更新方法应用于进行文本处理和语音处理的自然语言模型进行介绍:
比如,本申请中的自然语言模型为应用于进行文本处理的文本分类模型时,首先,获取样本文本信息,通过初始文本分类模型对样本文本信息进行分类,获得分类结果,基于分类结果和样本文本信息对应的类别标签,通过目标参数更新模式,对初始文本分类模型中的模型状态量进行参数更新,参数更新后的文本分类模型可以对各种待分类文本进行分类,例如根据是否包含敏感信息对待分类文本进行分类。
需要说明的是,本申请实施例提供的自然语言模型的参数更新的方法,可以应用于各种包含有自然语言处理任务的应用场景下,在不同场景下所使用的训练样本不同,例如在进行文本处理时,使用的训练样本包括:新闻文本、文章文本、翻译文本等,在此不做一一列举。
再比如,本申请中的自然语言模型为应用于进行语音处理的语音识别模型时,首先,获取样本语音信息,通过初始语音识别模型对样本语音信息进行语音识别,并基于语音识别结果和样本语音信息对应的内容标签,通过目标参数更新模式,对初始语音识别模型中的模型状态量进行参数更新,更新后的语音识别模型可以对各种待识别语音进行识别,例如,将待识别语音转化为汉字。
需要说明的是,本申请实施例中的参数更新方法可以由服务器或终端设备单独执行,也可以由服务器和终端设备共同执行。本文主要是以服务器单独执行为例进行举例说明的,一般模型训练过程由服务器320单独执行。
需要说明的是,图3所示只是举例说明,实际上终端设备和服务器的数量不受限制,在本申请实施例中不做具体限定。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的参数更新方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
参阅图4所示,为本申请实施例提供的一种参数更新方法的实施流程图,这里是以服务器为执行主体为例进行简单介绍的,该方法的具体实施流程如下:
S41:服务器获取包含多条训练样本的训练样本数据集;
其中,每条训练样本包括样本多媒体内容以及对应的样本标签,例如,当训练样本为文本样本时,每条文本样本包括样本文本内容以及样本标签。
S42:服务器基于待更新的自然语言模型中的模型状态量的总数目,以及预先构建的参数数目与参数更新模式之间的映射关系,确定与总数目相匹配的目标参数更新模式;
其中,自然语言模型用于对待处理多媒体内容进行自然语言处理。
在本申请实施例中,模型状态量包括但不限于下列的部分或全部:权重张量,梯度张量和优化器状态量。
其中,权重张量表示自然语言模型中各网络层所对应的权重矩阵,可简称权重,梯度张量表示自然语言模型中各网络层所对应的梯度矩阵,可简称梯度,优化器状态量表示用于将梯度张量转换为权重张量的参数。
在本文中,模型参数的更新主要是指权重的更新,梯度张量和优化器状态量为模型训练过程中,用于辅助更新权重的参数。
在一种可选的实施方式中,本申请中的参数更新模式包括但不限于:
数据并行模式、数据并行与模型并行的第一混合并行模式、数据并行与流水线并行的第二混合并行模式、模型并行、数据并行与流水线并行的第三混合并行模式、异构分布式模式,当模型参数规模为几亿到十亿规模时,采用数据并行模式即可,当模型参数规模为几十亿到百亿规模时,采用数据并行模式的基础上进行模型状态量划分,当模型参数规模为几百亿规模时,采用数据并行与模型并行的第一混合并行模式、数据并行与流水线并行的第二混合并行模式、模型并行、数据并行与流水线并行的第三混合并行模式均可,当模型参数规模为千亿规模时,采用异构分布式模式与以上任意一种参数更新模式混合均可。
简言之,当模型参数规模较小时采用数据并行模式即可,随模型参数规模增加,可以采用更多的参数更新模式混合。
需要说明的是,上述只是举例说明,在此不做具体限定,下文中会结合具体实施例进行详细阐述。
S43:服务器确定自然语言模型对应的数据并行粒度,基于目标参数更新模式及所述数据并行粒度,将模型状态量划分为相应的多个模型状态量组,以及将多个模型状态量组分别分配至各个数据并行进程;
S44:服务器通过各个数据并行进程,分别基于获得的模型状态量组及目标参数更新模式,以及所述训练样本数据集,对自然语言模型进行参数更新,分别获得各个数据并行进程各自对应的更新后的模型状态量组;
下面结合图5对本申请实施例中一次完整参数更新的训练过程进行详细介绍,深度学习的训练过程是一个迭代收敛的过程,可以包括以下步骤:
S1:读取数据,通过CPU进行数据读取,然后拷贝到GPU上,即为神经网络模型读取输入的训练数据的过程;
S2:前向计算,每个节点使用自身划分的训练数据进行从输入到输出的计算;
S3:反向计算,是与前向计算执行方向相反的过程,为了使前向计算预测值与实际标签值的误差尽可能小,将预测值与实际标签值进行对比,根据对比误差(通常称为损失函数),按照前向计算相反的方向,依次反向计算神经网络模型各层参数的梯度;
S4:梯度规约,由于每张GPU卡读取的数据不同,每张卡在每次反向计算完之后,计算的梯度不同,需要通过机器之间的通信进行梯度的交换,对所有节点上计算出的梯度做一个规约操作(如求最大值,求和);
其中,梯度规约具体可以分为AllReduce和ReduceScatter两种方式,在下文进行详细说明。
S5:权重更新,根据规约后的梯度对模型参数进行更新。
S45:服务器通过各个数据并行进程之间进行通信,对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量。
由于在步骤S43中将模型状态量分为多个模型状态组,分配给了各个数据并行进程,因而,各个数据并行进程之间还需要进行通信,对各个数据并行进程对应的模型状态量组进行聚合,以使各个数据并行进程获取全量模型状态量,也可称全量权重信息。
在上述实施方式中,由于本申请实施例中通过预先构建的参数数目与参数更新模式之间的映射关系,自动的选择与待更新的自然语言模型当前的参数规模相匹配的目标参数更新模式,来进行模型参数的更新,该方式下,对于不同参数规模的自然语言模型具有更好的针对性,此外,根据目标参数更新模式和自然语言模型对应的数据并行粒度,将模型状态量划分为多个模型状态量组,并分配到多个数据并行进程,减少了每个数据并行进程维护的模型状态量,节省了显示内存占用;各个数据并行进程,只需对自身分配的模型状态量组进行更新,进而对获得的更新后的各个模型状态量组进行聚合,即可获取更新后的全量模型状态量,可以获得较好的加速性能。因而,基于上述方式进行参数更新,能够根据不同的参数规模自动选择不同的更新模式,减少内存占用,节约模型训练时间,提高模型训练效率,能够有效平衡模型训练过程中的内存效率和计算效率。
下面对步骤S42进行详细介绍,本申请中根据确定的目标参数更新模式是否包括模型并行,具体分为以下两种划分模型状态量的方式:
划分方式一、目标参数更新模式包括数据并行,不包括模型并行。
在一种可选的实施方式中,若目标参数更新模式包括数据并行,不包括模型并行,通过以下方式划分模型状态量:
根据模型状态量包含的各个权重张量所包含的元素的总数目,将模型状态量分别分配至各个数据并行进程,权重张量表征自然语言模型中各网络层所对应的权重矩阵。
具体的,模型状态量包含若干个权重张量,每个权重张量包含若干个元素,根据模型状态量包含的元素的总数目,将模型状态量分配到各个数据并行进程,在本申请实施例中主要是根据元素的总数目将模型状态量均匀分配到各个数据并行进程的,实际上可以均匀分配,也可以不均匀分配,均匀分配指最终划分给各个数据并行进程的模型状态量组中的模型状态量,所包含的元素数据相同或相似(相差数目在一定范围内)。
在本申请实施例中,通过根据模型状态量包含的元素的总数目,将模型状态量分配到各个数据并行进程,每个模型状态量只对某个数据并行进程可见,从每个数据并行进程保存一份完整的模型状态量,变成每个数据进程只维护部分模型状态量,节省了显存占用,能够提升大规模的参数训练性能。
参阅图6,其为本申请实施例中一种模型状态量划分方法的示意图。
首先,假设模型状态量包括20个权重tensor(张量),统计这20个tensor所包含的元素的总数目,然后将这20个tensor将划分给多个GPU进程,如图3,gpu0更新模型状态量tensor1;gpu1更新tensor2,tensor3;gpu2更新tensor4,tensor5,tensor6,…,gpu63更新tensor18,tensor19,tensor20。
划分方式二、目标参数更新模式包括模型并行和数据并行。
在一种可选的实施方式中,若目标参数更新模式包括模型并行和数据并行,则通过以下方式对模型状态量进行划分:
首先,按照每个模型进程组包含的数据并行进程的数量,对自然语言模型的网络结构进行切分,得到多个子模型,然后将多个子模型各自包含的模型状态量,分别分配给一个模型进程组中的各个数据并行进程,最后将一个模型进程组中的各个数据并行进程对应的子模型的模型状态量,分配给自身对应的数据并行组中的各个数据并行进程,每个数据并行进程对应的模型状态量为一个模型状态量组。
具体的,假设有两个模型进程组,每个模型进程组包含的数据并行进程的数量为8,一个数据并行进程对应一张GPU卡,第一个模型进程组为[GPU1,GPU2…GPU8],第二个[GPU9,GPU10、…、GPU16],则将自然语言模型切分成8个子模型,这8个子模型包含的模型状态量分别是tensor1、tensor2、tensor3、…、tensor8,则首先将tensor1、tensor2、tensor3、…、tensor8分别分配给模型进程组中的8个数据并行进程,例如将tensor1分配给GPU1,tensor2分配给GPU2,…,tensor8分配给GPU8。之后,再将各个模型状态量分配给同一数据并行组中的各个数据并行进程,例如将tensor1划分为两份,分别分配给GPU1和GPU9,将tensor2划分为两份,分别分配给GPU2和GPU10,…,将tensor8划分为两份,分别分配给GPU8和GPU16。
最终,第一个模型进程组中的各个数据并行进程和第二个模型进程组中的各个数据并行进程分别处理tensor1、tensor2、tensor3、…、tensor8的一部分。例如,GPU1处理tensor1的一部分,GPU9处理tensor1的另一部分;GPU2处理tensor2的一部分,GPU10处理tensor2的另一部分,…,依此类推即可。
在本申请实施例中,通过将模型状态量划分到模型进程组中的各个数据并行进程,并进一步的将模型状态量组划分到数据并行组中的各个数据并行进程,在模型参数规模较大的情况下,节省了显存占用,减小了带宽对训练时间的限制,能够提升训练效率。
下面分别以不同参数规模对应不同参数更新模式为例进行举例说明。
具体实施例一:
在一种可选的实施方式中,若神经网络模型的训练参数规模为10亿参数以下,则通过All-Reduce Collective数据并行进行训练,集群中存在多个地位平等的Trainer(训练器,即数据并行进程)。在数据并行的方式下,每个Trainer上都保存一份完整的模型网络结构和模型参数(即模型状态量),在前向计算和反向计算过程中,每个Trainer使用自身划分的数据进行计算,得到对应的梯度,然后Trainer之间通过All-Reduce(全规约)等通信方式同步梯度到所有Trainer,最后每个Trainer使用同步后的梯度独立完成参数更新。
在本申请实施例中,当参数规模较小时,无需进行模型状态量划分,每个训练节点使用不同的训练数据对所有模型状态量进行训练,再通过梯度规约同步所有梯度,独立完成参数更新,能够获得较好的训练效果。
在一种可选的实施方式中,若目标参数更新模式为数据并行模式,通过下列方式对自然语言模型进行参数更新:
首先将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给各个数据并行进程,然后针对各个数据并行进程,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
在该参数更新模式下,即可采用划分方式一中的方式,对模型状态量进行划分,分配给各个数据并行进程,在此不再重复赘述。
具体的,假设数据并行粒度为4,数据并行粒度的数量可以为总数据并行进程数量,将训练样本数据集划分为4个训练样本组,分别分配给4个数据并行进程,每个数据并行进程使用自身的训练样本数据,对分配到的模型状态量组进行更新,得到更新后的模型状态量组。
具体实施例二:
下面对本申请实施例中训练参数规模为几十亿到百亿为例进行举例说明,本申请主要通过使用显存节省和数据并行相结合的技术训练几十亿到百亿参数规模的模型的。
模型的显存占用主要包括两个部分,一部分为Model States,主要包括优化器状态量和梯度以及参数等,另一部分为其他内存占用,如激活内存用于保存中间结果,在反向计算中用到;还有临时数据块的频繁创建和释放导致的内存碎片,导致明明还有显存但是申请失败。
下面以数据并行粒度为4为例,对自然语言模型进行参数更新的过程具体介绍:
S1:将模型状态量划分为4个模型状态量组,分配给4个数据并行进程,将训练样本数据集划分为4个训练样本组,分配给4个数据并行进程,每个数据并行进程使用分配到的训练样本数据,对分配到的模型状态量进行计算,得到对应的梯度;
S2:由于在反向计算的过程中每个数据并行进程读取的训练样本数据不同,每个数据并行进程在反向计算之后,得到的模型的梯度不同,需要通过reduce-scatter(散射规约)进行梯度规约操作;
参阅图7A所示,其为本申请实施例中一种梯度规约方法的示意图,不同rank(序列,即数据并行进程)的数据块用不同颜色表示,不同颜色表示包括的模型状态量不同,如rank0的数据块in(输入)0为蓝色,rank1的数据块in1为红色,rank2的数据块in2为绿色,rank3的数据块in3为黄色。在图7A中用不同的图案填充表示不同的颜色。
首先,每个rank先做散射操作,将各自的数据切分成同等大小的数据块,然后按照序列对每个rank上的数据进行规约,每个rank上保存部分经过规约后的梯度。
S3:反向计算完成后,每个数据并行进程上保存部分规约后的梯度,通过调用Adam(自适应矩阵估计)优化器更新各自保存的梯度对应的权重;
Adam优化器通过下面的公式进行权重更新:
mt=β1mt-1+(1-β1)ΔW
vt=β2vt-1+(1-β2)ΔW2
Figure BDA0003330081440000211
Figure BDA0003330081440000212
Figure BDA0003330081440000213
其中,β1、β2、∈均为超参数,m为一阶动量,v为二阶动量,ΔW为规约后的梯度,W为权重。
S4:Adam优化器对权重进行更新后,所有的数据并行进程之间进行通信,并将接收到的数据块拼接在一起,参阅图7B所示,每个数据并行进程都获得全量权重信息。
当模型参数规模更大时,首先,需要进行模型状态量的划分,以使用64台机器512张卡为例,假设用64台机器每台机器8张GPU卡进行100亿参数规模的模型参数训练时,即使进行了模型状态量的划分,每张卡仍不能单独放下这个100亿的模型,因而需要进一步进行模型并行。
具体实施例三:显存节省+模型并行+数据并行
在一种可选的实施方式中,若目标参数更新模式为数据并行和模型并行的第一混合并行模式,通过下列方式对自然语言模型进行参数更新:
首先,将自然语言模型按照对应的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程,并且将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程,针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
参阅图8其为本申请实施例中的一种第一混合并行模式的结构示意图,下面结合图8具体介绍通过第一混合并行模式对自然语言模型进行参数更新:
在本申请实施例中,模型并行是指将模型结构按照网络层结构或者是参数量划分,比如按照网络层划分。假设模型并行粒度为8,当一个模型规模太大时,可以将该模型切分成8个网络层,一个网络层对应的模型状态量分配给同一模型并行组中的一个数据并行进程。
8个数据并行进程在一个模型进程组中,包括[GPU1,GPU2…GPU8],[GPU9,GPU10…GPU16],…,[GPU505,GPU506…GPU512]共64组,各个GPU保存一部分模型网络结构。比如,层1划分至GPU1上,层2划分至GPU2上,…,层8划分至GPU8上;层1划分至GPU9上,层2划分至GPU10上,…,层8划分至GPUXX上;…,以此类推即可。
进一步的,还可以采用模型并行和数据并行混合的模式进行训练,也就是用更多的GPU卡进行训练,数据并行粒度为64,每台机器的第一张卡形成一个数据并行组(共64张卡),包括[GPU1,GPU9…GPU505],[GPU2,GPU10…GPU506],…,[GPU508,GPU16…GPU512]共8组。同一数据并行组内使用不同的训练数据进行训练。上述两个并行粒度的乘积可以为第一混合并行模式中的总数据并行进程数量。
每个模型进程组内采用模型并行,以模型进程组[GPU1,GPU2…GPU8]为例,将tensor1-tensor8分别分配给GPU1-GPU8,模型并行只是在节点内部把一个模型的参数切分成了不同份,但是节点间[GPU1,GPU9,GPU17,…,GPU505]为数据并行,形成一个数据进程组,以数据进程组[GPU1,GPU9…GPU505]为例,GPU1,GPU9,…,GPU505均使用训练样本组1对tensor1进行训练,进一步的,还可以进行模型并行和数据并行和显存节省混合参数更新模式通过模型状态量划分将tensor1划分到GPU1,GPU9,…,GPU505,即GPU1进行tensor1的1/64的训练,GPU9进行tensor1的1/64的训练,…,GPU505进行tensor1的1/64的训练。
模型并行结束后,前向计算通过规约产生完整的activation(激活),反向计算通过规约产生完整的梯度,并根据梯度对模型状态量进行更新。
具体实施例四:
在一种可选的实施方式中,若目标参数更新模式为数据并行和流水线并行的第二混合并行模式,通过下列方式对自然语言模型进行参数更新:
首先,将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程,然后,针对各个数据并行进程,按照每个数据并行组内部采用数据并行的方式,不同数据并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
其中,流水线进程组是指这个流水线进程组内所有的GPU卡上的模型合起来,就是一份完整的模型。
参阅图9,其为本申请实施例中的一种第二混合并行模式的结构示意图,其中,F表示前向计算,B表示后向计算,AR表示散射规约,Step表示根据梯度更新权重,Time表示时间。数据并行粒度为2,数据进程组包括[GPU0,GPU1],[GPU2,GPU3]共两组。流水线并行粒度为2,流水线进程组包括[GPU0,GPU2],[GPU1,GPU3]共两组。上述两个并行粒度的乘积可以为第二混合并行模式中的总数据并行进程数量。
下面以一个模型包括2层网络结构为例,假设把层1放到GPU0和GPU1上,把层2放到GPU2和GPU0上,层1和层2之间有数据依赖关系,层1正向计算的结果发送给层2,层2才能开始进行反向计算。GPU0和GPU2上的模型组成一个完整的模型,GPU1和GPU3上的模型组成一个完整的模型,将训练数据划分为2份,[GPU0,GPU2]使用训练数据1,[GPU1,GPU3]使用训练样本数据2。
训练开始,GPU0(Layer1)拿到minibatch(小批量)的数据去做前向计算(F0),这个时候GPU2(Layer2)不能做任何事情,因为它依赖于GPU0的结果。然后G0把minibatch的F0计算完成后,把结果发给GPU2,GPU2就可以做前向计算F0,因为这里列举的模型结构比较简单,只有两层,GPU2做完计算之后,没有需要发给下一层的结果,没有数据依赖,可以立即做反向计算。在反向计算过程中GPU0依赖于GPU2的数据,所以GPU2在做反向过程中,GPU0需要等GPU2输出反向计算的数据B0,因而,GPU0可以将下一个minibatch的数据读进来做前向,即F1过程;等GPU2把B0结果计算完成后,再交给GPU0做反向计算。这样只有在训练开始较短的空闲时间,随着训练进行,G0和G2这两张卡都在进行计算,没有空闲时间,极大地提高了模型训练效率。
最后将各自计算获得的梯度进行散射规约后,对模型状态量进行更新,获得更新后的模型状态量组。
在一种可选的实施方式中,通过下列方式获得数据并行组:
按照数据并行粒度,将所有数据并行进程划分,获得各个数据进程组,每个模型进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
例如,仍以图9为例,数据并行粒度为2,获得2个数据进程组,分别是[GPU0,GPU1],[GPU2,GPU3],每个数据进程组中的数据并行进程的数目相同均为2个,不同的数据进程组中的数据并行进程不同,[GPU0,GPU1]用来训练层1,[GPU2,GPU3]用来训练层2。
实施例五:
在一种可选的实施方式中,若目标参数更新模式为包括模型并行、数据并行与流水线并行的第三混合并行模式,通过下列方式对自然语言模型进行参数更新:
首先,将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程,并且将自然语言模型按照获取的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程,然后针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行,不同数据并行组,不同模型并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
参阅图10,其为本申请实施例中一种第三混合并行模式的结构示意图,以4台机器32张卡为例,数据并行粒度为2,模型并行粒度为4,流水线并行粒度为4,上述三个并行粒度的乘积可以为第三混合并行模式中的总数据并行进程数量。数据进程组包括:[GPU0,GPU4],[GPU1,GPU5],[GPU2,GPU6]…[GPU27,GPU31]共16组,模型进程组包括:[GPU0,GPU1,GPU2,GPU3],[GPU4,GPU5,GPU6,GPU7],[GPU8,GPU9,GPU10,GPU11]…[GPU28,GPU29,GPU30,GPU31]共8组,流水线进程组包括:[GPU0,GPU8,GPU16,GPU24],[GPU1,GPU9,GPU17,GPU25],[GPU2,GPU10,GPU18,GPU26]…[GPU7,GPU15,GPU23,GPU31]共8组。在进行模型参数训练时,一般使用8台机器共64张卡即可,模型并行粒度小于等于8,在此不做具体限定,可根据实际情况设置。
首先,将训练样本数据集按照数据并行粒度划分为2份,每个数据进程组的第一张GPU卡使用训练样本组1,如GPU1、GPU2、GPU3、GPU4、GPU8…GPU27使用训练样本组1,GPU4、GPU5、GPU6、GPU7、GPU12…GPU31使用训练样本组2。其次,将自然语言模型按照模型并行粒度划分为4份,每个模型进程组中的一张GPU卡分配1/4模型,如每个自然语言模型的层1分配给每个模型进程组的第一张卡,GPU0、GPU4、GPU8、GPU12…GPU28用来训练层1,层2分配给每个模型进程组的第一张卡…以此类推。进一步的,流水线进程组之间采用类似图9所示的方式,不同GPU可以针对不同Minibatch(即样本)同时处理反向计算。并且计算出梯度后,根据梯度对各自的模型状态量进行更新,获得更新后的模型状态量组,能够训练更大规模的模型参数。
在一种可选的实施方式中,通过下列方式获得数据并行组和模型并行组:
按照自然语言模型对应的模型并行粒度,将所有数据并行进程划分,获得各个模型进程组,每个模型进程组中的数据并行进程的数量相同,且不同模型并行组中的数据并行进程不同;按照数据并行粒度,从多个模型并行组中的选取一个数据并行进程进行组合,获得各个数据并行组,每个数据进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
例如,以图8中使用64台机器512张卡为例,模型并行粒度为8,则将一个模型切分成8个数据并行进程,模型进程组包括[GPU1,GPU2…GPU8],[GPU9,GPU10…GPU16],…,[GPU505,GPU506…GPU512]共64组。数据并行粒度为64,每个模型进程组中的一个数据并行进程形成一个数据并行组,包括[GPU1,GPU9…GPU505],[GPU2,GPU10…GPU506],…,[GPU508,GPU16…GPU512]共8组,每个数据进程组均包括64个数据并行进程,不同的数据进程组中的数据并行进程不同,例如[GPU1,GPU9…GPU505]用来训练层1,[GPU2,GPU10…GPU506]用来训练层2。
在一种可选的实施方式中,若目标参数更新模式为异构分布式,通过下列方式对自然语言模型进行参数更新:
首先,GPU将模型状态量中的原始的优化器状态量和原始的梯度张量发送给CPU;并将原始的优化器状态量和原始的梯度张量,分别分配给CPU相关的各个数据并行进程,其次,基于GPU相关的各个数据并行进程,对各自对应的模型状态量组中的梯度张量进行更新,得到更新后的梯度张量,并将更新结果发送给相应CPU相关的各个数据并行进程;然后,基于CPU相关的各个数据并行进程内保存的原始的优化器状态量和原始的梯度张量,分别对相应的更新后的梯度进行转换,获得更新后的权重张量;最后,将更新后的权重张量发送给相应GPU相关的数据并行进程,作为各自对应的更新后的模型状态量组。
其中,优化器状态量在整个训练过程中都保存在CPU上。
具体的,在进行模型状态量划分的基础上,进一步GPU将把原始的优化器状态量和原始的梯度张量发送给CPU上相关的数据并行进程,各个GPU对各自模型状态量组中的梯度张量进行计算,在GPU上通过反向计算出梯度张量,并通过散射规约得到规约后的梯度,每个GPU仅保存各自模型状态量组中规约后的梯度,并发送给CPU,CPU相关的各个数据并行进程,根据更新后的梯度对权重张量进行更新,最后将更新后的权重张量发送给对应的GPU,在GPU上通过全聚集的方式,使得所有GPU获得全量更新后的权重张量。在本申请实施例中通过使用不同的CUDA流来重叠通信和计算以提高训练效率。
参阅图11,其为本申请实施例中一种异构分布式参数更新模式的交互时序图。该方法的具体实施流程如下:
S1101:CPU进行优化器状态量初始化,将模型状态量(包括优化器状态量、梯度)在所有数据并行进程间进行划分,划分完毕后,CPU优化器进行初始化工作,初始化m(一阶动量)和v(二阶动量);
S1102:GPU计算梯度张量,并对计算出的梯度张量进行散射规约,模型反向计算过程中会产生梯度tensor,散射规约梯度tensor到对应的数据并行进程,通过调用reduce-scatter接口进行梯度规约操作;
S1103:GPU将规约后的梯度张量发送给CPU,并且每个GPU把各自规约后的梯度发送到CPU上,并删除不属于自身模型状态量组的部分;
S1104:CPU根据调用Adam优化器根据梯度张量更新权重张量,由于反向计算完毕后,每个GPU都保存了一部分规约过的梯度tensor,那么每个GPU负责调用adam优化器更新这部分梯度对应的权重张量;
S1105:CPU将更新后的权重张量发送给各自对应的GPU,权重张量更新完毕后,划分后的参数就被发送给GPU,这时,每个数据并行进程保存了部分tensor权重张量;
S1106:GPU通过全聚集获得全量权重张量,所有GPU通过调用allgather接获取全量权重信息。
在本申请实施例中,由于在CPU编写程序时,通常利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,而在GPU编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖延迟,CPU的内存一般远远高于GPU的显存,基于上述方式可以使用CPU的内存进行更大规模的模型参数训练,提高模型训练效率。
在本申请实施例中,上述异构分布式参数更新模式可以与流水线并行、数据并行、模型并行中的任意一种或多种结合使用进行参数更新,比如,在上述步骤S1102,S1103,S1104中的至少一个步骤中,都可采用流水线并行、数据并行、模型并行中的任意一种或多种进行计算,在此不再重复赘述,通过不同参数规模的NLP大模型高性能分布式训练方案,能够支持1000亿参数模型的高性能分布式训练。
下面介绍本申请实施例中的参数更新方法的一种训练平台环境,如下表所示:
Figure BDA0003330081440000281
本申请实施例中的参数更新方法可以使用8台机器,64卡即可训练3亿到1000参数规模的模型,针对不同参数规模的训练瓶颈,提供不同的分布式训练方案,集成在一套训练框架中支持数据并行、模型并行、流水线并行、异构分布式并行等多种训练方案,针对不同参数规模形成最佳分布式训练方案实践,可以一键复现,使得算法工程师专注于调参数。
基于相同的发明构思,本申请实施例还提供一种参数更新装置的结构示意图。如图12所示,其为参数更新装置1200的结构示意图,可以包括:
获取单元1201,用于获取包含多条训练样本的训练样本数据集,每条训练样本包括样本多媒体内容以及对应的样本标签;
确定单元1202,用于基于待更新的自然语言模型中的模型状态量的总数目,以及预先构建的参数数目与参数更新模式之间的映射关系,确定与总数目相匹配的目标参数更新模式;
分配单元1203,用于确定自然语言模型对应的数据并行粒度,基于目标参数更新模式及数据并行粒度,将模型状态量划分为相应的多个模型状态量组,以及将多个模型状态量组分别分配至各个数据并行进程;
更新单元1204,用于通过各个数据并行进程,分别基于获得的模型状态量组及目标参数更新模式,以及所述训练样本数据集,对自然语言模型进行参数更新,分别获得各个数据并行进程各自对应的更新后的模型状态量组;
聚合单元1205,用于通过各个数据并行进程之间进行通信,对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量,其中,自然语言模型用于对待处理多媒体内容进行自然语言处理。
可选的,目标参数更新模式包括数据并行,分配单元1203具体用于:
根据模型状态量包含的各个权重张量所包含的元素的总数目,将模型状态量分别分配至各个数据并行进程,权重张量表征自然语言模型中各网络层所对应的权重矩阵。
可选的,目标参数更新模式包括模型并行与数据并行,分配单元1203具体用于:
按照每个模型进程组包含的数据并行进程的数量,对自然语言模型的网络结构进行切分,得到多个子模型;针对多个模型进程组,分别执行以下操作:将多个子模型各自包含的模型状态量,分别分配给一个模型进程组中的各个数据并行进程;将一个模型进程组中的各个数据并行进程对应的子模型的模型状态量,分配给自身对应的数据并行组中的各个数据并行进程,其中,每个数据并行进程对应的模型状态量为一个模型状态量组。
可选的,目标参数更新模式为数据并行模式,更新单元1204具体用于:
将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给各个数据并行进程;针对各个数据并行进程,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,目标参数更新模式为包括数据并行与模型并行的第一混合并行模式,更新单元1204具体用于:
将自然语言模型按照对应的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程;以及,将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,目标参数更新模式为包括数据并行与流水线并行的第二混合并行模式,更新单元1204具体用于:
将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;针对各个数据并行进程,按照每个数据并行组内部采用数据并行的方式,不同数据并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,目标参数更新模式为包括模型并行、数据并行与流水线并行的第三混合并行模式,更新单元1204具体用于:
将训练样本数据集按照数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;以及,将自然语言模型按照获取的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程;针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行,不同数据并行组,不同模型并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
可选的,目标参数更新模式为包括模型并行、数据并行与流水线并行的异构分布式模式,模型状态量包括权重张量,梯度张量和优化器状态量,权重张量表征自然语言模型中各网络层所对应的权重矩阵,梯度张量表征自然语言模型中各网络层所对应的梯度矩阵,优化器状态量为用于将梯度张量转换为权重张量的参数,
更新单元1204具体用于:
基于GPU相关的各个数据并行进程,对各自对应的模型状态量组中的梯度张量进行更新,得到更新后的梯度张量,并将更新结果发送给相应CPU相关的各个数据并行进程;基于CPU相关的各个数据并行进程内保存的原始的优化器状态量和原始的梯度张量,分别对相应的更新后的梯度进行转换,获得更新后的权重张量;将更新后的权重张量发送给相应GPU相关的数据并行进程,作为各自对应的更新后的模型状态量组。
可选的,更新单元1204还用于:
通过GPU将模型状态量中的原始的优化器状态量和原始的梯度张量发送给CPU;将原始的优化器状态量和原始的梯度张量,分别分配给CPU相关的各个数据并行进程。
可选的,优化器状态量在整个训练过程中都保存在CPU上。
可选的,通过下列方式获得数据并行组和模型并行组:
按照自然语言模型对应的模型并行粒度,将所有数据并行进程划分,获得各个模型进程组,每个模型进程组中的数据并行进程的数量相同,且不同模型并行组中的数据并行进程不同;按照数据并行粒度,从多个模型并行组中的选取一个数据并行进程进行组合,获得各个数据并行组,每个数据进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
可选的,通过下列方式获得数据并行组:
按照数据并行粒度,将所有数据并行进程划分,获得各个数据进程组,每个模型进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
上述实施方式也可应用于除自然语言模型外的其他模型,在此不做具体限定。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
在介绍了本申请示例性实施方式的参数更新方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备和计算装置。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备,参阅图13所示,其为应用本申请实施例的一种电子设备的一个硬件组成结构示意图,电子设备130可以至少包括处理器131、以及存储器132。其中,存储器132存储有程序代码,当程序代码被处理器131执行时,使得处理器131执行上述任意一种参数更新方法的步骤。
在一些可能的实施方式中,根据本申请的计算装置可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的参数更新步骤。例如,处理器可以执行如图4中所示的步骤。
下面参照图14来描述根据本申请的这种实施方式的计算装置140。如图14所示,计算装置140以通用计算装置的形式表现。计算装置140的组件可以包括但不限于:上述至少一个处理单元141、上述至少一个存储单元142、连接不同系统组件(包括存储单元142和处理单元141)的总线143。
总线143表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元142可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1421和/或高速缓存存储单元1422,还可以进一步包括只读存储器(ROM)1423。
存储单元142还可以包括具有一组(至少一个)程序模块1424的程序/实用工具1425,这样的程序模块1424包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置140也可以与一个或多个外部设备144(例如键盘、指向设备等)通信,还可与一个或者多个使得对象能与计算装置140交互的设备通信,和/或与使得该计算装置140能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口145进行。并且,计算装置140还可以通过网络适配器146与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器146通过总线143与用于计算装置140的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置140使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,本申请提供的参数更新方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的参数更新方法中的步骤,例如,电子设备可以执行如图4中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (16)

1.一种参数更新方法,其特征在于,该方法包括:
获取包含多条训练样本的训练样本数据集,每条训练样本包括样本多媒体内容以及对应的样本标签;
基于待更新的自然语言模型中的模型状态量的总数目,以及预先构建的参数数目与参数更新模式之间的映射关系,确定与所述总数目相匹配的目标参数更新模式;
确定所述自然语言模型对应的数据并行粒度,基于所述目标参数更新模式及所述数据并行粒度,将所述模型状态量划分为相应的多个模型状态量组,以及将所述多个模型状态量组分别分配至各个数据并行进程;
通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组;
通过所述各个数据并行进程之间进行通信,对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量,其中,所述自然语言模型用于对待处理多媒体内容进行自然语言处理。
2.如权利要求1所述的方法,其特征在于,所述目标参数更新模式包括数据并行;
则所述基于所述目标参数更新模式及所述数据并行粒度,将所述模型状态量划分为相应的多个模型状态量组,以及将所述多个模型状态量组分别分配至各个数据并行进程,包括:
根据所述模型状态量包含的各个权重张量所包含的元素的总数目,将所述模型状态量分别分配至所述各个数据并行进程,所述权重张量表征所述自然语言模型中各网络层所对应的权重矩阵。
3.如权利要求1所述的方法,其特征在于,所述目标参数更新模式包括模型并行与数据并行;
则所述基于所述目标参数更新模式及所述数据并行粒度,将所述模型状态量划分为相应的多个模型状态量组,以及将所述多个模型状态量组分别分配至各个数据并行进程,包括:
按照每个模型进程组包含的数据并行进程的数量,对所述自然语言模型的网络结构进行切分,得到多个子模型;
针对多个模型进程组,分别执行以下操作:
将所述多个子模型各自包含的模型状态量,分别分配给一个模型进程组中的各个数据并行进程;
将所述一个模型进程组中的各个数据并行进程对应的子模型的模型状态量,分配给自身对应的数据并行组中的各个数据并行进程,其中,每个数据并行进程对应的模型状态量为一个模型状态量组。
4.如权利要求1所述的方法,其特征在于,所述目标参数更新模式为数据并行模式;
则所述通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组,包括:
将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给各个数据并行进程;
针对所述各个数据并行进程,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
5.如权利要求1所述的方法,其特征在于,所述目标参数更新模式为包括数据并行与模型并行的第一混合并行模式;
则所述通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组,包括:
将所述自然语言模型按照对应的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程;以及,将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;
针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
6.如权利要求1所述的方法,其特征在于,所述目标参数更新模式为包括数据并行与流水线并行的第二混合并行模式;
则所述通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组,包括:
将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;
针对各个数据并行进程,按照每个数据并行组内部采用数据并行的方式,不同数据并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
7.如权利要求1所述的方法,其特征在于,所述目标参数更新模式为包括模型并行、数据并行与流水线并行的第三混合并行模式;
则所述通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组,包括:
将所述训练样本数据集按照所述数据并行粒度进行划分,获得多个训练样本组,并分别分配给同一数据并行组中的各个数据并行进程;以及,将所述自然语言模型按照获取的模型并行粒度进行切分,获得多个子模型,并分别分配给同一模型并行组中的各个数据并行进程;
针对各个数据并行进程,按照每个模型并行组内部采用模型并行,每个数据并行组内部采用数据并行,不同数据并行组,不同模型并行组之间采用流水线并行的方式,基于各自对应的训练样本数据,对各自对应的模型状态量组进行更新,获得对应的更新后的模型状态量组。
8.如权利要求1、4~7任一项所述的方法,其特征在于,所述目标参数更新模式为异构分布式模式;所述模型状态量包括权重张量,梯度张量和优化器状态量,所述权重张量表征所述自然语言模型中各网络层所对应的权重矩阵,所述梯度张量表征所述自然语言模型中各网络层所对应的梯度矩阵,所述优化器状态量为用于将所述梯度张量转换为权重张量的参数;
则所述通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组,包括:
基于图形处理器GPU相关的各个数据并行进程,对各自对应的模型状态量组中的梯度张量进行更新,得到更新后的梯度张量,并将更新结果发送给相应中央处理器CPU相关的各个数据并行进程;
基于所述CPU相关的各个数据并行进程内保存的原始的优化器状态量和原始的梯度张量,分别对相应的更新后的梯度进行转换,获得更新后的权重张量;
将所述更新后的权重张量发送给相应GPU相关的数据并行进程,作为各自对应的更新后的模型状态量组。
9.如权利要求8所述的方法,其特征在于,在所述基于GPU相关的各个数据并行进程,对各自对应的模型状态量组中的梯度张量进行更新之前,还包括:
通过GPU将所述模型状态量中的原始的优化器状态量和原始的梯度张量发送给所述CPU;
将所述原始的优化器状态量和原始的梯度张量,分别分配给所述CPU相关的各个数据并行进程。
10.如权利要求8所述的方法,其特征在于,所述优化器状态量在整个训练过程中都保存在CPU上。
11.如权利要求3、5、7任一项所述的方法,其特征在于,通过下列方式获得数据并行组和模型并行组:
按照所述自然语言模型对应的模型并行粒度,将所有数据并行进程划分,获得各个模型进程组,每个模型进程组中的数据并行进程的数量相同,且不同模型并行组中的数据并行进程不同;
按照所述数据并行粒度,从多个模型并行组中的选取一个数据并行进程进行组合,获得各个数据并行组,每个数据进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
12.如权利要求6所述的方法,其特征在于,通过下列方式获得数据并行组:
按照所述数据并行粒度,将所有数据并行进程划分,获得各个数据进程组,每个模型进程组中的数据并行进程的数量相同,且不同数据进程组中的数据并行进程不同。
13.一种参数更新装置,其特征在于,包括:
获取单元,用于获取包含多条训练样本的训练样本数据集,每条训练样本包括样本多媒体内容以及对应的样本标签;
确定单元,用于基于待更新的自然语言模型中的模型状态量的总数目,以及预先构建的参数数目与参数更新模式之间的映射关系,确定与所述总数目相匹配的目标参数更新模式;
分配单元,用于确定所述自然语言模型对应的数据并行粒度,基于所述目标参数更新模式及所述数据并行粒度,将所述模型状态量划分为相应的多个模型状态量组,以及将所述多个模型状态量组分别分配至各个数据并行进程;
更新单元,用于通过所述各个数据并行进程,分别基于获得的模型状态量组及所述目标参数更新模式,以及所述训练样本数据集,对所述自然语言模型进行参数更新,分别获得所述各个数据并行进程各自对应的更新后的模型状态量组;
聚合单元,用于通过所述各个数据并行进程之间进行通信,对获得的更新后的各个模型状态量组进行聚合,获取更新后的全量模型状态量,其中,所述自然语言模型用于对待处理多媒体内容进行自然语言处理。
14.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~12中任一所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述存储介质在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~12中任一所述方法的步骤。
16.一种计算机程序产品,其特征在于,包括计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1~12任一所述方法的步骤。
CN202111276305.1A 2021-10-30 2021-10-30 一种参数更新方法、装置、电子设备和存储介质 Pending CN114356540A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111276305.1A CN114356540A (zh) 2021-10-30 2021-10-30 一种参数更新方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111276305.1A CN114356540A (zh) 2021-10-30 2021-10-30 一种参数更新方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN114356540A true CN114356540A (zh) 2022-04-15

Family

ID=81095637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111276305.1A Pending CN114356540A (zh) 2021-10-30 2021-10-30 一种参数更新方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114356540A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114927A (zh) * 2022-04-22 2022-09-27 腾讯科技(深圳)有限公司 一种模型训练方法和相关装置
CN115563508A (zh) * 2022-11-08 2023-01-03 北京百度网讯科技有限公司 模型训练方法、装置以及设备
CN117608241A (zh) * 2024-01-24 2024-02-27 山东建筑大学 数控机床数字孪生模型的更新方法、系统、装置及介质

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105184367A (zh) * 2014-06-09 2015-12-23 讯飞智元信息科技有限公司 深度神经网络的模型参数训练方法及系统
CN109816042A (zh) * 2019-02-01 2019-05-28 北京达佳互联信息技术有限公司 数据分类模型训练的方法、装置、电子设备和存储介质
US20190251654A1 (en) * 2016-12-14 2019-08-15 Tencent Technology (Shenzhen) Company Limited Data processing method, apparatus, and electronic device
CN110379416A (zh) * 2019-08-15 2019-10-25 腾讯科技(深圳)有限公司 一种神经网络语言模型训练方法、装置、设备及存储介质
CN110705705A (zh) * 2019-09-25 2020-01-17 浪潮电子信息产业股份有限公司 卷积神经网络模型同步训练方法、集群及可读存储介质
CN111079921A (zh) * 2019-11-29 2020-04-28 杭州电子科技大学舟山同博海洋电子信息研究院有限公司 一种基于异构分布式系统的高效神经网络训练调度方法
US20200160171A1 (en) * 2018-11-20 2020-05-21 Microsoft Technology Licensing, Llc Mitigating communication bottlenecks during parameter exchange in data-parallel dnn training
CN111381966A (zh) * 2020-03-08 2020-07-07 苏州浪潮智能科技有限公司 一种分布式并行训练的方法、设备及可读介质
US20200250542A1 (en) * 2019-02-02 2020-08-06 Beijing Horizon Robotics Technology Research And Development Co., Ltd. Neural Network Training Method, Neural Network Training Apparatus and Electronic Device
CN111639368A (zh) * 2020-06-03 2020-09-08 汪金玲 一种基于区块链的增量学习分布式计算方法、系统和节点
WO2020199914A1 (zh) * 2019-04-03 2020-10-08 华为技术有限公司 训练神经网络的方法和装置
CN111782398A (zh) * 2020-06-29 2020-10-16 上海商汤智能科技有限公司 数据处理的方法、装置、系统及相关设备
CN112541513A (zh) * 2019-09-20 2021-03-23 百度在线网络技术(北京)有限公司 一种模型训练方法、装置、设备及存储介质
CN112561078A (zh) * 2020-12-18 2021-03-26 北京百度网讯科技有限公司 分布式的模型训练方法、相关装置及计算机程序产品
CN112559007A (zh) * 2020-12-14 2021-03-26 北京百度网讯科技有限公司 多任务模型的参数更新方法、装置及电子设备
CN112637835A (zh) * 2020-12-13 2021-04-09 成都易书桥科技有限公司 一种基于ota的嵌入式行为识别模型的及时更新技术
CN112784968A (zh) * 2021-01-29 2021-05-11 东南大学 一种加速分布式深度神经网络训练的混合流水线并行方法
CN112884086A (zh) * 2021-04-06 2021-06-01 北京百度网讯科技有限公司 模型训练方法、装置、设备、存储介质以及程序产品
CN113052253A (zh) * 2021-03-31 2021-06-29 北京字节跳动网络技术有限公司 超参数确定方法、装置、深度强化学习框架、介质及设备
CN113283613A (zh) * 2021-07-23 2021-08-20 上海燧原科技有限公司 深度学习模型的生成方法、优化方法、装置、设备及介质
CN113326938A (zh) * 2021-06-21 2021-08-31 商汤国际私人有限公司 网络训练、行人重识别方法及装置、电子设备和存储介质
CN113344074A (zh) * 2021-06-02 2021-09-03 北京百度网讯科技有限公司 模型训练方法、装置、设备及存储介质
US20210287044A1 (en) * 2020-03-11 2021-09-16 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for updating parameter of model, distributed training system and electric device
CN113516239A (zh) * 2021-04-16 2021-10-19 Oppo广东移动通信有限公司 模型训练方法、装置、存储介质及电子设备

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105184367A (zh) * 2014-06-09 2015-12-23 讯飞智元信息科技有限公司 深度神经网络的模型参数训练方法及系统
US20190251654A1 (en) * 2016-12-14 2019-08-15 Tencent Technology (Shenzhen) Company Limited Data processing method, apparatus, and electronic device
US20200160171A1 (en) * 2018-11-20 2020-05-21 Microsoft Technology Licensing, Llc Mitigating communication bottlenecks during parameter exchange in data-parallel dnn training
CN109816042A (zh) * 2019-02-01 2019-05-28 北京达佳互联信息技术有限公司 数据分类模型训练的方法、装置、电子设备和存储介质
US20200250542A1 (en) * 2019-02-02 2020-08-06 Beijing Horizon Robotics Technology Research And Development Co., Ltd. Neural Network Training Method, Neural Network Training Apparatus and Electronic Device
WO2020199914A1 (zh) * 2019-04-03 2020-10-08 华为技术有限公司 训练神经网络的方法和装置
CN110379416A (zh) * 2019-08-15 2019-10-25 腾讯科技(深圳)有限公司 一种神经网络语言模型训练方法、装置、设备及存储介质
CN112541513A (zh) * 2019-09-20 2021-03-23 百度在线网络技术(北京)有限公司 一种模型训练方法、装置、设备及存储介质
WO2021056390A1 (zh) * 2019-09-25 2021-04-01 浪潮电子信息产业股份有限公司 卷积神经网络模型同步训练方法、集群及可读存储介质
CN110705705A (zh) * 2019-09-25 2020-01-17 浪潮电子信息产业股份有限公司 卷积神经网络模型同步训练方法、集群及可读存储介质
CN111079921A (zh) * 2019-11-29 2020-04-28 杭州电子科技大学舟山同博海洋电子信息研究院有限公司 一种基于异构分布式系统的高效神经网络训练调度方法
CN111381966A (zh) * 2020-03-08 2020-07-07 苏州浪潮智能科技有限公司 一种分布式并行训练的方法、设备及可读介质
US20210287044A1 (en) * 2020-03-11 2021-09-16 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for updating parameter of model, distributed training system and electric device
CN111639368A (zh) * 2020-06-03 2020-09-08 汪金玲 一种基于区块链的增量学习分布式计算方法、系统和节点
CN111782398A (zh) * 2020-06-29 2020-10-16 上海商汤智能科技有限公司 数据处理的方法、装置、系统及相关设备
CN112637835A (zh) * 2020-12-13 2021-04-09 成都易书桥科技有限公司 一种基于ota的嵌入式行为识别模型的及时更新技术
CN112559007A (zh) * 2020-12-14 2021-03-26 北京百度网讯科技有限公司 多任务模型的参数更新方法、装置及电子设备
CN112561078A (zh) * 2020-12-18 2021-03-26 北京百度网讯科技有限公司 分布式的模型训练方法、相关装置及计算机程序产品
CN112784968A (zh) * 2021-01-29 2021-05-11 东南大学 一种加速分布式深度神经网络训练的混合流水线并行方法
CN113052253A (zh) * 2021-03-31 2021-06-29 北京字节跳动网络技术有限公司 超参数确定方法、装置、深度强化学习框架、介质及设备
CN112884086A (zh) * 2021-04-06 2021-06-01 北京百度网讯科技有限公司 模型训练方法、装置、设备、存储介质以及程序产品
CN113516239A (zh) * 2021-04-16 2021-10-19 Oppo广东移动通信有限公司 模型训练方法、装置、存储介质及电子设备
CN113344074A (zh) * 2021-06-02 2021-09-03 北京百度网讯科技有限公司 模型训练方法、装置、设备及存储介质
CN113326938A (zh) * 2021-06-21 2021-08-31 商汤国际私人有限公司 网络训练、行人重识别方法及装置、电子设备和存储介质
CN113283613A (zh) * 2021-07-23 2021-08-20 上海燧原科技有限公司 深度学习模型的生成方法、优化方法、装置、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李垠桥;阿敏巴雅尔;肖桐;薄乐;朱靖波;张俐;: "基于数据并行的神经语言模型多卡训练分析", 中文信息学报, no. 07, 15 July 2018 (2018-07-15) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114927A (zh) * 2022-04-22 2022-09-27 腾讯科技(深圳)有限公司 一种模型训练方法和相关装置
CN115563508A (zh) * 2022-11-08 2023-01-03 北京百度网讯科技有限公司 模型训练方法、装置以及设备
CN117608241A (zh) * 2024-01-24 2024-02-27 山东建筑大学 数控机床数字孪生模型的更新方法、系统、装置及介质
CN117608241B (zh) * 2024-01-24 2024-04-05 山东建筑大学 数控机床数字孪生模型的更新方法、系统、装置及介质

Similar Documents

Publication Publication Date Title
WO2021063171A1 (zh) 决策树模型的训练方法、系统、存储介质及预测方法
CN106503791B (zh) 用于有效神经网络部署的系统和方法
KR102302609B1 (ko) 신경망 아키텍처 최적화
EP4036724A1 (en) Method for splitting neural network model by using multi-core processor, and related product
US11790212B2 (en) Quantization-aware neural architecture search
CN114356540A (zh) 一种参数更新方法、装置、电子设备和存储介质
KR20190113928A (ko) 강화 학습을 통한 디바이스 배치 최적화
US11488064B2 (en) Machine learning model for micro-service compliance requirements
US20210295168A1 (en) Gradient compression for distributed training
CN111523640B (zh) 神经网络模型的训练方法和装置
US11423307B2 (en) Taxonomy construction via graph-based cross-domain knowledge transfer
US20220335304A1 (en) System and Method for Automated Design Space Determination for Deep Neural Networks
US11676021B1 (en) Multi-model training pipeline in distributed systems
CN111666416B (zh) 用于生成语义匹配模型的方法和装置
EP4131083A2 (en) Method and apparatus for generating federated learning model
CN113348472A (zh) 具有软内核选择的卷积神经网络
US11803374B2 (en) Monolithic computer application refactoring
CN115292046A (zh) 算力分配方法、装置、存储介质及电子设备
CN111563158A (zh) 文本排序方法、排序装置、服务器和计算机可读存储介质
CN113761220A (zh) 信息获取方法、装置、设备及存储介质
CN116957006A (zh) 预测模型的训练方法、装置、设备、介质及程序产品
CN115114927A (zh) 一种模型训练方法和相关装置
US20220327356A1 (en) Transformer-Based Model Knowledge Graph Link Prediction
CN112149426B (zh) 阅读任务处理方法及相关设备
US11520783B2 (en) Automated validity evaluation for dynamic amendment

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