CN113627592B - 面向Winograd参数可调的卷积张量优化方法及系统 - Google Patents
面向Winograd参数可调的卷积张量优化方法及系统 Download PDFInfo
- Publication number
- CN113627592B CN113627592B CN202110883108.XA CN202110883108A CN113627592B CN 113627592 B CN113627592 B CN 113627592B CN 202110883108 A CN202110883108 A CN 202110883108A CN 113627592 B CN113627592 B CN 113627592B
- Authority
- CN
- China
- Prior art keywords
- tensor
- input image
- sub
- convolution
- size
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Image Processing (AREA)
Abstract
本发明提供面向Winograd参数可调的卷积张量优化方法及系统,对输入图像张量和卷积核张量分别进行拆分,使其能适应计算单元为任意Winograd F(m,n)的硬件后端,扩展Winograd F(m,n)卷积加速算法只针对较小的卷积核和步长的使用情况,使对任意尺寸的输入图像张量和任意尺寸、步长的卷积核张量均能实现Winograd F(m,n)算法的加速,本发明提出的卷积张量优化方法使网络模型迅速灵活部署到计算单元为任意Winograd F(m,n)的硬件后端,降低网络模型和硬件后端加速器设计的耦合。
Description
技术领域
本发明涉及深度学习编译器领域,具体涉及一种面向任意Winograd F(m,n)算法的深度学习编译器卷积张量优化方法及系统。
背景技术
深度学习编译器属于一种领域特定编译器,它将深度学习框架中描述的模型定义作为输入,并在各种硬件上生成有效的代码实现作为输出。深度学习编译器的出现使得前端框架训练的网络模型与后端硬件的部署之间搭建了桥梁,致力于解决深度学习库和工具的缺陷,以及减轻手工优化每个硬件上的深度学习模型的负担。目前,学术界已经深入研究多种架构、不同优化方案的深度学习编译器,如TVM、Tensor Comprehension、Glow、nGraph和XLA等。这些主流深度学习编译器的架构通常分为前端、中间表示和后端。深度学习模型在编译器中被转换成多级中间表达(Intermediate Representation,IR),其中高级IR作用于前端,低级IR作用于后端。基于高级IR(也称图IR),编译器前端负责对计算和控制流的抽象,使得能够捕获和表达不同的深度学习模型,建立控制流以及操作符和数据之间的依赖关系,进一步进行图优化;基于低级IR,它设计用于针对不同硬件目标的硬件优化和代码生成,允许在编译器后端使用成熟的第三方工具链,如Halide、Polyhedral model和LLVM。因此对于中间表达的优化是作为深度学习编译器优化的第一步也是最重要的一步。
对于卷积神经网络,卷积是核心运算,也是运算量最大的部分,卷积运算中乘法操作是相当耗时的且运算量较大,为了加快推理过程,可以采用卷积变换算法来缩减乘法运算量,从而加速神经网络。Winograd F(m,n)算法正是一种有效的卷积加速算法,其中m为拆分后的输入图像的尺寸,n为拆分后的卷积核的尺寸,通过减少内部循环,可以显著减少卷积神经网络卷积中的乘法运算,被广泛地应用于CNN加速器设计中。
深度学习编译器中数据(例如输入、权重和中间数据)的存储和计算多为张量的形式,也称为多维数组。深度学习编译器可以通过内存指针直接表示张量数据,也可以通过占位符placeholder更灵活地表示张量数据。占位符包含张量的每个维度的尺寸,或者,张量的尺寸可以标记为未知。对于深度学习张量优化,常见的操作符融合,将多个操作符合并到一个内核中,而不保存中间结果于内存中;常量折叠,静态地计算仅依赖常量初始化程序的图形部分,节省执行成本;消除冗余节点,在不更改图形结构的情况下删除所有冗余节点;静态内存规划pass,它预先分配内存以容纳每个中间张量;数据布局转换,将内部数据布局转换为后端友好形式。可以看到,对于深度学习编译器张量的优化大多停留在DAG图的图优化,即对数据流的优化,缺少对张量数据的优化;其次,因为卷积操作对于卷积神经网络是核心运算,也是运算量最大的部分,由于硬件后端的不确定性(如cpu,gpu,fpga等)使得张量优化难以针对最核心的卷积操作进行特殊处理,导致编译器的中间表达冗余且复杂。因此如何有效组织管理深度学习编译器张量数据并映射到高效的硬件后端是目前存在的问题。
发明内容
针对现有技术中存在的问题,本发明提供面向Winograd参数可调的卷积张量优化方法及系统,对张量数据的优化,使网络模型能迅速灵活部署到计算单元为任意WinogradF(m,n)的硬件后端,可以明显减少后端卷积运算中的乘法运算量,解耦网络模型与基于Winograd硬件加速器的设计。
本发明是通过以下技术方案来实现:
面向Winograd参数可调的卷积张量优化方法,包括:
按照卷积核张量的步长S,对卷积核张量进行尺寸为n×n的拆分,得到卷积核张量子块;
对输入图像张量进行第一次拆分,得到输入图像张量一次子块;
根据卷积核张量滑动对应的位置和步长S,对输入图像张量一次子块进行尺寸为m×m的第二次拆分,得到输入图像张量二次子块;
对输入图像张量进行第一次拆分的要求是:使输入图像张量一次子块进行第二次拆分得到的输入图像张量二次子块的数量与卷积核张量子块的数量一致;
输入图像张量二次子块和卷积核张量子块用于采用Winograd F(m,n)算法进行卷积运算;
其中,m和n分别为适应于Winograd F(m,n)算法的输入图像尺寸和卷积核尺寸。
优选的,对输入图像张量进行第一次拆分之前,对原始输入图像张量在右侧和下侧的位置进行填充操作,使填充后的输入图像张量的总尺寸满足对输入图像张量进行第一次拆分的要求。
进一步的,对原始输入图像张量进行填充操作具体为:
依据式(2)、(3)、(4)、(5),分别得出第i层原始输入图像张量第一次滑动的步长第一次拆分的块数/>第一次拆分的尺寸/>和输入图像张量总尺寸/>根据式(6)计算得到第i层原始输入图像张量需要填充的尺寸Li,在原始输入图像张量的右侧和下侧的位置分别填充Li行,并把填充的权重标为0;
式中,表示第i层原始输入图像张量尺寸,/>表示第i层原始卷积核张量尺寸,P表示卷积运算中的填充尺寸,Si为第i层卷积核张量的步长。
进一步的,对输入图像张量进行第一次拆分具体是:
按照原始输入图像张量第一次滑动的步长和第一次拆分的尺寸/>对填充后的输入图像张量进行拆分,得到/>个输入图像张量一次子块。
优选的,对输入图像张量一次子块进行第二次拆分后,对所得尺寸不足m×m的输入图像张量进行填充操作,使填充后的输入图像张量尺寸为m×m,得到输入图像张量二次子块;
进一步的,遍历第二次拆分后所得到的输入图像张量,对尺寸不足m×m的输入图像张量子块进行向上和向左填充操作,使填充后的输入图像张量尺寸为m×m,并将填充的权重置为0,得到输入图像张量二次子块。
优选的,对卷积核张量进行拆分后,对尺寸不足n×n的卷积核张量进行填充操作,使填充后的卷积核张量尺寸为n×n。
进一步的,对卷积核张量进行拆分后,遍历拆分所得的所有卷积核张量,对于尺寸不足n×n的卷积核张量进行向上和向左填充操作,使填充后的卷积核张量尺寸为n×n,并将填充的权重置为0,得到卷积核张量子块。
面向Winograd参数可调的卷积张量优化系统,包括:输入图像张量优化模块和卷积核张量优化模块;
卷积核张量优化模块,用于按照卷积核张量的步长S,对卷积核张量进行尺寸为n×n的拆分,得到卷积核张量子块;
输入图像张量优化模块,用于对输入图像张量进行第一次拆分,得到输入图像张量一次子块;并根据卷积核张量滑动对应的位置和步长S,对输入图像张量一次子块进行尺寸为m×m的第二次拆分,得到输入图像张量二次子块;对输入图像张量进行第一次拆分的要求是:使输入图像张量一次子块进行第二次拆分得到的输入图像张量二次子块的数量与卷积核张量子块的数量一致;
其中,m和n分别为适应于Winograd F(m,n)算法的输入图像尺寸和卷积核尺寸。
优选的,还包括综合验证模块,综合验证模块,用于遍历所有输入图像张量一次子块,将输入图像张量一次子块拆分的所有输入图像张量二次子块和卷积核张量子块进行卷积计算,后做矩阵加法运算,得到与输入图像张量一次子块对应的运算子块,将所有运算子块拼接,得到输出张量,将输出张量与按照常规卷积运算得到的结果对比,验证系统有效性。
与现有技术相比,本发明具有以下有益的技术效果:
本发明提出的卷积张量优化方法,对输入图像张量和卷积核张量分别进行拆分,使其能适应计算单元为任意Winograd F(m,n)的硬件后端,扩展Winograd F(m,n)卷积加速算法只针对较小的卷积核和步长的使用情况,使对任意尺寸的输入图像张量和任意尺寸、步长的卷积核张量均能实现Winograd F(m,n)算法的加速,本发明提出的卷积张量优化方法使网络模型迅速灵活部署到计算单元为任意Winograd F(m,n)的硬件后端,降低网络模型和硬件后端加速器设计的耦合。解决了目前针对深度学习编译器中间表达中的张量优化仅仅局限于数据流优化而没有对张量数据的优化的问题。
附图说明
图1展示了面向Winograd参数可调的卷积张量优化方法总体结构图;
图2展示了面向Winograd参数可调的卷积张量优化方法流程图;
图3展示了面向Winograd参数可调的卷积张量优化效果验证流程图;
图4展示了深度学习编译器第i层卷积的输入图像张量第一次拆分;
图5展示了在图4基础上的第1个6×6输入图像张量子块(input tensor tile)二次拆分;
图6展示了在图4基础上的第2个6×6输入图像张量子块(input tensor tile)二次拆分;
图7展示了深度学习编译器第i层卷积的卷积核张量优化模块;
图8展示了综合验证模块行优先分块运算;
图9展示了面向Winograd参数可调的卷积张量优化方法计算最终输出张量Output;
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
由Winograd F(m,n)算法可知,对于输出个数为m,参数个数为r的FIR滤波器,不需要m×r次乘法计算,而只需要u(F(m,r))=m+r-1次乘法计算即可,将Winograd算法应用到2D卷积,可以得到公式如(1)所示。
Y=AT((GgGT)⊙(BTdB))A (1)
其中,g表示卷积核,d表示输入图像,G为卷积核变换矩阵,尺寸为(m+r-1)×r,BT为输入变换矩阵,尺寸为(m+r-1)×(m+r-1),AT为输出变换矩阵,尺寸为m×(m+r-1)。Winograd算法通过减少乘法次数来实现提速,但是加法的数量会相应增加,同时需要额外的转换(transform)计算以及存储转换矩阵,随着卷积核尺寸(n)和输入图像尺寸(m)的增大,就需要考虑加法、转换和存储的代价,而且m越大,转换矩阵越大,计算精度的损失会进一步增加,所以一般Winograd只适用于较小的卷积核和输入图像,如典型的F(6×6,3×3)、F(4×4,3×3)、F(2×2,3×3)等。
本发明提出的可配置深度学习编译器张量优化方法,如图1所示。
图1使用输入图像张量优化模块、卷积核张量优化模块和综合验证模块说明本发明的可配置深度学习编译器张量拆分优化方法,将不同深度学习框架训练的网络模型、硬件后端Winograd F(m,n)计算阵列中m和n的尺寸作为可配置参数输入,每个张量优化模块分配了计算拆分单元和对应的填充(padding)单元。计算拆分单元负责分别按照网络模型的尺寸、卷积核张量的步长、m和n的尺寸进行计算拆分得到拆分后的关键张量数据;输入图像张量优化模块中的填充(L-padding)单元负责对拆分前和拆分后的输入图像张量数据进行补“L-padding”的操作,而卷积核张量优化模块中的padding单元负责对拆分后的卷积核张量数据进行向内补“padding”的操作使其适应硬件后端为Winograd F(m,n)计算单元n×n的尺寸,具体的流程如图2所示。“L-padding”的含义是在填充时按照类似“L”型填充,即在右侧和下方填充。
一、本发明提出的输入图像张量优化模块的主要工作内容为:
输入图像张量优化模块中的计算拆分单元进行两次拆分优化过程,第一次拆分优化是为了使任意尺寸的原始输入图像张量满足符合硬件后端做Winograd F(m,n)计算前输入的尺寸;第二次拆分优化是对第一次拆分得到的输入图像张量子块按照卷积核张量的步长和卷积核运算对应的位置进行m×m的拆分。在硬件后端Winograd F(m,n)计算单元中m和n确定的情况下,将第i个卷积层的原始输入图像张量采用本发明提出的输入图像张量优化模块,通过计算拆分单元可以得出第i层原始输入图像张量的第一次滑动的步长如式(2)所示,第i层原始输入图像张量的第一次拆分的块数/>如式(3)所示,第i层原始输入图像张量第一次拆分的尺寸/>如式(4)所示,输入图像张量适应于Winograd F(m,n)计算单元的总尺寸/>如式(5)所示,并通过L-padding单元可将原始输入图像张量补齐至Winograd F(m,n)算法前所要求的/>尺寸。
式中,表示第i层原始输入图像张量尺寸,/>表示第i层卷积核张量原始尺寸,P表示卷积运算中的填充尺寸,m为适应于Winograd算法F(m,n)的输入图像尺寸,n为适应于Winograd F(m,n)算法的卷积核尺寸,Si为第i层卷积核张量的步长。
具体的步骤为:
步骤1,依据式(2)、(3)、(4)、(5),分别得出第i层原始输入图像张量第一次滑动的步长第一次拆分的块数/>第一次拆分的尺寸/>和总输入图像张量尺寸,进一步地得出第i层原始输入图像张量需要补“L-padding”的数Li如(6)所示,因此在原始输入图像张量的右侧和下方的位置分别补Li行,并把权重标为0;
步骤2,将步骤1得到的输入图像张量进行第一次拆分,按照输入图像张量第一次滑动的步长和第一次拆分的尺寸/>进行拆分,得到/>个适合做Winograd F(m,n)的输入图像张量一次子块;
步骤3,对于个输入图像张量一次子块进行第二次拆分,按照实际卷积核张量滑动对应的位置和步长S进行m×m拆分,每个输入图像张量一次子块划分的块数/>如(7)所示,j为/>个输入图像张量子块的索引/> 得到/>个输入图像张量二次子块。
步骤4,遍历个输入图像张量二次子块,对不足m×m尺寸的输入图像张量二次子块进行向上向左填充的操作,并将权重置为0,使输入图像张量二次子块尺寸补齐至m×m。
二、本发明提出的卷积核张量优化模块的主要工作内容为:
在硬件后端Winograd F(m,n)计算单元中m和n确定的情况下,将第i个卷积层的张量数据按照本发明提出的卷积核张量优化模块的方法,通过计算拆分单元对不同步长S的卷积核进行判断,若步长S=1,张量拆分优化后为若干个聚集子块,即按照n的大小进行顺序拆分优化,否则,将按照步长S和n的尺寸进行优化拆分可以得到个k×n、n×k或者k×k的卷积核张量子块(k为卷积核拆分后的不确定长度,k<=n),其中/>的大小同输入图像二次子块的大小一致,如(7)所示;
遍历个卷积核张量子块,在padding单元对于不足n×n尺寸的卷积核张量子块进行向上向左填充操作,并将权重置为0,使其卷积核张量子块尺寸补齐至n×n。
三、本发明提出的综合验证模块的主要工作内容为:
本发明提出的综合验证模块如式(8)所示,深度学习编译器张量优化方法下的卷积运算结果Utotal和常规卷积运算结果相等就是本发明张量优化方法的最终结果。本发明提出的综合验证模块可以明显减少卷积运算中的乘法运算量,以Winograd F(4,3)算法加速尺寸为3×3的卷积核,至少可以将运算复杂度降低2.25倍。
其中的各个变量定义如下:
1、下标i表示第i层卷积层的索引,下标η表示原始输入图像张量通道的索引,下标q表示个输入图像张量二次子块的块数索引和卷积核张量子块的块数索引;
2、表示第i层卷积层中的卷积核张量按照步长和n拆分的第q个卷积核张量子块,/>表示第i层卷积层的第1行第1列的第q个输入图像张量二次子块,同理,/>表示第i层卷积层的第/>行第/>列的第q个输入图像张量二次子块;
3、分别表示第i层卷积层第η通道的第1层计算结果,第2层计算结果和第/>层计算结果;
4、G、BT、AT表示Winograd算法中的变换矩阵,A、GT、B分别表示AT、GT、BT的转置矩阵,G为卷积核变换矩阵,BT为输入变换矩阵,AT为输出变换矩阵,表示张量拼接的操作,⊙为数学中的点积运算(对应位置相乘),其中计算Utotal公式中的/>为按列拼接,其余公式中的为按行拼接。
按照式(8)提出的综合验证模块得到的Utotal实际为的尺寸,更进一步地,对Utotal张量进行去Li行“L-padding”操作,最终得到/>的尺寸,可验证出与实际卷积运算结果完全一致。
实施例
本发明提出的面向Winograd参数可调的卷积张量优化方法介绍如下:
假定在深度学习编译器中保存神经网络的某一层的输入图像张量尺寸M为9×9,卷积核张量的步长S为1,填充尺寸P为1,卷积核张量尺寸N为5×5。按照正常卷积运算如式(9)所示,得到输出中间层张量尺寸为7×7,进一步地,若硬件后端如FPGA加速器的计算单元是以Winograd F(4,3)为例,可知变换矩阵如为式(10)、(11)、(12)所示:
按照本发明提出的张量优化方法,将输入图像张量尺寸M、卷积核张量尺寸N、卷积核张量的步长S、填充尺寸P和Winograd F(4,3)作为输入,在输入图像张量优化模块中按照图4所示,
步骤1,输入图像张量参数化,赋值M=9,N=5,S=1,P=1;
步骤2,根据M=9,N=5,S=1,P=1,按照公式(2)(3)(4)(5)分别计算第i层原始输入图像张量的第一次滑动的步长第i层输入张量的第一次拆分的块数/>第i层原始输入图像第一次被拆分的尺寸/>输入图像张量适应于Winograd F(4,3)计算单元的总尺寸/>
步骤3,按照输入图像张量适应于Winograd F(4,3)计算单元的总尺寸计算Li的尺寸为1,因此在输入图像张量的右方和下方补1行“L-padding”,并将权重置为0;
步骤4,依据第一次滑动的步长和输入图像张量第一次拆分的尺寸/>对补“L-padding”后的输入图像张量进行拆分,得到16个子输入图像张量一次子块(inputtensor tile),尺寸为6×6;
步骤5,按照本发明提出的张量优化第二次拆分方法,对于每个6×6的inputtensor tile,按照硬件后端Winograd F(4,3)计算单元的m尺寸和卷积核张量在输入图像张量的对应位置和步长进行拆分,如图5、图6所示,进一步拆分为4个p×q尺寸的输入图像张量二次子块(其中p<=4,q<=4);
步骤6,对于二次拆分后的输入图像张量二次子块进行“padding”操作,向左向上将子块补齐至m×m尺寸,同理,对于16个输入图像张量二次子块按照步骤5-步骤6的方法进行拆分。
其次,按照本发明的张量优化方法,对于5×5尺寸的卷积核张量优化过程如图7所示:
步骤1,按照硬件后端Winograd F(4,3)计算单元的尺寸n和实际卷积核张量的步长S进行拆分,得到4个c×d(c<=3,d<=3)尺寸的卷积核张量子块kernal tensor tile;
步骤2,对于不足n×n尺寸的卷积核张量子块kernal tensor tile进行向内向上“padding”的操作,并将权重置为0,使其卷积核张量子块尺寸补齐至n×n。
进一步地,在本发明提出的综合验证模块下,将进行Winograd F(4,3)计算单元和实际卷积运算结构进行对比验证如图8,图9所示,可以在硬件后端不实际运行的情况下进行验证,方便后续对硬件后端性能的评估。如图3,具体的过程为:
步骤1,按照输入图像张量优化模块可以得到第一次拆分的16个输入图像张量一次子块In_tile[i]和对每个In_tile[i]二次拆分得到的4个输入图像张量二次子块In_tile_split[i][j],其中i表示输入图像张量一次子块的索引,j表示输入图像张量二次子块的索引;
步骤2,按照卷积核张量优化模块可以得到4个卷积核张量子块Ker[i],其中i表示卷积核张量子块的索引;
步骤3,对于每一个In_tile[i]的4个In_tile_split[i][j]与卷积核张量拆分得到的4个卷积核张量子块Ker[i]做步长为1的卷积计算,得到4个2×2尺寸的中间张量,进一步地对这4个中间张量做矩阵加法运算,得到运算子块Out[i];
步骤4,遍历16个In_tile[i],得到16个运算子块Out[i],进一步地按照运算子块的运算位置进行拼接得到Out_temp张量;
步骤5,进一步地,将得到的Out_temp进行去Li行去“L-padding”的操作,得到最终张量优化后的结果Output,如图9所示;
步骤6,将Output结果与常规卷积运算得到的结果进行对比,结果显示得出的输出张量与常规卷积运算结果完全一致,证明本发明方法的准确性。
按照本发明提出的张量优化方法,面向硬件后端任意的Winograd F(m,n)计算单元,本发明将对比F(4,3)、F(5,3)、F(6,3)、F(4,2)、F(5,2)和F(6,2)六种常见的F(m,n)计算单元在主流卷积神经网络模型的计算量,对比结果如表1所示,可以看出Winograd F(6,3)计算单元加速Lenet-5、Alexnet和Vgg16网络模型在卷积层乘法计算量方面性能最优,可分别减少正常卷积52%、62%和74%的乘法计算量,而Winograd F(6,2)计算单元加速ResNet18网络模型性能最优,可减少17%的乘法计算量,为后端硬件加速器选择最优的Winograd F(m,n)提供参考。
表1对比不同F(m,n)计算单元在主流卷积神经网络卷积层的计算量
Model | Normal | F(4,3) | F(5,3) | F(6,3) | F(4,2) | F(5,3) | F(6,3) |
Lenet-5 | 0.36M | 0.28M | 0.22M | 0.17M | 0.31M | 0.26M | 0.19M |
Alexnet | 851M | 520M | 363M | 319M | 661M | 636M | 587M |
Vgg16 | 14189M | 6338M | 4721M | 3563M | 12093M | 9880M | 10023M |
ResNet18 | 984M | 1407M | 1124M | 846M | 891M | 733M | 808M |
本发明面向任意Winograd F(m,n)算法的可配置深度学习编译器卷积张量优化方法和系统,对于深度学习编译器中的张量数据,通过可配置硬件后端Winograd计算单元m、n的尺寸得出一系列关键张量参数,进而实现输入图像张量m×m尺寸,卷积核张量n×n尺寸拆分优化的结果,解决目前针对深度学习编译器中间表达中的张量优化仅仅局限于数据流优化而没有对数据的优化的问题,扩展Winograd F(m,n)卷积加速算法的使用范围;此外,本发明使网络模型迅速灵活部署到计算单元为任意Winograd F(m,n)的硬件后端,降低网络模型和硬件后端加速器设计的耦合。
Claims (5)
1.面向Winograd参数可调的卷积张量优化方法,其特征在于,包括:
按照卷积核张量的步长S,对卷积核张量进行尺寸为n×n的拆分,得到卷积核张量子块;
对输入图像张量进行第一次拆分,得到输入图像张量一次子块;
根据卷积核张量滑动对应的位置和步长S,对输入图像张量一次子块进行尺寸为m×m的第二次拆分,得到输入图像张量二次子块;
对输入图像张量进行第一次拆分的要求是:使输入图像张量一次子块进行第二次拆分得到的输入图像张量二次子块的数量与卷积核张量子块的数量一致;
输入图像张量二次子块和卷积核张量子块用于采用Winograd F(m,n)算法进行卷积运算;
其中,m和n分别为适应于Winograd F(m,n)算法的输入图像尺寸和卷积核尺寸;
对输入图像张量进行第一次拆分之前,对原始输入图像张量在右侧和下侧的位置进行填充操作,使填充后的输入图像张量的总尺寸满足对输入图像张量进行第一次拆分的要求;
对原始输入图像张量进行填充操作具体为:
依据式(2)、(3)、(4)、(5),分别得出第i层原始输入图像张量第一次滑动的步长第一次拆分的块数/>第一次拆分的尺寸/>和输入图像张量总尺寸/>根据式(6)计算得到第i层原始输入图像张量需要填充的尺寸Li,在原始输入图像张量的右侧和下侧的位置分别填充Li行,并把填充的权重标为0;
式中,表示第i层原始输入图像张量尺寸,/>表示第i层原始卷积核张量尺寸,P表示卷积运算中的填充尺寸,Si为第i层卷积核张量的步长;
对输入图像张量进行第一次拆分具体是:
按照原始输入图像张量第一次滑动的步长和第一次拆分的尺寸/>对填充后的输入图像张量进行拆分,得到/>个输入图像张量一次子块;
对输入图像张量一次子块进行尺寸为m×m的第二次拆分,具体是:
对于个输入图像张量一次子块进行第二次拆分,按照实际卷积核张量滑动对应的位置和步长S进行m×m拆分,每个输入图像张量一次子块划分的块数/>如(7)所示,j为/>个输入图像张量子块的索引,/>得到/> 个输入图像张量二次子块;
遍历个输入图像张量二次子块,对不足m×m尺寸的输入图像张量二次子块进行向上向左填充的操作,并将权重置为0,使输入图像张量二次子块尺寸补齐至m×m。
2.根据权利要求1所述的面向Winograd参数可调的卷积张量优化方法,其特征在于,对卷积核张量进行拆分后,对尺寸不足n×n的卷积核张量进行填充操作,使填充后的卷积核张量尺寸为n×n。
3.根据权利要求2所述的面向Winograd参数可调的卷积张量优化方法,其特征在于,对卷积核张量进行拆分后,遍历拆分所得的所有卷积核张量,对于尺寸不足n×n的卷积核张量进行向上和向左填充操作,使填充后的卷积核张量尺寸为n×n,并将填充的权重置为0,得到卷积核张量子块。
4.用于实现权利要求1所述的面向Winograd参数可调的卷积张量优化方法的系统,其特征在于,包括:输入图像张量优化模块和卷积核张量优化模块;
卷积核张量优化模块,用于按照卷积核张量的步长S,对卷积核张量进行尺寸为n×n的拆分,得到卷积核张量子块;
输入图像张量优化模块,用于对输入图像张量进行第一次拆分,得到输入图像张量一次子块;并根据卷积核张量滑动对应的位置和步长S,对输入图像张量一次子块进行尺寸为m×m的第二次拆分,得到输入图像张量二次子块;对输入图像张量进行第一次拆分的要求是:使输入图像张量一次子块进行第二次拆分得到的输入图像张量二次子块的数量与卷积核张量子块的数量一致;
其中,m和n分别为适应于Winograd F(m,n)算法的输入图像尺寸和卷积核尺寸。
5.根据权利要求4所述的面向Winograd参数可调的卷积张量优化系统,其特征在于,还包括综合验证模块,综合验证模块,用于遍历所有输入图像张量一次子块,将输入图像张量一次子块拆分的所有输入图像张量二次子块和卷积核张量子块进行卷积计算,后做矩阵加法运算,得到与输入图像张量一次子块对应的运算子块,将所有运算子块拼接,得到输出张量,将输出张量与按照常规卷积运算得到的结果对比,验证系统有效性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110883108.XA CN113627592B (zh) | 2021-08-02 | 2021-08-02 | 面向Winograd参数可调的卷积张量优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110883108.XA CN113627592B (zh) | 2021-08-02 | 2021-08-02 | 面向Winograd参数可调的卷积张量优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113627592A CN113627592A (zh) | 2021-11-09 |
CN113627592B true CN113627592B (zh) | 2023-09-19 |
Family
ID=78382302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110883108.XA Active CN113627592B (zh) | 2021-08-02 | 2021-08-02 | 面向Winograd参数可调的卷积张量优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113627592B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115758054B (zh) * | 2023-02-10 | 2023-04-14 | 上海登临科技有限公司 | 一种卷积计算方法、数据处理方法、芯片及电子设备 |
CN116401502B (zh) * | 2023-06-09 | 2023-11-03 | 之江实验室 | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388777A (zh) * | 2017-08-07 | 2019-02-26 | 英特尔公司 | 一种用于经优化的Winograd卷积加速器的系统和方法 |
CN110533164A (zh) * | 2019-08-05 | 2019-12-03 | 西安交通大学 | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 |
WO2020024093A1 (en) * | 2018-07-30 | 2020-02-06 | Intel Corporation | Method and apparatus for keeping statistical inference accuracy with 8-bit winograd convolution |
CN112434786A (zh) * | 2020-10-22 | 2021-03-02 | 西安交通大学 | 一种基于winograd动态卷积块的图像处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494608B2 (en) * | 2019-08-14 | 2022-11-08 | Intel Corporation | Methods and apparatus to tile walk a tensor for convolution operations |
-
2021
- 2021-08-02 CN CN202110883108.XA patent/CN113627592B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388777A (zh) * | 2017-08-07 | 2019-02-26 | 英特尔公司 | 一种用于经优化的Winograd卷积加速器的系统和方法 |
WO2020024093A1 (en) * | 2018-07-30 | 2020-02-06 | Intel Corporation | Method and apparatus for keeping statistical inference accuracy with 8-bit winograd convolution |
CN110533164A (zh) * | 2019-08-05 | 2019-12-03 | 西安交通大学 | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 |
CN112434786A (zh) * | 2020-10-22 | 2021-03-02 | 西安交通大学 | 一种基于winograd动态卷积块的图像处理方法 |
Non-Patent Citations (2)
Title |
---|
王庆林 ; 李东升 ; 梅松竹 ; 赖志权 ; 窦勇 ; .面向飞腾多核处理器的Winograd快速卷积算法优化.计算机研究与发展.2020,(第06期),全文. * |
赵彤 ; 乔庐峰 ; 陈庆华 ; .一种基于FPGA的CNN加速器设计.通信技术.2019,(第05期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113627592A (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113627592B (zh) | 面向Winograd参数可调的卷积张量优化方法及系统 | |
JP7007488B2 (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
JP6927320B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
JP6892424B2 (ja) | ハイパーパラメータチューニング方法、装置及びプログラム | |
US11915118B2 (en) | Method and apparatus for processing computation of zero value in processing of layers in neural network | |
KR102467203B1 (ko) | 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치 | |
EP3779801A1 (en) | Method for optimizing neural network parameter appropriate for hardware implementation, neural network operation method, and apparatus therefor | |
CN111381968B (zh) | 一种高效运行深度学习任务的卷积运算优化方法及系统 | |
CN112836823B (zh) | 基于循环重组和分块的卷积神经网络反向传播映射方法 | |
KR20220131123A (ko) | 인공 신경망의 가속 하드웨어를 위한 가지치기 기반의 훈련 방법 및 시스템 | |
US11886347B2 (en) | Large-scale data processing computer architecture | |
KR20210015990A (ko) | 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치 | |
CN109145107A (zh) | 基于卷积神经网络的主题提取方法、装置、介质和设备 | |
Zou et al. | Time-division multiplexing based system-level FPGA routing for logic verification | |
Shang et al. | A high-performance convolution block oriented accelerator for MBConv-Based CNNs | |
CN103455518A (zh) | 一种数据处理方法及装置 | |
US20140013290A1 (en) | Input Space Reduction for Verification Test Set Generation | |
Goldfarb et al. | A product-form Cholesky factorization method for handling dense columns in interior point methods for linear programming | |
JP2023123636A (ja) | ハイパーパラメータチューニング方法、装置及びプログラム | |
CN117391162A (zh) | 基于卷积神经网络的加速器及加速方法 | |
JP7251354B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
US8448106B1 (en) | Large scale finite state machines | |
CN113554157A (zh) | 数据处理方法及相关产品 | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
US20220027714A1 (en) | Convolution block array for implementing neural network application and method using the same, and convolution block circuit |
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 |