CN116704291A - 分片并行的模型训练方法、装置、设备及存储介质 - Google Patents
分片并行的模型训练方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116704291A CN116704291A CN202310729857.6A CN202310729857A CN116704291A CN 116704291 A CN116704291 A CN 116704291A CN 202310729857 A CN202310729857 A CN 202310729857A CN 116704291 A CN116704291 A CN 116704291A
- Authority
- CN
- China
- Prior art keywords
- matrix
- training
- model
- self
- layer
- 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
Links
- 238000012549 training Methods 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims abstract description 113
- 238000004891 communication Methods 0.000 claims abstract description 142
- 238000012545 processing Methods 0.000 claims abstract description 91
- 230000011218 segmentation Effects 0.000 claims abstract description 57
- 238000003058 natural language processing Methods 0.000 claims abstract description 52
- 239000011159 matrix material Substances 0.000 claims description 315
- 230000009466 transformation Effects 0.000 claims description 61
- 230000007246 mechanism Effects 0.000 claims description 40
- 238000003672 processing method Methods 0.000 claims description 35
- 238000013528 artificial neural network Methods 0.000 claims description 25
- 238000010606 normalization Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 14
- 230000002441 reversible effect Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 7
- 238000003709 image segmentation Methods 0.000 claims description 7
- 239000004973 liquid crystal related substance Substances 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 2
- 238000013473 artificial intelligence Methods 0.000 abstract description 4
- 238000013135 deep learning Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 34
- 238000004364 calculation method Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 17
- 230000001413 cellular effect Effects 0.000 description 9
- 230000001131 transforming effect Effects 0.000 description 8
- 238000006467 substitution reaction Methods 0.000 description 6
- 241000207840 Jasminum Species 0.000 description 4
- 235000010254 Jasminum officinale Nutrition 0.000 description 4
- 241000234435 Lilium Species 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 241000283973 Oryctolagus cuniculus Species 0.000 description 2
- 241000220317 Rosa Species 0.000 description 2
- 241000109329 Rosa xanthina Species 0.000 description 2
- 235000004789 Rosa xanthina Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
Abstract
本公开提供了分片并行的模型训练方法、装置、设备及存储介质。本公开涉及人工智能技术领域,具体为自然语言处理、深度学习、计算机视觉、图像处理等技术领域。具体方案为:在多个计算设备上部署待训练模型;对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;根据切分后的数据在多个计算设备上执行分片并行训练,得到目标模型。根据本公开的方案,采用基于分片并行的模型训练方式,训练长序列模型,能够减少设备之间的通信量,减少跨设备通信时间,提高模型训练的效率。
Description
技术领域
本公开涉及人工智能技术领域,具体为自然语言处理、深度学习、计算机视觉、图像处理等技术领域。
背景技术
纯思法模(Transformer)模型是一种基于注意力机制的神经网络模型。Transformer模型主要由编码器(Encoder)和解码器(Decoder)两部分组成,编码器用于将输入序列转化为固定长度的向量表示,解码器用于将该向量转化为输出序列。在编码器和解码器之间,有一个或多个自注意力机制(Self-Attention)网络,用于捕捉输入序列和输出序列之间的相关性。长序列Transformer模型在训练上面临巨大挑战,现有的训练大模型的策略都普遍存在训练效率较低的问题。
发明内容
本公开提供了一种分片并行的模型训练方法、装置、设备及存储介质。
根据本公开的第一方面,提供了一种分片并行的模型训练方法,包括:
在多个计算设备上部署待训练模型;
对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;
根据切分后的数据在多个计算设备上执行分片并行训练,得到目标模型。
根据本公开的第二方面,提供了一种图像处理方法,包括:
将待处理图像序列数据输入训练后的目标模型,训练后的目标模型根据第一方面的训练方法训练获得;
根据训练后的目标模型,对待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理,得到图像处理结果。
根据本公开的第三方面,提供了一种自然语言处理方法,包括:
将第一类待处理序列输入训练后的目标模型,训练后的目标模型根据第一方面的训练方法训练获得;
根据训练后的目标模型,对第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
根据本公开的第四方面,提供了一种计算机视觉处理方法,包括:
将第二类待处理序列输入训练后的目标模型,训练后的目标模型根据第一方面的训练方法训练获得;
根据训练后的目标模型,对第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
根据本公开的第五方面,提供了一种分片并行的模型训练装置,包括:
部署模块,用于在多个计算设备上部署待训练模型;
切分模块,用于对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;
第一训练模块,用于根据切分后的数据在多个计算设备上执行分片并行训练,得到目标模型。
根据本公开的第六方面,提供了一种图像处理装置,包括:
第一输入模块,用于将待处理图像序列数据输入训练后的目标模型,训练后的目标模型根据第一方面的训练方法训练获得;
图像处理模块,用于根据训练后的目标模型,对待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理,得到图像处理结果。
根据本公开的第七方面,提供了一种自然语言处理装置,包括:
第二输入模块,用于将第一类待处理序列输入训练后的目标模型,训练后的目标模型根据第一方面的训练方法训练获得;
自然语言处理模块,用于根据训练后的目标模型,对第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
根据本公开的第八方面,提供了一种计算机视觉处理装置,包括:
第三输入模块,用于将第二类待处理序列输入训练后的目标模型,训练后的目标模型根据第一方面的训练方法训练获得;
计算机视觉处理模块,用于根据训练后的目标模型,对第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
根据本公开的第九方面,提供了一种电子设备,包括:至少一个处理器;与至少一个处理器通信连接的存储器;存储器存储有可以被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面提供的分片并行的模型训练方法和/或第二方面提供的图像处理方法和/或第三方面提供的自然语言处理方法和/或第四方面提供的计算机视觉处理方法。
根据本公开的第十方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行第一方面提供的分片并行的模型训练方法和/或第二方面提供的图像处理方法和/或第三方面提供的自然语言处理方法和/或第四方面提供的计算机视觉处理方法。
根据本公开的第十一方面,提供了一种计算机程序产品,包括存储在存储介质上的计算机程序,该计算机程序在被处理器执行时实现第一方面提供的分片并行的模型训练方法和/或第二方面提供的图像处理方法和/或第三方面提供的自然语言处理方法和/或第四方面提供的计算机视觉处理方法。
根据本公开的方案,采用基于分片并行的模型训练方式,训练长序列Transformer模型,能够减少设备之间的通信量,减少跨设备通信时间,提高模型训练的效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
图1是根据本公开实施例的Transformer层的简单示意图;
图2是根据本公开实施例的张量并行的流程示意图;
图3是根据本公开实施例的分片并行的模型训练方法的流程示意图;
图4是根据本公开实施例的分片并行的流程示意图;
图5是根据本公开实施例的Reshard通信的示意图;
图6是根据本公开实施例的通信的架构示意图;
图7是根据本公开实施例的设备切片数据的发送示意图;
图8是根据本公开实施例的设备切片数据的接收示意图;
图9是根据本公开实施例的切片数据的多点发送和接收的示意图;
图10是根据本公开实施例的基于分片并行和张量并行的混合并行的流程示意图;
图11是根据本公开实施例的图像处理方法的流程示意图;
图12是根据本公开实施例的图形处理器的通信示意图;
图13是根据本公开实施例的自然语言处理方法的流程示意图;
图14是根据本公开实施例的计算机视觉处理方法的流程示意图;
图15是根据本公开实施例的分片并行的模型训练装置的结构示意图;
图16是根据本公开实施例的图像处理装置的结构示意图;
图17是根据本公开实施例的自然语言处理装置的结构示意图;
图18是根据本公开实施例的计算机视觉处理装置的结构示意图;
图19是根据本公开实施例的分片并行的模型训练方法的场景示意图;
图20是根据本公开实施例的图像处理方法的场景示意图;
图21是根据本公开实施例的自然语言处理方法的场景示意图;
图22是根据本公开实施例的计算机视觉处理方法的场景示意图;
图23是用来实现本公开实施例的分片并行的模型训练方法和/或图像处理方法和/或自然语言处理方法和/或计算机视觉处理方法的电子设备的结构示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在对本公开实施例的技术方案进行介绍之前,先对本公开可能使用到的技术术语和基础模型做进一步说明:
Transformer模型:Transformer模型是一种基于注意力机制的神经网络模型,主要用于自然语言处理(Natural Language Processing,NLP),例如,语言翻译、文本分类等。Transformer模型主要由多个Transformer层(Transformer Layer)组成,每个Transformer层都包含自注意力机制(Self-Attention)网络和前馈神经网络(Feed-Forward Network,FFN)。
自注意力机制:自注意力机制是一种计算每个词与其他词之间的相关性并综合起来的方法。无论词与词在序列中存在多远的距离,该方法都能够捕捉输入序列中各个元素之间的关系。在Transformer模型中,自注意力机制被用于计算输入序列或输出序列中每个元素对其他元素的影响。
前馈神经网络:前馈神经网络是一种基于全连接层(Fully Connected layer,简称FC层)的神经网络,用于对输入序列进行非线性变换。在Transformer模型中,前馈神经网络至少包括两个全连接层。
图1示出了Transformer层的简单示意图,如图1所示,具体计算可以分为以下几步:
1、当前Transformer层的输入是其上一个Transformer层的输出,设当前Transformer层的输入为矩阵A,该矩阵A的大小是[batch_size,seq_len,num_head*head_dim],其中,batch_size表示数据批量(批尺寸)的大小,seq_len表示序列长度,num_head表示Self-Attention的头(head)数,head_dim表示每一个head对应的隐层大小。
2、矩阵A经过归一化层(Layer Norm),得到矩阵B。该矩阵B的大小为[batch_size,seq_len,num_head*head_dim];B=LayerNorm1(A);其中,LayerNorm1表示Self-Attention中的归一化层。
3、对B矩阵分别做三次线性变换,得到三个变换后的矩阵Q、K、V;Q、K、V的大小均为[batch_size,seq_len,num_head,head_dim];Q=Linear1(B);K=Linear2(B);V=Linear3(B);其中,矩阵Q、K和V是矩阵B经过查询-键值对注意力(Query-Key-Value,简称QKV)层后得到的,Linear1表示Self-Attention中对矩阵B进行变换得到矩阵Q的层,Linear2表示Self-Attention中对矩阵B进行变换得到矩阵K的层,Linear3表示Self-Attention中对矩阵B进行变换得到矩阵V的层。
4、通过自注意力计算层(FlashAttention层),实现自注意力计算,得到矩阵C,该矩阵C的大小为[batch_size,seq_len,num_head*head_dim];C=FlashAttention(Q,K,V);其中,FlashAttention表示Self-Attention中的自注意力计算层。
5、做一次线性变换,重新投影矩阵C得到矩阵D,矩阵D的大小为[batch_size,seq_len,num_head*head_dim];D=OutLinear(C);其中,OutLinear表示Self-Attention中的线性变换层。
6、计算残差连接(Residual Add),得到矩阵E,矩阵E作为FFN层的输入,矩阵E的大小为[batch_size,seq_len,num_head*head_dim];E=D+A;其中,E表示Self-Attention的输出矩阵,A表示Self-Attention的输入矩阵,D表示Self-Attention中的线性变换层的输出矩阵。
7、矩阵E经过FFN中的LayerNorm层,得到矩阵F,矩阵F的大小为[batch_size,seq_len,num_head*head_dim];F=LayerNorm2(E);其中,LayerNorm2表示FFN中的归一化层。
8、矩阵F经过FFN中的第一个全连接层,得到矩阵G,矩阵G的大小为[batch_size,seq_len,4*num_head*head_dim];G=FFNLinear1(F);其中,FFNLinear1表示FFN中的第一个全连接层。
9、经过FFN中的第二个全连接层,得到矩阵H,矩阵H的大小为[batch_size,seq_len,num_head*head_dim];H=FFNLinear2(G);其中,FFNLinear2表示FFN中的第二个全连接层。
10、计算残差连接,得到矩阵Y,矩阵Y的大小为[batch_size,seq_len,num_head*head_dim],矩阵Y也是下一个Transformer层的输入;Y=H+E;Y表示当前Transformer层的输出矩阵,H表示FFN中的第二个全连接层的输出矩阵,E表示Self-Attention的输出矩阵。
对于Transformer层,可引入张量模型并行,在没有引入额外的冗余计算的情况下,可以有效降低单计算设备的显存使用。具体的:在Self-Attention结构中,对QKV层的参数“列切分”、对线性变换层(Out Linear)的参数“行切分”,通过AllreduceSum通信得到数学等价的输出结果。FFN结构的张量模型并行与Self-Attention结构类似,对FFNLinear1的参数“列切分”、对FFNLinear2的参数“行切分”,最后通过AllreduceSum通信得到数学等价的输出结果。其中,AllreduceSum是全规约(Allreduce)中的一种操作方式。
图2示出了张量并行的流程示意图,如图2所示,某计算设备的设备内部包括mp个子计算设备(也称内部设备)上,在mp个子计算设备上,实现Transformer层的张量模型并行,因此张量模型并行维度为mp。具体的计算过程分为以下几步:
1、当前Transformer层的输入是其前一个Transformer层的输出,设当前Transformer层的输入为矩阵A,矩阵A的大小是[batch_size,seq_len,num_head*head_dim]。
2、矩阵A经过LayerNorm层,得到矩阵B。矩阵B的大小为[batch_size,seq_len,num_head*head_dim];B=LayerNorm1(A);其中,LayerNorm1表示Self-Attention中的归一化层。
3、对B矩阵分别做三次线性变换,得到三个变换后的矩阵Q、K、V。由于三次Linear的参数矩阵进行了“列切分”,切分为mp份,因此,变换后的矩阵Q、K、V大小均为[batch_size,seq_len,num_head/mp,head_dim];Q=Linear1(B);K=Linear2(B);V=Linear3(B);其中,矩阵Q、K和V是矩阵B经过QKV层后得到的,Linear1表示Self-Attention中对矩阵B进行变换得到矩阵Q的层,Linear2表示Self-Attention中对矩阵B进行变换得到矩阵K的层,Linear3表示Self-Attention中对矩阵B进行变换得到矩阵V的层。
4、通过FlashAttention层,实现自注意力计算,得到矩阵C,矩阵C的大小为[batch_size,seq_len,num_head/mp*head_dim];C=FlashAttention(Q,K,V);其中,FlashAttention表示Self-Attention中的自注意力计算层。
5、做一次线性变换层,重新投影矩阵C得到矩阵D'。由于Outlinear的参数矩阵进行了“行切分”,切分为mp份,因此,变换后得到的矩阵D′的大小为[batch_size,seq_len,num_head*head_dim];D′=OutLinear(C);其中,OutLinear表示Self-Attention中的线性变换层。
6、mp个子计算设备之间进行AllreduceSum通信,恢复得到原始D矩阵;D=AllreduceSum(D′);AllreduceSum表示Allreduce求和操作;
7、计算残差连接,得到矩阵E,E将作为FFN的输入。E的大小为[batch_size,seq_len,num_head*head_dim];其中,E=D+A;E表示Self-Attention的输出矩阵,A表示Self-Attention的输入矩阵,D表示Self-Attention中的线性变换层的输出矩阵。
8、矩阵E经过FFN结构中的LayerNorm层,得到矩阵F。矩阵F的大小为[batch_size,seq_len,num_head*head_dim];F=LayerNorm2(E);其中,LayerNorm2表示FFN中的归一化层。
9、矩阵F经过FFN结构中的第一个全连接层,得到矩阵G。由于FFNLinear1的参数矩阵进行了“列切分”,切分为mp份,因此,变换后得到G大小为[batch_size,seq_len,4*num_head*head_dim/mp];G=FFNLinear1(F);其中,FFNLinear1表示FFN中的第一个全连接层。
10、矩阵G经过FFN结构中的第二个全连接层,得到矩阵H。由于FFNLinear2的参数矩阵进行了“行切分”,切分为mp份,因此,变换后得到矩阵H′,矩阵H′的大小为[batch_size,seq_len,num_head*head_dim];H′=FFNLinear2(G)其中,FFNLinear2表示FFN中的第二个全连接层。
11、mp个子计算设备之间AllreduceSum通信,恢复得到原始矩阵H;H=AllreduceSum(H′);AllreduceSum表示Allreduce求和操作;
12、计算残差连接,得到矩阵Y。矩阵Y的大小为[batch_size,seq_len,num_head*head_dim],同时矩阵Y也是下一个Transformer层的输入;Y=H+E;Y表示当前Transformer层的输出矩阵,H表示FFN中的第二个全连接层的输出矩阵,E表示Self-Attention的输出矩阵。
在张量模型并行下,数据类型为浮点数格式(Brain Float16,简称BF16)/半精度浮点数(Half-precision floating-point,简称FP16),一个Transformer层计算需要AllreduceSum4次,即前向2次,反向2次,总的通信量为:8*batch_size*seq_len*num_head*head_dim字节,总线带宽为Bw,则AllreduceSum通信时间为:
当张量并行维度mp很大时,(mp-1)/mp≈1,则通信时间T:
可以看出,通信时间T正比于序列长度seq_len,而与mp的大小无关,在处理超长序列Transformer模型下,序列长度seq_len很大,通信时间T占比过高。同时,无法通过增加张量模型并行维度mp,减少通信时间。
本公开为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,提出了一种基于分片并行的模型训练方法。通过切分序列长度,减少设备间通信量,使通信时间与分片并行维度成反比,同时不增加冗余计算。如此,能够减少长序列跨设备通信时间,提高模型训练的效率。
本公开实施例提供了一种分片并行的模型训练方法,图3是根据本公开实施例的分片并行的模型训练方法的流程示意图,该分片并行的模型训练方法可以应用于分片并行的模型训练装置。该分片并行的模型训练装置位于电子设备上。该电子设备包括但不限于固定设备和/或移动设备。例如,固定设备包括但不限于服务器,服务器可以是云服务器或普通服务器。例如,移动设备包括但不限于:手机、平板电脑等。在一些可能的实现方式中,该分片并行的模型训练方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图3所示,该分片并行的模型训练方法包括:
S301:在多个计算设备上部署待训练模型;
S302:对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;
S303:根据切分后的数据在多个计算设备上执行分片并行训练,得到目标模型。
其中,分片是指:对输入变量中的序列长度变量(seq_len)进行切分。
本公开实施例中,该多个计算设备可以是多个服务器或多个终端设备。例如,多个计算设备可以是多个图像处理设备;又例如,多个计算设备可以是多个自然语言处理设备;再例如,多个计算设备可以是多个计算机视觉处理设备。以上仅为示例性说明,不作为多个计算设备的全部可能的类型的限定,只是这里不做穷举。
本公开实施例中,该待训练模型可以是Transformer模型,具体可以是基于长序列的Transformer模型。这里,长序列不限于文本长序列、语音长序列、图像长序列、视频长序列等。以上仅为示例性说明,不作为长序列的全部可能的类型的限定,只是这里不做穷举。
本公开实施例中,多个计算设备之间能够进行通信,该通信方式可以包括跨设备通信。示例性地,计算设备1将QKV层输出的矩阵Q中的至少部分数据传出给计算设备2;将QKV层输出的矩阵K中的至少部分数据传出给计算设备2,将其QKV层输出的矩阵V中的至少部分数据传出给计算设备2。同理,计算设备2也可以将QKV层输出的矩阵Q的部分数据传出给计算设备1,将QKV层输出的矩阵K传出中的至少部分数据给计算设备1,将QKV层输出的矩阵V中的至少部分数据传出给计算设备1。
本公开实施例中,该在多个设备之间执行分片并行训练的过程中,需要计算设备与计算设备间进行通信。优选地,计算设备与计算设备间采用的通信方式可以是Reshard通信。该Reshard通信是一种基本通信方法。同时,Reshard也是一种基本通信算子。该Reshard通信可以通过调用一些通信库,执行通信。
本公开实施例中,多个计算设备(记为Device0、Device1、…、Device n)。这里的计算设备可以理解为节点,具体可以是服务器、终端计算设备等。在Device0、Device1、…、Device n之间,执行分片并行训练。另外,每个计算设备可包括多个子计算设备(也称内部设备),比如,Device0可以包括Device01、Device02、Device03三个子计算设备。
本公开实施例中,该目标模型的功能取决于输入序列的内容及训练需求。例如,当输入序列的内容为文本时,该目标模型为文本处理模型。又例如,当输入序列的内容为语音时,该目标模型为语音处理模型。再例如,在输入序列的内容为图像时,该目标模型为图像处理模型。再例如,当输入序列的内容为视频时,该目标模型为视频处理模型。以上仅为示例性说明,不作为目标模型的全部可能的功能的限定,只是这里不做穷举。
本公开实施例中,输入变量包括多个变量,例如:batch_size,seq_len和num_head*head_dim。也就是说,可从batch_size,seq_len和num_head*head_dim三个维度上表示输入变量;其中,batch_size表示数据批量的大小,seq_len表示序列长度,num_head*head_dim表示隐层大小;num_head表示Self-Attention的head数,head_dim表示每一个head对应的隐层大小。
本公开实施例中,该切分后的数据可理解为总序列长度被切分成的多个子序列长度。
本公开实施例中,若存在sep个计算设备,则将序列长度变量seq_len分成sep份。这里,切分方式可以是等量切分,也可以是非等量切分。该切分方式可根据用户需求或设备性能进行设定或调整。
本公开实施例中,若待训练模型包括N个Transformer层,分别记为第1个Transformer层、第2个Transformer层、第3个Transformer层、…、第N个Transformer层。具体地,第2个Transformer层的输入是第1个Transformer层的输出,以此类推,第N个Transformer层的输入是第N-1个Transformer层的输出。
若sep=3、seq_len=[x1x2x3x4x5x6x7x8x9x10x11x12x13],将seq_len分成3份,具体可以分成[x1x2x3x4]、[x5x6x7x8]和[x9x10x11x12x13]共3份,将[x1x2x3x4]作为Device0上待训练模型的第1个Transformer层的输入;将[x5x6x7x8]作为Device1上待训练模型的第1个Transformer层的输入;将[x9x10x11x12x13]作为Device2上待训练模型的第1个Transformer层的输入。
若在sep个计算设备上实现分片并行,则分片并行的维度为sep。图4示出了分片并行的流程示意图,如图4所示,具体的计算过程分为以下几步:
1、当前Transformer层的输入是其上一个Transformer层的输出,设当前Transformer层的输入为矩阵A,矩阵A的大小是[batch_size,seq_len/sep,num_head*head_dim]。
2、经过LayerNorm层,得到矩阵B。矩阵B的大小为[batch_size,seq_len/sep,num_head*head_dim];B=LayerNorm1(A);其中,LayerNorm1表示Self-Attention中的归一化层。
3、对B矩阵分别做三次线性变换,得到三个变换后的矩阵Q′、K′、V′。矩阵Q′、K′、V′的矩阵大小均为[batch_size,seq_len/sep,num_head,head_dim];Q′=Linear1(B);K′=Linear2(B);V′=Linear3(B);其中,矩阵Q′、K′、V′是矩阵B经过QKV层后得到的,Linear1表示Self-Attention中对矩阵B进行变换得到矩阵Q′的层,Linear2表示Self-Attention中对矩阵B进行变换得到矩阵K′的层,Linear3表示Self-Attention中对矩阵B进行变换得到矩阵V′的层。
4、由于FlashAttention层需要完整的seq_len,因此矩阵Q′、K′、V′需要通过计算设备间通信,恢复正常的seq_len维度,分别得到矩阵Q、K、V,矩阵Q、K、V的维度均为[batch_size,seq_len,num_head/sep,head_dim]。其中,Q=Reshard(Q′);K=Reshard(K′);V=Reshard(V′);其中,Reshard()表示重切片变换。
5、通过FlashAttention层,实现自注意力计算,得到矩阵C′,矩阵C′的大小为[batch_size,seq_len,num_head/sep,head_dim];其中,C′=FlashAttention(Q,K,V);FlashAttention表示Self-Attention中的自注意力计算层。
6、进行Reshard变换,实现seq_len在sep个计算设备上切分,得到矩阵C,矩阵C的大小为[batch_size,seq_len/sep,num_head,head_dim];其中,C=Reshard(C′);其中,Reshard()表示重切片变换。
7、做一次线性变换层,重新投影矩阵C得到矩阵D。矩阵D的大小为[batch_size,seq_len/sep,num_head*head_dim];其中,D=OutLinear(C);其中,OutLinear表示Self-Attention中的线性变换层。
8、计算残差连接,得到矩阵E,矩阵E作为FFN层的输入,矩阵E的大小为[batch_size,seq_len/sep,num_head*head_dim];E=D+A;其中,E表示Self-Attention的输出矩阵,A表示Self-Attention的输入矩阵,D表示Self-Attention中的线性变换层的输出矩阵。
9、矩阵E经过FFN中的LayerNorm层,得到矩阵F。矩阵F的大小为[batch_size,seq_len/sep,num_head*head_dim];其中,F=LayerNorm2(E);其中,LayerNorm2表示FFN中的归一化层。
10、矩阵F经过FFN结构中的第一个全连接层,得到矩阵G。矩阵G的大小为[batch_size,seq_len/sep,4*num_head*head_dim];G=FFNLinear1(F);其中,FFNLinear1表示FFN中的第一个全连接层。
11、矩阵G经过FFN结构中的第二个全连接层,得到矩阵H,矩阵H的大小为[batch_size,seq_len/sep,num_head*head_dim];其中,H=FFNLinear2(G);FFNLinear2表示FFN中的第二个全连接层。
12、计算残差连接,得到矩阵Y。矩阵Y的大小为[batch_size,seq_len/sep,num_head*head_dim],同时矩阵Y也是下一个Transformer层的输入;Y=H+E;Y表示当前Transformer层的输出矩阵,H表示FFN中的第二个全连接层的输出矩阵,E表示Self-Attention的输出矩阵。
13、由于分片并行中,模型的参数没有切分,因此,在反向计算结束后,需要在sep个计算设备上同步模型参数的梯度。
本公开实施例的技术方案,相对于张量并行训练方式,采用基于分片并行的模型训练方式,训练长序列Transformer模型,能够减少设备之间的通信量,减少跨设备通信时间,提高模型训练的效率。
本公开实施例中,对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据,包括:将用于待训练模型的训练样本数据,以序列长度至少部分等分的方式进行切分,得到切分后的数据。其中,切分后的数据为训练样本数据中的部分数据块。
其中,该训练样本数据可以表示为长序列;将长序列进行切分,得到切分后的多个子序列。其中,至少部分等分是指至少有两个子序列的长度相同。
本公开实施例中,该训练样本数据可以包括于图像样本数据、视频样本数据、音频样本数据、文本样本数据等。以上仅为示例性说明,不作为对训练样本数据包括的全部可能的限定,只是这里不做穷举。
本公开实施例中,该切分方式可以包括等分的切分方式,也可以包括非等分的切分方式。
本公开实施例的技术方案,将用于待训练模型的训练样本数据,以序列长度至少部分等分的方式进行切分,得到切分后的数据。如此,通过将长序列进行切分,将切分后的数据作为Transformer层的输入,能够减少长序列跨设备通信量,进而减少跨设备通信时间,提高模型训练的效率。
在一些实施例中,该分片并行的模型训练方法还包括:基于切分后的数据在多个计算设备之间进行跨设备通信。
这里,该跨设备通信可以包括发送数据和接收数据。
图5示出了Reshard通信的示意图,如图5所示,以计算设备0(记为Device0)、计算设备1(记为Device1),计算设备0和计算设备1进行Reshard通信。具体地,Device0从Device1获取了[8、9、12、13];Device0基于从Device1获取的[8、9、12、13]生成新的矩阵[0、1、4、5、8、9、12、13]。Device1从Device0获取了[2、3、6、7];Device0基于从Device1获取的[2、3、6、7]生成新的矩阵[2、3、6、7、10、11、14、15]。由上述示例可知,新生成的矩阵相较于原矩阵,矩阵的形状发生了变化,但是元素的个数没发生变化。因此,对于每一个设备而言,可以从不同的设备获取不同的数据,结合自身数据,重新生成新的矩阵。即基于Q′重新生成了Q;基于K′重新生成了K;基于V′重新生成了V。
本公开实施例中,该基于切分后的数据在多个计算设备之间进行跨设备通信可以包括:向sep个计算设备分发sep份数据;该sep个计算设备进行第一次Reshard通信,将seq_len/sep恢复成seq_len;该sep个计算设备进行第二次Reshard通信,将seq_len重新切分seq_len/sep。
图6示出了通信的架构示意图,如图6所示,计算设备0(记为Device0)、计算设备1(记为Device 1)、计算设备2(记为Device 2)、设备3(记为Device 3)。计算设备0分别与计算设备1、计算设备2和计算设备3进行通信。其中,各计算设备可以是服务器、终端,也可以是终端与服务器之间,还可以是内部设置的处理器,该处理器可以是图形处理器(GraphicsProcessing Unit,GPU),也可以是中央处理器(Central Processing Unit,CPU),还可以是微处理器。GPU可以是电脑显卡里的处理器,由主板连接设备、监视器连接设备、处理器和内存组成,用于将CPU送来的图像信号经过处理再输送到显示器上。具体地,可以应用于将2维或3维图形的生成与图像处理。需要说明的是,计算设备的数量可根据需求进行设定或调整。
图7示出了设备切片数据的发送示意图,如图7所示,计算设备0(记为Device 0)、计算设备1(记为Device 1)、计算设备2(记为Device 2)、计算设备3(记为Device 3)。计算设备0将数据切分成4份,分别为横线方块、斜线方块、竖线方块和空白方块。计算设备0将斜线方块中的数据发送给计算设备1;计算设备0将竖线方块中的数据发送给计算设备2;计算设备0将空白方块中的数据发送给计算设备3。
图8示出了设备切片数据的接收示意图,如图8所示,计算设备0(记为Device 0)、计算设备1(记为Device 1)、计算设备2(记为Device 2)、计算设备3(记为Device 3)。计算设备0接收计算设备1发送的斜线方块的数据;计算设备0接收计算设备2发送的竖线方块的数据;计算设备0接收计算设备3发送的空白方块的数据。
图9示出了切片数据的多点发送和接收的示意图,如图9所示,计算设备0(记为Device 0)、计算设备1(记为Device 1)、计算设备2(记为Device 2)、计算设备3(记为Device 3)。计算设备0将横线方块的数据发送给计算设备1、计算设备2和计算设备3;计算设备1将斜线方块的数据发送给计算设备0、计算设备2和计算设备3;计算设备2将横线方块的数据发送给计算设备0、计算设备1和计算设备3;计算设备3将空白方块的数据发送给计算设备0、计算设备1和计算设备2。计算设备0、计算设备1、计算设备2和计算设备3分别接收其他计算设备发送的数据。
基于图6至图9所示的示意图,对涉及的多种数据通信形式做如下示例性解释:
广播:当一台服务器计算完成了自己部分的参数数据,在分布式训练中会将自己这部分数据未切分同时发送给其他所有服务器,这种操作方式就叫做广播。
散射:当一台服务器计算完成自己部分的参数数据,但服务器上全部的参数数据过大,可以将这台服务器上的数据切分成几个同等大小的数据块(buffer),再按照序列(rank index)向其他服务器发送其中的一个数据块,这就叫做散射。上述图7、图8和图9均可应用该种通信方式。
聚集:将其他服务器上的数据块直接拼接到一起,根服务器(Root Rank)获取这些数据。
全规约:对所有服务器上的数据做一个规约操作(如最大值、求和),再将数据写入根服务器或具体是服务器的内存中。上述分片并行主要涉及AllReduce通信。
本公开实施例的技术方案,基于切分后的数据在多个计算设备之间进行跨设备通信,能够减少跨设备通信的时间,有助于提高并行训练的效率。
在一些实施例中,待训练模型包括:至少一个Transformer层,每个Transformer层包括通过残差连接级联在一起的自注意力机制网络和前馈神经网络。
本公开实施例中,残差连接是指:将Self-Attention的输出作为FFN的输入。
本公开实施例中,自注意力机制网络也称Self-Attention模块或Self-Attention结构;前馈神经网络也称FFN模块或FFN结构。
本公开实施例中,该Self-Attention可以包括:一个归一化层(LayerNorm1)、QKV层、自注意力计算层(FlashAttention)和线性变换层(OutLinear)。该FFN包括:一个归一化层(LayerNorm2)和两个全连接层(FFNLinear1+FFNLinear2)。
本公开实施例的技术方案,基于待训练模型的结构可以得到高性能的目标模型,有助于提高目标模型在图像处理、自然语言处理和计算机视觉处理等领域应用的准确性。
在一些实施例中,该分片并行的模型训练方法还包括:通过在Self-Attention中执行第一次重切片(Reshard)变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度。
本公开的实施例中,输入变量中有3个维度变量,第1个维度为批处理的大小(用batch_size表示),第2个维度为序列长度(用seq_len表示),第3个维度为模型参数(用num_head*head_dim表示)。
本公开的实施例中,原始维度是序列长度变量未被切分之前的维度。seq_len/sep表示切分后的序列长度变量维度,seq_len表示序列长度变量的原始维度。
本公开的实施例中,第一次Reshard变换是将被切分的seq_len,即将seq_len/sep恢复成seq_len;第二次Reshard变换是将恢复后的seq_len重新切分成seq_len/sep。
以图4所示分片并行流程图为例,首先,输入Self-Attention的矩阵A表示为[batch_size,seq_len/sep,num_head*head_dim]。其中,batch_size表示批处理的大小,seq_len表示序列长度,num_head表示Transformer层中自注意力层的头数,head_dim表示每一个头对应的隐藏层的大小,sep表示节点数量。其次,进行第一次Reshard变换,输入为Q′=[batch_size,seq_len/sep,num_head,head_dim];K′=[batch_size,seq_len/sep,num_head,head_dim];V′=[batch_size,seq_len/sep,num_head,head_dim]。再次,Q′、K′、V′通过设备间通信,恢复正常的seq_len维度,分别得到矩阵Q、K、V。具体地,Q=[batch_size,seq_len,num_head/sep,head_dim];K=[batch_size,seq_len,num_head/sep,head_dim];V=[batch_size,seq_len,num_head/sep,head_dim]。再次,通过FlashAttention层,实现自注意力计算,得到矩阵C′,C′的大小为[batch_size,seq_len,num_head/sep,head_dim]。最后,第二次Reshard变换,输入为C′=[batch_size,seq_len,num_head/sep,head_dim];根据C=Reshard(C′)进行第二次Reshard变换,实现seq_len在sep个计算设备上切分,得到矩阵C,矩阵C的大小为[batch_size,seq_len/sep,num_head,head_dim]。
本公开实施例的技术方案,为了满足FlashAttention层的输入要求,将切分后的序列长度变量维度恢复成序列长度变量的原始维度,能够避免出现计算错误,提高训练的精确度。
在一些实施例中,该分片并行的模型训练方法还包括:通过在自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分,自注意力机制网络包括自注意力计算层。
本公开实施例的技术方案,通过在自注意力机制网络中执行第二次Reshard变换,将FlashAttention层输出的矩阵中的序列长度变量重新切分。如此,通过将长序列进行切分,能够减少长序列跨设备的通信时间,提高模型训练的效率。
在一些实施例中,通过在自注意力机制网络中执行第一次Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度,包括:通过第一次Reshard变换,基于第三矩阵得到第四矩阵;其中,第四矩阵中序列长度变量的维度为序列长度变量的原始维度,第三矩阵是第二矩阵经过QKV层后得到的,第二矩阵是对输入自注意力机制网络的归一化层的第一矩阵中的序列长度变量进行切分得到的。
在一些实施例中,对输入自注意力机制网络的归一化层的第一矩阵(记为矩阵A)中的序列长度变量进行切分,得到第二矩阵(记为矩阵B)。该第二矩阵经过QKV层后,得到第三矩阵(矩阵Q′K′V′)。通过计算设备间通信获取各设备的第三矩阵(矩阵Q′K′V′)。分别对各计算设备的第三矩阵(矩阵Q′K′V′)执行第一次Reshard变换,得到各计算设备对应的第四矩阵(矩阵QKV),其中,第四矩阵中序列长度变量的维度为序列长度变量的原始维度。
本公开实施例的技术方案,通过第一次Reshard,将序列长度变量的维度恢复到原始维度,以满足下一层输入的条件,能够避免在跨设备通信中出现错误,有助于降低并行通信的时间成本。
在一些实施例中,通过在自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分,包括:通过第二次Reshard变换,基于自注意力计算层输出的第五矩阵得到第六矩阵,其中,第五矩阵中序列长度变量的维度为序列长度变量的原始维度。
本公开的实施例中,通过计算设备间通信获取各计算设备的第五矩阵(矩阵C′);其中,第五矩阵中序列长度变量的维度为序列长度变量的原始维度。分别对各计算设备的第五矩阵执行第二次Reshard变换,得到各计算设备对应的第六矩阵(矩阵C),其中,第六矩阵中序列长度变量的维度为将序列长度变量切分后的维度。
本公开实施例的技术方案,通过第二次Reshard变换,基于自注意力计算层输出的第五矩阵得到第六矩阵。如此,将恢复为原始维度的序列长度变量进行重新切分,有助于减少跨设备通信的时间,提高模型训练的效率。
在一些实施例中,分片并行的模型训练方法还包括:反向计算过程中或者反向计算结束后,在各设备上同步待训练模型的参数梯度。
本公开的实施例中,若待训练模型包括N个Transformer层,在第N个Transformer层结束后,才进行反向计算。反向计算包括但不限于计算分类与标签的损失、计算预测词与标签词的损失等。
本公开的实施例中,分片并行训练中,模型参数不会进行切分。
示例性地,以FFNlinear1为例,若sep个设备同步各自的FFNlinear1的参数的梯度,那么,将sep个设备对应的FFNlinear1的参数的梯度相加,并除以sep,可得到目标模型的FFNlinear1的参数。
本公开实施例的技术方案,反向计算过程中或者反向计算结束后,在各设备上同步待训练模型的参数梯度,能够避免冗余计算,有助于降低并行训练的时间成本,从而有助于提高并行训练的效率。反向计算过程中在各设备上同步待训练模型的参数梯度,效果会更佳。
在一些实施例中,对部署于多个计算设备上的待训练模型进行训练,包括:在多个计算设备之间执行分片并行训练;以及在多个计算设备各自的设备内部执行张量并行训练。
本公开的实施例中,计算设备与计算设备之间,进行分片并行训练;每个计算设备的设备内部,执行张量并行训练。
比如,在Device0的设备内部,具体可以在Device01、Device02、Device03等子计算设备,在Device01、Device02、Device03等子计算设备之间执行张量并行训练。
本公开实施例中,该张量并行中的模型参数变量是待训练模型中模型的自身参数,具体包括归一化层、QKV线性层、FlashAttention层等各层的参数。
本公开实施例的技术方案,通过分片并行和张量并行进行混合训练,能够不增加计算量和样本数量,有助于减少冗余计算,从而有助于减少长序列跨设备通信时间,提高并行训练的效率。
在一些实施例中,根据预训练方式对部署于多个计算设备上的待训练模型进行训练,包括:构造第一通信组和第二通信组,其中,第一通信组用于负责分片并行通信,第二通信组用于负责张量并行通信,第一通信组和第二通信组能同时使用;
其中,在多个计算设备之间执行分片并行训练,包括:
基于第一通信组在多个计算设备之间执行分片并行训练;在反向计算过程中或在反向计算结束后,利用第一通信组在各计算设备上同步目标模型的参数梯度。
其中,在多个计算设备各自的设备内部进行张量并行训练,包括:
基于第二通信组在多个计算设备各自的设备内部执行张量并行训练。
在一些实施例中,该多个计算设备之间可以形成第一通信组(也称SeP通信组),多个计算设备之间采用Reshard通信。
在一些实施例中,每个计算设备的多个内部设备之间可以形成第二通信组(也称MP通信组),多个内部设备之间采用AllreduceSum通信。
在一些实施例中,该第一通信组和第二通信组互不影响,两个通信组可以同时使用。设利用sep个计算设备训练待训练模型,每个计算设备包括mp个内部设备,则该第一通信组的并行度为sep;该第二通信组的并行度为mp。
在一些实施例中,张量并行是不需要同步模型的参数梯度。分片并行是需要同步模型的参数梯度。在实际应用中,张量并行和分片并行互不影响。
图10示出了基于分片并行和张量并行的混合并行的流程示意图,如图10所示,具体的计算过程分为以下几步:
1、当前Transformer层的输入是其上一个Transformer层的输出,设当前Transformer层的输入为矩阵A,矩阵A的大小是[batch_size,seq_len/sep,num_head*head_dim]。
2、经过LayerNorm层,得到矩阵B。矩阵B的大小为[batch_size,seq_len/sep,num_head*head_dim];B=LayerNorm1(A);其中,LayerNorm1表示Self-Attention中的归一化层。
3、对B矩阵分别做三次线性变换,三个Linear的参数矩阵分别在MP通信组进行了“列切分”,切分为mp份,因此,得到三个变换后的矩阵Q′,K′,V′,矩阵Q′,K′,V′的大小均为[batch_size,seq_len/sep,num_head/mp,head_dim];Q′=Linear1(B);K′=Linear2(B);V′=Linear3(B);其中,矩阵Q′、K′和V′是矩阵B经过QKV层后得到的,Linear1表示Self-Attention中对矩阵B进行变换得到矩阵Q′的层,Linear2表示Self-Attention中对矩阵B进行变换得到矩阵K′的层,Linear3表示Self-Attention中对矩阵B进行变换得到矩阵V′的层。
4、由于FlashAttention层需要完整的seq_len,因此Q′、K′、V′需要通过SeP通信组间通信,恢复正常的seq_len维度,分别得到矩阵Q、K、V,矩阵Q、K、V的维度均为[batch_size,seq_len,num_head/(sep*mp),head_dim];Q=Reshard(Q′);K=Reshard(K′);V=Reshard(V′);其中,Reshard()表示重切片变换。
5、通过FlashAttention层,实现自注意力计算,得到矩阵C′,矩阵C′的大小为[batch_size,seq_len,num_head/(sep*mp),head_dim];C′=FlashAttention(Q,K,V);FlashAttention表示Self-Attention中的自注意力计算层。
6、在SeP通信组进行Reshard变换,实现seq_len在sep个设备上切分,得到矩阵C,矩阵C的大小为[batch_size,seq_len/sep,num_head/mp,head_dim];C=Reshard(C′);其中,Reshard()表示重切片变换。
7、做一次线性变换层,重新投影矩阵C得到矩阵D′。由于Outlinear的参数矩阵在MP通信组进行了“行切分”,切分为mp份,因此,变换后得到的D′大小为[batch_size,seq_len/sep,num_head*head_dim];D′=OutLinear(C);其中,OutLinear表示Self-Attention中的线性变换层。
8、MP通信组之间AllreduceSum通信,恢复原始矩阵D,其大小为[batch_size,seq_len/sep,num_head*head_dim];D=AllreduceSum(D′);AllreduceSum表示Allreduce求和操作。
9、计算残差连接,得到矩阵E,矩阵E作为FFN层的输入,矩阵E的大小为[batch_size,seq_len/sep,num_head*head_dim];E=D+A;其中,E表示Self-Attention的输出矩阵,A表示Self-Attention的输入矩阵,D表示Self-Attention中的线性变换层的输出矩阵。
10、矩阵E经过FFN中的LayerNorm层,得到矩阵F。矩阵F的大小为[batch_size,seq_len/sep,num_head*head_dim];其中,F=LayerNorm2(E);其中,LayerNorm2表示FFN中的归一化层。
11、矩阵F经过FFN结构中的第一个全连接层,得到矩阵G。由于FFNLinear1的参数矩阵进行了“列切分”,切分为mp份,因此,变换后得到G的大小为[batch_size,seq_len/sep,4*num_head*head_dim/mp];其中,G=FFNLinear1(F);其中,FFNLinear1表示FFN中的第一个全连接层。
12、矩阵G经过FFN结构中的第二个全连接层,得到矩阵H。由于FFNLinear2的参数矩阵进行了“行切分”,切分为mp份,因此,变换后得到矩阵H′,矩阵H′的大小为[batch_size,seq_len/sep,num_head*head_dim];H′=FFNLinear2(G);FFNLinear2表示FFN中的第二个全连接层。
13、MP通信组之间进行AllreduceSum通信,恢复得到原始矩阵H,H的大小为[batch_size,seq_len/sep,num_head*head_dim];H=AllreduceSum(H′);AllreduceSum表示Allreduce求和操作。
14、计算残差连接,得到矩阵Y。矩阵Y的大小为[batch_size,seq_len/sep,num_head*head_dim],同时矩阵Y也是下一个Transformer层的输入;Y=H+E;Y表示当前Transformer层的输出矩阵,H表示FFN中的第二个全连接层的输出矩阵,E表示Self-Attention的输出矩阵。
15、由于分片并行中,模型的参数没有切分,因此在反向结束后,需要在SeP通信组上同步模型的参数梯度。
本公开实施例的技术方案,在多个计算设备之间执行分片并行训练;并且,在多个计算设备各自的设备内部执行张量并行训练。如此,利用计算设备内带宽高,计算设备间带宽低的特点,在计算设备内张量并行,计算设备间分片并行,从而实现张量并行和分片并行的混合训练,能够有效降低通信时间,提高并行训练的效率。
在一些实施例中,在多个计算设备之间执行分片并行训练;以及在多个计算设备各自的设备内部执行张量并行训练,包括:在自注意力机制网络中,通过在自注意力机制网络中执行第一次Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度;通过在自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分;以及
对经过QKV层的矩阵中的模型参数变量进行列切分;对经过自注意力机制网络的线性变换层中的模型参数变量进行行切分;在前馈神经网络中,对经过前馈神经网络的第一个全连接层的矩阵中的模型参数变量进行列切分;对经过前馈神经网络的第二个全连接层的矩阵中的模型参数变量进行行切分。
在一些实施例中,在多个计算设备之间执行分片并行训练;以及在多个计算设备各自的设备内部执行张量并行训练,包括:对输入自注意力机制网络的归一化层的第一矩阵(记为矩阵A)中的序列长度变量进行切分,得到第二矩阵(记为矩阵B);通过第二通信组对经过QKV层的第二矩阵中的模型参数变量进行列切分,得到第三矩阵(记为矩阵Q′、K′、V′);其中,Q′、K′、V′大小均为[batch_size,seq_len/sep,num_head/mp,head_dim];通过第一通信组,将各计算设备的第三矩阵变换成各计算设备对应的第四矩阵(记为矩阵Q、K、V),其中,第四矩阵中序列长度变量的维度为序列长度变量的原始维度(Q,K,V=[batch_size,seq_len,num_head/(sep*mp),head_dim]);利用第二通信组获取通各计算设备的第五矩阵(记为矩阵C′);通过第一通信组,将各计算设备的第五矩阵(记为矩阵C),变换成各计算设备对应的第六矩阵;其中,第五矩阵中序列长度变量的维度为序列长度变量的原始维度,第六矩阵中序列长度变量的维度为切分之后的维度;通过第二通信组对经过线性变换层(OutLinear)中的模型参数变量进行行切分,得到第七矩阵(记为矩阵D′,矩阵D′的大小为[batch_size,seq_len/sep,num_head*head_dim]);结合第二通信组在每个计算设备的设备内部之间通信,基于第七矩阵得到第八矩阵(记为矩阵D,矩阵D的大小为[batch_size,seq_len/sep,num_head*head_dim];其中,D=AllreduceSum(D'))。
在一些实施例中,在多个计算设备之间执行分片并行训练;以及在多个计算设备各自的设备内部执行张量并行训练,包括:在前馈神经网络中,对输入前馈神经网络的归一化层的第九矩阵(记为矩阵E)进行处理,得到第十矩阵(记为矩阵F),第九矩阵是基于第八矩阵(记为矩阵D)和第一矩阵(记为矩阵A)得到的;通过第二通信组,对经过前馈神经网络的第一个全连接层的第十矩阵中的模型参数变量进行列切分,得到第十一矩阵(记为矩阵G);对经过前馈神经网络的第二个全连接层的第十一矩阵中的模型参数变量进行行切分,得到第十二矩阵(记为矩阵H′);结合第二通信组在每个计算设备的设备内部之间通信,基于第十二矩阵得到第十三矩阵(记为矩阵H);基于第十三矩阵(记为矩阵H)和第九矩阵(记为矩阵E)得到第十四矩阵(记为矩阵Y)。
在分片并行训练下,数据类型为BF16/FP16,一个Transformer层计算需要Reshard8次(前向4次,反向4次),总的通信量为:16*batch_size*seq_len*num_head*head_dim/sep字节,总线带宽为Bw,则Reshard通信时间为:
由于需要额外梯度AllreduceSum同步,梯度类型为FP32,梯度总公共48*num_head2*head_dim2个字节,则通信时间为:
但是,由于梯度同步是可以和反向计算覆盖(overlap),同时T2与序列长度seq_len无关,因此仅考虑T1情况下,增加分片并行维度sep,有效降低通信时间。
本公开实施例的技术方案,能够通过张量并行和分片并行进行混合训练,有助于避免冗余计算,从而减少长序列或超长序列跨设备通信时间,提高并行训练的效率。
本公开实施例提供了一种图像处理方法,图11是根据本公开实施例的图像处理方法的流程示意图,该图像处理方法可以应用于图像处理装置,该图像处理装置可以应用于电子设备。该电子设备包括但不限于固定设备和/或移动设备。例如,固定设备包括但不限于服务器,服务器可以是云服务器或普通服务器。例如,移动设备包括但不限于手机、平板电脑等。在一些可能的实现方式中,该图像处理方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图11所示,该图像处理方法包括:
S1101:将待处理图像序列数据输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;
S1102:根据训练后的目标模型,对待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理,得到图像处理结果。
在一些实施例中,该待处理图像序列数据可以从图像数据源获取;也可以从网页上进行抓取,得到待处理图像序列数据;还可以是截取视频中的多帧图像,得到待处理图像序列数据。
图12示出了图形处理器的通信示意图,如图12所示,图形处理器0(记为GPU0)、图形处理器1(记为GPU1)、图形处理器2(记为GPU2)、图形处理器3(记为GPU3)。图形处理器0将数据分发给图形处理器1、图形处理器2和图形处理器3。
本公开的实施例中,当目标模型用于图像识别时,目标模型为图像识别模型。具体地,获取多个待识别图像,得到待识别图像序列数据,将待识别图像序列数据输入图像识别模型,得到图像识别模型输出的待识别图像的识别结果。示例性地,获取多个待识别图像,得到待识别图像序列数据;该待识别图像序列数据为一张“玫瑰花”、“百合花”、“茉莉花”的图像,将该待识别图像序列数据输入至图像识别模型,得到识别结果玫瑰花、百合花、茉莉花。
本公开实施例的技术方案,采用基于分片并行或混合并行训练得到的目标模型进行图像处理,能为图像处理领域提供高性能的目标模型,进而提高图像处理的速度和准确性。
本公开实施例提供了一种自然语言处理方法,图13是根据本公开实施例的自然语言处理方法的流程示意图,该自然语言处理方法可以应用于自然语言处理装置。该自然语言处理装置可以应用于电子设备。该电子设备包括但不限于固定设备和/或移动设备。例如,固定设备包括但不限于服务器,服务器可以是云服务器或普通服务器。例如,移动设备包括但不限于手机、平板电脑等。在一些可能的实现方式中,该自然语言处理方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图13所示,该自然语言处理方法包括:
S1301:将第一类待处理序列输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;
S1302:根据训练后的目标模型,对第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
在一些实施例中,该第一类待处理序列可以从数据源获取;也可以从网页上进行抓取,得到第一类待处理序列。
在一些实施例中,该第一类待处理序列可以是多个文本数据或长文本数据,也可以是多个音频数据或长音频数据。
本公开的实施例中,当目标模型用于文本识别时,目标模型为文本识别模型。具体地,获取多个待识别数据,得到待识别序列数据,将待识别序列数据输入文本识别模型,得到文本识别模型输出的待识别数据的识别结果。示例性地,获取多个待识别数据,得到待识别数据序列;该待识别数据序列表示为“插在花瓶中的玫瑰花”、“插在花瓶中的百合花”、“插在花瓶中的茉莉花”的数据,将该待识别数据序列输入至文本识别模型,得到文本识别结果“插在花瓶中的玫瑰花;插在花瓶中的百合花;插在花瓶中的茉莉花”。
本公开实施例的技术方案,采用基于分片并行或混合并行训练得到的目标模型进行自然语言处理,能为自然语言处理领域提供高性能的目标模型,提高自然语言处理结果的速度和准确性。
本公开实施例提供了一种计算机视觉处理方法,图14是根据本公开实施例的计算机视觉处理方法的流程示意图,该计算机视觉处理方法可以应用于计算机视觉处理装置。该计算机视觉处理装置可以应用于电子设备。该电子设备包括但不限于固定设备和/或移动设备。例如,固定设备包括但不限于服务器,服务器可以是云服务器或普通服务器。例如,移动设备包括但不限于手机、平板电脑等。在一些可能的实现方式中,该计算机视觉处理方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图14所示,该计算机视觉处理方法包括:
S1401:将第二类待处理序列输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;
S1402:根据训练后的目标模型,对第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
在一些实施例中,该第二类待处理序列可以是多个文本数据或长文本数据,也可以是多个音频数据或长音频数据,还可以是多个图像数据。
本公开的实施例中,当目标模型用于目标检测时,目标模型为目标检测模型。具体地,获取多个待检测图像,得到待检测图像序列数据,将待检测图像序列数据输入目标检测模型,得到图像检测模型输出的待检测图像的检测结果。示例性地,获取待检测图像为猫和兔子的图像,将该待检测图像输入目标检测模型,得到输出的目标检测结果是猫和兔子。
本公开实施例的技术方案,采用基于分片并行或混合并行训练得到的目标模型进行图像处理,能为计算机视觉处理领域提供高性能的目标模型,提高计算机视觉处理的速度和准确性。
应理解,图1、图2、图4、图5、图6、图7、图8、图9、图10和图12所示的示意图仅仅是示例性而不是限制性的,并且其是可扩展的,本领域技术人员可以基于图1、图2、图4、图5、图6、图7、图8、图9、图10和图12的例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开实施例提供了一种分片并行的模型训练装置,如图15所示,该分片并行的模型训练装置可以包括:部署模块1501,用于在多个计算设备上部署待训练模型;切分模块1502,用于对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;第一训练模块1503,用于根据切分后的数据在多个计算设备上执行分片并行训练,得到目标模型。
在一些实施例中,该切分模块1502,用于:将用于待训练模型的训练样本数据,以序列长度至少部分等分的方式进行切分,得到切分后的数据,其中,切分后的数据为训练样本数据中的部分数据块。
在一些实施例中,该第一训练模块1503,包括:跨设备通信子模块,用于基于切分后的数据在多个计算设备之间进行跨设备通信。
在一些实施例中,该待训练模型包括:至少一个Transformer层,每个Transformer层包括通过残差连接级联在一起的自注意力机制网络和前馈神经网络。
在一些实施例中,该分片并行的模型训练装置,还包括:恢复模块1504(图15中未示出),用于通过在自注意力机制网络中执行第一次Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度。
在一些实施例中,该分片并行的模型训练装置,还包括:重切分模块1505(图15中未示出),用于通过在自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分,自注意力机制网络包括自注意力计算层。
在一些实施例中,该恢复模块1504(图15中未示出),用于通过第一次Reshard变换,基于第三矩阵得到第四矩阵;其中,第四矩阵中序列长度变量的维度为序列长度变量的原始维度,第三矩阵是第二矩阵经过QKV层后得到的,第二矩阵是对输入自注意力机制网络的归一化层的第一矩阵中的序列长度变量进行切分得到的。
在一些实施例中,该重切分模块1505(图15中未示出),用于通过第二次Reshard变换,基于自注意力计算层输出的第五矩阵得到第六矩阵,其中,第五矩阵中序列长度变量的维度为序列长度变量的原始维度。
在一些实施例中,该分片并行的模型训练装置,还包括:同步模块1506(图15中未示出),用于反向计算过程中或者反向计算结束后,在各计算设备上同步待训练模型的参数梯度。
在一些实施例中,该分片并行的模型训练装置,还包括:第二训练模块1507(图15中未示出),用于在多个计算设备各自的设备内部执行张量并行训练。
在一些实施例中,该分片并行的模型训练装置,还包括:构造模块1508(图15中未示出),用于构造第一通信组和第二通信组,其中,第一通信组用于负责分片并行通信,第二通信组用于负责张量并行通信,第一通信组和第二通信组能同时使用。该第一训练模块1503,还用于基于第一通信组在多个计算设备之间执行分片并行训练;该第二训练模块1507(图15中未示出),还用于基于第二通信组在多个计算设备各自的设备内部执行张量并行训练。
在一些实施例中,该第一训练模块1503,还用于在自注意力机制网络中,通过在自注意力机制网络中执行第一次Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度;通过在自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分。在一些实施例中,该第二训练模块1507(图15中未示出),还用于对经过QKV层的矩阵中的模型参数变量进行列切分;对经过自注意力机制网络的线性变换层中的模型参数变量进行行切分;在前馈神经网络中,对经过前馈神经网络的第一个全连接层的矩阵中的模型参数变量进行列切分;对经过前馈神经网络的第二个全连接层的矩阵中的模型参数变量进行行切分。
本领域技术人员应当理解,本公开实施例的分片并行的模型训练装置中各处理模块的功能,可参照前述的分片并行的模型训练方法的相关描述而理解,本公开实施例的分片并行的模型训练装置中各处理模块,可通过实现本公开实施例该的功能的模拟电路而实现,也可以通过执行本公开实施例该的功能的软件在电子设备上的运行而实现。
本公开实施例的分片并行的模型训练装置,采用基于分片并行的模型训练方式,训练长序列Transformer模型,能减少跨设备通信时间,提高模型训练的效率。
本公开实施例提供了一种图像处理装置,如图16所示,该图像处理装置,包括:第一输入模块1601,用于将待处理图像序列数据输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;图像处理模块1602,用于根据训练后的目标模型,对待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理。
本领域技术人员应当理解,本公开实施例的图像处理装置中各处理模块的功能,可参照前述的图像处理方法的相关描述而理解,本公开实施例的图像处理装置中各处理模块,可通过实现本公开实施例所述的功能的模拟电路而实现,也可以通过执行本公开实施例所述的功能的软件在电子设备上的运行而实现。
本公开实施例的图像处理装置,能够提高图像处理的速度和准确性。
本公开实施例提供了一种自然语言处理装置,如图17所示,该自然语言处理装置,包括:第二输入模块1701,用于将第一类待处理序列输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;自然语言处理模块1702,用于根据训练后的目标模型,对第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
本领域技术人员应当理解,本公开实施例的自然语言处理装置中各处理模块的功能,可参照前述的自然语言处理方法的相关描述而理解,本公开实施例的自然语言处理装置中各处理模块,可通过实现本公开实施例所述的功能的模拟电路而实现,也可以通过执行本公开实施例所述的功能的软件在电子设备上的运行而实现。
本公开实施例的自然语言处理装置,能够提高自然语言处理的速度和准确性。
本公开实施例提供了一种计算机视觉处理装置,如图18所示,该计算机视觉处理装置,包括:第三输入模块1801,用于将第二类待处理序列输入训练后的目标模型,训练后的目标模型根据上述所述的训练方法训练获得;计算机视觉处理模块1802,用于根据训练后的目标模型,对第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
本领域技术人员应当理解,本公开实施例的计算机视觉处理装置中各处理模块的功能,可参照前述的计算机视觉处理方法的相关描述而理解,本公开实施例的计算机视觉处理装置中各处理模块,可通过实现本公开实施例所述的功能的模拟电路而实现,也可以通过执行本公开实施例所述的功能的软件在电子设备上的运行而实现。
本公开实施例的计算机视觉处理装置,能够提高计算机视觉处理的速度和准确性。
本公开实施例提供了一种分片并行的模型训练的场景示意图,如图19所示。
如前所述的,本公开实施例提供的分片并行的模型训练方法应用于电子设备。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。
具体地,电子设备可具体执行以下操作:
在多个计算设备上部署待训练模型;
对待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;
根据切分后的数据在多个计算设备上执行分片并行训练,得到目标模型。
其中,待训练模型可以从数据源获取。数据源可以是各种形式的数据存储设备,例如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。数据源还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。此外,数据源与用户终端可以是同一设备。
应理解,图19所示的场景图仅仅是示意性而非限制性的,本领域技术人员可以基于图19的例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开实施例提供了一种图像处理的场景示意图,如图20所示。
如前所述的,本公开实施例提供的图像处理方法应用于电子设备。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。
具体地,电子设备可具体执行以下操作:
将待处理图像序列数据输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;
根据训练后的目标模型,对待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理,得到图像处理结果。
其中,待处理图像序列数据可以从图像数据源获取。图像数据源可以是各种形式的数据存储设备,例如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。图像数据源还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。此外,图像数据源与用户终端可以是同一设备。
应理解,图20所示的场景图仅仅是示意性而非限制性的,本领域技术人员可以基于图20的例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开实施例提供了一种自然语言处理的场景示意图,如图21所示。
如前所述的,本公开实施例提供的自然语言处理方法应用于电子设备。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。
具体地,电子设备可具体执行以下操作:
将第一类待处理序列输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;
根据训练后的目标模型,对第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
其中,第一类待处理序列可以从数据源获取。数据源可以是各种形式的数据存储设备,例如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。数据源还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。此外,数据源与用户终端可以是同一设备。
应理解,图21所示的场景图仅仅是示意性而非限制性的,本领域技术人员可以基于图21的例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开实施例提供了一种计算机视觉处理的场景示意图,如图22所示。
如前所述的,本公开实施例提供的计算机视觉处理方法应用于电子设备。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。
具体地,电子设备可具体执行以下操作:
将第二类待处理序列输入训练后的目标模型,训练后的目标模型根据上文所述的训练方法训练获得;
根据训练后的目标模型,对第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
其中,第二类待处理序列可以从数据源获取。数据源可以是各种形式的数据存储设备,例如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。数据源还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。此外,数据源与用户终端可以是同一设备。
应理解,图22所示的场景图仅仅是示意性而非限制性的,本领域技术人员可以基于图22的例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质、一种计算机程序产品。
图23示出了可以用来实施本公开的实施例的示例电子设备2300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系,以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图23所示,设备2300包括计算单元2301,其可以根据存储在只读存储器(Read-Only Memory,ROM)2302中的计算机程序或者从存储单元2308加载到随机访问存储器(Random Access Memory,RAM)2303中的计算机程序,来执行各种适当的动作和处理。在RAM2303中,还可存储设备2300操作所需的各种程序和数据。计算单元2301、ROM 2302以及RAM2303通过总线2304彼此相连。输入/输出(Input/Output,I/O)接口2305也连接至总线2304。
设备2300中的多个部件连接至I/O接口2305,包括:输入单元2306,例如键盘、鼠标等;输出单元2307,例如各种类型的显示器、扬声器等;存储单元2308,例如磁盘、光盘等;以及通信单元2309,例如网卡、调制解调器、无线通信收发机等。通信单元2309允许设备2300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元2301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元2301的一些示例包括但不限于中央处理单元CPU、图形处理单元(GraphicsProcessing Unit,GPU)、各种专用的人工智能(Artificial Intelligence,AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(Digital Signal Processor,DSP),以及任何适当的处理器、控制器、微控制器等。计算单元2301执行上文所描述的各个方法和处理,例如分片并行的模型训练方法和/或图像处理方法和/或自然语言处理方法和/或计算机视觉处理方法。例如,在一些实施例中,分片并行的模型训练方法和/或图像处理方法和/或自然语言处理方法和/或计算机视觉处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元2308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 2302和/或通信单元2309而被载入和/或安装到设备2300上。当计算机程序加载到RAM 2303并由计算单元2301执行时,可以执行上文描述的分片并行的模型训练方法和/或图像处理方法和/或自然语言处理方法和/或计算机视觉处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元2301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行分片并行的模型训练方法和/或图像处理方法和/或自然语言处理方法和/或计算机视觉处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(Field Programmable Gate Array,FPGA)、专用集成电路(Application Specific Integrated Circuit,ASIC)、专用标准产品(Application-Specific Standard Products,ASSP)、芯片上系统的系统(System on Chip,SOC)、复杂可编程逻辑设备(Complex Programmable Logic Device,CPLD)、计算机硬件、固件、软件和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的,或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器、只读存储器、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、快闪存储器、光纤、便捷式紧凑盘只读存储器(Compact Disk Read Only Memory,CD-ROM)、光学储存设备、磁储存设备,或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,阴极射线管(Cathode Ray Tube,CRT)或者液晶显示器(Liquid Crystal Display,LCD)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈,或者触觉反馈);并且可以用任何形式(包括声输入、语音输入,或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器),或者包括中间件部件的计算系统(例如,应用服务器),或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互),或者包括这种后台部件、中间件部件,或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端和服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (33)
1.一种分片并行的模型训练方法,包括:
在多个计算设备上部署待训练模型;
对所述待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;
根据所述切分后的数据在所述多个计算设备上执行分片并行训练,得到目标模型。
2.根据权利要求1所述的方法,其中,所述对所述待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据,包括:
将用于所述待训练模型的训练样本数据,以序列长度至少部分等分的方式进行所述切分,得到所述切分后的数据,其中,所述切分后的数据为所述训练样本数据中的部分数据块。
3.根据权利要求2所述的方法,还包括:
基于所述切分后的数据在所述多个计算设备之间进行跨设备通信。
4.根据权利要求1至3中任一项所述的方法,其中,所述待训练模型包括:至少一个Transformer层,每个Transformer层包括通过残差连接级联在一起的自注意力机制网络和前馈神经网络。
5.根据权利要求4所述的方法,还包括:
通过在所述自注意力机制网络中执行第一次重切片Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度。
6.根据权利要求4所述的方法,还包括:
通过在所述自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分,所述自注意力机制网络包括所述自注意力计算层。
7.根据权利要求5所述的方法,其中,通过在所述自注意力机制网络中执行第一次Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度,包括:
通过第一次Reshard变换,基于第三矩阵得到第四矩阵;其中,所述第四矩阵中序列长度变量的维度为序列长度变量的原始维度,所述第三矩阵是第二矩阵经过查询-键值对注意力QKV层后得到的,所述第二矩阵是对输入所述自注意力机制网络的归一化层的第一矩阵中的序列长度变量进行切分得到的。
8.根据权利要求6所述的方法,其中,通过在所述自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分,包括:
通过第二次Reshard变换,基于所述自注意力计算层输出的第五矩阵得到第六矩阵,其中,所述第五矩阵中序列长度变量的维度为序列长度变量的原始维度。
9.根据权利要求4所述的方法,还包括:
反向计算过程中或者反向计算结束后,在各计算设备上同步所述待训练模型的参数梯度。
10.根据权利要求1所述的方法,还包括:
在所述多个计算设备各自的设备内部执行张量并行训练。
11.根据权利要求10所述的方法,还包括:
构造第一通信组和第二通信组,其中,所述第一通信组用于负责分片并行通信,所述第二通信组用于负责张量并行通信,所述第一通信组和所述第二通信组能同时使用;
其中,在所述多个计算设备上执行分片并行训练,包括:
基于所述第一通信组在所述多个计算设备之间执行所述分片并行训练;
其中,在所述多个计算设备各自的设备内部执行张量并行训练,包括:
基于所述第二通信组在所述多个计算设备各自的设备内部执行所述张量并行训练。
12.根据权利要求10所述的方法,其中,在所述多个计算设备各自的设备内部执行张量并行训练,包括:
对经过QKV层的矩阵中的模型参数变量进行列切分;对经过所述自注意力机制网络的线性变换层中的模型参数变量进行行切分;
在前馈神经网络中,对经过所述前馈神经网络的第一个全连接层的矩阵中的模型参数变量进行列切分;对经过所述前馈神经网络的第二个全连接层的矩阵中的模型参数变量进行行切分。
13.一种图像处理方法,包括:
将待处理图像序列数据输入训练后的目标模型,所述训练后的目标模型根据权利要求1-12的训练方法训练获得;
根据所述训练后的目标模型,对所述待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理,得到图像处理结果。
14.一种自然语言处理方法,包括:
将第一类待处理序列输入训练后的目标模型,所述训练后的目标模型根据权利要求1-12的训练方法训练获得;
根据所述训练后的目标模型,对所述第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
15.一种计算机视觉处理方法,包括:
将第二类待处理序列输入训练后的目标模型,所述训练后的目标模型根据权利要求1-12的训练方法训练获得;
根据所述训练后的目标模型,对所述第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
16.一种分片并行的模型训练装置,包括:
部署模块,用于在多个计算设备上部署待训练模型;
切分模块,用于对所述待训练模型的输入变量中的序列长度变量进行切分,得到切分后的数据;
第一训练模块,用于根据所述切分后的数据在所述多个计算设备上执行分片并行训练,得到目标模型。
17.根据权利要求16所述的装置,其中,所述切分模块,用于:
将用于所述待训练模型的训练样本数据,以序列长度至少部分等分的方式进行所述切分,得到所述切分后的数据,其中,所述切分后的数据为所述训练样本数据中的部分数据块。
18.根据权利要求17所述的装置,其中,所述第一训练模块,包括:
跨设备通信子模块,用于基于所述切分后的数据在所述多个计算设备之间进行跨设备通信。
19.根据权利要求16至18中任一项所述的装置,其中,所述待训练模型包括:至少一个Transformer层,每个Transformer层包括通过残差连接级联在一起的自注意力机制网络和前馈神经网络。
20.根据权利要求19所述的装置,还包括:
恢复模块,用于通过在所述自注意力机制网络中执行第一次Reshard变换,将切分后的序列长度变量维度恢复成序列长度变量的原始维度。
21.根据权利要求19所述的装置,还包括:
重切分模块,用于通过在所述自注意力机制网络中执行第二次Reshard变换,将自注意力计算层输出的矩阵中的序列长度变量重新切分,所述自注意力机制网络包括所述自注意力计算层。
22.根据权利要求20所述的装置,其中,所述恢复模块,用于通过第一次Reshard变换,基于第三矩阵得到第四矩阵;其中,所述第四矩阵中序列长度变量的维度为序列长度变量的原始维度,所述第三矩阵是第二矩阵经过QKV层后得到的,所述第二矩阵是对输入所述自注意力机制网络的归一化层的第一矩阵中的序列长度变量进行切分得到的。
23.根据权利要求21所述的装置,其中,所述重切分模块,用于通过第二次Reshard变换,基于自注意力计算层输出的第五矩阵得到第六矩阵,其中,所述第五矩阵中序列长度变量的维度为序列长度变量的原始维度。
24.根据权利要求19所述的装置,还包括:
同步模块,用于反向计算过程中或者反向计算结束后,在各计算设备上同步所述待训练模型的参数梯度。
25.根据权利要求16所述的装置,还包括:
第二训练模块,用于在所述多个计算设备各自的设备内部执行张量并行训练。
26.根据权利要求25所述的装置,还包括:
构造模块,用于构造第一通信组和第二通信组,其中,所述第一通信组用于负责分片并行通信,所述第二通信组用于负责张量并行通信,所述第一通信组和所述第二通信组能同时使用;
所述第一训练模块,还用于基于所述第一通信组在所述多个计算设备之间执行所述分片并行训练;所述第二训练模块,还用于基于所述第二通信组在所述多个计算设备各自的设备内部执行所述张量并行训练。
27.根据权利要求25所述的装置,其中,所述第二训练模块,用于:
对经过QKV层的矩阵中的模型参数变量进行列切分;对经过所述自注意力机制网络的线性变换层中的模型参数变量进行行切分;在前馈神经网络中,对经过所述前馈神经网络的第一个全连接层的矩阵中的模型参数变量进行列切分;对经过所述前馈神经网络的第二个全连接层的矩阵中的模型参数变量进行行切分。
28.一种图像处理装置,包括:
第一输入模块,用于将待处理图像序列数据输入训练后的目标模型,所述训练后的目标模型根据权利要求1-12的训练方法训练获得;
图像处理模块,用于根据所述训练后的目标模型,对所述待处理图像序列数据执行包括图像分类、图像识别、图像分割中的至少一种图像处理,得到图像处理结果。
29.一种自然语言处理装置,包括:
第二输入模块,用于将第一类待处理序列输入训练后的目标模型,所述训练后的目标模型根据权利要求1-12的训练方法训练获得;
自然语言处理模块,用于根据所述训练后的目标模型,对所述第一类待处理序列执行包括信息抽取、文本分类、文本识别、语音识别、问题回答中的至少一种自然语言处理,得到自然语言处理结果。
30.一种计算机视觉处理装置,包括:
第三输入模块,用于将第二类待处理序列输入训练后的目标模型,所述训练后的目标模型根据权利要求1-12的训练方法训练获得;
计算机视觉处理模块,用于根据所述训练后的目标模型,对所述第二类待处理序列执行包括图片识别、目标检测、语义分割、视频理解和图片生成中的至少一种计算机视觉处理,得到计算机视觉处理结果。
31.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-15中任一项所述的方法。
32.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-15中任一项所述的方法。
33.一种计算机程序产品,包括存储在存储介质上的计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310729857.6A CN116704291A (zh) | 2023-06-19 | 2023-06-19 | 分片并行的模型训练方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310729857.6A CN116704291A (zh) | 2023-06-19 | 2023-06-19 | 分片并行的模型训练方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116704291A true CN116704291A (zh) | 2023-09-05 |
Family
ID=87840798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310729857.6A Pending CN116704291A (zh) | 2023-06-19 | 2023-06-19 | 分片并行的模型训练方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116704291A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117035123A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种并行训练中的节点通信方法、存储介质、设备 |
CN117576402A (zh) * | 2024-01-15 | 2024-02-20 | 临沂大学 | 一种基于深度学习的多尺度聚合Transformer遥感图像语义分割方法 |
-
2023
- 2023-06-19 CN CN202310729857.6A patent/CN116704291A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117035123A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种并行训练中的节点通信方法、存储介质、设备 |
CN117035123B (zh) * | 2023-10-09 | 2024-01-09 | 之江实验室 | 一种并行训练中的节点通信方法、存储介质、设备 |
CN117576402A (zh) * | 2024-01-15 | 2024-02-20 | 临沂大学 | 一种基于深度学习的多尺度聚合Transformer遥感图像语义分割方法 |
CN117576402B (zh) * | 2024-01-15 | 2024-03-26 | 临沂大学 | 一种基于深度学习的多尺度聚合Transformer遥感图像语义分割方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116704291A (zh) | 分片并行的模型训练方法、装置、设备及存储介质 | |
WO2020199693A1 (zh) | 一种大姿态下的人脸识别方法、装置及设备 | |
CN111182254B (zh) | 一种视频处理方法、装置、设备及存储介质 | |
CN112884086B (zh) | 模型训练方法、装置、设备、存储介质以及程序产品 | |
CN115294349B (zh) | 训练模型的方法、装置、电子设备及存储介质 | |
KR20220130630A (ko) | 이미지 처리 방법, 안면 인식 모델 훈련 방법, 장치 및 기기 | |
CN113378784B (zh) | 视频标签推荐模型的训练方法和确定视频标签的方法 | |
CN114445831A (zh) | 一种图文预训练方法、装置、设备以及存储介质 | |
CN113590858A (zh) | 目标对象的生成方法、装置、电子设备以及存储介质 | |
CN112954391B (zh) | 视频编辑方法、装置和电子设备 | |
WO2022252674A1 (zh) | 可驱动三维人物生成方法、装置、电子设备及存储介质 | |
CN113538235A (zh) | 图像处理模型的训练方法、装置、电子设备及存储介质 | |
CN114693934A (zh) | 语义分割模型的训练方法、视频语义分割方法及装置 | |
CN114020950A (zh) | 图像检索模型的训练方法、装置、设备以及存储介质 | |
CN114549728A (zh) | 图像处理模型的训练方法、图像处理方法、装置及介质 | |
CN114663733A (zh) | 多模态特征的融合方法、装置、设备、介质及产品 | |
CN113240780B (zh) | 生成动画的方法和装置 | |
CN113592981B (zh) | 图片标注方法、装置、电子设备和存储介质 | |
CN115082306A (zh) | 一种基于蓝图可分离残差网络的图像超分辨率方法 | |
CN112966723B (zh) | 视频数据增广方法、装置、电子设备及可读存储介质 | |
CN112651449B (zh) | 确定视频的内容特征的方法、装置、电子设备及存储介质 | |
CN112559727B (zh) | 用于输出信息的方法、装置、设备、存储介质和程序 | |
CN113554550A (zh) | 图像处理模型的训练方法、装置、电子设备及存储介质 | |
CN113792876A (zh) | 骨干网络的生成方法、装置、设备以及存储介质 | |
CN112990046A (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 |