CN114840322B - 任务调度方法及装置、电子设备和存储 - Google Patents

任务调度方法及装置、电子设备和存储 Download PDF

Info

Publication number
CN114840322B
CN114840322B CN202210541962.2A CN202210541962A CN114840322B CN 114840322 B CN114840322 B CN 114840322B CN 202210541962 A CN202210541962 A CN 202210541962A CN 114840322 B CN114840322 B CN 114840322B
Authority
CN
China
Prior art keywords
target
loop
distributed
blocks
variables
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
CN202210541962.2A
Other languages
English (en)
Other versions
CN114840322A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210541962.2A priority Critical patent/CN114840322B/zh
Publication of CN114840322A publication Critical patent/CN114840322A/zh
Application granted granted Critical
Publication of CN114840322B publication Critical patent/CN114840322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本公开提供了一种任务调度方法及装置、电子设备和存储,涉及人工智能技术领域,尤其涉及分布式计算和深度学习技术领域。实现方案为:获取目标模型的训练任务,训练任务包括计算图和分布式属性,计算图包括多个顺序处理模块和多个循环处理模块;将计算图拆分为多个目标块,每个目标块对应于多个顺序处理模块或者对应于任一循环处理模块;基于分布式属性,确定用于执行训练任务的多个计算设备的数量,并且将多个目标块中的每个目标块拆分为该数量的多个目标子块;基于多个目标块各自对应的多个目标子块,生成多个训练子任务,每个训练子任务包括多个目标块的相同编号的目标子块;以及将多个训练子任务分配至多个计算设备以并行执行。

Description

任务调度方法及装置、电子设备和存储
技术领域
本公开涉及人工智能技术领域,尤其涉及分布式计算和深度学习技术领域,具体涉及一种任务调度方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。
随着人工智能技术的发展,人工智能所涉及的数据规模和模型规模越来越大。大数据和大模型的双重挑战导致人工智能模型的训练耗时较长。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种任务调度方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供了一种任务调度方法,包括:获取目标模型的训练任务,所述训练任务包括计算图和分布式属性,所述计算图用于表示所述训练任务的计算过程,所述计算图包括多个顺序处理模块和多个循环处理模块,所述分布式属性用于指示所述训练任务的分布式策略;将所述计算图拆分为多个目标块,所述多个目标块中的每个目标块对应于所述多个顺序处理模块或者对应于所述多个循环处理模块中的任一循环处理模块;基于所述分布式属性,确定用于执行所述训练任务的多个计算设备的数量,并且将所述多个目标块中的每个目标块拆分为所述数量的多个目标子块;基于所述多个目标块各自对应的多个目标子块,生成多个训练子任务,所述多个训练子任务中的每个训练子任务包括所述多个目标块的相同编号的目标子块;以及将所述多个训练子任务分配至所述多个计算设备以并行执行。
根据本公开的一方面,提供了一种任务调度装置,包括:获取模块,被配置为获取目标模型的训练任务,所述训练任务包括计算图和分布式属性,所述计算图用于表示所述训练任务的计算过程,所述计算图包括多个顺序处理模块和多个循环处理模块,所述分布式属性用于指示所述训练任务的分布式策略;第一拆分模块,被配置为将所述计算图拆分为多个目标块,所述多个目标块中的每个目标块对应于所述多个顺序处理模块或者对应于所述多个循环处理模块中的任一循环处理模块;第二拆分模块,被配置为基于所述分布式属性,确定用于执行所述训练任务的多个计算设备的数量,并且将所述多个目标块中的每个目标块拆分为所述数量的多个目标子块;生成模块,被配置为基于所述多个目标块各自对应的多个目标子块,生成多个训练子任务,所述多个训练子任务中的每个训练子任务包括所述多个目标块的相同编号的目标子块;以及分配模块,被配置为将所述多个训练子任务分配至所述多个计算设备以并行执行。
根据本公开的一方面,提供了一种电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器,该存储器存储有可被上述至少一个处理器执行的指令,该指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行上述方法。
根据本公开的一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行上述方法。
根据本公开的一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现上述方法。
根据本公开的一个或多个实施例,能够对包含循环结构的模型的训练任务进行自动拆分、分配和并行执行,提高了模型的训练效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1示出了根据本公开的实施例的任务调度方法的流程图;
图2示出了根据本公开实施例的计算图的示意图;
图3示出了根据本公开实施例的将计算图拆分为多个目标块的示意图;
图4示出了根据本公开实施例的将目标块拆分为多个目标子块的示意图;
图5示出了根据本公开实施例的任务调度过程的示意图;
图6示出了根据本公开实施例的任务调度装置的结构框图;以及
图7示出了能够用于实现本公开的一些实施例的示例性电子设备的结构框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
为了提高人工智能模型,尤其是深度学习模型的训练效率,通常采用分布式技术来对模型进行训练。
相关技术中,为了实现模型的分布式训练,通常需要用户手动将模型的训练任务拆分为多个训练子任务,并分配给多个分布式计算设备执行。对训练任务的拆分和分配需要用户掌握深度学习算法、分布式计算、计算设备通信等多种知识,这提高了用户的使用门槛,耗时长并且容易出错,降低了生成、执行训练任务的效率和准确性。尤其在模型包括循环处理模块(例如包括while循环体)的情况下,模型结构复杂,使得模型训练任务的生成效率、执行效率和准确性更加难以保证。
为此,本公开的实施例提供一种任务调度方法,能够对包含循环结构的模型的训练任务进行自动拆分、分配和并行执行,提高了模型的训练效率和准确性。
下面将结合附图详细描述本公开的实施例。
图1示出了根据本公开实施例的任务调度方法100的流程图。如图1所示,方法100包括S110-S150。
在步骤S110中,获取目标模型的训练任务,训练任务包括计算图和分布式属性,计算图用于表示训练任务的计算过程,计算图包括多个顺序处理模块和多个循环处理模块,分布式属性用于指示训练任务的分布式策略。
在步骤S120中,将计算图拆分为多个目标块,多个目标块中的每个目标块对应于多个顺序处理模块或者对应于多个循环处理模块中的任一循环处理模块。
在步骤S130中,基于分布式属性,确定用于执行训练任务的多个计算设备的数量,并且将多个目标块中的每个目标块拆分为上述数量的多个目标子块。
在步骤S140中,基于多个目标块各自对应的多个目标子块,生成多个训练子任务,多个训练子任务中的每个训练子任务包括多个目标块的相同编号的目标子块。
在步骤S150中,将多个训练子任务分配至多个计算设备以并行执行。
根据本公开的实施例,将计算图中的顺序处理模块和循环处理模块拆分为不同的目标块,能够使训练任务的计算过程更加清晰,便于对训练任务进行拆分。基于分布式属性将每个目标块拆分多个目标子块,将目标子块组合生成训练子任务,实现了训练任务的自动拆分、分配和并行执行,提高了模型的训练效率。
并且,根据本公开的实施例,能够避免因用户手动调度训练任务而引发的错误,从而提高模型训练的准确性。
以下详细介绍方法100的各个步骤。
在本公开的实施例中,目标模型的训练任务包括计算图和分布式属性。
计算图用于表示目标模型的训练任务的计算过程。训练任务中使用到的变量和算子可以表示为计算图中的节点,变量和算子之间的输入输出关系可以表示为计算图中的有向边。具体地,计算图例如包括前向计算图、反向计算图和更新计算图。前向计算图用于表示训练任务的前向计算过程,反向计算图用于表示训练任务的反向计算过程,更新计算图用于表示目标模型的参数更新过程。
变量(variable)是训练任务中的数据,例如目标模型的参数、前向计算过程中的输入数据、前向计算过程中的各个算子输出的中间计算结果、前向计算过程中的模型的输出数据、反向计算过程中的各个算子输出的梯度值、参数更新过程中的各个算子输出的更新后的参数等。变量可以采用张量(tensor)来表示。张量可以理解为多维数组。
算子(operator)是训练任务中的基本计算操作,包括卷积算子、池化算子、激活算子、梯度计算算子、参数更新算子等。
根据一些实施例,步骤S110可以包括:获取用户指定的前向计算图;基于前向计算图,生成反向计算图;以及基于反向计算图,生成更新计算图。根据该实施例,用户仅需指定目标模型的前向计算图,反向计算图和更新计算图根据前向计算图自动生成,降低了用户的使用成本,提高了生成训练任务的效率,从而提高模型训练效率。
在本公开的实施例中,目标模型的计算图包括多个顺序处理模块和多个循环处理模块。每个顺序处理模块和每个循环处理模块分别包括至少一个算子。顺序处理模块中的至少一个算子仅顺序执行一次,循环处理模块中的至少一个算子被循环执行多次。
图2示出了根据本公开实施例的计算图200的示意图。如图2所示,计算图200包括变量模块201(包括var1,var2,…,等多个变量),顺序处理模块202、204、205、207、208,以及循环处理模块203、206。
变量模块201包括前向计算图、反向计算图、更新计算图中的多个变量var1,var2,var3,…。
顺序处理模块202包括前向计算图中的算子op1_F、op2_F。循环处理模块203包括前向计算图中的算子op3_F、op4_F、op5_F。顺序处理模块204包括前向计算图中的算子op6_F、op7_F。在图2中,前向计算图采用字母F(Forward)表示。matmul表示矩阵乘法运算。
顺序处理模块205包括反向计算图中的算子op7_B、op6_B。循环处理模块206包括反向计算图中的算子op5_B、op4_B、op3_B。顺序处理模块207包括反向计算图中的算子op2_B、op1_B。在图2中,反向计算图采用字母B(Backward)表示。
反向计算图中的算子op1_B~op7_B分别对应于前向计算图中的算子op1_F~op7_F。
顺序处理模块208包括更新计算图中的算子op8_U、op9_U、op10_U。在图2中,更新计算图采用字母U(Update)表示。
通过执行计算图200中的各个算子,可以完成模型训练过程中的一轮迭代。即,在每轮迭代中,依次执行顺序处理模块202、循环处理模块203(模块203被循环执行多次)、顺序处理模块204、顺序处理模块205、循环处理模块206(模块206被循环执行多次)、顺序处理模块207和顺序处理模块208。
在本公开的实施例中,与计算图包括顺序处理模块和循环处理模块相对应地,目标模型可以是任意应用领域的包括顺序处理模块和循环处理模块的模型。
例如,目标模型可以是自然语言处理(Natural Language Processing)应用领域的语句生成模型。该语句生成模型可以包括用于对已有语言符号进行编码的顺序编码模块和用于循环生成新的语言符号(token)的循环生成模块(即循环解码模块)。语言符号包括词和标点符号,循环生成模块的循环终止条件包括上一次循环所生成的语言符号是用于句末的标点符号,例如句号、感叹号、问号等。
具体地,循环生成模块包括至少一个算子。在每次循环中,顺序执行上述至少一个算子,以生成一个语言符号。在第二次及后续每次循环中,首先判断循环终止条件是否成立,即,判断上一次循环所生成的语言符号是否是用于句末的标点符号,若否,则顺序执行至少一个算子,以生成一个语言符号;若是,则循环终止。
分布式属性用于指示训练任务的分布式策略。
根据一些实施例,分布式属性可以包括第一分布式属性。第一分布式属性用于表示多个计算设备的拓扑结构。计算设备例如可以是GPU(Graphics Processing Unit,图形处理器)、TPU(Tensor Processing Unit,张量处理器)、NPU(Neural network ProcessingUnit,神经网络处理器)、DPU(Deep learning Processing Unit,深度学习处理器)等。
第一分布式属性的类型例如可以是张量,张量中的每个元素表示一个计算设备。基于第一分布式属性,可以确定用于并行执行训练任务的多个计算设备的数量。例如,第一分布式属性可以是一维向量[0,1],该一维向量包括两个元素,相应地计算设备的数量为2。又例如,第一分布式属性可以是大小为2*3的二维矩阵[[0,1,2],[3,4,5]],该矩阵包括6个元素,相应地计算设备的数量为6。还例如,第一分布式属性可以是大小为2*2*2的三维张量[[[0,1],[2,3]],[[4,5],[6,7]]],该张量包括8个元素,相应地计算设备的数量为8。
根据一些实施例,分布式属性还可以包括多个变量各自的第二分布式属性。第二分布式属性用于表示相应变量(是一个张量)的每个维度与第一分布式属性的每个维度的对应关系。基于第二分布式属性,可以在对目标块进行拆分时,确定目标块中的每个变量的拆分方式。
第二分布式属性的类型例如可以是链表,链表中的每个元素对应于相应变量的一个维度,元素的值为相应的变量维度对应的第一分布式属性的维度,用于表示该变量维度以第一分布式属性的相应维度所包括的元素数量进行拆分。根据一些实施例,如果元素的值(例如-1)不对应于第一分布式属性的任何维度,则不对相应的变量维度进行拆分。维度的编号例如可以从0开始。
例如,第一分布式属性为一维向量[0,1],变量A为1024*1024的二维矩阵,其第二分布式属性为[-1,0]。第二分布式属性中的第0个元素对应于变量A的第0维(即行维度),其值为-1,表示变量A的行维度不作拆分。第二分布式属性中的第1个元素对应于变量A的第1维(即列维度),其值为0,表示按照第一分布式属性的第0维包括的元素数量(即2)对变量A的列维度进行拆分。因此,基于第二分布式属性[-1,0],可以将1024*1024的变量A按列拆分为2份,得到两个1024*512的二维矩阵。
又例如,第一分布式属性为2*3的二维矩阵[[0,1,2],[3,4,5]],变量B为12*12*6的三维张量,其第二分布式属性为[-1,0,1]。第二分布式属性中的第0个元素对应于变量B的第0维,其值为-1,表示变量B的第0维不作拆分。第二分布式属性中的第1个元素对应于变量B的第1维,其值为0,表示按照第一分布式属性的第0维包括的元素数量(即2)对变量B的第1维进行拆分。第二分布式属性中的第2个元素对应于变量B的第2维,其值为1,表示按照第一分布式属性的第1维包括的元素数量(即3)对变量B的第2维进行拆分。因此,基于第二分布式属性[-1,0,1],可以将12*12*6的变量B按照第1维拆分为2份、按照第2维拆分为3份,得到6个12*6*2的三维张量。
在步骤S120中,将计算图拆分为多个目标块,多个目标块中的每个目标块对应于多个顺序处理模块或者对应于多个循环处理模块中的任一循环处理模块。
如上所述,计算图包括多个顺序处理模块和多个循环处理模块,多个顺序处理模块和多个循环处理模块中的任一者包括至少一个算子,计算图还包括多个变量。与此相应地,步骤S120进一步包括以下步骤S122-S126。
在步骤S122中,生成分别对应于多个循环处理模块的多个第一目标块,多个第一目标块中的每个第一目标块包括相应的循环处理模块和多个第一变量,多个第一变量为所述多个变量中的对应于所述相应的循环处理模块的变量。
在步骤S124中,生成与多个循环处理模块分别对应的多个循环算子,多个循环算子中的每个循环算子用于指示相应的循环处理模块的循环终止条件。
在步骤S126中,将计算图中的每个循环处理模块替换为相应的循环算子,以得到对应于多个顺序处理模块的第二目标块,第二目标块包括多个顺序处理模块、多个循环算子和多个第二变量,多个第二变量为所述多个变量中的除所述多个第一变量以外的变量。
根据上述实施例,能够将计算图中的顺序处理模块和循环处理模块拆分为不同的目标块,从而便于对训练任务进行拆分,提高拆分效率。
根据一些实施例,多个循环处理模块包括前向计算图中的至少一个前向循环模块和反向计算图中的至少一个反向循环模块,所述至少一个前向循环模块和所述至少一个反向循环模块分别对应,所述多个第一目标块包括分别对应于所述至少一个前向循环模块的至少一个前向目标块和分别对应于所述至少一个反向循环模块的至少一个反向目标块。与此相应地,步骤S120还可以包括步骤S128:存储所述至少一个前向目标块和所述至少一个反向目标块的对应关系。由此能够便于确定反向目标块中的变量和算子的分布式属性,从而提高训练子任务的生成效率。
图3示出了根据本公开实施例的将计算图拆分为多个目标块的示意图。如图3所示,计算图300包括多个变量301,前向计算图中的顺序处理模块302、304,前向计算图中的循环处理模块303(前向循环模块),反向计算图中的顺序处理模块305、307,反向计算图中的循环处理模块306(反向循环模块),和更新计算图中的顺序处理模块308。
前向循环模块303对应于第一目标块310(前向目标块)。前向目标块310包括前向循环模块303和相应的多个第一变量311。多个第一变量311包括var1、var2、var4,是多个变量301的子集。
反向循环模块306对应于第一目标块320(反向目标块)。反向目标块320包括反向循环模块306和相应的多个第一变量321。多个第一变量321包括var11、var12、var14,是多个变量301的子集。反向目标块320中的反向循环模块306、多个第一变量321分别与前向目标块中的前向循环模块303、多个第一变量311相对应。
存储前向目标块310和反向目标块320的对应关系。
前向循环模块303对应于循环算子while1_F,反向循环模块306对应于循环算子while1_B。将计算图300中的前向循环模块303替换为循环算子while1_F,反向循环模块306替换为循环算子while1_B,并且删除计算图300中的多个第一变量311、321,得到第二目标块330。如图3所示,第二目标块330包括多个第二变量331和顺序处理模块302、304、305、307、308。
在模型训练过程的每轮迭代中,按顺序依次执行第二目标块330中的各个算子,当执行到循环算子时,跳转至该循环算子对应的第一目标块,执行第一目标块中的各个算子。例如,当执行到循环算子while1_F时,跳转至该循环算子对应的前向目标块310,顺序执行前向目标块310中的各个算子op3_F~op5_F。前向目标块310一次执行结束后,向循环算子while1_F返回执行结果。循环算子while1_F判断当前的执行结果是否满足循环终止条件,若满足,则继续执行第二目标块330中的下一个算子op6_F;若不满足,则再次执行前向目标块310中的各个算子op3_F~op5_F。
在步骤S130中,基于分布式属性,确定用于执行训练任务的多个计算设备的数量,并且将多个目标块中的每个目标块拆分为上述数量的多个目标子块。
如上所述,根据一些实施例,分布式属性可以包括第一分布式属性,第一分布式属性用于表示多个计算设备的拓扑结构。多个计算设备的拓扑结构也可以理解为目标块的多个目标子块之间的拓扑结构。相应地,在步骤S130中,可以基于第一分布式属性,确定用于执行训练任务的多个计算设备的数量。
第一分布式属性的类型例如可以是张量,张量中的每个元素表示一个计算设备。例如,第一分布式属性可以是一维向量[0,1],该行向量包括两个元素,相应地计算设备的数量为2。又例如,第一分布式属性可以是大小为2*3的二维矩阵[[0,1,2],[3,4,5]],该矩阵包括6个元素,相应地计算设备的数量为6。还例如,第一分布式属性可以是大小为2*2*2的三维张量[[[0,1],[2,3]],[[4,5],[6,7]]],该张量包括8个元素,相应地计算设备的数量为8。
如上所述,根据一些实施例,分布式属性还可以包括多个变量各自的第二分布式属性,第二分布式属性用于表示相应变量的每个维度与第一分布式属性的每个维度的对应关系。相应地,可以按照以下步骤S132-S136来拆分多个目标块中的每个目标块。
在步骤S132中,基于第一分布式属性,将该目标块中的每个算子拆分为所述数量的多个子算子。
在步骤S134中,基于第一分布式属性和相应的第二分布式属性,将该目标块中的每个变量拆分为所述数量的多个子变量。
在步骤S136中,基于所述多个子算子和所述多个子变量,生成多个目标子块,其中,所述多个目标子块中的每个目标子块包括每个算子的相同编号的子算子和每个变量的所述相同编号的子变量。
基于多个目标块对应的目标子块,可以生成训练子任务。每个训练子任务包括多个目标块的相同编号的目标子块。随后,可以将多个训练子任务分配至多个计算设备以并行执行。
在并行执行多个训练子任务的过程中,某些计算设备之间需要进行信息交互,以将同一个变量的多个子变量的值进行整合,以得到该变量的完整值。因此,根据一些实施例,方法100还包括,基于分布式属性(例如第一分布式属性和第二分布式属性),确定多个计算设备之间的待通信的信息。待通信的信息具体可以是需要获得完整值的变量的各个子变量的值。
图4示出了对目标块400进行拆分的示意图。在图4所示的实施例中,第一分布式属性为[0,1],包括两个元素,因此计算设备的数量为2,相应地,将目标块400中的算子OP1、OP2分别拆分为两个子算子。即,将OP1拆分为子算子OP11和OP12,将算子OP2拆分为子算子OP21和OP22。
变量A、B、C、D、E均为4*4的二维矩阵,五者的第二分布式属性分别为[-1,-1]、[-1,0]、[-1,0]、[0,-1]、[-1,-1]。基于相应的第二分布式属性,可以确定变量A-E的拆分方式,即:
变量A不作拆分,通过复制得到两个子变量A1、A2(A=A1=A2);
变量B按列拆分为2份,得到两个4*2的子变量B1、B2;
C按列拆分为2份,得到两个4*2的子变量C1、C2;
变量D按行拆分为2份,得到两个2*4的子变量D1、D2;
变量E不作拆分,通过复制得到两个子变量E1、E2(E=E1=E2)。
在将每个算子拆分为两个子算子、将每个变量拆分为两个子变量后,取每个算子的相同编号的子算子和每个变量的相同编号的子变量,生成目标子块。如图4所示,子算子OP11、OP21和子变量A1、B1、C1、D1、E1生成目标子块410,子算子OP12、OP22和子变量A2、B2、C2、D2、E2生成目标子块420。
基于目标子块410,可以生成训练子任务1。基于目标子块420,可以生成训练子任务2。训练子任务1、训练子任务2分别由计算设备1、计算设备2执行。
在图4所示的实施例中,需要获取变量E的完整值。相应地,可以添加AllReduce通信算子,用于将计算设备1、2各自计算得到的子变量E1、E2的值进行整合,得到变量E的完整值。
可以理解,复杂深度学习模型(前向计算图)中可能包括成百上千个变量,完整计算图(包括前向计算图、反向计算图和更新计算图)中包括的变量更多。如果要求用户一一标注每个变量的第二分布式属性,工作量会很大,并且不同变量的第二分布式属性可能出现相互矛盾的情况,大大降低了模型训练任务的生成效率、模型训练效率和模型的准确性。
为了降低用户的工作量,提高模型训练任务的生成效率、模型训练效率和模型的准确性,根据一些实施例,可以按照以下步骤来获得每个变量的第二分布式属性:获取用户指定的第一分布式属性和前向计算图中的至少一个目标变量的第二分布式属性;基于至少一个目标变量的第二分布式属性,确定前向计算图中的其他变量的第二分布式属性;以及基于前向计算图中的相应变量的第二分布式属性,确定反向计算图中的每个变量的第二分布式属性。
根据上述实施例,用户仅需指定前向计算图中的少量变量的第二分布式属性,其他变量的第二分布式属性基于用户指定的第二分布式属性自动生成,降低了用户的使用成本,提高了生成训练任务的效率,从而提高模型训练效率。
具体地,前向计算图中的其他变量的第二分布式属性可以基于张量的分块乘法运算规则推导得出。
图5示出了根据本公开实施例的任务调度过程的示意图。
如图5所示,基于用户指定的目标模型的前向计算图510,自动生成反向计算图520。基于反向计算图520,自动生成更新计算图530。基于前向计算图510、反向计算图520和更新计算图530,生成训练任务的完整计算图540。
随后,对计算图540进行拆分,得到目标块(block)550、560和570。目标块550、560和570分别对应于计算图540中的前向循环模块、反向循环模块和所有顺序处理模块。
随后,基于用户指定的分布式属性(包括第一分布式属性和第二分布式属性),确定用于执行训练任务的多个计算设备的数量N,并且将目标块550-570分别拆分为N个目标子块,即,将目标块550拆分为目标子块550-1~550-N,将目标块560拆分为目标子块560-1~560-N,将目标块570拆分为目标子块570-1~570-N。
具体地,可以按照以下步骤1~3来对目标块i(i=550、560、570)进行拆分。
步骤1、生成空白的目标子块i-1,i-2,…,i-N。
步骤2、遍历目标块i中的每一个变量:
a)如果该变量具有分布式属性(第一分布式属性和第二分布式属性),则说明这个变量是被用户标记的前向计算图中的变量,根据其分布式属性将其拆分到各个目标子块i-1,i-2,…,i-N中;
b)如果该变量不具有分布式属性,则说明该变量是反向计算图中由系统自动生成的变量,目标块i为反向目标块,根据所存储的前向目标块与反向目标块的对应关系,确定目标块i对应的前向目标块,并从该前向目标块中找到对应于该变量的前向变量,根据该前向变量的分布式属性将该变量拆分到各个目标子块i-1,i-2,…,i-N中。
步骤3、遍历目标块中的每一个算子:
a)如果该算子是循环算子(例如while算子),则向目标子块i-1,i-2,…,i-N中添加相同的循环算子,并生成该循环算子所指向的目标块;
b)如果该算子具有分布式属性(第一分布式属性),则说明该算子是被用户标记的前向计算图中的算子,根据其分布式属性将其拆分到各个目标子块i-1,i-2,…,i-N中,并根据分布式属性在各个目标子块之间添加用于进行信息交互的通信算子。
c)如果该算子不具有分布式属性,则说明该算子是反向计算图中由系统自动生成的算子,目标块i为反向目标块,根据所存储的前向目标块与反向目标块的对应关系,确定目标块i对应的前向目标块,并从该前向目标块中找到对应于该算子的前向算子,根据该前向算子的分布式属性将该算子拆分到各个目标子块i-1,i-2,…,i-N中,并根据分布式属性在各个目标子块之间添加用于进行信息交互的通信算子。
将目标块550-570分别拆分为N个目标子块后,基于目标块550-570的相同编号1~N的目标子块,生成训练子任务580-1~580-N。
将训练子任务580-1~580-N分别分配给计算设备590-1~590-N并行执行。计算设备590-1~590-N可以是分布式训练系统590中的任意N个空闲的计算设备。
根据本公开的实施例,还提供了一种任务调度装置。图6示出了根据本公开实施例的任务调度装置600的结构框图。如图6所示,装置600包括:
获取模块610,被配置为获取目标模型的训练任务,其中,所述训练任务包括计算图和分布式属性,所述计算图用于表示所述训练任务的计算过程,所述计算图包括多个顺序处理模块和多个循环处理模块,所述分布式属性用于指示所述训练任务的分布式策略;
第一拆分模块620,被配置为将所述计算图拆分为多个目标块,其中,所述多个目标块中的每个目标块对应于所述多个顺序处理模块或者对应于所述多个循环处理模块中的任一循环处理模块;
第二拆分模块630,被配置为基于所述分布式属性,确定用于执行所述训练任务的多个计算设备的数量,并且将所述多个目标块中的每个目标块拆分为所述数量的多个目标子块;
生成模块640,被配置为基于所述多个目标块各自对应的多个目标子块,生成多个训练子任务,其中,所述多个训练子任务中的每个训练子任务包括所述多个目标块的相同编号的目标子块;以及
分配模块650,被配置为将所述多个训练子任务分配至所述多个计算设备以并行执行。
根据本公开的实施例,根据本公开的实施例,将计算图中的顺序处理模块和循环处理模块拆分为不同的目标块,能够使训练任务的计算过程更加清晰,便于对训练任务进行拆分。基于分布式属性将每个目标块拆分多个目标子块,将目标子块组合生成训练子任务,实现了训练任务的自动拆分、分配和并行执行,提高了模型的训练效率。
并且,根据本公开的实施例,能够避免因用户手动调度训练任务而引发的错误,从而提高模型训练的准确性。
根据一些实施例,所述计算图包括前向计算图、反向计算图和更新计算图,所述前向计算图用于表示所述训练任务的前向计算过程,所述反向计算图用于表示所述训练任务的反向计算过程,所述更新计算图用于表示所述目标模型的参数更新过程,所述获取模块610包括:第一获取单元,被配置为获取用户指定的所述前向计算图;第一生成单元,被配置为基于所述前向计算图,生成所述反向计算图;以及第二生成单元,被配置为基于所述反向计算图,生成所述更新计算图。
根据一些实施例,所述多个顺序处理模块和所述多个循环处理模块中的任一者包括至少一个算子,所述计算图还包括多个变量,并且其中,所述第一拆分模块620包括:第三生成单元,被配置为生成分别对应于所述多个循环处理模块的多个第一目标块,所述多个第一目标块中的每个第一目标块包括相应的循环处理模块和多个第一变量,所述多个第一变量为所述多个变量中的对应于所述相应的循环处理模块的变量;第四生成单元,被配置为生成与所述多个循环处理模块分别对应的多个循环算子,所述多个循环算子中的每个循环算子用于指示相应的循环处理模块的循环终止条件;以及第五生成单元,被配置为将所述计算图中的每个循环处理模块替换为相应的循环算子,以得到对应于所述多个顺序处理模块的第二目标块,所述第二目标块包括所述多个顺序处理模块、所述多个循环算子和多个第二变量,所述多个第二变量为所述多个变量中的除所述多个第一变量以外的变量。
根据一些实施例,所述多个循环处理模块包括前向计算图中的至少一个前向循环模块和反向计算图中的至少一个反向循环模块,所述至少一个前向循环模块和所述至少一个反向循环模块分别对应,所述多个第一目标块包括分别对应于所述至少一个前向循环模块的至少一个前向目标块和分别对应于所述至少一个反向循环模块的至少一个反向目标块,所述装置600还包括:存储模块,被配置为存储所述至少一个前向目标块和所述至少一个反向目标块的对应关系。
根据一些实施例,所述分布式属性包括第一分布式属性,所述第一分布式属性用于表示所述多个计算设备的拓扑结构,所述第二拆分模块630进一步被配置为:基于所述第一分布式属性,确定用于执行所述训练任务的多个计算设备的数量。
根据一些实施例,所述分布式属性还包括多个变量各自的第二分布式属性,所述第二分布式属性用于表示相应变量的每个维度与所述第一分布式属性的每个维度的对应关系,并且其中,所述第二拆分模块630进一步被配置为:对于所述多个目标块中的每个目标块:基于所述第一分布式属性,将该目标块中的每个算子拆分为所述数量的多个子算子;基于所述第一分布式属性和相应的第二分布式属性,将该目标块中的每个变量拆分为所述数量的多个子变量;以及基于所述多个子算子和所述多个子变量,生成多个目标子块,其中,所述多个目标子块中的每个目标子块包括每个算子的相同编号的子算子和每个变量的所述相同编号的子变量。
根据一些实施例,所述获取模块610包括:第二获取单元,被配置为获取用户指定的所述第一分布式属性和前向计算图中的至少一个目标变量的第二分布式属性;第一确定单元,被配置为基于所述至少一个目标变量的第二分布式属性,确定前向计算图中的其他变量的第二分布式属性;以及第二确定单元,被配置为基于前向计算图中的相应变量的第二分布式属性,确定反向计算图中的每个变量的第二分布式属性。
根据一些实施例,装置600还包括:通信模块,被配置为基于所述分布式属性,确定所述多个计算设备之间的待通信的信息。
根据一些实施例,所述目标模型为语句生成模型,所述语句生成模型包括用于循环生成语言符号的循环生成模块,所述语言符号包括词和标点符号,所述循环生成模块的循环终止条件包括上一次循环所生成的语言符号是用于句末的标点符号。
应当理解,图6中所示装置600的各个模块可以与参考图1描述的方法100中的各个步骤相对应。由此,上面针对方法100描述的操作、特征和优点同样适用于装置600及其包括的模块。为了简洁起见,某些操作、特征和优点在此不再赘述。
虽然上面参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分为多个模块,和/或多个模块的至少一些功能可以组合成单个模块。例如,上面描述的第一拆分模块620和第二拆分模块630在一些实施例中可以组合成单个模块。
还应当理解,本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。上面关于图6描述的各个模块可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些模块可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些模块可以被实现为硬件逻辑/电路。例如,在一些实施例中,模块610-650中的一个或多个可以一起被实现在片上系统(System on Chip,SoC)中。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(Central Processing Unit,CPU)、微控制器、微处理器、数字信号处理器(Digital Signal Processor,DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
根据本公开的实施例,提供了一种电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器,该存储器存储有可被上述至少一个处理器执行的指令,该指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行根据本公开实施例的任务调度方法。
根据本公开的一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行根据本公开实施例的任务调度方法。
根据本公开的一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开实施例的任务调度方法。
参考图7,现将描述可以作为本公开的服务器或客户端的电子设备700的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,电子设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
电子设备700中的多个部件连接至I/O接口705,包括:输入单元706、输出单元707、存储单元708以及通信单元709。输入单元706可以是能向设备700输入信息的任何类型的设备,输入单元706可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元707可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元708可以包括但不限于磁盘、光盘。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、802.11设备、Wi-Fi设备、WiMAX设备、蜂窝通信设备和/或类似物。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如方法100。例如,在一些实施例中,方法100可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM703并由计算单元701执行时,可以执行上文描述的方法100的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法100。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。

Claims (18)

1.一种任务调度方法,包括:
获取目标模型的训练任务,其中,所述训练任务包括计算图和分布式属性,所述计算图用于表示所述训练任务的计算过程,所述计算图包括多个顺序处理模块、多个循环处理模块和多个变量,所述多个顺序处理模块和所述多个循环处理模块中的任一者包括至少一个算子,所述分布式属性用于指示所述训练任务的分布式策略;
将所述计算图拆分为多个目标块,其中,所述多个目标块中的每个目标块对应于所述多个顺序处理模块或者对应于所述多个循环处理模块中的任一循环处理模块,所述将所述计算图拆分为多个目标块包括:
生成分别对应于所述多个循环处理模块的多个第一目标块,其中,所述多个第一目标块中的每个第一目标块包括相应的循环处理模块和多个第一变量,所述多个第一变量为所述多个变量中的对应于所述相应的循环处理模块的变量;
生成与所述多个循环处理模块分别对应的多个循环算子,其中,所述多个循环算子中的每个循环算子用于指示相应的循环处理模块的循环终止条件;以及
将所述计算图中的每个循环处理模块替换为相应的循环算子,以得到对应于所述多个顺序处理模块的第二目标块,其中,所述第二目标块包括所述多个顺序处理模块、所述多个循环算子和多个第二变量,所述多个第二变量为所述多个变量中的除所述多个第一变量以外的变量;
基于所述分布式属性,确定用于执行所述训练任务的多个计算设备的数量,并且将所述多个目标块中的每个目标块拆分为所述数量的多个目标子块;基于所述多个目标块各自对应的多个目标子块,生成多个训练子任务,其中,所述多个训练子任务中的每个训练子任务包括所述多个目标块的相同编号的目标子块;以及
将所述多个训练子任务分配至所述多个计算设备以并行执行。
2.根据权利要求1所述的方法,其中,所述计算图包括前向计算图、反向计算图和更新计算图,所述前向计算图用于表示所述训练任务的前向计算过程,所述反向计算图用于表示所述训练任务的反向计算过程,所述更新计算图用于表示所述目标模型的参数更新过程,并且其中,所述获取目标模型的训练任务包括:
获取用户指定的所述前向计算图;
基于所述前向计算图,生成所述反向计算图;以及
基于所述反向计算图,生成所述更新计算图。
3.根据权利要求1所述的方法,其中,所述多个循环处理模块包括前向计算图中的至少一个前向循环模块和反向计算图中的至少一个反向循环模块,所述至少一个前向循环模块和所述至少一个反向循环模块分别对应,所述多个第一目标块包括分别对应于所述至少一个前向循环模块的至少一个前向目标块和分别对应于所述至少一个反向循环模块的至少一个反向目标块,所述方法还包括:
存储所述至少一个前向目标块和所述至少一个反向目标块的对应关系。
4.根据权利要求1-3中任一项所述的方法,其中,所述分布式属性包括第一分布式属性,所述第一分布式属性用于表示所述多个计算设备的拓扑结构,并且其中,基于所述分布式属性,确定用于执行所述训练任务的多个计算设备的数量包括:
基于所述第一分布式属性,确定用于执行所述训练任务的多个计算设备的数量。
5.根据权利要求4所述的方法,其中,所述分布式属性还包括多个变量各自的第二分布式属性,所述第二分布式属性用于表示相应变量的每个维度与所述第一分布式属性的每个维度的对应关系,并且其中,基于所述分布式属性,将所述多个目标块中的每个目标块拆分为所述数量的多个目标子块包括:
对于所述多个目标块中的每个目标块:
基于所述第一分布式属性,将该目标块中的每个算子拆分为所述数量的多个子算子;
基于所述第一分布式属性和相应的第二分布式属性,将该目标块中的每个变量拆分为所述数量的多个子变量;以及
基于所述多个子算子和所述多个子变量,生成多个目标子块,其中,所述多个目标子块中的每个目标子块包括每个算子的相同编号的子算子和每个变量的所述相同编号的子变量。
6.根据权利要求5所述的方法,其中,所述获取目标模型的训练任务包括:
获取用户指定的所述第一分布式属性和前向计算图中的至少一个目标变量的第二分布式属性;
基于所述至少一个目标变量的第二分布式属性,确定前向计算图中的其他变量的第二分布式属性;以及
基于前向计算图中的相应变量的第二分布式属性,确定反向计算图中的每个变量的第二分布式属性。
7.根据权利要求1所述的方法,还包括:
基于所述分布式属性,确定所述多个计算设备之间的待通信的信息。
8.根据权利要求1所述的方法,其中,所述目标模型为语句生成模型,所述语句生成模型包括用于循环生成语言符号的循环生成模块,所述语言符号包括词和标点符号,所述循环生成模块的循环终止条件包括上一次循环所生成的语言符号是用于句末的标点符号。
9.一种任务调度装置,包括:
获取模块,被配置为获取目标模型的训练任务,其中,所述训练任务包括计算图和分布式属性,所述计算图用于表示所述训练任务的计算过程,所述计算图包括多个顺序处理模块、多个循环处理模块和多个变量,所述多个顺序处理模块和所述多个循环处理模块中的任一者包括至少一个算子,所述分布式属性用于指示所述训练任务的分布式策略;
第一拆分模块,被配置为将所述计算图拆分为多个目标块,其中,所述多个目标块中的每个目标块对应于所述多个顺序处理模块或者对应于所述多个循环处理模块中的任一循环处理模块,所述第一拆分模块包括:
第三生成单元,被配置为生成分别对应于所述多个循环处理模块的多个第一目标块,其中,所述多个第一目标块中的每个第一目标块包括相应的循环处理模块和多个第一变量,所述多个第一变量为所述多个变量中的对应于所述相应的循环处理模块的变量;
第四生成单元,被配置为生成与所述多个循环处理模块分别对应的多个循环算子,其中,所述多个循环算子中的每个循环算子用于指示相应的循环处理模块的循环终止条件;以及
第五生成单元,被配置为将所述计算图中的每个循环处理模块替换为相应的循环算子,以得到对应于所述多个顺序处理模块的第二目标块,其中,所述第二目标块包括所述多个顺序处理模块、所述多个循环算子和多个第二变量,所述多个第二变量为所述多个变量中的除所述多个第一变量以外的变量;
第二拆分模块,被配置为基于所述分布式属性,确定用于执行所述训练任务的多个计算设备的数量,并且将所述多个目标块中的每个目标块拆分为所述数量的多个目标子块;
生成模块,被配置为基于所述多个目标块各自对应的多个目标子块,生成多个训练子任务,其中,所述多个训练子任务中的每个训练子任务包括所述多个目标块的相同编号的目标子块;以及
分配模块,被配置为将所述多个训练子任务分配至所述多个计算设备以并行执行。
10.根据权利要求9所述的装置,其中,所述计算图包括前向计算图、反向计算图和更新计算图,所述前向计算图用于表示所述训练任务的前向计算过程,所述反向计算图用于表示所述训练任务的反向计算过程,所述更新计算图用于表示所述目标模型的参数更新过程,并且其中,所述获取模块包括:
第一获取单元,被配置为获取用户指定的所述前向计算图;
第一生成单元,被配置为基于所述前向计算图,生成所述反向计算图;以及
第二生成单元,被配置为基于所述反向计算图,生成所述更新计算图。
11.根据权利要求9所述的装置,其中,所述多个循环处理模块包括前向计算图中的至少一个前向循环模块和反向计算图中的至少一个反向循环模块,所述至少一个前向循环模块和所述至少一个反向循环模块分别对应,所述多个第一目标块包括分别对应于所述至少一个前向循环模块的至少一个前向目标块和分别对应于所述至少一个反向循环模块的至少一个反向目标块,所述装置还包括:
存储模块,被配置为存储所述至少一个前向目标块和所述至少一个反向目标块的对应关系。
12.根据权利要求9-11中任一项所述的装置,其中,所述分布式属性包括第一分布式属性,所述第一分布式属性用于表示所述多个计算设备的拓扑结构,并且其中,所述第二拆分模块进一步被配置为:
基于所述第一分布式属性,确定用于执行所述训练任务的多个计算设备的数量。
13.根据权利要求12所述的装置,其中,所述分布式属性还包括多个变量各自的第二分布式属性,所述第二分布式属性用于表示相应变量的每个维度与所述第一分布式属性的每个维度的对应关系,并且其中,所述第二拆分模块进一步被配置为:
对于所述多个目标块中的每个目标块:
基于所述第一分布式属性,将该目标块中的每个算子拆分为所述数量的多个子算子;
基于所述第一分布式属性和相应的第二分布式属性,将该目标块中的每个变量拆分为所述数量的多个子变量;以及
基于所述多个子算子和所述多个子变量,生成多个目标子块,其中,所述多个目标子块中的每个目标子块包括每个算子的相同编号的子算子和每个变量的所述相同编号的子变量。
14.根据权利要求13所述的装置,其中,所述获取模块包括:
第二获取单元,被配置为获取用户指定的所述第一分布式属性和前向计算图中的至少一个目标变量的第二分布式属性;
第一确定单元,被配置为基于所述至少一个目标变量的第二分布式属性,确定前向计算图中的其他变量的第二分布式属性;以及
第二确定单元,被配置为基于前向计算图中的相应变量的第二分布式属性,确定反向计算图中的每个变量的第二分布式属性。
15.根据权利要求9所述的装置,还包括:
通信模块,被配置为基于所述分布式属性,确定所述多个计算设备之间的待通信的信息。
16.根据权利要求9所述的装置,其中,所述目标模型为语句生成模型,所述语句生成模型包括用于循环生成语言符号的循环生成模块,所述语言符号包括词和标点符号,所述循环生成模块的循环终止条件包括上一次循环所生成的语言符号是用于句末的标点符号。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-8中任一项所述的方法。
CN202210541962.2A 2022-05-17 2022-05-17 任务调度方法及装置、电子设备和存储 Active CN114840322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210541962.2A CN114840322B (zh) 2022-05-17 2022-05-17 任务调度方法及装置、电子设备和存储

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210541962.2A CN114840322B (zh) 2022-05-17 2022-05-17 任务调度方法及装置、电子设备和存储

Publications (2)

Publication Number Publication Date
CN114840322A CN114840322A (zh) 2022-08-02
CN114840322B true CN114840322B (zh) 2022-12-09

Family

ID=82569540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210541962.2A Active CN114840322B (zh) 2022-05-17 2022-05-17 任务调度方法及装置、电子设备和存储

Country Status (1)

Country Link
CN (1) CN114840322B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483482B (zh) * 2023-05-19 2024-03-01 北京百度网讯科技有限公司 深度学习任务处理方法、系统、装置、设备及介质
CN116860999B (zh) * 2023-07-07 2024-04-19 清华大学 超大语言模型分布式预训练方法、装置、设备及介质
CN116701001B (zh) * 2023-08-08 2023-10-20 国网浙江省电力有限公司信息通信分公司 目标任务分配方法、装置、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292241A (zh) * 2015-10-28 2018-07-17 谷歌有限责任公司 处理计算图
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
EP3667496A1 (en) * 2017-08-31 2020-06-17 Huawei Technologies Co., Ltd. Distributed computing system, data transmission method and device in distributed computing system
CN112988194A (zh) * 2021-03-29 2021-06-18 北京市商汤科技开发有限公司 基于设备信息的程序优化方法、装置、电子设备及存储介质
CN113298263A (zh) * 2020-05-13 2021-08-24 阿里巴巴集团控股有限公司 计算图处理、模型运行方法及装置、电子设备、服务器及边缘终端
CN113326137A (zh) * 2021-06-25 2021-08-31 上海燧原科技有限公司 深度学习计算方法、装置、芯片及介质
CN114091686A (zh) * 2021-11-11 2022-02-25 北京百度网讯科技有限公司 数据处理方法、装置、电子设备和存储介质
CN114091589A (zh) * 2021-11-11 2022-02-25 北京百度网讯科技有限公司 模型训练方法、装置、电子设备及介质
CN114186633A (zh) * 2021-12-10 2022-03-15 北京百度网讯科技有限公司 模型的分布式训练方法、装置、设备以及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190034785A1 (en) * 2017-07-25 2019-01-31 The Allen Institute For Artificial Intelligence System and method for program induction using probabilistic neural programs
CN113961351B (zh) * 2021-10-28 2022-12-30 北京百度网讯科技有限公司 深度学习模型的分布式训练方法、装置、设备及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292241A (zh) * 2015-10-28 2018-07-17 谷歌有限责任公司 处理计算图
EP3667496A1 (en) * 2017-08-31 2020-06-17 Huawei Technologies Co., Ltd. Distributed computing system, data transmission method and device in distributed computing system
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN113298263A (zh) * 2020-05-13 2021-08-24 阿里巴巴集团控股有限公司 计算图处理、模型运行方法及装置、电子设备、服务器及边缘终端
CN112988194A (zh) * 2021-03-29 2021-06-18 北京市商汤科技开发有限公司 基于设备信息的程序优化方法、装置、电子设备及存储介质
CN113326137A (zh) * 2021-06-25 2021-08-31 上海燧原科技有限公司 深度学习计算方法、装置、芯片及介质
CN114091686A (zh) * 2021-11-11 2022-02-25 北京百度网讯科技有限公司 数据处理方法、装置、电子设备和存储介质
CN114091589A (zh) * 2021-11-11 2022-02-25 北京百度网讯科技有限公司 模型训练方法、装置、电子设备及介质
CN114186633A (zh) * 2021-12-10 2022-03-15 北京百度网讯科技有限公司 模型的分布式训练方法、装置、设备以及存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Computational Graphs in Deep Learning;devanshigupta1304;《https://www.geeksforgeeks.org/computational-graphs-in-deep-learning/》;20220513;1-7 *
Knowledge Graph Completion: A Review;Zhe Chen等;《IEEE Access》;20201012;1-22 *
基于深度学习开源框架的并行人脸识别方法研究;刘弘一;《中国优秀硕士学位论文全文数据库信息科技辑》;20181015;I138-823 *
异构融合平台上的数据流运行时系统研究;林晗;《中国博士学位论文全文数据库 信息科技辑》;20200215;I135-14 *

Also Published As

Publication number Publication date
CN114840322A (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
CN114840322B (zh) 任务调度方法及装置、电子设备和存储
Tuli et al. COSCO: Container orchestration using co-simulation and gradient based optimization for fog computing environments
CN110476172A (zh) 用于卷积神经网络的神经架构搜索
CN113723613B (zh) 对量子电路进行模拟的方法及装置
CN109885452A (zh) 性能监控方法、装置及终端设备
Tuli et al. MCDS: AI augmented workflow scheduling in mobile edge cloud computing systems
CN111966361B (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
CN112925587A (zh) 用于初始化应用的方法和装置
CN116127899A (zh) 芯片设计系统、方法、电子设备和存储介质
CN113568821A (zh) 一种ai芯片计算性能的测试方法、装置、设备、及介质
JP2023036773A (ja) データ処理方法、データ処理装置、電子機器、記憶媒体およびコンピュータプログラム
CN114091589B (zh) 模型训练方法、装置、电子设备及介质
CN115292046A (zh) 算力分配方法、装置、存储介质及电子设备
CN112965903A (zh) 测试方法、装置、电子设备及计算机可读存储介质
Hafeez et al. Empirical analysis and modeling of compute times of cnn operations on aws cloud
CN114968559A (zh) 基于lsf的多主机多gpu分布式布置深度学习模型的方法
CN112783508B (zh) 文件的编译方法、装置、设备以及存储介质
CN113723612A (zh) 对单向量子计算机计算模型的量子系统进行操作的方法及装置
CN113033806A (zh) 一种训练深度强化学习模型的方法、装置以及调度方法
CN112463334B (zh) 一种训练任务排队原因分析方法、系统、设备以及介质
CN115543534A (zh) 训练任务的管理方法、装置、电子设备及存储介质
CN115809688A (zh) 一种模型调试方法、装置、电子设备及存储介质
CN115827225A (zh) 异构运算的分配方法、模型训练方法、装置、芯片、设备及介质
CN112149826B (zh) 深度神经网络推理计算中一种基于Profile图的优化方法
KR20200010644A (ko) 컴퓨터 수행 가능한 클라우드 기반의 인공지능 연산 서비스 방법

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