CN116991560B - 针对语言模型的并行调度方法、装置、设备及存储介质 - Google Patents

针对语言模型的并行调度方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116991560B
CN116991560B CN202311237684.2A CN202311237684A CN116991560B CN 116991560 B CN116991560 B CN 116991560B CN 202311237684 A CN202311237684 A CN 202311237684A CN 116991560 B CN116991560 B CN 116991560B
Authority
CN
China
Prior art keywords
data
language model
working end
tensor
computing node
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.)
Active
Application number
CN202311237684.2A
Other languages
English (en)
Other versions
CN116991560A (zh
Inventor
杨海钦
刘力铭
叶俊鹏
梁健豪
杨杰
幺宝刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Digital Economy Academy IDEA
Original Assignee
International Digital Economy Academy IDEA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Digital Economy Academy IDEA filed Critical International Digital Economy Academy IDEA
Priority to CN202311237684.2A priority Critical patent/CN116991560B/zh
Publication of CN116991560A publication Critical patent/CN116991560A/zh
Application granted granted Critical
Publication of CN116991560B publication Critical patent/CN116991560B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/58Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Image Processing (AREA)

Abstract

本申请公开了一种针对语言模型的并行调度方法、装置、设备及存储介质,方法包括根据将待处理数据批划分为若干子数据批并分配至不同工作端;根据工作端的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量划分为若干张量块,将各张量块配置于不同计算节点;控制各计算节点并行运行语言模型的推理过程以得到输出数据。本申请通过在执行语言模型的推理过程中根据工作端的各计算节点在用于执行每个待处理数据批时的显存使用率对张量进行动态划分,使得各计算节点分配到的张量块的大小可以根据显存使用率来动态调节,有效提高了计算节点的显存利用率,减少显存冗余,提高了语言模型的推理速度,从而缩短了语言模型的训练时间。

Description

针对语言模型的并行调度方法、装置、设备及存储介质
技术领域
本申请涉及神经网络应用技术领域,特别涉及一种针对语言模型的并行调度方法、装置、设备及存储介质。
背景技术
目前为了应对语言模型的参数量的增加,普遍是通过使用张量并行和流水量并行结合的方式来执行语言模型的推理阶段和训练阶段。然而,在语言模型的推理阶段,流水线并会将语言模型划分为多个模型阶段,然后通过不同计算节点来执行不同模型阶段。这种方式会造成任一时间步仅有一个计算节点处于工作状态,而其他计算节点处于空闲状态,从而语言模型推荐阶段的计算节点产生大量冗余,且影响语言模型的推理速度。
因而现有技术还有待改进和提高。
发明内容
本申请要解决的技术问题在于,针对现有技术的不足,提供一种针对语言模型的并行调度方法、装置、设备及存储介质。
为了解决上述技术问题,本申请实施例第一方面提供了一种针对语言模型的并行调度方法,所述并行调度方法具体包括:
检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段;
当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;
对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点;
控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。
所述的针对语言模型的并行调度方法,其中,所述根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批具体包括:
实时获取用于执行语言模型各工作端用于执行所述待处理数据批时的IO使用率;
对于每个工作端,根据所述工作端的IO使用率和所有工作端的IO使用率,确定所述工作端对应的数据量占比;
按照各工作端各自对应的数据量占比对待处理数据批进行动态划分,以得到若干子数据批。
所述的针对语言模型的并行调度方法,其中,所述基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块具体包括:
实时获取各计算节点用于执行所述待处理数据批时的显存使用率;
根据各计算节点的显存使用率和所有计算节点的显存使用率,确定所述计算节点对应的张量占比;
按照各计算节点对应的张量占比将语言模型的张量动态划分为若干张量块。
所述的针对语言模型的并行调度方法,其中,所述控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据具体包括:
对于每个工作端,将所述工作端对应的子数据批输入所述工作端的各计算节点;
控制所述工作端搭载的各计算节点并行运行语言模型,以得到所述子数据批对应的输出数据。
所述的针对语言模型的并行调度方法,其中,所述控制所述工作端搭载的各计算节点并行运行语言模型,以得到所述子数据批对应的输出数据具体包括:
控制所述工作端搭载的各计算节点分别将子数据批转换为初始数据矩阵;
将所述初始数据矩阵作为目标数据矩阵,并控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算,得到结果张量;
将所述工作端搭载的各计算节点得到的结果张量进行拼接,以得到输出数据;
将所述输出数据作为目标数据矩阵,重新执行控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算得到结果张量的步骤,直至得到所述子数据批对应的输出数据。
所述的针对语言模型的并行调度方法,其中,语言模型的张量划分为按照行维度划分或者按照列维度划分。
所述的针对语言模型的并行调度方法,其中,所述方法还包括:
当所述运行阶段为训练阶段时,获取训练阶段对应的调度策略,并按照所述调度策略控制各工作端搭载的各计算节点并行运行语言模型。
本申请实施例第二方面提供了一种针对语言模型的并行调度装置,所述并行调度装置包括:
检测模块,用于检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段;
第一划分模块,用于当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;
第二划分模块,用于对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点;
控制模块,用于控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。
本申请实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的针对语言模型的并行调度方法中的步骤。
本申请实施例第四方面提供了一种终端设备,其包括:处理器和存储器;
所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述处理器执行所述计算机可读程序时实现如上任一所述的针对语言模型的并行调度方法中的步骤。
有益效果:与现有技术相比,本申请提供了一种针对语言模型的并行调度方法、装置、设备及存储介质,所述方法包括:检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段;当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点;控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。本申请通过在执行语言模型的推理过程中根据工作端的各计算节点在用于执行每个待处理数据批时的显存使用率对张量进行动态划分,使得各计算节点分配到的张量块的大小可以根据显存使用率来动态调节,有效提高了计算节点的显存利用率,减少显存冗余,提高了语言模型的推理速度,从而缩短了语言模型的训练时间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有并行方法的示意图。
图2为本申请提供的针对语言模型的并行调度方法的流程图。
图3为待处理数据批划分的示意图。
图4为张量划分的示意图。
图5为针对语言模型的并行调度方法的一个具体例子的流程示意图。
图6为本申请提供的针对语言模型的并行调度装置的结构原理图。
图7为本申请提供的终端设备的结构原理图。
具体实施方式
本申请提供一种针对语言模型的并行调度方法、装置、设备及存储介质,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
经过研究发现,目前神经网络模型采用的并行方案普遍为张量并行、流水线并行和数据并行,其中,张量并行为利用分开矩阵计算原理,将网络层内的参数张量平均切分到不同设备,多设备并行处理同一层内的参数。流水线并行为将语言模型切分为若干模型阶段,然后将各模型阶段分配至不同计算节点,通过不同计算节点来并行运行。数据并行为在每个计算节点上拷贝一份完整模型,然后每个GPU上分别计算一部分数据的梯度,最后对梯度进行累加来更新整体模型。
然而,随着神经网络模型的模型参数量的增加,已经出现千亿级别的大语言模型。对于千亿级别的大语言模型(记为语言模型)来说,仅采用张量并行、流水线并行或数据并行来进行语言模型训练,会出现语言模型训练时间长的问题。为此,目前为了应对语言模型的参数量的增加,普遍是通过使用张量并行和流水量并行结合的方式来执行语言模型的推理阶段和训练阶段。然而,在语言模型的推理阶段,流水线并会将语言模型划分为多个模型阶段,然后通过不同计算节点来执行不同模型阶段。如图1所述,这种方式会造成任一时间步仅有一个计算节点处于工作状态,而其他计算节点处于空闲状态,从而语言模型推荐阶段的计算节点产生大量冗余,且影响语言模型的推理速度。
为了解决上述问题,在本申请实施例中,将推理阶段与训练阶段分离,在语言模型运行过程中会检测语言模型的运行阶段;当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点;控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。本申请通过在执行语言模型的推理过程中根据工作端的各计算节点在用于执行每个待处理数据批时的显存使用率对张量进行动态划分,使得各计算节点分配到的张量块的大小可以根据显存使用率来动态调节,有效提高了计算节点的显存利用率,减少显存冗余,提高了语言模型的推理速度,从而缩短了语言模型的训练时间。
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
本实施例提供了一种针对语言模型的并行调度方法,如图2所示,所述并行调度方法将语言模型的训练过程分为两个运行阶段,分别为推理阶段和训练阶段,并且分别为推理阶段和训练阶段配置各自对应的调度策略,其中,推理阶段对应的调度策略与训练阶段对应的调度策略不同。所述方法包括:
S10、检测语言模型的运行阶段。
具体地,运行阶段为推理阶段或者训练阶段,其中,推理阶段可以为训练过程中的前向学习过程,训练阶段可以为训练过程中的反向学习过程。也就是说,在对语言模型进行并行调度时,会检测语言模型需要进行前向学习过程还是进行反向学习过程,当进行前向学习过程时,判定语言模型的运行阶段为推理阶段,当进行反向学习过程是,判定语言模型的运行阶段为训练阶段。本申请实施例这样将语言模型的推理阶段和训练阶段分离,可以为推理阶段和训练阶段配置不同的调度策略,避免推理阶段和训练阶段采用相同的调度策略导致的调度策略与语言模型的运行过程不匹配,从而可以实现语言模型运行过程中的最优调度,提高计算节点的利用率,从而提高语言模型的训练速度。
S20、当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端。
具体地,用于执行语言模型的工作端以及工作端搭载的计算节点为预先设置的,其中,用于执行语言模型的工作端为至少为两个,并且每个工作端均搭载有至少两个计算节点。例如,用于执行语言模型的工作端为两个,分别记为server0和server1,server0和server1均搭载有两个计算节点,server0搭载的两个计算节点分别记为GPU0和GPU1,server1搭载的两个计算节点分别记为GPU2和GPU3。
待处理数据批可以为一个数据批,该数据批中包括有若干条数据,例如,待处理数据批包括1000条待翻译中文语句。若干子数据批的数量与用于执行语言模型的工作端的第一数量相同,也就是说,将待处理数据批划分为第一数量的数据块,每个数据块为一个子数据批。其中,在各子数据批所包括的数据量相同,例如,将1000条待翻译中文语句等分为两个子数据批,每个子数据批包括500条待翻译中文语句;或者是,各子数据批所包括的数据量不同,例如,将1000条待翻译中文语划分为两个子数据批,一个子数据批包括400条待翻译中文语句,另一个子数据批包括600条待翻译中文语句等。
在本申请实施例的一个实现方式中,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批具体包括:
S21、实时获取用于执行语言模型各工作端用于执行所述待处理数据批时的IO使用率;
S22、对于每个工作端,根据所述工作端的IO使用率和所有工作端的IO使用率,确定所述工作端对应的数据量占比;
S23、按照各工作端各自对应的数据量占比对待处理数据批进行动态划分,以得到若干子数据批。
具体地,IO使用率指的是工作端输入输出(input/output)资源的使用率,IO使用率的大小可以应用工作端响应语言模型速度,还可能会因为IO使用率高而导致工作端的剩余IO资源不够用,进而导致语言模型的推理认为出现拥塞,因而影响语言模型的推理速度。基于此,本申请实施例中获取到的IO使用率为工作端用于运行该待处理数据批时的IO使用率。也就是说,对于不同的待处理数据批,在对待处理数据批进行划分前,均会获取工作端当前的IO使用率,然后根据工作端当前的IO使用率对待处理数据批进行动态划分,这样可以根据工作端的IO使用率来每个工作端分配到子数据批的数据量进行动态调整,以使得各待处理数据批的划分方式与各用于执行所述待处理数据批时的IO使用率相匹配。
在申请实施例的一个实现方式中,在基于IO使用率对待处理数据批进行划分时,会基于各工作端的OI使用率来确定各工作端对应的数据量占比(即确定各工作端对应的数据量),然后根据各工作端对应的数据量占比来将待处理数据批划分为若干子数据批,若干子数据批的数据量占比与各工作端对应的数据量占比一一对应。
每个工作端的数据量占比是根据该工作端的IO使用率和所有工作端的整体IO使用率来确定,使得各工作端对各自对应的子数据批的处理速度保持一致,这样可以避免出现因个别工作端出现拥塞而导致的其他工作端空闲的问题。在本申请实施例中,工作端对应的数据量占比的计算公式可以为:
其中,表示第/>台工作端的IO使用率,/>表示第/>台工作端的数据量占比,表示工作端的数量,/>表示第/>台工作端的IO使用率。
本申请实施例通过将各工作端的剩余IO使用率与所有工作端的剩余IO使用率之和的比值作为数据量占比,然后根据各工作端的数据量占比来对待处理数据批进行划分,这样可以使得各工作端分配到的子数据比的数据量与待处理数据批的数据量的比值等于工作端的剩余IO使用率与所有工作端的剩余IO使用率之和的比值相等,这样可以使得各工作端读取各自对应的子数据批所需的时间基本同步,避免出现工作端间的相互等待的问题。
举例说明:假设待处理数据批包括1000条数据,工作端为两个,分别记为server0和server1,server0的IO使用率为80%,server1的IO使用率为20%,那么server0的数据量占比为20%,server1的数据量占比为80%,如图3所示,待处理数据批被划分为两个微数据比,一个子数据批的数据量为800条,一个子数据批的数据量为200条,其中,数据量为800条的数据比被分配给server1,数据量为200条的数据比被分配给server0。
S30、对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点。
具体地,语言模型可以对应一个张量,也可以形成多个张量。例如,语言模型包括12个网络层,对应两个张量等。基于此,在将语言模型的张量划分为若干张量块时,是将语言模型对应的每个张量划分为若干张量块,例如,语言模型对应张量d和张量c,那么将张量d和张量c均划分为若干张量块。张量的划分方式可以为按照行维度进行划分,也可以是按照列维度进行划分,并且当语言模型对应多个张量时,按照张量执行顺序,相连两个张量的划分方式不同,例如,相邻两个张量中前一张量的划分方式为按照列维度划分,那么后一张量的划分方式为按照行维度划分。例如,网络层包括张量d和张量c,张量d采用按照列维度划分方式划分为张量块d0和张量块d1,张量c采用按照行划分方式划分为张量块c0和张量块c1。
在本申请实施例的一个实现方式中,所述基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块具体包括:
S31、实时获取各计算节点用于执行所述待处理数据批时的显存使用率;
S32、根据各计算节点的显存使用率和所有计算节点的显存使用率,确定所述计算节点对应的张量占比;
S33、按照各计算节点对应的张量占比将语言模型的张量动态划分为若干张量块。
具体地,显存使用率用于反映计算节点的工作负载,根据显示使用率可以确定各计算节点的处理能力。计算节点的张量占比与计算节点的显存使用率成反比,也就是说,计算节点的显存使用率越高,那么计算节点对应的张量占比越小,反之,计算节点的显存使用率越低,那么计算节点对应的张量占比越高,这样可以有效提高各计算节点的显存利用率,减少显存冗余。
在本申请实施例的一个实现方式中,计算节点对应的张量占比的计算公式可以为:
其中,表示第/>个计算节点的显存利用率,/>表示第/>个计算节点的显存利用率,/>表示第/>个计算节点的张量占比,/>表示计算节点的数量。
本申请实施例通过将各计算节点的剩余显示利用率与所有计算节点的剩余显示利用率之和的比值作为张量占比,然后根据各计算节点的张量占比来对语言模型对应的张量进行动态划分,这样可以使得各计算节点分配到张量块在划分维度(例如,行维度划分或者列维度划分)的子维度与张量在划分维度上的维度的比值等于计算节点的剩余显示利用率与所有计算节点的剩余显示利用率之和的比值,使得各计算节点基于各自对应的张量块进行计算所需的时间基本同步,避免出现计算节点间的相互等待的问题。
举例说明:如图4所示,工作端搭载两个计算节点,分别记为GPU0和GPU1,GPU0的显存使用率为60%,GPU1的显存使用率为20%,GPU0的张量占比为((1-60%)/[(1-60%)+(1-20%)])=1/3,GPU1的张量占比为((1-20%)/[(1-60%)+(1-20%)])=2/3,从而将张量d(维度k*n)按照列维度划分为张量块d0和张量块d1,张量块d0的维度为k*n/3,张量块d1的维度为k*2n/3,将张量c(维度n*z)按照行维度划分为张量块c0和张量块c1,张量块c0的维度为(n/3)*z,张量块d1的维度为(2n/3)*z,其中,张量块d0用于分配至GPU0,张量块d1用于分配至GPU1,张量块c0用于分配至GPU0,张量块c1用于分配至GPU1。
S40、控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。
具体地,各工作端搭载的计算节点并行运行语言模型的推理过程指的是各计算节点基于其所属工作端对应的子数据批以及其自身配置的张量块来进行推理运行,其中,各计算节点运行完各自配置的所有张量块所需要的时间步相同。这样可以避免因某个计算节点运行效率低而导致的其他计算节点出现空闲的情况,可以提高计算节点的资源利用率。
在本申请实施例的一个实现方式中,所述控制所述工作端搭载的各计算节点并行运行语言模型,以得到所述子数据批对应的输出数据具体包括:
S41、控制所述工作端搭载的各计算节点分别将子数据批转换为数据矩阵,并将所述初始数据矩阵作为目标数据矩阵;
S42、控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算,得到结果张量;
S43、将所述工作端搭载的各计算节点得到的结果张量进行拼接,以得到输出数据;
S44、将所述输出数据作为目标数据矩阵,重新执行控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算得到结果张量的步骤,直至得到所述子数据批对应的输出数据。
具体地,各工作端将各自对应的子数据批输入其搭载的计算节点,各计算节点将其收到的子数据批转换为数据矩阵,然后将数据矩阵与计算节点中的张量块进行运算得到结果张量,其中,若语言模型有多个张量时,数据矩阵会依次与各张量的张量块进行运算。例如,如图4所示,当语言模型包括张量d(维度为k*n)和张量c(维度为n*z),计算节点GPU0中配置有张量块d0(维度为k*(n/3))和张量块c0(维度为(n/3)*z),GPU0对应的数据矩阵为a0(维度为m*k),那么a0先和d0相乘得到m*(n/3)维度的中间结果t0,然后中间结果t0(维度为m*(n/3))再与c0(维度为(n/3)*z)相乘得到m*z维度的结果张量o0(维度为m*z)。
进一步,在工作端的各计算节点均得到各自对应的结果张量后,将各结果张量进行相加(例如,执行Allreduce操作),得到输出数据。然后将所述输出数据作为数据矩阵,重复控制计算节点并行运行的过程,直至得到语言模型的输出数据。本申请实施例在控制所述工作端搭载的各计算节点并行运行语言模型时,预先将语言模型中的张量均划分为张量块,并布置于各计算节点中,这样可以提高各计算节点的显存利用率。也就是说,本申请实施例对每个数据批的推理阶段进行动态张量划分和动态数据划分,动态张量划分是基于工作端搭载的计算节点的显存使用率进行的,动态数据划分是基于工作端的IO使用率来进行,通过将动态张量并行和动态数据并行相结合,可以提高各工作端中的各计算节点的显存利用率,并且可以使得各工作端中的各计算节点运行其自身配置的张量块的速度保持一致,减少计算节点空闲,提高了计算节点利用率。
在本申请实施例的一个实现方式中,运行阶段可以为训练阶段,训练阶段可以采用与推理阶段不同的调度策略。由此,在当所述运行阶段为训练阶段时,获取训练阶段对应的调度策略,并按照所述调度策略控制各工作端搭载的各计算节点并行运行语言模型,其中,训练阶段对应的调度策略可以采用张量并行的调度策略,可以采用流水线并行的调度策略,或者张量并行和流水线并行的调度策略。在一个典型实现方式中,训练阶段对应的调度策略采用张量并行和流水线并行的调度策略。
综上所述,本实施例提供了一种针对语言模型的并行调度方法,所述方法包括:检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段;当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点;控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。本申请通过将推理阶段与训练阶段分离,在推理阶段采用数据并行和张量并行的方式,并基于计算节点的显存使用率来进行张量划分,有效提高了计算节点的显存利用率,减少显存冗余,提高了语言模型的推理速度,从而缩短了语言模型的训练时间。
为了进一步说明本申请实施例提供的针对语言模型的并行调度方法,下面结合一个具体例子进行说明。
语言模型用于译英机器翻译场景,工作端有2台,分别记为server0和server1,server0和server1均有2块GPU,server0的两个GPU分别记为GPU0和GPU1,server1的两个GPU分别记为GPU2和GPU3,server0和server1中的每个GPU均为8G显存,语言模型为7B的大语言模型,语言模型包括若干网络层,假设每个网络层均包括k*n的张量d和n*z张量c,张量d为[[1.923,..., 0.842],...,[0.231,...,0.963]],张量c为[[0.664,..., 0.52],...,[1.121,...,1.36]],待处理数据批为1000条待翻译的中文,当语言模型的运行阶段为推理阶段时,如图5所示,针对语言模型的并行调度方法具体包括:
步骤0:
搜集server0和server1的IO使用率,server0的IO使用率为80%,server1的IO使用率为20%,根据IO使用率计算得到server0的数据量占比为20%,server1的数据量占比为80%,根据数据量占比将待处理数据批划分为包括200条数据的子数据批data0[“这部手机多少钱”,...,“今天几点开会”]和包括800条数据的子数据批data1[“今天电影真精彩”,...,“很高兴见到你”],子数据批data0分配到server0进行推理,子数据批data1分配到server1进行推理。
对于server0,实时获取GPU0和GPU1的显存使用率,分别为60%和20%,根据显存使用率计算得到GPU0的张量占比为1/3,GPU1的张量占比为2/3,将张量d(维度为k*n)按列维度切分1/3得到的d0(维度为k*(n/3))和张量c(维度n*z)按行维度切分1/3得到的c0(维度为(n/3)*z)加载到GPU0,张量d按列维度切分2/3得到的d1(维度k*(2n/3))和张量c按行维度切分2/3得到的c1(维度为(2n/3)*z)加载到GPU1。
对于server1,“实时获取GPU2和GPU3的显存使用率,分别为50%和50%,根据显存使用率计算得到GPU0的张量占比为1/2,GPU1的张量占比为1/2,将张量d(维度为k*n)按列维度切分1/2得到的d2(维度为k*(n/2))和张量c(维度n*z)按行维度切分1/2得到的c2(维度为(n/2)*z)加载到GPU2,张量d按列维度切1/2得到的d3(维度k*(n/2))和张量c按行维度切分1/2得到的c3(维度为(n/2)*z)加载到GPU3。
至此完成不同服务器的数据并行动态划分,和同服务器内不同GPU张量并行动态划分和加载。
步骤1:
GPU0将输入的待翻译数据data0转化成矩阵形式,即得到200*k维的矩阵a0,GPU1将输入的待翻译数据data1转化成数组形式,得到200*k维的矩阵a1,GPU2将输入的待翻译数据data2转化成数组形式,得到800*k维的矩阵a2,GPU3将输入的待翻译数据data3转化成数组形式,得到800*k维的矩阵a3。
步骤2:
GPU0将a0与d0进行相乘得到维度200*n/3的矩阵t0,GPU1将a1与d1进行相乘得到维度200*2n/3的矩阵t1,GPU2将a2与d2进行相乘得到维度800*n/2的矩阵t2,GPU3将a3与d3进行相乘得到维度800*n/2的矩阵t3。
步骤3:
GPU0将t0与c0进行相乘得到维度200*z的矩阵o0,GPU1将t1与c1进行相乘得到维度200*z的矩阵o1,GPU2将t2与c2进行相乘得到维度800*z的矩阵o2,GPU3将t3与c3进行相乘得到维度800*z的矩阵o3。
步骤4:
o0和o1进行AllReduce操作,例如,o0=[[0.41,...],...,[0.42,...]],o1=[[0.62,...],...,[0.91,...]],Allreduce操作为o0+o1得到o01[[1.03,...],...,[1.33,...]];o2和o3进行AllReduce操作,例如:o2=[[0.22,...],...,[0.39,...]],o3=[[0.86,...],...,[0.67,...]],Allreduce操作为o2+o3得到o23,[[1.08,...],...,[1.06,...]]。
步骤5:
按照语言根据模型的网络层顺序,按照步骤2-4进行循环计算,其中,在循环计算时,前一个循环的输出数据为后续一个循环的输入数据。
步骤6:
经过若干轮计算后得到o(o01和o23为o的中间结果)并进行转换得到output,具体的对于server0输出200维的翻译结果output0,[“how much is this phone”,...“whattime is the meeting today”]。对于server1输出800维的翻译结果output1,[“Today'smovie is wonderful”,...“Nice to meet you”]。
基于上述针对语言模型的并行调度方法,本实施例提供了一种针对语言模型的并行调度装置,如图6所示,所述并行调度装置包括:
检测模块100,用于检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段;
第一划分模块200,用于当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;
第二划分模块300,用于对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点;
控制模块400,用于控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据。
基于上述针对语言模型的并行调度方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的针对语言模型的并行调度方法中的步骤。
基于上述针对语言模型的并行调度方法,本申请还提供了一种终端设备,如图7所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(Communications Interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种针对语言模型的并行调度方法,其特征在于,所述并行调度方法具体包括:
检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段,所述推理阶段和所述训练阶段配置各自对应的调度策略,所述推理阶段对应的调度策略与训练阶段对应的调度策略不同;
当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;
对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点,其中,各计算节点基于各自对应的张量块进行计算所需的时间同步;
控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据;
其中,所述根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批具体为在对待处理数据批进行划分前,获取工作端当前的IO使用率,根据工作端当前的IO使用率将待处理数据批进行动态划分为若干子数据批;
工作端搭载的计算节点并行运行语言模型的过程具体包括:
控制所述工作端搭载的各计算节点分别将子数据批转换为初始数据矩阵;
将所述初始数据矩阵作为目标数据矩阵,并控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算,得到结果张量;
将所述工作端搭载的各计算节点得到的结果张量进行拼接,以得到输出数据;
将所述输出数据作为目标数据矩阵,重新执行控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算得到结果张量的步骤,直至得到所述子数据批对应的输出数据。
2.根据权利要求1所述的针对语言模型的并行调度方法,其特征在于,所述根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批具体包括:
实时获取用于执行语言模型各工作端用于执行所述待处理数据批时的IO使用率;
对于每个工作端,根据所述工作端的IO使用率和所有工作端的IO使用率,确定所述工作端对应的数据量占比;
按照各工作端各自对应的数据量占比对待处理数据批进行动态划分,以得到若干子数据批。
3.根据权利要求1所述的针对语言模型的并行调度方法,其特征在于,所述基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块具体包括:
实时获取各计算节点用于执行所述待处理数据批时的显存使用率;
根据各计算节点的显存使用率和所有计算节点的显存使用率,确定所述计算节点对应的张量占比;
按照各计算节点对应的张量占比将语言模型的张量动态划分为若干张量块。
4.根据权利要求1所述的针对语言模型的并行调度方法,其特征在于,所述控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据具体包括:
对于每个工作端,将所述工作端对应的子数据批输入所述工作端的各计算节点;
控制所述工作端搭载的各计算节点并行运行语言模型,以得到所述子数据批对应的输出数据。
5.根据权利要求1所述的针对语言模型的并行调度方法,其特征在于,语言模型的张量划分为按照行维度划分或者按照列维度划分。
6.根据权利要求1-5任意一项所述的针对语言模型的并行调度方法,其特征在于,所述方法还包括:
当所述运行阶段为训练阶段时,获取训练阶段对应的调度策略,并按照所述调度策略控制各工作端搭载的各计算节点并行运行语言模型。
7.一种针对语言模型的并行调度装置,其特征在于,所述并行调度装置包括:
检测模块,用于检测语言模型的运行阶段,其中,所述运行阶段包括推理阶段和训练阶段,所述推理阶段和所述训练阶段配置各自对应的调度策略,所述推理阶段对应的调度策略与训练阶段对应的调度策略不同;
第一划分模块,用于当所述运行阶段为推理阶段时,根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批,并将各子数据批分配至不同工作端;
第二划分模块,用于对于每个工作端,基于所述工作端搭载的各计算节点实时用于执行所述待处理数据批时的显存使用率将语言模型的张量动态划分为若干张量块,并将各张量块配置于不同计算节点,其中,各计算节点基于各自对应的张量块进行计算所需的时间同步;
控制模块,用于控制各工作端搭载的计算节点并行运行语言模型的推理过程,以得到所述待处理数据批对应的输出数据;
其中,所述根据用于执行语言模型的工作端将待处理数据批划分为若干子数据批具体为在对待处理数据批进行划分前,获取工作端当前的IO使用率,根据工作端当前的IO使用率将待处理数据批进行动态划分为若干子数据批;
工作端搭载的计算节点并行运行语言模型的过程具体包括:
控制所述工作端搭载的各计算节点分别将子数据批转换为初始数据矩阵;
将所述初始数据矩阵作为目标数据矩阵,并控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算,得到结果张量;
将所述工作端搭载的各计算节点得到的结果张量进行拼接,以得到输出数据;
将所述输出数据作为目标数据矩阵,重新执行控制所述工作端搭载的各计算节点分别将所述目标数据矩阵与各计算节点配置的张量块进行运算得到结果张量的步骤,直至得到所述子数据批对应的输出数据。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-6任意一项所述的针对语言模型的并行调度方法中的步骤。
9.一种终端设备,其特征在于,包括:处理器和存储器;
所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述处理器执行所述计算机可读程序时实现如权利要求1-6任意一项所述的针对语言模型的并行调度方法中的步骤。
CN202311237684.2A 2023-09-25 2023-09-25 针对语言模型的并行调度方法、装置、设备及存储介质 Active CN116991560B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311237684.2A CN116991560B (zh) 2023-09-25 2023-09-25 针对语言模型的并行调度方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311237684.2A CN116991560B (zh) 2023-09-25 2023-09-25 针对语言模型的并行调度方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN116991560A CN116991560A (zh) 2023-11-03
CN116991560B true CN116991560B (zh) 2024-04-16

Family

ID=88534050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311237684.2A Active CN116991560B (zh) 2023-09-25 2023-09-25 针对语言模型的并行调度方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116991560B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103473121A (zh) * 2013-08-20 2013-12-25 西安电子科技大学 一种基于云计算平台的海量图片并行处理方法
CN112541584A (zh) * 2019-09-23 2021-03-23 无锡江南计算技术研究所 深度神经网络模型并行模式选择方法
CN114730275A (zh) * 2019-09-19 2022-07-08 华为云计算技术有限公司 使用张量在分布式计算系统中进行矢量化资源调度的方法和装置
CN115293342A (zh) * 2022-03-17 2022-11-04 西北农林科技大学 一种基于混合并行的深度卷积神经网络并行训练方法
CN116702907A (zh) * 2023-08-02 2023-09-05 北京大学 一种服务器无感知的大语言模型推理系统、方法和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220092386A1 (en) * 2019-02-14 2022-03-24 Shanghai Cambricon Information Technology Co., Ltd Neural network model splitting method, apparatus, computer device and storage medium

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103473121A (zh) * 2013-08-20 2013-12-25 西安电子科技大学 一种基于云计算平台的海量图片并行处理方法
CN114730275A (zh) * 2019-09-19 2022-07-08 华为云计算技术有限公司 使用张量在分布式计算系统中进行矢量化资源调度的方法和装置
CN112541584A (zh) * 2019-09-23 2021-03-23 无锡江南计算技术研究所 深度神经网络模型并行模式选择方法
CN115293342A (zh) * 2022-03-17 2022-11-04 西北农林科技大学 一种基于混合并行的深度卷积神经网络并行训练方法
CN116702907A (zh) * 2023-08-02 2023-09-05 北京大学 一种服务器无感知的大语言模型推理系统、方法和设备

Also Published As

Publication number Publication date
CN116991560A (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
JP7389177B2 (ja) 連合学習方法、装置、機器及び記憶媒体
Yu et al. Gillis: Serving large neural networks in serverless functions with automatic model partitioning
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
CN110389816B (zh) 用于资源调度的方法、装置以及计算机可读介质
JP2022511716A (ja) 非集中的な分散型深層学習
CN112084038B (zh) 神经网络的内存分配方法及装置
CN106503791A (zh) 用于有效神经网络部署的系统和方法
CN112380020A (zh) 一种算力资源分配方法、装置、设备及存储介质
CN115880132B (zh) 图形处理器、矩阵乘法任务处理方法、装置及存储介质
Li et al. An effective scheduling strategy based on hypergraph partition in geographically distributed datacenters
CN112084037A (zh) 神经网络的内存分配方法及装置
CN114610474A (zh) 一种异构超算环境下多策略的作业调度方法及系统
CN114819084B (zh) 模型推理方法、装置、设备及存储介质
CN116263701A (zh) 算力网络任务调度方法、装置、计算机设备及存储介质
CN112686379A (zh) 集成电路装置、电子设备、板卡和计算方法
CN115600676A (zh) 深度学习模型推理方法、装置、设备及存储介质
CN117032807A (zh) 基于risc-v指令集的ai加速处理器架构
CN116011562A (zh) 算子处理方法及算子处理装置、电子设备和可读存储介质
WO2021115082A1 (zh) 作业调度方法以及作业调度装置
CN116991560B (zh) 针对语言模型的并行调度方法、装置、设备及存储介质
CN105335135A (zh) 数据处理方法和中心节点
KR20160112755A (ko) 임베디드 소프트웨어의 자가 적응형 설계 방법
CN114358253A (zh) 一种神经网络模型的时间预估方法及相关产品
CN114327856A (zh) 数据处理方法、装置、电子设备及存储介质
CN115904681A (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