训练模型分配方法、装置、计算机设备和存储介质转让专利

申请号 : CN202311336127.6

文献号 : CN117112145B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨非彭爽孙柠汪芳羽谈科潘爱民

申请人 : 之江实验室

摘要 :

本申请涉及一种训练模型分配方法、装置、计算机设备和存储介质。所述方法包括:获取待训练模型的模型信息和训练数据集;将训练模型根据层级信息划分为至少两个子模型,并将各子模型分配至训练集群中各机器节点;将各子模型根据计算参数信息划分为至少两个子模型切片,并将各子模型切片分配至训练集群中各机器节点的各计算处理器;将训练数据集根据计算参数信息划分为至少两个训练子数据集,并将各训练子数据集分配至训练集群中各计算处理器;根据训练集群中所有计算处理器,以及所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。采用本申请的方法能够提高模型训练效率。

权利要求 :

1.一种训练模型分配方法,其特征在于,所述方法包括:

获取待训练模型的模型信息和训练数据集;其中,所述模型信息包括待训练模型的层级信息和计算参数信息,所述层级信息包括所述待训练模型的层级数量,所述计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;

将所述训练模型根据层级信息,划分为至少两个子模型;

根据所述层级信息,确定所述待训练模型的层级数量;

将所述层级数量确定为流水线并行数量;

根据所述流水线并行数量,将训练集群中各机器节点分配至相应的流水线并行组;若所述流水线并行数量小于所述训练集群中机器节点的数量,则至少一个所述流水线并行组包括至少两个机器节点;其中,同一所述流水线并行组中至少两个机器节点具有不同的通信协议;

根据所述层级信息,将所述待训练模型的各子模型分配至对应所述流水线并行组中各机器节点;

将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;

将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;

根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。

2.根据权利要求1所述的方法,其特征在于,所述将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器包括:将各所述子模型根据所述计算参数信息,划分为至少两个子模型切片;

根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为张量并行组;

根据所述计算参数信息,将各所述子模型切片分配至对应所述张量并行组中各计算处理器。

3.根据权利要求2所述的方法,其特征在于,所述根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为张量并行组,包括:根据所述计算参数信息,确定各所述子模型的子模型切片数量;

将所述子模型切片数量确定为张量并行数;

根据所述张量并行数,将各机器节点的所述各计算处理器分配至相应的张量并行组;

其中,同一所述张量并行组中的所有计算处理器属于同一机器节点。

4.根据权利要求1所述的方法,其特征在于,所述将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器包括:将所述训练数据集根据所述计算参数信息,划分为至少两个训练子数据集;

根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为数据并行组;

根据所述计算参数信息,将各所述训练子数据集分配至对应所述数据并行组中各计算处理器。

5.据权利要求4所述的方法,其特征在于,所述根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为数据并行组包括:根据每个计算参数信息所需的计算处理器数量,确定数据并行数;

根据所述数据并行数,将至少两个计算处理器组确定为数据并行组;其中,所述数据并行组中的各计算处理器所在机器节点具有相同的通信协议。

6.一种训练模型分配装置,其特征在于,所述装置包括:

数据获取模块,用于获取待训练模型的模型信息和训练数据集;其中,所述模型信息包括待训练模型的层级信息和计算参数信息,所述层级信息包括所述待训练模型的层级数量,所述计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;

第一分配模块,用于将所述训练模型根据层级信息,划分为至少两个子模型;

根据所述层级信息,确定所述待训练模型的层级数量;

将所述层级数量确定为流水线并行数量;

根据所述流水线并行数量,将训练集群中各机器节点分配至相应的流水线并行组;若所述流水线并行数量小于所述训练集群中机器节点的数量,则至少一个所述流水线并行组包括至少两个机器节点;其中,同一所述流水线并行组中至少两个机器节点具有不同的通信协议;

根据所述层级信息,将所述待训练模型的各子模型分配至对应所述流水线并行组中各机器节点;

第二分配模块,用于将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;

第三分配模块,用于将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;

模型训练模块,用于根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。

7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至权利要求5中任一项所述的方法的步骤。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求5中任一项所述的方法的步骤。

说明书 :

训练模型分配方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及深度学习技术领域,特别是涉及一种训练模型分配方法、装置、计算机设备和存储介质。

背景技术

[0002] 在近年来的深度学习模型训练中,使用更多的训练数据和更大的模型趋势未改。更大的模型可以带来更精准强大的语义理解和推理能力,但随着规模计算的普及和数据集的增大,使得模型的参数数量也以指数级的速度增长,更大的模型和数据量意味着更多的计算量和存储需求,也意味着更久的训练时间。
[0003] 现有技术采用并行化的策略来加速模型训练,使用硬件加速器来横向扩展(scale out)深度神经网络训练主要有两种模式:数据并行和模型并行。数据并行通过将输入模型的数据集分片,并分别分配至不同的计算处理器来实现加速模型训练。模型并行将一个模型的内存和计算分配至多个计算处理器,以此来解决一个模型在单个计算处理器上无法容纳的问题,其解决方法是把模型分配至多个机器节点的计算处理器之上。
[0004] 然而现有技术中对于模型和模型训练数据的分配方式,因此存在多个机器节点在异构通信网络下训练效率低的问题。

发明内容

[0005] 基于此,有必要针对上述技术问题,提供一种能够提高模型训练效率的训练模型分配方法、装置、计算机设备和存储介质。
[0006] 第一方面,本申请提供了一种训练模型分配方法,所述方法包括:
[0007] 获取待训练模型的模型信息和训练数据集;其中,所述模型信息包括待训练模型的层级信息和计算参数信息,所述层级信息包括所述待训练模型的层级数量,所述计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;
[0008] 将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点;
[0009] 将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;
[0010] 将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;
[0011] 根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。
[0012] 在一个实施例中,所述将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点包括:
[0013] 将所述训练模型根据层级信息,划分为至少两个子模型;
[0014] 根据所述层级信息,将所述计算集群中各机器节点划分为流水线并行组;
[0015] 根据所述层级信息,将所述待训练模型的各子模型分配至对应所述流水线并行组中各机器节点。
[0016] 在一个实施例中,所述根据所述层级信息,将所述计算集群中各机器节点划分为流水线并行组,包括:
[0017] 根据所述层级信息,确定所述待训练模型的层级数量;
[0018] 将所述层级数量确定为流水线并行数量;
[0019] 根据所述流水线并行数量,将所述计算集群中各机器节点分配至相应的流水线并行组;若所述流水线并行数量小于所述训练集群中机器节点的数量,则至少一个所述流水线并行组包括至少两个机器节点;其中,同一所述流水线并行组中至少两个机器节点具有不同的通信协议。
[0020] 在一个实施例中,所述将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器包括:
[0021] 将各所述子模型根据所述计算参数信息,划分为至少两个子模型切片;
[0022] 根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为张量并行组;
[0023] 根据所述计算参数信息,将各所述子模型切片分配至对应所述张量并行组中各计算处理器。
[0024] 在一个实施例中,所述根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为张量并行组,包括:
[0025] 根据所述计算参数信息,确定各所述子模型的子模型切片数量;
[0026] 将所述子模型切片数量确定为张量并行数;
[0027] 根据所述张量并行数,将各机器节点的所述各计算处理器分配至相应的张量并行组;其中,同一所述张量并行组中的所有计算处理器属于同一机器节点。
[0028] 在一个实施例中,所述将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器包括:
[0029] 将所述训练数据集根据所述计算参数信息,划分为至少两个训练子数据集;
[0030] 根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为数据并行组;
[0031] 根据所述计算参数信息,将各所述训练子数据集分配至对应所述数据并行组中各计算处理器。
[0032] 在一个实施例中,所述根据所述计算参数信息,将所述训练集群中各机器节点的各计算处理器划分为数据并行组包括:
[0033] 根据每个计算参数信息所需的计算处理器数量,确定数据并行数;
[0034] 根据所述数据并行数,将至少两个计算处理器组确定为数据并行组;其中,所述数据并行组中的各计算处理器所在机器节点具有相同的通信协议。
[0035] 第二方面,本申请还提供了一种训练模型分配装置。所述装置包括:
[0036] 数据获取模块,用于获取待训练模型的模型信息和训练数据集;其中,所述模型信息包括待训练模型的层级信息和计算参数信息,所述层级信息包括所述待训练模型的层级数量,所述计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;
[0037] 第一分配模块,用于将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点;
[0038] 第二分配模块,用于将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;
[0039] 第三分配模块,用于将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;
[0040] 模型训练模块,用于根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。
[0041] 第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0042] 获取待训练模型的模型信息和训练数据集;其中,所述模型信息包括待训练模型的层级信息和计算参数信息,所述层级信息包括所述待训练模型的层级数量,所述计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;
[0043] 将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点;
[0044] 将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;
[0045] 将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;
[0046] 根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。
[0047] 第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0048] 获取待训练模型的模型信息和训练数据集;其中,所述模型信息包括待训练模型的层级信息和计算参数信息,所述层级信息包括所述待训练模型的层级数量,所述计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;
[0049] 将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点;
[0050] 将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;
[0051] 将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;
[0052] 根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。
[0053] 上述训练模型分配方法、装置、计算机设备和存储介质,首先获取待训练模型的模型信息和训练数据集;然后将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点;之后将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;之后将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;最后根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。通过本申请的方法进行模型分配,解决了多个机器节点在异构通信网络下训练效率低的问题。

附图说明

[0054] 图1为一个实施例中训练模型分配方法的应用环境图;
[0055] 图2为一个实施例中训练模型分配方法的流程示意图;
[0056] 图3为一个实施例中待训练模型层级的示意图;
[0057] 图4为一个实施例中将各子模型分配至训练集群中各机器节点的流程示意图;
[0058] 图5为一个实施例中将各子模型切片分配至训练集群中各机器节点的各计算处理器的流程示意图;
[0059] 图6为一个实施例中将各训练子数据集分配至训练集群中各计算处理器的流程示意图;
[0060] 图7a为一个实施例中流水线并行组和张量并行组划分结果的示意图;
[0061] 图7b为另一个实施例中流水线并行组和张量并行组划分结果的示意图;
[0062] 图7c为又一个实施例中流水线并行组和张量并行组划分结果的示意图;
[0063] 图8为一个实施例中训练模型分配方法的流程示意图;
[0064] 图9为一个实施例中计算机设备的内部结构图。

具体实施方式

[0065] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0066] 本申请实施例提供的训练模型分配方法,可以应用于如图1所示的应用环境中。其中,终端设备102通过网络与服务器104进行通信。数据存储系统可以存储待训练模型的模型信息和训练数据集。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。终端设备102可以为训练集群中的主机器节点。终端设备102获取待训练模型的模型信息和训练数据集;其中,模型信息包括待训练模型的层级信息和计算参数信息,计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;将待训练模型根据层级信息划分为至少两个子模型,并将各子模型分配至训练集群中各机器节点;将各子模型根据计算参数信息划分为至少两个子模型切片,并将各子模型切片分配至训练集群中各机器节点的各计算处理器;将训练数据集根据计算参数信息划分为至少两个训练子数据集,并将各训练子数据集分配至训练集群中各计算处理器;根据训练集群中所有计算处理器,以及所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。其中,终端设备102可以但不限于是各种个人计算机、笔记本电脑和虚拟机等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0067] 本申请实施例中的计算处理器,可以但不限于是GPU(Graphics Processing Unit,图形处理器)、TPU(TensorProcessing Unit,张量处理器)和NPU(Neural Processing Unit,神经网络处理器)等。
[0068] 其中,GPU、TPU和NPU都是计算处理器的类型,用于加速特定类型的计算任务。
[0069] GPU最初设计用于处理图形和图像渲染的处理器。然而,由于其高度并行的计算能力,GPU也被广泛应用于通用计算任务,如科学计算、机器学习、深度学习等。GPU通常拥有大量的计算核心,例如CUDA(Compute Unified DeviceArchitecture,统一计算设备架构)核心或Tensor Cores(张量核心),能够同时处理多个数据并执行复杂的计算操作。由于其并行计算能力,GPU在训练和推理深度学习模型方面表现出色。
[0070] TPU是谷歌开发的专用处理器,旨在优化深度学习任务。TPU专注于执行张量运算,这是深度学习中广泛使用的数据结构。TPU在训练和推理深度学习模型方面表现出色,并且在能效方面相对较高。它通常用于云端深度学习服务和谷歌自家的深度学习应用。
[0071] NPU是专用于加速神经网络计算的处理器。与GPU和TPU不同,NPU的设计更专注于执行神经网络的计算,能够高效地处理神经网络的前向传播和反向传播。NPU通常用于移动设备、智能手机和物联网设备,以实现在边缘设备上进行深度学习推理的高效性。
[0072] 总体而言,GPU、TPU和NPU都是为了加速特定类型的计算任务而设计的计算处理器,它们在不同的应用场景和需求下,表现出优秀的性能和能效。
[0073] 在一个实施例中,如图2所示,提供了一种训练模型分配方法,以该方法应用于图1中的终端设备102为例进行说明,包括以下步骤:
[0074] 步骤202,获取待训练模型的模型信息和训练数据集。
[0075] 其中,模型信息包括待训练模型的层级信息和计算参数信息,层级信息包括待训练模型的层级数量,计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量。
[0076] 步骤204,将待训练模型根据层级信息划分为至少两个子模型,并将各子模型分配至训练集群中各机器节点。
[0077] 其中,子模型为根据层级信息确定的各层级的待训练模型。示例性地,如图3所示,待训练模型在输入和输出之间包含层级1至层级N这N个层级,将这N个层级的待训练模型确定为N个子模型,各机器节点为训练集群中独立的计算机系统,每个机器节点包括至少两个计算处理器。
[0078] 步骤206,将各子模型根据计算参数信息划分为至少两个子模型切片,并将各子模型切片分配至训练集群中各机器节点的各计算处理器。
[0079] 其中,子模型切片表示各层级待训练模型中的计算任务。示例性地,以图3为例,假设其中的层级1至层级N各层级待训练模型中,每个层级的待训练模型包括两个计算任务,则将某一层级对应的子模型根据计算参数信息划分可以得到两个子模型切片。
[0080] 步骤208,将训练数据集根据计算参数信息划分为至少两个训练子数据集,并将各训练子数据集分配至训练集群中各计算处理器。
[0081] 具体地,将训练数据集根据计算参数信息划分为至少两个训练子数据集,包括:根据各计算任务所需的计算处理器数量,确定各计算任务所需的训练子数据集的数量,将训练数据集中各计算任务的各训练子数据集平均分配至处理该计算任务的各计算处理器。
[0082] 步骤210,根据训练集群中所有计算处理器,以及所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。
[0083] 具体地,根据训练集群中所有计算处理器,以及所有计算处理器对应的子模型切片和训练数据子集,确定各计算处理器所在的机器节点之间采用的通信协议,基于各计算处理器所在的机器节点之间采用的通信协议对待训练模型进行训练,并汇总模型训练结果。
[0084] 本申请的训练集群中各机器节点之间通信协议可以包括RoCE(RDMA over Converged Ethernet)、IB(Infiniband)和TCP/IP(以太网通信协议)。其中的RoCE和IB属于RDMA(RemoteDirect Memory Access)技术,由于RDMA技术能直接通过网络接口访问内存数据,无需操作系统内核的介入。因此通过RoCE和IB构建高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。示例性地,可通过如下方式确定各计算处理器所在的机器节点之间采用的通信协议:当需要通信的两个计算处理器所在的机器节点均处于同一个高速网络集群(IB或者RoCE)时,采用高速网络进行通信;当需要通信的两个计算处理器所在的机器节点处于不同的高速网络集群时,如果双方通信协议可以兼容(例如都为IB或都为RoCE)则采用高速网络进行通信,如果不兼容则采用以太网通信协议进行通信。
[0085] 本实施例中的训练模型分配方法,首先获取待训练模型的模型信息和训练数据集;然后将所述训练模型根据所述层级信息划分为至少两个子模型,并将各所述子模型分配至训练集群中各机器节点;之后将各所述子模型根据所述计算参数信息划分为至少两个子模型切片,并将各所述子模型切片分配至训练集群中各机器节点的各计算处理器;之后将所述训练数据集根据所述计算参数信息划分为至少两个训练子数据集,并将各所述训练子数据集分配至训练集群中各计算处理器;最后根据所述训练集群中所有计算处理器,以及所述所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。由于将待训练模型划分为子模型和子模型切片,并将训练数据集划分为训练子数据集分配给各计算处理器,将模型并行与数据并行相结合,解决了多个机器节点在异构通信网络下训练效率低的问题。
[0086] 在一个实施例中,如图4所示,将待训练模型根据层级信息划分为至少两个子模型,并将各子模型分配至训练集群中各机器节点包括:
[0087] 步骤402,将待训练模型根据层级信息,划分为至少两个子模型。
[0088] 步骤404,根据层级信息,将计算集群中各机器节点划分为流水线并行组。
[0089] 具体地,根据层级信息,确定待训练模型的层级数量;将层级数量确定为流水线并行数量;根据流水线并行数量,将计算集群中各机器节点分配至相应的流水线并行组;若流水线并行数量小于训练集群中机器节点的数量,则至少一个流水线并行组包括至少两个机器节点。
[0090] 其中,流水线并行组表示处理待训练模型的不同子模型的一组机器节点,同一流水线并行组中至少两个机器节点具有不同的通信协议。流水线并行数量,表示根据模型层数确定的处理不同子模型的机器节点的并行数量。
[0091] 示例性地,待训练模型一共有3层,则流水线并行数为3,此时,若训练集群中机器节点的数量为4,则可按照如下方式划分流水线并行组:将第一个机器节点分配至第一个流水线并行组;将第二个机器节点分配至第二个流水线并行组;将第三个机器节点和第四个机器节点分配至第三个流水线并行组;其中,第三机器节点和第四机器节点具有不同的通讯协议。
[0092] 采用本实施例的方式进行流水线并行组的划分,由于处理模型不同层级对应的子模型的机器节点具有不同的通信协议,因而能够将更多具有相同通信协议的机器节点划分给同一个子模型,提高模型训练中的通信效率,加速模型训练。
[0093] 步骤406,根据层级信息,将待训练模型的各子模型分配至对应流水线并行组中各机器节点。
[0094] 具体地,根据层级信息,确定待训练模型的每个层级对应的子模型,将各层级对应的子模型分配给流水线并行组中的各机器节点。其中,各机器节点至多分得一个待训练模型的子模型。
[0095] 本实施例的方法中,首先将训练模型根据层级信息,划分为至少两个子模型;然后根据层级信息,将计算集群中各机器节点划分为流水线并行组;最后根据层级信息,将待训练模型的各子模型分配至对应流水线并行组中各机器节点。采用本实施例的方法将模型各层划分为子模型,并分配至各机器节点,由于充分利用了训练集群中各机器节点的计算处理器,因此能够解决待训练模型在一个机器节点的计算处理器上无法容纳的问题,提高大模型的训练效率。
[0096] 在一个实施例中,如图5所示,将各子模型根据计算参数信息划分为至少两个子模型切片,并将各子模型切片分配至训练集群中各机器节点的各计算处理器包括:
[0097] 步骤502,将各子模型根据计算参数信息,划分为至少两个子模型切片。
[0098] 具体地,根据计算参数信息中的计算参数数量,确定对各子模型进行切分得到的子模型切片数量,并根据子模型切片数量将各子模型划分为至少两个子模型切片。其中,各子模型是由包含待训练模型各层需要计算的多组计算参数组成,计算参数数量表示待训练模型各层包括多少组计算参数。
[0099] 步骤504,根据计算参数信息,将训练集群中各机器节点的各计算处理器划分为张量并行组。
[0100] 具体地,根据计算参数信息中的计算参数数量,确定各子模型的子模型切片数量;将子模型切片数量确定为张量并行数;根据张量并行数,将各机器节点的各计算处理器分配至相应的张量并行组。
[0101] 其中,张量并行组表示处理子模型中不同计算参数的一组机器节点,同一张量并行组中的所有计算处理器属于同一机器节点。张量并行数量,表示同一张量并行组中所包含的计算处理器数量。
[0102] 采用本实施例的方式进行张量并行组的划分,由于处理同一子模型的计算处理器具有相同的通信协议,因而能够提高模型训练中的通信效率,加速模型训练。
[0103] 步骤506,根据计算参数信息,将各子模型切片分配至对应张量并行组中各计算处理器。
[0104] 具体地,根据计算参数信息,确定各子模型对应的子模型切片,将各子模型对应的子模型切片分配给张量并行组中的各计算处理器。其中,各计算处理器至多分得一个子模型切片。
[0105] 本实施例的方法中,首先将各子模型根据计算参数信息,划分为至少两个子模型切片;然后根据计算参数信息,将训练集群中各机器节点的各计算处理器划分为张量并行组;最后根据计算参数信息,将各子模型切片分配至对应张量并行组中各计算处理器。采用本实施例的方法将待训练模型各子模型切片分配至各机器节点,在将待训练模型划分为各层的子模型的基础上,进一步将子模型切片分配至不同的计算处理器,因此能够解决待训练模型在一个机器节点的计算处理器上无法容纳的问题,提高大模型的训练效率。
[0106] 在一个实施例中,如图6所示,将各子模型根据计算参数信息划分为至少两个子模型切片,并将各子模型切片分配至训练集群中各机器节点的各计算处理器包括:
[0107] 步骤602,将训练数据集根据计算参数信息,划分为至少两个训练子数据集。
[0108] 具体地,根据计算参数信息确定每组计算参数所需的训练数据,并将每组计算参数所需的训练数据划分为训练子数据集。
[0109] 步骤604,根据计算参数信息,将训练集群中各机器节点的各计算处理器划分为数据并行组。
[0110] 具体地,根据计算参数信息,确定每组计算参数的训练子数据集数量,并根据训练子数据集数量将训练集群中各机器节点的各计算处理器划分为数据并行组。
[0111] 具体地,根据每个计算参数信息所需的计算处理器数量,确定数据并行数;根据数据并行数,将至少两个计算处理器组确定为数据并行组。
[0112] 其中,数据并行组中的各计算处理器所在机器节点具有相同的通信协议。
[0113] 采用本实施例的方式进行数据并行组的划分,由于处理同一批训练数据的计算处理器具有相同的通信协议,因而能够提高模型训练中的通信效率,加速模型训练。
[0114] 步骤606,根据计算参数信息,将各训练子数据集分配至对应数据并行组中各计算处理器。
[0115] 具体地,根据计算参数信息,确定每组计算参数的训练子数据集数量,将各训练子数据集分配给数据并行组中的各计算处理器。其中,各计算处理器至多分得一个训练子数据集。
[0116] 本实施例的方法中,首先将训练数据集根据计算参数信息,划分为至少两个训练子数据集;然后根据计算参数信息,将训练集群中各机器节点的各计算处理器划分为数据并行组;最后根据计算参数信息,将各训练子数据集分配至对应数据并行组中各计算处理器。采用本实施例的方法将训练数据集划分为训练子数据集,并分配给各计算处理器,在对待训练模型进行流水线并行和张量并行处理的基础上,进一步将用于模型训练的训练数据集分配至不同的计算处理器,因此能够充分利用训练集群中各机器节点的计算处理器的计算资源,提高大模型的训练效率。
[0117] 在一个实施例中,本申请的方法还可以应用于异构通信网络的应用环境。其中,异构通信网络包括至少两个训练集群,至少两个训练集群中的机器节点采用至少两种不同的通信协议,例如RoCE、IB和TCP/IP中的至少两种通信协议。这种情况下,可以根据训练集群个数、各训练集群中机器节点的个数,以及各机器节点中计算处理器的个数对各计算处理器进行编号,以确定各计算处理器在异构通信网络中所处的位置。也可以根据流水线并行组、张量并行组以及数据并行组的划分,为每个机器节点的各计算处理器进行编号,以确定各计算处理器在其所在的训练集群中所处的位置。
[0118] 示例性地,在异构通信网络下,假设不同通信网络的训练集群个数为m(m≥2),训练集群编号a(0≤a<m)下的机器节点个数为na(na>0),所有机器节点上的计算处理器个数都为c(c>0)。将训练集群、机器节点、计算处理器按顺序进行编号,所有训练集群下计算处理器的总数为 ,可以将训练集群a下机器节点b上的计算处理器编号k在异构通信网络的全局编号定义为如下: 。
[0119] 采用本申请的方法进行异构通信网络下模型训练时,对于其中的一个训练训练集群,假设流水线并行数为p(p≥m),张量并行数为t(t≤c),数据并行数为d,则所有训练集群下的计算处理器总数记为 。在划分流水线并行组时,需要根据模型的层级信息按顺序划分为不同的子模型,当流水线并行数为p(p≥m)时,则流水线并行组的个数为 个,划分得到的流水线并行组可以表示 的矩阵PP,如下公式1所示,矩阵中的元素[PP]i,j代表第i号流水线并行组里面第j号计算处理器。
[0120]    (1)
[0121] 在划分张量并行组时,当张量并行数为t(t≤c)时,则张量并行组的数为 个,划分得到的张量并行组可以表示为 的矩阵TP,如下公式2所示,矩阵中的元素[TP]i,j代表第i号数据并行组里面第j号计算处理器。
[0122]      (2)
[0123] 当数据并行数为d(d≤c)时,则数据并行组的数为 个,划分得到的数据并行组可以表示为 的矩阵DP,如下公式3所示, 矩阵中的元素[DP]i,j代表第i号数据并行组里面第j号计算处理器。
[0124]     (3)
[0125] 其中,mod(i,t)表示i和t做除法运算之后的余数,floor(x)表示对x做向下取整。
[0126] 如图7a‑图7c所示,图7a‑图7c为本实施例中异构通信网络下的一个训练集群中,流水线并行组和张量并行组划分结果的示意图。其中包括机器1至机器3这4个机器节点,每个机器节点上布置有4个计算处理器,训练集群中共有G0至G15这16个计算处理器。通过上述公式1‑公式2可以唯一确定训练集群中各计算处理器在训练集群中所处的位置。
[0127] 本实施例中,根据训练集群、机器节点和计算处理器的个数,对各计算处理器进行编号,以及根据流水线并行组、张量并行组以及数据并行组的划分,对各计算处理器进行编号,因此可以准确地确定计算处理器在整个通信网络以及具体的训练集群中的位置。
[0128] 应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少两部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少两部分轮流或者交替地执行。
[0129] 基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的训练模型分配方法的训练模型分配装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个训练模型分配装置实施例中的具体限定可以参见上文中对于训练模型分配方法的限定,在此不再赘述。
[0130] 在一个实施例中,如图8所示,提供了一种训练模型分配装置800,包括:数据获取模块801、第一分配模块802、第二分配模块803、第三分配模块804和模型训练模块805,其中:
[0131] 数据获取模块801,用于获取待训练模型的模型信息和训练数据集;其中,模型信息包括待训练模型的层级信息和计算参数信息,层级信息包括待训练模型的层级数量,计算参数信息包括待训练模型每个层级的计算任务数,以及每个计算任务所需的计算处理器数量;
[0132] 第一分配模块802,用于将训练模型根据层级信息划分为至少两个子模型,并将各子模型分配至训练集群中各机器节点;
[0133] 第二分配模块803,用于将各子模型根据计算参数信息划分为至少两个子模型切片,并将各子模型切片分配至训练集群中各机器节点的各计算处理器;
[0134] 第三分配模块804,用于将训练数据集根据计算参数信息划分为至少两个训练子数据集,并将各训练子数据集分配至训练集群中各计算处理器;
[0135] 模型训练模块805,用于根据训练集群中所有计算处理器,以及所有计算处理器对应的子模型切片和训练数据子集,对待训练模型进行训练。
[0136] 在一个实施例中,第一分配模块802还用于将训练模型根据层级信息,划分为至少两个子模型;根据层级信息,将计算集群中各机器节点划分为流水线并行组;根据层级信息,将待训练模型的各子模型分配至对应流水线并行组中各机器节点。
[0137] 在一个实施例中,第一分配模块802还用于根据层级信息,确定待训练模型的层级数量;将层级数量确定为流水线并行数量;根据流水线并行数量,将计算集群中各机器节点分配至相应的流水线并行组;若流水线并行数量小于训练集群中机器节点的数量,则至少一个流水线并行组包括至少两个机器节点;其中,同一流水线并行组中至少两个机器节点具有不同的通信协议。
[0138] 在一个实施例中,第二分配模块803还用于将各子模型根据计算参数信息,划分为至少两个子模型切片;根据计算参数信息,将训练集群中各机器节点的各计算处理器划分为张量并行组;根据计算参数信息,将各子模型切片分配至对应张量并行组中各计算处理器。
[0139] 在一个实施例中,第二分配模块803还用于根据计算参数信息,确定各子模型的子模型切片数量;将子模型切片数量确定为张量并行数;根据张量并行数,将各机器节点的各计算处理器分配至相应的张量并行组;同一张量并行组中的所有计算处理器属于同一机器节点。
[0140] 在一个实施例中,第三分配模块804还用于将训练数据集根据计算参数信息,划分为至少两个训练子数据集;根据计算参数信息,将训练集群中各机器节点的各计算处理器划分为数据并行组;根据计算参数信息,将各训练子数据集分配至对应数据并行组中各计算处理器。
[0141] 在一个实施例中,第三分配模块804还用于根据每个计算参数信息所需的计算处理器数量,确定数据并行数;根据数据并行数,将至少两个计算处理器组确定为数据并行组;其中,数据并行组中的各计算处理器所在机器节点具有相同的通信协议。
[0142] 上述训练模型分配装置800中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0143] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种训练模型分配方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0144] 本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0145] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0146] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0147] 需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
[0148] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少两种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少两种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、计算处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0149] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0150] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。