CN113011554A - 减少人工神经网络中卷积运算期间数据移动的系统和方法 - Google Patents

减少人工神经网络中卷积运算期间数据移动的系统和方法 Download PDF

Info

Publication number
CN113011554A
CN113011554A CN202011520382.2A CN202011520382A CN113011554A CN 113011554 A CN113011554 A CN 113011554A CN 202011520382 A CN202011520382 A CN 202011520382A CN 113011554 A CN113011554 A CN 113011554A
Authority
CN
China
Prior art keywords
data set
hardware accelerator
filter kernel
activation data
activation
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
CN202011520382.2A
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.)
Meta Platforms Inc
Original Assignee
Facebook Inc
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 Facebook Inc filed Critical Facebook Inc
Publication of CN113011554A publication Critical patent/CN113011554A/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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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

Landscapes

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

Abstract

本申请涉及减少人工神经网络中卷积运算期间数据移动的系统和方法。所公开的计算机实现的方法可以包括:(1)在支持ANN的硬件加速器处接收将经由ANN的滤波器内核进行卷积运算的激活数据集,(2)在硬件加速器处接收参数,该参数指示当在卷积运算期间滑过特定位置时,滤波器内核超过激活数据集的至少一个边界,(3)至少部分地基于该参数来确定,硬件加速器将结合滤波器内核的特定位置在激活数据集的边界处生成填充数据,然后(4)当滤波器内核滑过特定位置时,在硬件加速器处通过处理激活数据集的一部分和填充数据来执行卷积运算。还公开了各种其他系统和方法。

Description

减少人工神经网络中卷积运算期间数据移动的系统和方法
附图和附录的简要说明
附图示出了许多示例性实施例,并且是说明书的一部分。连同下面的描述一起,附图展示并解释了本公开的各种原理。
图1是用于减少在人工神经网络中的卷积运算期间的数据移动的示例性系统的框图。
图2是用于减少在人工神经网络中的卷积运算期间的数据移动的示例性系统的框图。
图3是用于减少在人工神经网络中的卷积运算期间的数据移动的示例性方法的流程图。
图4是由人工神经网络执行的示例性卷积运算的框图。
图5是由人工神经网络执行的示例性卷积运算的框图。
图6是由人工神经网络执行的示例性卷积运算的框图。
图7是由人工神经网络执行的示例性卷积运算的框图。
虽然本文所述的示例性实施例容许各种修改和替代的形式,但是特定的实施例在附图中作为示例被示出并且在本文将被详细描述。然而,本文描述的示例性实施例并不旨在受限于所公开的特定形式。相反,本公开覆盖了落入本公开范围内的所有修改、组合、等同物和替代物。
示例性实施例的详细描述
本公开总体上涉及用于减少在人工神经网络中的卷积运算期间的数据移动的系统和方法。如下文将更详细解释的,这些系统和方法可以提供许多特征和益处。
人工智能(AI)可以使计算机执行各种复杂的任务,例如与通常和人类相关联的认知功能相关的任务。这些功能通常涉及根据真实世界的输入进行预测、分类或评估。AI可以涉及和/或实现各种方法和/或技术(例如机器学习)以实现那些功能。在至少一些示例中,机器学习系统可以使用已知的数据集来被训练,而不是采用预定的算法来执行任务。
一种被称为人工神经网络(ANN)的机器学习模型,可能受到生物大脑中神经元互连的启发。典型地,ANN可以包括布置在互连层中的多个计算节点,其中每个节点建模一个神经元,该神经元可以接收一个或更多个输入,处理输入,并将输出传递到下一层,最后一层产生期望的输出。ANN中包括的一个这样的层通常被称为卷积层。卷积层可以对输入应用卷积运算和/或将结果传递给另一层。
不幸的是,执行这种卷积运算的传统方法可能需要和/或消耗大量计算资源和/或功率资源。在一些示例中,传统方法可能需要和/或利用消耗大量功率资源、计算资源和/或存储器资源的组件和/或计算技术。此外,这种资源密集和/或要求高的技术可能使利用这种卷积层的系统设计复杂化。
作为具体示例,计算设备可以实现ANN,用于识别和/或分类某些图像和/或姿势。在该示例中,计算设备内的一个组件可以生成和/或准备输入矩阵(有时也称为激活数据(activation data)),用于由计算设备内的硬件加速器执行的卷积。作为传统方法中这种卷积的一部分,硬件加速器可能不仅需要获得和/或访问输入矩阵,还需要获得和/或访问包含该输入矩阵的一定量的填充数据。该填充数据可以使硬件加速器能够产生输出矩阵,该输出矩阵在卷积期间保持与输入矩阵相同的维数。在该示例中,由硬件加速器获得和/或访问该填充数据可能涉及和/或需要在ANN的存储器层级之间移动数据。
不幸的是,这种数据移动可能会消耗功率资源和/或计算资源,并且会引入延迟。因此,本公开识别并解决了对用于减少在人工神经网络中的卷积运算期间的数据移动的附加和/或改进的系统和方法的需求。例如,如下文将更详细描述的,本文公开的各种系统和方法可以向硬件加速器通知在计算设备上实现的ANN中卷积的输入矩阵的边界(boundary)。通过这样做,这些系统和方法可以避免在计算设备上的ANN的存储器层级之间传递和/或传输任何填充数据的需要。因此,这些系统和方法可以使计算设备能够节省与卷积运算相关的功率资源和/或计算资源,和/或减少与卷积运算相关的时间延迟。
参考图1和图2,以下将提供能够减少在ANN中的卷积运算期间的数据移动的各种系统、组件和/或实现的详细描述。对应于图3的讨论将提供用于在ANN中的卷积运算期间减少数据移动的示例性方法的详细描述。对应于图4-图7的讨论将提供示例性卷积运算的详细描述,该卷积运算需要ANN中的减少的数据移动。
图1是用于减少在ANN中的卷积运算期间的数据移动的示例性系统100的框图。如该图所示,示例性系统100可以包括诸如软件组件102的一个或更多个软件组件,以用于执行一个或更多个任务。如下文将更详细解释的,软件组件102可以包括激活模块104、光环模块(halo module)106、指令模块108和/或传输模块110。尽管被示为分开的元件,但是图1中的软件组件102中包括的一个或更多个模块可以表示单个模块、应用和/或操作系统的部分。可选地,图1中的软件组件102中包括的一个或更多个模块可以表示分开的、不同的和/或单独的应用或操作系统。
在某些实施例中,图1中的软件组件102中包括的一个或更多个模块可以表示一个或更多个软件应用或程序,当由计算设备的处理器执行时,这些软件应用或程序使得计算设备执行一个或更多个任务。例如,如下文将更详细描述的,软件组件102中包括的一个或更多个模块可以表示被存储和配置为在诸如图2所示的设备或组件(例如,计算设备202、物理处理器130等)的一个或更多个计算设备上运行的模块。图1中的软件组件102中包括的一个或更多个模块也可以表示被配置为执行一个或更多个任务的一个或更多个专用计算机的全部或部分。
如图1所示,示例系统100还可以包括一个或更多个存储器设备(例如存储器120)。存储器120通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器120可以存储、加载和/或维护软件组件102中包括的一个或更多个模块。存储器120的示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存、硬盘驱动器(HDD)、固态驱动器(SSD)、光盘驱动器、高速缓存、一个或更多个上述存储器的变型或组合、和/或任何其他合适的储存存储器。
如图1所示,示例性系统100还可以包括一个或更多个物理处理器,例如物理处理器130。物理处理器130通常表示能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理设备。在一个示例中,物理处理器130可以访问和/或修改存储在存储器120中的软件组件102中包括的一个或更多个模块。附加地或替代地,物理处理器130可以执行软件组件102中包括的一个或更多个模块,以便于减少ANN中卷积运算期间的数据移动。物理处理器130可以支持和/或有助于ANN。物理处理器130的示例包括但不限于中央处理单元(CPU)、微处理器、微控制器、实现软核处理器的现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、一个或更多个上述处理器的部分、一个或更多个上述处理器的变型或组合、和/或任何其他合适的物理处理器。
如图1所示,示例性系统100还可以包括一个或更多个硬件加速器,例如硬件加速器140。在一些示例中,硬件加速器140可以包括和/或表示硬件组件或设备,该硬件组件或设备在硬件中执行一个或更多个专门的计算任务比通用中央处理单元(即,被构造为执行作为软件的一系列不同程序的计算芯片)在软件中执行计算任务更有效。在这样的示例中,硬件加速器140可以支持和/或有助于ANN。在一些实施例中,术语“硬件加速”可以指在专用硬件电路(例如,ASIC)中计算任务的执行,其在没有软件模块中介(intermediary)或其他抽象层的情况下发生,使得计算任务的性能比以其他方式执行时更高效。
在一些示例中,如图1所示,硬件加速器140可以包括一个或更多个本地存储器设备,例如本地存储器设备142。本地存储器设备142可以表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,本地存储器设备142可以存储、加载、接收和/或维护一个或更多个矩阵,该一个或更多个矩阵可以位于硬件加速器140中包括的一个或更多个计算引擎的本地(例如,经由高速、低功率和/或低延迟总线通信地耦合)、被该一个或更多个计算引擎访问和/或利用。
本地存储器设备142的示例包括但不限于硬件加速器中包括的一个或更多个RAM设备、以一个或更多个高速缓存级别组织的一个或更多个物理存储器设备、通用高速缓存、指令高速缓存、一个或更多个上述设备的变型或组合、和/或硬件加速器本地的任何其他合适的储存存储器设备。在一些示例中,相比于从硬件加速器140外部的另一数据存储设备(例如,存储器120、外部数据储存器等)访问数据和/或计算机可读指令,硬件加速器140和/或系统100的一个或更多个组件从本地存储器设备142访问数据和/或计算机可读指令(例如,在功率使用、处理资源使用等方面)可能更有效。
如图1所示,示例性系统100还可以包括一个或更多个激活数据集,例如激活数据集144。在一些示例中,激活数据集144可以包括和/或表示一组数据,该组数据作为和/或用作ANN的卷积层的输入。例如,激活数据集144可以包括和/或表示一个或更多个数字图像。附加地或替代地,激活数据集144可以包括和/或表示手势或用户界面命令的数字表示。
在一些示例中,激活数据集144可以被排列、组织和/或格式化成矩阵或作为矩阵。在一个示例中,可以以H×W(例如,8×8、16×16、64×64等)的二维(2D)形式排列和/或提供激活数据集144,其中,H表示输入矩阵中的行数,并且W表示输入矩阵中的列数。因此,激活数据集144的维度H可以对应于输入矩阵的高度,并且激活数据集144的维度W可以对应于输入矩阵的宽度。
在另一个示例中,可以以H×W×C(例如,8×8×8,16×16×16,64×64×16等)的三维(3D)形式排列和/或提供激活数据集144,其中H表示输入矩阵中的行数,W表示输入矩阵中的列数,并且C表示输入矩阵中通道的数量或深度。因此,激活数据集144的维度H可以对应于输入矩阵的高度,激活数据集144的维度W可以对应于输入矩阵的宽度,并且激活数据集144的维度C可以对应于输入矩阵的深度。
如图1所示,示例性系统100可以另外包括一个或更多个ANN,例如ANN 150。在一些示例中,ANN 150可以包括和/或表示层的集合(例如输入层、池化层、隐藏层、卷积层、全连接层、归一化层、下采样层、校正线性单元层、损失函数层(loss layer)等)。在一个示例中,ANN 150可以包括、涉及和/或实现卷积层152,在该卷积层152处,滤波器内核(filterkernel)154被应用于和/或滑过或越过(slid across or over)激活数据集144,以便于以一种或另一种方式对激活数据集144进行分类。ANN 150的示例包括但不限于卷积神经网络、深度神经网络、多层感知器、递归神经网络、循环神经网络、一个或更多个上述网络的变型或组合、和/或任何其他合适的ANN。
在一些示例中,软件组件102可以对应于和/或支持ANN 150的输入层。在这样的示例中,硬件加速器140可以对应于和/或支持ANN 150的卷积层152。附加地或替代地,ANN150的输入层可以链接到和/或馈入(feed)ANN 150的卷积层152。因此,ANN 150的输入层可以准备用于卷积的激活数据集144,然后将激活数据集144发送到ANN 150的卷积层152。
一种用于减少在ANN中的卷积运算期间的数据移动的装置可以包括示例性系统100的全部或部分。在一些示例中,图1中的系统100可以以多种方式实现。例如,示例性系统100的全部或一部分可以表示图2中的示例性系统200的部分。如图2所示,系统200可以包括和/或表示实现、部署和/或执行ANN 150的计算设备202。在一个示例中,系统200可以包括和/或结合存储器120、物理处理器130和/或硬件加速器140。在该示例中,计算设备202还可以包括和/或结合硬件加速器140外部的数据储存器250。在一些实施例中,本地存储器设备142和数据储存器250可以构成和/或表示在计算设备202上实现的ANN 150的存储器层级的一些或全部。
在一些示例中,并且如下文将更详细描述的,计算设备202的硬件加速器140可以被配置、编程和/或硬连线以执行一个或更多个任务和/或操作,这些任务和/或操作有助于减少在ANN中的卷积运算期间的数据移动。例如,为了实现数据移动的这种减少,计算设备202的硬件加速器140可以:(1)接收将经由ANN 150的滤波器内核154进行卷积运算220的激活数据集144,(2)接收参数(argument),该参数指示当在卷积运算220期间滑过(slidacross)特定位置时,滤波器内核154超过激活数据集144的至少一个边界,(3)至少部分地基于该参数来确定,硬件加速器140将结合滤波器内核154的特定位置在激活数据集144的边界处生成填充数据,然后(4)当滤波器内核154滑过特定位置时,通过处理激活数据集144的一部分和填充数据来执行卷积运算220。
在一些示例中,计算设备202通常可以表示能够读取计算机可执行指令的任何类型或形式的物理计算设备。计算设备202的示例包括但不限于应用服务器、存储服务器、数据库服务器、web服务器和/或被配置为运行某些软件应用和/或提供各种应用、存储和/或数据库服务的任何其他合适的服务器。计算设备202的其他示例包括但不限于客户端设备、游戏控制台、可穿戴设备、头戴式装置、人工现实系统(例如,增强现实系统、混合现实系统、虚拟现实系统等)、膝上型电脑、平板电脑、台式机、蜂窝电话、路由器、交换机、个人数字助理(PDA)、多媒体播放器、嵌入式系统、一个或更多个上述设备的变型或组合和/或任何其他合适的计算设备。
在一个示例中,可以用软件组件102中包括的一个或更多个模块来对计算设备202进行编程。包括在软件组件102中的模块的全部或部分功能可以由计算设备202和/或任何其他合适的计算系统来执行。如下文将更详细描述的,当由计算设备202的至少一个处理器执行时,图1的软件组件102中包括的一个或更多个模块可以使计算设备202能够减少在ANN中的卷积运算期间的数据移动。
许多其他设备或子系统可以连接到图1中的示例性系统100和/或图2中的示例性系统200。相反,图1和图2中示出的所有组件和设备并不都需要存在来实践本文描述和/或示出的实施例。上面提到的设备和子系统也可以以不同于图2所示的方式互连。示例性系统100和示例性系统200也可以采用任何数量的软件、固件和/或硬件配置。例如,本文公开的一个或更多个示例实施例可以被编码为计算机可读介质上的计算机程序(也称为计算机软件、软件应用、计算机可读指令和/或计算机控制逻辑)。
图3是用于减少在ANN中的卷积运算期间的数据移动的示例计算机实现的方法300的流程图。图3中所示的步骤可以由任何合适的计算机可执行代码和/或计算系统(包括图1中的示例性系统100、图2中的示例性系统200、和/或示例性系统100和示例性系统200中的一个或更多个的变型或组合)来执行。在一个示例中,在图3中所示的步骤中的每一个可以表示算法,其结构包括多个子步骤和/或由多个子步骤表示,将在下面更详细地提供子步骤的示例。
如图3所示,在步骤310,本文描述的一个或更多个系统可以接收激活数据集,该激活数据集将经由ANN的滤波器内核进行卷积运算。例如,计算设备202的硬件加速器140可以接收将经由滤波器内核154进行图2中的卷积运算220的激活数据集144。在一个示例中,激活数据集144可以构成和/或表示照片和/或计算机生成的图像的全部或一部分。附加地或替代地,激活数据集144可以构成和/或表示手势或用户界面命令的数字描绘(digitaldepiction)。
本文描述的系统可以以各种方式和/或上下文来执行步骤310。在一些示例中,计算设备202的硬件加速器140可以从数据储存器250获得和/或访问激活数据集144。在其他示例中,软件组件102可以指导和/或促使数据储存器250将激活数据集144传输到硬件加速器140。在任一情况下,硬件加速器140可以在本地存储器设备142中存储和/或维护激活数据集144。
如图2所示,本地存储器设备142可以驻留在硬件加速器140内和/或表示硬件加速器140的一部分。相反,数据储存器250可以位于硬件加速器140之外和/或外部(outsideand/or external to)。因此,激活数据集144从数据储存器250到本地存储器设备142的传输可以构成跨越ANN 150的存储器层级的数据移动。
在一些示例中,软件组件102可以参与生成、准备和/或布置用于卷积运算220的激活数据集144。例如,软件组件102的激活模块104可以在硬件加速器140之外和/或外部生成、准备和/或布置激活数据集144。在完成激活数据集144的生成、准备和/或布置后,软件组件102的传输模块110可以将激活数据集144从数据储存器250传递和/或传输到硬件加速器140。
在一些示例中,可以在没有任何填充数据的情况下将激活数据集144从数据储存器250传递和/或传输到硬件加速器140。换句话说,激活数据集144在到达硬件加速器140时可能没有填充数据。因此,计算设备202可以跨越ANN 150的存储器层级在激活数据集144上实现和/或执行卷积运算220,而没有这种填充数据。通过这样做,相对于传统卷积技术,计算设备202可以减少卷积运算中涉及的数据移动量。
返回图3,在步骤320,本文描述的一个或更多个系统可以接收一个参数,该参数指示当在卷积运算期间滑过特定位置时,滤波器内核超过激活数据集的至少一个边界。例如,计算设备202的硬件加速器140可以接收图2中的参数230,该参数230指示当在卷积运算220期间滑过特定位置时,滤波器内核154超过激活数据集144的至少一个边界。如下文将更详细描述的,参数230可以包括硬件加速器140用来确定滤波器内核154的特定位置是否包括和/或包含激活数据集144的边界之外和/或超出该边界的任何区域或范围的各种类型或形式的信息和/或数据。
本文描述的系统可以以各种方式和/或上下文来执行步骤320。在一些示例中,计算设备202的硬件加速器140可以经由指令228从软件组件102获得和/或检索参数230。附加地或替代地,硬件加速器140可以检测和/或识别由软件组件102发送的指令228中的参数230。
作为具体示例,软件组件102的光环模块106可以确定、定义和/或识别激活数据集144的边界。在该示例中,软件组件102的指令模块108可以生成和/或准备指令228,以说明和/或识别激活数据集144的一个或更多个边界。具体地,指令模块108可以在将参数230发送到硬件加速器140之前,将参数230插入和/或合并到指令228中。
继续该示例,参数230可以指示和/或识别激活数据集144存储在数据储存器250和/或本地存储器设备142中的一个或更多个存储器位置。例如,参数230可以指示和/或识别相对于数据储存器250和/或本地存储器设备142,激活数据集144中包括的第一行数据开始的存储器位置。换句话说,参数230可以指示和/或识别存储包括在激活数据集144中的第一矩阵元素的存储器位置。
附加地或替代地,参数230可以指示和/或标识相对于数据储存器250和/或本地存储器设备142,激活数据集144中包括的最后一行数据结束的存储器位置。换句话说,参数230可以指示和/或识别存储激活数据集144中包括的最后一个矩阵元素的存储器位置。
在一个示例中,软件组件102的指令模块108可以确定和/或选择哪个填充值(例如,零和/或非零值)用作填充数据和/或用于光环(halo)。例如,指令模块108可以选择非零值“13”来用作填充数据和/或用于光环。在该示例中,指令模块108可以指示硬件加速器140使用由软件组件102选择的填充值来生成填充数据和/或光环。具体地,指令模块108可以在将指令228发送到硬件加速器140之前,将所选择的填充值插入和/或合并到指令228中。
在生成和/或准备指令228以说明和/或识别激活数据集144的边界时,指令模块108可以向硬件加速器140发送和/或传递指令228。附加地或替代地,传输模块110可以向硬件加速器140发送和/或传递指令228。在一个示例中,硬件加速器140可以在指令228中搜索与激活数据集144的边界相关的任何参数。在该搜索期间,硬件加速器140可以识别参数230,然后确定参数230指示和/或识别相对于数据储存器250和/或本地存储器设备142的存储器位置的激活数据集144的一个或更多个边界。
在一个示例中,参数230可以包括和/或表示指示对应于某个子区域的位置是否涉及激活数据集144的边界之外和/或超过该边界的任何区域或范围的标志(flag)。换句话说,该标志可以指示和/或传达进行卷积的某个子区域是否需要任何填充数据来确保相同卷积(same convolution)的完整性。术语“相同卷积”可以指从卷积产生输出的概念、过程和/或提议,其包括和/或保持与相应输入相同的数据维度。
在另一个示例中,参数230可以包括和/或表示计数,该计数指示当在卷积运算期间滑过特定位置时,滤波器内核154超过的激活数据集144的边界的数量。附加地或替代地,参数230可以包括和/或表示一个或更多个边指示符(例如,“halo_top”、“halo_bottom”、“halo_left”和/或“halo_right”),这些边指示符识别当在卷积运算期间滑过特定位置时,滤波器内核154超过激活数据集144的哪些边界。此外,参数230可以包括和/或表示深度指示符,该深度指示符标识将由硬件加速器140结合滤波器内核154的特定位置在激活数据集144的一个或更多个边界处生成的填充数据的深度。
在一些示例中,指令228可以对应于和/或表示所有激活数据集144。例如,指令228可以包括和/或传达各种参数,这些参数指示和/或标识相对于数据储存器250和/或本地存储器设备142的存储器位置的激活数据集144的所有边界。在该示例中,指令228可以向硬件加速器140传达滤波器内核154的哪些位置包围和/或覆盖激活数据集144的边界之外和/或超出该边界的任何区域或范围。
换句话说,指令228可以指示包围和/或覆盖为进行相同卷积运算而通常填充有填充数据的任何区域和/或范围的滤波器内核154的所有位置。因此,在该示例中,硬件加速器140可以仅基于指令228来识别和/或确定激活数据集144的所有这样的边界,而不需要来自软件组件102的任何附加指令。
在其他示例中,指令228可以对应于和/或仅表示激活数据集144的一部分和/或子集。例如,指令228可以包括和/或仅携带参数230和/或参数232,参数230和/或参数232指向存储激活数据集144的特定部分的存储器位置。在该示例中,指令228可以向硬件加速器140传达在卷积运算220期间滑过或滑到(slid across or to)特定位置时,滤波器内核154是否包围和/或应用于激活数据集144的边界之外和/或超出该边界的任何区域或范围。
换句话说,指令228可以指示滤波器内核154的单个位置是否覆盖为进行相同卷积运算而通常填充有填充数据的任何区域和/或范围。因此,硬件加速器140可以基于指令228来识别和/或确定滤波器内核154的单个位置是否包围和/或覆盖激活数据集144的边界之外和/或超出该边界的任何区域或范围。结果,在该示例中,硬件加速器140可能需要从软件组件102接收和/或获得附加指令,以便于为整个激活数据集144考虑和/或生成填充数据。
在一些示例中,硬件加速器140可以接收图2中的参数232,参数232指示在卷积运算220期间滤波器内核154超过激活数据集144的特定位置的起始地址。作为具体示例,软件组件102的光环模块106可以确定、定义和/或识别激活数据集144的起始地址。在该示例中,起始地址可以对应于和/或说明光环区域或激活数据集144的一部分。附加地或替代地,光环模块106可以确定、定义和/或识别激活数据集144的子区域的起始地址。在该示例中,子区域可以对应于和/或表示激活数据集144的某个区域或部分。
在一些示例中,子区域可以包括和/或表示与滤波器内核154相同的维度。例如,如果滤波器内核154包括和/或表示3×3矩阵滤波器,则子区域可以包括和/或表示激活数据集144的3×3矩阵。作为另一个示例,如果滤波器内核154包括和/或表示8×8×K矩阵滤波器,则子区域可以包括和/或表示激活数据集144的8×8×C矩阵,其中K表示卷积中的内核的数量和/或要输出的通道的数量,而C表示包括在激活数据集144中的通道的数量或深度。在该示例中,K和C可以具有一定的关系和/或彼此成比例。
在一些示例中,软件组件102的指令模块108然后可以生成和/或准备指令228,以说明和/或识别在卷积运算220期间滤波器内核154超过激活数据集144的特定位置的起始地址。具体地,指令模块108可以在将指令228发送到硬件加速器140之前,将参数232插入和/或合并到指令228中。在一个示例中,参数232可以指示和/或识别激活数据集144的区域或子区域的第一矩阵元素存储在数据储存器250和/或本地存储器设备142中的存储器位置。
返回图3,在步骤330,本文描述的一个或更多个系统可以至少部分地基于该参数来确定硬件加速器将结合滤波器内核的特定位置在激活数据集的边界处生成填充数据。例如,计算设备202的硬件加速器140可以至少部分地基于参数230来确定硬件加速器140将结合滤波器内核154的特定位置在激活数据集144的边界处生成填充数据218。换句话说,硬件加速器140可以至少部分地基于参数230来考虑激活数据集144的边界处的填充数据218,以确保卷积运算220的完整性,而不需要从数据储存器250或其他地方传输这样的填充数据。
在一些实施例中,填充数据218可以包括和/或表示零偏移填充。例如,填充数据218可以包括和/或表示零和/或非零值的数组、矩阵、体积(volume)。在该示例中,硬件加速器140可以被配置、编程和/或设计成在激活数据集144周围添加已知填充类型(例如,已知0、已知1和/或已知负1)的阵列、矩阵和/或体积。附加地或附加地,硬件加速器140可以被配置、编程和/或设计成在激活数据集144周围添加特定深度和/或维度的填充数据。
本文描述的系统可以以各种方式和/或上下文来执行步骤330。在一些示例中,计算设备202的硬件加速器140可以在卷积运算220开始时生成和/或考虑在激活数据集144的所有边界处的填充数据218。例如,在将滤波器内核154应用于激活数据集144之前,硬件加速器140可以生成和/或充填填充数据218,以在2D或3D中包围和/或环绕激活数据集144,为卷积运算220做准备。
在一些示例中,硬件加速器140可以在卷积运算220期间基于每个位置生成和/或考虑填充数据218。换句话说,在卷积运算220期间,当滤波器内核154滑过和/或应用于包括和/或包含激活数据集144的边界之外和/或超出该边界的任何区域或范围的位置时,硬件加速器140可以将填充数据218添加到激活数据集144的一个或更多个边界。例如,如果滤波器内核154滑过和/或应用于完全包含在激活数据集144的边界内的位置,则硬件加速器140可能不需要在卷积运算220期间生成和/或考虑与该位置相关的任何填充数据。结果,硬件加速器140可以简单地在该位置处对激活数据集144执行卷积,因为不需要填充数据来确保相同卷积的完整性。
然而,在卷积运算220期间,如果滤波器内核154滑过和/或应用于滤波器内核154延伸超过激活数据集144的一个或更多个边界的位置,则硬件加速器140可能需要生成和/或考虑与该位置相关的填充数据。例如,在卷积运算220期间,硬件加速器140可以向激活数据集144的一个或更多个边界周围的、由滤波器内核154的特定位置牵涉的区域添加0或1。这样做时,硬件加速器140可以在该位置处进行和/或执行卷积,而不会损害输出的完整性和/或维度。
在一些示例中,硬件加速器140可以至少部分地基于参数230来确定滤波器内核154的窗口大小。例如,硬件加速器140可以在卷积运算220期间至少部分地基于在参数230中为特定位置识别的光环计数来确定滤波器内核154的窗口大小。在该示例中,硬件加速器140可以至少部分地基于如下公式来做出该确定:Window输入=Window输出+left光环?0:(F-1)>>2+right光环?0:(F-1)>>2,其中F是滤波器的总尺寸。在以这种方式确定滤波器内核154的窗口大小时,硬件加速器140可以至少部分地基于窗口大小生成光环数据(例如,空数据(null data)和/或零偏移数据)。然后,为了支持从输入到输出的相同卷积,该光环数据可以被输入到卷积运算220中。
以这些方式,软件组件102和硬件加速器140可以彼此协同工作和/或操作,以避免填充数据跨越在计算设备202上实现的ANN 150的存储器层级的移动,同时仍然促进ANN150的相同卷积。因此,软件组件102和硬件加速器140可以有效地消除跨越计算设备202上的ANN 150的存储器层级(例如,从数据储存器250到本地存储器设备142)传递和/或传输这种填充数据的需要。通过这样做,软件组件102和硬件加速器140可以使计算设备202能够节省与卷积运算220相关联的功率资源和/或计算资源,和/或减少与卷积运算220相关联的时间延迟。
返回图3,在步骤340,当滤波器内核滑过特定位置时,本文描述的一个或更多个系统可以通过处理激活数据集的一部分和填充数据来执行卷积运算。例如,当滤波器内核154滑过特定位置时,计算设备202的硬件加速器140可以通过处理激活数据集144的一部分和填充数据218来执行卷积运算220。在该示例中,卷积运算220可以有效地将激活数据集144卷积成输出数据集240。换句话说,卷积运算220可以使用激活数据集144来生成和/或产生输出数据集240。ANN 150然后可以使用输出数据集240以一种或另一种方式对激活数据集144或其来源进行分类,和/或结合激活数据集144做出判定。
本文描述的系统可以以各种方式和/或上下文来执行步骤340。在一些示例中,硬件加速器140可以包括和/或部署进行和/或执行卷积运算220的计算引擎252。例如,硬件加速器140的计算引擎252可以将滤波器内核154应用于激活数据集144和/或激活数据集144的子区域。在该示例中,计算引擎252可以将激活数据集144输入到滤波器内核154中,以生成和/或产生输出数据集240。附加地或替代地,作为卷积运算220的一部分,计算引擎252可以将滤波器内核154滑过激活数据集144的各个子区域,以生成和/或产生输出数据集240。
图4示出了示例性卷积运算400,其涉及激活数据集144、填充数据218和/或输出数据集240。在一个示例中,图4中的激活数据集144、填充数据218和/或输出数据集240可以表示和/或被格式化为2D数据图(data map)和/或矩阵。在该示例中,硬件加速器140可以通过经由滤波器内核154处理激活数据集144和填充数据218来进行和/或执行图4中的卷积运算400。在以这种方式处理激活数据集144和填充数据218时,卷积运算220可以生成、产生和/或产出输出数据集240。
图5示出了卷积运算500的示例性运行(pass),其涉及激活数据集144、填充数据218和/或输出数据集240。在一个示例中,图5中的激活数据集144、填充数据218和/或输出数据集240可以表示和/或被格式化为3D数据图和/或体积。在该示例中,硬件加速器140可以通过经由滤波器内核154处理激活数据集144和填充数据218来进行和/或执行图5中的卷积运算500。在以这种方式处理激活数据集144和填充数据218时,卷积运算500可以生成、产生和/或产出输出数据集240。
作为卷积运算500的一部分,硬件加速器140可以将滤波器内核154滑过存储器中的各个位置,以处理存储在这些位置的激活数据集144的部分。换句话说,硬件加速器140可以将滤波器内核154滑过激活数据集144的各个子区域,以处理对应于那些子区域的数据。因此,本地存储器设备142中的各存储器位置可以对应于和/或表示激活数据集144的各个子区域。
在一个示例中,硬件加速器140可以从软件组件102接收参数230。在该示例中,参数230可以指示和/或用于确定在卷积运算500的位置508处,滤波器内核154不超过激活数据集144的任何边界。换句话说,参数230可以指示和/或用于确定,在卷积运算500的位置508处,滤波器内核154包围和/或仅覆盖激活数据集144的边界内部和/或内(inside and/or within)的区域或范围。因此,如图5所示,滤波器内核154在位置508处滑过和/或应用于的数据完全包含在激活数据集144的边界内。
在一些示例中,相比于作为输出数据所产生的,卷积运算500可能需要和/或消耗更多的输入数据。因此,卷积运算500可以自然地从输入到输出减少数据维度,除非输入数据维度通过光环和/或填充数据增加和/或扩展。如图5所示,卷积运算500的位置508可以包括和/或结合光环506,该光环506将激活数据集144的输入部分扩展到比相应输出稍大的维度。这样,光环506可以为卷积运算500保持和/或确保相同卷积的完整性。
继续该示例,参数230可以包括和/或识别对应于和/或表示在位置508处进行卷积的激活数据集144的子区域的所有边的四个参数。例如,参数230可以指示位置508处的顶边、左边、右边和/或底边都不需要任何填充数据来支持相同卷积。位置508处不需要填充数据的原因可能是激活数据集144已经在位置508的那些边上包括和/或包含现有数据。换句话说,当滤波器内核154滑过和/或应用于卷积运算500的位置508时,光环506可以覆盖保持在激活数据集144的边界内的现有数据。
附加地或替代地,硬件加速器140可以从软件组件102接收参数232。在该示例中,参数232可以指示和/或用于确定位置508的起始地址502。如图5所示,起始地址502可以对应于和/或表示激活数据集144的子区域的第一位置和/或起始位置。因此,硬件加速器140可以从位置508的起始地址502开始,在激活数据集144的该子区域上滑动和/或应用滤波器内核154。更具体地,硬件加速器140可以从位置508的起始地址502开始,在位于激活数据集144的该子区域顶部处的数据行上水平滑动和/或应用滤波器内核154。
在完成顶行数据之后,硬件加速器140可以通过在激活数据集144的这个子区域内的第二行数据上水平滑动和/或应用滤波器内核154来继续。在一个示例中,软件组件102可以控制和/或管理滤波器内核154相对于激活数据集144在垂直方向上的移动。相反,在该示例中,硬件加速器140可以控制和/或管理滤波器内核154相对于激活数据集144在水平方向上的移动。
在一些示例中,卷积运算500可以涉及和/或实现标准卷积(normal convolution)技术。在这样的示例中,激活数据集144的输入通道可以被表示为数据布局的最内部维度,从而促进数据布局到乘法器-累加器单元的点积引擎组织的有效映射。例如,卷积运算500可以被格式化和/或表示为输出数据集{N,H,W,K}=激活数据集{N,H,W,C}×滤波器内材{Fh,Fw,K,C}。
在其他示例中,卷积运算500可以涉及和/或实现直接卷积(direct convolution)技术。在这样的示例中,激活数据集144的高度和宽度可以表示为数据布局的最内部维度,以便于逐深度卷积。例如,卷积运算500可以被格式化和/或表示为输出数据集{N,K,H,W}=激活数据集{N,C,H,W}×滤波器内核{K,C,Fh,Fw}。
图6示出了卷积运算600的示例性运行。作为图6中卷积运算600的一部分,硬件加速器140可以从软件组件102接收参数230。在该示例中,参数230可以指示和/或用于确定在卷积运算600的位置608处,滤波器内核154超过激活数据集144的至少一个边界。换句话说,参数230可以指示和/或用于确定,在卷积运算600的位置608处,滤波器内核154包围和/或覆盖激活数据集144的边界之外和/或超出该边界的区域或范围。因此,如图6所示,滤波器内核154在位置608处滑过和/或应用于的一些数据在激活数据集144的边界之外和/或超出该边界。
继续该示例,参数230可以包括和/或识别对应于和/或表示在位置608处进行卷积的激活数据集144的子区域的所有边的四个参数。例如,参数230可以指示位置608处的顶边超过激活数据集144的顶边界,因此需要填充数据来支持相同卷积。在该示例中,参数230还可以指示位置608处的左边、右边和/或底边不需要任何填充数据来支持相同卷积。在位置608的顶边处需要填充数据的原因可能是相比于作为输出数据所产生的,相同卷积消耗更多的输入数据。因此,为了从输入到输出保持相同的维度,硬件加速器140可能需要生成填充数据和/或将该填充数据应用于位置608的顶边以进行卷积运算600。
附加地或替代地,硬件加速器140可以从软件组件102接收参数232。在该示例中,参数232可以指示和/或用于确定位置608的起始地址602。如图6所示,起始地址602可以对应于和/或表示激活数据集144的子区域的第一位置和/或起始位置。因此,硬件加速器140可以从位置608的起始地址602开始,在激活数据集144的这个子区域上滑动和/或应用滤波器内核154。更具体地,硬件加速器140可以从位置608的起始地址602开始,在位于激活数据集144的该子区域顶部处的数据行上水平滑动和/或应用滤波器内核154。
在一个示例中,参数232可以补偿、偏移和/或调整位置608的起始地址602,以避免和/或绕过位置608顶部处的填充数据218。换句话说,参数232可以考虑填充数据218和光环506的重叠,使得在激活数据集144的子区域内的第一行和/或顶行数据上做出、进行和/或执行滤波器内核154的第一卷积运行。结果,硬件加速器140可以通过防止滤波器内核154跨越纯填充数据做出、进行和/或执行运行来提高卷积运算600的效率。
图7示出了示例性卷积运算600的另一运行。作为图7中卷积运算600的一部分,硬件加速器140可以从软件组件102接收参数230。在该示例中,参数230可以指示和/或用于确定,在卷积运算600的位置708处,滤波器内核154超过激活数据集144的至少一个边界。换句话说,参数230可以指示和/或用于确定,在卷积运算600的位置708处,滤波器内核154包围和/或覆盖激活数据集144的边界之外和/或超出该边界的区域或范围。因此,如图7所示,滤波器内核154在位置708处滑过和/或应用于的一些数据在激活数据集144的边界之外和/或超出该边界。
继续该示例,参数230可以包括和/或识别对应于和/或表示在位置708处进行卷积的激活数据集144的子区域的所有边的四个参数。例如,参数230可以指示位置708处的左边和底边超过激活数据集144的左侧和底部边界,因此需要填充数据来支持相同卷积。在该示例中,参数230还可以指示位置708处的顶边和右边不需要任何填充数据来支持相同卷积。在位置708的左边和底边处需要填充数据的原因可能是相比于作为输出数据所产生的,相同卷积消耗更多的输入数据。因此,为了从输入到输出保持相同的维度,硬件加速器140可能需要生成和/或将该填充数据应用于位置708的顶边以进行卷积运算600。
附加地或替代地,硬件加速器140可以从软件组件102接收参数232。在该示例中,参数232可以指示和/或用于确定位置708的起始地址702。如图7所示,起始地址702可以对应于和/或表示激活数据集144的子区域的第一位置和/或起始位置。因此,硬件加速器140可以从位置708的起始地址702开始,在激活数据集144的这个子区域上滑动和/或应用滤波器内核154。更具体地,硬件加速器140可以从位置708的起始地址702开始,在位于激活数据集144的该子区域顶部处的数据行上水平滑动和/或应用滤波器内核154。
如上文结合图1-图7所述,本文公开的各种系统和方法能够减少ANN中卷积运算期间的数据移动。例如,代替将填充数据与激活数据集一起从输入层传递和/或传输到卷积层,ANN可以在卷积层生成和/或考虑这样的填充数据。通过这样做,ANN可以有效地简化输入层和卷积层之间的链接,因为输入层不再需要为在卷积层进行卷积的激活数据集准备填充数据。结果,ANN可以使计算设备能够节省原本通过访问存储器和/或将填充数据从输入层移动到卷积层而消耗的功率资源和/或计算资源。
为了便于以这种方式减少卷积运算期间的数据移动,与输入层相关联的软件组件可以向与卷积层相关联的硬件加速器提供指令。在一个示例中,这些指令可以描述进行卷积的激活数据集的光环部分的内容。更具体地,这些指令可以向硬件加速器指示正在进行卷积的光环部分是否包括和/或包含激活数据集的边界之外和/或超出该边界的任何区域。
一方面,如果进行卷积的光环部分确实包括和/或包含这样的区域,则硬件加速器可以被设计或编程为在该区域的卷积运行之前和/或期间在该区域处生成和/或考虑填充数据。另一方面,如果进行卷积的光环部分不包括和/或包含这样的区域,则硬件加速器可以被设计或编程为执行该区域的卷积运行,而不在该区域处生成和/或考虑任何填充数据。
在一些示例中,在激活数据集中包括的数据行上的每次运行可以由从软件组件发送到硬件加速器的指令来控制。例如,软件组件可以向硬件组件发送指令。在该示例中,指令可以在卷积运算的特定位置处识别和/或定义激活数据集的光环部分。附加地或替代地,指令可以包括和/或传达两个参数——一个参数对应于跨激活数据集中包括的一行数据的卷积运行的左边,并且另一个参数对应于跨该行数据的卷积运行的右边。
因此,软件组件可以确定在通过硬件加速器进行卷积的激活数据集的每个区域处存在多少光环。软件组件然后可以通知硬件加速器在进行卷积的激活数据集的每个区域处存在的光环。通过这样做,硬件加速器可以在卷积期间在激活数据集的每个区域处生成和/或考虑光环包含的必要填充数据。
此外,从软件组件发送到硬件加速器的指令可以描述激活数据集的特定子区域的起始地址。在一个示例中,起始地址可以对应于和/或考虑激活数据集的该子区域的光环部分。通过组合调整后的起始地址和进行卷积的子区域的光环部分的描述,硬件加速器可以在激活数据集上执行相同卷积,而无需将激活数据集的实际填充数据从输入层传递和/或传输到卷积层。
示例实施例
示例1:一种计算机实现的方法,包括:(1)在支持ANN的硬件加速器处接收将经由ANN的滤波器内核进行卷积运算的激活数据集,(2)在硬件加速器处接收参数,该参数指示当在卷积运算期间滑过特定位置时,滤波器内核超过激活数据集的至少一个边界,(3)至少部分地基于该参数来确定,硬件加速器将结合滤波器内核的特定位置在激活数据集的边界处生成填充数据,然后(4)当滤波器内核滑过特定位置时,在硬件加速器处通过处理激活数据集的一部分和填充数据来执行卷积运算。
示例2:示例1的计算机实现的方法,还包括在硬件加速器处接收指示特定位置的起始地址的附加参数,并且其中,执行卷积运算包括至少部分地基于附加参数,在特定位置处将滤波器内核应用于激活数据集的部分和填充数据。
示例3:示例1的计算机实现的方法,其中在硬件加速器处接收的激活数据集没有填充数据。
示例4:示例3的计算机实现的方法,还包括由硬件加速器结合滤波器内核的特定位置在激活数据集的边界处生成填充数据。
示例5:示例3的计算机实现的方法,还包括将激活数据集存储在硬件加速器的本地存储器设备中,用于结合卷积运算进行处理,并且其中,执行卷积运算包括将滤波器内核移动到硬件加速器的本地存储器设备内的特定位置的起始地址,以便于处理激活数据集的部分和填充数据。
示例6:示例5的计算机实现的方法,其中由硬件加速器生成填充数据包括消除将填充数据从外部数据储存器传输到硬件加速器的本地存储器设备的需要。
示例7:示例1的计算机实现的方法,还包括:(1)在硬件加速器处接收附加参数,该附加参数指示当在卷积运算期间滑过附加位置时,滤波器内核不超过激活数据集的任何边界,然后(2)至少部分地基于该附加参数,确定硬件加速器将抑制结合滤波器内核的附加位置生成附加填充数据,并且其中,执行卷积运算包括当滤波器内核滑过附加位置时,处理激活数据集的附加部分而没有任何填充数据。
示例8:示例7的计算机实现的方法,还包括在硬件加速器处接收指示附加位置的起始地址的另一个参数,并且其中,执行卷积运算包括至少部分地基于该另一个参数,在附加位置处将滤波器内核应用于激活数据集的附加部分。
示例9:示例1的计算机实现的方法,其中所述参数包括以下中的至少一项:(1)计数,其指示当在卷积运算期间滑过特定位置时,滤波器内核超过的激活数据集的边界数量,(2)一个或更多个边指示符,其标识当在卷积运算期间滑过特定位置时,滤波器内核超过激活数据集的哪些边界,和/或(3)深度指示符,其标识将由硬件加速器结合滤波器内核的特定位置在激活数据集的边界处生成的填充数据的深度。
示例10:示例1的计算机实现的方法,其中执行卷积运算包括通过在激活数据集上滑动滤波器内核来生成输出数据集。
示例11:示例10的计算机实现的方法,其中卷积运算包括相同卷积运算,其中(1)激活数据集包含特定数量的维度,以及(2)输出数据集也包含该特定数量的维度。
示例12:示例1的计算机实现的方法,还包括提供在硬件加速器外部的物理处理器上运行的软件组件,并且其中,执行卷积运算包括:(1)在卷积运算期间,由硬件加速器引导滤波器内核滑过激活数据集的第一维度,以及(2)在卷积运算期间,由软件组件引导滤波器内核滑过激活数据集的第二维度。
示例13:示例1的计算机实现的方法,还包括:(1)提供在硬件加速器外部的物理处理器上运行的软件组件,(2)由软件组件选择用于在激活数据集的边界处生成填充数据的填充值,以及(3)由软件组件指示硬件加速器使用由软件组件选择的填充值来生成填充数据。
示例14:一种系统,包括:(1)执行软件组件的物理处理器和(2)支持人工神经网络(ANN)并通信地耦合到由物理处理器执行的软件组件的硬件加速器,其中硬件加速器(A)接收将经由ANN的滤波器内核进行卷积运算的激活数据集,(B)从软件组件接收参数,该参数指示当在卷积运算期间滑过特定位置时,滤波器内核超过激活数据集的至少一个边界,(C)至少部分地基于该参数,确定硬件加速器将结合滤波器内核的特定位置在激活数据集的边界处生成填充数据,然后(D)当滤波器内核滑过特定位置时,通过处理激活数据集的一部分和填充数据来执行卷积运算。
示例15:示例14的系统,其中硬件加速器(1)接收指示特定位置的起始地址的附加参数,以及(2)至少部分地基于附加参数,在特定位置处将滤波器内核应用于激活数据集的部分和填充数据。
示例16:示例14的系统,其中在硬件加速器处接收的激活数据集没有填充数据。
示例17:示例16的系统,其中硬件加速器结合滤波器内核的特定位置在激活数据集的边界处生成填充数据。
示例18:示例16的系统,其中硬件加速器(1)将激活数据集存储在本地存储器设备中,用于结合卷积运算进行处理,以及(2)将滤波器内核移动到本地存储器设备内的特定位置的起始地址,以便于处理激活数据集的部分和填充数据。
示例19:示例18的系统,其中,通过生成填充数据,硬件加速器消除了将填充数据从外部数据储存器传输到本地存储器设备的需要。
示例20:一种包括计算机可读指令的非暂时性计算机可读介质,当由计算设备的至少一个处理器执行时,该计算机可读指令使得计算设备:(1)在支持ANN的硬件加速器处接收激活数据集,该激活数据集将经由ANN的滤波器内核进行卷积运算,(2)在硬件加速器处接收参数,该参数指示当在卷积运算期间滑过特定位置时,滤波器内核超过激活数据集的至少一个边界,(3)至少部分地基于该参数,确定硬件加速器将结合滤波器内核的特定位置在激活数据集的边界处生成填充数据,然后(4)当滤波器内核滑过特定位置时,在硬件加速器处通过处理激活数据集的一部分和填充数据来执行卷积运算。
在某些实施例中,本文描述的一个或更多个模块可以将数据、物理设备和/或物理设备的表示从一种形式转换成另一种形式。例如,本文所述的一个或更多个模块可以接收要被变换的滤波器数据和/或激活(例如,图像)数据,变换滤波器数据和/或激活数据,输出变换结果以经由ANN的卷积层执行卷积运算,使用变换结果向ANN的一个或更多个附加层提供输入,并且存储变换结果以做出关于ANN的附加输入的预测。附加地或可替代地,本文所述的一个或更多个模块可以通过在计算设备上执行、在计算设备上存储数据、和/或以其他方式与计算设备交互来将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式转换成另一种形式。
在一些实施例中,术语“计算机可读介质”通常指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例非限制地包括传输型介质(例如载波)以及非暂时性介质(例如磁性存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光学存储介质(例如,光盘(CD)、数字视频盘(DVD)和蓝光光盘)、电子存储介质(例如,固态驱动器和闪存介质)以及其他分布系统)。
本公开的实施例可以包括人工现实系统或者结合人工现实系统来实现。人工现实是一种在呈现给用户之前已经以某种方式进行了调整的现实形式,其可以包括例如虚拟现实(VR)、增强现实(AR)、混合现实(mixed reality,MR)、混杂现实(hybrid reality)或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或者与所捕获的(例如,现实世界)内容组合的所生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,它们中的任何一个都可以在单个通道或多个通道(例如向观看者产生三维效果的立体视频)中呈现。此外,在一些实施例中,人工现实还可以与应用、产品、附件、服务或其某种组合相关联,这些应用、产品、附件、服务或其某种组合用于例如在人工现实中创建内容和/或在人工现实中以其他方式被使用(例如在人工现实中执行活动)。可以在各种平台(包括连接到主计算机系统的头戴式显示器(HMD)、独立的HMD、移动设备或计算系统、或者能够向一个或更多个观众提供人工现实内容的任何其他硬件平台)上实现提供人工现实内容的人工现实系统。
本文描述和/或示出的过程参数和步骤的顺序仅作为示例被给出,并且可以根据需要变化。例如,虽然本文示出和/或描述的步骤可以以特定顺序被示出或讨论,但是这些步骤不必需要以所示出或讨论的顺序来被执行。本文描述和/或示出的各种示例性方法也可以省略在本文描述或示出的一个或更多个步骤,或者包括除了那些所公开的步骤之外的附加步骤。
提供前面的描述以使本领域中的其他技术人员能够最好地利用本文公开的示例性实施例的各种方面。该示例性描述并不旨在是穷尽的或受限于所公开的任何精确形式。许多修改和变化是可能的,而不偏离本公开的精神和范围。本文公开的实施例应当在所有方面被认为是说明性的而不是限制性的。在确定本公开的范围时,应当参考所附权利要求及其等同物。
除非另有说明,否则说明书和权利要求书中使用的术语“连接到”和“耦合到”(及其派生词)应被解释为允许直接和间接(即,通过其他元件或组件)连接。此外,说明书和权利要求书中使用的术语“一个(a)”或“一个(an)”应被解释为意指“...中的至少一个”。最后,为了便于使用,说明书和权利要求书中使用的术语“包括(including)”和“具有”(及其派生词)可与词语“包括(comprising)”互换并具有相同的含义。

Claims (20)

1.一种计算机实现的方法,包括:
在支持人工神经网络(ANN)的硬件加速器处接收激活数据集,所述激活数据集将经由所述ANN的滤波器内核进行卷积运算;
在所述硬件加速器处接收参数,所述参数指示当在所述卷积运算期间滑过特定位置时,所述滤波器内核超过所述激活数据集的至少一个边界;
至少部分地基于所述参数,确定所述硬件加速器将结合所述滤波器内核的特定位置在所述激活数据集的边界处生成填充数据;和
当所述滤波器内核滑过所述特定位置时,在所述硬件加速器处通过处理所述激活数据集的一部分和所述填充数据来执行所述卷积运算。
2.根据权利要求1所述的计算机实现的方法,还包括在所述硬件加速器处接收指示所述特定位置的起始地址的附加参数;并且
其中,执行所述卷积运算包括至少部分地基于所述附加参数,在所述特定位置处将所述滤波器内核应用于所述激活数据集的所述一部分和所述填充数据。
3.根据权利要求2所述的计算机实现的方法,其中,在所述硬件加速器处接收的所述激活数据集没有填充数据。
4.根据权利要求3所述的计算机实现的方法,还包括由所述硬件加速器结合所述滤波器内核的特定位置在所述激活数据集的边界处生成填充数据。
5.根据权利要求3所述的计算机实现的方法,还包括将所述激活数据集存储在所述硬件加速器的本地存储器设备中,用于结合所述卷积运算进行处理;并且
其中,执行所述卷积运算包括将所述滤波器内核移动到所述硬件加速器的本地存储器设备内的特定位置的起始地址,以便于处理所述激活数据集的所述一部分和所述填充数据。
6.根据权利要求5所述的计算机实现的方法,其中,由所述硬件加速器生成所述填充数据包括消除将所述填充数据从外部数据储存器传输到所述硬件加速器的本地存储器设备的需要。
7.根据权利要求1所述的计算机实现的方法,还包括:
在所述硬件加速器处接收附加参数,所述附加参数指示当在所述卷积运算期间滑过附加位置时,所述滤波器内核不超过所述激活数据集的任何边界;和
至少部分地基于所述附加参数,确定所述硬件加速器将抑制结合所述滤波器内核的附加位置生成附加填充数据;并且
其中,执行所述卷积运算包括当所述滤波器内核滑过所述附加位置时,处理所述激活数据集的附加部分,而没有任何填充数据。
8.根据权利要求7所述的计算机实现的方法,还包括在所述硬件加速器处接收指示所述附加位置的起始地址的另一个参数;并且
其中,执行所述卷积运算包括至少部分地基于所述另一个参数,在所述附加位置处将所述滤波器内核应用于所述激活数据集的所述附加部分。
9.根据权利要求1所述的计算机实现的方法,其中,所述参数包括以下中的至少一项:
计数,其指示当在所述卷积运算期间滑过所述特定位置时,所述滤波器内核超过的所述激活数据集的边界数量;
一个或更多个边指示符,其标识当在所述卷积运算期间滑过所述特定位置时,所述滤波器内核超过所述激活数据集的哪些边界;或者
深度指示符,其标识将由所述硬件加速器结合所述滤波器内核的特定位置在所述激活数据集的边界处生成的填充数据的深度。
10.根据权利要求1所述的计算机实现的方法,其中,执行所述卷积运算包括通过在所述激活数据集上滑动所述滤波器内核来生成输出数据集。
11.根据权利要求10所述的计算机实现的方法,其中,所述卷积运算包括相同卷积运算,其中:
所述激活数据集包含特定数量的维度;和
所述输出数据集也包含所述特定数量的维度。
12.根据权利要求1所述的计算机实现的方法,还包括提供在所述硬件加速器外部的物理处理器上运行的软件组件;并且
其中,执行所述卷积运算包括:
在所述卷积运算期间,由所述硬件加速器引导所述滤波器内核滑过所述激活数据集的第一维度;和
在所述卷积运算期间,由所述软件组件引导所述滤波器内核滑过所述激活数据集的第二维度。
13.根据权利要求1所述的计算机实现的方法,还包括:
提供在所述硬件加速器外部的物理处理器上运行的软件组件;
由所述软件组件选择用于在所述激活数据集的边界处生成所述填充数据的填充值;和
由所述软件组件指示所述硬件加速器使用由所述软件组件选择的所述填充值来生成所述填充数据。
14.一种系统,包括:
物理处理器,其执行软件组件;和
硬件加速器,其支持人工神经网络(ANN),并且通信地耦合到由所述物理处理器执行的软件组件,其中,所述硬件加速器:
接收将经由所述ANN的滤波器内核进行卷积运算的激活数据集;
从所述软件组件接收参数,所述参数指示当在所述卷积运算期间滑过特定位置时,所述滤波器内核超过所述激活数据集的至少一个边界;
至少部分地基于所述参数,确定所述硬件加速器将结合所述滤波器内核的特定位置在所述激活数据集的边界处生成填充数据;和
当所述滤波器内核滑过所述特定位置时,通过处理所述激活数据集的一部分和所述填充数据来执行所述卷积运算。
15.根据权利要求14所述的系统,其中,所述硬件加速器:
接收指示所述特定位置的起始地址的附加参数;和
至少部分地基于所述附加参数,在所述特定位置处将所述滤波器内核应用于所述激活数据集的所述一部分和所述填充数据。
16.根据权利要求15所述的系统,其中,在所述硬件加速器处接收的所述激活数据集没有填充数据。
17.根据权利要求16所述的系统,其中,所述硬件加速器结合所述滤波器内核的所述特定位置在所述激活数据集的边界处生成所述填充数据。
18.根据权利要求16所述的系统,其中,所述硬件加速器:
将所述激活数据集存储在本地存储器设备中,用于结合所述卷积运算进行处理;和
将所述滤波器内核移动到所述本地存储器设备内的特定位置的起始地址,以便于处理所述激活数据集的所述一部分和所述填充数据。
19.根据权利要求18所述的系统,其中,通过生成所述填充数据,所述硬件加速器消除了将所述填充数据从外部数据储存器传输到所述本地存储器设备的需要。
20.一种包括计算机可读指令的非暂时性计算机可读介质,当由计算设备的至少一个处理器执行时,所述计算机可读指令使得所述计算设备:
在支持人工神经网络(ANN)的硬件加速器处接收激活数据集,所述激活数据集将经由所述ANN的滤波器内核进行卷积运算;
在所述硬件加速器处接收参数,所述参数指示当在所述卷积运算期间滑过特定位置时,所述滤波器内核超过所述激活数据集的至少一个边界;
至少部分地基于所述参数,确定所述硬件加速器将结合所述滤波器内核的所述特定位置在所述激活数据集的边界处生成填充数据;和
当所述滤波器内核滑过所述特定位置时,在所述硬件加速器处通过处理所述激活数据集的一部分和所述填充数据来执行所述卷积运算。
CN202011520382.2A 2019-12-20 2020-12-21 减少人工神经网络中卷积运算期间数据移动的系统和方法 Pending CN113011554A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/722,636 US11699081B2 (en) 2019-12-20 2019-12-20 Systems and methods for reducing data movement during convolution operations in artificial neural networks
US16/722,636 2019-12-20

Publications (1)

Publication Number Publication Date
CN113011554A true CN113011554A (zh) 2021-06-22

Family

ID=73646148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011520382.2A Pending CN113011554A (zh) 2019-12-20 2020-12-21 减少人工神经网络中卷积运算期间数据移动的系统和方法

Country Status (3)

Country Link
US (1) US11699081B2 (zh)
EP (1) EP3862929A1 (zh)
CN (1) CN113011554A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114428761A (zh) * 2022-01-18 2022-05-03 成都信息工程大学 一种基于fpga的神经网络编曲方法及装置
US11699081B2 (en) 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180129935A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
WO2019085709A1 (zh) * 2017-11-01 2019-05-09 腾讯科技(深圳)有限公司 一种应用于卷积神经网络的池化处理的方法及系统
EP3489862A1 (en) * 2017-11-28 2019-05-29 Nanjing Horizon Robotics Technology Co., Ltd. Method and apparatus for performing operation of convolutional layers in convolutional neural network
US20190188240A1 (en) * 2017-12-18 2019-06-20 International Business Machines Corporation Processor and memory transparent convolutional lowering and auto zero padding for deep neural network implementations
CN110443357A (zh) * 2019-08-07 2019-11-12 上海燧原智能科技有限公司 卷积神经网络计算优化方法、装置、计算机设备及介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5412394B2 (ja) * 2010-09-30 2014-02-12 オリンパス株式会社 標本観察装置
US20160379109A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
KR102631381B1 (ko) * 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
CN107832842B (zh) * 2017-11-28 2020-05-22 南京地平线机器人技术有限公司 针对折叠特征数据执行卷积运算的方法和装置
CN107844827B (zh) * 2017-11-28 2020-05-26 南京地平线机器人技术有限公司 执行卷积神经网络中的卷积层的运算的方法和装置
US11449729B2 (en) * 2018-11-08 2022-09-20 Arm Limited Efficient convolutional neural networks
US11699081B2 (en) 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180129935A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
WO2019085709A1 (zh) * 2017-11-01 2019-05-09 腾讯科技(深圳)有限公司 一种应用于卷积神经网络的池化处理的方法及系统
EP3489862A1 (en) * 2017-11-28 2019-05-29 Nanjing Horizon Robotics Technology Co., Ltd. Method and apparatus for performing operation of convolutional layers in convolutional neural network
US20190188240A1 (en) * 2017-12-18 2019-06-20 International Business Machines Corporation Processor and memory transparent convolutional lowering and auto zero padding for deep neural network implementations
CN110443357A (zh) * 2019-08-07 2019-11-12 上海燧原智能科技有限公司 卷积神经网络计算优化方法、装置、计算机设备及介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
(HIRAO, KATSUHIKO等: "Convolutional Neural Network based Inverse Tone Mapping for High Dynamic Range Display using LUCORE", 《2019 IEEE INTERNATIONAL CONFERENCE ON CONSUMER ELECTRONICS (ICCE)》 *
CHANG, AXM等: "Compiling Deep Learning Models for Custom Hardware Accelerators", 《HTTPS://WWW.ARXIV.ORG/ABS/1708.00117V2》, pages 1 *
YUN, INYONG等: "Part-Level Convolutional Neural Networks for Pedestrian Detection Using Saliency and Boundary Box Alignment", 《IEEE ACCESS》 *
肖扬: "基于FPGA的复合卷积神经网络算法加速设计", 《中国优秀硕士学位论文全文数据库》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11699081B2 (en) 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks
CN114428761A (zh) * 2022-01-18 2022-05-03 成都信息工程大学 一种基于fpga的神经网络编曲方法及装置

Also Published As

Publication number Publication date
US20210192359A1 (en) 2021-06-24
EP3862929A1 (en) 2021-08-11
US11699081B2 (en) 2023-07-11

Similar Documents

Publication Publication Date Title
KR102659997B1 (ko) 저전력 컨볼루션 신경망 추론 애플리케이션을 위한 메모리 대역폭 감소 기술
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
US11816559B2 (en) Dilated convolution using systolic array
US11954583B2 (en) Transposed convolution using systolic array
EP3757901A1 (en) Schedule-aware tensor distribution module
US11741350B2 (en) Efficient utilization of processing element array
EP3583575B1 (en) Image transformation for machine learning
CN111465943B (zh) 一种集成电路和用于神经网络处理的方法
US20190095790A1 (en) Method and apparatus for adapting parameters of neural network
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
CN113011554A (zh) 减少人工神经网络中卷积运算期间数据移动的系统和方法
US11599181B1 (en) Systems and methods for reducing power consumption of convolution operations of artificial neural networks
US11501145B1 (en) Memory operation for systolic array
JP7419574B2 (ja) 膨張畳み込み加速演算方法及び装置
US12079734B1 (en) Compilation time reduction for memory and compute bound neural networks
CN111860807A (zh) 分形计算装置、方法、集成电路及板卡
JP2022538759A (ja) 構成可能なニューラルネットワークカーネル
CN115204384A (zh) 用于机器学习的广义激活函数
CA3153073A1 (en) Detection and treatment of dermatological conditions
US11501147B1 (en) Systems and methods for handling padding regions in convolution operations
US20220366225A1 (en) Systems and methods for reducing power consumption in compute circuits
Alonso-Jordá et al. Performance Analysis of Convolution Algorithms for Deep Learning on Edge Processors
Teboulbi et al. Fpga-based SoC design for real-time facial point detection using deep convolutional neural networks with dynamic partial reconfiguration
US11842273B2 (en) Neural network processing
US20240046413A1 (en) Methods of batch-based dnn processing for efficient analytics

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
CB02 Change of applicant information

Address after: California, USA

Applicant after: Yuan platform Co.

Address before: California, USA

Applicant before: Facebook, Inc.

CB02 Change of applicant information