CN117077744A - 面向通用张量处理器的算子并行分割方法及系统 - Google Patents

面向通用张量处理器的算子并行分割方法及系统 Download PDF

Info

Publication number
CN117077744A
CN117077744A CN202311052377.7A CN202311052377A CN117077744A CN 117077744 A CN117077744 A CN 117077744A CN 202311052377 A CN202311052377 A CN 202311052377A CN 117077744 A CN117077744 A CN 117077744A
Authority
CN
China
Prior art keywords
operator
segmentation
input
time
sub
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
CN202311052377.7A
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.)
Xiamen Yipu Intelligent Technology Co ltd
Original Assignee
Xiamen Yipu Intelligent 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 Xiamen Yipu Intelligent Technology Co ltd filed Critical Xiamen Yipu Intelligent Technology Co ltd
Priority to CN202311052377.7A priority Critical patent/CN117077744A/zh
Publication of CN117077744A publication Critical patent/CN117077744A/zh
Pending legal-status Critical Current

Links

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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • 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)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Neurology (AREA)
  • Physiology (AREA)
  • Genetics & Genomics (AREA)
  • Image Analysis (AREA)

Abstract

本发明提出了一种面向通用张量处理器的算子并行分割方法及系统,包括:计算获得算子输出形状;根据算子输出形状分别获取每个维度形状的因数集合;获取算子在TPU中运行时间最短的分割方案,分割方案为因数集合的元素组合,分割方案的总数为因数集合的大小乘积,运行时间的计算表达式为:运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,输入读取时间的计算以子算子输入大小作为变量,子算子输入大小通过分析神经网络的依赖关系获得;预设解空间阈值,若分割方案的总数不大于解空间阈值,采用枚举算法找出最优分割方案;若大于,则采用启发式算法找出最优分割方案。本发明能够实现基于TPU的神经网络算法自动并行化方案。

Description

面向通用张量处理器的算子并行分割方法及系统
技术领域
本申请涉及通用张量处理器技术领域,具体涉及一种面向通用张量处理器的算子并行分割方法及系统。
背景技术
目前神经网络的深度有几百层甚至可达上千层,日趋复杂的网络模型为其应用的时效性带来了挑战。为减少深度神经网络的训练时间和推理时间,基于各种高性能计算平台设计深度神经网络并行计算逐渐成为研究热点。近年来,以多核CPU、GPU和TPU为代表的高性能计算平台具有高能效的优点,被广泛用于神经网络的并行加速。
基于多核CPU和GPU的神经网络并行加速依赖于并行编程框架,目前主要的编程框架有OpenMP、CUDA、OpenCL。结合深度神经网络的算法特点,利用并行编程框架能设计充分发挥多核众核平台计算能力的并行化方法。根据神经网络的结构特点,其并行化目前主要有两种方法:模型并行和数据并行。模型并行是指将网络模型分解到各个计算设备上,依靠设备间的共同协作实现并行。数据并行是指对算子输入数据做切分,从而分割算子,将多个分片的数据分配到相同设备的各个核上,依靠多核计算实现并行。使用多核CPU对深度神经网络并行加速,一般使用OpenMP并行编程语言,通过数据并行,将算法中的循环部分通过OpenMP和向量化指令做多线程和SIMD并行。使用GPU来并行加速深度神经网络算法,一般使用CUDA或OpenCL将算法移植在GPU上,通过数据并行或模型并行,或者采用两者相结合的方法并行加速。
在嵌入式应用中,根据其高时效和低功耗要求,为了最大化计算速度和最小化能量消耗,针对深度学习设计的张量处理器(Tensor Processing Unit,TPU)广泛应用于嵌入式计算。相较于多核CPU和GPU,针对神经网络计算TPU有更高的能效,但作为专用集成电路,TPU缺少一种便捷高效的并行化方法,使神经网络难以高效部署到TPU上。由于没有足够的控制单元,基于多核CPU和GPU的线程级并行不适用于TPU。此外,类似OpenCL的并行编程框架需要开发人员对硬件细节有一定掌握,从而增大开发难度,延长开发周期。
鉴于此,本申请提出了一种面向通用神经网络张量处理器的算子并行分割方法来解决神经网络算法难以高效部署到TPU的问题,实现基于TPU的神经网络算法自动并行化方案。
发明内容
为了解决现有技术中神经网络算法难以高效部署到TPU等问题,本申请提供一种面向通用张量处理器的算子并行分割方法及系统,以解决上述技术缺陷问题。
根据本发明的一个方面提出了一种面向通用张量处理器的算子并行分割方法,该方法包括以下步骤:
S1、根据输入形状、卷积核形状和卷积层参数计算获得算子输出形状,算子输出形状包括通道输出数据、高度输出数据和宽度输出数据;
S2、根据算子输出形状分别获取每个维度形状的因数集合,因数集合包括通道因数集合、高度因数集合和宽度因数集合;
S3、获取算子在TPU中运行时间最短的分割方案,其中分割方案为步骤S2中的因数集合的元素组合,分割方案的总数为步骤S2中的因数集合的大小乘积,运行时间的计算表达式为:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,式中,输入读取时间的计算以子算子输入大小作为变量,子算子输入大小通过分析神经网络的依赖关系获得;
S4、预设解空间阈值,响应于确定分割方案的总数不大于解空间阈值,则采用枚举算法遍历解空间找出最优分割方案;响应于确定分割方案的总数大于解空间阈值,则采用启发式算法找出最优分割方案。
通过上述技术方案,开发人员无需掌握TPU硬件细节和神经网络嵌入式环境相关知识,根据现有成熟软件框架(Pytorch或TensorFlow)的网络模型直接利用TPU编译器自动完成神经网络并行化,从而极大地提高了神经网络高效部署到TPU的便捷性,缩短相关应用的开发周期。
在具体的实施例中,还包括步骤S5、求解出最优分割方案后,根据子算子在各个维度上输出的大小和卷积核在各个维度上的尺寸,获取子算子在对应维度上输入的偏移和大小,进而在对应维度切割输入并分配给对应子算子。
通过上述技术方案,所有子算子的输出按照切割输入的维度和顺序进行拼接,从而能够保证与原算子输出一致。
在具体的实施例中,在步骤S1中,还包括将神经网络的算子形成有向计算子图,有向计算子图包括以有向边连接的多个子节点,子节点表示执行线性层、卷积层、池化层、循环层和归一化层的其中一种,有向边表示从一层到另一层的顺序依赖。
通过上述技术方案,根据每个层的输入和参数,即可计算出其输出形状。
在具体的实施例中,在步骤S3中,子算子输入大小通过分析神经网络的依赖关系获得,具体包括以下子步骤:
S31、将神经网络的算子映射为一个多面体模型;
S32、在多面体模型的表示中,利用整数集合描述张量,整数集合之间的依赖关系用仿射函数表示,仿射函数的表达式为:
f(x)=Mx+c,式中x是一个d维向量,表示整数集合中的自由变元;M是一个kⅹd大小的矩阵;c是一个k维向量;
S33、基于整数集合和仿射函数描述算子输出和输入的映射关系;
S34、利用映射关系,根据算子输出形状获取对应切割方案的输入集合,输入集合元素的个数为子算子输入大小。
通过上述技术方案,根据计算过程,建立输出到输入的映射关系,可以求出不同分割方案下的输入大小。
在具体的实施例中,在步骤S3中,输入读取时间的计算表达式为:
输入读取时间=子算子数ⅹ子算子输入大小ⅹ单位数据读取时间;权重读取时间的计算表达式为:
权重读取时间=子算子数ⅹ权重数ⅹ单位数据读取时间;
计算时间的计算表达式为:
计算时间=子算子输出大小ⅹ卷积核大小ⅹ单次乘法计算时间;
输出写入时间在不同的切割方案中均一致。
通过上述技术方案,可以有助于计算获得最短运行时间,进而获得最优分割方案。
在具体的实施例中,在步骤S4中,枚举算法遍历所有分割方案,每次迭代根据上文描述的TPU运行时间计算公式计算出当前方案下的运行时间,找出最小运行时间及对应的分割方案。
在具体的实施例中,在步骤S4中,启发式算法采用遗传算法实现,启发式算法的适应度函数为
上述技术方案中,相较于枚举算法对解空间的全部搜索,启发式算法会沿着增大适应度的方向搜索解空间,通过搜索解空间的一部分即可找到满足约束的可行解,因此其运行时间更低。
第二方面,本申请提出了一种面向通用张量处理器的算子并行分割系统,该系统包括:
算子输出形状获取模块,用于根据输入形状、卷积核形状和卷积层参数计算获得算子输出形状,算子输出形状包括通道输出数据、高度输出数据和宽度输出数据;
因数集合获取模块,用于根据算子输出形状分别获取每个维度形状的因数集合,因数集合包括通道因数集合、高度因数集合和宽度因数集合;
分割方案获取模块,用于获取算子在TPU中运行时间最短的分割方案,其中分割方案为因数集合获取模块中的因数集合的元素组合,分割方案的总数为因数集合获取模块中的因数集合的大小乘积,运行时间的计算表达式为:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,式中,输入读取时间的计算以子算子输入大小作为变量,子算子输入大小通过分析神经网络的依赖关系获得;
择优分割模块,用于预设解空间阈值,响应于确定分割方案的总数不大于解空间阈值,则采用枚举算法遍历解空间找出最优分割方案;响应于确定分割方案的总数大于解空间阈值,则采用启发式算法找出最优分割方案;
执行分割模块,用于求解出最优分割方案后,根据子算子在各个维度上输出的大小和卷积核在各个维度上的尺寸,获取子算子在对应维度上输入的偏移和大小,进而在对应维度切割输入并分配给对应子算子。
第三方面,本申请提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述任一项所述面向通用张量处理器的算子并行分割方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述任一项所述面向通用张量处理器的算子并行分割方法的步骤。
与现有技术相比,本发明的有益成果在于:
(1)本申请中算子并行分割方法的最终目标,是在编译过程中探索神经网络算子的并行计算方案,结合硬件时序和数据读取,选择具有最低延迟的最优方案,从而将其映射到多核计算资源。
(2)本申请能够解决神经网络算法难以高效部署到TPU的问题,实现基于TPU的神经网络算法自动并行化方案。开发人员无需掌握TPU硬件细节和神经网络嵌入式环境相关知识,根据现有成熟软件框架(Pytorch或TensorFlow)的网络模型直接利用TPU编译器自动完成神经网络并行化,从而极大的提高了神经网络高效部署到TPU的便捷性,缩短相关应用的开发周期。
附图说明
通过阅读参照以下附图,所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是根据本申请的面向通用张量处理器的算子并行分割方法的流程图;
图2是根据本申请的计算2维卷积输出形状的C代码示意图;
图3是根据本申请的整数集合表示的二维张量示意图;
图4是根据本申请的仿射函数表示的整数集合映射关系示意图;
图5是根据本申请的2维卷积输出到输入的映射关系示意图;
图6是根据本申请的选择最优分割方案示意图;
图7是根据本申请的2维卷积的遗传算法染色体描述示意图;
图8是根据本申请的2维卷积并行分割的结果示意图;
图9是根据本申请的面向通用张量处理器的算子并行分割系统的结构图;
图10是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明提出一种面向通用神经网络张量处理器的算子并行分割方法,所述算子并行分割方法的最终目标,是在编译过程中探索神经网络算子的并行计算方案,结合硬件时序和数据读取,选择具有最低延迟的最优方案,从而将其映射到多核计算资源。概括起来,面向通用神经网络张量处理器的算子并行分割方法由计算特征图形状、计算输入大小、选择最优并行方案三个大主要步骤组成。计算特征图形状主要完成神经网络中所有中间特征图形状的获取,计算输入大小主要完成给定算子分割方案下要读取的输入数量,选择最优并行方案主要完成在可行分割方案中选择运行时间最小的方案,最后根据最优分割方案完成算子分割。以下将对本申请提供的面向通用神经网络张量处理器的算子并行分割方法展开阐述。
图1示出了本申请的面向通用张量处理器的算子并行分割方法的流程图,如图1所示,该方法包括以下步骤:
S1、根据输入形状、卷积核形状和卷积层参数计算获得算子输出形状,算子输出形状包括通道输出数据、高度输出数据和宽度输出数据。
在本实施例中,由于算子并行分割必须按照输出特征图形状进行均匀分割,即分割后的各部分具有相同的计算量,从而分配给配置相同的计算单元,这是TPU的硬件约束,因此需要计算出各个特征图的形状。
本申请将神经网络的算子形成有向计算子图,即将神经网络建模为有向无环图(Directed Acyclic Graph,DAG)。有向计算子图包括以有向边连接的多个子节点,子节点表示执行线性层、卷积层、池化层、循环层和归一化层的其中一种,有向边表示从一层到另一层的顺序依赖。根据DAG模型,从输入和第一层开始,各个特征图的形状可以被一层层推理出来。根据每个层的输入和参数,可以计算出其输出形状。
图2示出了根据本申请的计算2维卷积输出形状的C代码示意图,如图2所示,可以根据输入形状[height,width],卷积核形状[kernel_h,kernel_w]和卷积层参数{channel_out,dilation,pad,stride}计算出其输出形状[channel_out,height_out,width_out]。其他类型的算子(如池化层、深度可分离卷积层)均可以按照类似的方法计算输出形状。每个算子的参数都是在训练阶段确定的,其计算特征在推理阶段是固定的,使得输出可预测。
继续参考图1,本申请提供的面向通用张量处理器的算子并行分割方法还包括:
S2、根据算子输出形状分别获取每个维度形状的因数集合,因数集合包括通道因数集合、高度因数集合和宽度因数集合。
S3、获取算子在TPU中运行时间最短的分割方案,其中分割方案为步骤S2中的因数集合的元素组合,分割方案的总数为步骤S2中的因数集合的大小乘积,运行时间的计算表达式为:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,式中,输入读取时间的计算以子算子输入大小作为变量,子算子输入大小通过分析神经网络的依赖关系获得;
在本实施例中,考虑到TPU要求分割后的子算子具有相同的计算量,算子并行分割是按照算子输出形状确定分割方案的。以图2的例子而言,本申请先求取输出的每个维度形状的因数,即三个整数集合channel_factors、height_factors、width_factors,分别是channel_out、height_out、width_out的因数集合。分割方案是这三个因数集合元素的组合,方案总数是三个集合大小的乘积。后续的任务就是在所有方案中选择在TPU中运行时间最短的方案。假设图2中的channel_out=64,height_out=27,width_out=27,即输出张量形状为[64,27,27],对应的因数集合分别为channel_factors={1,64,2,32,4,16,8},height_factors={1,27,3,9},width_factors={1,27,3,9}。三个集合元素的一个组合为{16,9,3},即分割后的每个子算子输出形状为[16,9,3],子算子数则为4ⅹ3ⅹ9=108。所有组合的数量为7ⅹ4ⅹ4=112,因此需要在112种分割方案中选择TPU运行时间最短的方案。
在步骤S3的实施例中,子算子输入大小通过分析神经网络的依赖关系获得,具体包括以下子步骤:
S31、将神经网络的算子映射为一个多面体模型;
S32、在多面体模型的表示中,利用整数集合描述张量,整数集合之间的依赖关系用仿射函数表示,仿射函数的表达式为:
f(x)=Mx+c,式中x是一个d维向量,表示整数集合中的自由变元;M是一个kⅹd大小的矩阵;c是一个k维向量;
S33、基于整数集合和仿射函数描述算子输出和输入的映射关系;
S34、利用映射关系,根据算子输出形状获取对应切割方案的输入集合,输入集合元素的个数为子算子输入大小。
具体的,神经网络计算的一个特点是没有判断语句,故分析神经网络依赖关系相较其他程序比较方便。将神经网络的算子映射为一个多面体模型,根据多面体模型,利用整数集合和仿射函数对程序进行数学表示。将其应用到神经网络和TPU,具体来说,整数集合用以描述张量,仿射函数用以描述依赖关系。
在多面体模型的表示中,一个整数集合是指如下式所示的元素构成的集合。
{S1(i,j):0≤i<5∧i≤j<5∧i%2=0}
S1是该整数空间的命名,i和j为自由变元,“:”后是该整数空间的约束,每个约束由一个Presburger公式定义。根据其约束,该式可以表示图3中黑点组成的张量(图3示出了根据本申请的整数集合表示的二维张量示意图),即可以看作整个5ⅹ5张量的一个子集。
多面体模型中整数集合之间的关系用仿射函数表示:f(x)=Mx+c。该式中x是一个d维向量,表示整数集合中的自由变元,M是一个kⅹd大小的矩阵,c是一个k维向量。用→表示两个整数集合间的二元映射关系,则有:
{S1(i,j)→S2(i/2+1):0≤i<5∧i≤j<5∧i%2=0}
该式定义了一个仿射函数,其中M=[1/2,0],c=1。图4示出了根据本申请的仿射函数表示的整数集合映射关系示意图,请结合参考图3和图4,该仿射函数将图3中的二维张量映射为图4中黑点表示的整数点。
图5示出了根据本申请的2维卷积输出到输入的映射关系示意图,如图5所示,基于整数集合和仿射函数,可以方便的描述算子输出到输入的映射关系。例如,对于图2中的2维卷积,图5展示了其输出到输入的映射关系,其中floor表示向下取整,[channel_split,height_split,width_split]是输出切割后的形状,即channel_factors,height_factors,width_factors三个集合中元素组合的结果。利用该映射关系,根据输出切割形状,可以求出对应切割方案下的输入集合,而输入集合中元素的个数,就是输入大小。值得注意的是,该映射的值域是一个一维向量,这不影响求解输入大小。具体来说,这个一维向量是将输入按照channel、height、width的顺序进行平铺的结果。对于其他算子,按照相同的方法,根据其计算过程,建立输出到输入的映射关系,也可以求出不同分割方案下的输入大小。
在步骤S3的实施例中,算子在TPU中运行时间的计算公式:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间
由于不同切割方案下的输出总是一致的,因此输出写入时间都相等,对于通过比较找出最小运行时间来说,该项可以忽略。权重读取时间的计算相对容易,对于切割后的所有子算子,其权重都相同,都是原算子的权重,因此权重读取时间的计算表达式为:
权重读取时间=子算子数ⅹ权重数ⅹ单位数据读取时间
即权重需要重复读取多次以驱动所有被分配到子算子的计算单元。
输入读取时间按照以下公式计算:
输入读取时间=子算子数ⅹ子算子输入大小ⅹ单位数据读取时间
类似于权重读取,输入也需要重复读取以供给到各计算单元,子算子输入大小根据上述通过分析神经网络的依赖关系求得。
计算时间建模为单个子算子乘法计算时间,即
计算时间=子算子输出大小ⅹ卷积核大小ⅹ单次乘法计算时间
因为按照输出形状均匀分割算子,所以子算子数和子算子输出大小成反比:
子算子数ⅹ子算子输出大小=原算子输出大小
继续参考图1,本申请提供的面向通用张量处理器的算子并行分割方法还包括:
S4、预设解空间阈值,响应于确定分割方案的总数不大于解空间阈值,则采用枚举算法遍历解空间找出最优分割方案;响应于确定分割方案的总数大于解空间阈值,则采用启发式算法找出最优分割方案。
选择最优分割方案是单目标优化问题,根据上述运行时间的计算公式可以求得运行时间最短的分割方案。比较直观的是,算子分割粒度越小,计算时间减少但输入和权重读取时间增大,而算子分割粒度越大,输入和权重读取时间减少但计算时间增大。目前基于多面体模型的编译优化工具依靠整数线性规划求解步骤S32中的仿射函数,因此很难得到子算子输入大小和子算子数的偏导关系。基于此,本申请将枚举算法和启发式算法应用于选择最优分割方案。在计算出算子输出形状后可以确定算子分割方案总数,该数量是单目标优化的解空间大小,直接影响寻优过程的求解时间。
图6示出了根据本申请的选择最优分割方案示意图,如图6所示,预先给定一个解空间大小的阈值(即解空间阈值)作为超参数,若分割方案总数小于该阈值,认为其求解时间可接受,便采用枚举算法遍历解空间找出最优解;若分割方案总数大于该阈值,认为其求解时间不可接受,采用启发式算法找出一个可行解。该阈值的选择按照编译环境和应用要求设置。
具体而言,如果编译环境CPU性能高,如Intel i7系列及以上,则设置解空间阈值为5000~10000,如果CPU性能较低,如Intel奔腾系列,则设置解空间阈值为1000~5000。根据应用开发的实时性要求,可以降低阈值范围的下限。枚举算法遍历所有分割方案,每次迭代中根据上文描述的TPU运行时间计算公式计算出当前方案下的运行时间,以找出最小运行时间及对应的分割方案。启发式算法采用遗传算法来实现,其适应度为运行时间的倒数,及运行时间越小,适应度越高,则适应度函数为
图7示出了根据本申请的2维卷积的遗传算法染色体描述示意图(其是针对图2中的2维卷积),如图7所示,染色体的长度等于输出的维度数量,图2中输出有3个维度,因此染色体长度为3。染色体中的每个元素是分割方案中对应维度的分割长度在其因数集合中的索引。对于上述关于图2中的例子,channel_out=64,height_out=27,width_out=27,对应的因数集合分别为channel_factors={1,64,2,32,4,16,8},height_factors={1,27,3,9},width_factors={1,27,3,9}。对于某个分割方案{16,9,3},其染色体表示为{5,3,2},即{16,9,3}三个元素在其因数集合中的位置。遗传算法通过选择适应度较高的父代染色体进行交叉和变异生成子代染色体,在下次迭代中以子代染色体作为父代染色体继续进行选择、交叉和变异。整个循环过程终止于找到满足运行时间约束的分割方案。相较于枚举算法对解空间的全部搜索,启发式算法会沿着增大适应度的方向搜索解空间,通过搜索解空间的一部分即可找到满足约束的可行解,因此其运行时间更低。
继续参考图1,本申请提供的面向通用张量处理器的算子并行分割方法还包括:
S5、求解出最优分割方案后,根据子算子在各个维度上输出的大小和卷积核在各个维度上的尺寸,获取子算子在对应维度上输入的偏移和大小,进而在对应维度切割输入并分配给对应子算子。
图8示出了根据本申请的2维卷积并行分割的结果示意图,如图8所示,所有子算子的输出按照切割输入的维度和顺序进行拼接从而保证与原算子输出一致。所有分割后的子算子在TPU中并行执行,从而增大TPU的运行效率,而且整个过程由编译器自动完成,也增大基于TPU的应用开发效率。
本发明所提出的面向通用张量处理器的算子并行分割方法用于交通管理的车牌识别、用于安检的人脸识别、用于智慧农业的农产品检测、用于智能制造的产品缺陷检测以及用于自动驾驶的实时目标检测。以人脸识为例,运行于端侧的人脸识别具有实时性和低功耗的要求,而基于CNN的检测算法是计算密集型应用。低功耗由通用张量处理器本身的低功耗设计满足,而实时性则根据通用张量处理器架构优化CNN部署。本发明,即一种面向通用张量处理器的算子并行分割方法,通过探索张量处理器的架构优势,建立准确描述硬件性能的数学模型,实现了CNN在张量处理器上的自动并行部署。本发明能够帮助开发者充分利用张量处理器算力以实现人脸识别的实时性要求,且本发明由编译器自动实现,不会增加开发难度。
进一步参考图9,作为对上述方法的实现,第二方面,本申请提供了面向通用张量处理器的算子并行分割系统200的一个实施例,该系统具体可以应用于各种电子设备中。该系统200包括以下模块:
算子输出形状获取模块210,用于根据输入形状、卷积核形状和卷积层参数计算获得算子输出形状,算子输出形状包括通道输出数据、高度输出数据和宽度输出数据;
因数集合获取模块220,用于根据算子输出形状分别获取每个维度形状的因数集合,因数集合包括通道因数集合、高度因数集合和宽度因数集合;
分割方案获取模块230,用于获取算子在TPU中运行时间最短的分割方案,其中分割方案为因数集合获取模块中的因数集合的元素组合,分割方案的总数为因数集合获取模块中的因数集合的大小乘积,运行时间的计算表达式为:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,式中,输入读取时间的计算以子算子输入大小作为变量,子算子输入大小通过分析神经网络的依赖关系获得;
择优分割模块240,用于预设解空间阈值,响应于确定分割方案的总数不大于解空间阈值,则采用枚举算法遍历解空间找出最优分割方案;响应于确定分割方案的总数大于解空间阈值,则采用启发式算法找出最优分割方案;
执行分割模块250,用于求解出最优分割方案后,根据子算子在各个维度上输出的大小和卷积核在各个维度上的尺寸,获取子算子在对应维度上输入的偏移和大小,进而在对应维度切割输入并分配给对应子算子。
第三方面,本申请提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述任一项所述面向通用张量处理器的算子并行分割方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述任一项所述面向通用张量处理器的算子并行分割方法的步骤。
下面参考图10,其示出了适于用来实现本申请实施例的电子设备的计算机系统500的结构示意图。图10示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种面向通用张量处理器的算子并行分割方法,其特征在于,包括以下步骤:
S1、根据输入形状、卷积核形状和卷积层参数计算获得算子输出形状,所述算子输出形状包括通道输出数据、高度输出数据和宽度输出数据;
S2、根据所述算子输出形状分别获取每个维度形状的因数集合,所述因数集合包括通道因数集合、高度因数集合和宽度因数集合;
S3、获取算子在TPU中运行时间最短的分割方案,其中所述分割方案为步骤S2中的所述因数集合的元素组合,所述分割方案的总数为步骤S2中的所述因数集合的大小乘积,所述运行时间的计算表达式为:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,式中,所述输入读取时间的计算以子算子输入大小作为变量,所述子算子输入大小通过分析神经网络的依赖关系获得;
S4、预设解空间阈值,响应于确定所述分割方案的总数不大于所述解空间阈值,则采用枚举算法遍历解空间找出最优分割方案;响应于确定所述分割方案的总数大于所述解空间阈值,则采用启发式算法找出最优分割方案。
2.根据权利要求1所述的面向通用张量处理器的算子并行分割方法,其特征在于,还包括步骤S5、求解出所述最优分割方案后,根据子算子在各个维度上输出的大小和卷积核在各个维度上的尺寸,获取所述子算子在对应维度上输入的偏移和大小,进而在对应维度切割输入并分配给对应子算子。
3.根据权利要求1所述的面向通用张量处理器的算子并行分割方法,其特征在于,在步骤S1中,还包括将神经网络的算子形成有向计算子图,所述有向计算子图包括以有向边连接的多个子节点,所述子节点表示执行线性层、卷积层、池化层、循环层和归一化层的其中一种,所述有向边表示从一层到另一层的顺序依赖。
4.根据权利要求1所述的面向通用张量处理器的算子并行分割方法,其特征在于,在步骤S3中,所述子算子输入大小通过分析神经网络的依赖关系获得,具体包括以下子步骤:
S31、将所述神经网络的算子映射为一个多面体模型;
S32、在所述多面体模型的表示中,利用整数集合描述张量,所述整数集合之间的依赖关系用仿射函数表示,所述仿射函数的表达式为:
f(x)=Mx+c,式中x是一个d维向量,表示整数集合中的自由变元;M是一个kⅹd大小的矩阵;c是一个k维向量;
S33、基于所述整数集合和所述仿射函数描述算子输出和输入的映射关系;
S34、利用所述映射关系,根据所述算子输出形状获取对应切割方案的输入集合,所述输入集合元素的个数为所述子算子输入大小。
5.根据权利要求1所述的面向通用张量处理器的算子并行分割方法,其特征在于,在步骤S3中,所述输入读取时间的计算表达式为:
输入读取时间=子算子数ⅹ子算子输入大小ⅹ单位数据读取时间;所述权重读取时间的计算表达式为:
权重读取时间=子算子数ⅹ权重数ⅹ单位数据读取时间;
所述计算时间的计算表达式为:
计算时间=子算子输出大小ⅹ卷积核大小ⅹ单次乘法计算时间;
所述输出写入时间在不同的切割方案中均一致。
6.根据权利要求1所述的面向通用张量处理器的算子并行分割方法,其特征在于,在步骤S4中,所述枚举算法遍历所有所述分割方案,每次迭代根据上文描述的TPU运行时间计算公式计算出当前方案下的运行时间,找出最小运行时间及对应的分割方案。
7.根据权利要求1所述的面向通用张量处理器的算子并行分割方法,其特征在于,在步骤S4中,所述启发式算法采用遗传算法实现,所述启发式算法的适应度函数为
8.一种面向通用张量处理器的算子并行分割系统,其特征在于,包括:
算子输出形状获取模块,用于根据输入形状、卷积核形状和卷积层参数计算获得算子输出形状,所述算子输出形状包括通道输出数据、高度输出数据和宽度输出数据;
因数集合获取模块,用于根据所述算子输出形状分别获取每个维度形状的因数集合,所述因数集合包括通道因数集合、高度因数集合和宽度因数集合;
分割方案获取模块,用于获取算子在TPU中运行时间最短的分割方案,其中所述分割方案为所述因数集合获取模块中的所述因数集合的元素组合,所述分割方案的总数为所述因数集合获取模块中的所述因数集合的大小乘积,所述运行时间的计算表达式为:
运行时间=输入读取时间+权重读取时间+计算时间+输出写入时间,式中,所述输入读取时间的计算以子算子输入大小作为变量,所述子算子输入大小通过分析神经网络的依赖关系获得;
择优分割模块,用于预设解空间阈值,响应于确定所述分割方案的总数不大于所述解空间阈值,则采用枚举算法遍历解空间找出最优分割方案;响应于确定所述分割方案的总数大于所述解空间阈值,则采用启发式算法找出最优分割方案;
执行分割模块,用于求解出所述最优分割方案后,根据子算子在各个维度上输出的大小和卷积核在各个维度上的尺寸,获取所述子算子在对应维度上输入的偏移和大小,进而在对应维度切割输入并分配给对应子算子。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述面向通用张量处理器的算子并行分割方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述面向通用张量处理器的算子并行分割方法的步骤。
CN202311052377.7A 2023-08-21 2023-08-21 面向通用张量处理器的算子并行分割方法及系统 Pending CN117077744A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311052377.7A CN117077744A (zh) 2023-08-21 2023-08-21 面向通用张量处理器的算子并行分割方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311052377.7A CN117077744A (zh) 2023-08-21 2023-08-21 面向通用张量处理器的算子并行分割方法及系统

Publications (1)

Publication Number Publication Date
CN117077744A true CN117077744A (zh) 2023-11-17

Family

ID=88714793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311052377.7A Pending CN117077744A (zh) 2023-08-21 2023-08-21 面向通用张量处理器的算子并行分割方法及系统

Country Status (1)

Country Link
CN (1) CN117077744A (zh)

Similar Documents

Publication Publication Date Title
WO2021057720A1 (zh) 神经网络模型处理方法、装置、计算机设备及存储介质
WO2021057713A1 (zh) 用多核处理器实现神经网络模型拆分方法及相关产品
CN115543639B (zh) 分布式执行深度学习任务的优化方法和分布式系统
CN112579063B (zh) 一种用于深度学习编译器中探索优化空间的加速方法
US11144348B2 (en) Heterogeneous computing system and method including analyzing expected costs of compute kernels
WO2021057722A1 (zh) 用多核处理器实现神经网络模型拆分方法及相关产品
WO2012142069A2 (en) Elastic computing
Prajapati et al. Analytical study of parallel and distributed image processing
Chowdhury et al. Autogen: Automatic discovery of cache-oblivious parallel recursive algorithms for solving dynamic programs
Heghedus et al. Neural network frameworks. comparison on public transportation prediction
Jeon et al. Parallel exact inference on a CPU-GPGPU heterogenous system
Umbarkar et al. Multithreaded parallel dual population genetic algorithm (MPDPGA) for unconstrained function optimizations on multi-core system
Xia et al. Parallel exact inference on the cell broadband engine processor
CN117355843A (zh) 生成和全局调谐应用特定的机器学习加速器
Schabauer et al. Solving very large traveling salesman problems by SOM parallelization on cluster architectures
Sun et al. Efficient tensor cores support in tvm for low-latency deep learning
CN117077744A (zh) 面向通用张量处理器的算子并行分割方法及系统
Singh et al. Using graph neural networks to model the performance of deep neural networks
Takahashi et al. Scalable empirical dynamic modeling with parallel computing and approximate k-nn search
US11960982B1 (en) System and method of determining and executing deep tensor columns in neural networks
Bai et al. Gtco: Graph and tensor co-design for transformer-based image recognition on tensor cores
CN116991564B (zh) 面向异构双核mcu的算子内并行加速方法
Wang et al. Hetrocv: Auto-tuning framework and runtime for image processing and computer vision applications on heterogeneous platform
Metz Machine Learning aided Computer Architecture Design for CNN Inferencing Systems
Chemeris et al. Smart Tiling for Program Optimization and Parallelization

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