CN117494816A - 基于计算单元部署的模型推理方法、装置、设备及介质 - Google Patents
基于计算单元部署的模型推理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117494816A CN117494816A CN202311866372.8A CN202311866372A CN117494816A CN 117494816 A CN117494816 A CN 117494816A CN 202311866372 A CN202311866372 A CN 202311866372A CN 117494816 A CN117494816 A CN 117494816A
- Authority
- CN
- China
- Prior art keywords
- model
- sub
- reasoning
- parallel
- deployment
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 118
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000013459 approach Methods 0.000 claims abstract description 7
- 238000004364 calculation method Methods 0.000 claims description 92
- 238000004590 computer program Methods 0.000 claims description 17
- 238000004088 simulation Methods 0.000 claims description 15
- 230000010354 integration Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 230000006854 communication Effects 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000012549 training Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种基于计算单元部署的模型推理方法、装置、设备及介质,其中,所述方法包括:获取待推理模型;在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元;其中,所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理;获取所述多个计算单元各自处理得到的子推理结果;基于所述多个计算单元的所述子推理结果,确定所述待推理模型的目标推理结果。本申请可以充分利用各个计算单元的性能,从而能够提高集群的资源利用率,同时降低推理延迟。
Description
技术领域
本申请涉及但不限于人工智能技术领域,尤其涉及一种基于计算单元部署的模型推理方法、装置、设备及介质。
背景技术
目前生成类模型的推理工作主要是基于图像处理器(Graphics ProcessingUnit,GPU)计算,而例如chatGPT类的超大规模模型需要用到多个GPU进行分布式计算,目前的分布式计算方式在推理中使用确定的一种部署方式部署,并不能完全利用到不同的分布式方式的最优性能。
发明内容
有鉴于此,本申请实施例至少提供一种基于计算单元部署的模型推理方法、装置、设备及介质。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种基于计算单元部署的模型推理方法,所述方法包括:
获取待推理模型;在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元;其中,所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理;获取所述多个计算单元各自处理得到的子推理结果;基于所述多个计算单元分别对应的所述子推理结果,确定所述待推理模型的目标推理结果。
第二方面,本申请实施例提供一种基于计算单元部署的模型推理装置,所述装置包括:
第一获取模块,用于获取待推理模型;
分布部署模块,用于在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元;其中,所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理;
第二获取模块,用于获取所述多个计算单元各自处理得到的子推理结果;
计算整合模块,基于所述多个计算单元分别对应的所述子推理结果,确定所述待推理模型的目标推理结果。
第三方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
在本申请实施例中,在待推理模型的至少两个推理阶段,采用不同的并行部署方式将待推理模型拆分并部署在集群的多个计算单元,这样,可以根据生成类模型不同推理输出阶段的计算特点,结合每一并行部署方式的特点,选择不同的并行部署方式实现模型推理阶段的混合部署,从而可以充分利用各个计算单元的性能,进而能够提高集群的资源利用率,同时降低推理延迟。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种基于计算单元部署的模型推理方法的流程示意图一;
图2为本申请实施例提供的另一种基于计算单元部署的模型推理方法的流程示意图;
图3为本申请实施例提供的再一种基于计算单元部署的模型推理方法的流程示意图;
图4为本申请实施例提供的又一种基于计算单元部署的模型推理方法的流程示意图;
图5为本申请实施例提供的一种基于计算单元部署的模型推理方法的逻辑流程图二;
图6为本申请实施例提供的一种分布式模型推理过程的示意图;
图7为本申请实施例提供的一种基于计算单元部署的模型推理装置的组成结构示意图;
图8为本申请实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
在对本申请实施例进行进一步详细说明之前,先对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
模型并行(model parallelism):分布式系统中的不同计算单元(GPU/中央处理器(Central Processing Unit,CPU)等)负责网络模型的不同部分。例如,神经网络模型的不同网络层被分配到不同的计算单元,或者同一层内部的不同参数被分配到不同计算单元。本申请实施例所指的模型并行就是指将网络模型的同一层(也就是一个矩阵乘法算子或者卷积算子)内部的不同参数被分配到不同计算单元。也就是将单个算子上的权重拆分,分布式计算单个算子的模型并行。
流水线并行中,将模型分层拆分并部署到不同计算单元,每个计算单元计算模型的部分参数,通过流水线并行方式进行计算;其中每个计算单元只负责一部分层的前向传播及对应的反向传播运算。其中,前向传播是通过输入数据,计算出每个变量以及每层的权重,得出损失的过程,后向传播是在得到损失之后,反向调整每个变量以及每层的权重的过程。一般来说,权重的调整即模型参数的更新是通过学习度以及偏导(梯度)来计算的。
数据并行中数据被划分,每一个节点(或者进程)都有一份模型,然后各个节点取不同的数据,即对输入的训练数据进行切分,不同设备使用不同的输入数据,采用多个模型实例,对切分后的输入数据并行训练。
GPT:(Generative Pre-Trained Transformer,生成式预训练Transformer模型)是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型。
本申请实施例提供一种基于计算单元部署的模型推理方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备分布式模型推理能力的设备。图1为本申请实施例提供的一种基于计算单元部署的模型推理方法的流程示意图一,如图1所示,该方法包括如下步骤S110至步骤S140:
步骤S110,获取待推理模型。
这里,所述待推理模型为生成类模型,这类模型的推理工作主要是基于GPU,尤其是大规模的语言生成类模型,例如GPT类模型需要用到多个GPU进行分布式计算。
步骤S120,在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元。
这里,所述至少两个推理阶段为第一阶段和第二阶段;所述第一阶段用于基于原始数据序列推理得到第一个输出结果;所述第二阶段用于基于所述第一个输出结果逐层推理得到下一个输出结果,直到获得所述原始数据序列对应的输出数据序列。
所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理。其中,所述计算单元可以为GPU、CPU等,本申请实施例对此不作限定。其中将待推理模型拆分是指将待处理模型按层级顺序分层拆分为多个子模型并部署到不同计算单元中进行计算,其中不同子模型对应不同的网络层,每个子模型包括对应网络层的参数;或者是将待处理模型中的关键算子拆分为多个子部分并部署到不同计算单元中进行计算,每个子部分包括关键算子的一部分参数。
在一些实施方式中,所述并行部署方式可以为:将待推理模型按层级顺序分层拆分为多个子模型,通过多个计算单元进行流水线并行计算,其中每个计算单元处理一个对应的子模型;在一些实施方式中,所述并行部署方式可以为:将待推理模型中某一层例如矩阵乘法算子或者卷积算子内部进行拆分,通过多个计算单元对该层进行模型并行处理;在一些实施方式中,所述并行部署方式可以为:将输入数据划分为多个小批数据,在多个计算单元部署一份待推理模型,不同计算单元使用不同的小批数据进行推理计算的数据并行处理;在一些实施方式中,所述并行部署方式可以为上述流水线并行、模型并行、数据并行中的至少两个组合的混合部署。
本申请实施例针对待推理模型在不同的推理阶段,采用不同的并行部署方式,即在第一阶段采用上述一种实施方式,在第二阶段采用除第一阶段所采用的实施方式之外的一种实施方式,从而基于各个推理阶段的计算特点进行针对性的部署,可以充分利用到各个计算单元的最优性能。
步骤S130,获取所述多个计算单元各自处理得到的子推理结果。
这里,通过多个计算单元对待推理模型进行分布式计算,在每个计算单元中进行推理计算得到对应的子推理结果,不同计算单元得到不同的子推理结果。
步骤S140,基于所述多个计算单元分别对应的所述子推理结果,确定所述待推理模型的目标推理结果。
这里,将所有计算单元的子推理结果进行整合,得到待推理模型的目标推理结果。
在本申请实施例中,在待推理模型的至少两个推理阶段,采用不同的并行部署方式将待推理模型拆分并部署在集群的多个计算单元,这样,可以根据生成类模型不同推理输出阶段的计算特点,结合每一并行部署方式的特点,选择不同的并行部署方式实现模型推理阶段的混合部署,从而可以充分利用各个计算单元的性能,进而能够提高集群的资源利用率,同时降低推理延迟。
在一些实施方式中,所述方法还包括以下步骤S121至步骤S123:
步骤S121,获取所述集群中各计算单元的性能参数。
这里,在一些实施方式中,每一计算单元的性能参数包括该计算单元在单卡上的性能即单卡性能,例如工作频率、显存位宽、显存带宽等;在一些实施方式中,每一计算单元的性能参数包括网络通信性能例如数据传输速率;在一些实施方式中,每一计算单元的性能参数包括单卡性能和网络通信性能。
步骤S122,利用所述性能参数进行性能建模,确定所述各计算单元中计算资源的目标模拟配置。
这里,所述目标模拟配置表征采用流水线并行处理的流水线路数和/或采用模型并行处理的模型并行卡数。在实施中,通过相关建模软件进行资源的环境配置后,搭建深度学习模型进行训练并推理,并对比不同配置下的性能差异,从而通过不断测试确定出混合部署对应的目标模拟配置。
步骤S123,基于所述目标模拟配置和所述至少两个推理阶段各自的计算特点,确定所述不同的并行部署方式。
这里,所述至少两个推理阶段包括利用整段原始数据序列推理得到第一个输出的第一阶段,和利用第一个输出逐步推理得到后续输出的第二阶段。
可以理解的是,上述第一阶段的计算特点是由于输入数据较大而导致计算量大,延迟较长,但仅需计算一次;上述第二阶段的计算特点是单个输出的计算量小延迟短,但是需要的输出数量可变,通常为几十到几百次输出,因此需要计算的次数较多,总体的延迟也较长。
这样,结合集群中各计算单元的性能建模得到的目标模拟配置以及各个输出阶段的计算特点进行混合部署,可以在减小单卡性能损失的同时提升集群中计算单元的利用率。
在一些实施方式中,所述方法还包括:按照预设周期检测所述集群中各所述计算单元的性能参数;对各所述计算单元的性能参数进行性能模拟,确定至少一个指标值;响应于任意所述指标值小于阈值,调整所述不同的并行部署方式。
这里,所述预设周期为根据实际经验设定的检测周期,例如为一个推理阶段或一次前向计算过程等,所述至少一个指标值包括工作频率、显存位宽、显存带宽、数据传输速率等。这样,通过定期检测实际推理过程中各计算单元的性能并调整不同推理阶段的并行部署方式,从而可以实时优化集群中计算资源的使用效率,在损失较少性能的同时最大程度地降低延迟。
在一些实施方式中,所述至少两个推理阶段包括第一阶段和第二阶段。图2为本申请实施例提供的另一种基于计算单元部署的模型推理方法的流程示意图,如图2所示,该方法包括如下步骤S210至步骤S250:
步骤S210,获取待推理模型。
步骤S220,在所述第一阶段,采用第一并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元。
这里,所述第一阶段用于基于原始数据序列推理得到原始数据序列中第一个输出结果,也就是说,第一阶段的输入数据为原始数据序列,该阶段的计算特点是由于输入数据较大而导致计算量大,延迟较长,但仅需计算一次。所述第一并行方式包括以下至少一种:数据并行、模型并行和流水线并行。
步骤S230,在所述第二阶段,采用第二并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元。
这里,所述第二阶段用于基于所述第一个输出结果推理得到后续输出结果,即基于上一次推理得到的第一个输出结果逐层推理得到下一个输出结果,直到获得所述原始数据序列对应的输出数据序列,包括若干次单次输出,每次输出是一个单独计算且单次输出计算量较小、延迟较短。
所述第一并行方式和所述第二并行方式不同,且所述第二并行方式包括以下至少一种:数据并行、模型并行和流水线并行。例如,第一并行方式为流水线并行的情况下,第二并行方式为除流水线并行之外的其它并行部署方式。
步骤S240,获取所述多个计算单元各自处理得到的子推理结果。
步骤S250,基于所述多个计算单元的所述子推理结果,确定所述待推理模型的目标推理结果。
这里,上述步骤S240和步骤S250分别对应于前述步骤S130和步骤S140,步骤S240和步骤S250在实施时可以参照前述步骤S130和步骤S140的具体实施方式。
上述实施例中,在模型推理过程中的第一阶段采用第一并行方式,第二阶段采用与第一并行方式不同的第二并行方式,从而充分利用不同阶段的计算特点和各并行方式的特点,应用不同并行部署方式进行针对性地分布式混合部署,保证计算单元的使用效率的同时也能保证并行处理的执行效率,最大程度降低推理延迟。
在一些实施方式中,所述第一并行方式为流水线并行;基于图2,图3为本申请实施例提供的再一种基于计算单元部署的模型推理方法的流程示意图,如图3所示,上述步骤S220“所述采用第一并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元”包括如下步骤S310至步骤S330:
步骤S310,将所述原始数据序列分解为多组数据子集;所述多组数据子集中的每组所述数据子集包括至少一个数据。
这里,每组所述数据子集包括至少一个数据。一般原始数据序列包括由多个样本数据组成的一批(batch)数据,在常规推理过程中同时作为输入进行计算。但是在流水线并行部署的情况下,将这一个批的输入数据再拆分成多个小批(micro batch)进行推理,即每一小批输入到一路流水线中,这样能够提高流水线的并行度。
步骤S320,将所述待推理模型按层级顺序分层拆分为至少两个子模型,并将所述至少两个子模型分别部署在所述集群中至少两个对应的计算单元上。
其中,所述至少两个子模型中的每个所述子模型包括所述待推理模型中一部分网络层的参数。这里,每个所述子模型包括所述待推理模型中一部分网络层的参数,在每个计算单元上基于所部署的子模型的参数进行推理计算。
示例地,假定待推理模型由低到高共包括输入层、卷积层、分类层、全连接层、输出层,则按照层级顺序可以拆分为包括输入层和卷积层的第一子模型,以及包括分类层、全连接层、输出层的第二子模型,再将第一子模型部署在集群中的第一计算单元上,将第二子模型部署在集群中的第二计算单元上,第一计算单元和第二计算单元不同且按照模型层次顺序串接,从而针对待推理模型实现流水线并行部署。
步骤S330,将所述多组数据子集按组依次输入到所述至少两个子模型中进行推理。
这里,通过所拆分的至少两个子模型对每一组数据子集进行推理,例如将步骤S310中分组后的一组数据子集输入到第一子模型中,得到输出结果后,将输入结果继续输入到第二子模型中进行推理,得到该组数据子集对应的推理结果;再依次处理其它组数据子集后,合并所有推理结果得到目标推理结果。
其中,在前向计算过程中所述至少两个子模型中当前子模型的输入数据为前一子模型的输出结果,例如上述示例中第一子模型的输出结果作为第二子模型的输入数据。
上述实施例中,在模型推理的第一阶段,将待处理模型分层拆分为至少两个子模型,并通过所述集群中的至少两个计算卡进行流水线并行处理,从而保证了集群中计算单元的使用效率的同时,也能保证流水线的执行效率。
在一些实施方式中,所述第一并行方式包括流水线并行和模型并行,即在推理过程的第一阶段,利用流水线并行和模型并行两种方式对待推理模型进行混合部署。在该部署场景下,在上述步骤S320之后还包括步骤S321至步骤S323:
步骤S321,确定所述至少两个子模型中包含关键算子的目标子模型。
这里,所述关键算子的计算量大于第一阈值,也就是说所述关键算子可以为待推理模型中计算量比较大的算子,例如卷积层、分类网络等。
需要说明的是,待推理模型从输入开始到输出需要经过多步计算,每一步的计算称为一个算子,不同算子的计算方式各不相同。计算量比较大的算子主要是矩阵乘法和卷积算法。模型并行的思路就是将矩阵乘法或卷积算子拆分,每个卡执行部分的矩阵乘法或卷积计算,从而达到并行计算加速的效果。
步骤S322,将所述目标子模型拆分为至少两个子部分进行模型并行处理,得到所述目标子模型输出的第一计算结果。
这里,每个所述子部分包括所述目标子模型对应的网络层中的部分参数;所述第一计算结果是基于所述至少两个子部分各自的输出结果确定的。
这里,将所述目标子模型按照权重拆分为至少两个子部分,并分别部署在至少两个对应的计算单元上,即每一计算单元处理目标子模型的一个子部分,同时将目标子模型的输入数据同时输入到这至少两个子部分中分别进行推理计算,得到所述至少两个子部分各自的输出结果,最后组合各个子部分的输出结果得到目标子模型的第一计算结果。
步骤S323,将所述第一计算结果作为输入数据传递到所述至少两个子模型中所述目标子模型之后的子模型中进行下一步计算。
上述实施例中,在模型推理的第一阶段,将待处理模型分层拆分为至少两个子模型进行流水线并行处理的基础上,针对目标子模型继续按权重拆分为至少两个子部分,从而在保证流水线的执行效率的同时进一步提高集群中计算单元的使用效率,降低推理延迟。
在一些实施方式中,在所述第一阶段,所述至少两个子模型对应的流水线路数为N,所述至少两个子部分对应的模型并行卡数为M,且M小于或等于N。
这里,首先将待推理模型分层拆分为N个子模型并通过N个计算单元进行流水线式并行计算,然后将N个子模型中的目标子模型继续分解为M个子部分,并通过M个计算单元进行模型并行计算,从而完成以流水线并行为主,模型并行为辅的混合部署。比如以16个GPU组件多卡推理方案时,按照8路流水线,2卡一组做模型并行进行分布式部署。
上述实施例中,在推理过程中的第一阶段将集群中的计算单元主要分配在流水线并行部署中,并以少量计算单元分配在模型并行部署中,更符合第一阶段的计算特点,保证了计算单元使用效率的同时,也能保证流水线的执行效率。
在一些实施方式中,所述第二并行方式为模型并行;基于图2,图4为本申请实施例提供的又一种基于计算单元部署的模型推理方法的流程示意图,如图4所示,上述步骤S230中“所述采用第二并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元”包括如下步骤S410至步骤S430:
步骤S410,将所述原始数据序列分解为多组数据子集;所述多组数据子集中的每组所述数据子集包括至少一个数据。
这里,所述多组数据子集中的每组所述数据子集包括至少一个数据;一般原始数据序列包括由多个样本数据组成的一批数据,在流水线并行处理过程中每一路流水线一次处理一组数据子集,提高流水线的并行度;在模型并行处理过程中每一子模型中将多组数据子集同时作为输入进行计算,提高计算单元的使用效率,同时降低延迟。
步骤S420,将所述待推理模型中的关键算子拆分为至少两个子部分,并将所述至少两个子部分分别部署在所述集群中至少两个对应的计算单元上。
这里,所述关键算子的计算量大于第一阈值,也就是说所述关键算子可以为待推理模型中计算量比较大的算子,例如卷积层、分类网络等。
所述至少两个子部分各自的模型参数之和为所述关键算子的模型参数。也就是说,模型并行的时候每一计算单元上都拥有完整的待推理模型,但是每一层所拆分子部分的模型参数仅有1/模型并行卡数,其中模型并行卡数等效为每一层所拆分的子部分的数量。
示例地,假定待推理模型由低到高共包括输入层、卷积层、分类层、全连接层、输出层,则其中卷积层中卷积运算计算量较大,可以作为上述关键算子,因此将卷积层的权重拆分,得到至少两个子部分,例如第一子部分和第二子部分,再将第一子部分部署在集群中的第三计算单元上,将第二子部分部署在集群中的第四计算单元上,第三计算单元和第四计算单元不同,从而针对待推理模型实现模型并行部署。
需要说明的是,待推理模型从输入开始到输出需要经过多步计算,每一步的计算称为一个算子,不同算子的计算方式各不相同。计算量比较大的算子主要是矩阵乘法和卷积算法。模型并行的思路就是将矩阵乘法或卷积算子拆分,每个计算单元执行部分的矩阵乘法或卷积计算,从而达到模型并行计算加速的效果。
步骤S430,将所述多组数据子集同时输入到所述至少两个子部分中分别进行推理。
这里,在模型并行部署的情况下,将多组数据子集同时输入到每一子部分中分别进行推理,这样能够提高模型并行的吞吐量。
上述实施例中,在模型推理的第二阶段,将待处理模型的关键算子按权重拆分为至少两个子部分,并通过所述集群中的至少两个计算卡进行模型并行处理,从而针对模型中计算量比较大的算子达到并行计算加速的效果,同时多组数据子集同时进行推理能够提高模型并行的吞吐量。
在一些实施方式中,所述第二并行方式包括模型并行和流水线并行,在上述步骤S420将待推理模型拆分得到至少两个子部分之后还包括以下步骤S421至步骤S423:
步骤S421,确定所述至少两个子部分中的目标子部分。
这里,所述目标子部分的模型参数大于其他子部分的模型参数。也就是说,在将待推理模型拆分为至少两个子部分之后,筛选出模型参数较大的目标子部分进行后续拆分以在模型并行部署的基础上实现流水线并行部署。
步骤S422,将所述目标子部分按层级顺序分层拆分为至少两个子模型进行流水线并行处理,得到所述目标子部分输出的第二计算结果。
这里,每个所述子模型包括所述目标子部分中一部分网络层的参数;在前向计算过程中所述至少两个子模型中当前子模型的输入数据为前一子模型的输出结果;所述第二计算结果为所述至少两个子模型中最后一个子模型的输出结果。
这里,将所述目标子部分按层级顺序分层拆分为至少两个子模型,并分别部署在至少两个对应的计算单元上,将所述多组数据子集按组依次输入到所述至少两个子模型中进行推理,得到各自的输出结果,最后所述至少两个子模型中最后一个子模型的输出结果确定为目标子部分的第二计算结果。
步骤S423,基于所述第二计算结果和所述至少两个子部分中除所述目标子部分之外的其它子部分的第三计算结果,确定所述关键算子的推理结果。
上述实施例中,针对模型推理的第二阶段的特点,在模型并行的基础上结合流水线并行对待推理模型进行混合部署,提高GPU的使用效率的同时,进一步降低延迟。
在一些实施方式中,在所述第二阶段,所述至少两个子部分对应的模型并行卡数为K,所述至少两个子模型对应的流水线路数为L,且L小于或等于K。
这里,首先将待推理模型中关键算子拆分为K个子部分并通过K个计算单元进行模型并行计算,然后将K个子部分终端目标子部分继续拆分为L个子模型,并通过L个计算单元进行流水线并行计算,从而完成以模型并行为主,流水线并行为辅的混合部署。比如以16个GPU组件多卡推理方案时,按照8卡一组做模型并行,2路流水线进行部署。
上述实施例中,在推理过程中的第二阶段将集群中的计算单元主要分配在模型并行部署中,并以少量计算单元分配在流水线并行部署中,更符合第二阶段的计算特点,保证了计算单元使用效率的同时,进一步提供吞吐率。
在一些实施方式中,所述方法还包括:确定所述集群中待分配计算单元的第一数量;基于所述第一数量、所述流水线路数和所述模型并行卡数,确定数据并行路数;按照所述数据并行路数将所述原始数据序列进行分组并分配到每一路流水线对应的计算单元中。
这里,所述待分配计算单元为集群中空闲的计算单元,假定待分配计算单元的第一数量为S、流水线路数为N、模型并行卡数为M,则需要配置的数据并行路数为,即以S个计算单元组建多卡推理方案为例,流水线路数、模型并行卡数、数据并行路数这三者的乘积必须为S。
示例地,以64个GPU组建多卡推理方案为例,在第一个输出阶段,以2卡模型并行,配合8路流水线,再进行4路数据并行,即以2x8x4的方式进行多卡推理。在第二个输出阶段则换为16卡模型并行,再进行4路数据并行,即以16x1x4的方式进行多卡推理,从而降低了推理延迟,提高了吞吐率。
上述实施例中,在组合流水线并行和模型并行的混合部署之后,在模型推理的两个阶段都还可以继续组合数据并行进行扩展,从而保证了计算单元的使用效率以及流水线的执行效率的同时,可以获得更高的吞吐率。
在一些实施方式中,所述方法还包括:每一所述计算单元同时保存所述流水线并行处理和所述模型并行处理各自需要的模型参数。
这里,每一所述计算单元在所述流水线并行处理过程中需要的模型参数为该计算单元上所部署的待推理模型所拆分的子模型所包括的模型参数,每一所述计算单元在所述模型并行处理过程中需要的模型参数为该计算单元上所部署的由待推理模型中关键算子所拆分的子部分对应的模型参数。
上述实施例中,每一计算单元同时保存两种不同并行处理方式中各自的模型参数,可确保各并行处理方式之间快速切换,减少处理延时。
下面结合一个具体实施例对上述基于计算单元部署的模型推理方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
本申请实施例以待推理模型为GPT类模型,以计算单元为GPU为例进行示例说明。GPT类模型得到一个输入序列后,会进行多次推理,每次推理得到一个输出的字,直到完成整个输出序列。
举例来说,当输入是“你叫什么名字”这个序列,第一次推理得到“我”,后续推理会依次得到“叫”、“G”、“P”、“T”、“模”、“型”,“<结束符>”,从而返回“我叫GPT模型”的输出。在第一个结果“我”推理时,使用的是原始的输入数据序列,而在后续结果推理时,输入仅是上一次的输出,即输入:“我”,输出:“叫”;输入“叫”,输出“G”,依此类推。
可以看出,GPT类模型的推理分成两个阶段,第一阶段是基于原始数据序列推理得到第一个输出,第二阶段是基于第一个输出推理得到后续输出。两个阶段的计算量会有显著不同。基于整个输入序列得到第一个输出的计算量大,延迟较长,但仅需计算一次。而后续输出包括若干次单次输出,即每次输出是一个单独的计算,且单个输出计算量小,延迟短,但需要的输出数量可变,通常为几十到几百次输出,因此总体的延迟也较长。因此两种计算的特征完全不同,从而有了对于不同计算特征进行不同方式计算的优化空间。
本申请实施例主要是针对不同推理输出阶段,应用不同并行部署方式。同时,在每个推理输出阶段,根据其计算特征,在数据并行、模型并行和流水线并行中的至少一个维度上,进行并行部署。
一般来说,在第一阶段,以流水线并行为主,模型并行为辅,将一组多个输入拆分成多个单个输入,从而保证了GPU的使用效率的同时,也能保证流水线的执行效率。在第二阶段,以模型并行为主,流水线并行为辅。由于后续输出的计算量较小,通过将一组多个输入同时进行推理,可以提高GPU的使用效率,降低延迟。需要说明的是,上述两个阶段都可以在确定流水线+模型并行组合后,继续以数据并行进行扩展。
以64个GPU组建多卡推理方案为例,在第一个输出阶段,以2卡模型并行,配合8路流水线,再进行4路数据并行,即以2x8x4的方式进行多卡推理。在第二个输出阶段则换为16卡模型并行,再进行4路数据并行,即以16x1x4的方式进行多卡推理。从而获得最高的吞吐率。
图5为本申请实施例提供一种基于计算单元部署的模型推理方法的逻辑流程图二,如图5所示,该方法包括如下步骤S510至步骤S540:
步骤S510,获取GPU集群中每一GPU的性能参数。
这里,所述性能参数包括该型GPU在单卡上的性能,和网络通信性能。
步骤S520,通过性能建模,得到分布式部署的目标模拟配置。
这里,通过模拟计算得到待分配的流水线路数或模型并行数。
步骤S530,在第一阶段,按照流水线并行方式将待推理模型拆分并部署在多个GPU上。
这里,为方便描述,以2台计算机共16个GPU为例,首先通过建模计算出对于GPT3模型,可使用64个一组的输入数据,在处理第一阶段时,16个GPU组成16路流水线(即将待推理模型模型按层级顺序分层拆分为16个子模型,每个GPU处理一个子模型)并行,并每次处理1个数据,连续处理64个数据,减少流水线并行中的空泡时间。
步骤S540,在第二阶段,按照模型并行方式将待推理模型拆分并部署在多个GPU上。
这里,仍以步骤S530的示例为例,在第一阶段完成64个数据处理后,改组成16个GPU的模型并行,1路流水线,并一次处理64个数据,直到最终完成整个推理过程。
需要说明的是,16个GPU都是模型并行,即算子内的参数拆分,每个算子(主要是矩阵乘法和卷积)都在每个GPU上做部分计算。所以此时一个批次就是64个数据,每个GPU都在处理64个数据,只不过每个GPU都进行部分的计算,后续需要有个通信过程把16个GPU的结果综合起来。
GPT3模型有96层解码器(Transformer decoder),在16卡流水线并行时,模型被分成16个子模型,每一子模型含有6层解码器,但是每一层算子上的参数在单个GPU上是完整的,且每一子模型部署在1个GPU上。在16卡模型并行时,待推理模型也被分成16个子部分,但不同的是每一子部分都含有96层解码器,但每一层仅具有1/16的参数。每一个GPU同时保存两种并行方式需要的模型参数,也就是保存6层解码器的全部参数和96层解码器的1/16的参数,从而可进行两个并行部署方式之间的快速切换。
图6为本申请实施例提供的一种分布式模型推理过程的示意图,如图6所示,每个方块代表了一个GPU,以8个GPU组成多卡推理部署方案为例,从上往下依次示出GPU1、GPU2、GPU3、GPU4、GPU5、GPU6、GPU7、GPU8,方块中填充的不同图案代表了不同的输入数据。可以看到空心箭头上边在处理第一阶段61的输出,8个GPU以流水线并行方式依次处理输入数据,而多个不同的输入数据也是依次处理,即GPU1处理数据601时其它GPU还未开始工作,GPU1将数据601处理得到第一个输出后传给GPU2,在GPU1处理下一个数据602的同时GPU2开始处理数据601对应的第一个输出,在GPU1处理下一个数据603的同时GPU3开始处理数据601对应的第一个输出,GPU2开始处理数据602对应的第一个输出,依次类推,直至所有的GPU均处理完最后一个数据604,完成第一阶段的推理过程。空心箭头下边则是处理第二阶段62的后续输出,8个GPU以模型并行的方式同时处理多个输入数据,每次完成一个后续输出,例如第一次计算得到输出结果611,第二次计算得到输出结果612,第三次计算得到输出结果613,直到得到最后一次计算得到输出结果614,推理完毕。
本申请实施例中,根据模型推理不同输出阶段的计算特性,进行了针对性的部署,即针对同一待推理模型,在不同输出阶段使用不同的并行部署方式。通过不同并行方式的特点与GPT模型推理的计算特点结合,提出的一种新型的混合并行方式,在数据并行、模型并行和流水线并行三个维度外,添加了第四个维度,即模型推理阶段混合部署,提高了GPU的利用率,降低了推理延迟,提高了吞吐量。
本申请实施例提供的基于计算单元部署的模型推理方法适用于各种数量的GPU数量组成的GPU集群进行分布式推理。应用于该方法可以大大提高多卡推理的可扩展性,即仅需要损失很少的性能就能扩展到多卡上。通过模拟计算显示,从8个GPU扩展到32个GPU进行多卡推理,可扩展性达到了80%以上,优于一般的多卡部署方案。
基于前述的实施例,本申请实施例提供一种基于计算单元部署的模型推理装置,该装置包括所包括的各模块、以及各模块所包括的各子模块及各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(FieldProgrammable Gate Array,FPGA)等。
图7为本申请实施例提供的一种基于计算单元部署的模型推理装置的组成结构示意图,如图7所示,所述基于计算单元部署的模型推理装置700包括:第一获取模块710、分布部署模块720、第二获取模块730、计算整合模块740,其中:
所述第一获取模块710,用于获取待推理模型;
所述分布部署模块720,用于在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元;其中,所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理;
所述第二获取模块730,用于获取所述多个计算单元各自处理得到的子推理结果;
所述计算整合模块740,基于所述多个计算单元分别对应的所述子推理结果,确定所述待推理模型的目标推理结果。
在一些可能的实施例中,所述装置还包括:第三获取模块,用于获取集群中各计算单元的性能参数;性能建模模块,用于利用所述性能参数进行性能建模,确定计算资源的目标模拟配置;策略部署模块,用于基于所述目标模拟配置和所述至少两个推理阶段各自的计算特点,确定所述不同的并行部署方式。
在一些可能的实施例中,所述至少两个推理阶段包括第一阶段和第二阶段;所述分布部署模块720包括:第一部署子模块,用于在所述第一阶段,采用第一并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元;其中,所述第一阶段用于基于原始数据序列推理得到第一个输出结果;第二部署子模块,用于在所述第二阶段,采用第二并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元;其中,所述第二阶段用于基于所述第一个输出结果推理得到后续输出结果;其中,所述第一并行方式和所述第二并行方式不同,且所述第一并行方式和所述第二并行方式分别包括以下至少一种:数据并行、模型并行和流水线并行。
在一些可能的实施例中,所述第一并行方式为流水线并行,所述第一部署子模块包括:第一数据分组单元,用于将所述原始数据序列分解为多组数据子集;所述多组数据子集中的每组所述数据子集包括至少一个数据;第一部署单元,用于将所述待推理模型按层级顺序分层拆分为至少两个子模型,并将所述至少两个子模型分别部署在所述集群中至少两个对应的计算单元上;其中,所述至少两个子模型中的每个所述子模型包括所述待推理模型中一部分网络层的参数;第一推理单元,用于将所述多组数据子集按组依次输入到所述至少两个子模型中进行推理;其中,在前向计算过程中所述至少两个子模型中当前子模型的输入数据为前一子模型的输出结果。
在一些可能的实施例中,所述第一并行方式包括流水线并行和模型并行,所述第一部署模块还包括:第一确定单元,在拆分得到所述至少两个子模型之后,确定所述至少两个子模型中包含关键算子的目标子模型;其中,所述关键算子的计算量大于第一阈值;模型并行单元,将所述目标子模型拆分为至少两个子部分进行模型并行处理,得到所述目标子模型输出的第一计算结果;其中,每个所述子部分包括所述目标子模型对应的网络层中的部分参数;所述第一计算结果是基于所述至少两个子部分各自的输出结果确定的;将所述第一计算结果作为输入数据传递到所述至少两个子模型中所述目标子模型之后的子模型中进行下一步计算。
在一些可能的实施例中,在所述第一阶段,所述至少两个子模型对应的流水线路数为N,所述至少两个子部分对应的模型并行卡数为M,且M小于或等于N。
在一些可能的实施例中,所述第二并行方式为模型并行,所述第二部署子模块包括:第二数据分组单元,将所述原始数据序列分解为多组数据子集;每组所述数据子集包括至少一个数据;第二部署单元,用于将所述待推理模型中的关键算子拆分为至少两个子部分,并分别部署在所述集群中至少两个对应的计算单元上;其中,所述关键算子的计算量大于第一阈值;所述至少两个子部分各自的模型参数之和为所述关键算子的模型参数;第二推理单元,用于将所述多组数据子集同时输入到所述至少两个子部分中分别进行推理。
在一些可能的实施例中,所述第二并行方式包括模型并行和流水线并行,所述第二部署子模块还包括:第二确定单元,在拆分得到所述至少两个子部分之后,确定所述至少两个子部分中的目标子部分;其中,所述目标子部分的模型参数大于其他子部分的模型参数;流水线并行单元,用于将所述目标子部分按层级顺序分层拆分为至少两个子模型进行流水线并行处理得到所述目标子部分输出的第二计算结果;其中,每个所述子模型包括所述目标子部分中一部分网络层的参数;在前向计算过程中所述至少两个子模型中当前子模型的输入数据为前一子模型的输出结果;所述第二计算结果为所述至少两个子模型中最后一个子模型的输出结果;基于所述第二计算结果和所述至少两个子部分中除所述目标子部分之外的其它子部分的第三计算结果,确定所述关键算子的推理结果。
在一些可能的实施例中,在所述第二阶段,所述至少两个子部分对应的模型并行卡数为K,所述至少两个子模型对应的流水线路数为L,且L小于或等于K。
在一些可能的实施例中,所述第一部署子模块或所述第二部署子模块还包括:第三确定单元,用于确定所述集群中待分配计算单元的第一数量;第四确定单元,用于基于所述第一数量、所述流水线路数和所述模型并行卡数,确定数据并行路数;数据并行单元,用于按照所述数据并行路数将所述原始数据序列进行分组并分配到每一路流水线对应的计算单元中。
在一些可能的实施例中,所述装置还包括:性能检测模块,用于按照预设周期检测所述集群中各所述计算单元的性能参数;性能模拟模块,用于对各所述计算单元的性能参数进行性能模拟,确定至少一个指标值;部署策略调整模块,用于响应于任意所述指标值小于阈值,调整所述不同的并行部署方式。
在一些可能的实施例中,每一所述计算单元同时保存所述流水线并行处理和所述模型并行处理各自需要的模型参数。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的基于计算单元部署的模型推理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图8为本申请实施例中计算机设备的一种硬件实体示意图,如图8所示,该计算机设备800的硬件实体包括:处理器801、通信接口802和存储器803,其中:
处理器801通常控制计算机设备800的总体操作。
通信接口802可以使计算机设备通过网络与其他终端或服务器通信。
存储器803配置为存储由处理器801可执行的指令和应用,还可以缓存待处理器801以及计算机设备800中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。处理器801、通信接口802和存储器803之间可以通过总线804进行数据传输。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (15)
1.一种基于计算单元部署的模型推理方法,其特征在于,所述基于计算单元部署的模型推理方法包括:
获取待推理模型;
在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元;其中,所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理;
获取所述多个计算单元各自处理得到的子推理结果;
基于所述多个计算单元分别对应的所述子推理结果,确定所述待推理模型的目标推理结果。
2.根据权利要求1所述的基于计算单元部署的模型推理方法,其特征在于,所述基于计算单元部署的模型推理方法还包括:
获取所述集群中各计算单元的性能参数;
利用所述性能参数进行性能建模,确定所述各计算单元中计算资源的目标模拟配置;
基于所述目标模拟配置和所述至少两个推理阶段各自的计算特点,确定所述不同的并行部署方式。
3.根据权利要求1所述的基于计算单元部署的模型推理方法,其特征在于,所述至少两个推理阶段包括第一阶段和第二阶段;所述在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元,包括:
在所述第一阶段,采用第一并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元;其中,所述第一阶段用于基于原始数据序列推理得到第一个输出结果;
在所述第二阶段,采用第二并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元;其中,所述第二阶段用于基于所述第一个输出结果推理得到后续输出结果;
其中,所述第一并行方式和所述第二并行方式不同,且所述第一并行方式和所述第二并行方式分别包括以下至少一种:数据并行、模型并行和流水线并行。
4.根据权利要求3所述的基于计算单元部署的模型推理方法,其特征在于,所述第一并行方式为流水线并行,所述采用第一并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元,包括:
将所述原始数据序列分解为多组数据子集;所述多组数据子集中的每组所述数据子集包括至少一个数据;
将所述待推理模型按层级顺序分层拆分为至少两个子模型,并将所述至少两个子模型分别部署在所述集群中至少两个对应的计算单元上;其中,所述至少两个子模型中的每个所述子模型包括所述待推理模型中一部分网络层的参数;
将所述多组数据子集按组依次输入到所述至少两个子模型中进行推理;其中,在前向计算过程中所述至少两个子模型中当前子模型的输入数据为前一子模型的输出结果。
5.根据权利要求4所述的基于计算单元部署的模型推理方法,其特征在于,所述第一并行方式包括流水线并行和模型并行,在拆分得到所述至少两个子模型之后,所述基于计算单元部署的模型推理方法还包括:
确定所述至少两个子模型中包含关键算子的目标子模型;其中,所述关键算子的计算量大于第一阈值;
将所述目标子模型拆分为至少两个子部分进行模型并行处理,得到所述目标子模型输出的第一计算结果;其中,每个所述子部分包括所述目标子模型对应的网络层中的部分参数;所述第一计算结果是基于所述至少两个子部分各自的输出结果确定的;
将所述第一计算结果作为输入数据传递到所述至少两个子模型中所述目标子模型之后的子模型中进行下一步计算。
6.根据权利要求5所述的基于计算单元部署的模型推理方法,其特征在于,在所述第一阶段,所述至少两个子模型对应的流水线路数为N;所述至少两个子部分对应的模型并行卡数为M,且M小于或等于N。
7.根据权利要求3所述的基于计算单元部署的模型推理方法,其特征在于,所述第二并行方式为模型并行,所述采用第二并行方式将所述待推理模型拆分并部署在所述集群中的多个计算单元,包括:
将所述原始数据序列分解为多组数据子集;所述多组数据子集中的每组所述数据子集包括至少一个数据;
将所述待推理模型中的关键算子拆分为至少两个子部分,并将所述至少两个子部分分别部署在所述集群中至少两个对应的计算单元上;其中,所述关键算子的计算量大于第一阈值;所述至少两个子部分各自的模型参数之和为所述关键算子的模型参数;
将所述多组数据子集同时输入到所述至少两个子部分中分别进行推理。
8.根据权利要求7所述的基于计算单元部署的模型推理方法,其特征在于,所述第二并行方式包括模型并行和流水线并行,在拆分得到所述至少两个子部分之后,所述基于计算单元部署的模型推理方法还包括:
确定所述至少两个子部分中的目标子部分;其中,所述目标子部分的模型参数大于其他子部分的模型参数;
将所述目标子部分按层级顺序分层拆分为至少两个子模型进行流水线并行处理,得到所述目标子部分输出的第二计算结果;其中,每个所述子模型包括所述目标子部分中一部分网络层的参数;在前向计算过程中所述至少两个子模型中当前子模型的输入数据为前一子模型的输出结果;所述第二计算结果为所述至少两个子模型中最后一个子模型的输出结果;
基于所述第二计算结果和所述至少两个子部分中除所述目标子部分之外的其它子部分的第三计算结果,确定所述关键算子的推理结果。
9.根据权利要求8所述的基于计算单元部署的模型推理方法,其特征在于,在所述第二阶段,所述至少两个子部分对应的模型并行卡数为K,所述至少两个子模型对应的流水线路数为L,且L小于或等于K。
10.根据权利要求6或9所述的基于计算单元部署的模型推理方法,其特征在于,所述基于计算单元部署的模型推理方法还包括:
确定所述集群中待分配计算单元的第一数量;
基于所述第一数量、所述流水线路数和所述模型并行卡数,确定数据并行路数;
按照所述数据并行路数将所述原始数据序列进行分组并分配到每一路流水线对应的计算单元中。
11.根据权利要求2至9任一项所述的基于计算单元部署的模型推理方法,其特征在于,所述基于计算单元部署的模型推理方法还包括:
按照预设周期检测所述集群中各所述计算单元的性能参数;
对各所述计算单元的性能参数进行性能模拟,确定至少一个指标值;
响应于任意所述指标值小于阈值,调整所述不同的并行部署方式。
12.根据权利要求5或8所述的基于计算单元部署的模型推理方法,其特征在于,每一所述计算单元同时保存所述流水线并行处理和所述模型并行处理各自需要的模型参数。
13.一种基于计算单元部署的模型推理装置,其特征在于,所述基于计算单元部署的模型推理装置包括:
第一获取模块,用于获取待推理模型;
分布部署模块,用于在所述待推理模型的至少两个推理阶段,采用不同的并行部署方式分别将所述待推理模型拆分并部署在集群中的多个计算单元;其中,所述并行部署方式表征通过所述多个计算单元对拆分的各部分执行并行处理;
第二获取模块,用于获取所述多个计算单元各自处理得到的子推理结果;
计算整合模块,基于所述多个计算单元分别对应的所述子推理结果,确定所述待推理模型的目标推理结果。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至12任一项所述方法中的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311866372.8A CN117494816B (zh) | 2023-12-31 | 2023-12-31 | 基于计算单元部署的模型推理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311866372.8A CN117494816B (zh) | 2023-12-31 | 2023-12-31 | 基于计算单元部署的模型推理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117494816A true CN117494816A (zh) | 2024-02-02 |
CN117494816B CN117494816B (zh) | 2024-03-26 |
Family
ID=89683340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311866372.8A Active CN117494816B (zh) | 2023-12-31 | 2023-12-31 | 基于计算单元部署的模型推理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117494816B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200027210A1 (en) * | 2018-07-18 | 2020-01-23 | Nvidia Corporation | Virtualized computing platform for inferencing, advanced processing, and machine learning applications |
US20200045116A1 (en) * | 2018-07-31 | 2020-02-06 | Nutanix, Inc. | System and method for intent-based service deployment |
CN111274034A (zh) * | 2020-01-19 | 2020-06-12 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN112671582A (zh) * | 2020-12-25 | 2021-04-16 | 苏州浪潮智能科技有限公司 | 一种基于边缘推理集群的人工智能推理方法和系统 |
CN114816801A (zh) * | 2022-05-09 | 2022-07-29 | 北京潞晨科技有限公司 | 基于多种通信模式的深度学习大模型推理部署方法 |
CN114911492A (zh) * | 2022-05-17 | 2022-08-16 | 北京百度网讯科技有限公司 | 推理服务部署方法、装置、设备以及存储介质 |
US11429893B1 (en) * | 2018-11-13 | 2022-08-30 | Amazon Technologies, Inc. | Massively parallel real-time database-integrated machine learning inference engine |
CN115511086A (zh) * | 2022-11-03 | 2022-12-23 | 上海人工智能创新中心 | 一种针对超大模型的分布式推理部署系统 |
US20230031636A1 (en) * | 2021-07-28 | 2023-02-02 | International Business Machines Corporation | Artificial intelligence (ai) model deployment |
CN116151374A (zh) * | 2022-11-29 | 2023-05-23 | 北京百度网讯科技有限公司 | 分布式模型推理方法、装置、设备、存储介质以及程序产品 |
-
2023
- 2023-12-31 CN CN202311866372.8A patent/CN117494816B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200027210A1 (en) * | 2018-07-18 | 2020-01-23 | Nvidia Corporation | Virtualized computing platform for inferencing, advanced processing, and machine learning applications |
US20200045116A1 (en) * | 2018-07-31 | 2020-02-06 | Nutanix, Inc. | System and method for intent-based service deployment |
US11429893B1 (en) * | 2018-11-13 | 2022-08-30 | Amazon Technologies, Inc. | Massively parallel real-time database-integrated machine learning inference engine |
CN111274034A (zh) * | 2020-01-19 | 2020-06-12 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN112671582A (zh) * | 2020-12-25 | 2021-04-16 | 苏州浪潮智能科技有限公司 | 一种基于边缘推理集群的人工智能推理方法和系统 |
US20230031636A1 (en) * | 2021-07-28 | 2023-02-02 | International Business Machines Corporation | Artificial intelligence (ai) model deployment |
CN114816801A (zh) * | 2022-05-09 | 2022-07-29 | 北京潞晨科技有限公司 | 基于多种通信模式的深度学习大模型推理部署方法 |
CN114911492A (zh) * | 2022-05-17 | 2022-08-16 | 北京百度网讯科技有限公司 | 推理服务部署方法、装置、设备以及存储介质 |
CN115511086A (zh) * | 2022-11-03 | 2022-12-23 | 上海人工智能创新中心 | 一种针对超大模型的分布式推理部署系统 |
CN116151374A (zh) * | 2022-11-29 | 2023-05-23 | 北京百度网讯科技有限公司 | 分布式模型推理方法、装置、设备、存储介质以及程序产品 |
Non-Patent Citations (6)
Title |
---|
MINDSPORE: "新版本MindSpore 1.3", pages 1 - 12, Retrieved from the Internet <URL:https://www.mindspore.cn/news/newschildren?id=653&type=versionRelease> * |
WEI ZENG ET AL.: "PANGU-α: LARGE-SCALE AUTOREGRESSIVE PRETRAINED CHINESE LANGUAGE MODELS WITH AUTO-PARALLEL COMPUTATION", 《ARXIV》, 26 April 2021 (2021-04-26), pages 1 - 23 * |
宦晓玲: "基于MindSpore Serving部署分布式推理服务", pages 1 - 6, Retrieved from the Internet <URL:https://gitee.com/mindspore/docs/blob/r1.3/docs/serving/docs/source_zh_cn/serving_distributed_example.md> * |
宦晓玲: "自动加速数据", pages 1 - 6, Retrieved from the Internet <URL:https://gitee.com/mindspore/docs/blob/r1.7/tutorials/experts/source_zh_cn/debug/dataset_autotune.md#> * |
胡延步;邵翠萍;李慧云;: "基于多现场可编程门阵列异构平台的流水线技术优化方法", 集成技术, no. 05, 15 September 2020 (2020-09-15), pages 83 - 94 * |
顾荣;王善永;郭晨;袁春风;黄宜华;: "基于Spark的大规模语义规则后向链推理系统", 中文信息学报, no. 03, 15 March 2018 (2018-03-15), pages 125 - 139 * |
Also Published As
Publication number | Publication date |
---|---|
CN117494816B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10482380B2 (en) | Conditional parallel processing in fully-connected neural networks | |
US20180018555A1 (en) | System and method for building artificial neural network architectures | |
CN109325516B (zh) | 一种面向图像分类的集成学习方法及装置 | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CN111709493B (zh) | 对象分类方法、训练方法、装置、设备及存储介质 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN111695696A (zh) | 一种基于联邦学习的模型训练的方法及装置 | |
WO2019001323A1 (zh) | 信号处理的系统和方法 | |
CN111738276A (zh) | 基于多核卷积神经网络的图像处理方法、装置及设备 | |
CN116644804A (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN116681127B (zh) | 一种神经网络模型训练方法、装置及电子设备和存储介质 | |
CN117494816B (zh) | 基于计算单元部署的模型推理方法、装置、设备及介质 | |
CN110750363B (zh) | 计算机存储管理方法和装置、电子设备和存储介质 | |
CN117291259A (zh) | 算子优化方法、装置、电子设备及存储介质 | |
CN116962176A (zh) | 一种分布式集群的数据处理方法、装置、系统及存储介质 | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
CN111563598A (zh) | 预估量子计算模拟时间的方法、系统 | |
CN110852414A (zh) | 高精度低位卷积神经网络 | |
US20230259780A1 (en) | Neural network sparsification apparatus and method and related product | |
CN114595815A (zh) | 一种面向传输友好的云-端协作训练神经网络模型方法 | |
TW202230226A (zh) | 類神經網路的稀疏組平衡式啟動特徵圖 | |
CN110472700B (zh) | 一种基于卷积神经网络的参数填充方法与装置 | |
CN116781484B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN113112009A (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 | |
CN113657136A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |