CN114730375A - 卷积神经网络中用于稀疏张量的灵活加速器 - Google Patents
卷积神经网络中用于稀疏张量的灵活加速器 Download PDFInfo
- Publication number
- CN114730375A CN114730375A CN202080081178.7A CN202080081178A CN114730375A CN 114730375 A CN114730375 A CN 114730375A CN 202080081178 A CN202080081178 A CN 202080081178A CN 114730375 A CN114730375 A CN 114730375A
- Authority
- CN
- China
- Prior art keywords
- sub
- feature map
- values
- sparse tensor
- memory
- 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
Links
Images
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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
-
- 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/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种装置,该装置包括:张量计算集群,该张量计算集群具有多个张量计算单元以处理机器学习应用程序中的多个子特征映射图;和张量存储器集群,该张量存储器集群具有多个张量特征映射图存储器单元以存储该多个子特征映射图。该装置还包括电路,该电路用于将输入特征映射图划分为该多个子特征映射图,使得该多个子特征映射图中的每个子特征映射图中的稀疏性满足预先确定的阈值,并且将该多个子特征映射图中的每个子特征映射图分派给该多个张量计算单元中的一个张量计算单元和该多个张量特征映射图存储器单元中的一个张量特征映射图存储器单元以用于并行处理。
Description
背景技术
申请人提供以下说明以帮助读者理解。所提供的信息或所引用的参考文献均不被承认是现有技术。
机器学习算法被广泛应用于诸如医学成像、计算机视觉、广告、游戏等领域。机器学习算法处理大量的输入数据。随着输入数据的量增加,处理大量输入数据所需的计算时间和计算资源也在增加。然而,当前使用的机制在机器学习应用程序中的配置方式和处理输入数据的方式是有限的。
发明内容
根据本公开的一些方面,公开了一种装置。该装置包括:张量计算集群,该张量计算集群具有多个张量计算单元以处理机器学习应用程序中的多个子特征映射图;张量存储器集群,该张量存储器集群具有多个张量特征映射图存储器单元以存储该多个子特征映射图;和电路,该电路用于将输入特征映射图划分为该多个子特征映射图,使得该多个子特征映射图中的每个子特征映射图中的稀疏性满足预先确定的阈值。该电路还将该多个子特征映射图中的每个子特征映射图分派给该多个张量计算单元中的一个张量计算单元和该多个张量特征映射图存储器单元中的一个张量特征映射图存储器单元以用于并行处理。
根据本公开的一些其他方面,公开了一种方法。该方法包括由机器学习应用程序中的加速器将输入特征映射图划分为多个子特征映射图,使得该多个子特征映射图中的每个子特征映射图中的稀疏性满足预先确定的阈值。该方法还包括:由该加速器将该多个子特征映射图中的每个子特征映射图分派给张量计算集群的多个张量计算单元中的一个张量计算单元,以并行处理该多个子特征映射图中的每个子特征映射图;由该加速器处理该多个子特征映射图中的在该多个张量计算单元中的被分派的张量计算单元中的每个子特征映射图,以从该多个张量计算单元中的每个张量计算单元生成输出子特征映射图;以及由该加速器组合来自该多个张量计算单元中的每个张量计算单元的输出子特征映射图,以生成针对该输入特征映射图的输出特征映射图。
根据本公开的其它方面,公开了一种在其上存储有计算机可读指令的非暂态计算机可读介质。这些计算机可读指令当由与机器学习应用程序中的加速器相关联的处理器执行时使该处理器:将输入特征映射图划分为多个子特征映射图,使得该多个子特征映射图中的每个子特征映射图包括基本上类似的稀疏性,并且将该多个子特征映射图中的每个子特征映射图分派给稀疏张量计算集群,以并行处理该多个子特征映射图中的每个子特征映射图。
根据本公开的一些其他方面,公开了另一种装置。该装置包括:用于基于稀疏性将输入特征映射图划分为多个子特征映射图的装置和用于将该多个子特征映射图中的每个子特征映射图分派给张量计算集群以并行处理该多个子特征映射图中的每个子特征映射图的装置。
前述发明内容仅是例示性的,并不旨在以任何方式进行限制。除了上述例示性方面、实施方案和特征之外,通过参考以下附图和具体实施方式,另外的方面、实施方案和特征将变得显而易见。
附图说明
图1是根据本公开的一些实施方案的计算系统的示例性框图。
图2是根据本公开的一些实施方案的图1的计算系统的加速器的示例性框图。
图3A和图3B是根据本公开的一些实施方案的将输入特征映射图转换成多个子特征映射图的示例。
图4是根据本公开的一些实施方案的图2的加速器的稀疏张量存储器集群的示例性框图。
图5是根据本公开的一些实施方案的图2的加速器的稀疏张量存储器集群的另一个示例性框图。
图6是根据本公开的一些实施方案的图4和图5的稀疏张量存储器集群的稀疏张量特征映射图存储器单元的示例性框图。
图7是根据本公开的一些实施方案的图4和图5的稀疏张量存储器集群的稀疏张量权重存储器的示例性框图。
图8是根据本公开的一些实施方案的图2的加速器的稀疏张量计算集群的示例性框图。
图9是根据本公开的一些实施方案的图2的加速器的稀疏张量计算集群的另一个示例性框图。
图10是根据本公开的一些实施方案的图8和图9的稀疏张量计算集群的稀疏张量计算单元的示例性框图。
图11是根据本公开的一些实施方案的处理图10的稀疏张量计算单元中的子特征映射图的示例。
图12是根据本公开的一些实施方案的概述用于处理图10的稀疏张量计算单元中的子特征映射图的操作的示例性流程图。
图13是根据本公开的一些实施方案的图8和图9的稀疏张量计算集群的稀疏张量计算单元的另一个示例。
图14是根据本公开的一些实施方案的图8和图9的稀疏张量计算集群的稀疏张量计算单元的又一个示例。
图15是根据本公开的一些实施方案的图8和图9的稀疏张量计算集群的稀疏张量计算单元的再一个示例。
图16是根据本公开的一些实施方案的概述用于在标准卷积操作或1×1完全连接的卷积操作中处理图13至图15的稀疏张量计算单元中的子特征映射图的操作的示例性流程图。
图17是根据本公开的一些实施方案的概述用于使用图2的加速器处理输入特征映射图的操作的示例性流程图。
图18A至图18D示出了根据本公开的一些实施方案的处理图13的稀疏张量计算单元中的子特征映射图的示例。
图19A至图19E示出了根据本公开的一些实施方案的处理图15的稀疏张量计算单元中的子特征映射图的示例。
图20A至图20B示出了根据本公开的一些实施方案的合并操作的示例。
结合附图,根据以下描述和所附权利要求,本公开的上述和其它特征将变得显而易见。应当理解,这些附图仅描绘了根据本公开的若干实施方案,并且因此不应被认为是对其范围的限制,通过使用附图,将更具体且更详细地描述本公开。
具体实施方式
在以下具体实施方式中,参考了形成该具体实施方式的一部分的附图。在附图中,除非上下文另外指明,否则类似的符号通常标识类似的部件。在具体实施方式、附图和权利要求中描述的例示性实施方案并非旨在为限制性的。在不脱离在此呈现的主题的实质或范围的情况下,可利用其它实施方案,并且可进行其它改变。将容易理解的是,如本文一般所述并且在图中示出的本公开的各方面可被布置、取代、组合和设计成广泛多种不同的配置,所有这些配置均被明确地设想并成为本公开的一部分。
随着神经网络在更广泛的场景中参与更复杂的处理任务,神经网络不断向更大、更深的架构发展。大型神经网络随着数据量的增加而增强了计算和存储器存取。具体地,每当需要处理的数据量增加时,神经网络中的突触和神经元的数量就会增加。例如,一些神经网络可具有超过六十万个神经元,而另一些神经网络可具有超过一百万个神经元。突触的数量可大得多,例如,一个神经网络中的突触的数量超过六千万个。卷积神经网络(“CNN”)是神经网络中的一种。具体地,CNN是使用卷积操作对输入(例如,图像)进行分类的一种深度神经网络。为了进行分类,CNN接收输入并向该输入分派权重和偏差以将该输入的一方面与该输入的另一方面区分开。在一些实施方案中,CNN可以包括用于接收输入和发送输出之间的处理的多个层。根据输入的尺寸和CNN中使用的层的数量,可能需要处理大量数据。
在加速器架构设计中,处理此类大量的数据给片外和片内存储器带宽带来了挑战。机制可用于减少要执行计算的数据量或减少计算时间。一种减少要计算的数据量或计算时间的此类机制可以包括经由量化的权重编码和缩小权重尺寸的熵编码。其他机制在电路级发挥作用,诸如使用较短的位宽运算符或近似计算。另一种减少计算时间或数据量的机制依靠稀疏性。稀疏性可确定给定数据中非零值的数量或百分比。基于稀疏性对神经网络中的突触和神经元进行修剪,可将需要计算的数据量减少十倍以上,而准确性损失可忽略不计。稀疏性可为静态的或动态的。静态稀疏性是预先知道的,并且从一组输入数据到另一组输入数据,可能都不会改变。权重中的稀疏性可被认为是静态稀疏性。例如,在对输入数据进行的计算开始之前,可以知道值为零或非零的权重。此外,从一组输入数据到下一组输入数据,值为零或非零的权重可保持不变。动态稀疏性是输入数据的输入特征映射图中的稀疏性。
具体地,可以从输入数据(例如,输入图像)生成一个或多个输入特征映射图。这些输入特征映射图中的每个输入特征映射图可与相关联的权重组合以执行分类处理。每个输入特征映射图可具有零值或非零值。给定输入特征映射图中的非零值的数量或百分比可确定该输入特征映射图的稀疏性。由于每个输入特征映射图可与另一个输入特征映射图不同,并且从一个输入特征映射图到另一个输入特征映射图,零值和非零值的位置可能会改变,因此输入特征映射图中的稀疏性是动态稀疏性。由于静态稀疏性在机器学习操作中更容易识别和考虑,因此减少要计算的数据量的许多机制仅依靠静态稀疏性。由动态稀疏性造成的不规则性阻止了许多机制充分利用计算并减少数据。
因此,本公开提供了将动态和随机稀疏性转化成更加结构化或更少结构化的稀疏性的机制,以减少要计算的数据量并减少计算时间。具体地,本公开提供了一种灵活加速器,该灵活加速器将输入特征映射图转换成多个输入子特征映射图,使得该多个子特征映射图中的每个子特征映射图具有类似量的稀疏性并且允许在利用稀疏性的同时独立处理该多个子特征映射图中的每个子特征映射图。
现在参见图1,其中示出了根据本公开的一些实施方案的计算系统100的示例性框图。计算系统100可以包括与存储器设备110相关联的主机设备105。主机设备105可被配置为接收来自一个或多个输入设备115的输入并向一个或多个输出设备120提供输出。主机设备105可被配置为分别经由适当接口125A、125B和125C与存储器设备110、输入设备115和输出设备120进行通信。计算系统100可在多种计算设备中实施,这些多种计算设备诸如计算机(例如,台式计算机、膝上型计算机、服务器、数据中心等)、平板电脑、个人数字助理、移动设备、可穿戴计算设备(诸如智能手表、其他手持式或便携式设备)或适于使用主机设备105执行操作的任何其他计算单元。
输入设备115可包括多种输入技术中的任一种,诸如键盘、触笔、触摸屏、鼠标、轨迹球、小键盘、麦克风、语音识别、运动识别、远程控制器、输入端口、一个或多个按钮、拨号盘、操纵杆、以及与主机设备105相关联并且允许外部源(诸如用户)将信息(例如,数据)键入主机设备中并且将指令发送到主机设备的任何其它输入外围设备。类似地,输出设备120可包括多种输出技术,诸如外部存储器、打印机、扬声器、显示器、麦克风、发光二极管、耳机、绘图仪、语音生成设备、视频设备、全球定位系统、以及被配置为从主机设备105接收信息(例如,数据)的任何其它输出外围设备。输入到主机设备105中和/或从主机设备输出的“数据”可以包括多种文本数据、图形数据、视频数据、图像数据、声音数据、位置数据、它们的组合或适于使用计算系统100处理的其他类型的模拟和/或数字数据中的任一种。
主机设备105可以包括一个或多个中央处理单元(“CPU”)内核或处理器130A-130N,该内核或处理器可以被配置为执行用于运行与主机设备相关联的一个或多个应用程序的指令。CPU内核130A-130N被示出为可以执行处理功能的集成电路的非限制性代表性示例,并且可用现场可编程门阵列(“FPGA”)、图形处理单元(“GPU”)、定制专用集成电路(“ASIC”)等来替换或与它们进行组合。在一些实施方案中,运行一个或多个应用程序所需的指令和数据可存储在存储器设备110内。主机设备105还可被配置为将运行一个或多个应用程序的结果存储在存储器设备110内。主机设备105还可以包括加速器135。加速器135可用于执行机器学习操作。图2中更详细地讨论了加速器135。尽管加速器135被示出为图1中的主机设备105的一部分,但在其他实施方案中,该加速器可与该主机设备分开并且通信地耦接(例如,通过总线或网络连接)到该主机设备。在这种情况下,加速器135也可通信地耦接到存储器设备110,成为存储器设备110的一部分,或者包括其自身单独的存储器设备。
为便于与存储器设备110通信,该存储器设备可以包括存储器控制器140或与该存储器控制器相关联。尽管存储器控制器140被示出为存储器设备110的一部分,但在一些实施方案中,该存储器控制器可反而成为主机设备105的一部分或计算系统100的另一个元件并且与该存储器设备操作地相关联。存储器控制器140可以被配置为从主机设备105(例如,加速器135)接收指令并且根据那些指令执行操作的逻辑块或电路。存储器设备110可以包括存储数据和指令的一个或多个存储器模块145。存储器模块145可为多种存储器类型(包括多种易失性存储器、非易失性存储器或它们的组合)中的任一种存储器类型。例如,在一些实施方案中,存储器模块145中的一个或多个存储器模块或其部分可以包括NAND闪存存储器内核。在其他实施方案中,存储器模块145中的一个或多个存储器模块或其部分可以包括NOR闪存存储器内核、静态随机存取存储器(SRAM)内核、动态随机存取存储器(DRAM)内核、磁阻式随机存取存储器(MRAM)内核、相变存储器(PCM)内核、电阻式随机存取存储器(ReRAM)内核、3D XPoint存储器内核、铁电随机存取存储器(FeRAM)内核,以及适于在存储器设备110内使用的其他类型的存储器内核。在一些实施方案中,存储器模块145中的一个或多个存储器模块或其部分可以被配置为其他类型的存储级存储器(“SCM”)。一般来讲,存储器模块145可以包括多种随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、硬盘驱动器、闪存驱动器、存储器带、云存储器或适于执行本文所述的操作的主存储器和/或辅助存储器的任何组合中的任一种。
应当理解,图1中示出和描述了计算系统100的仅一些部件。然而,计算系统100可包括其它部件,诸如各种电池和电源、联网接口、路由器、交换机、外部存储器系统、控制器等。一般来讲,计算系统100可包括执行本文所述的功能所需或被认为是期望的多种硬件、软件和/或固件部件中的任一种。类似地,主机设备105、输入设备115、输出设备120以及包括加速器135、存储器控制器140和存储器模块145的存储器设备110可以包括在执行本文所述的功能时被认为是必要的或期望的其他硬件、软件和/或固件部件。此外,在某些实施方案中,存储器设备110可集成主机设备的一些或全部部件,包括例如CPU内核130A-130N和/或加速器135。
现在转到图2,示出了根据本公开的一些实施方案的示例性加速器200。加速器200类似于图1的加速器135。因此,尽管未示出,但加速器200可与主机设备(例如,主机设备105)和存储器设备(例如,存储器设备110)相关联。加速器200可用于优化机器学习操作,例如在CNN中。尽管相对于CNN解释了加速器200,但在其他实施方案,加速器200也可用于其他类型的神经网络或机器学习应用程序中。一般来讲,加速器200可用于期望减少计算数据和计算时间的任何类型的应用程序(无论是机器学习还是其他应用程序)。
在一些实施方案中,加速器200可用于考虑分别在输入特征映射图和权重中的动态和静态稀疏性,并且基于动态和静态稀疏性在各种计算引擎之间分配计算。加速器200可(例如,从主机设备105)接收输入图像205,该输入图像将被执行一个或多个机器学习操作。应当理解,尽管输入图像205在本文中作为示例使用,但加速器200可用于处理其他类型的数据,包括视频、文本和可受益于被加速器处理的任何其他类型的数据。
输入图像205可由像素阵列表示。简单地作为示例并且不旨在以任何方式进行限制,比如输入图像205由1024×1024×3像素阵列表示。因此,输入图像205为1024像素高、1024像素宽和3种颜色(例如,红色、绿色、蓝色)深度。在一些实施方案中,可将1024×1024×3像素阵列切分为三个输入特征映射图,其中每个输入特征映射图表示一个颜色并且尺寸为1024×1024×1(本文也简称为1024×1024)。此外,每个输入特征映射图可以被表示为具有多个行和多个列的矩阵。每个行在X方向上(从左至右)延伸,而每个列在Y方向上(从上至下)延伸。输入特征映射图的每个像素可对应于矩阵的一个单元格(例如,其在一个行和一个列的交叉点处形成)。因此,1024×1024输入特征映射图可由具有1024个行和1024个列的矩阵表示,在每个行和每个列的交叉点处形成一个像素的一个单元格。
在一些实施方案中,输入图像205的输入特征映射图可由加速器200生成。例如,在一些实施方案中,划分块210可以被配置为从输入图像205生成输入特征映射图。在其他实施方案中,加速器200的特征映射图块(未示出)可接收输入图像205,从该输入图像生成输入特征映射图,并且将那些输入特征映射图发送到划分块210。在又其他实施方案中,输入图像205的输入特征映射图可在加速器200外部生成,并且可以将输入特征映射图而不是输入图像输入到加速器中。划分块210可以被配置在软件、硬件、固件或它们的组合中。
输入图像205的输入特征映射图中的每个输入特征映射图可在划分块210中被进一步细分为一个或多个子特征映射图。在下面的图3A和图3B中讨论了在划分块210中将输入特征映射图细分为一个或多个子特征映射图。每个子特征映射图在本文中还称为“输入张量”。通过将输入特征映射图切分为一个或多个子特征映射图,子特征映射图中的每个子特征映射图可被独立处理以生成输出子特征映射图并提高性能。然后可将来自子特征映射图中的每个子特征映射图的输出子特征映射图组合在一起以创建输出特征映射图。当图像205包括多个通道时,每个通道的输入特征映射图可被细分为一个或多个子特征映射图,这些子特征映射图的每个子特征映射图可被独立处理以生成输出子特征映射图,并且可组合该一个或多个子特征映射图中的每个子特征映射图的输出子特征映射图以生成通道输出特征映射图。然后可组合这些各种通道输出特征映射图以生成输出特征映射图。涉及多个通道的此类卷积操作在本文中称为“深度可分离卷积”。在一些实施方案中,可压缩输入特征映射图和/或子特征映射图中的每个子特征映射图以减少存储空间并进一步提高性能。提交于2019年12月23日的名称为“Flexible Accelerator For Sparse Tensors(FAST)inMachine Learning”的美国申请No.16/726,084中更详细地讨论了本公开通篇使用的压缩处理,该申请的全部内容通过引用方式并入本文。
划分块210可与DRAM 215相关联,该DRAM可以被配置为初始存储输入图像205的输入特征映射图,并且在将这些输入特征映射图细分为一个或多个子特征映射图后,存储该一个或多个子特征映射图中的每个子特征映射图。DRAM 215还可用于存储任何中间输出(例如,输出子特征映射图、通道输出特征映射图等)和/或输出特征映射图。在一些实施方案中,DRAM215还可以被配置为存储权重矩阵220。在一些实施方案中,DRAM 215还可存储各种训练模型、时间表和处理输入图像205所需的其他信息。此外,尽管在加速器200中仅示出了DRAM 215,但在一些实施方案中,加速器可包括附加和/或其他类型的存储器。为了简单起见,在说明书中使用DRAM 215,但是针对各种实施方案设想了其他存储器替代物。例如,在一些实施方案中,加速器200可另外地或另选地包括SRAM、存储级存储器(诸如MRAM、ReRAM和/或闪存存储器)以存储输入特征映射图、该一个或多个子特征映射图、各种输出、训练模型、时间表和/或处理输入图像205所需的其他信息。当此类多个存储器设置在加速器200中时,在一些实施方案中,这些存储器可彼此互连并且被配置为彼此通信。在一些实施方案中,加速器200中的DRAM 215和任何其他存储器可为与主机设备(例如,主机设备105)相关联的存储器设备(例如,存储器设备110)的一部分,该加速器为该主机设备的一部分。在一些实施方案中,加速器200中的DRAM 215和任何其他存储器中的一者或多者可与存储器设备(例如,存储器设备110)分开。
除了输入图像205之外,加速器200还(例如,从主机设备105)接收权重矩阵220。权重矩阵220可以包括要应用于子特征映射图中的每个子特征映射图的权重或过滤器。权重矩阵220在本文中也称为核矩阵或过滤器矩阵。权重矩阵220可以包括至少一个行和至少一个列,在行和列的交叉点处形成单元格。权重矩阵220可用于对输入图像205执行卷积操作。在一些实施方案中,类似于输入特征映射图,权重矩阵220也可被细分为一个或多个子权重映射图。在一些实施方案中,类似于输入特征映射图/子特征映射图,也可压缩权重矩阵220和/或子权重映射图。在一些实施方案中,权重矩阵220可由调度引擎225接收。在其他实施方案中,权重矩阵220可由划分块210或由加速器200的另一个部件接收。此外,如果权重矩阵220被细分为子权重映射图和/或被压缩,则在一些实施方案中,这些过程可在调度引擎225内发生。在其他实施方案中,这些过程可在划分块210中、在加速器200中专用于权重矩阵220的单独划分块中和/或加速器外部发生。权重矩阵220和/或子权重映射图可存储在DRAM 215、调度引擎225或加速器200的任何其他存储器内。
调度引擎225被配置为执行稀疏性分析,并且在一些实施方案中,基于稀疏性将输入特征映射图中的每个输入特征映射图分派给计算单元。如本文所用,“稀疏性”是指给定输入数据中非零值的数量或百分比。在一些实施方案中,非零值多于零值的输入特征映射图为较不稀疏的输入特征映射图或密集输入特征映射图,而零值多于非零值的输入特征映射图为稀疏输入特征映射图。在其他实施方案中,稀疏输入特征映射图可被限定为至少具有一定百分比的零值(例如,80%),并且密集输入特征映射图可具有少于非零值的零值(例如,非零值:零值=60:40)。更一般地,稀疏输入特征映射图比密集输入特征映射图具有更多的零值。因此,为了执行稀疏性分析,调度引擎225可确定输入特征映射图中零值或非零值的数量或百分比。此外,调度引擎225可将稀疏输入特征映射图分派或分配给稀疏张量计算集群230以用于处理。因此,稀疏张量计算集群230被配置为处理具有较高稀疏性(例如,零值的数量或百分比高于阈值,或者换句话说,零值多于非零值)的输入特征映射图。下文更详细地讨论了稀疏张量计算集群230。
在一些实施方案中,加速器200还可以包括密集张量计算集群(图2中未示出)和/或向量加速器(图2中也未示出)。如果提供了,则密集张量计算集群可以被配置为处理具有较低稀疏性的特征映射图(例如,密集输入特征映射图或其中零值的数量或百分比低于阈值,或者换句话说,非零值多于零值的输入特征映射图),并且向量加速器可用于处理无法由密集张量计算集群或稀疏张量计算集群230处理的输入特征映射图。例如,在提供了密集张量计算集群和/或向量加速器的一些实施方案中,该密集张量计算集群和稀疏张量计算集群230可配置为具有该密集张量计算集群和稀疏张量计算集群可能够分别执行的限定的或支持的操作列表。如果处理需要执行密集张量计算集群或稀疏张量计算集群230中的任一者都不支持的操作,则该操作可由向量加速器执行。在一些实施方案中,向量加速器可为基于RISC-V(诸如LACore)的开源向量加速器。在其他实施方案中,其他类型的合适的向量加速器可用于该向量加速器。在上述美国申请No.16/726,084中更详细地讨论了密集张量计算集群和向量加速器,该申请的全部内容同样通过引用方式并入本文。
调度引擎225可以包括存储计算机可读指令的存储器235,这些计算机可读指令可由处理器240执行以执行调度引擎225的操作。存储器235可为主机设备(例如,主机设备105)的存储器设备(例如,存储器设备110)的一部分,或者可从单独存储器提供,加速器200为该主机设备的一部分。此外,调度引擎225可被实施为软件、硬件、固件或它们的组合。处理器240可为主机设备105的CPU内核130A-130N的一部分或可类似于这些CPU内核,或者在加速器为存储器设备110的一部分的情况下,可为该存储器设备的处理器或控制器的一部分。
为了在稀疏张量计算集群230中处理输入特征映射图,加速器200还可以包括直接存储器存取控制器245,该直接存储器存取控制器被配置为在调度引擎225或稀疏张量计算集群的最小干预下将子特征映射图从DRAM 215传送到稀疏张量存储器集群250。下文也更详细地讨论了稀疏张量存储器集群250。应注意,虽然将直接存储器存取用作说明的示例,但可使用其他类型的存储器存取协议/方法,包括跨通信总线和存储器构架的存储器存取。
应当理解,图2中仅示出了加速器200的一些部件。加速器200可以包括在执行本文所述的操作时可能需要的或被认为是期望的其他或附加部件。
转到图3A和图3B,示出了根据本公开的一些实施方案的在划分块210中将输入特征映射图切分为一个或多个子特征映射图或输入张量的示例。具体地,为稀疏输入特征映射图并且已被指定为在稀疏张量计算集群230中处理的输入特征映射图可被细分为一个或多个子特征映射图。具体地,每个通道的每个输入特征映射图可被切分为“M”个子特征映射图。“M”取决于在稀疏张量计算集群230内提供的稀疏张量计算单元的数量和/或稀疏张量存储器集群250中的稀疏张量特征映射图存储器单元的数量。例如,对于稀疏张量计算集群230中的五个稀疏张量计算单元,每个通道的每个输入特征映射图可被切分为五个子特征映射图。通过将每个输入特征映射图切分为与稀疏张量计算集群230中的“M”个稀疏张量计算单元对应的“M”个子特征映射图,可在“M”个稀疏张量计算单元中的一个稀疏张量计算单元中独立处理“M”个子特征映射图中的每个子特征映射图,以提高性能并减少计算时间。
在一些实施方案中,“M”个子特征映射图中的每个子特征映射图可为具有与相邻子特征映射图重叠的(k-1个,作为示例)行和(k-1个,作为示例)列的矩阵,其中(k×k)为权重矩阵220的尺寸。通过将一个子特征映射图的行和列与相邻子特征映射图重叠,可在稀疏张量计算集群230中独立处理每个子特征映射图,并且可将子特征映射图中的每个子特征映射图的输出子特征映射图组合在一起而不需要“M”个子特征映射图之间的任何集群内通信,以创建输出特征映射图。在其他实施方案中,“M”个子特征映射图可不具有重叠的行和/或列。在不重叠的情况下,可能需要组合来自相邻子特征映射图的中间结果。在一些实施方案中,在核尺寸为1×1的情况下,可能不需要相邻子特征映射图的重叠的行和/或列。
可基于稀疏性将每个输入特征映射图切分为“M”个子特征映射图,并且具体地,以将输入特征映射图中动态性质的稀疏性转换成接近静态稀疏性。简单地作为示例并且不意在以任何方式进行限制,比如输入图像205的特定通道的输入特征映射图的尺寸为512×512(例如,512个行和512个列),并且稀疏张量计算集群230中的稀疏张量计算单元的数量为16(换句话说,“M”=16)。因此,可以将512×512输入特征映射图切分为16个子特征映射图,其中每个子特征映射图被分派给稀疏张量计算集群230的16个稀疏张量计算单元中的一个稀疏张量计算单元。为了创建16个子特征映射图,初始可将512×512输入特征映射图切分为16个尺寸相等或尺寸大致相等的划分区,使得每个划分区具有多个行和多个列。
例如,图3A示出了将512×512输入特征映射图切分为16个子特征映射图(例如,一般由单元格1至单元格16表示)之后的示例性表300。因此,512×512输入特征映射图的16个划分区中的每个划分区的尺寸可为32×32(例如,32个行和32个列)。表300中的每个单元格对应于输入特征映射图的一个32×32划分区。图3A中每个单元格中的括号中的值指示特定单元格中非零值的百分比。因此,例如,表300的单元格1对应于第一划分区(例如,输入特征映射图的行1到行32和列1到列32)并且包括40%非零值(并且因此,60%零值),单元格2对应于第二划分区(例如,行1到行32和列33到列64)并且包括60%非零值(并且因此,40%零值),依此类推。单元格5对应于第五划分区(输入特征映射图的行33到行64和列1到列32)并且包括51%非零值,依此类推。在图3A的示例中,16个子特征映射图的行和列中没有重叠。然而,如上文所讨论的,在一些实施方案中,子特征映射图中的至少一些子特征映射图可具有与相邻子特征映射图重叠的行和/或列。在这种情况下,子特征映射图的数量可不同于图3A的示例中的16个。
可重组表300的初始划分区,使得每个划分区包括相同或基本上类似的数量或百分比的非零值和/或零值。在一些实施方案中,可预先确定非零值(或零值)的百分比差值,使得任何两个给定划分区在非零值方面可不具有大于该预先确定的百分比差值的百分比差值。作为示例,如果任何两个给定划分区之间的非零值百分比的预先确定的百分比差值为3%,则可重组图3A的初始划分区,使得每个划分区具有大致相等数量的非零值,两个划分区的非零值数量的差值不大于3%。因此,参考图3B,另一个表305示出了如何重组来自表300的单元格。例如,表300中的单元格1具有40%非零值,而表300中的单元格2具有60%非零值。因此,表300中的单元格1和单元格2之间的非零值的百分比差值大于预先确定的百分比差值3%。因此,可通过将列从单元格2分配给单元格1来如表305中所示重组单元格1和单元格2。例如,可将来自单元格2的三个列分配给单元格1,使得单元格1和单元格2中的每个单元格具有约50%非零值,从而使那些单元格中的非零值的数量相等。
重组后,单元格1可具有32个行和35个列,并且因此尺寸为32×35,如表305中所示,而不是表300中所示尺寸为32×32。类似地,组织后,单元格2可具有32个行和29个列,如表305中所示。因此,单元格1和单元格2具有不同的尺寸,如表305中所示。尽管仅从一个相邻单元格分配3个列给单元格1,但在一些实施方案中,可从多个相邻单元格分配行/列给单元格1。例如,在一些实施方案中,可从单元格2分配2个列并从单元格5分配1个行给单元格1。从一个或多个单元格分配给特定单元格的行的数量和/或列的数量可取决于特定行和/或列中存在的非零值(或零值)的数量和需要重新分配以满足预先确定的百分比差值的非零值(或零值)的数量。同样地,表300中的其他单元格可通过从一个或多个相邻单元格分配一个或多个行和/或一个或多个列直到满足预先确定的差值来平衡,如表305中所示。
通过重组表300中所示的初始划分区,可平衡各种初始划分区中的非零值的数量以平衡稀疏张量计算集群230中的处理。表305中的每个单元格对应于一个子特征映射图或一个输入张量,可将该子特征映射图或输入张量分派给稀疏张量存储器集群250的一个稀疏张量特征映射图存储器单元和稀疏张量计算集群230的一个稀疏张量计算单元。尽管图3A和图3B已经被解释为在单个步骤中从表300的初始划分区变换到表305的最终划分区,但在其他实施方案中,可能需要将行/列重新分配给相邻单元格/从相邻单元格重新分配行/列的多次迭代以实现预先确定的百分比差值。此外,尽管已经相对于非零值的预先确定的百分比差值解释了图3A和图3B,但在其他实施方案中,可使用不同的度量。例如,在一些实施方案中,可使用零值的百分比而不是非零值的百分比。类似地,在一些实施方案中,可使用零值或非零值的数量而不是零值或非零值的百分比。在又其他实施方案中,可使用除“数量”以外的度量。图3B的子特征映射图中的每个子特征映射图可存储在DRAM 215内。
参考图4,示出了根据本公开的一些实施方案的稀疏张量存储器集群400的示例。稀疏张量存储器集群400类似于图2的稀疏张量存储器集群250。稀疏张量存储器集群400包括稀疏张量特征映射图存储器405和稀疏张量权重存储器410。稀疏张量特征映射图存储器405被配置为存储从DRAM 215和直接存储器存取控制器245所接收到的子特征映射图。稀疏张量特征映射图存储器405还被配置为存储从稀疏张量计算集群230所接收到的各种输出。稀疏张量特征映射图存储器405包括多个稀疏张量特征映射图存储器单元415A-415M。多个稀疏张量特征映射图存储器单元415A-415M的数量可以取决于可能需要并行处理的子特征映射图的指定数量。多个稀疏张量特征映射图存储器单元415A-415M中的每个稀疏张量特征映射图存储器单元独立于其他稀疏张量特征映射图存储器单元,并且可以被配置为独立于其他稀疏张量特征映射图存储器单元存储至少一个子特征映射图。
因此,在一些实施方案中,多个稀疏张量特征映射图存储器单元415A-415M未被配置为与该多个稀疏张量特征映射图存储器单元中的其他稀疏张量特征映射图存储器单元共享存储在其中的数据。此外,该多个稀疏张量特征映射图存储器单元415A-415M中的每个稀疏张量特征映射图存储器单元被配置为将存储在其中的子特征映射图发送到稀疏张量计算集群(例如,稀疏张量计算集群230)的稀疏张量计算单元中的对应稀疏张量计算单元。例如,在一些实施方案中,稀疏张量特征映射图存储器单元#i可以被配置为将存储在其中的输入张量发送到稀疏张量计算单元#i,如下文进一步所讨论的。特定稀疏张量特征映射图存储器单元和稀疏张量计算单元之间的这种一一对应在本文中称为“静态结合”。因此,在一些实施方案中,稀疏张量特征映射图存储器405中的多个稀疏张量特征映射图存储器单元415A-415M的数量与稀疏张量计算集群(例如,稀疏张量计算集群230)中的稀疏张量计算单元的数量相同。
此外,多个稀疏张量特征映射图存储器单元415A-415M中的每个稀疏张量特征映射图存储器单元可以分别经由双向总线420A-420M连接,以经由直接存储器存取控制器245从DRAM 215接收子特征映射图,并且以经由该直接存储器存取控制器将从稀疏张量计算集群230所接收到的输出发送回DRAM。类似地,多个稀疏张量特征映射图存储器单元415A-415M中的每个稀疏张量特征映射图存储器单元可以分别经由双向总线425A-425M连接到稀疏张量计算集群(例如,稀疏张量计算集群230)的稀疏张量计算单元中的相关联稀疏张量计算单元,以将存储在其中的子特征映射图发送到该稀疏张量计算集群并且以接收从该稀疏张量计算集群返回的输出。
因此,例如,稀疏张量特征映射图存储器单元415A可以经由直接存储器存取控制器245和总线420A从DRAM 215接收子特征映射图用于存储,并且经由总线425A将该子特征映射图发送到稀疏张量计算集群(例如,稀疏张量计算集群230)的稀疏张量计算单元中的相关联稀疏张量计算单元用于处理。类似地,稀疏张量特征映射图存储器单元415A可以经由总线425A从稀疏张量计算集群(例如,稀疏张量计算集群230)接收输出(例如,处理子特征映射图所得的结果)用于存储,并且经由直接存储器存取控制器245和总线420A将该输出发送到DRAM 215。稀疏张量特征映射图存储器单元415B-415M可以发挥类似于稀疏张量特征映射图存储器单元415A的功能。
在一些实施方案中,多个稀疏张量特征映射图存储器单元415A-415M中的每个稀疏张量特征映射图存储器单元还可以被配置为存储被存储在其中的子特征映射图的索引值。除了接收子特征映射图之外,多个稀疏张量特征映射图存储器单元415A-415M中的每个稀疏张量特征映射图存储器单元还可以接收与来自DRAM 215的子特征映射图相关联的索引值。例如,如果稀疏张量特征映射图存储器单元415A从DRAM 215接收到子特征映射图A,则该稀疏张量特征映射图存储器单元还可以接收与子特征映射图A对应的索引值。稀疏张量特征映射图存储器单元415A然后可以将子特征映射图A的索引值与子特征映射图A一起发送到稀疏张量计算集群(例如,稀疏张量计算集群230)。这些索引值体现了输入特征映射图中的特定子特征映射图的行编号和列编号。例如,索引值(X,Y)是指输入特征映射图中的子特征映射图的行编号X和列编号Y。
稀疏张量权重存储器410可以被配置为存储将被应用于存储在稀疏张量特征映射图存储器单元415A-415M内的子特征映射图的权重。因此,稀疏张量权重存储器410可以经由单向总线430连接到DRAM 215和直接存储器存取控制器245以接收权重,并且经由总线435连接到稀疏张量计算集群(例如,稀疏张量计算集群230)用于将这些权重发送到该稀疏张量计算集群。由于稀疏张量权重存储器410不需要接收从该稀疏张量计算集群返回的任何结果并且不需要将任何结果发送回DRAM 215,因此总线430和总线435可以是被配置为在单个方向上发送数据的单向总线。在其他实施方案中,总线430和/或总线435可以是双向的,类似于双向总线420A-420M和/或双向总线425A-425M。
转到图5,示出了根据本公开的一些实施方案的稀疏张量存储器集群500的示例。稀疏张量存储器集群500类似于图2的稀疏张量存储器集群250。稀疏张量存储器集群500也基本上类似于稀疏张量存储器集群400。例如,类似于稀疏张量存储器集群400,稀疏张量存储器集群500包括稀疏张量特征映射图存储器505和稀疏张量权重存储器510。同样类似于稀疏张量特征映射图存储器405,稀疏张量特征映射图存储器505包括经由双向总线520A-520M连接到DRAM 215和直接存储器存取控制器245的多个稀疏张量特征映射图存储器单元515A-515M。然而,不同于稀疏张量特征映射图存储器405(其中多个稀疏张量特征映射图存储器单元515A-515M中的每个稀疏张量特征映射图存储器单元是独立的,不与该多个稀疏张量特征映射图存储器单元中的其他稀疏张量特征映射图存储器单元共享存储在其中的数据,并且将存储在其中的数据发送到稀疏张量计算单元中的对应稀疏张量计算单元),稀疏张量特征映射图存储器505的多个稀疏张量特征映射图存储器单元515A-515M彼此互连,并且经由存储器互连器525互连到其他稀疏张量计算单元。
此外,在一些实施方案中,存储器互连器525可以被配置为覆盖上文所讨论的静态结合。例如,在一些实施方案中,存储器互连器525可以使稀疏张量特征映射图存储器单元#i能够根据存储器互连器的配置与稀疏张量计算单元#1-M(“M”是相关联稀疏张量计算集群中的稀疏张量计算单元的数量)进行通信。在一些实施方案中,存储器互连器525可以是2×2开关,该开关使稀疏张量特征映射图存储器单元#i能够与稀疏张量计算单元#i或稀疏张量计算单元#i+1进行通信。在其他实施方案中,存储器互连器525可以是允许稀疏张量特征映射图存储器单元#i与稀疏张量计算单元#1-M中的每个稀疏张量计算单元进行通信的多级互连,诸如网状网络或Benes网络。在又其他实施方案中,存储器互连器525可以其他方式被配置为允许稀疏张量特征映射图存储器单元#i与除了稀疏张量计算单元#i之外的一个或多个稀疏张量计算单元进行通信。类似地,在一些实施方案中,存储器互连器525可以使多个稀疏张量特征映射图存储器单元515A-515M中的特定稀疏张量特征映射图存储器单元能够与该多个稀疏张量特征映射图存储器单元中的其他稀疏张量特征映射图存储器单元中的一个或多个稀疏张量特征映射图存储器单元互连。例如,根据存储器互连器525的配置,稀疏张量特征映射图存储器单元#i可以与稀疏张量特征映射图存储器单元#(i+1)-M中的一个或多个稀疏特征映射图存储器单元互连。
多个稀疏张量特征映射图存储器单元515A-515M中的每个稀疏张量特征映射图存储器单元可以经由双向总线530A-530M连接到存储器互连器525。因此,多个稀疏张量特征映射图存储器单元515A-515M中的每个稀疏张量特征映射图存储器单元可以被配置为将存储在其中的子特征映射图(和对应的索引值)发送到存储器互连器525,并且经由其双向总线530A-530M中的相应双向总线从该存储器互连器接收子特征映射图(例如,其存储在另一个稀疏张量特征映射图存储器单元中)或输出。类似地,存储器互连器525可以经由双向总线535A-535M连接到稀疏张量计算集群(例如,稀疏张量计算集群230)以将子特征映射图(和索引值)发送到该稀疏张量计算集群并且从该稀疏张量计算集群接收输出。通过使用存储器互连器525,可以增加在多个稀疏张量特征映射图存储器单元515A-515M内存储信息的灵活性,并且可以覆盖稀疏张量存储器集群400的静态结合。
与稀疏张量权重存储器410类似地配置稀疏张量权重存储器510。因此,稀疏张量权重存储器510可以被配置为存储将被应用于存储在稀疏张量特征映射图存储器单元515A-515M内的子特征映射图的权重。此外,稀疏张量权重存储器510可以经由单向总线540连接到DRAM 215和直接存储器存取控制器245以接收权重,并且经由总线545连接到稀疏张量计算集群(例如,稀疏张量计算集群230)用于将这些权重发送到该稀疏张量计算集群。在其他实施方案中,总线540和/或总线545可以是双向的。
参考图6,示出了根据本公开的一些实施方案的示例性稀疏张量特征映射图存储器单元600。稀疏张量特征映射图存储器单元600类似于多个稀疏张量特征映射图存储器单元415A-415M和多个稀疏张量特征映射图存储器单元515A-515M中的每个稀疏张量特征映射图存储器单元。稀疏张量特征映射图存储器单元600包括写入开关605、读取开关610、第一组缓冲器615和第二组缓冲器620。写入开关605被配置为将从DRAM 215(或在互连的情况下从另一个稀疏张量特征映射图存储器单元)所接收到的子特征映射图写入第一组缓冲器615和/或第二组缓冲器620。写入开关605还被配置为将从稀疏张量计算集群(例如,稀疏张量计算集群230)所接收到的输出(例如,输出子特征映射图)写入第一组缓冲器615和/或第二组缓冲器620。在一些实施方案中,写入开关605可以是被配置用于双缓冲控制的2×2开关,以从两个源接收数据并且将该数据写入两组缓冲器(例如,第一组缓冲器615和第二组缓冲器620)。在其他实施方案中,可以其他方式配置写入开关605。
读取开关610可以被配置为读取存储在第一组缓冲器615和第二组缓冲器620内的数据。例如,读取开关610可以读取第一组缓冲器615和/或第二组缓冲器620中的由写入开关605写入的数据,以将所读取的数据(经由直接存储器存取控制器245)发送到DRAM 215。类似地,读取开关610可以读取第一组缓冲器615和/或第二组缓冲器620中的由写入开关605写入的数据,以将所读取的数据发送到稀疏张量计算集群(并且特别是稀疏张量计算集群的稀疏张量计算单元),该稀疏张量计算集群与稀疏张量特征映射图存储器单元600相关联。例如,写入开关605可以从DRAM 215接收子特征映射图(和对应的索引值),并且将该子特征映射图(和索引值)存储在第一组缓冲器615和/或第二组缓冲器620内。读取开关610然后可以从第一组缓冲器615和/或第二组缓冲器620读取该子特征映射图(和索引值),并且将所读取的数据发送到该稀疏张量计算集群。类似地,写入开关605可以从该稀疏张量计算集群接收输出子特征映射图,并且将该输出子特征映射图写入第一组缓冲器615和/或第二组缓冲器620内。读取开关610可以从第一组缓冲器615和/或第二组缓冲器620读取输出,并且将该输出张量传输到DRAM 215。
在一些实施方案中,读取开关610还可以是被配置用于双缓冲控制的2×2开关,以从两组缓冲器(例如,第一组缓冲器615和第二组缓冲器620)读取数据。在其他实施方案中,读取开关610可以是被配置为从单组缓冲器读取数据的1×1开关,或者该读取开关可以被配置为从多于两组缓冲器读取数据。
在一些实施方案中,第一组缓冲器615和第二组缓冲器620中的每组缓冲器可以包括两个缓冲器。例如,在一些实施方案中,第一组缓冲器615可以包括第一值缓冲器625和第一索引缓冲器630。类似地,在一些实施方案中,第二组缓冲器620可以包括第二值缓冲器635和第二索引缓冲器640。尽管在稀疏张量特征映射图存储器单元600中仅示出了两组缓冲器(例如,第一组缓冲器615和第二组缓冲器620),但在其他实施方案中,可以根据写入开关605和/或读取开关610的配置提供单组缓冲器或多于两组缓冲器。类似地,尽管第一组缓冲器615和第二组缓冲器620中的每组缓冲器被示出为各自具有两个缓冲器,但在其他实施方案中,第一组缓冲器和第二组缓冲器中的任一组或两组缓冲器可以各自包括多于两个缓冲器或可能包括单个缓冲器。
第一值缓冲器625和第二值缓冲器635可以被配置为存储子特征映射图或输出子特征映射图的数据值,同时第一索引缓冲器630和第二索引缓冲器640可以被配置为存储子特征映射图或输出子特征映射图的索引值。例如,在一些实施方案中,子特征映射图A的数据值可以存储在第一值缓冲器625内,并且该子特征映射图的索引值可以存储在第一索引缓冲器630内。在其他实施方案中,特定子特征映射图(或输出子特征映射图)的数据值可以存储在第一组缓冲器615或第二组缓冲器620中的一组缓冲器内,并且该特定子特征映射图(或输出子特征映射图)的索引值可以存储在第一组缓冲器或第二组缓冲器中的另一组缓冲器内。此外,在一些实施方案中,第一组缓冲器615可以被指定存储子特征映射图的数据值和索引值,而第二组缓冲器可以被配置为存储输出子特征映射图的数据值和索引值。在其他实施方案中,第一组缓冲器615和第二组缓冲器620中的每组缓冲器可以存储子特征映射图和输出子特征映射图两者(和它们对应的索引值)。因此,每个子特征映射图和每个输出子特征映射图可以与以下两个缓冲器相关联:用于存储该子特征映射图或该输出子特征映射图的数据值的值缓冲器(例如,第一值缓冲器625、第二值缓冲器635),以及用于存储该子特征映射图或该输出子特征映射图的索引值的索引缓冲器(例如,第一索引缓冲器630、第二索引缓冲器640)。
另外,尽管特定子特征映射图或输出子特征映射图的数据值和索引值被示出为存储在单独的缓冲器(例如,第一值缓冲器625、第二值缓冲器635、第一索引缓冲器630、第二索引缓冲器640)中,但在一些实施方案中,特定子特征映射图或输出子特征映射图的数据值和索引值可以存储在单个缓冲器内。换句话说,在一些实施方案中,第一值缓冲器625和第一索引缓冲器630可以合并在一起以形成单个缓冲器。类似地,在一些实施方案中,第二值缓冲器635和第二索引缓冲器640可以合并在一起以形成单个缓冲器。
第一组缓冲器615和第二组缓冲器620中的每个缓冲器可以是被配置为单个端口读取/写入寄存器文件、先进先出数据结构、一组寄存器等的SRAM存储器。通过将SRAM存储器用于第一组缓冲器615和第二组缓冲器620中的缓冲器,可以避免复杂且更昂贵的高速缓存结构。在其他实施方案中,第一组缓冲器615和/或第二组缓冲器620中的一个或多个缓冲器可以是其他类型的存储器。此外,第一组缓冲器615和第二组缓冲器620中的每个缓冲器可以被配置为具有能够容纳至少一个子特征映射图或至少一个输出子特征映射图的数据值和索引值的特定尺寸。
现在参考图7,示出了根据本公开的一些实施方案的示例性稀疏张量权重存储器700。稀疏张量权重存储器700类似于稀疏张量权重存储器410和稀疏张量权重存储器510。稀疏张量权重存储器700包括被配置为存储权重值的第一缓冲器705和用于存储来自权重矩阵220的权重值的索引值的第二缓冲器710。因此,第一缓冲器705类似于第一值缓冲器625和第二值缓冲器635,而第二缓冲器710类似于第一索引缓冲器630和第二索引缓冲器640。第一缓冲器705和第二缓冲器710可以接收和存储来自DRAM 215的权重值/索引值,并且将那些值发送到稀疏张量计算集群(例如,稀疏张量计算集群230)。在一些实施方案中,可以使用用于存储权重值的多于一个缓冲器和/或用于存储权重矩阵的索引值的多于一个缓冲器。
转到图8,示出了根据本公开的一些实施方案的示例性稀疏张量计算集群800。稀疏张量计算集群800类似于稀疏张量计算集群230。稀疏张量计算集群800包括多个稀疏张量计算单元805A-805M。多个稀疏张量计算单元805A-805M的数量可以取决于可能需要并行处理的子特征映射图的指定数量。例如,为了并行处理五个子特征映射图,可提供五个稀疏张量计算单元,其中每个稀疏张量计算单元被配置为一次处理一个子特征映射图。在一些实施方案中,多个稀疏张量计算单元805A-805M的数量与多个稀疏张量特征映射图存储器单元415A-415M或515A-515M的数量相同,其中稀疏张量计算单元#i与稀疏张量特征映射图存储器单元#i相关联。在其他实施方案中,可使用不同数量的多个稀疏张量计算单元805A-805M和多个稀疏张量特征映射图存储器单元415A-415M或515A-515M。
此外,在一些实施方案中,多个稀疏张量计算单元805A-805M中的每个稀疏张量计算单元可独立于其他稀疏张量计算单元,并且独立于该多个稀疏张量计算单元中的其他稀疏张量计算单元处理数据。多个稀疏张量计算单元805A-805M中的每个稀疏张量计算单元分别经由双向总线810A-810M从多个稀疏张量特征映射图存储器单元415A-415M或515A-515M接收子特征映射图(和对应的索引值)。双向总线810A-810M还可用于将输出子特征映射图发送回多个稀疏张量特征映射图存储器单元415A-415M或515A-515M。
例如,如果使用具有静态结合的稀疏张量存储器集群400,则在一些实施方案中,稀疏张量计算单元#i可被配置为经由双向总线#i接收存储在稀疏张量特征映射图存储器单元#i内的子特征映射图(和对应的索引值)。在此类实施方案中,稀疏张量计算单元#i还可被配置为经由双向总线#i将输出子特征映射图发送到稀疏张量特征映射图存储器单元#i。因此,存在特定稀疏张量计算单元和稀疏张量特征映射图存储器单元之间的一一对应。例如,在静态结合期间,稀疏张量计算单元805A可经由双向总线810A从稀疏张量特征映射图存储器单元415A接收子特征映射图(和对应的索引值),并且可经由双向总线810A将所得的输出子特征映射图发送回稀疏张量特征映射图存储器单元415A。
在其他实施方案中,如果使用稀疏张量存储器集群500,则稀疏张量计算单元#i仍然可与稀疏张量特征映射图存储器单元#i相关联。然而,根据存储器互连器525的配置,稀疏张量计算单元#i可经由双向总线810A-810M从稀疏张量特征映射图存储器单元#(i+1)-M接收子特征映射图。此外,根据存储器互连器525的配置,除了稀疏张量特征映射图存储器单元#i之外,稀疏张量计算单元#i还可能能够将输出子特征映射图发送到稀疏张量特征映射图存储器单元#(i+1)-M。
除了子特征映射图之外,多个稀疏张量计算单元805A-805M中的每个稀疏张量计算单元还经由单向总线815A-815M从稀疏张量权重存储器410或稀疏张量权重存储器510接收权重值(和对应的索引值)。在一些实施方案中,可经由单向总线815A-815M将相同的权重传输到多个稀疏张量计算单元805A-805M中的每个或至少一组稀疏张量计算单元。在其他实施方案中,可经由单向总线815A-815M将不同的权重传输到多个稀疏张量计算单元805A-805M中的每个或至少一组稀疏张量计算单元。此外,在一些实施方案中,可一次将单个权重传输到多个稀疏张量计算单元805A-805M,而在其他实施方案中,可一次将多于一个权重同时传输到该多个稀疏张量计算单元中的一个或多个稀疏张量计算单元。
可将通过处理子特征映射图获得的输出子特征映射图传输回稀疏张量特征映射图存储器单元中的对应稀疏张量特征映射图存储器单元。例如,在一些实施方案中,稀疏张量计算单元805A可从稀疏张量特征映射图存储器单元415A或515A接收子特征映射图,处理该子特征映射图以获得输出子特征映射图,并且将该输出子特征映射图发送回稀疏张量特征映射图存储器单元415A或515A。然后,稀疏张量特征映射图存储器单元415A或515A可基于配置将该输出子特征映射图发送到DRAM 215,发送到另一个稀疏张量特征映射图存储器单元,并且/或者发送到另一个稀疏张量计算单元。
转到图9,示出了根据本公开的一些实施方案的示例性稀疏张量计算集群900。稀疏张量计算集群900类似于稀疏张量计算集群230。稀疏张量计算集群900也基本上类似于稀疏张量计算集群800。例如,类似于稀疏张量计算集群800,稀疏张量计算集群900包括多个稀疏张量计算单元905A-905M,该多个稀疏张量计算单元经由双向总线910A-910M连接到稀疏张量特征映射图存储器单元415A-415M或515A-515M中的至少一个稀疏张量特征映射图存储器单元,如上文所讨论的。同样类似于稀疏张量计算集群800,多个稀疏张量计算单元905A-905M中的每个稀疏张量计算单元经由单向总线915A-915M连接到稀疏张量权重存储器410或510以接收权重。
然而,不同于稀疏张量计算集群800(其中多个稀疏张量计算单元805A-805M中的每个稀疏张量计算单元是独立的并且不与该多个稀疏张量计算单元中的其他稀疏张量计算单元共享正在其中处理的数据),稀疏张量计算集群900的多个稀疏张量计算单元905A-905M经由互连器920互连。互连器920可被配置为覆盖上文所讨论的静态结合。因此,在一些实施方案中,互连器920可使稀疏张量计算单元#i能够根据互连器的配置与稀疏张量计算单元#1-M中的其他稀疏张量计算单元进行通信。例如,在一些实施方案中,互连器920可以是2×2开关,该开关使稀疏张量计算单元#i能够与稀疏张量计算单元#i+1进行通信。在其他实施方案中,互连器920可以是允许稀疏张量计算单元#i与其他稀疏张量计算单元#1-M中的每个稀疏张量计算单元进行通信的多级互连,诸如网状网络或Benes网络。
多个稀疏张量计算单元905A-905M中的每个稀疏张量计算单元可经由双向总线925A-925M连接到互连器920。因此,多个稀疏张量计算单元905A-905M中的每个稀疏张量计算单元可被配置为经由互连器920和双向总线925A-925M将通过处理特定子特征映射图所产生的输出子特征映射图直接发送到该多个稀疏张量计算单元中的另一个稀疏张量计算单元,而不是首先将那些结果发送到稀疏张量存储器集群400或500。通过使用互连器525,可增加分派和处理子特征映射图的灵活性。
转到图10,示出了根据本公开的一些实施方案的稀疏张量计算单元1000的示例性框图。稀疏张量计算单元1000类似于多个稀疏张量计算单元805A-805M或905A-905M中的一个稀疏张量计算单元。稀疏张量计算单元1000被配置为执行可能需要在CNN中的卷积操作期间执行的各种机器学习操作,诸如乘法、加法等。因此,稀疏张量计算单元1000从稀疏张量存储器集群400或500接收子特征映射图(和对应的索引值)(如上文所讨论的),或者从另一个稀疏张量计算单元接收输出子特征映射图。稀疏张量计算单元1000还从稀疏张量权重存储器410或510接收权重值。
稀疏张量计算单元1000包括多个乘法器1005A-1005P,该多个乘法器中的每个乘法器被配置为将子特征映射图的数据值与权重矩阵220的权重值相乘。在一些实施方案中,该多个乘法器1005A-1005P的数量可取决于子特征映射图中单元格的数量。例如,对于具有跨两个行和两个列的总共四个单元格的2×2子特征映射图,在一些实施方案中,该多个乘法器1005A-1005P的数量可以是四个以使每个单元格中的数据值能够被独立处理。在其他实施方案中,多个乘法器1005A-1005P的数量可大于或小于子特征映射图中单元格的数量。
例如,在一些实施方案中,多个乘法器1005A-1005P的数量可取决于子特征映射图中具有非零值的单元格的数量。例如,在上述具有四个单元格的2×2子特征映射图中,如果仅三个单元格具有非零值,则多个乘法器1005A-1005P的数量可以是三个以并行处理三个非零值。另选地,多个乘法器1005A-1005P的数量仍然可以是四个,然而,四个乘法器中的仅三个乘法器可参与/用于处理三个非零值。在其他实施方案中,该多个乘法器1005A-1005P的数量可以是两个,并且三个非零值中的两个非零值可在第一轮中并行处理并且第三个非零值可在第一轮之后在第二轮中在两个乘法器中的一个乘法器中处理。
在一些实施方案中,可在每个时钟周期中使用所有P个乘法器单元。例如,如果多个乘法器1005A-1005P的数量为4,并且在2×2单元格中存在(将对其应用权重w1和w2的)3个非零值(d1,d2,d3)。则在时钟周期1处,可如下利用所有4个乘法器:d1*w1、d2*w1、d3*w1和d1*w2。一般来讲,如果P是由稀疏张量计算集群1000处理的子特征映射图中的数据值的总数,并且Q是子特征映射图中的非零值的数量,则在一些实施方案中(例如,在CONV2层中),可参与Q个乘法器并且可将max(1,天花板(P-Q)/Q)唯一权重传输到Q个乘法器以确保多个乘法器1005A-1005P的完全利用。例如,在1个唯一权重值的情况下,可将该唯一权重值传输到Q个乘法器中的每个乘法器。在2个唯一权重值的情况下,可将第一权重值传输到Q个乘法器,并且可将第二权重值传输到剩余数量的乘法器。在1×1CONV和FC层的情况下,可将P个权重值传输到P个乘法器。因此,在一些实施方案中,仅将子特征映射图的非零数据值输入到多个乘法器1005A-1005P中。由于与零数据值的乘积为零,因此不需要通过多个乘法器1005A-1005P处理输入子特征映射图中的任何零值,从而节省计算资源和时间。相反,在一些实施方案中,在输出特征映射图中填充非零值的计算结果之后,可以利用零值填充剩余索引值。
在一些实施方案中,多个乘法器1005A-1005P的数量可取决于权重矩阵220(在本文中也称为核矩阵或过滤器矩阵)的尺寸。该权重矩阵220还可以包括多个单元格,如上文所讨论的。例如,权重矩阵220可具有形成四个单元格的两个行和两个列。因此,提供或参与的多个乘法器1005A-1005P的数量可以是四个以并行处理四个数据值。因此,多个乘法器1005A-1005P的数量可取决于多种因素。
在一些实施方案中,可仅将非零权重值输入到多个乘法器1005A-1005P中。因此,例如,如果权重矩阵220具有四个单元格并且那些单元格中的仅三个单元格具有非零值,则可仅将三个权重值输入到多个乘法器1005A-1005P中。在一些实施方案中,非零权重值的数量可能不会影响多个乘法器1005A-1005P的数量,而是可能影响处理子特征映射图所需的迭代次数,如下文所讨论的。类似于零数据值,可计算与零权重值相乘的结果将在输出子特征映射图中所位于的位置的适当索引值。然后可以利用值零填充那些索引值。
此外,在一些实施方案中,稀疏张量计算集群(例如,稀疏张量计算集群800、900)中的每个稀疏张量计算单元(例如,多个稀疏张量计算单元805A-805M、905A-905M)可具有相同数量的乘法器(例如,多个乘法器1005A-1005P),而在其他实施方案中,稀疏张量计算集群的一个或多个稀疏张量计算单元中的乘法器的数量可能与该稀疏张量计算集群中的稀疏张量计算单元中的其他稀疏张量计算单元不同。
另外,多个乘法器1005A-1005P中的每个乘法器可基于将在其中处理的数据值和权重值的尺寸来确定尺寸。在一些实施方案中,多个乘法器1005A-1005P中的每个乘法器可以是被配置为将两个二进制数相乘的电子电路。一般来讲,多个乘法器1005A-1005P中的每个乘法器可使用软件、硬件、固件或它们的组合以多种方式中的任一种方来实施。
因此,多个乘法器1005A-1005P中的每个乘法器接收来自子特征映射图的数据值1010A-1010P。例如并且结合图10参考图11,相对于示例性5×5输入特征映射图1100解释了稀疏张量计算单元1000。应当理解,输入特征映射图1100仅仅是示例,并非旨在以任何方式进行限制。本公开可用于处理任何尺寸并且其中具有任何数据值的输入特征映射图。可以从输入图像205生成输入特征映射图1100。输入特征映射图1100可包括多个单元格,每个单元格在行(其在X方向1105上延伸)和列(其在Y方向1110上延伸)的交叉点处形成。输入特征映射图1100中的该多个单元格中的每个单元格包括将在稀疏张量计算单元1000中处理的数据值。
在一些实施方案中,输入特征映射图1100的四边可以被零值填充,以确保输出特征映射图与输入特征映射图具有相同的尺寸。例如,可在输入特征映射图1100的第一行的上方和最后一行的下方添加一行零值,并且为了填充,可在输入特征映射图的第一列的左手边和最后一列的右手边添加一列零值。通过将零值填充到输入特征映射图1100,可获得具有7×7尺寸的经填充的特征映射图1115。在一些实施方案中,划分块210可执行填充。在其他实施方案中,填充可以由加速器200的另一个部件添加。在没有进行零值填充的情况下,输出特征映射图可能与输入特征映射图具有不同的尺寸。
此外,在一些实施方案中,可以从经填充的特征映射图1115创建子特征映射图,并且可以将来自核矩阵1120的权重值应用于那些子特征映射图。应当理解,核矩阵1120仅仅是示例,并非旨在以任何方式进行限制。核矩阵1120可以假设其他尺寸(例如,行的数量和列的数量可能与所示不同),并且核矩阵内的值也可以变化。核矩阵1120可以被认为具有核尺寸k。在一些实施方案中,在具有相同数量的行和列的正方形核矩阵(例如,核矩阵1120)中,核尺寸k等于核矩阵中的行或列的数量。在其他实施方案中,正方形或非正方形核矩阵的核尺寸k可被认为是可使用涉及监督示例和误差梯度的反向传播的外部训练过程来确定/优化的输入参数。因此,对于具有两个行和两个列的核矩阵1120,以下描述假设核尺寸k为二。
在一些实施方案中,经填充的特征映射图1115可在划分块210或加速器200的其他部件中被切分为子特征映射图,如上文在图3A和图3B中所讨论的。例如并且如图11所示,可以切分经填充的特征映射图1115(如上文所讨论的),以形成多个子特征映射图1125A-1125I。由于经填充的特征映射图1115的最后一行和最后一列只包括零值,因此那些值对输出值不具有影响,并且因此不需要处理。多个子特征映射图1125A-1125I中的每个子特征映射图可以在不同的稀疏张量计算单元(例如,稀疏张量计算单元1000)中并行处理。例如,在一些实施方案中,可以在第一稀疏张量计算单元中处理子特征映射图1125A,可以在第二稀疏张量计算单元中处理子特征映射图1125B,依此类推。
此外,在图11中,多个子特征映射图1125A-1125I中的每个子特征映射图包括两个行和两个列。尽管多个子特征映射图1125A-1125I中的每个子特征映射图与图11中的其他子特征映射图具有相同的尺寸,但是应当理解,这些子特征映射图可以具有不同的尺寸,如上文所讨论的。此外,尽管多个子特征映射图1125A-1125I中的每个子特征映射图具有与核矩阵1120相同数量的行和列,但在一些实施方案中,该多个子特征映射图中的一个或多个子特征映射图可以具有与核矩阵不同数量的行和/或列。根据稀疏张量计算单元1000中的多个乘法器1005A-1005P的数量,可以并行处理多个子特征映射图1125A-1125I中的每个子特征映射图中的多个数据值。例如,如果在稀疏张量计算单元1000中处理子特征映射图1125A,并且假设多个乘法器1005A-1005P至少包括四个乘法器,则可以并行处理该子特征映射图的四个单元格中的每个单元格中的数据值。
因此,为了处理子特征映射图1125A,可以将来自该子特征映射图的数据值输入到多个乘法器1005A-1005P中。例如,子特征映射图1125A的具有索引值(1,1)(例如,行1、列1)的数据值“0”可以被加载到乘法器1005A中,具有索引值(1,2)(例如,行1、列2)的数据值“0”可以被加载到乘法器1005B中,具有索引值(2,1)(例如,行2、列1)的数据值“1”可以被加载到乘法器1005C中,并且具有索引值(2,2)(例如,行2、列2)的数据值“5”可以被加载到乘法器1005P中。在一些实施方案中,也可以将数据值的对应索引值输入到多个乘法器1005A-1005P中的相应乘法器中。本文中值为零的数据值被加载到多个乘法器1005A-1005P中仅是为了便于说明。在其他实施方案中,仅非零数据值可以被加载到多个乘法器1005A-1005P中。
除了数据值之外,多个乘法器1005A-1005P中的每个乘法器还从稀疏张量权重存储器410或510接收权重值1015A-1015P。权重值1015A-1015P可以是来自核矩阵1120的单元格的值。在一些实施方案中,稀疏张量计算单元1000可以被配置为一次处理一个唯一权重。在这种情况下,可以一次将单个权重值广播到多个乘法器1005A-1005P中的每个乘法器。例如,在处理子特征映射图1125A的第一次迭代中,可以将来自核矩阵1120的第一权重值传输到乘法器1005A、1005B、1005C和1005P中的每个乘法器(下文统称为多个乘法器1005A-1005P)。因此,将相同权重值广播到多个乘法器1005A-1005P中的每个乘法器。
在完成利用第一权重值处理子特征映射图1125A后,可以在第二次迭代中将来自核矩阵1120的第二权重值传输到多个乘法器1005A-1005P中的每个乘法器。在完成利用第二权重值处理子特征映射图1125A后,可以在第三次迭代中将来自核矩阵1120的第三权重值传输到多个乘法器1005A-1005P中的每个乘法器,并且在完成利用第三权重值处理该子特征映射图后,可以在第四次迭代中将来自该核矩阵的第四权重值传输到该多个乘法器中的每个乘法器。因此,子特征映射图1125A的处理可能需要四次迭代。在每次迭代期间,将输入权重值与子特征映射图1125A中的数据值中的每个数据值相乘。此外,根据多个乘法器1005A-1005P的数量,每次迭代可以包括一轮或多轮。具体地,如果多个乘法器1005A-1005P的数量包括足够数量的乘法器以并行处理子特征映射图的所有数据值,则每次迭代可以包括单轮。另一方面,如果多个乘法器1005A-1005P的数量小于子特征映射图中的数据值的数量,则每次迭代可以包括多轮。在完成利用子特征映射图1125A进行的四次迭代后,稀疏张量计算单元1000的输出可以是与子特征映射图1125A对应的输出子特征映射图。
此外,在一些实施方案中,可以预先确定将来自核矩阵1120的权重值传输到多个乘法器1005A-1005P的顺序。例如,在一些实施方案中,来自核矩阵1120的具有索引值(1,1)的权重值可以在第一次迭代中被加载到多个乘法器1005A-1005P中的每个乘法器中。如上所述,该索引值体现了核矩阵1120中的特定单元格的行编号和列编号。因此,索引值(1,1)对应于核矩阵1120的行1、列1。核矩阵1120中与索引值(1,1)对应的权重值为“0”。因此,在第一次迭代中,将权重值“0”加载到多个乘法器1005A-1005P中的每个乘法器中。类似于数据值,将零权重值描述为被输入到多个乘法器1005A-1005P中仅是为了便于说明。在其他实施方案中,仅可将非零权重值输入到多个乘法器1005A-1005P中。在第二次迭代中,将索引值(1,2)中的权重值(例如,权重值“1”)广播到多个乘法器1005A-1005P中的每个乘法器。在第三次迭代中,将与索引值(2,2)对应(例如,具有权重值“0”)的权重值加载到多个乘法器1005A-1005P中的每个乘法器中,而在第四次迭代中,将与索引值(1,1)对应的权重值“-1”广播到该多个乘法器中的每个乘法器。在其他实施方案中,可以在各种迭代中以不同的顺序将权重值输入到多个乘法器1005A-1005P中。
因此,在处理子特征映射图1125A的第一次迭代中,多个乘法器1005A-1005P中的每个乘法器接收来自子特征映射图的一个数据值和核矩阵1120中与索引值(1,1)对应的权重值“0”。多个乘法器1005A-1005P中的每个乘法器计算其相应的数据值(例如,数据值1010A-1010P)和权重值(例如,权重值1015A-1015P)之间的乘积(例如,z=w*x)以获得乘积。例如,乘法器1005A可以将数据值1010A与权重值1015A相乘以获得乘积值1020A。类似地,乘法器1005B可以将数据值1010B与权重值1015B相乘以获得乘积值1020B,乘法器1005C可以将数据值1010C与权重值1015C相乘以获得乘积值1020C,并且乘法器1005P可以将数据值1010P与权重值1015P相乘以获得乘积值1020P。乘积值1020A-1020P可以被表示为乘积矩阵,使得乘积值1020A-1020P中的每个乘积值与输入到多个乘法器1005A-1005P中的相应乘法器中的数据值具有相同的索引值。例如,由于将具有索引值(1,1)的数据值输入到乘法器1005A中,因此乘积值1020A也在乘积矩阵中具有索引值(1,1)。因此,基于乘积值1020A-1020P的乘积矩阵可以看起来像:
0 0
0 0
将乘积值1020A-1202P中的每个乘积值分别输入到对应的累加器1025A-1025P中。累加器1025A-1025P中的每个累加器可以包括被配置为接收并暂时存储乘积值1020A-1020P中的相应乘积值的寄存器(或其他类型的存储器)。在一些实施方案中,累加器1025A-1025P中的每个累加器还可以包括计算元件(例如,加法元件)以执行下文所讨论的计算。尽管在图10中示出了累加器1025A-1025P中的P个单独的累加器,但在一些实施方案中,P个累加器中的一个或多个累加器可组合在一起以形成接收乘积值1020A-1020P的更大累加器。另外,在一些实施方案中,累加器1025A-1025P中的每个累加器的尺寸可以使用以下公式来计算:(2k-1)×(2k-1),其中k是核矩阵1120的核尺寸。由于在当前示例中,核矩阵1120的核尺寸k为2,因此累加器1025A-1025P中的每个累加器可以将尺寸确定为至少存储3×3矩阵。
此外,在将乘积值1020A-1020P传输到累加器1025A-1025P后,处理子特征映射图1125A的第二次迭代可以在多个乘法器1005A-1005P中开始。因此,在第二次迭代中,可以将核矩阵1120的与索引值(1,2)对应的权重值传输到多个乘法器1005A-1005P中的每个乘法器。由于从第一次迭代开始,子特征映射图1125A的数据值已经在多个乘法器1005A-1005P中,因此不需要再次输入那些数据值。
此外,在接收到乘积值1020A-1020P后,累加器1025A-1025P中的每个累加器可以基于从寄存器组1030所接收到的值处理那些值。寄存器组1030被配置为存储由于子特征映射图1125A与核矩阵1120卷积所产生的输出子特征映射图。寄存器组1030可以是一组寄存器、触发器或其他存储器单元。虽然在此从寄存器的角度解释了寄存器组1030,但在其他实施方案中,可以在寄存器组中使用触发器或其他类型的存储器单元。在一些实施方案中,寄存器组1030可以是累加器1125A-1125P中的一个或多个累加器的一部分。此外,在一些实施方案中,寄存器组1030可以包括连接在一起以形成一个或多个移位寄存器的多个行寄存器和多个列寄存器。在一些实施方案中,该多个行寄存器可以连接在一起以形成移位寄存器,以使存储在其中的值能够向右或向左移位至少一个位置。类似地,在一些实施方案中,该多个列寄存器可以连接在一起以形成移位寄存器,以使存储在其中的值能够向上或向下移位至少一个位置。
此外,寄存器组1030的尺寸可以基于经填充的特征映射图1115的尺寸(或输出特征映射图的尺寸)。因此,对于7×7尺寸的经填充的特征映射图1115,寄存器组1030可以被初始化为具有7×7的尺寸。换句话说,寄存器组1030可以包括49个寄存器,使得每个行中的7个寄存器连接在一起以形成移位寄存器并且每个列中的7个寄存器连接在一起以形成移位寄存器。此外,在一些实施方案中,在第一次迭代开始时,寄存器组1030可以被初始化为只具有零值,如图11中的寄存器组1130中所示。另外,在一些实施方案中,在第一次迭代开始时,寄存器组1130的一部分可以被加载到累加器1025A-1025P中的每个累加器中。
例如,累加器1025A-1025P中的每个累加器可以包括具有(2k-1)×(2k-1)或3×3的尺寸的寄存器1135,如上文所讨论的。当寄存器组1130在第一次迭代开始时被初始化为只具有0值时,累加器1025A-1025P中的每个累加器的寄存器1135可以被加载有来自寄存器组1130的3×3部分的值。可以基于以下公式来确定复制到寄存器1135中的来自寄存器组1130的3×3部分:
寄存器=寄存器组(i:i+acc_长度-1,j:j+acc_长度-1)
在以上公式中,第一项对应于寄存器组1130的行编号,并且第二项对应于寄存器组的列编号。此外,在以上公式中,“i”是行编号的开始,并且“j”是经填充的特征映射图1115中的子特征映射图1125A的列编号的开始,并且acc_长度是寄存器1135的尺寸。换句话说,(i,j)是子特征映射图1125A的索引值。例如,由于寄存器是3×3,因此以上示例中的寄存器1135的尺寸为3。类似于核矩阵1120的核尺寸那样计算寄存器1135的尺寸。因此,对于子特征映射图1125A,在以上公式中“i”为1,“j”为1,并且acc_长度为3。因此,累加器1025A-1025P中的每个累加器的寄存器1135被初始化为具有寄存器组1130的行(1:3,1:3)。由于寄存器组1130的行1:3和列1:3中的值在初始化时全部为零值,因此寄存器1135中的值被初始化为只具有零值。除了乘积值1020A-1020P之外,寄存器组1030还接收与子特征映射图1125A中的每个数据值对应的索引值和与核矩阵1120中的每个权重值对应的索引值,以计算寄存器组1030的将被加载到累加器1025A-1025P中的每个累加器中的该部分。
因此,在第一次迭代开始时,寄存器组1030被初始化为具有寄存器组1130中所示的0值,并且累加器1025A-1025P中的每个累加器的寄存器1135被初始化为具有来自寄存器组1130的3×3部分。累加器1025A-1025P中的每个累加器在每次迭代中读取其相应寄存器1135的一部分,并且将当前乘积值(例如,乘积值1020A-1020P)与在先前迭代中计算的乘积值相加。例如,对于其中将与索引值(1,1)对应的权重值传输到多个乘法器1005A-1005P的第一次迭代,累加器1025A-1025P读取其相应的寄存器1135的实例的部分1140A,如图11所示。可以通过卷积操作的定义来确定读取寄存器1135的部分的顺序。因此,在一些实施方案中,首先读取部分1140A。在其他实施方案中,根据卷积操作的定义,可以首先读取寄存器1135的另一个部分。累加器1025A-1025P将上述乘积矩阵中的乘积值1020A-1020P与部分1140A中的值相加。具体地,累加器1025A-1025P可以执行以下矩阵加法:
在以上等式中,第一矩阵是从乘积值1020A-1020P导出的乘积矩阵,并且第二矩阵对应于部分1140A中的值。可以将矩阵加法的结果存储回累加器1025A-1025P中的每个累加器的寄存器1135的部分1140A中。因此,在第一次迭代之后,累加器1025A-1025P中的每个累加器的寄存器1135具有图11的寄存器1145A中所示的值。
在第二次迭代中,继续将子特征映射图1125A加载到多个乘法器1005A-1005P中(如上文所讨论的),并且将在核矩阵1120中与索引(1,2)对应的权重值“1”传输到那些乘法器中的每个乘法器。可以通过组合第二次迭代中的乘积矩阵z中的乘积值1020A-1020P来将乘积值1020A-1020P表示为:
0 0
0 5
可以将上述乘积值1020A-1020P传输到累加器1025A-1025P。累加器1025A-1025P可以从寄存器1145A读取部分1140B,该部分是通过从部分1140A的位置向左逐列移位一个位置而获得的。累加器1025A-1025P可以如下对第二次迭代的乘积矩阵中的值和部分1140B中的值执行矩阵加法:
可以将上述矩阵加法的结果存储回部分1140B中。因此,在第二次迭代之后,寄存器1135具有寄存器1145B中所示的值。
在第三次迭代中,继续将子特征映射图1125A加载到多个乘法器1005A-1005P中(如上文所讨论的),并且将在核矩阵1120中与索引(2,2)对应的权重值“1”传输到那些乘法器中的每个乘法器。乘积值1020A-1020P可以被第二次迭代中的乘积矩阵z表示为:
0 0
0 0
可以将上述乘积值1020A-1020P传输到累加器1025A-1025P。累加器1025A-1025P可以读取寄存器1145B的部分1140C,该部分是通过将寄存器1145A的部分1140B的位置向上逐行移位一个位置而获得的。累加器1025A-1025P可以如下对第三次迭代的乘积矩阵中的值和部分1140C中的值执行矩阵加法:
可以将上述矩阵加法的结果存储在部分1140C中。因此,在第三次迭代之后,寄存器1135具有寄存器1145C中所示的值。
在第四次迭代中,继续将子特征映射图1125A加载到多个乘法器1005A-1005P中(如上文所讨论的),并且将在核矩阵1120中与索引(2,1)对应的权重值“-1”传输到那些乘法器中的每个乘法器。乘积值1020A-1020P可以被第二次迭代中的乘积矩阵z表示为:
0 0
0 -5
可以将上述乘积值1020A-1020P传输到累加器1025A-1025P。累加器1025A-1025P可以读取寄存器1145C的部分1140D,该部分是通过将部分1140C的位置向右逐列移位一个位置而获得的。累加器1025A-1025P可以如下对第四次迭代的乘积矩阵中的值和部分1140D中的值执行矩阵加法:
可以将上述矩阵加法的结果存储在部分1140D中。因此,在第四次迭代之后,寄存器1135具有寄存器1145D中所示的值。
由于在图11的示例中,仅存在四次迭代,因此在完成子特征映射图1125A的四次迭代后,累加器1025A-1025P将存储在寄存器1135中的值(例如,寄存器1145D中的值)加载回寄存器组1130中。此外,寄存器1145D的值可以被加载回寄存器1130中与最初初始化那些值的位置相同的位置。因此,例如,以下公式可用于确定来自寄存器1145A的值将被上传到寄存器1130的哪个位置:
寄存器组=寄存器(i:i+acc_长度-1,j:j+acc_长度-1)
因此,对于子特征映射图1125A,寄存器1145D中的值可以被加载到寄存器组1130的行(1:3,1:3)中。因此,在将寄存器1145D中的值加载到寄存器组1130之后,寄存器组1030可以具有类似于寄存器组1150的值。此外,寄存器组1150中的加载值可以向右循环移位一列。例如,可以根据以下公式执行移位操作:
寄存器组=循环移位(寄存器组,核尺寸-1,2)
移位的方向性可以取决于卷积定义。因此,在其他实施方案中,可以其他方式移位寄存器组1150。因此,寄存器1150中的值可以被移位以获得寄存器1155中所示的值。寄存器1150中的值可以经受寄存器组1030中的一个或多个内联操作。例如,寄存器组1030可以执行非线性修正线性单元(ReLU)操作和池化操作。因此,在一些实施方案中,寄存器组1030可以包括ReLU处理单元和池化操作处理单元以分别执行ReLU和池化操作。在其他实施方案中,单独的部件可以与稀疏张量计算单元1000相关联以执行ReLU和池化操作。
在一些实施方案中,ReLU操作可以实施以下激活函数:f(x)=max(0,x)。在其他实施方案中,ReLU操作可以实施其他激活函数。ReLU操作可以为每个输入生成一个输出。因此,对于A个输入,ReLU操作可以生成A个输出。然后,池化操作可以将A个结果减少到B个结果。例如,核尺寸为2×2的池化操作可以将A个输入减少为A/4个输入。因此,根据池化操作的核尺寸,寄存器组1030可以将A个输入减少为B个输入。寄存器组1130还可以与B个池化单元相关联,其中每个池化单元被配置为对ReLU操作的A个结果中的一个结果执行下采样操作。池化操作可以执行确定一组单元格值中的最大值的最大池化操作、确定一组单元格值的平均值的平均池化操作或确定一组单元格值的总和的总和池化操作。在其他实施方案中,可以执行其他池化操作。池化操作的结果可以表示输出子特征映射图,该输出子特征映射图可以被发送回相关联的稀疏张量存储器集群400、500或发送到另一个稀疏张量计算单元。在一些实施方案中,输出子特征映射图可以在被发送到稀疏张量存储器集群400、500之前被压缩。
在一些实施方案中,在压缩输出子特征映射图之前,可以将该输出子特征映射图与从其他稀疏张量计算单元生成的其他输出子特征映射图组合。为了组合各种输出子特征映射图,在一些实施方案中,输出子特征映射图可以“拼接”在一起以获得输出特征映射图。例如,在一些实施方案中,如果输入特征映射图被切分为四个子特征映射图[A,B,C,D](其生成四个相应输出子特征映射图A'、B'、C'和D'),则输出特征映射图可以给出为[A',B',C',D']。
此外,乘积值1020A-1020P中的每个乘积值也被输入到加法器1035中并且存储在特殊累加器1040中。加法器1035可以用于计算成组的乘积值1020A-1020P的总和。例如,加法器1035可以用于计算成组的P'个输入和P个输入的总和,其中P'小于P。特殊累加器1040可以通过获取加法器1035的输出和来自寄存器组1030的先前累加的结果来处理完全连接层和1×1卷积所需的累加。
现在转到图12,示出了根据本公开的一些实施方案的示例性流程图,该示例性流程图概述了过程1200的操作。过程1200可以在稀疏张量计算单元1000中实施。在一些实施方案中,控制器可以与稀疏张量计算单元1000相关联以执行过程1200。控制器可以与用于存储计算机可读指令的存储器相关联,这些计算机可读指令可以由与该控制器相关联的处理器执行。在其他实施方案中,调度引擎225可以被配置为执行过程1200。根据具体实施方案,过程1200可以包括其他操作或附加操作。
在操作1205处开始后,在操作1210处初始化寄存器组1030。如上所述,在第一次迭代开始时,寄存器组1030可以被初始化为只具有零值。此外,在初始化寄存器组1030后,可以在操作1215处初始化累加器1025A-1025P中的每个累加器,使得寄存器组的一部分被加载到那些累加器中的每个累加器中。寄存器组1030的被加载到那些累加器中的每个累加器中的该部分基于被处理的输入特征映射图中的子特征映射图的索引值。在操作1220处,将来自子特征映射图的数据值(例如,子特征映射图1125A)输入到多个乘法器1005A-1005P中,如上文所讨论的。在一些实施方案中,操作1210/1215和1220可以并行发生。在操作1225处,将来自核矩阵1220的一个权重值传输到多个乘法器1005A-1005P中的每个乘法器。
在操作1230处,多个乘法器1005A-1005P中的每个乘法器计算接收在其中的子特征映射图的数据值和权重值之间的乘积,以获得乘积值(例如,乘积值1020A-1020P)。乘积值可以被表示为乘积矩阵。在操作1235处,将乘积矩阵中的值与从在操作1215处被加载到累加器1025A-1025P中的该部分的窗口读取的值相加。例如,在第一次迭代中,可以将乘积矩阵中的值与部分1140A相加。在第二次迭代中,可以将乘积矩阵中的值与部分1140B相加,而在第三迭代中,可以将乘积矩阵中的值与部分1140C相加,并且在第四迭代中,可以将乘积矩阵中的值与部分1140D相加。因此,在每次迭代中,窗口(例如,部分1140A-1140D)可以被移位一个位置(例如,从部分1140A的初始位置—向左逐列移位至部分1140B的位置—向上逐行移位至部分1140C的位置—向右逐列移位至部分1140D的位置)。即使寄存器1135在尺寸上大于3×3,也可以应用上述移位模式。
在操作1240处,每次迭代中的加法的结果存储回累加器1025A-1025P中。然后,在操作1245处,确定所有迭代是否已经完成。同样,迭代次数可以取决于权重矩阵1120中的非零权重值的数量和将在每次迭代中传输到多个乘法器1005A-1005P的唯一权重值的数量。例如,对于2×2权重矩阵,如果在每次迭代中传输单个权重值,并且如果在该权重矩阵中的所有四个权重值是非零值,则过程1200可以包括4次迭代。如果剩余另外的迭代,则过程1200循环回到操作1210以继续处理下一次迭代。另一方面,如果在操作1245处,确定所有迭代已经完成,则在操作1250处,在完成最后一次迭代之后,累加器1025A-1025P将在操作1240处获得的该部分加载回寄存器组1030中。在操作1255处,寄存器组1030执行移位操作,并且在操作1260处,对寄存器组中的移位值执行ReLU和池化操作,以获得输出子特征映射图。任选地,在操作1265处,可以压缩输出子特征映射图。然后,过程1200在操作1270处通过将输出子特征映射图发送到相关联的稀疏张量存储器集群400、500或发送到另一个稀疏张量计算单元来结束。
在实施深度可分离卷积的(例如,在特征映射图具有多个通道的)一些实施方案中,来自每个通道的结果可以被存储为中间输出子特征映射图。例如,每个通道的子特征映射图可以执行操作1205至1255,并且那些操作的结果可以被存储为中间输出子特征映射图。在一些实施方案中,可以不对中间输出子特征映射图执行ReLU和池化操作。因此,根据通道的数量,可以获得多个中间输出子特征映射图。例如,对于三个通道,可以获得三个中间输出子特征映射图。(例如,在输入的每个通道上独立执行的深度卷积或空间卷积)。然后可以通过根据神经网络的给定超参数应用1×1过滤器来组合中间输出子特征映射图中的每个中间输出子特征映射图。(例如,将由深度卷积输出的通道投影到新通道空间上的逐点卷积,诸如1×1卷积。)然后可以对组合的中间输出子特征映射图执行操作1260的ReLU和池化操作,以获得输出子特征映射图。
现在参考图13,示出了根据本公开的一些实施方案的稀疏张量计算单元1300的示例性框图。稀疏张量计算单元1300类似于多个稀疏张量计算单元805A-805M或905A-905M中的一个稀疏张量计算单元。稀疏张量计算单元1300被配置为执行可能需要在CNN中的卷积操作期间执行的各种机器学习操作(诸如乘法、加法等)。稀疏张量计算单元1300如稀疏张量计算单元1000包括多个乘法器1305A-1305P。多个乘法器1305A-1305P中的每个乘法器被配置为类似于多个乘法器1005A-1005P,并且因此不再进行描述。
此外,多个乘法器1305A-1305P中的每个乘法器被配置为从子特征映射图(例如,子特征映射图1125A)接收数据值(例如,数据值1310A-1310P),并且从核矩阵(例如,核矩阵1120)接收将被应用于子特征映射图的权重值(例如,权重值1315A-1315P)。多个乘法器1305A-1305P中的每个乘法器计算数据值(例如,数据值1310A-1310P)和存储在其中的权重值(例如,权重值1315A-1315P)之间的乘积,以分别生成乘积值1320A-1320P。同样,类似于稀疏张量计算单元1000,稀疏张量计算单元1300也在多次迭代(例如,四次迭代,如上文所讨论的)中处理子特征映射图1125A。在每次迭代中,可以将来自核矩阵1120的不同权重值应用于子特征映射图1125A。
在一些实施方案中,多个乘法器1305A-1305P中的每个乘法器还可以分别接收数据值1310A-1310P的索引值和权重值1315A-1315P中的每个权重值的索引值。例如,乘法器1305A可以接收数据值1310A的索引值和来自核矩阵1120的权重值中的每个权重值的索引值。基于索引值,多个乘法器1305A-1305P中的每个乘法器可以确定由该乘法器计算的乘积值(例如,乘积值1320A-1320P)在输出子特征映射图中将位于的位置的索引值。在一些实施方案中,多个乘法器1305A-1305P中的每个乘法器可以使用以下公式来计算乘积值1320A-1320P的索引值:
XW_row_idx=X_row_idx+((W_ROW_LEN–1)-W_row_idx)
XW_col_idx=X_col_idx+((W_COL_LEN–1)-W_col_idx)
在以上公式中,索引从0开始,并且XW_row_idx和XW_col_idx分别是输出子特征映射图中乘积值(例如,乘积值1320A-1320P)的行、列索引值。X_row_idx和X_col_idx分别是第一被乘数(例如,数据值1310A-1310P)的行、列索引值。W_row_idx和W_col_idx分别是第二被乘数(例如,权重值1315A-1315P)的行、列索引值。W_ROW_LEN和W_COL_LEN是核矩阵1120的尺寸(例如,核尺寸)。此外,XW-row_idx可以与偏移过滤器行长度的X_row_idx相同,并且过滤器系数行索引采用从0到W_ROW_LEN-1的值。
在计算乘积值1320A-1320P的索引值后,多个乘法器1305A-1305P中的每个乘法器可以将其相应的乘积值和计算的索引值传输到累加器1325。尽管多个乘法器1305A-1305P已经被描述为计算乘积值1320A-1320P的索引值,但在一些实施方案中,累加器1325可以替代地接收第一被乘数和第二被乘数的各种索引值以计算那些乘积值的索引值。在其他实施方案中,加速器200的另一个部件可以计算输出子特征映射图中乘积值1320A-1320P的索引值。
因此,将乘积值1320A-1320P和计算的索引值中的每一者输入到累加器1325中。在一些实施方案中,累加器1325可以是“P”个累加器的组合(其中“P”是多个乘法器1305A-1305P的总数),并且每个累加器可以类似于多个累加器1025A-1025P。因此,累加器1325被配置为类似于累加器1025A-1025P。类似于累加器1025A-1025P,累加器1325可以被配置为将乘积值1320A-1320P中的每个乘积值与在最后一次迭代中计算的总和相加。例如,累加器1325可以将当前迭代的乘积值1320A与来自先前迭代的乘积值1320A相加。因此,累加器1325可以执行以下操作:
a1=a1+z1
a2=a2+z2
…
aP=aP+zP
在以上等式中,z1为乘积值1320A,z2为乘积值1320B,zP为乘积值1320P,依此类推。在第一次迭代开始时,值a1、a2、……、aP中的每一者可以被初始化为零。可以将结果1330A-1330P(包括求和结果(例如,a1、a2、……、aP))和这些结果中的每一者的计算的索引值从累加器1325发送到多级互连网络(“MIN”)1335。结果1330A可以包括求和结果a1,以及由乘法器1305A针对乘积值1320A计算的索引值。类似地,结果1330B可以包括求和结果a2,以及由乘法器1305B针对乘积值1320B计算的索引值,依此类推。
MIN 1335可以用于本地交织并将累加器1325连接到可变累加器寄存器(“VAR”)1340。MIN 1335的附加细节可以见于2017年6月19日提交的美国申请No.15/627,042中,该申请的全部内容通过引用方式并入本文。MIN1335可以包括多种控制状态。在一些实施方案中,输入到读取MIN(例如,下文描述的MIN 1355)的位置的总数是(2k-1)^2。由于需要取出这些(2k-1)^2个值中的P个值,因此可以使用读取MIN(例如,MIN 1355)。写入MIN(例如,MIN1335)所连接到的位置的总数是(2k-1)^2。由于需要写入这些(2k-1)^2个值中的P个值,因此可以使用写入MIN(例如,MIN 1335)。在一些实施方案中,如果乘积值1320A-1320P中的两者具有相同的计算的索引值,则MIN 1335可以对结果1330A-1330P进行分类。因此,写入MIN(例如,MIN 1335)可以用于写入VAR 1340,并且读取MIN(例如,MIN 1355)可以用于从VAR1340读取。因此,MIN 1335可以将分类结果1345A-1345P(包括由多个乘法器1305A-1305P计算的索引值)传输到VAR 1340。
因此,MIN 1335和MIN 1355可以在Benes网络的第一P端口(或在输入子特征映射图中没有稀疏性的情况下,k^2端口)上提供双向连接(例如,一个方向用于读取并且另一个方向用于写入)(端口的总数可以是(2k-1)^2),其中P端口的数量可以基于输入子特征映射图中的非零值的百分比。例如,如果输入子特征映射图中存在60%非零值,并且核矩阵为3×3,则可以选择P端口为6。在一些实施方案中,P端口可以独立于平均稀疏性来选择,并且可以基于各种硬件考虑。
VAR 1340被初始化为具有来自累加器缓冲器1350的一部分,类似于累加器1025A-1025P。累加器缓冲器1350类似于寄存器组1030。然而,累加器缓冲器1350不实施移位操作。类似于寄存器组1030,累加器缓冲器1350可以具有输出子特征映射图的尺寸,如上文相对于寄存器组所讨论的。例如,使用图11的示例,累加器缓冲器1350可以具有7×7的尺寸。此外,在第一次迭代开始时,累加器缓冲器1350可以被初始化为只具有零值,如上文所讨论的。
另外,在第一次迭代开始时,累加器缓冲器1350的一部分可以被加载到VAR 1340中。VAR 1340的尺寸可以使用下公式来计算:(2k-1)×(2k-1),其中k是核矩阵1120的核尺寸。由于在图11的示例中,核矩阵1120的核尺寸k为2,因此VAR 1340的尺寸为3×3。此外,可以基于以下公式来确定复制到VAR 1340中的来自累加器缓冲器1350的3×3部分:
VAR=累加器缓冲器(i:i+acc_长度-1,j:j+acc_长度-1)
在以上公式中,第一项对应于累加器缓冲器1350的行编号(例如,行索引值),并且第二项对应于累加器缓冲器的列编号(例如,列索引值)。此外,在以上公式中,“i”是行编号的开始,并且“j”是在经填充的特征映射图1115中的子特征映射图1125A的列编号的开始,并且acc_长度是累加器缓冲器1350的尺寸。例如,由于以上示例中的累加器缓冲器1350的尺寸为3×3,因此acc_长度为3。因此,例如,为了处理子特征映射图1125A,在以上公式中“i”为1,“j”为1,并且acc_长度为3。因此,在第一次迭代开始时,累加器缓冲器1350的行1:3和列1:3可以被加载到VAR 1340中。
在从MIN 1335接收到分类结果1345A-1345P和计算的索引值后,VAR 1340将结果存储在从累加器缓冲器1350复制的该部分的适当索引值中。在VAR 1340中将存储结果1345A-1345P存储在适当索引值中后,VAR可以将分类结果1345A-1345P传输到以类似于MIN1335的方式构造的MIN 1355。MIN 1355可以将分类结果1345A-1345P发送回累加器1325以供在下一次迭代期间使用。
此外,在完成处理子特征映射图1125A的所有迭代之后,VAR 1340可以将存储在其中的结果发送回累加器缓冲器1350。例如,如果行1:3和列1:3在第一次迭代开始时被从累加器缓冲器1350复制到VAR 1340,则在最后一次迭代结束时,来自VAR的结果被加载回累加器缓冲器的行1:3和1:3中。因此,累加器缓冲器1350的在第一次迭代开始时被加载到VAR1340中的该部分被在最后一次迭代结束时来自VAR 1340的结果替换。
除了将乘积值1320A-1320P发送到累加器1325之外,还将这些乘积值输入到加法器1360中。来自加法器1360的结果被存储在特殊累加器1365内。加法器1360和特殊累加器1365分别类似于加法器1035和特殊累加器1040。
如上文所讨论的,对在最后一次迭代之后存储在累加器缓冲器1350中的值执行ReLU和池化操作1370,以获得输出子特征映射图。ReLU和池化操作1370的结果可以任选地被压缩在压缩块1375中,如上文所讨论的。经压缩的结果可以经由相关联的稀疏张量存储器集群发送回DRAM 215或发送到另一个稀疏张量计算单元。
现在参考图14,示出了根据本公开的一些实施方案的稀疏张量计算单元1400的示例。稀疏张量计算单元1400基本上类似于稀疏张量计算单元1300。例如,类似于稀疏张量计算单元1300,稀疏张量计算单元1400包括多个乘法器1405A-1405P,这些乘法器接收数据值1410A-1410P和权重值1415A-1415P以生成乘积值1420A-1420P。多个乘法器1405A-1405P中的每个乘法器还可以接收数据值1410A-1410P和权重值1415A-1415P的索引值,以计算乘积值1420A-1420P的索引值,如上文所解释的。
稀疏张量计算单元1300被配置为一次接收一个唯一权重值。换句话说,在每次迭代中,相同权重值被传输到稀疏张量计算单元1300中的多个乘法器1305A-1305P中的每个乘法器。然而,稀疏张量计算单元1400被配置为在每次迭代中处理多于一个唯一权重值。在一些实施方案中,可能需要一次处理多于一个唯一权重值。在这种情况下,可以一次将多个权重值广播到多个乘法器1405A-1405P。例如,多个乘法器1405A-1405P中的第一组可以接收第一权重值,该多个乘法器中的第二组可以接收第二权重值,依此类推。例如,当在每次迭代中使用两个权重值时,可以将第一权重值传输到多个乘法器1405A-1405P中的Q个乘法器(其中Q是特定子特征映射图中的非零值的数量),并且可以将第二权重值传输到该多个乘法器中的(P-Q)个乘法器。可以使用以下公式来计算在每次迭代中可以使用的唯一权重值的数量:max(1,天花板(P-Q)),其中Q是特定子特征映射图中的非零值的数量,P是参与的多个乘法器1405A-1405P的数量。
可以将乘积值1420A-1420P和计算的索引值传输到MIN 1425。具体地,MIN 1425可以是写入仲裁器MIN,该写入仲裁器MIN具有“P”个先进先出缓冲器和P×P种控制状态。如果在输出子特征映射图中乘积值1420A-1420P中的多于一个乘积值具有相同的计算的索引值,则MIN 1425可以发送乘积值中针对该索引值的一者,同时将剩余乘积值存储在缓冲器中。然后,MIN 1425将乘积值1420A-1420P和计算的索引值发送到累加器1430。累加器1430类似于累加器1425。此外,MIN 1435、VAR 1440、MIN 1445、加法器1450、特殊累加器1460、累加器缓冲器1465、ReLU和池化操作1470和压缩块1475被配置为类似于MIN 1335、VAR 1340、MIN 1355、加法器1360、特殊累加器1365、累加器缓冲器1350、ReLU和池化操作1370和压缩块1375,因此为了简化表达不再进行描述。这些元件中的每个元件处理如上文在图14中所述的子特征映射图1125A。
现在转到图15,示出了根据本公开的一些实施方案的稀疏张量计算单元1500的示例。稀疏张量计算单元1500基本上类似于稀疏张量计算单元1400。例如,类似于稀疏张量计算单元1400,稀疏张量计算单元1500包括多个乘法器1505A-1505P,这些乘法器接收数据值1510A-1510P和权重值1515A-1515P以生成乘积值1520A-1520P,并计算那些乘积值的索引值。同样类似于稀疏张量计算单元1400,稀疏张量计算单元1500被配置为在每次迭代中接收多个权重值。可以将乘积值1520A-1520P和计算的索引值传输到可以类似于MIN 1425的方式构造的MIN 1525。MIN 1525将值1530A-1530P传输到加法块1535。加法块1535可以执行以下加法操作:
S1=b1+b2
S2=b2+b3
S3=b3+b4
…
SP=bP+b1
相加所得值(S1、S2、……、SP)可以被视为推测性计算。如果将两个权重值发送到稀疏张量计算单元1500,则可能需要在累加之前将由这两个权重值所产生的两个乘积值相加在一起。可以将相加所得值(S1、S2、……、SP)作为值1540A-1540P传输到选择单元1545。选择单元1545可以是被配置为执行以下操作的一组复用器:
R1=MUX(b1,SP,S1)
R2=MUX(b2,S1,S2)
R3=MUX(b3,S2,S3)
…
RP=MUX(bP,S(P-1),SP)
在一些实施方案中,对上述复用器的选择的控制可以基于每个乘积值的输出索引值。如果两个相邻的乘积值共享相同的输出索引值,则可以选择相邻乘积值的总和值。
尽管选择单元1545已经被描述为具有一组复用器,但是在其他实施方案中,可以使用被配置为基于选择标准从多个输入中选择一个输入的其他元件。
可以将结果1550A-1550P(例如,R1、R2、……、RP)传输到累加器1555。累加器1555类似于累加器1430并且被配置为执行以下加法操作:
a1=R1+a2
a2=R2+a3
a3=R3+a4
…
aP=RP+a1
可以将来自累加器1555的结果发送到类似于MIN 1435的MIN 1560。此外,来自累加器1555的结果可以在VAR 1565、累加器缓冲器1570、MIN 1575、加法器1580、特殊累加器1585、ReLU和池化操作1590和压缩块1595中进行处理,类似于在VAR 1435、累加器缓冲器1465、MIN 1445、加法器1450、特殊累加器1460、ReLU和池化操作1470和压缩块1475中进行的处理,因此不再次解释。
转到图16,示出了根据本公开的一些实施方案的示例性流程图,该示例性流程图概述了过程1600的操作。根据实施方案,过程1600可以包括其他操作或附加操作。过程1600可以在稀疏张量计算单元1300、稀疏张量计算单元1400或稀疏张量计算单元1500中实施。在一些实施方案中,实施过程1600的稀疏张量计算单元可以包括执行过程1600的控制器。控制器可以与用于存储计算机可读指令的存储器相关联,这些计算机可读指令可以由与该控制器相关联的处理器执行。在其他实施方案中,调度引擎225可以被配置为执行过程1600。过程1600可以在CNN中的标准卷积操作期间实施。过程1600还可以在其中应用了1×1权重矩阵的完全连接的1×1卷积操作中实施。
在操作1605处开始后,在操作1610处初始化实施过程1600的稀疏张量计算单元(例如,稀疏张量计算单元1300、稀疏张量计算单元1400或稀疏张量计算单元1500)的累加器缓冲器(例如,累加器缓冲器1350、累加器缓冲器1465、累加器缓冲器1570)。操作1610类似于操作1210。如上所述,在第一次迭代开始时,累加器缓冲器可以被初始化为只具有零值。此外,在操作1610处初始化累加器缓冲器后,在操作1615初始化实施过程1600的稀疏张量计算单元的VAR(例如,VAR 1340、VAR 1440、VAR 1565),使得累加器缓冲器的一部分被加载到VAR中。
在操作1620处,将来自子特征映射图(例如,子特征映射图1125A)的数据值输入到实施过程1600的稀疏张量计算单元的多个乘法器(例如,多个乘法器1305A-1305P、多个乘法器1405A-1405P、多个乘法器1505A-1505P)中,如上文所讨论的。在操作1620处,还可以将与数据值对应的索引值输入到该多个乘法器中。在操作1625处,将(例如,来自核矩阵1220的)一个或多个权重值传输到实施过程1600的稀疏张量计算单元的多个乘法器(例如,多个乘法器1305A-1305P、多个乘法器1405A-1405P、多个乘法器1505A-1505P)中的每个乘法器,如上文所讨论的。还可以将这些权重值的索引值输入到那些乘法器中。传输到该多个乘法器中的每个乘法器的权重值的数量可以取决于正被执行的卷积类型。例如,在一些实施方案中,可以标准卷积操作将两个唯一权重值传输到该多个乘法器中的每个乘法器,而可以完全连接的1×1卷积操作将单个权重值传输到那些乘法器中的每个乘法器。在一些实施方案中,操作1610/1615和1620/1625可以并行发生。
在操作1630处,该多个乘法器中(例如,多个乘法器1305A-1305P、多个乘法器1405A-1405P、多个乘法器1505A-1505P)的每个乘法器计算接收在其中的子特征映射图的数据值和权重值之间的乘积,以获得乘积值(例如,乘积值1320A-1320P、乘积值1420A-1420P、乘积值1520A-1520P)。乘积值可以被表示为乘积矩阵。在操作1635处,该多个乘法器(例如,多个乘法器1305A-1305P、多个乘法器1405A-1405P、多个乘法器1505A-1505P)还计算那些乘积值的索引值,如上文所讨论的。
在操作1640处,如果两个乘积值共享相同的计算的索引,则实施过程1600的稀疏张量计算单元的MIN(例如,MIN 1335、MIN 1435、MIN 1460)对乘积值进行分类,使得共享相同索引值的乘积值在实施过程1600的稀疏张量计算单元的VAR(例如,VAR 1340、VAR 1440、VAR 1565)中彼此相邻。在操作1645处,将来自MIN的分类结果存储在VAR中。然后,在操作1650处,确定所有迭代是否已经完成。如果剩余另外的迭代,则过程1600循环回到操作1610以继续处理下一次迭代。另一方面,如果在操作1650处,确定所有迭代已经完成,则在操作1655处,将在完成最后一次迭代之后在操作1645处获得的VAR(例如,VAR 1340、VAR 1440、VAR 1565)中的值加载回累加器缓冲器(例如,累加器缓冲器1350、累加器缓冲器1465、累加器缓冲器1570)。在操作1660处,对累加器缓冲器中的值执行ReLU和池化操作,以获得输出子特征映射图。任选地,在操作1665处,可以压缩输出子特征映射图。然后,过程1600在操作1670处通过将输出子特征映射图发送到相关联的稀疏张量存储器集群400、500或发送到另一个稀疏张量计算单元来结束。
在一些实施方案中,可以基于稀疏性将输出子特征映射图再次细分为另外的子特征映射图(如上文在图3A和图3B中所讨论的),以均衡另外的子特征映射图中的每个另外的子特征映射图中的零值和非零值的数量,并且均衡稀疏张量计算集群230的稀疏张量计算单元中的每个稀疏张量计算单元中的工作负荷。可以在过程1200中执行输出子特征映射图的类似重新平衡。
在实施深度可分离卷积的(例如,在特征映射图具有多个通道的)一些实施方案中,来自每个通道的结果可以被存储为中间输出子特征映射图。例如,每个通道的子特征映射图可以执行操作1605至1665,并且那些操作的结果可以被存储为中间输出子特征映射图。在一些实施方案中,可以不对中间输出子特征映射图执行ReLU和池化操作。因此,根据通道的数量,可以获得多个中间输出子特征映射图。例如,对于三个通道,可以获得三个中间输出子特征映射图。然后可以通过应用1×1过滤器来组合中间输出子特征映射图中的每个中间输出子特征映射图。然后对组合的中间输出子特征映射图执行操作1660的ReLU和池化操作,以获得输出子特征映射图。
现在转到图17,示出了根据本公开的一些实施方案的示例性流程图,该示例性流程图概述了过程1700的操作。根据具体实施方案,过程1700可以包括附加操作或其他操作。过程1700可以由加速器200实施。在一些实施方案中,过程1700可以由加速器200的调度引擎225实施。在其他实施方案中,过程1700可以由加速器200的另一个部件实施。过程1700开始于操作1705,此时将在机器学习应用程序中对新输入数据(例如,输入图像205)执行一个或多个机器学习操作。例如,当将完成图像分类以识别输入图像中的一个或多个特征时,可以实施过程1700。因此,在操作1710处,可以将输入图像或与该输入图像相关联的特征映射图输入到加速器200中。
输入图像可以由基于输入图像的尺寸、高度和颜色方案的像素阵列表示。简单地作为示例并且不意在以任何方式进行限制,下面相对于尺寸为1024×1024×3的输入图像解释过程1700。因此,输入图像为1024像素宽和1024像素高,并且具有3个颜色通道。因此,输入图像可以被视为三个特征映射图的组合,其中每个颜色通道一个特征映射图并且每个特征映射图具有1024×1024×1的尺寸。在一些实施方案中,可以将输入图像输入到加速器200中,并且该加速器可以从该输入图像导出特征映射图。在其他实施方案中,将输入图像转换成特征映射图可在加速器200外部发生(由与加速器200相关联的主机设备(例如,主机设备105)上的另一个部件进行)),并且可以将特征映射图而不是输入图像输入到该加速器中。此外,输入图像或该输入图像的特征映射图(以被输入到加速器200中的一者为准)可以存储在加速器的DRAM 215内。
在操作1715处,加速器200接收权重矩阵(例如,权重矩阵220)。尽管操作1715已经被描述为在操作1710(在该操作中,输入图像或该输入图像的特征映射图由加速器200接收)之后发生,但在一些实施方案中,操作1715可以在操作1710之前发生。在一些实施方案中,操作1710和1715可以同时或基本上同时发生。
在一些实施方案中,加速器200可以被配置用于具有多个层的神经网络。例如,在一些实施方案中,加速器200可以被配置用于具有多个卷积层的卷积神经网络。在一些实施方案中,该多个卷积层中的每个卷积层可以具有可以应用于该层的特征映射图的特定权重矩阵。因此,在此类实施方案中,加速器200可以接收多个权重矩阵,其中一个权重矩阵被配置用于一个层。每个权重矩阵可以包括可以应用于特征映射图的权重值。具体地,可以在对应权重值和输入特征映射图的数据值之间执行乘法、加法和其他操作。在一些实施方案中,还可以压缩权重矩阵。在一些实施方案中,权重矩阵可以至少暂时存储在DRAM 215内。
在一些实施方案中,在压缩之前或之后还可以对权重矩阵进行重新排序,并且对权重矩阵执行静态稀疏性分析。可以在压缩权重矩阵之前或之后执行静态稀疏性分析。在一些实施方案中,静态稀疏性分析可以由加速器200执行,而在其他实施方案中,可以在加速器外部执行静态稀疏性分析。静态稀疏性分析识别权重矩阵中为零的权重值。如果特定权重值为零,则与该零权重值的乘法也为零。因此,那些乘法操作的结果可以被直接编码为零,而不是将资源分配来将多个零权重值与特征映射图中的值相乘。此外,由于提前知道权重矩阵中为零的权重值,并且这些权重值不从一个特征映射图改变为另一个特征映射图,因此权重矩阵中的稀疏性是静态的。
因此,可以压缩权重矩阵并对其进行重新排序,并且可以执行静态稀疏性分析以识别零权重值并从每个权重矩阵获得输入权重张量。输入权重值中的每个输入权重值可以存储在DRAM 215内,并且被基于存储在加速器200内的加载和存储时间表分派用于与输入特征映射图的计算。
在操作1720处,压缩输入图像的输入特征映射图中的每个输入特征映射图,如上文所讨论的。尽管在操作1715之后描述操作1720,但在一些实施方案中,操作1720可以在输入图像的特征映射图可用之后的任何时间发生。可以通过以下方式压缩特征映射图中的每个特征映射图:将特征映射图中的每个特征映射图递归地划分为更小单元格尺寸的部分,直到达到期望的压缩标准为止。期望的压缩标准可以基于压缩级别的数量或阈值最小单元格尺寸,如在上文提到的美国申请No.16/726,084中更详细地讨论的。在整个本公开中讨论的压缩操作可以如在美国申请No.16/726,084中所讨论的那样执行。
在操作1725处,将输入图像的每个输入特征映射图切分为多个子特征映射图,如上文在图3A和图3B中所讨论的。通过将输入特征映射图切分为多个子特征映射图,可以并行处理该多个子特征映射图中的每个子特征映射图。此外,可以将输入特征映射图切分为多个子特征映射图,使得该多个子特征映射图中的每个子特征映射图具有相同或基本上类似的稀疏性。在一些实施方案中,该多个子特征映射图中的每个子特征映射图中的稀疏性满足预先确定的阈值(例如,上文所讨论的预先确定的百分比差值阈值)。因此,该多个子特征映射图中的每个子特征映射图可以具有相同或类似数量的零值和/或非零值。此外,通过将输入特征映射图切分为多个子特征映射图,该输入特征映射图中的动态稀疏性可以转换成静态的或者接近该多个子特征映射图中的每个子特征映射图中的静态稀疏性。
在操作1730处,可以基于该多个子特征映射图中的每个子特征映射图当前存储到计算单元(例如,稀疏张量计算单元1000、1300、1400、1500)的位置的接近度来将该多个子特征映射图中的每个子特征映射图分派给稀疏张量计算单元。在操作1735处,该多个子特征映射图中的每个子特征映射图存储在稀疏张量特征映射图存储器单元中,该稀疏张量特征映射图存储器单元与用于处理该多个子特征映射图中的特定子特征映射图的稀疏张量计算单元相关联。在一些操作中,如果特定子特征映射图大于其中将存储该子特征映射图的稀疏张量特征映射图存储器单元的存储容量,则可以执行时间折叠操作。在一些实施方案中,可以认为时间折叠操作类似于上文在图3A和图3B中所述的子特征划分。在时间折叠操作中,划分基于特征映射图尺寸。例如,如果所支持的输入图像的最大尺寸是1024×1024,并且如果具有尺寸为2048×2048的输入图像,则可以将大的输入图像切分为四个输入特征映射图,其中每个输入特征映射图具有1024×1024的尺寸。
在操作1735处,还把将应用于该多个子特征映射图中的特定子特征映射图的权重值传送到与稀疏张量计算单元相关联的稀疏张量权重存储器。当稀疏张量计算单元变得可用时,稀疏张量特征映射图存储器单元可将特定子特征映射图传送到该稀疏张量计算单元。稀疏张量权重存储器还可以将存储在其中的权重矩阵传送到稀疏张量计算单元。
在操作1740处并且如上文相对于图10至图16所讨论的,稀疏张量计算单元中的每个稀疏张量计算单元处理所接收到的子特征映射图以生成输出子特征映射图。稀疏张量计算单元中的每个稀疏张量计算单元可以将其输出子特征映射图发送回DRAM 215或发送到另一个稀疏张量计算单元。在一些实施方案中,可以根据图3A和图3B再次细分一个或多个输出子特征映射图,并且在稀疏张量计算单元中对其进行进一步处理。在操作1745处,一旦所有输出子特征映射图已经完成处理,就可以组合那些输出子特征映射图以生成输出特征映射图。过程1700在操作1750处结束。
在一些实施方案中,在每个稀疏张量计算单元的输出处,可以测量输出子特征映射图中的非零值的数量。当生成输出子特征映射图时,可能可以将一个稀疏张量计算单元的输出子特征映射图重定向到另一个稀疏张量计算单元以用于平衡稀疏性。然而,在一些实施方案中,在生成所有子特征映射图并将其存储在稀疏张量特征映射图存储器中之后,同时将其提供给向下一个卷积层的稀疏张量计算单元时,可能更容易且更高效地平衡输出子特征映射图中的稀疏性。为了以这种方式平衡稀疏性,可以使用另一个网络来提供稀疏张量特征映射图存储器和稀疏张量计算单元之间的连接。当处理深度可分离卷积时,可以使用多个中间特征映射图来执行逐点或1×1卷积。这些中间特征映射图可能不是稀疏的,因为它们仅经受了卷积而不是ReLU(激活)。还可能需要将每个中间特征映射图输出存储回DRAM中。稀疏性出现在逐点或1×1卷积的最终输出处,因为这些卷积包括ReLU(激活)。
现在转到图18A至图18D,示出了根据本公开的一些实施方案的处理稀疏张量计算单元1300中的输入特征映射图1800的示例。应当理解,输入特征映射图1800仅仅是示例,并非旨在以任何方式进行限制。本公开可用于处理任何尺寸并且其中具有任何数据值的输入特征映射图。可以从输入图像205生成输入特征映射图1800。具体地,如图18A所示,输入特征映射图1800可以包括多个单元格,每个单元格在行(其在X方向1105上延伸;参见图11)和列(在Y方向1110上延伸;参见图11)的交叉点处形成。输入特征映射图1800中的该多个单元格中的每个单元格包括将在稀疏张量计算单元1300中处理的数据值。
尽管在图18A中未示出,但在一些实施方案中,类似于输入特征映射图1100,输入特征映射图1800可以在所有侧上被零值填充。此外,在一些实施方案中,可以从输入特征映射图1800(或者当使用了填充时,从经填充的特征映射图)创建子特征映射图。在一些实施方案中,输入特征映射图1800可以在加速器200的划分块210或其他部件中被切分为子特征映射图,如上文在图3A和图3B中所讨论的。例如并且如图18A所示,输入特征映射图1800可以被切分为多个子特征映射图1805A-1805P。可以在稀疏张量计算单元1300中连续地(或在稀疏张量计算单元1300的多个实例中并行)处理多个子特征映射图1805A-1805P中的每个子特征映射图。在一些实施方案中,可以按箭头1810所示的顺序处理多个子特征映射图1805A-1805P。例如,可以首先处理子特征映射图1805A,然后是子特征映射图1805B-1805D。接着,可以处理子特征映射图1805E-1805H,然后是子特征映射图1805I-1805L,依此类推。此外,在多个子特征映射图1805A-1805P中的每个子特征映射图内,可以按箭头1815所示的顺序处理数据值。在其他实施方案中,处理多个子特征映射图1805A-1805P的顺序和/或处理该多个子特征映射图中的每个子特征映射图的数据值的顺序可以变化。另外,在一些实施方案中,仅可以将非零数据值输入到稀疏张量计算单元1300中。
尽管多个子特征映射图1805A-1805P中的每个子特征映射图包括两个行和两个列并且那些子特征映射图全部都具有相同尺寸,但是应当理解,在其他实施方案中,那些子特征映射图可以具有不同尺寸,可以包括不同数量的行和列,并且多个子特征映射图1805A-1805P中的每个子特征映射图内的数据值可以变化。此外,根据稀疏张量计算单元1300中的多个乘法器1305A-1305P的数量,可以并行处理多个子特征映射图1805A-1805P中的每个子特征映射图的多个数据值。出于解释的目的,相对于子特征映射图1805A解释图18B至图18D。然而,可以类似方式处理多个子特征映射图1805B-1805P中的其他子特征映射图。此外,在假设多个乘法器1305A-1305P的数量为三的情况下描述图18A至图18D。由于子特征映射图1805A包括四个非零数据值,因此每次迭代可以包括两轮。在第一轮中,可以处理子特征映射图1805A的三个数据值,并且在第二轮中,可以处理该子特征映射图的最后一个数据值。由于按箭头1815所示的顺序处理数据值,因此在第一轮中,可以处理具有索引(0,0)、(0,1)和(1,0)的数据值,而在第二轮中,可以处理具有索引(1,1)的数据值。
子特征映射图1805A的数据值可以与核矩阵1820的权重值组合。应当理解,核矩阵1820仅仅是示例,并非旨在以任何方式进行限制。核矩阵1820可以假设其他尺寸(例如,行的数量和列的数量可能与所示不同),并且核矩阵内的值也可以变化。此外,尽管多个子特征映射图1805A-1805P中的每个子特征映射图具有与核矩阵1820相同数量的行和列,但在一些实施方案中,该多个子特征映射图中的一个或多个子特征映射图可以具有与核矩阵不同数量的行和/或列。可以按如箭头1825所示的指定顺序应用核矩阵1820中的权重值。此外,由于稀疏张量计算单元1300被配置为在每次迭代中用于一个唯一权重值,因此在每次迭代中将单个权重值广播到多个乘法器1305A-1305P中的每个乘法器。
因此,为了处理子特征映射图1805A,可以将来自该子特征映射图的数据值输入到多个乘法器1305A-1305P中。假设有三个乘法器并且如图18B所示,可以将前三个数据值输入到多个乘法器1305A-1305P中。具体地,可以将数据值“3”输入到乘法器1305A中,可以将数据值“9”输入到乘法器1305B中,并且可以将数据值“6”输入到乘法器1305C中。此外,乘法器1305A-1305C中的每个乘法器可以接收第一权重值“-6”(如图18B所示),并且计算其相应数据值和第一权重值之间的乘积。乘法器1305A-1305C中的每个乘法器还可以接收那些乘法器中的每个乘法器所接收到的数据值的索引值,以及第一权重值的索引值。基于所接收到的索引值,那些乘法器1305A-1305C中的每个乘法器可以计算输出子特征映射图中将存储乘法的结果的位置的结果索引值。在一些实施方案中,乘法器1305A-1305C可以使用上文在图13中所讨论的公式来计算结果索引值。
可以将来自乘法器1305A-1305C的乘积值和结果索引值发送到累加器1325。累加器1325还可以从MIN 1355接收来自先前迭代的加法结果,如图18B所示。具体地,MIN 1355还可以接收结果索引值并且从VAR 1340读取与这些结果索引值对应的值,并且将那些值发送到累加器1325,如图18B所示。然后,累加器1325可以将当前迭代的乘积值与先前迭代的乘积值相加。累加器1325可以将加法的结果和结果索引值传输到MIN 1335。MIN 1335可以在通过结果索引值识别的索引位置处将加法的结果写入VAR 1340。如上所述,VAR 1340被初始化为具有来自累加器缓冲器1350的一部分。因此,在通过结果索引值识别的索引位置处将加法的结果写入VAR 1340后,VAR 1340可以具有如输出映射图1830所示的值,图18B仅示出了该输出映射图的一部分。
在第一次迭代的第二轮中,将子特征映射图1805A的剩余数据值“-5”输入到乘法器1305A中。也将第一权重值“-6”输入到乘法器1305A中,如图18C所示。也将数据值的索引值和第一权重值的索引值输入到乘法器1305A中。将乘积值和结果索引值发送到累加器1325,该累加器将该乘积值与来自先前迭代的乘积值相加,并且经由MIN 1335将结果发送到VAR 1340,如图18C的输出映射图1830所示。
现在参考图18D,在第二次迭代的第一轮中,分别将数据值“3”、“9”和“6”输入到乘法器1305A、1305B和1305C中。此外,将第二权重值“6”输入到乘法器1305A-1305C中,如图18D所示。另外,可以将数据值的索引值和第二权重值的索引值输入到乘法器1305A-1305C中。数据值和第二权重值可以在稀疏张量计算单元1300中组合,如上文相对于第一次迭代的第一轮所讨论的。第二次迭代的第一轮的输出可以存储在输出映射图1830中,如图18D所示。第二次迭代的第二轮可以类似于第一次迭代的第一轮,但具有第二权重值而不是第一权重值。类似地,可以分别在第三次迭代和第四次迭代中处理第三权重值“-9”和第四权重值“3”中的每一者。第三次迭代和第四次迭代中的每一者可以具有两轮,类似于第一次迭代和第二次迭代。在第四次迭代结束时输出映射图1830中的值可以形成输出子特征映射图,并且可以存储在累加器缓冲器1350内。
现在转到图19A至图19E,示出了根据本公开的一些实施方案的处理稀疏张量计算单元1500中的输入特征映射图1900的示例。应当理解,输入特征映射图1900仅仅是示例,并非旨在以任何方式进行限制。本公开可用于处理任何尺寸并且其中具有任何数据值的输入特征映射图。可以从输入图像205生成输入特征映射图1900。具体地,如图19A所示,输入特征映射图1900可以包括多个单元格,每个单元格在行(其在X方向1105上延伸;参见图11)和列(在Y方向1110上延伸;参见图11)的交叉点处形成。输入特征映射图1900中的该多个单元格中的每个单元格包括将在稀疏张量计算单元1500中处理的数据值。
尽管在图19A中未示出,但在一些实施方案中,类似于输入特征映射图1100,输入特征映射图1900可以在所有侧上被零值填充。此外,在一些实施方案中,可以从输入特征映射图1900(或者当使用了填充时,从经填充的特征映射图)创建子特征映射图。在一些实施方案中,输入特征映射图1900可以在加速器200的划分块210或其他部件中被切分为子特征映射图,如上文在图3A和图3B中所讨论的。例如并且如图19A所示,输入特征映射图1900可以被切分为多个子特征映射图1905A-1905P。在一些实施方案中,可以在稀疏张量计算单元1500中连续地(例如,一个接一个地)处理该多个子特征映射图1905A-1905P中的至少一些子特征映射图。在其他实施方案中,可以在稀疏张量计算单元1500的多个实例中并行处理多个子特征映射图1905A-1905P中的至少一些子特征映射图。在一些实施方案中,可以按箭头1910所示的顺序处理多个子特征映射图1905A-1905P。此外,在多个子特征映射图1905A-1905P中的每个子特征映射图内,可以按箭头1915所示的顺序处理数据值。在其他实施方案中,处理多个子特征映射图1905A-1905P的顺序和/或处理该多个子特征映射图中的每个子特征映射图的数据值的顺序可以变化。另外,在一些实施方案中,仅可以将非零数据值输入到稀疏张量计算单元1500中。
尽管多个子特征映射图1905A-1905P中的每个子特征映射图包括两个行和两个列并且那些子特征映射图全部都具有相同尺寸,但是应当理解,在其他实施方案中,那些子特征映射图可以具有不同尺寸,可以包括不同数量的行和列,并且多个子特征映射图1905A-1905P中的每个子特征映射图内的数据值可以变化。此外,根据稀疏张量计算单元1500中的多个乘法器1505A-1505P的数量,可以并行处理多个子特征映射图1505A-1505P中的每个子特征映射图的多个数据值。出于解释的目的,相对于子特征映射图1905A解释图19B至图19E。然而,可以类似方式处理多个子特征映射图1905B-1905P中的其他子特征映射图。此外,在假设多个乘法器1505A-1505P的数量为三的情况下描述图19A至图19E。由于子特征映射图1905A仅包括两个非零数据值,因此每次迭代可以包括单轮。应当理解,每次迭代中的轮数可以因子特征映射图而异。例如,子特征映射图1905B包括三个非零数据值,并且由于在当前示例中使用三个乘法器,因此处理该子特征映射图的每次迭代仍然可以包括单轮。另一方面,子特征映射图1905F包括四个非零数据值。因此,在具有三个乘法器的情况下,处理子特征映射图9105F的每次迭代可以包括两轮。
子特征映射图1905A的数据值可以与核矩阵1920的权重值组合。应当理解,核矩阵1920仅仅是示例,并非旨在以任何方式进行限制。核矩阵1920可以假设其他尺寸(例如,行的数量和列的数量可能与所示不同),并且核矩阵内的值也可以变化。此外,尽管多个子特征映射图1905A-1905P中的每个子特征映射图具有与核矩阵1920相同数量的行和列,但在一些实施方案中,该多个子特征映射图中的一个或多个子特征映射图可以具有与核矩阵不同数量的行和/或列。可以按如箭头1925所示的指定顺序应用核矩阵1920中的权重值。此外,如上所述,稀疏张量计算单元1500被配置为在每次迭代中处理多个权重值。因此,根据非零数据值的数量和乘法器的数量,可以在每次迭代中广播多个权重值。在假设可以在每次迭代中广播两个唯一权重值的情况下解释图19A-19E的示例。
例如并且如图19B所示,子特征映射图1905A仅包括两个非零值。因此,仅需要三个乘法器中的前两个乘法器参与第一迭代来处理两个非零数据值。然而,为了提高性能并充分利用资源,可以将第二权重值和第一非零数据值广播到第三乘法器。例如,可以分别将子特征映射图1905A的数据值“9”和“-5”输入到乘法器1505A和1505B中。此外,可以将第一权重值“-6”输入到乘法器1505A和1505B中。由于我们具有三个乘法器,因此按箭头1915所示的顺序,被输入到乘法器1505C中的第一非零数据值为“9”。此外,将第二权重值“6”输入到乘法器1505C中以开始第二次迭代。因此,第二次迭代与第一次迭代重叠。
乘法器1505A-1505C中的每个乘法器还可以接收那些乘法器中的每个乘法器所接收到的数据值的索引值,如图19B所示。此外,乘法器1505A和1505B中的每个乘法器接收第一权重值的索引值,并且乘法器1505C接收第二权重值的索引值。基于所接收到的数据值的索引值、第一权重值的索引值和第二数据值的索引值,那些乘法器1505A-1505C中的每个乘法器可以计算输出子特征映射图中将存储乘法的结果的位置的结果索引值,如上文所讨论的。可以将乘积结果和结果索引值传输到MIN 1525。由于在乘法器1505A-1505C中计算的结果索引值彼此不同,因此MIN 1525简单地将乘积结果和结果索引值传递到加法块1535。
加法块1535可以执行以下加法:
s1=b1+b3
s2=b2+b1
s3=b3+b2
在以上公式中,b1、b2和b3是来自MIN 1525的输出,并且分别对应于由乘法器1505A、1505B和1505C生成的乘积结果。如图19B进一步所示,可以将来自加法块1535的总和以及结果索引值输入到包括多个复用器的选择单元1545中。在一些实施方案中,为了处理来自三个乘法器的结果,选择单元1545可以包括三个复用器。
可以将来自选择单元1545的复用器的结果和结果索引值发送到累加器1555,该累加器分别将值s1、s2和s3与来自先前迭代的那些值相加,如上文所讨论的并且如图19B所示。具体地,可以将结果索引值输入到MIN 1575中,该MIN可以读取与来自VAR 1565的那些索引值对应的值并且将那些读取的值传输到累加器1555。可以将来自累加器的结果和结果索引值传输到MIN 1560并且写入VAR 1565中。
图19C示出了与第二次迭代重叠的第二次迭代(或更确切地说,第二次迭代的第二半部分)。如上文所讨论的,在第一次迭代(或第二次迭代的第一半部分)期间处理第二权重值和数据值“9”。在第二次迭代的第二半部分中,将剩余的非零数据值“-5”与第二权重值一起输入到乘法器1505A中。由于存在三个乘法器,因此将剩余的两个非零数据值与第三权重值“-9”一起输入到乘法器1505B和1505C中。因此,第二次迭代的第二半部分和第三次迭代并行发生。第二次迭代的处理类似于第一次迭代的处理,并且因此不再进行描述。类似地,可以利用剩余权重值处理子特征映射图1905A。
图19D示出了具有单个非零数据值的子特征映射图1905C的示例。在一些实施方案中,在具有单个非零数据值和三个乘法器的情况下,可以在单次迭代中应用三个权重值。例如,在第一次迭代中,可以将非零数据值“-2”与第一权重值“-6”一起输入到乘法器1905A中。在具有两个剩余乘法器的情况下,也可以将非零数据值“-2”与第二权重值“6”一起输入到乘法器1905B中,并且与第三权重值“-9”一起输入到乘法器1905C中。然而,如果稀疏张量计算单元1900被配置为在特定迭代中将唯一权重值的数量限制为两个,则在第一次迭代中仅可以处理第一数据权重值和第二数据权重值。在这种情况下,乘法器1905C可以不接收非零数据值“-2”和第三权重值。更确切地说,乘法器1905C可以处于空闲状态,如图19D所示。在第一次迭代中使用乘法器1905A和1905B进行的处理可以与上述方式类似的方式进行。
图19E示出了一次迭代的结果索引值和下一次迭代的重叠半部分重叠的示例。例如,子特征映射图1905J包括两个非零值,这两个非零值可以与上文针对子特征映射图1905A所述的方式类似的方式来处理。然而,针对数据值“9”和第一权重值“-6”的乘积计算的结果索引值(5,2)与针对数据值“-9”和第二权重值“6”的乘积计算的结果索引值(5,2)相同。在这种情况下,可以执行合并操作,如下图20A和20B中所讨论的。
图19A至图19E的示例还可以用于使用图14的稀疏张量计算单元处理输入特征映射图1900。稀疏张量计算单元1400旨在与两个唯一权重值一起使用。因此,图19A至图19E的示例还可以应用于稀疏张量计算单元1400。除了加法块1535和选择单元1545之外,稀疏张量计算单元1400类似于稀疏张量计算单元1500。由于MIN 1525类似于MIN 1425,因此可以直接将来自MIN 1425的数据传输到稀疏张量计算单元1400中的累加器1430,而不是MIN1525将数据传输到稀疏张量计算单元1500中的加法块1535。当两个乘积值具有相同的结果索引值时,MIN 1425和MIN 1525两者都可以用于避免冲突。当发生这种冲突时,MIN 1425和MIN 1525应用合并操作,这在下图20A和20B中讨论。
现在转到图20A和图20B,解释了根据本公开的一些实施方案的合并操作的示例。相对于稀疏张量计算单元1400描述合并操作,但是该合并操作可以类似地在稀疏张量计算单元1500中实施。如上文相对于子特征映射图1905J和图19E所讨论的,针对数据值“9”和第一权重值“-6”的乘积计算的结果索引值(5,2)与针对数据值“-9”和第二权重值“6”的乘积计算的结果索引值(5,2)相同。合并操作解决结果索引值的冲突。合并操作可以由稀疏张量计算单元1400中的MIN 1425(或稀疏张量计算单元1500中的MIN 1525)实施。在一些实施方案中,MIN 1425(和MIN 1525)可以包括FIFO(先进先出缓冲器)2000以解决冲突。
当MIN 1425(或MIN 1525)从多个乘法器1405A-1405P接收到结果索引值时,在检测到冲突后,该MIN可以将乘积值中的一者和对应的结果索引值传送到FIFO 2000。在一些实施方案中,传送到FIFO 2000的乘积值和对应的结果索引值可以基于正在处理权重值的顺序。例如,在子特征映射图1905J的示例中,可以将与第二权重值对应的乘积值而不是与第一权重值对应的乘积值传输到FIFO 2000。在一些实施方案中,可以用要传送到FIFO2000的乘积值对MIN 1425(和MIN 1525)进行编程。如果存在多于两个冲突(例如,多于两个乘积值具有相同结果索引值),则除了一个冲突的乘积值之外,可以将所有冲突的乘积值都发送到FIFO 2000。
在将乘积值传送到FIFO 2000时,可以将剩余的乘积值和其对应的结果索引值传输到(在稀疏张量计算单元1400中的)累加器1430或传输到(在稀疏张量计算单元1500中的)加法块1535。因此,当在多个乘法器1405A-1405C中并行处理三个值并且两个乘积值之间存在冲突时,冲突的乘积值中的一个乘积值存储在FIFO 2000中,并且仅两个乘积值被进一步处理。在下一轮/下一次迭代中处理存储在FIFO 2000中的乘积值。因此,如图20B所示,在处理子特征映射图1905J的下一轮/下一次迭代中,仅将两个数据值输入到多个乘法器1405A-1405P中以生成两个乘积值。将两个乘积值发送到MIN 1425,并且如果在由MIN所接收到的乘积值和存储在FIFO 2000中的乘积值之间不存在冲突,则MIN输出三个乘积值,如图20B所示。然后,剩余的后阶段处理照常进行,如上文所讨论的。
结合本文所公开的实施方案描述的各种例示性逻辑框和模块可由被设计成执行本文所述的功能的机器实施或执行,诸如通用处理器设备、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、离散门或晶体管逻辑部件、离散硬件部件或它们的任何组合。控制处理器可合成FPGA的模型。例如,控制处理器可合成逻辑可编程门的模型以实现张量阵列和/或像素阵列。控制通道可合成模型以连接FPGA、可重新配置的芯片和/或管芯等上的张量阵列和/或像素阵列。通用处理器设备可以是微处理器,但是在替代方案中,处理器设备可以是控制器、微控制器或状态机、它们的组合等。处理器设备可包括被配置为处理计算机可执行指令的电路。在另一个实施方案中,处理器设备包括在不处理计算机可执行指令的情况下执行逻辑操作的FPGA或其他可编程设备。处理器设备还可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP内核,或任何其他这样的配置。尽管本文主要相对于数字技术进行描述,但处理器设备还可主要包括模拟部件。例如,本文所述算法中的一些或全部算法可在模拟电路或混合模拟和数字电路中实现。计算环境可包括任何类型的计算机系统,包括但不限于例如基于微处理器的计算机系统、大型计算机、数字信号处理器、便携式计算设备、设备控制器或器具内的计算引擎。
结合本文所公开的实施方案而描述的方法、过程、例程或算法的要素可直接体现于硬件中、由处理器设备执行的软件模块中或两者的组合中。软件模块可驻留在RAM存储器、闪存存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或任何其他形式的非暂态计算机可读存储介质中。示例性存储介质可以耦接到处理器设备,使得处理器设备可以从存储介质读取信息和向存储介质写入信息。在替代方案中,存储介质可以是处理器设备的组成部分。处理器设备和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在替代方案中,处理器设备和存储介质可作为分立部件驻留在用户终端中。
本文所述的主题有时说明了包含在不同其它部件内或与不同其它部件连接的不同部件。应当理解,此类描绘的架构仅是示例性的,并且事实上实现相同功能的许多其它架构可被实现。在概念意义上,用以实现相同功能的部件的任何布置被有效地“相关联”,使得实现期望功能。因此,本文组合以实现特定功能的任何两个部件可被视为彼此“相关联”,使得实现期望功能,而与架构或中间部件无关。同样地,如此相关联的任何两个部件还可被视为彼此“可操作地连接”、或“可操作地耦接”以实现期望功能,并且能够如此相关联的任何两个部件还可被视为彼此“可操作地耦接”以实现期望功能。可操作地耦接的具体示例包括但不限于物理上可匹配和/或物理上交互的部件和/或无线可交互和/或无线交互的部件和/或逻辑上交互和/或逻辑上可交互的部件。
关于在本文基本上任何复数和/或单数术语的使用,本领域的技术人员可视上下文和/或应用而定从复数转化为单数和/或从单数转化为复数。为了清楚起见,本文可明确地阐述各种单数/复数变换。
本领域的技术人员应当理解,一般而言,在本文中,尤其在所附权利要求书中所用的术语(例如,所附权利要求书中的主体)通常意指“开放性”术语(例如,术语“包括”应被解释为“包括但不限于”,术语“具有”应被解释为“具有至少”,术语“包括”应被解释为“包括但不限于”等)。本领域的技术人员还应当理解,如果意图引入特定数目的引入的权利要求表述,则这种意图将在权利要求书中明确表述,并且在不存在此类表述的情况下,不存在此类意图。例如,为了有助于理解,以下所附权利要求书可包含使介绍性短语“至少一个”和“一个或多个”以引入权利要求表述。然而,此类短语的使用不应被解释为暗示由不定冠词“一个”或“一种”引入的权利要求表述将包含此类引入的权利要求表述的任何特定权利要求书限制为仅包含一个此类表述的发明,即使当相同权利要求包括介绍性短语“一个或多个”或“至少一个”以及不定冠词诸如“一个”或“一种”(例如,“一个”和/或“一种”通常应被解译为表示“至少一个”或“一个或多个”)时也是如此;使用用于引入权利要求表述的定冠词也是如此。此外,即使明确地表述了特定数目的引入的权利要求表述,本领域的那些技术人员也将认识到,此类表述通常应被解释为意思是至少所述表述的数目(例如,在没有其它修饰语的情况下,“两种表述”的无修饰表述通常意思是至少两种表述,或者两种或更多种表述)。此外,在其中使用类似于“A、B和C等中的至少一者”的常规惯例的那些情况下,一般来讲这种构造意指是在本领域的技术人员将理解常规惯例的意义上(例如,“具有A、B和C中的至少一者的系统”将包括但不限于单独具有A、单独具有B、单独具有C、同时具有A和B、同时具有A和C、同时具有B和C、和/或同时具有A、B和C的系统等)。在其中使用类似于“A、B或C等中的至少一者”的常规惯例的那些情况下,一般来讲这种构造意指是在本领域的技术人员将理解常规惯例的意义上(例如,“具有A、B或C中的至少一者的系统”将包括但不限于单独具有A、单独具有B、单独具有C、同时具有A和B、同时具有A和C、同时具有B和C、和/或同时具有A、B和C的系统等)。本领域技术人员将会进一步理解,实际上无论是在说明书、权利要求书还是在附图中,呈现两个或更多个替代性术语的任何分离性词语和/或短语应被理解为设想包括术语中的一个、术语中的任一个或两个术语的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或“A和B”的可能性。此外,除非另外指明,否则使用词语“大约”、“约”、“周围”,“基本上”等意思是加或减百分之十。
已出于说明和描述的目的呈现了例示性实施方案的前述描述。在所公开的精确形式方面并非旨在是穷举性的或限制性的,并且根据上述教导内容,修改形式和变型形式是可能的,或者可从所公开的实施方案的实践中获得。本发明的范围旨在由所附权利要求书及其等效物限定。
Claims (15)
1.一种装置,所述装置包括:
张量计算集群,所述张量计算集群包括多个张量计算单元以处理机器学习应用程序中的多个子特征映射图;
张量存储器集群,所述张量存储器集群包括多个张量特征映射图存储器单元以存储所述多个子特征映射图;和
电路,所述电路用于:
将输入特征映射图划分为所述多个子特征映射图,使得所述多个子特征映射图中的每个子特征映射图中的稀疏性满足预先确定的阈值;以及
将所述多个子特征映射图中的每个子特征映射图分派给所述多个张量计算单元中的一个张量计算单元和所述多个张量特征映射图存储器单元中的一个张量特征映射图存储器单元以用于并行处理。
2.根据权利要求1所述的装置,其中所述多个张量特征映射图存储器单元中的每个张量特征映射图存储器单元连接到所述多个张量计算单元中的一个张量计算单元,使得所述电路发送所述多个子特征映射图中的第一子特征映射图,所述第一子特征映射图被分派给所述多个张量计算单元中的第一张量计算单元并且将存储在所述多个张量特征映射图存储器单元中与所述第一张量计算单元相关联的第一张量特征映射图存储器单元中。
3.根据权利要求1至2中任一项所述的装置,其中所述张量存储器集群还包括用于存储核矩阵的张量权重存储器。
4.根据权利要求3所述的装置,其中所述张量权重存储器包括用于存储所述核矩阵并将所述核矩阵发送到所述张量计算集群的多个缓冲器。
5.根据权利要求1至4中任一项所述的装置,其中所述多个张量特征映射图存储器单元中的每个张量特征映射图存储器单元包括多个缓冲器、用于在所述多个缓冲器中写入所述多个子特征映射图的写入开关,以及用于所述多个缓冲器读取所述多个子特征映射图的读取开关。
6.根据权利要求5所述的装置,其中所述多个缓冲器包括用于存储所述多个子特征映射图中的至少一个子特征映射图的数据值的第一缓冲器和用于存储与所述数据值对应的索引值的第二缓冲器。
7.根据权利要求1至6中任一项所述的装置,其中为了将所述输入特征映射图划分为所述多个子特征映射图,所述电路:
将所述输入特征映射图切分为预先确定数量的初始划分区;以及
重组所述初始划分区中的至少一些初始划分区,使得所述初始划分区中的每个初始划分区在所述重组之后满足所述预先确定的阈值。
8.根据权利要求7所述的装置,其中所述初始划分区的所述预先确定的数量基于所述多个张量计算单元的数量。
9.根据权利要求7所述的装置,其中所述电路通过从相邻初始划分区向第一初始划分区重新分配行和/或列来重组所述初始划分区中的至少一些初始划分区。
10.根据权利要求1至9中任一项所述的装置,其中所述多个子特征映射图中的第一子特征映射图与所述多个子特征映射图中的第二子特征映射图具有不同的尺寸。
11.根据权利要求1至10中任一项所述的装置,其中所述多个张量计算单元中的每个张量计算单元包括多个乘法器,并且其中所述多个乘法器中的每个乘法器计算所述多个子特征映射图中的第一子特征映射图的数据值和来自核矩阵的权重值之间的乘积。
12.根据权利要求1至10中任一项所述的装置,其中所述多个张量计算单元中的每个张量计算单元一次处理处理所述多个子特征映射图中的一个子特征映射图以生成输出子特征映射图,并且其中所述电路组合来自所述多个张量计算单元中的每个张量计算单元的所述输出子特征映射图,以获得针对所述输入特征映射图的输出特征映射图。
13.一种方法,所述方法包括:
由机器学习应用程序中的加速器将输入特征映射图划分为多个子特征映射图,其中所述多个子特征映射图中的每个子特征映射图中的稀疏性满足预先确定的阈值;
由所述加速器将所述多个子特征映射图中的每个子特征映射图分派给张量计算集群的多个张量计算单元中的一个张量计算单元,以并行处理所述多个子特征映射图中的每个子特征映射图;
由所述加速器处理所述多个子特征映射图中的在所述多个张量计算单元中的所述被分派的张量计算单元中的每个子特征映射图,以从所述多个张量计算单元中的每个张量计算单元生成输出子特征映射图;以及
由所述加速器组合来自所述多个张量计算单元中的每个张量计算单元的所述输出子特征映射图,以生成针对所述输入特征映射图的输出特征映射图。
14.根据权利要求13所述的方法,其中将所述输入特征映射图划分为所述多个子特征映射图包括:
将所述输入特征映射图切分为预先确定数量的初始划分区,其中所述初始划分区的所述预先确定的数量基于所述多个张量计算单元的数量;以及
重组所述初始划分区中的至少一些初始划分区,使得所述初始划分区中的每个初始划分区在所述重组之后满足所述预先确定的阈值。
15.根据权利要求13至14中任一项所述的方法,其中当满足所述预先确定的阈值时,所述多个子特征映射图中的每个子特征映射图包括基本上类似数量或百分比的非零值,并且所述多个子特征映射图中的至少一些子特征映射图与所述多个子特征映射图中的其他子特征映射图具有不同的尺寸。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/830,129 US11797830B2 (en) | 2020-03-25 | 2020-03-25 | Flexible accelerator for sparse tensors in convolutional neural networks |
US16/830,129 | 2020-03-25 | ||
PCT/US2020/035428 WO2021194529A1 (en) | 2020-03-25 | 2020-05-29 | Flexible accelerator for sparse tensors in convolutional neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114730375A true CN114730375A (zh) | 2022-07-08 |
Family
ID=77856776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080081178.7A Pending CN114730375A (zh) | 2020-03-25 | 2020-05-29 | 卷积神经网络中用于稀疏张量的灵活加速器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11797830B2 (zh) |
EP (1) | EP4049188A4 (zh) |
CN (1) | CN114730375A (zh) |
WO (1) | WO2021194529A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755683B2 (en) | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
US20210357748A1 (en) * | 2020-05-14 | 2021-11-18 | Samsung Electronics Co., Ltd. | Hierarchical weight preprocessing for neural network accelerator |
US11842273B2 (en) * | 2020-09-23 | 2023-12-12 | Arm Limited | Neural network processing |
WO2024065860A1 (en) * | 2022-10-01 | 2024-04-04 | Intel Corporation | Hardware support for n-dimensional matrix load and store instructions |
CN115860079B (zh) * | 2023-01-30 | 2023-05-12 | 深圳市九天睿芯科技有限公司 | 神经网络加速装置、方法、芯片、电子设备及存储介质 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883045B1 (en) * | 2001-10-15 | 2005-04-19 | Advanced Micro Devices, Inc. | Apparatus for reordering graphics responses in a peripheral interface circuit for an I/O node of a computer system |
US7853539B2 (en) * | 2005-09-28 | 2010-12-14 | Honda Motor Co., Ltd. | Discriminating speech and non-speech with regularized least squares |
US7454449B2 (en) * | 2005-12-20 | 2008-11-18 | International Business Machines Corporation | Method for reorganizing a set of database partitions |
JP2010004416A (ja) * | 2008-06-23 | 2010-01-07 | Fujitsu Ltd | 移動無線装置 |
JP5376920B2 (ja) | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
US9292550B2 (en) * | 2013-02-21 | 2016-03-22 | Oracle International Corporation | Feature generation and model selection for generalized linear models |
US10445232B2 (en) | 2015-07-14 | 2019-10-15 | Western Digital Technologies, Inc. | Determining control states for address mapping in non-volatile memories |
US20170316338A1 (en) * | 2016-04-29 | 2017-11-02 | Hewlett Packard Enterprise Development Lp | Feature vector generation |
US11055063B2 (en) | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
GB201607713D0 (en) | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
CN105893159B (zh) * | 2016-06-21 | 2018-06-19 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
US10997496B2 (en) | 2016-08-11 | 2021-05-04 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US10241971B2 (en) | 2016-12-15 | 2019-03-26 | Hewlett Packard Enterprise Development Lp | Hierarchical computations on sparse matrix rows via a memristor array |
US10579591B1 (en) | 2016-12-20 | 2020-03-03 | Amazon Technologies, Inc. | Incremental block compression |
US20180181864A1 (en) * | 2016-12-27 | 2018-06-28 | Texas Instruments Incorporated | Sparsified Training of Convolutional Neural Networks |
US10180928B2 (en) | 2016-12-31 | 2019-01-15 | Intel Corporation | Heterogeneous hardware accelerator architecture for processing sparse matrix data with skewed non-zero distributions |
US11783060B2 (en) | 2017-01-24 | 2023-10-10 | The Trustees Of Princeton University | System and method for energy efficient sensors with compression, artificial intelligence, and security |
US10817587B2 (en) | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
TWI812254B (zh) | 2017-05-17 | 2023-08-11 | 美商谷歌有限責任公司 | 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體 |
US20180349095A1 (en) * | 2017-06-06 | 2018-12-06 | ScaleFlux, Inc. | Log-structured merge tree based data storage architecture |
CN107832845A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
US10482156B2 (en) | 2017-12-29 | 2019-11-19 | Facebook, Inc. | Sparsity-aware hardware accelerators |
US10970080B2 (en) | 2018-02-08 | 2021-04-06 | Marvell Asia Pte, Ltd. | Systems and methods for programmable hardware architecture for machine learning |
US11687762B2 (en) | 2018-02-27 | 2023-06-27 | Stmicroelectronics S.R.L. | Acceleration unit for a deep learning engine |
US20190278600A1 (en) | 2018-03-09 | 2019-09-12 | Nvidia Corporation | Tiled compressed sparse matrix format |
CN108470009B (zh) * | 2018-03-19 | 2020-05-29 | 上海兆芯集成电路有限公司 | 处理电路及其神经网络运算方法 |
CN108510066B (zh) | 2018-04-08 | 2020-05-12 | 湃方科技(天津)有限责任公司 | 一种应用于卷积神经网络的处理器 |
CN110163042B (zh) | 2018-04-13 | 2023-05-30 | 腾讯科技(深圳)有限公司 | 图像识别方法及装置 |
US11055139B2 (en) | 2018-06-12 | 2021-07-06 | International Business Machines Corporation | Smart accelerator allocation and reclamation for deep learning jobs in a computing cluster |
US11449728B2 (en) * | 2018-07-01 | 2022-09-20 | Al Falcon Ltd. | Method of optimization of operating a convolutional neural network and system thereof |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
JP7103427B2 (ja) * | 2018-10-11 | 2022-07-20 | 日本電信電話株式会社 | 情報処理装置、データ分析方法及びプログラム |
US11227030B2 (en) | 2019-04-01 | 2022-01-18 | Wave Computing, Inc. | Matrix multiplication engine using pipelining |
US20200341772A1 (en) | 2019-04-29 | 2020-10-29 | DeGirum Corporation | Efficient Architectures For Deep Learning Algorithms |
WO2020252762A1 (en) * | 2019-06-21 | 2020-12-24 | Intel Corporation | Generic modular sparse three-dimensional (3d) convolution design utilizing sparse 3d group convolution |
US20210182025A1 (en) | 2019-12-12 | 2021-06-17 | Samsung Electronics Co., Ltd. | Accelerating 2d convolutional layer mapping on a dot product architecture |
US11908542B2 (en) * | 2019-12-23 | 2024-02-20 | Intel Corporation | Energy efficient memory array with optimized burst read and write data access |
US11755683B2 (en) * | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
US20210256357A1 (en) | 2020-02-04 | 2021-08-19 | University Of Louisiana At Lafayette | Embedded stochastic-computing accelerator architecture and method for convolutional neural networks |
US11462003B2 (en) * | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
-
2020
- 2020-03-25 US US16/830,129 patent/US11797830B2/en active Active
- 2020-05-29 WO PCT/US2020/035428 patent/WO2021194529A1/en unknown
- 2020-05-29 CN CN202080081178.7A patent/CN114730375A/zh active Pending
- 2020-05-29 EP EP20927166.7A patent/EP4049188A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4049188A1 (en) | 2022-08-31 |
WO2021194529A1 (en) | 2021-09-30 |
US20210303976A1 (en) | 2021-09-30 |
EP4049188A4 (en) | 2022-12-28 |
US11797830B2 (en) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114730374A (zh) | 卷积神经网络中用于稀疏张量的灵活加速器 | |
CN114730375A (zh) | 卷积神经网络中用于稀疏张量的灵活加速器 | |
JP7166389B2 (ja) | ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 | |
US11507382B2 (en) | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit | |
CN110516801B (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器 | |
US20220083480A1 (en) | Exploiting input data sparsity in neural network compute units | |
CN113424201A (zh) | 神经网络处理器 | |
US11755683B2 (en) | Flexible accelerator for sparse tensors (FAST) in machine learning | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
CN113261015A (zh) | 神经网络系统及数据处理技术 | |
CN111860807A (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
CN111886605B (zh) | 针对多个输入数据集的处理 | |
CN113850377A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114358261A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN115470176B (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
CN113837923B (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN118504632A (zh) | 二值深度卷积神经网络加速器、方法及电子芯片 | |
US12067484B2 (en) | Learning neural networks of programmable device blocks directly with backpropagation | |
CN115878543A (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
CN116150555A (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
Judd | Exploiting Data Characteristics in The Design of Accelerators for Deep Learning | |
CN117908830A (zh) | 数据处理装置及操作方法、计算装置、存储介质 | |
CN114358263A (zh) | 执行神经网络计算的装置、板卡、方法及可读存储介质 |
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 |