CN115391727B - 一种神经网络模型的计算方法、装置、设备及存储介质 - Google Patents

一种神经网络模型的计算方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115391727B
CN115391727B CN202210995283.2A CN202210995283A CN115391727B CN 115391727 B CN115391727 B CN 115391727B CN 202210995283 A CN202210995283 A CN 202210995283A CN 115391727 B CN115391727 B CN 115391727B
Authority
CN
China
Prior art keywords
dft
operation result
convolution kernel
input
carrying
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
CN202210995283.2A
Other languages
English (en)
Other versions
CN115391727A (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.)
Shanghai Suiyuan Technology Co ltd
Original Assignee
Shanghai Enflame 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 Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202210995283.2A priority Critical patent/CN115391727B/zh
Publication of CN115391727A publication Critical patent/CN115391727A/zh
Application granted granted Critical
Publication of CN115391727B publication Critical patent/CN115391727B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Discrete Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种神经网络模型的计算方法、装置、设备及存储介质。该方法包括:将输入数据集加载至目标芯片高级缓存区中;将输入数据集中数据搬运至低级缓存区再搬运至计算单元,进行一维DFT运算得到一半数据量的第一DFT结果,根据结果的共轭对称性得到第一输入DFT运算结果;再进行一维DFT运算得到一半数据量的第二DFT结果,根据结果的中心共轭对称性得到第二输入DFT运算结果;从目标级缓存区搬运共享卷积核DFT运算结果至低级缓存区,再搬运至计算单元,对各第二输入DFT运算结果以及共享卷积核DFT运算结果进行运算,得到卷积运算结果,进行神经网络模型计算。该方法可以提高目标芯片的运算速度。

Description

一种神经网络模型的计算方法、装置、设备及存储介质
技术领域
本发明涉及深度学习技术领域,尤其涉及一种神经网络模型的计算方法、装置、设备及存储介质。
背景技术
随着深度学习技术的发展,卷积神经网络以其局部感知,权重共享等优点在图像识别等领域有着越来越多的应用,出现了很多更加复杂的网络结构。然而近年来,许多领域如自动驾驶,实时车辆检测等领域对神经网络推理的实时性能的要求越来越高,而卷积算子的计算在卷积神经网络的总计算量中的占比很高,是整个网络的性能瓶颈。
传统的快速傅里叶变换(fast Fourier transform,FFT)算法是对卷积计算加速的一种通用算法,一般通过蝶形变换将时间复杂度从O(N2)降低为O(NLogN),其中N为待计算序列的长度,一般取值为2的幂次方。N非常大时,这一优化在时间维度上提升是非常显著的。
但在2D卷积实际运用场景中,受限于芯片缓存容量和实际的硬件指令,一方面N无法取值太大导致带来加速比有限。同时AI芯片指令层面往往对2D矩阵计算支持较好,蝶形变换带来理论计算量加速的同时也带来底层指令适配难度大,计算往往只能使用1D计算指令,无法发挥芯片算力,在AI芯片上实际性能往往低于传统卷积。另一方面,傅里叶相关算法中间结果为复数,包含实部和虚部,占用的缓存翻倍,带来了较大的带宽压力。
发明内容
本发明提供了一种神经网络模型的计算方法、装置、设备及存储介质,以解决神经网络模型中卷积算子的优化问题,提高目标芯片的运算速度,充分发挥芯片算力优势,实现对卷积运算的加速。
根据本发明的一方面,提供了一种神经网络模型的计算方法,该方法包括:
将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各所述输入数据集的数据维度为2N+1,N为自然数;
将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;
通过所述计算单元对所述目标输入数据进行一维行或者列离散傅里叶变换DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各所述输入数据集的第一输入DFT运算结果;
通过计算单元对各所述第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各所述输入数据集的第二输入DFT运算结果;
从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运所述共享卷积核DFT运算结果至低级缓存区;
将所述低级缓存区中的所述共享卷积核DFT运算结果搬运至计算单元,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据所述卷积运算结果进行神经网络模型计算
根据本发明的另一方面,提供了一种神经网络模型的计算装置,该装置包括:输入数据集加载模块,用于将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各所述输入数据集的数据维度为2N+1,N为自然数;
数据搬运模块,用于将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;
第一输入DFT运算结果计算模块,用于通过所述计算单元对所述目标输入数据进行一维行或者列离散傅里叶变换DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各所述输入数据集的第一输入DFT运算结果;
第二输入DFT运算结果计算模块,用于通过计算单元对各所述第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各所述输入数据集的第二输入DFT运算结果;
共享卷积核DFT运算结果搬运模块,用于从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运所述共享卷积核DFT运算结果至低级缓存区;
神经网络模型计算模块,用于将所述低级缓存区中的所述共享卷积核DFT运算结果搬运至计算单元,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据所述卷积运算结果进行神经网络模型计算。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的神经网络模型的计算方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的神经网络模型的计算方法。
本发明实施例的技术方案,通过将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各所述输入数据集的数据维度为2N+1,N为自然数;将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;通过所述计算单元对所述目标输入数据进行一维行或者列DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各所述输入数据集的第一输入DFT运算结果;通过计算单元对各所述第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各所述输入数据集的第二输入DFT运算结果;从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运所述共享卷积核DFT运算结果至低级缓存区;将所述低级缓存区中的所述共享卷积核DFT运算结果搬运至计算单元,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据所述卷积运算结果进行神经网络模型计算,解决了神经网络模型中卷积算子的优化问题,取到了提高目标芯片的运算速度,充分发挥芯片算力优势,实现对卷积运算加速的效果。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是根据本发明实施例一提供的一种神经网络模型的计算方法的流程图;
图1b是根据本发明实施例一提供的确定第一输入DFT运算结果的示意图;
图1c是根据本发明实施例一提供的确定第二输入DFT运算结果的示意图;
图1d是根据本发明实施例一提供的一种参数矩阵存储布局图;
图2a是根据本发明实施例二提供的一种神经网络模型的计算方法的流程图;
图2b是根据本发明实施例二提供的一种输入特征图切分示意图;
图2c是根据本发明实施例二提供的一种神经网络模型计算方法中确定共享卷积核DFT运算结果的流程示意图;
图2d是根据本发明实施例二提供的第二IDFT运算结果共轭对称性的示意图;
图3为本发明实施例三提供的一种神经网络模型的计算装置的结构示意图;
图4是实现本发明实施例的神经网络模型的计算方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1a是根据本发明实施例一提供的一种神经网络模型的计算方法的流程图,本实施例可适用于在卷积神经网络的训练和推理过程中,对传统的滑动窗口卷积算子进行优化,提高计算性能的情况,该方法可以由神经网络模型的计算装置来执行,该神经网络模型的计算装置可以采用硬件和/或软件的形式实现,该神经网络模型的计算装置可配置于电子设备如目标芯片中。如图1a所示,该方法包括:
步骤110、将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中。
其中,各输入数据集的数据维度为2N+1,N为自然数。输入特征图可以是神经网络模型中输入的图片。例如,输入特征图可以是图像识别领域中的待识别图片。又如,输入特征图可以是车辆检测中拍摄的待检测图片。输入特征图具有多个输入数据集,全部输入数据集共同构成输入特征图所包含的数据。在本发明实施例中,为了减少卷积计算中的数据量,设定输入数据集中所包含的数据维度为奇数。如若存在某个数据集中数据维度为偶数时,可以通过补0方式,改变数据维度。
目标芯片可以是具有多个缓存区的芯片,例如,目标芯片可以是GCU架构的芯片。在目标芯片中可以存在多个缓存区,如高级缓存区、低级缓存区等。其中,从高级缓存区逐级至低级缓存区,所对应的运行速度越来越快,但是内存越来越小。
示例性的,在目标芯片中,可以存在三级缓存区,即HBM(高带宽存储器,三级缓存区)、L2 Memory(二级缓存区)以及L1 Memory(一级缓存区)。其中,HBM可以理解为本发明实施例中的高级缓存区;L2 Memory可以理解为本发明实施例中介于高级缓存区与低级缓存区之间的缓存区;L1 Memory可以理解为本发明实施例中的低级缓存区。L1 Memory最靠近目标芯片的核心即计算单元,L2 Memory其次,HBM再次。
步骤120、将高级缓存区中各输入数据集中的数据,逐级搬运至低级缓存区;并将低级缓存区中的目标输入数据搬运至计算单元。
在本发明实施例中,输入特征图对应的各输入数据集参与计算时,数据可以从HBM搬运到L2 Memory,再到L1 Memory,最后送进计算单元(SIP)参与计算。计算结果可以从SIP搬运至L1 Memory,再到L2 Memory,最后送入HBM中。通过设置三级缓存进行数据缓存以及计算,可以充分发挥芯片的算力,提高计算速度。
步骤130、通过计算单元对目标输入数据进行一维行或者列DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各输入数据集的第一输入DFT运算结果。
其中,由于输入数据集中数据维度为奇数,进行一维行或者列离散傅里叶变换(Discrete Fourier Transform,DFT)运算后,运算结果具有共轭对称性。因此,在本发明实施例中可以将二维的DFT运算分解为一维的行DFT运算与一维的列DFT运算,从而减少计算数据量,提高卷积计算速度。
具体的,以目标输入数据进行一维行DFT运算为例,说明运算结果的共轭对称性。对于目标输入数据为[x0,x1,x2,x3,…x{N-1}],进行一维行DFT运算后,运算结果为[y0,y1,y2,y3,…,yN-1]。第k个数据的一维行DFT运算为:为例简化,可以令于是第k个数据的一维行DFT运算可以改写为:/>
第N-k个数据的一维行DFT运算结果为 由推导结果可知,yk与yN-k共轭对称(实部相同,虚部相反)。其中,图1b是根据本发明实施例一提供的确定第一输入DFT运算结果的示意图。图中数据为复数形式,a和b可以理解为常数。根据推导结果以及图1b可知,第一输入DFT运算结果中除首列外,其他的各列间具有共轭对称性。因此,在对输入数据集进行一维行或列DFT运算时,可以仅计算首个第一DFT结果,以及除首个第一DFT结果之外剩余DFT结果中的一半结果,再根据第一DFT结果的共轭对称性得到第一输入DFT运算结果,可以节省一半的计算量以及存储资源,从而提高卷积计算速度。
步骤140、通过计算单元对各第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各输入数据集的第二输入DFT运算结果。
其中,第一输入DFT运算结果为复数序列。以对序列[y0,y1,y2,y3,…,yN-1]中的数据进行一维列DFT运算为例,说明运算结果的中心共轭对称性。对于yk进行一维列DFT运算,可以得到运算结果: 对于yN-k进行一维列DFT运算,可以得到/> 由推导结果可知,ZN-k与Zk具有列间共轭对称性。列DFT是在行DFT结果上进行列DFT运算,根据自身结果的行间共轭及行DFT的列间共轭,可以得出最终第二输入DFT运算结果除首行首列外其余行列之间具有中心共轭对称性。
具体的,图1c是根据本发明实施例一提供的确定第二输入DFT运算结果的示意图。图中数据为复数形式,a、b、c和d可以理解为常数。根据推导结果以及图1c可知,确定第二输入DFT运算结果除首行首列外其余行列之间具有中心共轭对称性。因此,在确定第二输入DFT运算结果时,可以仅计算前N+1个第二DFT结果,或者第一个以及后N个第二DFT结果,可以节省一半的计算量以及存储资源,从而提高卷积计算速度。
进一步的,输入的二维DFT运算可以表示为输入与参数矩阵的矩阵乘形式。在实际进行计算时,可以预先计算好参数矩阵,无需每次计算均进行复杂的傅里叶变换,可以节省计算时间。
示例性的,图1d是根据本发明实施例一提供的一种参数矩阵存储布局图。图中real part表示复数的实数部分;imag part表示复数的虚部部分。如图1d所示,在存储参数矩阵时,可以将参数矩阵的实部与虚部分开存储,可以解决芯片无法存储虚数的问题。示例性的,可以将参数矩阵常驻在L1 Memory中。
在本发明实施例中,输入数据集的数据维度为奇数。例如,输入数据集的数据维度为31。GCU芯片架构中计算单元支持的计算单位为16。那么,对于数据维度为31的输入数据集对应的参数矩阵可以按照“16+16”形式进行存储。即按照图1d所示,输入数据集的前16维数据可以在图1d的上半部分存储;输入数据集的后15维数据可以在图1d的下半部分存储。其中,下半部分也需要满足计算单元16维的计算单位,因此在下半部分可以对输入数据集补一维数据0,构成16维数据。
步骤150、从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运共享卷积核DFT运算结果至低级缓存区。
其中,共享卷积核DFT运算结果可以是对神经网络模型的卷积核进行二维DFT运算得到的结果。具体的,共享卷积核DFT运算结果可以是对卷积核直接进行二维DFT运算得到的;或者也可以是采用形如由输入数据集得到第二输入DFT运算结果的方式,确定共享卷积核DFT运算结果。
由于卷积核DFT运算结果对于不同的输入特征图DFT运算结果是共享的,因此可以将卷积核DFT运算结果存储在目标级缓存区,形成共享卷积核DFT运算结果。在进行卷积计算时,直接在目标级缓存区获取共享卷积核DFT运算结果,可以节省计算量,提高卷积计算速度。
示例性的,可以将共享卷积核DFT运算结果存储在L2 Memory中。具体的,可以将共享卷积核DFT运算结果在HkWk维度平均分为三份,存储在L2 Memory中的三个Bank上。SIP可以从最亲和的Bank开始轮询三个Bank,将对应的数据搬运至L1 Memory中。
步骤160、将低级缓存区中的共享卷积核DFT运算结果搬运至计算单元,通过计算单元对各第二输入DFT运算结果以及共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据卷积运算结果进行神经网络模型计算。
其中,对各第二输入DFT运算结果以及共享卷积核DFT运算结果进行运算可以是进行对位点乘以及离散傅里叶逆变换(Inverse Discrete Fourier Transform,IDFT)运算,得到卷积运算结果。
在本发明实施例中,可以采用二维矩阵乘指令计算各第二输入DFT运算结果以及共享卷积核DFT运算结果的点乘结果,可以将时域的卷积运算变换为频域的点乘运算,解决现有技术只能采用一维计算指令导致的底层指令适配难度大问题,通过二维矩阵计算可以适配底层硬件指令,充分发挥芯片算力优势,实现对卷积运算的加速。
本发明实施例所得到的卷积运算结果可以在卷积神经网络的训练和推理过程中,替代传统的滑动窗口卷积算子,对卷积神经网络计算进行加速,解决现有卷积神经网络中卷积算子的性能瓶颈。
本实施例的技术方案,通过将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各所述输入数据集的数据维度为2N+1,N为自然数;将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;通过所述计算单元对所述目标输入数据进行一维行或者列DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各所述输入数据集的第一输入DFT运算结果;通过计算单元对各所述第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各所述输入数据集的第二输入DFT运算结果;从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运所述共享卷积核DFT运算结果至低级缓存区;将所述低级缓存区中的所述共享卷积核DFT运算结果搬运至计算单元,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据所述卷积运算结果进行神经网络模型计算,解决了神经网络模型中卷积算子的优化问题,实现了充分发挥芯片算力优势,减少中间数据传输以及存储空间,提高目标芯片的运算速度,对卷积运算加速的效果。
实施例二
图2a是根据本发明实施例二提供的一种神经网络模型的计算方法的流程图,本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。如图2a所示,该方法包括:
步骤210、根据神经网络模型中卷积核的维度尺寸以及目标芯片的各级缓存区容量,对输入特征图进行切分,得到维度为奇数的输入特征块。
其中,假定输入特征图的维度为NHiWiCi,卷积核的维度为HkWkCiCo。通常,对输入特征图与卷积核直接进行DFT计算时,需要用0将输入特征图与卷积核在HiWi维度与HkWk维度上填充到相同的N+Hk(或Wk)-1的大小。当Hi(或Wi)较大时,会对卷积核填充较多的0,造成计算资源的浪费。在本发明实施例中,可以对输入特征图与卷积核进行切分,以降低计算量。
具体的,可以将输入特征图(NHiWiCi)根据卷积核(HkWkCiCo)的大小、缓存及寄存器大小的限制切分为HiWi维度上大小为奇数的小块,在Hi维度上块与块之间的重合为Hk-1,在Wi维度上块与块之间的重合为Wk-1。
图2b是根据本发明实施例二提供的一种输入特征图切分示意图。如图2b所示,可以在Hi维度上将输入特征图切分为以Hk-1为单位的小块。
步骤220、提取各输入特征块对应的特征数据,得到各输入数据集。
其中,各输入特征块维度为奇数,得到的输入数据集中特征数据维度也为奇数,从而进行DFT计算时,可以根据运算结果的共轭对称性以及中心共轭对称性,得到各输入数据集的DFT运算结果,减少计算量,提高计算效率,同时还可以减少数据缓存对芯片内存的占用。
需要说明的是,在本发明实施例中,对输入特征图进行切分的同时,也可以对卷积核进行切分。具体的,对于卷积核,可以根据缓存与寄存器大小的限制在Ci与Co维度上进行切分。例如,可以根据三级缓存的大小限制在Ci与Co维度上进行切分。
步骤230、将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中。
其中,各输入数据集的数据维度为2N+1,N为自然数。
步骤240、将高级缓存区中各输入数据集中的数据,逐级搬运至低级缓存区;并将低级缓存区中的目标输入数据搬运至计算单元。
步骤250、通过计算单元对目标输入数据进行一维行或者列DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各输入数据集的第一输入DFT运算结果。
在本发明实施例的一个可选实施方式中,将低级缓存区中的目标输入数据搬运至计算单元,包括:根据计算单元的计算机制确定计算单元的计算数据位数;将低级缓存区中的目标输入数据以计算数据位数为单位搬运至计算单元。
其中,目标芯片在计算数据时,通常对数据有要求,例如,GCU架构中的计算单元具有按照两个线程128字节对齐的特点。因此,在计算数据时,需要考虑到计算单元所需满足的计算数据位数限制。以32位浮点数为例,每个线程一次参与2D计算的元素有16个。因此,在搬运目标输入数据时可以16个数据为单位。从而,可以使用两个独立硬件线程分别计算互相独立的结果,提高计算单元的利用率,提升计算的性能。
在本发明实施例的一个可选实施方式中,将高级缓存区中各输入数据集中的数据,逐级搬运至低级缓存区,并将低级缓存区中的目标输入数据搬运至计算单元,包括:将高级缓存区中第一高级缓冲区内的各输入数据集中的数据,通过各缓存区对应的第一缓冲区逐级搬运至低级缓存区的第一低级缓冲区;将低级缓存区的第一低级缓冲区内的目标输入数据搬运至计算单元;在计算单元对第一低级缓冲区内的目标输入数据进行计算的过程中,将高级缓存区中第二高级缓冲区内的各输入数据集中的数据,通过各缓存区对应的第二缓冲区逐级搬运至低级缓存区的第二低级缓冲区;将低级缓存区的第二低级缓冲区内的目标输入数据搬运至计算单元。
其中,在各级缓存区中可以存在两个缓冲区,如ping和pong。在使用二维指令计算参数矩阵与输入矩阵乘法的同时,通过双缓冲区可以使用并行指令预加载下一次要计算的数据到计算单元中,隐藏数据加载的时间,提高计算单元的利用率,提升计算的性能。
步骤260、通过计算单元对各第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各输入数据集的第二输入DFT运算结果。
步骤270、从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运共享卷积核DFT运算结果至低级缓存区。
在步骤270之前还可以包括步骤261至步骤265,其中,图2c是根据本发明实施例二提供的一种神经网络模型计算方法中确定共享卷积核DFT运算结果的流程示意图。如图2c所示,步骤261至步骤265包括:
步骤261、将神经网络模型的卷积核对应的至少一个卷积核数据集加载至目标芯片的高级缓存区中。
其中,各卷积核数据集的数据维度为2M+1,M为自然数。在步骤261之前,可以对卷积核进行切分,得到维度为奇数的卷积核小块;并提取卷积核小块的特征数据,得到数据长度为奇数的卷积核数据集。
步骤262、将高级缓存区中各卷积核数据集中的数据,逐级搬运至低级缓存区;并将低级缓存区中的目标卷积核数据搬运至计算单元。
其中,卷积核数据集的搬运过程可以同输入数据集的搬运过程相同或相似,均采用三级缓存的内存布局,结合双缓冲区与指令流水并行技术,充分发挥芯片的算力。卷积核数据集的搬运过程在此不再赘述。
步骤263、通过计算单元对目标卷积核数据进行一维行或者列DFT运算,得到前M+1个第三DFT结果,或者第一个及后M个第三DFT结果;并根据第三DFT结果的共轭对称性得到各卷积核数据集的第一卷积核DFT运算结果。
步骤264、通过计算单元对各第一卷积核DFT运算结果中进行一维列或行DFT运算,得到前M+1个第四DFT结果,或者第一个及后M个第四DFT结果;并根据第四DFT结果的中心共轭对称性得到各卷积核数据集的第二卷积核DFT运算结果。
其中,目标卷积核数据的计算过程推导与目标输入数据的计算过程推导相同,均可以利用共轭对称性以及中心共轭对称性,减少一半的计算量,提高计算速度,具体推导过程这里不再赘述。在本发明实施例中,M与N可以取相同的值,便于后续采用二维指令进行对位点乘,充分发挥芯片效力。
步骤265、将第二卷积核DFT运算结果搬运至低级缓存区,并逐级搬运至目标级缓存区,作为神经网络模型的共享卷积核DFT运算结果。
其中,共享卷积核DFT运算结果在HkWk维度平均分为三份分配在L2Memory中的三个Bank上。在进行计算时,各个计算单元对应的DMA(直接存储器访问)可以从最亲和的Bank开始轮询三个Bank,将对应的数据搬运到L1 Memory中。
步骤280、将低级缓存区中的共享卷积核DFT运算结果搬运至计算单元。
步骤290、通过计算单元对各第二输入DFT运算结果以及共享卷积核DFT运算结果分别进行对位点乘运算,得到多个点乘结果。
其中,可以使用二维矩阵乘指令计算第二输入DFT运算结果以及共享卷积核DFT运算结果的对位点乘运算,并在Ci维度上进行累加。得到的结果可以先写回L1 Memory,再通过DMA写回到L2 Memory中。
在本发明实施例中,进行对位点乘运算时,第二输入DFT运算结果以及共享卷积核DFT运算结果均是满足如图1c所示的中心共轭对称的。因而,进行对位点乘运算得到的点乘结果也是满足图1c所示的中心共轭对称的。可以仅计算一半的点乘结果,再根据中心共轭对称性得到全部点乘结果,从而减少一半的数据量与计算量,加快卷积算子的运算速度。
其中,对于第二输入DFT运算结果(a+jb),共享卷积核DFT运算结果(c+jd),其对位点乘结果为(a+jb)×(c+jd)=ac-bd+j(ad+bc);对于第二输入DFT运算结果(a-jb),共享卷积核DFT运算结果(c-jd),其对位点乘结果为(a-jb)×(c-jd)=ac-bd-j(ad+bc)。可知,第二输入DFT运算结果以及共享卷积核DFT运算结果均满足中心共轭对称时,进行对位点乘运算得到的点乘结果也是满足中心共轭对称。
步骤2100、通过计算单元对各点乘结果进行IDFT运算,得到卷积运算结果,并根据卷积运算结果进行神经网络模型计算。
在本发明实施例的一个可选实施方式中,通过计算单元对各点乘结果进行IDFT运算,得到卷积运算结果,包括:通过计算单元对各点乘结果进行一维列或行IDFT运算,得到前N+1个第一IDFT结果,或者第一个及后N个第一IDFT结果;并根据第一IDFT结果的中心共轭对称性得到各第一IDFT运算结果;通过计算单元对各第一IDFT运算结果进行一维列或行IDFT运算,得到前N+1个第二IDFT结果,或者第一个及后N个第二IDFT结果;并根据第二IDFT结果的共轭对称性得到各第二IDFT运算结果;通过计算单元将各第二IDFT运算结果进行加法运算,得到卷积运算结果。
为了进一步节省计算量,提高计算速度,IDFT运算可以复用DFT运算的参数矩阵。具体的,可以利用DMA将点乘结果从L2缓存中搬运到L1中,对应的计算单元将数据加载到寄存器中。利用二维的矩阵指令计算参数矩阵与点乘结果的乘法运算,结果存储在寄存器中。其中,IDFT运算复用DFT运算的参数矩阵时,仅需在计算时对系数中的虚数部分取相反数,并对最终结果乘
在本发明实施例中,可以将二维的IDFT分解为一维的行IDFT与一维列IDFT运算,并根据中心共轭对称性以及共轭对称性可以减少一半的计算量。此外,还可以通过复用DFT运算的参数矩阵进一步减少计算量。
具体的,对点乘结果进行一维行IDFT,得到的第一IDFT运算结果具有中心共轭对称性,其对称性的具体表现方式与图1c所示的效果相同。对第一IDFT运算结果进行一维列IDFT,得到的第二IDFT运算结果具有共轭对称性。
其中,对于第i行第k列的第一IDFT运算结果进行列IDFT时,推导公式为:对于以及第N-i行第k列,的第一IDFT运算结果进行列IDFT时,推导公式为: 由推导结果可知,y[i][k]与y[N-i][k]共轭。对于IDFT运算,只关注实数结果,可以利用共轭对称性,除首行首列结果外,可以只计算一半元素的乘加和,所得结果再乘2即可。其中,图2d是根据本发明实施例二提供的第二IDFT运算结果共轭对称性的示意图。图中数据为复数,a、b可以理解为常数。如图2d所示,第二IDFT运算结果除首行首列外,呈现上下共轭对称。
计算完成的卷积运算结果可以写回到L1缓存中,再由DMA搬运到L2缓存中,最终搬运到HBM中,即可根据卷积运算结果实现神经网络模型计算。
本发明实施例的技术方案,通过将输入特征图以及卷积核进行数据切分,得到维度大小为奇数的小块;对于各小块对应的数据进行DFT计算;在DFT计算过程中,将二维DFT运算分解为一维行DFT运算和一维列DFT运算;对于输入特征图小块的DFT运算结果以及卷积核小块的DFT运算结果进行二维指令的对位点乘运算;对点乘结果进行IDFT运算时,将二维IDFT运算分解为一维行IDFT运算和一维列IDFT运算,得到卷积运算结果,解决了卷积算子计算的加速问题,可以充分发挥芯片的算力,适配底层指令,减少计算量,减少缓存占用,并减少中间数据传输以及寄存器使用,从而实现卷积计算的加速,提升芯片计算速度。此外,还通过三级缓存区双缓冲区机制隐藏数据搬运时间,进一步充分利用芯片的算力,提高芯片的计算速度。
实施例三
图3为本发明实施例三提供的一种神经网络模型的计算装置的结构示意图。如图3所示,该装置包括:输入数据集加载模块310,数据搬运模块320,第一输入DFT运算结果计算模块330,第二输入DFT运算结果计算模块340,共享卷积核DFT运算结果搬运模块350,以及神经网络模型计算模块360。其中:
输入数据集加载模块310,用于将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各输入数据集的数据维度为2N+1,N为自然数;
数据搬运模块320,用于将高级缓存区中各输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;
第一输入DFT运算结果计算模块330,用于通过计算单元对目标输入数据进行一维行或者列离散傅里叶变换DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各输入数据集的第一输入DFT运算结果;
第二输入DFT运算结果计算模块340,用于通过计算单元对各第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各输入数据集的第二输入DFT运算结果;
共享卷积核DFT运算结果搬运模块350,用于从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运共享卷积核DFT运算结果至低级缓存区;
神经网络模型计算模块360,用于将低级缓存区中的共享卷积核DFT运算结果搬运至计算单元,通过计算单元对各第二输入DFT运算结果以及共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据卷积运算结果进行神经网络模型计算。
可选的,该装置,还包括:
输入特征块确定模块,用于在将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中之前,根据神经网络模型中卷积核的维度尺寸以及目标芯片的各级缓存区容量,对输入特征图进行切分,得到维度为奇数的输入特征块;
输入数据集确定模块,用于提取各输入特征块对应的特征数据,得到各输入数据集。
可选的,该装置,还包括:
卷积核数据集加载模块,用于在从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运共享卷积核DFT运算结果至低级缓存区之前,将神经网络模型的卷积核对应的至少一个卷积核数据集加载至目标芯片的高级缓存区中;其中,各卷积核数据集的数据维度为2M+1,M为自然数;
卷积核数据集搬运模块,用于将高级缓存区中各卷积核数据集中的数据,逐级搬运至低级缓存区;并将低级缓存区中的目标卷积核数据搬运至计算单元;
第一卷积核DFT运算结果确定模块,用于通过计算单元对目标卷积核数据进行一维行或者列DFT运算,得到前M+1个第三DFT结果,或者第一个及后M个第三DFT结果;并根据第三DFT结果的共轭对称性得到各卷积核数据集的第一卷积核DFT运算结果;
第二卷积核DFT运算结果确定模块,用于通过计算单元对各第一卷积核DFT运算结果进行一维列或行DFT运算,得到前M+1个第四DFT结果,或者第一个及后M个第四DFT结果;并根据第四DFT结果的中心共轭对称性得到各卷积核数据集的第二卷积核DFT运算结果;
共享卷积核DFT运算结果确定模块,用于将第二卷积核DFT运算结果搬运至低级缓存区,并逐级搬运至目标级缓存区,作为神经网络模型的共享卷积核DFT运算结果。
可选的,神经网络模型计算模块360,包括:
点乘结果确定单元,用于通过计算单元对各第二输入DFT运算结果以及共享卷积核DFT运算结果分别进行对位点乘运算,得到多个点乘结果;
卷积运算结果确定单元,用于通过计算单元对各点乘结果进行IDFT运算,得到卷积运算结果。
可选的,卷积运算结果确定单元,具体用于:
通过计算单元对各点乘结果进行一维列或行IDFT运算,得到前N+1个第一IDFT结果,或者第一个及后N个第一IDFT结果;并根据第一IDFT结果的中心共轭对称性得到各第一IDFT运算结果;
通过计算单元对各第一IDFT运算结果进行一维列或行IDFT运算,得到前N+1个第二IDFT结果,或者第一个及后N个第二IDFT结果;并根据第二IDFT结果的共轭对称性得到各第二IDFT运算结果;
通过计算单元将各第二IDFT运算结果进行加法运算,得到卷积运算结果。
可选的,第一输入DFT运算结果计算模块330,包括:
计算数据位数确定单元,用于根据计算单元的计算机制确定计算单元的计算数据位数;
目标数据搬运单元,用于将低级缓存区中的目标输入数据以计算数据位数为单位搬运至计算单元。
可选的,数据搬运模块320,包括:
第一数据搬运单元,用于将高级缓存区中第一高级缓冲区内的各输入数据集中的数据,通过各缓存区对应的第一缓冲区逐级搬运至低级缓存区的第一低级缓冲区;
相应的,第一输入DFT运算结果计算模块330,包括:
第二数据搬运单元,用于将低级缓存区的第一低级缓冲区内的目标输入数据搬运至计算单元;
数据搬运模块320,包括:
第三数据搬运单元,用于在计算单元对第一低级缓冲区内的目标输入数据进行计算的过程中,将高级缓存区中第二高级缓冲区内的各输入数据集中的数据,通过各缓存区对应的第二缓冲区逐级搬运至低级缓存区的第二低级缓冲区;
第一输入DFT运算结果计算模块330,包括:
第四数据搬用单元,用于将低级缓存区的第二低级缓冲区内的目标输入数据搬运至计算单元。
本发明实施例所提供的神经网络模型的计算装置可执行本发明任意实施例所提供的神经网络模型的计算方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图4所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如神经网络模型的计算方法。
在一些实施例中,神经网络模型的计算方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的神经网络模型的计算方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行神经网络模型的计算方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (9)

1.一种神经网络模型的计算方法,其特征在于,包括:
将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各所述输入数据集的数据维度为2N+1,N为自然数;
将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;
通过所述计算单元对所述目标输入数据进行一维行或者列离散傅里叶变换DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各所述输入数据集的第一输入DFT运算结果;
通过计算单元对各所述第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各所述输入数据集的第二输入DFT运算结果;
将神经网络模型的卷积核对应的至少一个卷积核数据集加载至目标芯片的高级缓存区中;其中,各所述卷积核数据集的数据维度为2M+1,M为自然数;
将所述高级缓存区中各卷积核数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标卷积核数据搬运至计算单元;
通过所述计算单元对所述目标卷积核数据进行一维行或者列DFT运算,得到前M+1个第三DFT结果,或者第一个及后M个第三DFT结果;并根据第三DFT结果的共轭对称性得到各所述卷积核数据集的第一卷积核DFT运算结果;
通过计算单元对各所述第一卷积核DFT运算结果进行一维列或行DFT运算,得到前M+1个第四DFT结果,或者第一个及后M个第四DFT结果;并根据第四DFT结果的中心共轭对称性得到各所述卷积核数据集的第二卷积核DFT运算结果;
将所述第二卷积核DFT运算结果搬运至低级缓存区,并逐级搬运至目标级缓存区,作为神经网络模型的共享卷积核DFT运算结果;
从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运所述共享卷积核DFT运算结果至低级缓存区;
将所述低级缓存区中的所述共享卷积核DFT运算结果搬运至计算单元,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据所述卷积运算结果进行神经网络模型计算。
2.根据权利要求1所述的方法,其特征在于,在将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中之前,还包括:
根据所述神经网络模型中卷积核的维度尺寸以及所述目标芯片的各级缓存区容量,对所述输入特征图进行切分,得到维度为奇数的输入特征块;
提取各所述输入特征块对应的特征数据,得到各输入数据集。
3.根据权利要求1所述的方法,其特征在于,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,包括:
通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果分别进行对位点乘运算,得到多个点乘结果;
通过所述计算单元对各所述点乘结果进行离散傅里叶逆变换IDFT运算,得到卷积运算结果。
4.根据权利要求3所述的方法,其特征在于,通过所述计算单元对各所述点乘结果进行IDFT运算,得到卷积运算结果,包括:
通过所述计算单元对各所述点乘结果进行一维列或行IDFT运算,得到前N+1个第一IDFT结果,或者第一个及后N个第一IDFT结果;并根据第一IDFT结果的中心共轭对称性得到各第一IDFT运算结果;
通过所述计算单元对各所述第一IDFT运算结果进行一维列或行IDFT运算,得到前N+1个第二IDFT结果,或者第一个及后N个第二IDFT结果;并根据第二IDFT结果的共轭对称性得到各第二IDFT运算结果;
通过所述计算单元将各第二IDFT运算结果进行加法运算,得到卷积运算结果。
5.根据权利要求1所述的方法,其特征在于,将所述低级缓存区中的目标输入数据搬运至计算单元,包括:
根据所述计算单元的计算机制确定所述计算单元的计算数据位数;
将所述低级缓存区中的目标输入数据以所述计算数据位数为单位搬运至所述计算单元。
6.根据权利要求1所述的方法,其特征在于,将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区,并将所述低级缓存区中的目标输入数据搬运至计算单元,包括:
将所述高级缓存区中第一高级缓冲区内的各所述输入数据集中的数据,通过各缓存区对应的第一缓冲区逐级搬运至低级缓存区的第一低级缓冲区;将所述低级缓存区的第一低级缓冲区内的目标输入数据搬运至计算单元;
在所述计算单元对所述第一低级缓冲区内的目标输入数据进行计算的过程中,将所述高级缓存区中第二高级缓冲区内的各所述输入数据集中的数据,通过各缓存区对应的第二缓冲区逐级搬运至低级缓存区的第二低级缓冲区;将所述低级缓存区的第二低级缓冲区内的目标输入数据搬运至计算单元。
7.一种神经网络模型的计算装置,其特征在于,包括:
输入数据集加载模块,用于将神经网络模型的输入特征图对应的至少一个输入数据集加载至目标芯片的高级缓存区中;其中,各所述输入数据集的数据维度为2N+1,N为自然数;
数据搬运模块,用于将所述高级缓存区中各所述输入数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标输入数据搬运至计算单元;
第一输入DFT运算结果计算模块,用于通过所述计算单元对所述目标输入数据进行一维行或者列离散傅里叶变换DFT运算,得到前N+1个第一DFT结果,或者第一个及后N个第一DFT结果;并根据第一DFT结果的共轭对称性得到各所述输入数据集的第一输入DFT运算结果;
第二输入DFT运算结果计算模块,用于通过计算单元对各所述第一输入DFT运算结果进行一维列或行DFT运算,得到前N+1个第二DFT结果,或者第一个及后N个第二DFT结果;并根据第二DFT结果的中心共轭对称性得到各所述输入数据集的第二输入DFT运算结果;
卷积核数据集加载模块,用于将所述神经网络模型的卷积核对应的至少一个卷积核数据集加载至目标芯片的高级缓存区中;其中,各所述卷积核数据集的数据维度为2M+1,M为自然数;
卷积核数据集搬运模块,用于将所述高级缓存区中各卷积核数据集中的数据,逐级搬运至低级缓存区;并将所述低级缓存区中的目标卷积核数据搬运至计算单元;
第一卷积核DFT运算结果确定模块,用于通过所述计算单元对所述目标卷积核数据进行一维行或者列DFT运算,得到前M+1个第三DFT结果,或者第一个及后M个第三DFT结果;并根据第三DFT结果的共轭对称性得到各所述卷积核数据集的第一卷积核DFT运算结果;
第二卷积核DFT运算结果确定模块,用于通过计算单元对各所述第一卷积核DFT运算结果进行一维列或行DFT运算,得到前M+1个第四DFT结果,或者第一个及后M个第四DFT结果;并根据第四DFT结果的中心共轭对称性得到各所述卷积核数据集的第二卷积核DFT运算结果;
共享卷积核DFT运算结果确定模块,用于将所述第二卷积核DFT运算结果搬运至低级缓存区,并逐级搬运至目标级缓存区,作为神经网络模型的共享卷积核DFT运算结果;
共享卷积核DFT运算结果搬运模块,用于从存储神经网络模型共享卷积核DFT运算结果的目标级缓存区逐级搬运所述共享卷积核DFT运算结果至低级缓存区;
神经网络模型计算模块,用于将所述低级缓存区中的所述共享卷积核DFT运算结果搬运至计算单元,通过所述计算单元对各所述第二输入DFT运算结果以及所述共享卷积核DFT运算结果进行运算,得到卷积运算结果,并根据所述卷积运算结果进行神经网络模型计算。
8. 一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的神经网络模型的计算方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的神经网络模型的计算方法。
CN202210995283.2A 2022-08-18 2022-08-18 一种神经网络模型的计算方法、装置、设备及存储介质 Active CN115391727B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210995283.2A CN115391727B (zh) 2022-08-18 2022-08-18 一种神经网络模型的计算方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210995283.2A CN115391727B (zh) 2022-08-18 2022-08-18 一种神经网络模型的计算方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115391727A CN115391727A (zh) 2022-11-25
CN115391727B true CN115391727B (zh) 2023-08-18

Family

ID=84121484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210995283.2A Active CN115391727B (zh) 2022-08-18 2022-08-18 一种神经网络模型的计算方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115391727B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987005A (en) * 1997-07-02 1999-11-16 Telefonaktiebolaget Lm Ericsson Method and apparatus for efficient computation of discrete fourier transform (DFT) and inverse discrete fourier transform
CN109815546A (zh) * 2018-12-26 2019-05-28 中国电子科技集团公司第二十研究所 一种高速并行数字匹配滤波器的实现方法
CN111506294A (zh) * 2020-04-13 2020-08-07 中国科学院自动化研究所 基于块浮点的fblms算法的fpga实现装置及方法
CN113111300A (zh) * 2020-01-13 2021-07-13 上海大学 具有优化资源消耗的定点fft实现架构
WO2022067508A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 一种神经网络加速器、加速方法以及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987005A (en) * 1997-07-02 1999-11-16 Telefonaktiebolaget Lm Ericsson Method and apparatus for efficient computation of discrete fourier transform (DFT) and inverse discrete fourier transform
CN109815546A (zh) * 2018-12-26 2019-05-28 中国电子科技集团公司第二十研究所 一种高速并行数字匹配滤波器的实现方法
CN113111300A (zh) * 2020-01-13 2021-07-13 上海大学 具有优化资源消耗的定点fft实现架构
CN111506294A (zh) * 2020-04-13 2020-08-07 中国科学院自动化研究所 基于块浮点的fblms算法的fpga实现装置及方法
WO2022067508A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 一种神经网络加速器、加速方法以及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种低载噪比突发扩频信号的快速捕获方法实现;张兰粉等;《信号与信息处理》;第121-126页 *

Also Published As

Publication number Publication date
CN115391727A (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
CN105681628B (zh) 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN112561078A (zh) 分布式的模型训练方法、相关装置及计算机程序产品
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
CN107066239A (zh) 一种实现卷积神经网络前向计算的硬件结构
US20230026006A1 (en) Convolution computation engine, artificial intelligence chip, and data processing method
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN110555516A (zh) 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法
CN115880132B (zh) 图形处理器、矩阵乘法任务处理方法、装置及存储介质
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
US11615607B2 (en) Convolution calculation method, convolution calculation apparatus, and terminal device
US20230135109A1 (en) Method for processing signal, electronic device, and storage medium
CN111626405A (zh) 一种cnn加速方法、加速装置及计算机可读存储介质
US11775803B2 (en) System and method for accelerating RNN network, and storage medium
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN115391727B (zh) 一种神经网络模型的计算方法、装置、设备及存储介质
CN117574970A (zh) 用于大规模语言模型的推理加速方法、系统、终端及介质
CN116431562A (zh) 一种基于加速处理器的多头注意力机制融合计算分配方法
CN115346099A (zh) 基于加速器芯片的图像卷积方法、芯片、设备及介质
CN114817845B (zh) 数据处理方法、装置、电子设备及存储介质
CN116227599A (zh) 一种推理模型的优化方法、装置、电子设备及存储介质
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
US20220113943A1 (en) Method for multiply-add operations for neural network
CN113128688B (zh) 通用型ai并行推理加速结构以及推理设备
CN115293978A (zh) 卷积运算电路和方法、图像处理设备
CN109558638B (zh) Fft处理器

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
CP03 Change of name, title or address

Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Patentee after: Shanghai Suiyuan Technology Co.,Ltd.

Country or region after: China

Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address