CN117035045A - 模型参数更新方法、装置、设备、存储介质和程序产品 - Google Patents

模型参数更新方法、装置、设备、存储介质和程序产品 Download PDF

Info

Publication number
CN117035045A
CN117035045A CN202211127560.4A CN202211127560A CN117035045A CN 117035045 A CN117035045 A CN 117035045A CN 202211127560 A CN202211127560 A CN 202211127560A CN 117035045 A CN117035045 A CN 117035045A
Authority
CN
China
Prior art keywords
data
model
training
gradient
network model
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
CN202211127560.4A
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 CN202211127560.4A priority Critical patent/CN117035045A/zh
Publication of CN117035045A publication Critical patent/CN117035045A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (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)

Abstract

本申请涉及一种模型参数更新方法、装置、计算机设备、存储介质和程序产品。所述方法涉及人工智能,包括:获取待更新网络模型的模型状态量,将各模型状态量划分至各数据并行进程,基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程对应的子训练数据集。执行各数据并行进程,根据与各数据并行进程对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度,对各梯度进行梯度规约处理,获得对应的梯度规约数据。根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。采用本方法针对每个数据并行进程更新保存部分模型状态量,可平衡各训练节点间的传输效率,提升网络模型的训练效率。

Description

模型参数更新方法、装置、设备、存储介质和程序产品
技术领域
本申请涉及人工智能技术领域,特别是涉及一种模型参数更新方法、装置、计算机设备、存储介质和程序产品。
背景技术
随着人工智能技术的发展,以及神经网络模型在不同领域,包括图像识别、语音识别、自然语言处理等领域的广泛应用,使用过程中随着神经网络的进一步发展,其结构变得愈加复杂,神经网络的网络参数规模和计算量也随之增大,进行需要消耗大量时间训练神经网络,才能获得可应用的网络模型,进而需要加快模型训练,减少模型训练时间以及资源消耗。
传统上,针对结构复杂的大型神经网络模型训练,通常采用模型并行方式,即通过将神经网络模型拆分为多个组件,将每个组件分别部署在不同的训练机器上进行同时训练,以减少训练时间,加快神经网络模型的训练。
但模型并行的方式,通常由于神经网络模型结构过大,需要拆分至多个训练机器,因此无法顾及所有的训练机器的训练情况,并行性能较差,同时,为实现所有训练机器的同步运行,仍然存在节点间同步时间消耗的问题。因此,传统上加快神经网络模型的训练方式,仍然存在并行训练性能较差,训练耗时较长的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够减少神经网络模型的训练耗时,提升训练效率的模型参数更新方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种模型参数更新方法。所述方法包括:
获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
在其中一个实施例中,所述待更新网络模型包括第一线性层和第二线性层;所述基于所述待更新网络模型进行结构切分,获得多个模型组件,包括:基于所述第一线性层进行纵向切分,获得与所述第一线性层对应的多个第一类模型组件、以及基于所述第二线性层进行横向切分,获得与所述第二线性层对应的多个第二类模型组件;
所述执行各所述模型并行进程,基于所述模型状态量,确定与所述模型并行进程对应的梯度张量,包括:
执行与各所述第一类型模型组件对应的各模型并行进程,基于与所述第一线性层对应的第一激活函数,根据所述模型状态量,进行各所述第一类型模型组件的前向计算和反向计算,获得各所述第一类模型组件的第一输出数据;
执行与各所述第二类型模型组件对应的各模型并行进程,基于与所述第二线性层对应的第二激活函数,根据各所述第一输出数据进程所述第二类模型组件的前向计算和反向计算,获得各所述第二类模型组件的第二输出数据;
将各所述第二输出数据,确定为与各所述模型并行进程一一对应的梯度张量。
在其中一个实施例中,所述获取所述流水线分组中的各所述训练节点的排序,使得各所述训练节点按照所述排序依次进行前向计算以及反向计算,获得平均模型梯度,包括:
将与所述待更新网络模型对应的全量训练集,划分为多批次的微训练集;
获取所述流水线分组中的各所述训练节点的排序;所述训练节点包括第一训练节点和第二训练节点,所述第一训练节点在所述第二训练节点之前;所述第一训练节点用于获取依次获取各批次的微训练集,进行前向计算,获得损失值,并将所述损失值发送至所述第二训练节点;所述第二训练节点用于根据所述损失值进行反向计算,获得梯度数据;
其中,在所述第二训练节点根据所述损失值进行反向计算时,所述第一训练节点获取下一批次的微训练集,并行进行前向计算。
第二方面,本申请还提供了一种模型参数更新装置。所述装置包括:
模型状态量获取模块,用于获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
子训练数据集确定模块,用于基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
梯度确定模块,用于执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
梯度规约处理模块,用于对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
模型参数更新模块,用于根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
上述模型参数更新方法、装置、计算机设备、存储介质和计算机程序产品中,通过获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程,进而基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。进一步地,通过执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度,并进一步对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据,以根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。实现了根据待更新网络模型的模型状态量,确定与各数据并行进程各自匹配的子训练数据集,仅针对与各自匹配的子训练数据集进行模型参数的更新,而无需每个数据进程保存更新完整的模型状态量,进而可充分平衡训练机器上各训练节点之间的传输效率,节省训练机器的显存占用,同时减少神经网络模型的训练耗时,提升网络模型的训练效率。
附图说明
图1为一个实施例中模型参数更新方法的应用环境图;
图2为一个实施例中模型参数更新方法的流程示意图;
图3为一个实施例中数据并行通信处理的示意图;
图4为一个实施例中与数据并行进程对应的状态量切分示意图;
图5为一个实施例中基于数据并行进程的梯度规约处理示意图;
图6为一个实施例中基于数据并行进程的全聚集处理示意图;
图7为另一个实施例中模型参数更新方法的流程示意图;
图8为一个实施例中模型并行通信处理的示意图;
图9为再一个实施例中模型参数更新方法的流程示意图;
图10为一个实施例中流水线并行通信处理的示意图;
图11为一个实施例中模型参数更新装置的结构框图;
图12为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的模型参数更新方法涉及人工智能技术,其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,即人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。而人工智能技术作为一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术,其中,人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
其中,机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗以及智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例提供的模型参数更新方法,具体涉及人工智能中的深度学习技术,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备、飞行器等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
进一步地,终端102和服务器104均可单独用于执行本申请实施例中提供的模型参数更新方法,终端102和服务器104也可协同用于执行本申请实施例中提供的模型参数更新方法。举例来说,以终端102和服务器104协同执行本申请实施例中提供的模型参数更新方法为例,服务器104通过获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程,进而基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。进一步地,服务器104通过执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度,并对各梯度进行梯度规约处理,以获得与不同数据并行进程匹配的梯度规约数据,最终服务器104可根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。其中,获得训练好的网络模型后,还可进一步将训练好的网络模型部署至终端102进行应用。其中,待更新网络模型的模型状态量、以及子训练数据集等,均可存储在终端102的本地存储、或数据存储系统、或服务器104的云端存储中。
在一个实施例中,如图2所示,提供了一种模型参数更新方法,以该方法由计算机设备执行为例进行说明,可以理解的是,该计算机设备可以是图1所示的终端102,也可以是部署有网关插件106的服务器104,还可以是终端102服务器104所组成的系统,并通过终端102和服务器104之间的交互实现。本实施例中,该模型参数更新方法,包括:
步骤S202,获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程。
其中,待更新网络模型的模型状态量和具体的网络模型对应,比如完整的待更新网络模型用y=ax+b进行表示,则“a”、“b”可以理解为模型的状态量(即model states),具体来说,模型状态量用于存储提交到服务器的值、以及存储与提交的值相关联的验证错误集,具体可以包括模型训练过程中优化器状态量以及梯度等数据,针对具体的网络模型不同、以及训练样本集不同,训练过程中所应用的优化器以及获得的梯度数据均有所不同。
同样地,状态量“a”、“b”分别对应有多个张量,其中,张量即tensor,表示为一个多维矩阵,是运行在GPU即图形处理器上的基础运算单位,由于网络模型通常设置有多层,包括无状态的层以及有状态的层,其中,有状态的层具体是通过每层的权重进行体现,而权重是则利用随机梯度下降学到的一个或多个张量,包含在网络模型中的内容或者知识。
进一步地,网络模型训练过程中,所应用的优化器多采用随机梯度下降法,主要用于计算损失相对于网络参数的梯度(其中,梯度可以表示为张量运算的导数),进而将权重参数沿着梯度的反方向移动,应用梯度下降算法的目的,也在于减少数据损失,提升模型训练精度。
举例来说,比如待更新网络模型为自然语言处理模型(即NLP模型),所应用的优化器为adam优化器,adam优化器,即Adaptive Moment Estimation,其本质上是带有动量项的RMSprop算法(即root mean square prop,理解为均方根传递算法,是一种自适应学习率方法,用于优化损失函数在更新中存在摆动幅度过大的问题,并进一步加快函数的收敛速度),可以理解为为吸收了自适应学习率的梯度下降算法和动量梯度下降算法的优点,既能适应稀疏梯度(即自然语言和计算机视觉问题),又能缓解梯度震荡的问题的优化器。
其中,优化器在模型训练过程中起到的作用在于根据网络反向传播的梯度信息来更新网络的参数,以起到降低loss函数(即损失函数)计算值的作用。其中,优化器的状态量可以理解为优化器在管理和更新模型过程中的状态信息,具体包括所缓存并使用的参数、管理的参数组等,其中,缓存并使用的参数,比如可以是每次更新操作使用的梯度。
具体地,本申请实施例中,训练机器上的训练节点(即训练机器上部署的GPU卡),通过获取待更新网络模型的模型状态量,以及获取各模型状态量各自对应的张量,并统计各模型状态量的所对应的张量的总数目,以进一步根据统计得到的张量的总数目进行均等划分,将各模型状态量所应的张量,分别划分至各数据并行进程。
在一个实施例中,如图3所示,提供了一种数据并行通信处理的处理流程,参照图3可知,数据并行通信处理的处理流程包括:图3中的(a)图所示的数据并行进行模型状态量切分、图3中的(b)图所示的数据并行进程梯度规约、以及图3中的(c)图所示的数据并行进程权重聚合。
具体地,数据并行通信处理过程中,不同于传统的allreduce(全规约)通信方式,即并不是每个数据并行进程均需要保存并更新一份完整的模型状态量,而是进一步采用了显存节省处理,即主要对Model States(模型状态量)的显存占用进行优化,通过将网络模型的模型状态量,分别划分至多个不同的数据并行进程间,从“每个数据并行进程保存一份完整的模型状态量”变成“每个数据并行进程只维护部分模型状态量”,以实现显存节省。
其中,参照图3中的(a)图可知,数据并行通信处理过程中,通过对网络模型的模型状态量在所有数据并行进程间进行划分,通常采用均等划分的方式,即通过获取各模型状态量各自对应的张量,并统计各模型状态量的所对应的张量的总数目以进一步根据统计得到的张量的总数目进行均等划分,将各模型状态量所应的张量,分别划分至各数据并行进程。
同样地,参照图3中的(b)图可知,针对每个数据并行进程,分别运行与各自对应的子训练数据集,并通过执行每个数据并行进程,实现根据与各数据并行进程所匹配的子训练数据集,对该数据并行进程上的网络模型的并行更新,以及梯度规约处理。其中,针对每个数据并行进程具体采用的是ReduceScatter处理(即散射规约处理),以获得每个数据并行进程对应的规约过的梯度,即获得每个数据并行进程对应的部分梯度规约数据。
进一步地,参照图3中的(c)图可知,针对每一数据并行进行各自对应的部分梯度规约数据,进而需要进行allgather处理(即全聚集处理),以使得每个数据并行进程能够获取的全量权重信息,进而达到根据全量权重信息实现网络模型的参数更新,获得训练好的网络模型。
步骤S204,基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。
具体地,通过将与各模型状态量对应的多个张量,分别均等划分至每个数据并行进程,确定出与每个数据并行进程所匹配的张量,进而根据张量进一步确定与各数据并行进程一一对应的子训练数据集。
其中,多个数据并行进程对应一个完整训练集,且完整训练集可以划分为多个小的训练集,即可以划分为多个子训练集,各子训练集分别对应一个数据并行进程。由于需要实现数据并行处理,可在每张GPU卡上均运行一个数据并行进程,也就是说GPU卡和数据并行进程是一一对应的。
举例来说,比如完整的待更新网络模型用y=ax+b进行表示,即需要利用多张GPU卡来同时训练一个待更新网络模型y=ax+b,且各张GPU卡之间需要交互,即每个数据并行进程所用到的各个子训练集的训练结果需要交互,以获得对待更新网络模型的完整训练结果。
在一个实施例中,如图4所示,提供了一种与数据并行进程对应的状态量切分示意图,参照图4可知,比如一个训练机器上设置有64张GPU卡,则每张GPU卡对应一个数据并行进程rank,比如设置有N个tensor(即张量),简单举例来说,比如针对GPU 0,对应rank 0,而针对数据并行进程进行状态量划分时,rank 0划分到的张量为tensor 1,以此类推,GPU 1和rank 1对应,rank1划分到的状态量为tensor2、tensor3等,直至所有的数据并行进程都划分了各种的张量。
其中,在数据并行处理过程中,每个张量(即tensor)只对某个数据并行进程“可见”,即每个数据并行进程设置有自身需要保存和更新的具体部分,比如rank 0更新tensor1,即tensor 1只对rank 0可见,依次类推,每张GPU卡只需要更新处理对自身可见的tensor,同样也只需要保存对自身可见的训练结果。
步骤S206,执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度。
具体地,通过执行各数据并行进程,以根据与各数据并行进程一一对应的子训练数据集,进行待更新网络模型的前向计算,获得训练损失值,并进一步根据训练损失值,进行待更新网络模型的反向计算,获得待更新网络模型在不同数据并行进程上的梯度。
其中,网络模型的训练过程具体包括前向计算以及反向计算,即通过前向计算获得训练损失值,再将训练损失值用于进行反向计算,以获得模型训练过程中的梯度,进而利用优化器更新各梯度对应的权重,即优化器可根据网络模型反向传播的梯度信息来更新网络的参数,同时在训练过程中起到降低损失函数计算值的作用。
步骤S208,对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据。
具体地,针对每个数据并行进程具体采用的是ReduceScatter处理(即散射规约处理),即通过对每个数据进程的梯度进行规约处理,以获得每个数据并行进程对应的规约过的梯度,即获得每个数据并行进程对应的部分梯度规约数据。
进一步地,反向计算过程中会产生梯度,而梯度可以表示为张量运算的导数,进而对计算得到的梯度,同样对应有梯度tensor,在数据并行处理过程中,由于每个tensor只对某个数据并行进程“可见”,即每个数据并行进程设置有自身需要保存和更新的具体部分,进而数据并行进程根据对自身可见的tensor,进一步判断出该梯度tensor对哪个数据并行进程“可见”,通过NVIDIA NCCL GPU通信库(即NVIDIA Collective CommunicationLibrary,NVIDIA聚合通信库),调用reduce-scatter接口(即散射规约处理接口)进行梯度规约操作。
其中,reduce-scatter接口用于进行散射规约处理,其中,散射规约处理表示处理节点将自己的数据分为同等大小的数据块,每个处理节点将根据index(即用于返回表或区域中的值或值的引用函数)得到的数据做一个规约操作。也就是说,先做散射(即Scatter),即将服务器中的数据切分成同等大小的数据块,再按照序列(即Rank Index),每一个服务器所获得的参数数据做规约(Reduce),其中,规约处理可以是求和处理或求最大值处理等。
在一个实施例中,如图5所示,提供了一种基于数据并行进程的梯度规约处理示意图,参照图5可知,比如设置有4个数据并行进程rank 0至rank 3,4个数据并行进程对应的index函数分别为in 0至in 3,而通过对4个数据并行进程进行散射规约处理,可得到4个数据并行进程对应的输出结果为out 0至out 3,进而反向播完毕后,通过进行梯度规约处理,使得每个数据并行进程均保存有一部分规约过的梯度数据。
其中,参照图5可知,针对每个数据并行进程上的待处理数据块,分别进行某种规约的操作(常见如求和处理)后,获得相应的规约处理后的结果,再将结果存入各数据并行进程对应的处理节点(即GPU卡)的内存中。
步骤S210,根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。
具体地,根据各梯度规约数据,分别确定与各数据并行进行进程一一对应的权重,进而基于与各数据并行进程一一对应的权重,进行全聚集处理,以获得全量权重信息,并根据全量权重信息,对待更新网络模型进行参数更新,获得训练好的网络模型。
其中,由于反向传播完毕后,每个数据并行进程都保存了一部分规约过的梯度数据,则每个数据并行进程可进一步调用adam优化器更新这部分梯度对应的权重。其中,优化器起到根据网络反向传播的梯度信息来更新网络的参数,以起到降低损失函数计算值的作用。
进一步地,根据各梯度规约数据,分别确定与各数据并行进行进程一一对应的权重的步骤,具体包括:
基于与每一数据并行进程对应的梯度规约数据,分别确定与每一数据并行进程对应的一阶动量数据和二阶动量数据;根据一阶动量数据和一阶动量衰减系数、确定一阶动量数据的第一偏置校正数据,以及根据二阶动量数据和二阶动量衰减系数、确定二阶动量数据的第二偏置校正数据;基于第一偏置校正数据、第二偏置校正数据以及待更新网络模型的学习率,分别确定与各数据并行进行进程一一对应的权重。
其中,具体是根据adam优化器进行网络模型的权重更新(即网络模型的参数更新),其中adam优化器的梯度更新规则通过adam优化器的更新公式进行体现。具体来说,adam优化器可以利用梯度的一阶动量数据和二阶动量数据,动态调整每个参数的学习率,以根据不同学习率达到模型参数更新的目的。
具体地,采用以下公式(1)和公式(2)分别确定与每一数据并行进程对应的一阶动量数据和二阶动量数据:
mt=β1mt-1+(1-β1)Δw; (1)
vt=β2vt-1+(1-β2)Δw2; (2)
其中,t为更新步长,mt为更新步长为t时的一阶动量数据,β1为一阶动量衰减系数,mt-1为更新步长为t-1时的一阶动量数据,Δw为梯度规约数据,vt为更新步长为t时的二阶动量数据,β2为二阶动量衰减系数,vt-1为更新步长为t-1时的二阶动量数据。
进一步地,具体采用以下公式(3),根据一阶动量数据和一阶动量衰减系数,确定一阶动量数据的第一偏置校正数据,基于采用以下公式(4),根据二阶动量数据和二阶动量衰减系数、确定二阶动量数据的第二偏置校正数据:
其中,t为更新步长,为更新步长为t时第一偏置校正数据,mt为更新步长为t时的一阶动量数据,β1为一阶动量衰减系数,/>为更新步长为t时第二偏置校正数据,vt为更新步长为t时的二阶动量数据,β2为二阶动量衰减系数。
同样地,采用以下公式(5),基于第一偏置校正数据、第二偏置校正数据以及待更新网络模型的学习率,分别确定与各数据并行进行进程一一对应的权重:
其中,t为更新步长,Wt为更新步长为t时的权重,Wt-1为更新步长为t-1时的权重,α为学习率,为更新步长为t时第一偏置校正数据,/>为更新步长为t时第二偏置校正数据,ε为权重更新过程中的超参数,用于维持数值稳定性而添加的常数。
在一个实施例中,在根据各梯度规约数据,分别确定与各数据并行进行进程一一对应的权重之后,各数据并行进程通过调用NVIDIA NCCL GPU通信库的allgather接口(全聚集接口),基于与各数据并行进程一一对应的权重,进行全聚集处理,以获得全量权重信息。
其中,当每个处理节点(即GPU卡)都做了散射之后,使得每个处理节点获得了其他处理节点的一个数据块,进而将一个处理节点所获得的数据块拼接在一起的操作就叫做聚集即gather,而所有的处理节点都将自身所收到的数据块拼接在一起(即都做聚集的操作)的操作,则成为全聚集即allgather。
具体来说,如图6所示,提供了一种基于数据并行进程的全聚集处理的处理过程,参照图6可知,比如设置有4个数据并行进程rank 0至rank 3,每个数据并行进程对应的输入为in 0至in 3,针对每个数据并行进程一一对应的权重,进行全聚集处理,则可使得每个数据并行进程可获得所有的数据块(均包括in 0至in 3拼接得到的完整数据块),进而每个数据并行进程进行全聚集处理后,可获得其他所有的数据并行进行的权重信息,即获得全量权重信息。
进一步地,在获得全量权重信息后,进一步根据全量权重信息,对待更新网络模型进行参数更新,以获得训练好的网络模型。
上述模型参数更新方法中,通过获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程,进而基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。进一步地,通过执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度,并进一步对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据,以根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。实现了根据待更新网络模型的模型状态量,确定与各数据并行进程各自匹配的子训练数据集,仅针对与各自匹配的子训练数据集进行模型参数的更新,而无需每个数据进程保存更新完整的模型状态量,进而可充分平衡训练机器上各训练节点之间的传输效率,节省训练机器的显存占用,同时减少神经网络模型的训练耗时,提升网络模型的训练效率。
在一个实施例中,如图7所示,提供了一种模型参数更新方法,具体包括以下步骤:
步骤S702,基于待更新网络模型进行结构切分,获得多个模型组件。
具体地,待更新网络模型包括第一线性层和第二线性层,则基于待更新网络模型进行结构切分时,具体是基于第一线性层进行纵向切分,获得与第一线性层对应的多个第一类模型组件、以及基于第二线性层进行横向切分,获得与第二线性层对应的多个第二类模型组件。
在一个实施例中,以待更新网络模型为transformer模型为例,transformer模型中集成了MLP网络(即Multilayer Perceptron,多层感知器)和Self-Attention(自注意力机制)网络。其中,MLP网络包括第一线性层和第二线性层,则进行结构切分时,需要针对MLP网络的第一线性层和第二线性层进行结构切分。同样地,Self-Attention网络也包括第一线性层和第二线性层,则进行结构切分时,也需要针对Self-Attention网络的第一线性层和第二线性层进行结构切分。
步骤S704,将各模型组件分别划分至模型并行进程,模型组件和模型并行进程一一对应。
具体地,针对每个模型并行进程,分别划分了与其一一对应的模型组件,其中,模型组件包括与第一线性层对应的多个第一类模型组件、以及与第二线性层对应的多个第二类模型组件,从而模型并行进程也包括与第一类模型组件对应的模型并行进程、以及与第二类模型组件对应的模型并行进程。
步骤S706,执行各模型并行进程,基于模型状态量,确定与模型并行进程对应的梯度张量。
具体地,通过执行与各第一类型模型组件对应的各模型并行进程,基于与第一线性层对应的第一激活函数,根据模型状态量,进行各第一类型模型组件的前向计算和反向计算,获得各第一类模型组件的第一输出数据。
同样地,通过执行与各第二类型模型组件对应的各模型并行进程,基于与第二线性层对应的第二激活函数,根据各第一输出数据进程第二类模型组件的前向计算和反向计算,获得各第二类模型组件的第二输出数据,进而将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量。
在一个实施例中,如图8所示,提供了一种模型并行通信处理示意图,参照图8可知,本实施例中以集成了MLP网络和Self-Attention网络的transformer模型为例,结合图8中的(a)图,针对MLP网络进行结构切分以及梯度张量确定进行具体说明:
其中,通过对网络模型的Weights Tensor(即模型参数、模型结构的切分)的进行切分,实现模型并行。具体来说,针对transformer网络中的MLP网络进行结构切分时,采用等价矩阵分解形式进行等价表达,以尽可能地减少通信量。本实施例中,针对模型并行进程的额外通信采用函数f和函数g表示,其中,函数f即identity function函数,理解为恒等映射函数,函数g即all gather函数,理解为全聚集函数。
举例来说,比如MLP网络通过Y=cx+d进行表示,则c和d均为网络模型的状态量,假设c对应第一线性层,d对应第二线性层,则对c以及d进行结构切分时,基于第一线性层进行纵向切分,获得与第一线性层对应的多个第一类模型组件,以及基于第二线性层进行横向切分,获得与第二线性层对应的多个第二类模型组件。比如设置有4张GPU卡,进行网络模型的结构划分后,则每张GPU卡上均未保存全量模型,每张GPU卡上保存部分网络模型结构或部分网络模型参数。
具体地,执行与各第一类型模型组件对应的各模型并行进程,基于与第一线性层对应的第一激活函数,根据模型状态量,进行各第一类型模型组件的前向计算和反向计算时,具体是采用函数f针对第一线性层进行前向计算(即forward)、以及针对第一线性层进行反向计算(即backward)。
其中,前向计算时,应用的是函数f即恒等映射函数,则可以理解为分发相同的输入数据X(即复制X给不同的GPU卡)到不同的GPU卡。而反向计算时,采用函数g即全聚集函数,则每个GPU卡上的关于输入数据X的梯度,需要进行求和后得到新的关于输入数据X的梯度,即得到各第一类模型组件的第一输出数据。
进一步地,参照图8中的(a)图可知,第一线性层的激活函数为非线性激活函数,具体可以用Y=GeLU表示。其中,采用恒等映射函数复制输入数据X,并将相同的输入数据X,输入不同的模型并行进程,而由于针对网络模型进行了结构切分,进而每个模型并行进程上的模型结构以及模型参数并不一致,需要结合图8中的(a)图中所示的模型组件A1、A2进行考虑,而由于不同模型并行进程上的模型参数不一致,即A1、A2是不一致的,进而获得XA1、XA2也是不同的,从而回传得到的梯度不一样,因此需要梯度相加,以获得更新后的关于输入数据X的梯度。
其中,具体是采用all-reduce函数(即全规约函数,包括散射规约、以及权重聚合),进行更新处理,获得各第一类模型组件的第一输出数据,即获得输出的结果可以包括图8中的(a)图中的Y1和Y2。
同样地,执行与各第二类型模型组件对应的各模型并行进程,基于与第二线性层对应的第二激活函数,根据各第一输出数据进程第二类模型组件的前向计算和反向计算,获得各第二类模型组件的第二输出数据。其中,具体是采用函数g针对第二线性层进行前向计算(即forward)、以及针对第二线性层进行反向计算(即backward)。进而将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量。其中,第二线性层的激活函数为非线性函数,具体可以用Z=Dropout(Y B)进行表示。
其中,前向计算时,应用的是函数g即全聚集函数,具体来说,针对第一线性层的第一输出数据Y1和Y2,需要结合对第二线性层进行横向切分得到的模型组件B1、B2进行考虑,通过组合Y1B1和Y2B2,并进一步调用函数g,针对图8中的(a)图中的Y1B1、Z1以及Y2B2、Z2进行聚合时,是按照最后一个维度Z进行聚合,得到完整的Z,其中,完整的Z可以理解为得到的前向计算的结果,即损失值。
进一步,反向计算(即backward)时则可以理解为简单的切割,即采用直接复制再分发的方式,类似于identity(恒等)处理的方式,即每张GPU卡上所获得各第二类模型组件的第二输出数据是相同的。进而将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量,即每张GPU卡上会得到复制得到的相同的梯度张量。
在一个实施例中,结合图8中的(b)图,针对Self-Attention网络进行结构切分以及梯度张量确定进行具体说明:
其中,针对Self-Attention网络进行结构切分时,采用等价矩阵分解形式进行等价表达,以尽可能地减少通信量。本实施例中,针对模型并行进程的额外通信采用函数f和函数g表示,其中,函数f即identity function函数,理解为恒等映射函数,函数g即allgather函数,理解为全聚集函数。
具体地,针对Self-Attention网络的第一线性层、第二线性层进行及结构切分时,具体是基于第一线性层进行纵向切分,获得与第一线性层对应的多个第一类模型组件,以及基于第二线性层进行横向切分,获得与第二线性层对应的多个第二类模型组件。其中,由于Self-Attention网络为多头注意力机制,则可以针对每个注意力头进行划分,参照图8中的(b)图可知,可得到每个注意力头相关的3个线性层,转换为Q、K、V,针对Q、K、V进行划分时,可划分得到[Q1、Q2]、[K1、K2]、以及[V1、V2]。
进一步地,针对Self-Attention网络,同样是执行与各第一类型模型组件对应的各模型并行进程,基于与第一线性层对应的第一激活函数,根据模型状态量,进行各第一类型模型组件的前向计算和反向计算时,具体是采用函数f针对第一线性层(即图8中的(b)图中的Q、K、V层)进行前向计算(即forward)、以及针对第一线性层(即Q、K、V层)进行反向计算(即backward)。
其中,前向计算时,应用的是函数f即恒等映射函数,则可以理解为分发相同的输入数据X(即复制X给不同的GPU卡)到不同的GPU卡。
具体来说,先把相同的输入数据X复制多份,并分发相同的输入数据X到多张GPU卡上,其中多头注意力机制中每个注意力头的三个线性层转换为Q、K、V层时,可以是使用一个h到3h的linear layer(线性层),并按照最后一个维度进行三等分,得到Q、K、V层。
进一步地,针对Q、K、V层,分别计算以及/>再将/>以及/>的具值输入softmax层后,再输入dropout层,获得与/>以及/>分别对应的注意力分数,并进一步将对应的注意力分数和V1相乘、以及另一注意力分数和V2相乘,获得不同模型并行进程的第一输出数据,即得到Y1、Y2。其中,Self-Attention网络的第一线性层的激活函数通过Y=Self-Attention(X)进线表示。
同样地,针对Self-Attention网络的第二线性层所进行的计算处理,和对MLP网络的第二线性层进行的计算处理类似,具体是采用函数g针对第二线性层进行前向计算(即forward)、以及针对第二线性层进行反向计算(即backward)。进而将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量。其中,第二线性层的激活函数为非线性函数,具体可以用Z=Dropout(Y B)进行表示。
其中,每张GPU卡上所获得各第二类模型组件的第二输出数据是相同的,具体是将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量,即每张GPU卡上会得到复制得到的相同的梯度张量。
步骤S708,根据梯度张量,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。
具体地,由于确定出的梯度张量经过了全聚集处理,即每个模型并行进程可获得其他模型并行进程的梯度张量,则所确定出的梯度张量可以理解为全量梯度张量,进而根据全量梯度张量,可实现对待更新模型的模型结构、模型参数进行更新,以获得训练好的网络模型。
本实施例中,基于待更新网络模型进行结构切分,可获得多个模型组件,通过将各模型组件分别划分至模型并行进程,并执行各模型并行进程,以基于模型状态量,确定与模型并行进程对应的梯度张量,进而根据梯度张量,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。实现了基于网络模型的结构确定出多个模型组件,并针对每个模型组件设置模型并行进程进行并行训练,以快速确定与模型并行进程对应的梯度张量,进而根据梯度张量,对待更新网络模型的模型参数进行更新,即通过模型并行可减少模型训练的耗时,提升模型参数更新效率。
在一个实施例中,如图9,提供了一种模型参数更新方法,具体包括以下步骤:
步骤S902,将与各数据并行进程一一对应的训练节点分别划分至多个流水线分组中,流水线分组中至少包括两个训练节点,各流水线分组中的训练节点数量相同。
具体地,通过获取与各数据并行进程一一对应的训练节点,并将训练节点分别划分至多个流水线分组中,比如设置有两个流水线分组,且每个流水线分组中设置有两个训练节点。
步骤S904,获取流水线分组中的各训练节点的排序,使得各训练节点按照排序依次进行前向计算以及反向计算,获得平均模型梯度。
具体地,通过将与待更新网络模型对应的全量训练集,划分为多批次的微训练集,并获取流水线分组中的各训练节点的排序。
进一步地,训练节点包括第一训练节点和第二训练节点,且第一训练节点在第二训练节点之前。其中,第一训练节点用于获取依次获取各批次的微训练集,进行前向计算,获得损失值,并将损失值发送至第二训练节点,而第二训练节点用于根据损失值进行反向计算,获得梯度数据。
其中,在第二训练节点根据损失值进行反向计算时,第一训练节点获取下一批次的微训练集,并行进行前向计算。
在一个实施例中,如图10所示,提供了一种流水线并行通信处理的示意图,参照图10可知,设置有2个流水线分组,每个流水线分组包括两个训练节点,即GPU 0 and GPU2处于一个流水线分组中,GPU 1 and GPU3处于另一个流水线分组中。
进一步地,GPU 0读取一个minibatch数据(即微批次训练数据),进行F0前向计算,GPU 0进行F0前向计算获得activation数据(即中间结果数据,可以理解为前向计算获得损失函数值,用于进行反向计算得到梯度),并将计算得到的activation数据发送给GPU 2,GPU 2则根据activation数据进程B0反向计算,获得梯度数据。
其中,在GPU 2进行B0反向计算的过程中,GPU 0同时读取下一个minibatch数据进程F1前向计算,以无数据流依赖关系的F1前向计算和B0反向计算的并行,达到流水线并行的目的。其中,各minibatch数据是通过对完整数据集进行切分得到,batchsize(批次样本数量)可决定划分得到的minibatch数据的数据量大小,比如完整的数据集有64个待处理样本,流水线分组设置有2个阶段、设置有2个训练节点,则首先读取32个样本作为一个minibatch数据给到GPU 0进行F0前向计算,而在GPU 2进行B0反向计算时,则获取由另外的32个样本组成的第二个minibatch数据给到GPU 0进行F1前向计算。
同样地,针对另一流水线分组,包括GPU 1 and GPU3两个训练节点的流水线分组执行的计算处理操作,和包括GPU 0 and GPU2的流水线分组执行的计算处理操作一致。其中,同一个pipe group(即流水线分组)通过broadcast(即广播)去send activation(前向计算,发送中间数据)或者send grads(反向计算,获得梯度数据),且同一个pipe group只有第一个阶段需要读取训练数据(即minibatch数据),pipeline的最后一个阶段需要读取label数据(即训练样本的原始标注数据),计算得到loss损失值。
其中,图10中所示的这里的前向计算包括F0至F3,反向计算包括B0至B3,仅用于表示模型训练过程中,前向后向计算的次数的某一具体情况,实际应用过程中,前向计算、后项计算的次数不局限于具体取值,可根据实际需求进行设置。
步骤S906,基于平均模型梯度,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。
具体地,针对不同流水线分组计算得到的梯度数据,需进一步计算得到皮革及模型梯度,以将平均模型梯度作为对待更新网络模型的模型参数进行更新的依据,实现对网络模型的参数更新,获得训练好的网络模型。
本实施例中,通过将与各数据并行进程一一对应的训练节点分别划分至多个流水线分组中,并获取流水线分组中的各训练节点的排序,使得各训练节点按照排序依次进行前向计算以及反向计算,获得平均模型梯度,进而基于平均模型梯度,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。实现了根据流水线分组实现不同训练节点之间的无数据流依赖关系的前向计算、反向计算的并行,进而在减少模型训练耗时的同时,也能避免不同训练节点之间的相互影响或干扰,进一步提升对模型参数进行更新的准确度以及更新效率。
在一个实施例中,提供了一种模型参数更新方法,具体包括以下步骤:
获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程。
基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。
执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,进行待更新网络模型的前向计算,获得训练损失值。
根据训练损失值,进行待更新网络模型的反向计算,获得待更新网络模型在不同数据并行进程上的梯度。
对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据。
基于与每一数据并行进程对应的梯度规约数据,分别确定与每一数据并行进程对应的一阶动量数据和二阶动量数据。
根据一阶动量数据和一阶动量衰减系数、确定一阶动量数据的第一偏置校正数据,以及根据二阶动量数据和二阶动量衰减系数、确定二阶动量数据的第二偏置校正数据。
基于第一偏置校正数据、第二偏置校正数据以及待更新网络模型的学习率,分别确定与各数据并行进行进程一一对应的权重。
基于与各数据并行进程一一对应的权重,进行全聚集处理,获得全量权重信息。
根据全量权重信息,对待更新网络模型进行参数更新,获得训练好的网络模型。
上述模型参数更新方法中,通过获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程,进而基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。进一步地,通过执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度,并进一步对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据,以根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。实现了根据待更新网络模型的模型状态量,确定与各数据并行进程各自匹配的子训练数据集,仅针对与各自匹配的子训练数据集进行模型参数的更新,而无需每个数据进程保存更新完整的模型状态量,进而可充分平衡训练机器上各训练节点之间的传输效率,节省训练机器的显存占用,同时减少神经网络模型的训练耗时,提升网络模型的训练效率。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的模型参数更新方法的模型参数更新装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个模型参数更新装置实施例中的具体限定可以参见上文中对于模型参数更新方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种模型参数更新装置,包括:模型状态量获取模块1102、子训练数据集确定模块1104、梯度确定模块1106、梯度规约处理模块1108以及模型参数更新模块1110,其中:
模型状态量获取模块1102,用于获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程;
子训练数据集确定模块1104,用于基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集;
梯度确定模块1106,用于执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度;
梯度规约处理模块1108,用于对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
模型参数更新模块1110,用于根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。
上述模型参数更新装置中,通过获取待更新网络模型的模型状态量,并将各模型状态量分别划分至各数据并行进程,进而基于与各数据并行进程匹配的模型状态量,确定与各数据并行进程一一对应的子训练数据集。进一步地,通过执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,确定待更新网络模型在不同数据并行进程上的梯度,并进一步对各梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据,以根据各梯度规约数据,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。实现了根据待更新网络模型的模型状态量,确定与各数据并行进程各自匹配的子训练数据集,仅针对与各自匹配的子训练数据集进行模型参数的更新,而无需每个数据进程保存更新完整的模型状态量,进而可充分平衡训练机器上各训练节点之间的传输效率,节省训练机器的显存占用,同时减少神经网络模型的训练耗时,提升网络模型的训练效率。
在一个实施例中,模型参数更新模块,还用于:根据各梯度规约数据,分别确定与各数据并行进行进程一一对应的权重;基于与各数据并行进程一一对应的权重,进行全聚集处理,获得全量权重信息;根据全量权重信息,对待更新网络模型进行参数更新,获得训练好的网络模型。
在一个实施例中,梯度确定模块,还用于:执行各数据并行进程,根据与各数据并行进程一一对应的子训练数据集,进行待更新网络模型的前向计算,获得训练损失值;根据训练损失值,进行待更新网络模型的反向计算,获得待更新网络模型在不同数据并行进程上的梯度。
在一个实施例中,模型参数更新模块,还用于:基于与每一数据并行进程对应的梯度规约数据,分别确定与每一数据并行进程对应的一阶动量数据和二阶动量数据;根据一阶动量数据和一阶动量衰减系数、确定一阶动量数据的第一偏置校正数据,以及根据二阶动量数据和二阶动量衰减系数、确定二阶动量数据的第二偏置校正数据;基于第一偏置校正数据、第二偏置校正数据以及待更新网络模型的学习率,分别确定与各数据并行进行进程一一对应的权重。
在一个实施例中,提供了一种模型参数更新装置,还包括:
结构划分模块,用于基于待更新网络模型进行结构切分,获得多个模型组件;
组件划分模块,用于将各模型组件分别划分至模型并行进程;模型组件和模型并行进程一一对应;
梯度张量确定模块,用于执行各模型并行进程,基于模型状态量,确定与模型并行进程对应的梯度张量;
参数更新模块,用于根据梯度张量,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。
在一个实施例中,结构划分模块,还用于:基于第一线性层进行纵向切分,获得与第一线性层对应的多个第一类模型组件、以及基于第二线性层进行横向切分,获得与第二线性层对应的多个第二类模型组件;
梯度张量确定模块,还用于:执行与各第一类型模型组件对应的各模型并行进程,基于与第一线性层对应的第一激活函数,根据模型状态量,进行各第一类型模型组件的前向计算和反向计算,获得各第一类模型组件的第一输出数据;执行与各第二类型模型组件对应的各模型并行进程,基于与第二线性层对应的第二激活函数,根据各第一输出数据进程第二类模型组件的前向计算和反向计算,获得各第二类模型组件的第二输出数据;将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量。
在一个实施例中,提供了一种模型参数更新装置,还包括:
训练节点划分模块,用于将与各数据并行进程一一对应的训练节点分别划分至多个流水线分组中;流水线分组中至少包括两个训练节点,各流水线分组中的训练节点数量相同;
平均模型梯度确定模块,用于获取流水线分组中的各训练节点的排序,使得各训练节点按照排序依次进行前向计算以及反向计算,获得平均模型梯度;
参数更新模块,用于基于平均模型梯度,对待更新网络模型的模型参数进行更新,得到训练好的网络模型。
在一个实施例中,平均模型梯度确定模块,还用于:将与待更新网络模型对应的全量训练集,划分为多批次的微训练集;获取流水线分组中的各训练节点的排序;训练节点包括第一训练节点和第二训练节点,第一训练节点在第二训练节点之前;第一训练节点用于获取依次获取各批次的微训练集,进行前向计算,获得损失值,并将损失值发送至第二训练节点;第二训练节点用于根据损失值进行反向计算,获得梯度数据;其中,在第二训练节点根据损失值进行反向计算时,第一训练节点获取下一批次的微训练集,并行进行前向计算。
在一个实施例中,提供了一种模型参数更新系统,具体包括以下组件:
P1数据并行通信处理组件:
首先,训练机器上的训练节点(即训练机器上部署的GPU卡),通过获取待更新网络模型的模型状态量,以及获取各模型状态量各自对应的张量,并统计各模型状态量的所对应的张量的总数目,以进一步根据统计得到的张量的总数目进行均等划分,将各模型状态量所应的张量,分别划分至各数据并行进程。其中,通过采用显存节省处理,即主要对ModelStates(模型状态量)的显存占用进行优化,通过将网络模型的模型状态量,分别划分至多个不同的数据并行进程间,从“每个数据并行进程保存一份完整的模型状态量”变成“每个数据并行进程只维护部分模型状态量”,以实现显存节省。
具体地,数据并行通信处理过程中,通过对网络模型的模型状态量在所有数据并行进程间进行划分,通常采用均等划分的方式,即通过获取各模型状态量各自对应的张量,并统计各模型状态量的所对应的张量的总数目以进一步根据统计得到的张量的总数目进行均等划分,将各模型状态量所应的张量,分别划分至各数据并行进程。
同样地,针对每个数据并行进程,分别运行与各自对应的子训练数据集,并通过执行每个数据并行进程,实现根据与各数据并行进程所匹配的子训练数据集,对该数据并行进程上的网络模型的并行更新,以及梯度规约处理。其中,针对每个数据并行进程具体采用的是ReduceScatter处理(即散射规约处理),以获得每个数据并行进程对应的规约过的梯度,即获得每个数据并行进程对应的部分梯度规约数据。
进一步地,针对每一数据并行进行各自对应的部分梯度规约数据,进而需要进行allgather处理(即全聚集处理),以使得每个数据并行进程能够获取的全量权重信息,进而达到根据全量权重信息实现网络模型的参数更新,获得训练好的网络模型。
在一个实施例中,具体采用以下方式确定出每个数据并行进程对应的权重:
基于与每一数据并行进程对应的梯度规约数据,分别确定与每一数据并行进程对应的一阶动量数据和二阶动量数据;根据一阶动量数据和一阶动量衰减系数、确定一阶动量数据的第一偏置校正数据,以及根据二阶动量数据和二阶动量衰减系数、确定二阶动量数据的第二偏置校正数据;基于第一偏置校正数据、第二偏置校正数据以及待更新网络模型的学习率,分别确定与各数据并行进行进程一一对应的权重。
P2模型并行通信处理组件:
首先,获取待更新网络模型的模型结构,具体可以包括第一线性层和第二线性层,进而基于第一线性层进行纵向切分,获得与第一线性层对应的多个第一类模型组件、以及基于第二线性层进行横向切分,获得与第二线性层对应的多个第二类模型组件。
其次,通过执行与各第一类型模型组件对应的各模型并行进程,基于与第一线性层对应的第一激活函数,根据模型状态量,进行各第一类型模型组件的前向计算和反向计算,获得各第一类模型组件的第一输出数据。
同样地,通过执行与各第二类型模型组件对应的各模型并行进程,基于与第二线性层对应的第二激活函数,根据各第一输出数据进程第二类模型组件的前向计算和反向计算,获得各第二类模型组件的第二输出数据,进而将各第二输出数据,确定为与各模型并行进程一一对应的梯度张量。
进一步地,针对与各模型并行进程对应的梯度张量进行全聚集处理,即每个模型并行进程可获得其他模型并行进程的梯度张量,则所确定出的梯度张量可以理解为全量梯度张量,进而根据全量梯度张量,可实现对待更新模型的模型结构、模型参数进行更新,以获得训练好的网络模型。
P3流水线并行通信处理组件:
首先,通过获取与各数据并行进程一一对应的训练节点,并将训练节点分别划分至多个流水线分组中,比如设置有两个流水线分组,且每个流水线分组中设置有两个训练节点。
其次,通过将与待更新网络模型对应的全量训练集,划分为多批次的微训练集,并获取流水线分组中的各训练节点的排序。其中,训练节点包括第一训练节点和第二训练节点,且第一训练节点在第二训练节点之前。其中,第一训练节点用于获取依次获取各批次的微训练集,进行前向计算,获得损失值,并将损失值发送至第二训练节点,而第二训练节点用于根据损失值进行反向计算,获得梯度数据。
其中,在第二训练节点根据损失值进行反向计算时,第一训练节点获取下一批次的微训练集,并行进行前向计算。
进一步,针对不同流水线分组计算得到的梯度数据,需进一步计算得到皮革及模型梯度,以将平均模型梯度作为对待更新网络模型的模型参数进行更新的依据,实现对网络模型的参数更新,获得训练好的网络模型。
在一个实施例中,提供了模型参数更新系统的具体平台环境,其中,CPU为96Intel(R)Xeon(R)Platinum 8255C CPU@2.50GHz,具体包括两个物理CPU,每个24核,总核数为48,逻辑cpu数为96,GPU的规格则为V100显卡以及32GB,其中带宽为100Gb,采用RDMA方式(即Remote Direct Memory Access,理解为远程直接地址访问)访问。其中,本申请实施例中可以使用8台训练机器,即使用64卡V100训练千亿参数规模的模型,有效提升了大规模模型的训练效率。
上述模型参数更新系统中,设置了数据并行通信处理组件、模型并行通信处理组件以及流水线并行通信处理组件,实现了网络模型的多层次的并行处理,可充分平衡GPU传输效率,节省训练过程中的显存使用,同时采用封装数据并行进程组/模型并行进程组/流水线并行进程组通信接口的方式,可直接调用接口使用,从而进一步提升使用效率,和模型训练效率。
上述模型参数更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待更新网络模型的模型状态量、数据并行进程、子训练数据集、待更新网络模型在不同数据并行进程上的梯度、以及梯度规约数据等数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种模型参数更新方法。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种模型参数更新方法,其特征在于,所述方法包括:
获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
2.根据权利要求1所述的方法,其特征在于,所述根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型,包括:
根据各所述梯度规约数据,分别确定与各数据并行进行进程一一对应的权重;
基于与各所述数据并行进程一一对应的权重,进行全聚集处理,获得全量权重信息;
根据所述全量权重信息,对所述待更新网络模型进行参数更新,获得训练好的网络模型。
3.根据权利要求1所述的方法,其特征在于,所述执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度,包括:
执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,进行所述待更新网络模型的前向计算,获得训练损失值;
根据所述训练损失值,进行所述待更新网络模型的反向计算,获得所述待更新网络模型在不同数据并行进程上的梯度。
4.根据权利要求2所述的方法,其特征在于,所述根据各所述梯度规约数据,分别确定与各数据并行进行进程一一对应的权重,包括:
基于与每一所述数据并行进程对应的梯度规约数据,分别确定与每一所述数据并行进程对应的一阶动量数据和二阶动量数据;
根据所述一阶动量数据和一阶动量衰减系数、确定所述一阶动量数据的第一偏置校正数据,以及根据所述二阶动量数据和二阶动量衰减系数、确定所述二阶动量数据的第二偏置校正数据;
基于所述第一偏置校正数据、第二偏置校正数据以及所述待更新网络模型的学习率,分别确定与各数据并行进行进程一一对应的权重。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述待更新网络模型进行结构切分,获得多个模型组件;
将各所述模型组件分别划分至模型并行进程;所述模型组件和所述模型并行进程一一对应;
执行各所述模型并行进程,基于所述模型状态量,确定与所述模型并行进程对应的梯度张量;
根据所述梯度张量,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将与各所述数据并行进程一一对应的训练节点分别划分至多个流水线分组中;所述流水线分组中至少包括两个训练节点,各所述流水线分组中的训练节点数量相同;
获取所述流水线分组中的各所述训练节点的排序,使得各所述训练节点按照所述排序依次进行前向计算以及反向计算,获得平均模型梯度;
基于所述平均模型梯度,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
7.一种模型参数更新装置,其特征在于,所述装置包括:
模型状态量获取模块,用于获取待更新网络模型的模型状态量,并将各所述模型状态量分别划分至各数据并行进程;
子训练数据集确定模块,用于基于与各所述数据并行进程匹配的模型状态量,确定与各所述数据并行进程一一对应的子训练数据集;
梯度确定模块,用于执行各所述数据并行进程,根据与各所述数据并行进程一一对应的子训练数据集,确定所述待更新网络模型在不同数据并行进程上的梯度;
梯度规约处理模块,用于对各所述梯度进行梯度规约处理,获得与不同数据并行进程匹配的梯度规约数据;
模型参数更新模块,用于根据各所述梯度规约数据,对所述待更新网络模型的模型参数进行更新,得到训练好的网络模型。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202211127560.4A 2022-09-16 2022-09-16 模型参数更新方法、装置、设备、存储介质和程序产品 Pending CN117035045A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211127560.4A CN117035045A (zh) 2022-09-16 2022-09-16 模型参数更新方法、装置、设备、存储介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211127560.4A CN117035045A (zh) 2022-09-16 2022-09-16 模型参数更新方法、装置、设备、存储介质和程序产品

Publications (1)

Publication Number Publication Date
CN117035045A true CN117035045A (zh) 2023-11-10

Family

ID=88621350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211127560.4A Pending CN117035045A (zh) 2022-09-16 2022-09-16 模型参数更新方法、装置、设备、存储介质和程序产品

Country Status (1)

Country Link
CN (1) CN117035045A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117313823A (zh) * 2023-11-28 2023-12-29 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种卷积循环神经网络混合分布式并行训练方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117313823A (zh) * 2023-11-28 2023-12-29 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种卷积循环神经网络混合分布式并行训练方法及系统
CN117313823B (zh) * 2023-11-28 2024-04-12 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种卷积循环神经网络混合分布式并行训练方法及系统

Similar Documents

Publication Publication Date Title
US20220391771A1 (en) Method, apparatus, and computer device and storage medium for distributed training of machine learning model
US20210256403A1 (en) Recommendation method and apparatus
WO2022077587A1 (zh) 一种数据预测方法、装置及终端设备
CN110728317A (zh) 决策树模型的训练方法、系统、存储介质及预测方法
US20220121903A1 (en) Method of performing splitting in neural network model by means of multi-core processor, and related product
CN113128702A (zh) 一种基于强化学习的神经网络自适应分布式并行训练方法
CN111104595A (zh) 一种基于文本信息的深度强化学习交互式推荐方法及系统
CN108875053A (zh) 一种知识图谱数据处理方法及装置
US11948086B2 (en) Accelerated embedding layer computations
WO2020147142A1 (zh) 一种深度学习模型的训练方法、系统
CN116542720B (zh) 一种基于图卷积网络的时间增强信息序列推荐方法及系统
CN116601626A (zh) 个人知识图谱构建方法、装置及相关设备
CN111667069B (zh) 预训练模型压缩方法、装置和电子设备
CN112257751A (zh) 神经网络剪枝方法
CN117035045A (zh) 模型参数更新方法、装置、设备、存储介质和程序产品
CN115860100A (zh) 一种神经网络模型训练方法、装置及计算设备
TWI758223B (zh) 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體
Zhao et al. Distributed optimization of graph convolutional network using subgraph variance
CN107038244A (zh) 一种数据挖掘方法和装置、一种可读介质和存储控制器
US11853391B1 (en) Distributed model training
CN115688917A (zh) 神经网络模型的训练方法、装置、电子设备及存储介质
JP2024504179A (ja) 人工知能推論モデルを軽量化する方法およびシステム
CN113705801A (zh) 一种神经网络模型的训练装置、方法及相关设备
CN110765345A (zh) 搜索方法、装置以及设备
CN116955836B (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