CN113994350A - 为神经网络生成并行计算方案 - Google Patents

为神经网络生成并行计算方案 Download PDF

Info

Publication number
CN113994350A
CN113994350A CN202080038111.5A CN202080038111A CN113994350A CN 113994350 A CN113994350 A CN 113994350A CN 202080038111 A CN202080038111 A CN 202080038111A CN 113994350 A CN113994350 A CN 113994350A
Authority
CN
China
Prior art keywords
operator
recursive
slicing
operator node
parallel computing
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
Application number
CN202080038111.5A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN113994350A publication Critical patent/CN113994350A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • G06N3/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

各种实施例涉及确定神经网络的并行计算方案。一种设备可以接收计算图并将所述计算图变换为包括递归子图的数据流图。每个递归子图可以包括另一递归子图和算子节点的元组或者空图。所述设备可以基于并行计算设备的数量确定切分递归的次数。对于每次切分递归,所述设备可以确定算子节点对应的成本;确定所述递归子图的处理顺序;以及处理所述递归子图。为了处理递归子图,所述设备可以为与所述递归子图的算子节点相关联的一个或多个张量选择切分轴。所述设备可以输出切分方案,其中,所述切分方案包括与所述算子节点相关联的每个张量的切分轴。本申请公开了多种设备、方法和计算机程序。

Description

为神经网络生成并行计算方案
技术领域
本发明大体上涉及神经网络和分布式并行计算技术领域。具体地,本发明的一些实施例涉及为神经网络生成并行计算方案。
背景技术
神经网络或其他机器学习工具能够为各种类型的应用实现任务自动化。示例性应用包括文本数据、语音数据、图像数据或视频数据等的分析和处理。然而,即使神经网络为任务自动化提供了一个强大的工具,但复杂神经网络的处理可能较慢,甚至在所有设备中都不可行。
发明内容
提供本发明内容是为了以简化的形式引入概念的选择,这些概念将在以下具体实现方式中进行进一步的描述。本发明内容的目的不在于识别权利要求书保护的主题的关键特征或必要特征,也不在于限制权利要求书保护的主题的范围。
本发明的目的在于为神经网络提供一种高效且确定性的并行计算方案生成方法。上述和其他目的可以通过独立权利要求的特征来实现。进一步的实现方式在从属权利要求、具体说明和附图中显而易见。
第一方面,提供了一种用于确定神经网络的并行计算方案的设备。所述设备可以用于接收所述神经网络的计算图,并将所述计算图变换为包括多个递归子图的数据流图。每个递归子图可以包括另一递归子图和算子节点的元组或者空图。所述设备可以用于基于并行计算设备的数量确定切分递归的次数。所述设备可以用于:对于每次切分递归,确定与所述数据流图相关联的多个算子节点对应的多个成本;基于所述多个成本的从高到低的顺序,确定所述多个递归子图的处理顺序;以及按照所述确定的处理顺序处理所述多个递归子图。处理递归子图可以包括:为与所述递归子图的算子节点相关联的张量选择切分轴。所述设备可以用于输出切分方案,其中,所述切分方案包括与所述多个算子节点相关联的每个张量的切分轴。该方案为确定神经网络的并行计算方案提供了一种高效且确定性的方式。
根据第一方面的一种实现方式,所述设备还可以用于确定所述切分递归的次数,使得2N等于所述并行计算设备的数量,其中,N为所述切分递归的次数。该方案能够确定预配置的切分递归的次数。
根据第一方面的一种实现方式,所述设备还可以用于基于所述并行计算设备之间要为每个算子节点传输的数据量,确定所述多个算子节点对应的所述多个成本。该方案能够在确定所述切分方案时优先考虑高成本算子节点。
根据第一方面的一种实现方式,所述设备还可以用于基于算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子内通信成本包括所述并行计算设备之间要为所述算子节点传输的数据量。该方案能够减少所述并行计算设备之间的通信。
根据第一方面的一种实现方式,所述设备还可以用于如果在当前切分递归中没有为相邻算子节点确定切分轴,则基于所述算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。该方案可以大致估计所述算子节点的所述通信成本。
根据第一方面的一种实现方式,所述设备还可以用于基于算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子间通信成本包括所述并行计算设备之间基于所述算子节点与相邻算子节点间的共享张量执行所述相邻算子节点或者基于相邻算子节点的输出执行所述算子节点所要传输的数据量。由于算子节点之间的依赖关系,该方案能够减少并行计算设备之间的通信。
根据第一方面的一种实现方式,所述设备还可以用于如果在当前切分递归中为所述相邻算子节点或另一相邻算子节点确定了至少一个切分轴,则基于所述算子内通信成本和所述算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。由于算子内和算子间通信,该方案能够减少并行计算设备之间的通信。
根据第一方面的一种实现方式,所述设备还可以用于判断所述切分方案是否符合与所述并行计算设备相关联的至少一个内存需求。所述设备还可以用于,如果确定所述切分方案符合与所述并行计算设备相关联的所述至少一个内存需求,则输出所述切分方案。该方案能够针对所述并行计算设备的能力验证所述确定的并行计算方案。
第二方面,提供了一种用于确定神经网络的并行计算方案的方法。所述方法可以包括接收所述神经网络的计算图,并将所述计算图变换为包括多个递归子图的数据流图。每个递归子图可以包括另一递归子图和算子节点的元组或者空图。所述方法可以包括基于并行计算设备的数量确定切分递归的次数。所述方法可以包括:对于每次切分递归,确定与所述数据流图相关联的多个算子节点对应的多个成本;基于所述多个成本的从高到低的顺序,确定所述多个递归子图的处理顺序;以及按照所述确定的处理顺序处理所述多个递归子图。处理递归子图可以包括:为与所述递归子图的算子节点相关联的张量选择切分轴。所述方法可以包括输出切分方案,其中,所述切分方案包括与所述多个算子节点相关联的每个张量的切分轴。该方案为确定神经网络的并行计算方案提供了一种高效且确定性的方式。
根据第二方面的一种实现方式,所述方法还可以包括确定所述切分递归的次数,使得2N等于所述并行计算设备的数量,其中,N为所述切分递归的次数。该方案能够确定预配置的切分递归的次数。
根据第二方面的一种实现方式,所述方法还可以包括基于所述并行计算设备之间要为每个算子节点传输的数据量,确定所述多个算子节点对应的所述多个成本。该方案能够在确定所述切分方案时优先考虑高成本算子节点。
根据第二方面的一种实现方式,所述方法还可以包括基于算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子内通信成本包括所述并行计算设备之间要为所述算子节点传输的数据量。该方案能够减少所述并行计算设备之间的通信。
根据第二方面的一种实现方式,所述方法还可以包括如果在当前切分递归中没有为相邻算子节点确定切分轴,则基于所述算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。该方案可以大致估计所述算子节点的所述通信成本。
根据第二方面的一种实现方式,所述方法还可以包括基于算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子间通信成本包括所述并行计算设备之间基于所述算子节点与相邻算子节点间的共享张量执行所述相邻算子节点或者基于相邻算子节点的输出执行所述算子节点所要传输的数据量。由于算子节点之间的依赖关系,该方案能够减少并行计算设备之间的通信。
根据第二方面的一种实现方式,所述方法还可以包括如果在当前切分递归中为所述相邻算子节点或另一相邻算子节点确定了至少一个切分轴,则基于所述算子内通信成本和所述算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。由于算子内和算子间通信,该方案能够减少并行计算设备之间的通信。
根据第二方面的一种实现方式,所述方法还可以包括判断所述切分方案是否符合与所述并行计算设备相关联的至少一个内存需求。所述方法还可以包括,如果确定所述切分方案符合与所述并行计算设备相关联的所述至少一个内存需求,则输出所述切分方案。该方案能够针对所述并行计算设备的能力验证所述确定的并行计算方案。
第三方面,提供了一种计算机程序。所述计算机程序可以包括程序代码,用于:当所述计算机程序在计算机上执行时,使得执行根据第二方面的任一种实现方式所述的方法。
第四方面,提供了一种包括存储程序代码的计算机可读存储介质的计算机程序产品。所述程序代码可以包括用于执行第二方面的任一种实现方式的指令。
因此,本发明的实现方式可以提供一种用于确定神经网络的并行计算方案的设备、方法、计算机程序和计算机程序产品。本发明的这些和其他方面将从下文描述的实施例显而易见。
附图说明
附图提供了对示例实施例的进一步理解并构成本说明书的一部分,其示出了示例实施例,并且与描述一起帮助解释示例实施例。在附图中:
图1示出了根据一实施例的针对不同张量维度的神经网络的并行计算的示例;
图2示出了根据一实施例的数据并行的示例;
图3示出了根据一实施例的模型并行的示例;
图4示出了根据一实施例的抽象范式计算图的示例;
图5示出了根据一实施例的神经网络的计算图和设备拓扑图的示例;
图6示出了用于实施一个或多个实施例的设备的示例;
图7示出了根据一实施例的用于确定并行计算方案的系统架构的示例;
图8示出了根据一实施例的递归计算图的示例;
图9示出了根据一实施例的将计算图变换为包括递归子图的数据流图的示例;
图10示出了根据一实施例的确定神经网络的并行计算方案的方法的示例;
图11示出了根据一实施例的用于矩阵乘法的切分配置的示例;
图12示出了根据一实施例的矩阵乘法的另一种切分配置的示例;
图13示出了根据一实施例的矩阵乘法的另一种切分配置的示例;
图14示出了根据一实施例的张量重排通信的算子间成本的示例;
图15示出了根据一实施例的确定矩阵乘法的子图处理顺序的示例;
图16示出了根据一实施例的与矩阵乘法相关联的张量的切分轴的示例;
图17示出了根据一实施例的与另一矩阵乘法相关联的张量的切分轴的示例;
图18示出了根据一实施例的与所述矩阵乘法相关联的子张量的切分轴的示例;
图19示出了根据一实施例的与另一矩阵乘法相关联的子张量的切分轴的示例;
图20示出了根据一实施例的确定神经网络的并行计算方案的方法的示例。
类似的附图标记用于在附图中表示相同的部件。
具体实施方式
现将详细地对本发明实施例、附图示出的示例做出参考。以下结合附图提供的详细描述旨在作为实施例的描述,并非旨在表示可构造或利用实施例的唯一形式。所述描述阐述了示例的功能以及构建和操作示例的步骤顺序。然而,可以通过不同的示例来实现相同或等同的功能和顺序。
神经网络可以包括一组相互连接的神经元,这些神经元可以集中训练以执行特定任务。神经网络的层可包括多个神经元,用于基于从一个或多个其他层接收的输入提供输出。因此,每个神经元或节点可以用于进行基本计算。通常,一个神经元可以连接一个或多个其他神经元,且这一个或多个连接可以与权重相关联。权重可用于调整每个神经元对神经网络输出的影响。例如,可以调整权重以训练神经网络,从而为一组训练数据提供所期望的输出。神经网络的层可以表示为张量。张量可以包括多维数组,该多维数组包括表示层的权重等参数的标量值。例如,卷积层可以表示为包括多个过滤器的权重的张量。此外,层的输入和输出可以表示为张量。
根据一实施例,设备可以确定神经网络的并行计算方案。设备可以接收计算图。设备可以将计算图变换为包括递归子图的数据流图。每个递归子图可以包括另一递归子图和算子节点的元组或者空图。设备可以基于并行计算设备的数量确定切分递归的次数。对于每次切分递归,设备可以确定算子节点对应的成本;确定递归子图的处理顺序;以及处理递归子图。为了处理递归子图,设备可以为与递归子图的算子节点相关联的一个或多个张量选择切分轴。设备可以输出切分方案,其中,该切分方案包括与算子节点相关联的每个张量的切分轴。因此,为确定神经网络的并行计算方案公开了一种高效且确定性的方式。该并行计算方案例如可以应用于训练神经网络。
图1示出了根据一实施例的针对不同张量维度的神经网络的并行计算的示例。在数据并行中,张量102可以被切分为与不同的样本(S)有关的多个子张量,子张量可以由不同的计算设备处理,例如中央处理单元(central processing unit,简称CPU)、图形处理单元(graphic processing unit,简称GPU)或处理单元的处理器内核。在模型并行中,张量104可以被切分为与通道等参数(P)有关的子张量。在混合并行的第一示例中,张量106可以被切分为与样本(S)和例如通道等参数(P)有关的子张量。在混合并行的第二示例中,张量108可以被切分为与样本(S)、通道等参数(P),以及例如长度等属性(A)有关的子张量。
不同类型的神经网络层可以与不同的可并行维度相关联。例如,一维(one-dimension,简称1D)池化层可以在样本或例如长度或通道等属性方面进行并行。1D卷积层可以在样本或例如长度等属性方面进行并行。二维(two-dimension,简称2D)卷积层可以在样本、例如长度和宽度等属性或例如通道等参数方面进行并行。矩阵乘法可以在样本或例如通道等参数方面进行并行。
可以基于
Figure BDA0003368454090000041
测量并行效率,其中,
Figure BDA0003368454090000042
为加速比,p表示处理器的数量,T1表示对应的顺序算法的执行时间,Tp表示有p个处理器的并行算法的执行时间。并行效率Ep的值一般可以介于0和1之间,表示在问题解决过程中,参与计算的处理器相比通信和同步成本的利用程度。数值越高,表示利用率越高。
图2示出了根据一实施例的数据并行的示例。在数据并行中,计算设备可以处理不同样本组210、212、214,例如,训练数据。每个计算设备可以使用完整的神经网络(模型)计算图。例如,可以仅对神经网络的批大小(也称为样本)进行分组。可以使用更多的计算设备来提高计算能力,从而减少训练时间。每个计算设备可以与参数服务器202通信,以接收权重W',并基于每个计算设备可用的训练数据计算权重更新ΔW。每个计算设备可以向参数服务器202提供它们的权重更新ΔW,参数服务器202可以合并从计算设备接收到的权重更新,并确定得到的神经网络的权重更新,例如,采用W'=W–ηΔW,然后可以将得到的权重更新发送给计算设备以确定进一步的权重更新。
图3示出了根据一实施例的模型并行的示例。在模型并行中,多个计算设备可以共同处理同一数据组312中的数据。神经网络计算图可以分为多个子图302、304、306、308。每个计算设备可以处理其中一个子图。方法可以包括对计算图进行流水线切分,以及对神经网络的通道或者例如高度或宽度等其他张量维度进行数学切分。模型并行不仅提高了计算能力,还可以解决无法将整个神经网络存储在单个计算设备中的问题。
在混合并行中,数据并行和模型并行可以一起用于提高并行效率。但是,由于切分可能性很多,混合并行策略的优化复杂度可能较高。本文描述的示例实施例提供了一种用于获取神经网络或任何其他合适类型的机器学习模型的混合并行计算方案的有效解决方案。
图4示出了根据一实施例的抽象范式计算图的示例。抽象范式(A-normal form,简称ANF)计算图是这样一种计算图,其中函数的参数是平凡的,例如可以立即进行评估。ANF图表示函数和参数(节点)之间的依赖关系(边)。图4示出了表达式f(g(x),h(y))的ANF表示。神经网络的计算可由ANF图定义,该ANF图可定义具有相应输入和/或输出的运算以计算神经网络。
图5示出了根据一实施例的神经网络的计算图(G)和设备拓扑图(D)的示例。计算图也可以称为算子图,可以包括多个算子节点或计算节点。例如,可以基于两个卷积运算(Conv)的输出进行级联运算(Concat)。此外,可以对级联运算的输出执行矩阵乘法运算(MatMul)。图5还示出了分布式并行设备拓扑。例如,两个CPU中的每一个可以连接两个GPU。这些CPU还可以通过网络连接。分布式并行方案可以包括从G的每个算子节点到配置C的映射,其中,每个配置C描述了G的算子节点在拓扑D的多个设备上的并行实现。
图6示出了用于实施一个或多个实施例的设备的示例。设备600例如可以用于确定神经网络的并行计算方案。设备600可包括至少一个处理器602。该至少一个处理器可以包括例如各种处理设备中的一个或多个,例如,协处理器、微处理器、控制器、数字信号处理器(digital signal processor,简称DSP)、伴有或不伴有DSP的处理电路,或者包括集成电路的各种其他处理设备,例如,专用集成电路(application-specific integrated circuit,简称ASIC)、现场可编程门阵列(field programmable gate array,简称FPGA)、微控制器单元(microcontroller unit,简称MCU)、硬件加速器、专用计算机芯片等。
设备还可以包括至少一个存储器604。存储器可以用于存储例如计算机程序代码等,例如操作系统软件和应用软件。存储器604还可以用于存储一个或多个神经网络或其一个或多个部分。例如,存储器604可用于存储拓扑(例如,计算图)以及与拓扑相关联的运算类型和/或张量的形状。正如对模型并行的描述,整个神经网络(具有属性值)可能太大而无法存储在单个设备的存储器中。因此,神经网络或其一个或多个部分可以存储在存储器604中,或者通过通信接口608从外部源接收。存储器可以包括一个或多个易失性存储器设备、一个或多个非易失性存储器设备和/或其组合。例如,存储器可以体现为磁存储设备(如硬盘驱动器、软盘、磁带等)、光磁存储设备或半导体存储器(如掩模型ROM、可编程ROM(programmable ROM,简称PROM)、可擦除PROM(erasable PROM,简称EPROM)、闪存ROM、随机存取存储器(random access memory,简称RAM)等。
设备600还可以包括通信接口608,用于使设备600能够发送和/或接收信息。通信接口可以用于提供至少一个无线连接,例如3GPP移动宽带连接(例如3G、4G、5G);无线局域网(wireless local area network,简称WLAN)连接,例如符合IEEE 802.11系列或Wi-Fi联盟标准的连接;短距离无线网络连接,例如蓝牙、近距离无线通信技术(near fieldcommunication,简称NFC)或RFID连接;本地有线连接,例如局域网(local area network,简称LAN)连接或通用串行总线(universal serial bus,简称USB)连接等;或有线互联网连接。有线连接可以包括内部数据接口,例如系统总线、快捷外围部件互连标准(peripheralcomponent interconnect express,简称PCI-E)或任何其他适合硬件的互连。
设备600还可以包括用户界面610,包括至少一个输入设备和/或至少一个输出设备。输入设备可以采用各种形式,例如键盘、触摸屏或一个或多个嵌入式控制按钮。输出设备例如可以包括显示器、扬声器、振动马达等。
当设备600用于实现某种功能时,设备的某个和/或某些组件,例如至少一个处理器和/或存储器,可以用于实现该功能。此外,当至少一个处理器602用于实现某种功能时,该功能可以使用例如包括在存储器604中的程序代码606来实现。
本文描述的功能可以至少部分地由一个或多个计算机程序产品组件执行,例如,软件组件。根据一个实施例,设备包括处理器或处理器电路,例如,微处理器,处理器或处理器电路在执行程序代码时用于执行本文描述的操作和功能的实施例。替代或附加地,本文描述的功能至少部分地可以由一个或多个硬件逻辑组件执行。例如但不限于,可以使用的硬件逻辑组件的示例性类型包括现场可编程门阵列(field programmable gate array,简称FPGA)、专用集成电路(application-specific integrated circuit,简称ASIC)、专用标准产品(application-specific standard product,简称ASSP)、片上系统(system-on-a-chip,简称SOC)、复杂可编程逻辑器件(complex programmable logic device,简称CPLD)、图形处理器(graphics processing unit,简称GPU)。
设备600可以用于执行本文描述的方法或包括用于执行本文描述的方法的装置。在一个示例中,装置包括至少一个处理器602,至少一个存储器604包括程序代码606,用于当被至少一个处理器602执行时,使得设备600执行所述方法。
设备600可以包括服务器、台式电脑、笔记本电脑、平板电脑、手机等计算设备,等等。尽管设备600图示为单个设备,但可以理解的是,在适用的情况下,设备600的功能可以分布到多个设备,例如,作为云计算服务实现示例实施例。
图7示出了根据一实施例的用于确定并行计算方案的系统架构的示例。系统700可以接收神经网络的计算图作为输入。计算图例如可以包括ANF图。尽管已经以ANF图为例描述了示例实施例,但是可以理解的是,所述示例实施例可以应用于任何合适的计算图。例如,可以从神经网络解析器接收ANF图。神经网络解析器可以与系统700位于相同的设备上,或者ANF图可以例如通过通信接口608从外部神经网络解析器接收。系统700的输出可以包括针对输入计算图的分布式并行计算方案。输出可以作为输入例如通过内部或外部通信接口提供给分布式执行代码生成器。系统架构700的各种功能、框或模块可以实现为例如在设备600中的软件和/或硬件组件。
至递归图解析器710的ANF可以用于接收ANF图并将ANF图变换为递归结构计算图,例如,包括多个递归子图的数据流图。递归图可以包括子图和算子节点。每个递归子图可以是递归图,也可以是空图。
图8示出了根据一实施例的递归计算图的示例。图可以包括算子节点801和子图802。或者,可以认为图包括具有子图801的算子节点802。以801为算子节点,802为其子图,子图802可以包括子图,在本例中为空图,及其算子节点(自身)。例如,就具有三个算子节点(A、B、C)的示例图A-B-C而言,递归图可以包括算子节点A和子图B-C。子图B-C可以包括算子节点B和子图C。子图C可以包括算子节点C和空图。该顺序可以由(A(B(C())))描述。该图可以重新排序为(((A()B)C)、(A(B()C))或任何其他顺序。
图9示出了根据一实施例的将计算图变换为包括递归子图的数据流图的示例。算子节点可以表征为算子节点的类型、其输出张量的形状和/或输入张量的列表和/或其入边。第一图(a)示出了具有输出张量C和输入张量A和B的矩阵乘法算子节点901的示例。第二图(b)示出了E=MatMul(MatMul(A,B)D)的ANF 902的示例。或者,ANF图可以描述为E=(AXB)X D。第三图(c)示出了基于计算数据流图902确定的递归图903的示例。递归图903包括第一矩阵乘法算子节点(MatMul-E)和第一子图。第一子图包括NOP-D(无操作的输入D)和第二子图。第二子图包括第二矩阵乘法算子节点(MatMul-C)和第三子图。第三子图包括NOP-A和第四子图。第四子图包括NOP-A和第五子图,该子图为空图。因此,例如ANF图的计算图可以变换为包括递归子图的数据流图,可用于有效地确定并行计算方案。
再次参考图7,系统700还可以包括切分方案生成器720,其可以基于并行计算设备的数量控制外部递归的次数。切分方案生成器720还可以调用图切分模块722执行内部递归。切分方案生成器720可以接收由图切分模块722获得的中间策略,并将这些中间策略合并为最终方案。切分方案生成器720还可以根据并行计算的特征,例如并行计算设备的内存信息和/或一个或多个内存性能模型,检验最终方案是否可行。最后,切分方案生成器720可以将最终方案输出到,例如,分布式图生成器730。
成本模型管理器728可以存储和管理一个或多个符号性能成本模型,例如通信成本模型和内存成本模型。通信成本模型和内存成本模型都可以是代数符号模型,其可以相互结合进行计算,而不是执行以获取硬件测量信息。成本模型管理器728可以例如基于与算子节点关联的张量的维度和算子节点的类型来确定特定张量操作的成本。
内存成本模型可以包括存储在分区中的多个张量元素。内存成本模型可以作为判断是否执行进一步切分递归的终止准则或者附加终止准则,这将结合图10进一步描述。结合图11至14描述了通信成本模型的示例。
图切分模块722可以调用节点排序模块724对图节点的递归序列进行重组以进行处理。图切分模块722还可以接收节点方案生成器726为每个节点选择的切分轴。图切分模块722可以将递归图的算子节点所选择的切分轴合并为中间方案。中间方案可以发送至切分方案生成器720。
节点排序模块724可以调用成本模型管理器728,例如,成本模型管理器728内的通信成本模型,以重新排列递归图结构的算子节点。例如,具有最高潜在内部通信成本的算子节点在处理顺序中可以排在其他算子节点之前。可以按照算子节点的重排顺序调用图切分模块722。
节点方案生成器726可以调用成本模型管理器728,例如成本模型管理器728内的通信成本模型,从而为当前算子节点选择切分轴。可以为递归图的每个节点选择切分轴,以为切分方案生成器720提供中间切分方案。
图10示出了根据一实施例的确定神经网络的并行计算方案的方法的示例。
在1001中,设备,例如设备600,可以接收神经网络的计算图。计算图可以是任何合适的形式。设备可以将计算图变换为包括多个递归子图的数据流图。然而,根据一实施例,输入图可以包括递归图,因此可以不需要对输入计算图进行变换。递归子图可以包括其他子图和算子节点的元组。或者,子图可以为空图。
设备还可以基于并行计算设备的数量确定切分递归的次数。在每次切分递归处,可以将与算子节点相关联的张量切分为两个子张量。例如,在第一切分递归处,张量可以切分为两个子张量。在第二切分递归处,所述两个子张量中的每一个子张量还可以被切分为两个子张量等。切分递归可以迭代,直到为每个原始张量递归确定的子张量的数量等于并行计算设备的数量。例如,设备可以确定切分递归的次数,使得2N等于并行计算设备的数量,其中,N是切分递归的次数。
在1002中,设备可以对算子节点进行排序。设备可以例如确定多个递归子图的处理顺序。设备可以确定与数据流图相关联的多个算子节点对应的多个成本,并基于多个成本的从高到低的顺序,确定多个递归子图的处理顺序。多个算子节点对应的多个成本可以基于并行计算设备之间要为每个算子节点传输的数据量来确定。数据量可以基于执行算子节点所要传输的数据上限来确定。或者,数据量可以基于执行算子节点所要传输的数据下限来确定。需要传输的不同数据量可以对应于不同的切分轴。例如,可以选择包括具有最高潜在算子内通信成本的算子节点的递归子图作为待处理的第一个递归子图。处理递归子图可以包括:处理递归子图的算子节点。可以按照算子内通信成本的从高到低的顺序处理子图。例如,节点排序模块724可以从成本模型管理器728检索与每个子图的算子节点相关联的多个成本。节点排序模块724可以基于检索到的信息确定处理顺序。此外,节点排序模块724可以向节点方案生成器726和/或图切分模块722提供处理顺序的指示。
在1003中,设备可以对算子节点进行切分。设备可以按照在1002中确定的处理顺序处理多个递归子图。处理递归子图可以包括:为与递归子图的算子节点相关联的一个或多个张量选择切分轴。例如,可以为一个或多个输入张量和/或输出张量确定切分轴。例如,设备可以从在1002中确定的处理顺序中的第一个递归子图开始。设备可以为与第一个递归子图的算子节点关联的至少一个输入和/或输出张量选择切分轴。
根据一个实施例,设备可以基于算子内通信成本为与算子节点相关联的张量选择切分轴。算子内通信成本可以包括并行计算设备之间要为算子节点传输的数据量。数据量例如可以以并行计算设备之间执行算子节点所需要交互的张量元素的数量来衡量。例如,多个并行计算设备可能需要特定部分的输入张量来执行所述操作的一部分。多个计算设备可能需要相同的数据,因此数据可能需要在并行计算设备之间传输,这可能导致高通信成本。基于算子内通信成本确定切分轴能够降低并行处理引起的通信开销。
根据一个示例实施例,如果在当前切分递归中没有为相邻算子节点确定切分轴,则设备可以基于算子内通信成本,为与算子节点相关联的张量选择切分轴。这使得即使一个或多个相邻节点的切分方案尚未确定,也能够对算子节点的成本进行估计。例如,如果没有为一个或多个相邻算子节点确定切分轴,则可能无法估计节点之间的交互成本。因此,此时可以基于算子内通信成本选择切分轴。例如,设备可以选择与最低算子内通信成本相关联的切分轴。
根据一个示例实施例,设备可以基于算子间通信成本,为与算子节点相关联的张量选择切分轴,其中,算子间通信成本包括并行计算设备之间基于算子节点与相邻算子节点间的共享张量执行相邻算子节点或者基于相邻算子节点的输出执行算子节点所要传输的数据量。数据量例如可以以并行计算设备之间执行相邻算子节点或算子节点需要交互的张量元素的数量来衡量。这使得在确定切分轴时能够考虑算子节点之间的交互。例如,可以与相邻算子节点共享张量,所述共享张量或其部分可能需要在不同计算设备之间传输以执行相邻算子节点或算子节点。或者,或附加地,可能需要在不同计算设备之间传输算子节点的输出或其一个或多个部分的输出。考虑这种算子间通信成本能够选择切分轴,从而减少由于算子节点之间的交互而导致的并行计算设备之间的额外通信引起的开销。例如,设备可以选择与最低算子间通信成本相关联的切分轴。
根据一个示例实施例,如果在当前切分递归中为相邻算子节点或另一相邻算子节点确定了至少一个切分轴,则设备可以基于算子内通信成本和算子间通信成本,为与算子节点相关联的张量选择切分轴。例如,如果已经为多个相邻算子节点中的一个算子节点确定了切分轴,则可以同时考虑算子内通信成本和算子间通信成本。例如,设备可以基于算子内通信成本和算子间通信成本之和或其他组合选择切分轴。例如,可以选择与和的最小值相关联的切分轴。
在1004中,设备可以判断方法1000的内环是否结束。例如,设备可以判断数据流图的多个递归子图是否都已处理。如果还有子图需要处理,则设备可以返回至1003并按照处理顺序处理下一个子图。例如,可以为下一个递归子图确定切分轴。所选择的切分轴可以不同于为先前处理的递归子图选择的切分轴。如果多个递归子图已经处理完,则设备可以确定中间并行方案,其可以包括为多个递归子图选择的切分轴。
在1005中,设备可以判断外环是否结束。例如,设备可以判断所确定次数的切分递归是否已完成。如果还有切分递归需要执行,则设备可以返回至1002以对算子节点进行排序。因此,设备可以重新确定递归子图的处理顺序。处理顺序可以不同于为上一次切分递归确定的处理顺序。或者,如果递归子图被配置为按照与上一次切分递归相同的顺序进行处理,则设备可以返回至1003。
另外,或者作为所确定次数的切分递归的替代,内存成本模型可以用于判断外环是否结束。例如,如果确定所有张量分区适合与当前切分递归相关联的并行计算设备的数量,则设备可以终止切分。因此,根据一个示例实施例,设备可以基于内存成本模型确定切分递归的次数。
在1003中,设备可以按照处理顺序处理递归子图,直到多个递归子图中的每一个都已处理。在内环的每次迭代时,设备可以为外环的上一次迭代产生的算子节点的(子)张量选择切分轴。因此,每个张量最终可以被切分为多个子张量,其中,多个子张量的数量对应于并行计算设备的数量。通常,方法1000的内环可以为递归子图的张量的确定切分轴,外环基于并行计算设备的数量对张量进一步切分。
在1004中,设备可以判断内环是否结束并移动到1003以对下一个算子节点执行切分,或者,如果本切分递归没有其他算子节点待处理,则移动到1005。
在1005中,设备可以判断外环是否结束。例如,设备可以判断所确定次数的切分递归是否已完成。如果没有其他待执行的切分递归,则设备可以移动到1006。
在1006中,设备可以输出选择的切分方案。切分方案可以包括与多个算子节点相关联的每个张量的切分轴。切分方案例如可以包括每个张量的切分轴的指示。切分方案还可以包括:根据对应的切分轴对张量进行切分所得到的(子)张量的切分轴的指示。
根据一个示例实施例,设备可以判断切分方案是否符合与并行计算设备相关联的至少一个内存需求。此外,如果确定切分方案符合与并行计算设备相关联的至少一个内存需求,则设备可以输出切分方案。例如,设备可以判断并行计算设备是否具有足够的内存和/或处理资源来存储和/或处理分配给每个计算设备的(子)张量和操作。根据一个示例实施例,如果确定切分方案符合与并行计算设备相关联的所有内存需求,则设备可以输出切分方案。
尽管描述了方法1000由设备执行,但是需要理解的是,该方法可以由任何合适的实体执行,例如,包括一个或多个软件和/或硬件组件或多个分布式计算设备的系统。
图11示出了根据一实施例的用于矩阵乘法的切分配置的示例。提供矩阵A和矩阵B作为输入张量的示例。在第一切分配置中,矩阵A可以参照轴i进行切分。例如,矩阵A的上半部分可以被视为第一子张量,矩阵A的下半部分可以被视为第二子张量。矩阵乘法的计算可以分布在第一计算设备和第二计算设备之间。为了计算切分矩阵乘法,第一计算设备可能需要访问具有维度i,k的矩阵A的上半部分以及具有维度k,j的整个矩阵B。第二计算设备可能需要访问矩阵A的下半部分和整个矩阵B,因此,基于矩阵B的维度,例如,
Figure BDA0003368454090000101
可以确定第一切分配置的算子内通信成本。输出张量可以包括含有第一计算设备的输出矩阵的上子张量和含有第二计算设备的输出矩阵的下子张量。
图12示出了根据一实施例的矩阵乘法的另一种切分配置的示例。再次提供矩阵A和矩阵B作为输入张量的示例。在第二切分配置中,矩阵B可以参照轴j进行切分。例如,矩阵B的左半部分可以被视为第一子张量,矩阵B的右半部分可以被视为第二子张量。为了计算切分矩阵乘法,第一计算设备可能需要能够访问矩阵B的左半部分和整个矩阵A,第二计算设备需要访问矩阵B的右半部分和整个矩阵A。因此,基于矩阵B的维度,例如,
Figure BDA0003368454090000102
可以确定算子内通信成本。输出张量可以包括含有第一计算设备的输出矩阵的左子张量和含有第二计算设备的输出矩阵的右子张量。
图13示出了根据一实施例的矩阵乘法的另一种切分配置的示例。再次提供矩阵A和矩阵B作为输入张量的示例。在第三切分配置中,矩阵A和矩阵B可以参照轴k进行切分。例如,矩阵A的左半部分可以被视为第一子张量,矩阵A的右半部分可以被视为第二子张量。矩阵B的上半部分可以被视为第三子张量,矩阵B的下半部分可以被视为第四子张量。为了计算切分矩阵乘法,第一计算设备可能只需要访问矩阵A的左半部分和矩阵B的上半部分,第二计算设备可能只需要访问矩阵A的右半部分和矩阵B的下半部分。但是,可能需要将计算设备的输出矩阵进行求和并重新分配给计算设备。因此,基于输出的维度,例如,基于
Figure BDA0003368454090000103
可以确定算子内通信成本。
图14示出了根据一实施例的确定张量重排通信的算子间成本的示例。点虚线和短线虚线部分可以与不同的计算设备相关联。例如,如果一个节点被配置为根据轴线i为一个算子节点进行切分并根据轴线k为另一算子节点进行切分,则可能需要在计算设备之间传输一半的点虚线和短线虚线部分,原因在于另一半可能已经在各自的计算设备上存在。如果网络带宽不饱和,则可以同时针对点虚线和短线虚线部分进行通信。因此,可以基于两个计算设备所需的张量的维度,例如,
Figure BDA0003368454090000104
确定算子间通信成本。
图15至19示出了以分布式并行方式在四个设备上确定切分方案以计算包括两个连续矩阵乘法的图的示例。基于并行计算设备的数量(4),切分递归的次数N可以确定为N=2,因为2N=22=4。
图15示出了根据一实施例的确定矩阵乘法的子图处理顺序的示例。上述算子内通信成本模型可用于确定第一算子节点(Op1)和第二算子节点(Op2)的处理顺序,两者均包括本示例中的矩阵乘法。矩阵的维度(a=30,b=10,c=20,d=40)可用于确定不同候选切分轴(i,j,k)的算子内通信成本,如下所示:
算子节点1:
Figure BDA0003368454090000111
Figure BDA0003368454090000112
Figure BDA0003368454090000113
算子节点2:
Figure BDA0003368454090000114
Figure BDA0003368454090000115
Figure BDA0003368454090000116
可以基于比较每个算子节点的最低成本并选择与所比较成本的最高值相关联的算子节点来确定处理顺序。在本示例中,可以选择先处理第二算子节点,因为cost(j)Op2=300(表示第二算子节点的最低成本)大于cost(i)Op1=100(表示第一算子节点的最低成本)。
图16示出了根据一实施例的与矩阵乘法相关联的张量的切分轴的示例。基于第二算子节点的最低算子内通信成本cost(j)Op2=300,可以为第二算子节点选择切分轴j。因此,第二算子节点的下输入矩阵可以切分为左部分1601和右部分1602。第二算子节点的输出矩阵可以采用类似的方式进行切分。
图17示出了根据一实施例的与另一矩阵乘法相关联的张量的切分轴的示例。基于第一算子节点的最低算子内通信成本cost(i)Op1=100,可以为第一算子节点选择切分轴i。通常,可以基于算子内通信成本和算子间通信成本来选择切分轴。但是,在本示例中,两个算子节点之间共享的张量a x c处于抽象状态,因此可以仅基于算子内成本进行选择。如果一个张量与选择的切分轴不相关,则可以认为该张量处于抽象状态。例如,结合图11至13所述,对于矩阵乘法A*B=C,可以有三个共享轴i、j和k。考虑切分轴i(图11),具有轴i的矩阵A和矩阵C可以以确定的方式切分为两部分。然而,矩阵B与轴i不相关,则可以稍后根据轴j或k进行切分,而不会产生不同的成本。可以例如基于最小化算子间通信成本稍后确定切分轴j或k,例如,在切分递归之后。类似地,在图12的示例中,选择的轴为j,因此矩阵A处于抽象状态。在图16至19中,对角虚线表示张量或子张量的抽象状态。在图17的示例中,第二算子节点的矩阵a x c处于抽象状态,而第一算子节点的矩阵a x c不处于抽象状态。
可以通知第二算子节点当前递归中第二算子节点的上输入张量的切分轴应该与第一算子节点的输出张量的切分轴相同。可以例如在所有切分递归之后提供该信息。因此,第一算子节点的上输入矩阵可以切分为上部分1701和下部分1702。第一算子节点的输出矩阵可以采用类似的方式进行切分。
在为第一算子节点和第二算子节点选择切分轴之后,完成第一切分递归(内环)。由于N=2,可以发起第二切分递归以进一步切分第一切分递归得到的子张量。为了确定第二切分递归的处理顺序,子张量的维度可用于确定不同切分轴(i,j,k)的算子内通信成本,如下所示:
算子节点1:
Figure BDA0003368454090000117
Figure BDA0003368454090000118
Figure BDA0003368454090000119
算子节点2:
Figure BDA0003368454090000121
Figure BDA0003368454090000122
Figure BDA0003368454090000123
因此,可以确定处理顺序相同,即在第二切分递归过程中,可以先对第二算子节点进行处理。
图18示出了根据一实施例的与矩阵乘法相关联的子张量的切分轴的示例。基于第二算子节点的最低算子内通信成本cost(i)Op2=200,可以在第二切分递归中为第二算子节点选择切分轴i。
图19示出了根据一实施例的与另一矩阵乘法相关联的子张量的切分轴的示例。基于第一算子节点的最低算子内通信成本cost(j)Op1=75,可以在第二切分递归中为第二算子节点选择切分轴j。基于图18,第二算子节点中的张量a x c与两个分区相关联,一个带有轴i,一个为抽象状态,到目前为止,与第二算子节点相同,第一算子节点与一个带有轴i的分区相关联。因此,抽象状态仍然适用,从而可以使用算子内通信成本,无需算子间通信成本。
在为两个算子节点选择切分轴之后,完成的切分递归的次数为两个,因此外环中没有需要执行的其他切分递归。如果设备可以同时相互通信,且网络带宽不饱和,则可以例如基于算子节点的算子内通信成本和算子节点之间的算子间通信成本确定总通信成本,例如,基于
Figure BDA0003368454090000124
如果这些设备逐一进行通信,则总通信成本可以为
Figure BDA0003368454090000125
Figure BDA0003368454090000126
随后,可以输出包括确定的切分轴的最终并行计算方案。
下面结合图15至19提供应用内存成本模型以确定切分递归的次数的示例。在本示例中,假设每个并行计算设备能够容纳1000个元素,可以认为这是内存需求。在图15中,第一算子节点所需的内存为ab+bc+ac=1100个元素,第二算子节点所需的内存为ac+cd+ad=2600个元素。由于每个并行计算设备的内存需求为1000个元素,因此分区不适合于并行计算设备,从而可以进行进一步的切分递归(例如,图10中的外环),以将计算切分到更多的设备。
在图16中,第一算子节点所需的内存仍为1100个元素。第二算子节点所需的内存为ac+cd/2+ad/2=1600,仍超过1000个元素的内存需求。在图17中,第一算子节点所需的内存为ab/2+bc+ac/2=650个元素,低于内存需求。然而,第二算子节点所需的内存仍为1600。因此,第一算子节点将符合内存需求,但第二算子节点仍不符合内存需求。因此,设备可以确定进行进一步的切分。在图18中,第二算子节点所需内存为ac/2+cd/2+ad/4=1000,符合内存需求。图19中的操作可用于平衡两个算子节点的切分。尽管在本示例中使用相同的1000个元素的内存需求,但可以理解的是,并行计算设备可以关联不同的内存需求。
图20示出了根据一实施例的确定神经网络的并行计算方案的方法2000的示例。
在2001中,方法可以包括:接收神经网络的计算图。
在2002中,方法可以包括:将计算图变换为包括多个递归子图的数据流图。根据一个示例,每个递归子图可以包括另一递归子图和算子节点的元组或者空图。
在2003中,方法可以包括:基于并行计算设备的数量确定切分递归的次数。
在2004中,方法可以包括:对于每次切分递归,确定与数据流图相关联的多个算子节点对应的多个成本。
在2005中,方法可以包括:对于每次切分递归,基于多个成本的从高到低的顺序,确定多个递归子图的处理顺序。
在2006中,方法可以包括:对于每次切分递归,按照确定的处理顺序处理多个递归子图。根据一个示例,处理递归子图可以包括:为与递归子图的算子节点相关联的张量选择切分轴。
在2007中,方法可以包括:输出切分方案,其中,所述切分方案包括与多个算子节点相关联的每个张量的切分轴。
该方法的进一步特征直接来自所附权利要求书以及说明书中描述的方法和设备的功能和参数,因此在此不再赘述。
示例实施例提供了一种确定神经网络的并行计算方案的高效且确定性的方法。例如,利用参考架构ResNet 50,可以显著减少确定并行计算方案所消耗的时间。例如,当与参考解决方案相比时,可以通过64个并行计算设备实现72倍的加速。当并行计算设备的数量增加时,该方案可能更加有益。例如,可以通过512个并行计算设备实现220倍的加速。因此,可以显著提高确定神经网络的并行计算方案的并行效率。
设备或系统可以用于执行或使得执行本文所述的一个或多个方法的任一方面。进一步地,计算机程序可以包括程序代码,用于:使得执行本文所述的一个或多个方法的一个方面,然后在计算机上执行计算机程序。进一步地,计算机程序产品可以包括在其上存储有程序代码的计算机可读存储介质,所述程序代码包括用于执行本文所述的一个或多个方法的任一方面的指令。进一步地,设备可以包括用于执行本文所述的一个或多个方法的任一方面的装置。根据一个示例实施例,装置包括至少一个处理器,以及包括程序代码的存储器。程序代码用于当被至少一个处理器执行时使得执行一个或多个方法的任一方面。
本文给出的任何范围或设备值均可扩展或更改,但不会丢失所寻求的效果。此外,除非明确禁止,否则任何实施例均可与另一实施例组合。
虽然已经以特定于结构特征和/或动作的语言描述了主题,但是应该理解的是,权利要求书定义的主题不必局限于上面描述的具体特征或动作。相反,上面描述的具体特征和动作作为实现所述权利要求的示例而公开,并且其他等效特征和动作旨在属于所述权利要求的范围。
应理解,上述优点和优势可涉及一个实施例,也可涉及几个实施例。这些实施例不限于解决任何或所有所述问题的实施例,或那些具有任何或所有所述优点和优势的实施例。可进一步理解的是,对“一”项的引用可以指那些项中的一个或多个。此外,对“至少一个”项或“一个或多个”项的引用可以指那些项中一个或多个。
本文所述的方法的步骤或操作可以按照任何适当的顺序执行,或者在适当的情况下同时执行。此外,单独的框可从任何方法中删除而不脱离本文所描述的主题的范围。上述任一实施例的各个方面可与所描述的任何其他实施例的各个方面相结合,以形成进一步的实施例,而不会失去所寻求的效果。
本文使用的术语“包括”是指包括所标识的方法、框或元素,但此类框或元素不包含排他性列表,且方法或设备可包含其他框或元素。
尽管主体可以被称为“第一”或“第二”主体,但这并不一定表示这些主体的任何顺序或重要性。相反,这些属性可以仅用于在主体之间进行区分。
应当理解,以上描述仅通过示例给出,并且本领域技术人员可以进行各种修改。上述说明书、示例和数据提供了对示例实施例的结构和使用的完整描述。尽管以上已经以某种程度的特殊性或者参考一个或多个单独的实施例描述了各种实施例,但是本领域技术人员可以在不脱离本说明书的范围的情况下对所公开的实施例进行多种改变。

Claims (18)

1.一种用于确定神经网络的并行计算方案的设备,其特征在于,用于:
接收所述神经网络的计算图;
将所述计算图变换为包括多个递归子图的递归数据流图,其中,每个递归子图是另一递归子图和算子节点的元组或者空图;
基于并行计算设备的数量确定切分递归的次数;
对于每次切分递归,
确定与所述数据流图相关联的多个算子节点对应的多个成本;
基于所述多个成本的从高到低的顺序,确定所述多个递归子图的处理顺序;
按照所述确定的处理顺序处理所述多个递归子图,其中,处理递归子图包括:为与所述递归子图的算子节点相关联的张量选择切分轴;以及
输出切分方案,其中,所述切分方案包括与所述多个算子节点相关联的每个张量的切分轴。
2.根据权利要求1所述的设备,其特征在于,所述设备还用于:
确定所述切分递归的次数,使得2N等于所述并行计算设备的数量,其中,N为所述切分递归的次数。
3.根据权利要求1或2所述的设备,其特征在于,所述设备还用于:
基于所述并行计算设备之间要为每个算子节点传输的数据量,确定所述多个算子节点对应的所述多个成本。
4.根据前述任一权利要求所述的设备,其特征在于,所述设备还用于:
基于算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子内通信成本包括所述并行计算设备之间要为所述算子节点传输的数据量。
5.根据权利要求4所述的设备,其特征在于,所述设备还用于:
如果在当前切分递归中没有为相邻算子节点确定切分轴,则基于所述算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。
6.根据权利要求1至4中任一项所述的设备,其特征在于,所述设备还用于:
基于算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子间通信成本包括所述并行计算设备之间基于所述算子节点与相邻算子节点间的共享张量执行所述相邻算子节点或者基于相邻算子节点的输出执行所述算子节点所要传输的数据量。
7.根据权利要求4和6所述的设备,其特征在于,所述设备还用于:
如果在所述当前切分递归中为所述相邻算子节点或另一相邻算子节点确定了至少一个切分轴,则基于所述算子内通信成本和所述算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。
8.根据前述任一权利要求所述的设备,其特征在于,所述设备还用于:
判断所述切分方案是否符合与所述并行计算设备相关联的至少一个内存需求;以及
如果确定所述切分方案符合与所述并行计算设备相关联的所述至少一个内存需求,则输出所述切分方案。
9.一种用于确定神经网络的并行计算方案的方法,其特征在于,所述方法包括:
接收所述神经网络的计算图;
将所述计算图变换为包括多个递归子图的递归数据流图,其中,每个递归子图是另一递归子图和算子节点的元组或者空图;
基于并行计算设备的数量确定切分递归的次数;
对于每次切分递归,
确定与所述数据流图相关联的多个算子节点对应的多个成本;
基于所述多个成本的从高到低的顺序,确定所述多个递归子图的处理顺序;
按照所述确定的处理顺序处理所述多个递归子图,其中,处理递归子图包括:为与所述递归子图的算子节点相关联的张量选择切分轴;
输出切分方案,其中,所述切分方案包括与所述多个算子节点相关联的每个张量的切分轴。
10.根据权利要求9所述的方法,其特征在于,还包括:
确定所述切分递归的次数,使得2N等于所述并行计算设备的数量,其中,N为所述切分递归的次数。
11.根据权利要求9或10所述的方法,其特征在于,还包括:
基于所述并行计算设备之间要为每个算子节点传输的数据量,确定所述多个算子节点对应的所述多个成本。
12.根据权利要求9至11中任一项所述的方法,其特征在于,还包括:
基于算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子内通信成本包括所述并行计算设备之间要为所述算子节点传输的数据量。
13.根据权利要求12所述的方法,其特征在于,还包括:
如果在当前切分递归中没有为相邻算子节点确定切分轴,则基于所述算子内通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。
14.根据权利要求9至12中任一项所述的方法,其特征在于,还包括:
基于算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴,其中,所述算子间通信成本包括所述并行计算设备之间基于所述算子节点与相邻算子节点间的共享张量执行所述相邻算子节点或者基于相邻算子节点的输出执行所述算子节点所要传输的数据量。
15.根据权利要求12和14所述的方法,其特征在于,还包括:
如果在当前切分递归中为所述相邻算子节点或另一相邻算子节点确定了至少一个切分轴,则基于所述算子内通信成本和所述算子间通信成本,为与所述算子节点相关联的所述张量选择所述切分轴。
16.根据前述任一权利要求所述的方法,其特征在于,还包括:
判断所述切分方案是否符合与所述并行计算设备相关联的至少一个内存需求;以及
如果确定所述切分方案符合与所述并行计算设备相关联的所述至少一个内存需求,则输出所述切分方案。
17.一种计算机程序,包括程序代码,其特征在于,所述程序代码用于:当所述计算机程序在计算机上执行时,使得执行根据权利要求9至16中任一项所述的方法。
18.一种计算机程序产品,包括用于在其上存储程序代码的计算机可读存储介质,其特征在于,所述程代码包括用于执行根据权利要求9至16中任一项所述的方法的指令。
CN202080038111.5A 2020-03-27 2020-03-27 为神经网络生成并行计算方案 Pending CN113994350A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2020/058707 WO2021190761A1 (en) 2020-03-27 2020-03-27 Parallel computing scheme generation for neural networks

Publications (1)

Publication Number Publication Date
CN113994350A true CN113994350A (zh) 2022-01-28

Family

ID=70057127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080038111.5A Pending CN113994350A (zh) 2020-03-27 2020-03-27 为神经网络生成并行计算方案

Country Status (4)

Country Link
US (1) US20230024350A1 (zh)
EP (1) EP4115342A1 (zh)
CN (1) CN113994350A (zh)
WO (1) WO2021190761A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114598631A (zh) * 2022-04-28 2022-06-07 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
WO2022222839A1 (zh) * 2022-02-17 2022-10-27 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
WO2023160236A1 (zh) * 2022-02-25 2023-08-31 深圳云天励飞技术股份有限公司 多输出神经网络的切片方法、装置、芯片及存储介质
CN117634711A (zh) * 2024-01-25 2024-03-01 北京壁仞科技开发有限公司 张量维度切分方法、系统、设备和介质
WO2024066847A1 (zh) * 2022-09-29 2024-04-04 华为技术有限公司 一种基于多裸片的计算方法及相关设备

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023141939A1 (zh) * 2022-01-28 2023-08-03 华为技术有限公司 处理计算任务方法及装置
CN115268877B (zh) * 2022-09-27 2022-12-13 之江实验室 一种用于图计算并行执行的中间表示方法及装置
US11782723B1 (en) 2022-09-27 2023-10-10 Zhejiang Lab Intermediate representation method and apparatus for parallel execution of graph computation
CN115421897B (zh) * 2022-11-07 2023-03-24 之江实验室 一种面向芯粒的深度神经网络流水线并行调度方法及装置
CN115859016B (zh) * 2023-03-02 2023-06-09 深圳思谋信息科技有限公司 基于处理器的运算方法、装置、计算机设备及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022222839A1 (zh) * 2022-02-17 2022-10-27 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
US11823053B2 (en) 2022-02-17 2023-11-21 Zhejiang Lab Method of neural network model computation-oriented intermediate representation by constructing physical computation graph, inferring information of input and output tensor edges of each node therein, performing memory optimization on tensor edges, and optimizing physical computation graph
WO2023160236A1 (zh) * 2022-02-25 2023-08-31 深圳云天励飞技术股份有限公司 多输出神经网络的切片方法、装置、芯片及存储介质
CN114598631A (zh) * 2022-04-28 2022-06-07 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
WO2023082576A1 (zh) * 2022-04-28 2023-05-19 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
US11805025B1 (en) 2022-04-28 2023-10-31 Zhejiang Lab Neural network computing-oriented modeling method and apparatus for distributed data routing
WO2024066847A1 (zh) * 2022-09-29 2024-04-04 华为技术有限公司 一种基于多裸片的计算方法及相关设备
CN117634711A (zh) * 2024-01-25 2024-03-01 北京壁仞科技开发有限公司 张量维度切分方法、系统、设备和介质
CN117634711B (zh) * 2024-01-25 2024-05-14 北京壁仞科技开发有限公司 张量维度切分方法、系统、设备和介质

Also Published As

Publication number Publication date
US20230024350A1 (en) 2023-01-26
EP4115342A1 (en) 2023-01-11
WO2021190761A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
CN113994350A (zh) 为神经网络生成并行计算方案
US20220391665A1 (en) Method for splitting neural network model by using multi-core processor, and related product
CN109993299B (zh) 数据训练方法及装置、存储介质、电子装置
WO2021190127A1 (zh) 一种数据处理方法和数据处理设备
US20170193361A1 (en) Neural network training performance optimization framework
CN111062467B (zh) 一种应用于ai异构编译器的自动切分神经网络子图方法
CN114035936B (zh) 一种基于人工智能的多维并行处理方法、系统、设备和可读存储介质
WO2014052942A1 (en) Random number generator in a parallel processing database
CN110633785B (zh) 一种卷积神经网络的计算方法及系统
WO2021011914A1 (en) Scheduling operations on a computation graph
US11630986B2 (en) Graph conversion method
US20210209270A1 (en) Distributed tensor network contraction scheme with splitting based on dynamic ordering
JP2023541350A (ja) 表畳み込みおよびアクセラレーション
CN114841309A (zh) 数据处理方法、装置以及电子设备
CN112799852B (zh) 逻辑节点的多维sbp分布式签名决策系统及其方法
JP2000057123A (ja) 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体
CN117193988A (zh) 一种晶圆级架构ai加速芯片的任务调度方法及介质
CN113222136A (zh) 卷积运算方法及芯片
US20220391571A1 (en) Fast quantum circuit simulations with parallel task-based tensor network contraction
CN114091686A (zh) 数据处理方法、装置、电子设备和存储介质
US10409761B2 (en) Parallel computer system, arithmetic method, and storage medium
US20230130747A1 (en) Computer-readable recording medium storing learning program, learning method, and information processing device
CN117240717B (zh) 分片结构网格处理方法及优化方法和存储介质、设备
WO2023141939A1 (zh) 处理计算任务方法及装置
KR102541463B1 (ko) 3차원 포인트 클라우드의 의미론적 분할을 위한 그래프 컨볼루션 신경망 가속 장치 및 이를 이용한 3차원 포인트 클라우드의 의미론적 분할 방법

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