
1.本公开涉及计算机技术领域,尤其涉及人工智能、深度学习等技术领域。
背景技术:2.深度学习领域,moe(mixure-of-experts,混合专家模型)是实现超大规模模型训练的技术路径之一。moe中可以采用all-to-all(全部到全部)的通信方式。all-to-all操作是一种通信操作。例如,在深度学习任务中,进程间可以通过all-to-all操作交换数据,并使用交换后的数据进行接下来的计算。
技术实现要素:3.本公开提供了一种训练深度学习模型的方法、装置、设备以及存储介质。
4.根据本公开的一方面,提供了一种训练深度学习模型的方法,包括:将训练数据划分为n个第一数据集,其中,n为大于1的整数;根据所述n个第一数据集,与当前计算节点所处的计算节点集群内的目标计算节点进行数据交换,得到第一交换结果;根据所述第一交换结果,与所述当前计算节点中的目标处理单元进行数据交换,得到第二交换结果;以及利用所述第二交换结果,对深度学习模型进行训练。
5.根据本公开的另一方面,提供了一种训练深度学习模型的装置,包括:划分模块,用于将训练数据划分为n个第一数据集,其中,n为大于1的整数;第一交换模块,用于根据所述n个第一数据集,与当前计算节点所处的计算节点集群内的目标计算节点进行数据交换,得到第一交换结果;第二交换模块,用于根据所述第一交换结果,所述当前计算节点中的目标处理单元进行数据交换,得到第二交换结果;以及训练模块,用于利用所述第二交换结果,对深度学习模型进行训练。
6.本公开的另一个方面提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开实施例所示的方法。
7.根据本公开实施例的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本公开实施例所示的方法。
8.根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开实施例所示方法的步骤。
9.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
10.附图用于更好地理解本方案,不构成对本公开的限定。其中:
11.图1是根据本公开实施例的可以应用训练深度学习模型的方法、装置、电子设备和
存储介质的系统架构示意图;
12.图2示意性示出了根据本公开的实施例的训练深度学习模型的方法的流程图;
13.图3示意性示出了根据本公开的实施例的与目标计算节点进行数据交换的方法的流程图;
14.图4示意性示出了根据本公开的实施例的与目标处理单元进行数据交换的方法的流程图;
15.图5示意性示出了根据本公开的实施例的对深度学习模型进行训练的方法的流程图;
16.图6a示意性示出了根据本公开另一实施例的训练深度学习模型的示意图;
17.图6b示意性示出了根据本公开另一实施例的训练深度学习模型的示意图;
18.图6c示意性示出了根据本公开另一实施例的训练深度学习模型的示意图;
19.图7示意性示出了根据本公开实施例的训练深度学习模型的装置的框图;以及
20.图8示意性示出了可以用来实施本公开的实施例的示例电子设备的框图。
具体实施方式
21.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
22.以下将结合图1对本公开提供的可以应用训练深度学习模型的方法、装置、电子设备和存储介质的系统架构进行描述。
23.图1是根据本公开实施例的可以应用训练深度学习模型的方法、装置、电子设备和存储介质的系统架构示意图。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
24.如图1所示,该系统架构100可以包括计算节点110、120和网络130。计算节点110和计算节点120可以分别包括多个处理单元。示例性地,本实施例中,计算节点110例如可以包括处理单元111、112。计算节点120例如可以包括处理单元121、122。
25.根据本公开的实施例,网络130可以用以在处理单元111、112、121和122之间提供通信链路的介质。网络130可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
26.根据本公开的实施例,计算节点110、120例如可以为服务器。该服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(
″
virtual private server
″
,或简称
″
vps
″
)中,存在的管理难度大,业务扩展性弱的缺陷。该服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
27.根据本公开的实施例,处理单元111、112、121和122例如可以包括gpu(graphics processing unit,图形处理器)、cpu(central processing unit,中央处理器)、npu(natural-network processing unit,嵌入式神经网络处理器)等等。
all操作进行数据交换。
43.在操作s230,根据第一交换结果,与当前计算节点中的目标处理单元进行数据交换,得到第二交换结果。
44.根据本公开的实施例,目标处理单元例如可以包括当前计算节点中除当前处理单元之外的其他处理单元。
45.根据本公开的实施例,当前处理单元与目标处理单元之间例如可以通过all-to-all操作进行数据交换。
46.在操作s240,利用第二交换结果,对深度学习模型进行训练。
47.根据本公开的实施例,针对计算节点中各处理单元,将各处理单元的训练数据分成多个数据集。然后与计算节点集群中的其他计算节点进行交换,得到第一交换结果。接下来根据各处理单元的第一交换结果在计算节点内部再进行交换,得到第二交换结果。接着利用第二交换结果,对深度学习模型进行训练。利用了同一计算节点内部处理单元间通信带宽较高,而不同计算节点间通信带宽较低的特性,提升了通信效率,缩短了整体训练完成时间。
48.根据本公开的实施例,深度学习模型例如可以包括moe(mixure-of-experts,混合专家模型)。
49.以下将结合图3对本公开提供的与当前计算节点所处的计算节点集群内的目标计算节点进行数据交换的方法进行描述。
50.图3示意性示出了根据本公开的实施例的与目标计算节点进行数据交换的方法的流程图。
51.如图3所示,该与目标计算节点进行数据交换的方法320包括在操作s321,确定每个目标计算节点中的对应处理单元。
52.根据本公开的实施例,例如可以获取当前计算节点中当前处理单元的第一单元编号。然后确定目标计算节点中单元编号与第一单元编号匹配的处理单元,作为对应处理单元。
53.示例性地,本实施例中,计算节点集群中的每个计算节点中可以按照相同的编号生成规则,为计算节点内的每个处理单元生成单元编号。如果两个处理单元在各自所在节点中的编号相同,则表示该两个处理单元的单元编号匹配。
54.例如,计算节点集群中可以包括计算节点node a1和node a2。当前计算节点可以为node a1,当前计算节点中当前处理单元可以为处理单元unit a1_2,处理单元unit a1_2的编号为“2”。基于此,可以确定计算节点node a2中编号同样为“2”处理单元unit a2_2的作为与unit a1_2对应的对应处理单元。
55.在操作s322,将n个第一数据集中与每个对应处理单元对应的目标第一数据集发送至对应处理单元。
56.根据本公开的实施例,可以预先从1到n为计算节点集群中每个计算节点设置编号。基于此,在操作s322中,例如可以针对每个目标计算节点,获取目标计算节点的节点编号i,其中,i为整数且1≤i≤n。然后确定n个第一数据集中的第i个第一数据集作为目标第一数据集,并将目标第一数据集发送至目标计算节点中的对应处理单元。
57.例如,计算节点集群中可以包括计算节点node b1、node b2和node b3。可以将
node b1的节点编号设置为“1”,node b2的节点编号设置为“2”,node b3的节点编号设置为“3”。对于node b1中的每个处理单元,可以将每个处理单元中的训练数据分为3份,将该3个第一数据集中的第2个第一数据集作为与node b2对应的目标第一数据集,发送至node b2中的对应处理单元,将该3个第一数据集中的第3个第一数据集作为与node b3对应的目标第一数据集,发送至node b3中的对应处理单元。
58.在操作s323,接收来自每个对应处理单元的第二数据集。
59.根据本公开的实施例,每个对应处理单元也可以按照与上述操作s322相同的方式,向当前处理单元发送对应的数据集,即第二数据集。
60.在操作s324,确定每个第二数据集以及n个第一数据集中除目标第一数据集之外的其他第一数据集,作为第一交换结果。
61.以下将结合图4对本公开提供的与当前计算节点中的目标处理单元进行数据交换的方法进行描述。
62.图4示意性示出了根据本公开的实施例的与目标处理单元进行数据交换的方法的流程图。
63.如图4所示,该与目标处理单元进行数据交换的方法430包括在操作s431,根据计算节点集群内计算节点的总数量m,将第一交换结果分成m个第一数据。其中,m为大于1的整数。
64.在操作s432,将m个第一数据中与每个目标处理单元对应的目标第一数据发送至目标处理单元。
65.根据本公开的实施例,例如可以获取当前计算节点中处理单元的总数量m’。然后针对m个第一数据中的第j个第一数据,其中,j为整数且1≤j≤m’,根据以下公式确定中间参数y,其中%表示取模操作:
66.y=(j-1)%m’+1,
67.接着将第j个第一数据发送至当前计算节点中第y个处理单元。
68.例如,当前计算节点中可以包括处理单元unit c1和unit c2。对于当前处理单元unit c1,可以将第一交换结果分为4个第一数据,对于该4个第一数据中的第1个第一数据,可以确定中间参数y=(1-1)%2+1=1,即应当将该第1个第一数据发送至当前计算节点中的第1个处理单元。但是由于当前处理单元unit c1即为第1个处理单元,因此unit c1不需要发送该第1个第一数据。对于该4个第一数据中的第2个第一数据,可以确定中间参数y=(2-1)%2+1=2,即应当将该第2个第一数据发送至第2个处理单元unit c2。同理,还可以确定第3个第一数据不需要发送,第4个第一数据发送至处理单元unit c2。
69.在操作s433,接收来自每个目标处理单元的第二数据。
70.根据本公开的实施例,每个目标处理单元也可以按照与上述操作s432相同的方式,向当前处理单元发送对应的数据,即第二数据。
71.在操作s434,确定每个第二数据以及m个第一数据中除目标第一数据之外的其他第一数据,作为第二交换结果。
72.根据本公开的实施例,通过将各处理单元的训练数据分成多个数据集。然后与计算节点集群中的其他计算节点进行交换,得到第一交换结果。接下来根据各处理单元的第一交换结果在计算节点内部再进行交换,得到第二交换结果。实现了各处理单元之间的
all-to-all通信,利用了同一计算节点内部处理单元间通信带宽较高的优势,提升了通信效率。
73.以下将结合图5对本公开提供的利用第二交换结果,对深度学习模型进行训练的方法进行描述。
74.图5示意性示出了根据本公开的实施例的对深度学习模型进行训练的方法的流程图。
75.如图5所示,该对深度学习模型进行训练的方法550包括在操作s551,将第二交换结果输入深度学习模型,得到输出结果。
76.在操作s552,根据输出结果,调整深度学习模型的参数。
77.根据本公开的实施例,例如可以利用损失函数确定与输出结果对应的损失值,然后根据损失值调整深度学习模型的参数。其中,损失函数可以根据实际需要选择,本公开对此不作具体限定。
78.下面参考图6a~6c,结合具体实施例对上文所示的训练深度学习模型的方法做进一步说明。本领域技术人员可以理解,以下示例实施例仅用于理解本公开,本公开并不局限于此。
79.图6a示意性示出了根据本公开另一实施例的训练深度学习模型的示意图。
80.在图6a中示出了,示例性地,本实施例中计算节点集群中有2个计算节点node d1和node d2,每台计算节点中包含的处理单元数为2个,node d1包括处理单元g0和g1,node d2包括处理单元g2和g3,故计算节点集群中总共有4个处理单元。
81.根据本公开的实施例,每个处理单元上对应一个进程,该进程要与其他处理单元中的进程进行通信。基于此,针对每个处理单元,可以将每个处理单元中待通信的数据均匀切分为2个数据集。例如,可以将处理单元g0中的数据1_1和2_1分为一个数据集s01,将数据1_3和2_3分为一个数据集s02。将处理单元g1中的数据1_2和2_2分为一个数据集s11,将数据1_4和2_4分为一个数据集s12。将处理单元g2中的数据3_1和4_1分为一个数据集s21,将数据4_3和4_3分为一个数据集s22。将处理单元g3中的数据3_2和4_2分为一个数据集s32,将数据3_4和4_4分为一个数据集s33。
82.然后,例如6b所示,每个进程可以获取其他进程所在计算节点的节点编号i,其中,i为整数且1≤i≤2。然后将数据集中的第i个数据集发送至第i个计算节点中的对应处理单元。
83.示例性地,本实施例中,可以将每个计算节点的第k(1≤k≤2)个(即编号为k)处理单元互相作为对应处理单元。基于此,可以将每个计算节点的第k个进程组成一个虚拟组,该虚拟组间使用每个处理单元的第k份数据做all-to-all通信,以交换数据集。
84.例如,node d1中第1个处理单元g0所对应的进程与node d2中第1个处理单元g2所对应的进程可以组成一个虚拟组,node d1中第2个处理单元g1所对应的进程与node d2中第2个处理单元g3所对应的进程可以组成一个虚拟组。
85.每个虚拟组中的第1个进程保留对应处理单元内的第1个数据集,并将对应处理单元内的第2个数据集发送给第2个进程。每个虚拟组中的第2个进程保留对应处理单元内的第2个数据集,并将对应处理单元内的第1个数据集发送给第1个进程。
86.例如,对于node d1中处理节点g0所对应的进程,可以保留g0内的第1个数据集
s01,将g0内第2个数据集s02发送至node d2中的对应处理单元g2。对于node d1中处理节点g1所对应的进程,可以保留g1内的第2个数据集s12,将g1内第1个数据集s11发送至node d2中的对应处理单元g3。对于node d2中处理节点g2所对应的进程,可以保留g2内的第1个数据集s21,将g2内第2个数据集s22发送至node d1中的对应处理单元g0。对于node d2中处理节点g3所对应的进程,可以保留g3内的第2个数据集s32,将g3内第1个数据集s31发送至node d1中的对应处理单元g1。
87.接下来,例如6c所示,每个进程将交换数据集后的得到的第一交换结果,在同一计算节点内再次进行交互。本实施例中,每个进程可以将对应的第一交换结果切分为4份,对于其中的第j份,发送到同一计算节点内的第y个处理单元,其中,y=(j-1)%2+1,1≤k≤2,其中%表示取模操作。
88.例如,g0可以将第一交换结果分成数据1_1、2_1、1_3和2_3。对于第1个数据1_1,确定y=(1-1)%2+1=1,因此保留第1个数据1_1。对于第2个数据2_1,确定y=(2-1)%2+1=2,因此将第2个数据2_1发送至第2个处理单元g1。对于第3个数据1_3,确定y=(3-1)%2+1=1,因此保留第4个数据1_3。对于第4个数据2_3,确定y=(4-1)%2+1=2,因此将第4个数据2_3发送至第2个处理单元g1。
89.同理,g0可以将第一交换结果分成数据1_1、2_1、1_3和2_3,将第2个数据2_1和第4个数据2_3发送至第2个处理单元g1,保留第1个数据1_1和第3个数据1_3。g0可以将第一交换结果分成数据1_1、2_1、1_3和2_3,将第2个数据2_1和第4个数据2_3发送至第2个处理单元g1,保留第1个数据1_1和第3个数据1_3。g0可以将第一交换结果分成数据1_1、2_1、1_3和2_3,将第2个数据2_1和第4个数据2_3发送至第2个处理单元g1,保留第1个数据1_1和第3个数据1_3。
90.接着,每个处理单元可以根据两次交换后的第二交换结果进行深度学习模型训练中的计算操作。
91.根据本公开的实施例,该计算操作例如可以包括加法、减法、乘法、cos、sin等计算操作。
92.根据本公开的另一些实施例,在计算操作完成后,还可以根据需要针对计算结果再次进行上述两次数据交换过程,直到完成深度模型训练。
93.根据本公开的实施例,针对计算节点中各处理单元,将各处理单元的训练数据分成多个数据集。然后与计算节点集群中的其他计算节点进行交换,得到第一交换结果。接下来根据各处理单元的第一交换结果在计算节点内部再进行交换,得到第二交换结果。接着利用第二交换结果,对深度学习模型进行训练。利用了同一计算节点内部处理单元间通信带宽较高,而不同计算节点间通信带宽较低的特性,提升了通信效率,缩短了整体训练完成时间。
94.以下将结合图7对本公开提供的训练深度学习模型的装置进行描述。
95.图7示意性示出了根据本公开实施例的训练深度学习模型的装置的框图。
96.如图7所示,装置700包括划分模块710、第一交换模块720、第二交换模块730和训练模块740。
97.划分模块710,用于将训练数据划分为n个第一数据集,其中,n为大于1的整数。
98.第一交换模块720,用于根据n个第一数据集,与当前计算节点所处的计算节点集
群内的目标计算节点进行数据交换,得到第一交换结果。
99.第二交换模块730,用于根据第一交换结果,当前计算节点中的目标处理单元进行数据交换,得到第二交换结果。
100.训练模块740,用于利用第二交换结果,对深度学习模型进行训练。
101.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
102.图8示意性示出了可以用来实施本公开的实施例的示例电子设备800的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
103.如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
104.设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
105.计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如训练深度学习模型的方法。例如,在一些实施例中,训练深度学习模型的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的训练深度学习模型的方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行训练深度学习模型的方法。
106.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
107.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
108.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
109.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
110.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
111.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
112.服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(
″
virtual private server
″
,或简称
″
vps
″
)中,存在的管理难度大,业务扩展性弱的缺陷。该服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
113.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
114.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。