CN117121018A - 用于在稀疏加速器上执行机器学习模型操作的方法和装置 - Google Patents
用于在稀疏加速器上执行机器学习模型操作的方法和装置 Download PDFInfo
- Publication number
- CN117121018A CN117121018A CN202280026134.3A CN202280026134A CN117121018A CN 117121018 A CN117121018 A CN 117121018A CN 202280026134 A CN202280026134 A CN 202280026134A CN 117121018 A CN117121018 A CN 117121018A
- Authority
- CN
- China
- Prior art keywords
- data
- sparsity
- circuitry
- accelerator
- weight
- 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
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000010801 machine learning Methods 0.000 title abstract description 177
- 230000001133 acceleration Effects 0.000 claims abstract description 405
- 230000004913 activation Effects 0.000 claims abstract description 306
- 239000000872 buffer Substances 0.000 claims abstract description 159
- 239000013598 vector Substances 0.000 claims description 312
- 230000004044 response Effects 0.000 claims description 42
- 230000010339 dilation Effects 0.000 claims description 41
- 238000004519 manufacturing process Methods 0.000 abstract description 11
- 238000001994 activation Methods 0.000 description 280
- 230000015654 memory Effects 0.000 description 66
- 238000013528 artificial neural network Methods 0.000 description 57
- 238000003860 storage Methods 0.000 description 55
- 238000012545 processing Methods 0.000 description 48
- 230000008569 process Effects 0.000 description 43
- 238000012549 training Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 22
- 238000013527 convolutional neural network Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 239000004065 semiconductor Substances 0.000 description 13
- 238000011176 pooling Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000001976 improved effect Effects 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000000306 recurrent effect Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 241001465754 Metazoa Species 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013145 classification model Methods 0.000 description 2
- 238000004138 cluster model Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000001152 differential interference contrast microscopy Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101100272669 Aromatoleum evansii boxA gene Proteins 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 229910001416 lithium ion Inorganic materials 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000002922 simulated annealing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/08—Learning methods
-
- 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
- G06N3/045—Combinations of networks
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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
公开了用于在稀疏加速器上执行机器学习模型操作的方法、装置、系统和制品。一种示例装置包括:第一电路系统;第二电路系统,该第二电路系统用于基于加速操作来生成稀疏性数据;以及第三电路系统,该第三电路系统用于指令一个或多个数据缓冲器基于稀疏性数据将激活数据或权重数据中的至少一者提供到第一电路系统,该第一电路系统用于基于激活数据或权重数据中的至少一者来执行加速操作。
Description
技术领域
本公开总体上涉及处理器,并且更具体地,涉及用于在稀疏加速器上执行机器学习模型操作的方法和装置。
背景技术
近年来,对计算密集型处理能力(诸如图像处理能力)的需求已经移动超出了高功率专用桌面型硬件的范围,并且已成为对个人和/或其他移动设备的期望。移动设备通常包括受大小约束、温度管理约束和/或供应功率约束限制的处理能力。
附图说明
图1是包括示例加速器编译器的示例计算系统的图示,该示例加速器编译器用于基于要由示例加速电路系统执行的加速操作来配置该加速电路系统。
图2是图1的示例加速电路系统的示例实现方式的图示。
图3是图1的示例加速器编译器的示例实现方式的框图。
图4是可由图1和/或图2的示例加速电路系统执行的示例常规卷积操作的图示。
图5是可由图1和/或图2的示例加速电路系统执行的示例深度方向卷积操作的图示。
图6是可由图1和/或图2的示例加速电路系统实现的示例稀疏性比特掩码向量的图示。
图7是可由图1和/或图2的示例加速电路系统执行的示例分组卷积操作的图示。
图8是可由图1和/或图2的示例加速电路系统执行的、可用于实现图7的示例分组卷积操作的示例比特掩码的图示。
图9是可由图1和/或图2的示例加速电路系统执行的示例逐元素加法操作的图示。
图10是可由图1和/或图2的示例加速电路系统执行的另一示例逐元素加法操作的图示。
图11是可由图1和/或图2的示例加速电路系统执行的又一示例逐元素加法操作的图示。
图12是可由图1和/或图2的示例加速电路系统执行的示例扩张卷积操作的图示。
图13是可由图1和/或图2的示例加速电路系统实现的示例核(kernel)的图示。
图14是表示可以使用可被执行以执行加速操作的示例机器可读指令来执行和/或使用被配置成用于实现图1和/或图2的示例加速电路系统以执行加速操作的硬件来执行的示例过程的流程图。
图15是表示可以使用可被执行以执行加速操作的示例机器可读指令来执行和/或使用被配置成用于实现图1和/或图2的示例加速电路系统以执行加速操作的硬件来执行的示例过程的另一流程图。
图16是表示可以使用可被执行以基于加速模式执行加速操作的示例机器可读指令来执行和/或使用被配置成用于实现图1和/或图2的示例加速电路系统以基于加速模式执行加速操作的硬件来执行的示例过程的流程图。
图17是表示可以使用可被执行以基于机器学习模型的经编译的配置生成可执行文件的示例机器可读指令来执行和/或使用被配置成用于实现图1和/或图3的示例加速器编译器以基于机器学习模型的经编译的配置来生成可执行文件的硬件来执行的示例过程的流程图。
图18是被构造成用于执行图15、图16和/或图17的示例机器可读指令以实现图1和/或图3的示例加速器编译器以及/或者图1和/或图2的示例加速电路系统的示例处理平台的框图。
图19是图18的处理器电路系统的示例实现方式的框图。
图20是图18的处理器电路系统的另一示例实现方式的框图。
图21是用于将软件分发到客户端设备的示例软件分发平台的框图。
具体实施方式
附图并未按比例绘制。一般来说,贯穿(一个或多个)附图和所附书面描述,相同的附图标记将用于指代相同或类似的部分。除非另有指示,否则连接参考(例如,附接的、耦合的、连接的、以及结合的)应被广义地解释并且可包括元件集合之间的中间构件以及元件之间的相对移动。由此,连接参考不一定暗示两个元件直接地连接并彼此处于固定的关系。
当标识可以单独地被指代的多个要素或组件时,描述符“第一”、“第二”、“第三”等等在本文中被使用。除非基于它们的使用上下文另有规定或理解,否则此类描述符并非旨在赋予优先级、物理次序或列表中的布置、或者时间顺序的任何含义,而仅仅是为了易于理解所公开的示例而用作分别指代多个要素或组件的标签。在一些示例中,描述符“第一”可以被用于指代具体实施方式中的要素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来指代同一要素。在此类情况下,应当理解的是,此类描述符仅用于易于引用多个要素或组件。
如本文中所使用,“处理器电路系统”定义为包括(i)一个或多个专用电路,该一个或多个专用电路被构造成用于执行(一个或多个)特定操作并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电硬件),和/或(ii)一个或多个基于半导体的通用电路,该一个或多个基于半导体的通用电路用指令编程以执行特定操作并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电硬件)。处理器电路系统的示例包括经编程微处理器、可实例化指令的现场可编程门阵列(FieldProgrammable Gate Array,FPGA)、中央处理器单元(Central Processor Unit,CPU)、图形处理器单元(Graphics Processor Unit,GPU)、数字信号处理器(Digital SignalProcessor,DSP)、XPU或微控制器以及诸如专用集成电路(Application SpecificIntegrated Circuit,ASIC)之类的集成电路。例如,XPU可以由异构计算系统实现,该异构计算系统包括多种类型的处理器电路系统(例如,一个或多个FPGA、一个或多个CPU、一个或多个GPU、一个或多个DSP等,和/或其组合)和(一个或多个)应用编程接口(applicationprogramming interface,API),该应用编程接口可以将(一个或多个)计算任务分派给多种类型的处理电路系统中最适于执行该(一个或多个)计算任务的无论哪个(或哪几个)处理电路系统。
典型的计算系统(包括个人计算机和/或移动设备)实现计算密集型任务,诸如使人类视觉能够执行的任务自动化的高级图像处理或计算机视觉算法。例如,计算机视觉任务可以包括采集、处理、分析和/或理解数字图像。一些此类任务部分地促进从数字图像提取维度数据以产生数值和/或符号信息。计算机视觉算法可以使用数值和/或符号信息来做出决策和/或以其他方式执行与三维(three-dimensional,3-D)姿态估计、事件检测、对象识别、视频跟踪等相关联的操作。为了支持增强现实(augmented reality,AR)、虚拟现实(virtual reality,VR)、机器人技术和/或其他应用,快速(例如,基本上实时或接近实时)且高效地执行此类任务因此是重要的。
诸如高级图像处理或计算机视觉算法之类的计算密集型任务可以利用诸如卷积神经网络(convolution neural network,CNN或ConvNet)之类的神经网络来实现。CNN是深度人工神经网络(artificial neural network,ANN),通常用于使用卷积对图像进行分类、按相似性对图像进行聚类(例如,照片搜索)和/或在图像内执行对象识别。如本文中所使用,“卷积”被定义为通过积分从两个给定函数导出的函数,其表达函数中的一个函数的形状如何被另一函数的形状修改。由此,CNN可用于通过传递与输入图像上的图像特征(例如,水平线、二维(two-dimensional,2-D)形状等)相对应的一个或多个滤波器的输出以标识输入图像内图像特征的匹配来标识输入图像中所包括的人脸、个人、街道标志、动物等。
CNN获得需要被存储或在计算中被使用以执行一个或多个函数的(例如,从多维数组分解的)向量。由此,CNN可以接收包括与一个或多个图像相对应的数据的多维数组(例如,张量或向量行)。多维数组被分解为向量。此类向量可能包括数千个元素。每个此类元素可以包括大量的比特。具有10000个16比特元素的向量与160000比特的信息相对应。存储此类向量要求大量存储器。然而,此类向量可能包括大量具有零值的元素。因此,一些CNN或其他处理引擎可以将此类向量分解为稀疏向量和稀疏性映射向量(例如,比特映射向量)。
如本文中所定义,“稀疏向量”是按与密集向量相同顺序包括向量的所有非零元素但排除所有零元素的向量。如本文中所定义,“密集向量”是既包括零元素又包括非零元素的输入向量。由此,密集向量[0,0,5,0,18,0,4,0]与稀疏向量是[5,18,4]相对应。如本文中所定义,“稀疏性映射”是包括一比特元素的向量,该一比特元素标识密集向量的各个元素是零还是非零。由此,稀疏性映射可以将密集向量的非零值映射到“1”,并且可以将密集向量的零值映射到“0”。对于上述密集向量[0,0,5,0,18,0,4,0],稀疏性映射可以是[0,0,1,0,1,0,1,0](例如,因为密集向量的第三、第五和第七元素是非零的)。稀疏向量和稀疏性映射的组合表示密集向量(例如,密集向量可以基于对应的稀疏向量和稀疏性映射来生成/重构)。因此,CNN引擎可以基于对应的稀疏向量和稀疏性映射来生成/确定密集向量而无需将密集向量存储在存储器中。
将稀疏向量和稀疏性映射而不是密集向量存储在存储器中可以节省存储器和处理资源(例如,假设(一个或多个)密集向量中存在足够的零)。例如,如果上述密集向量(例如,[0,0,5,0,18,0,4,0])中的每个元素是16比特的信息,则存储该密集向量所需的存储器量是128比特(例如,128比特=8个元素×16比特)。然而,存储对应的稀疏向量(例如,[5,18,4])和稀疏性映射(例如,[0,0,1,0,1,0,1,0])所需的存储器量是64比特(例如,(稀疏向量的3个元素×16比特)+(稀疏性映射的8个元素×1比特))。因此,存储稀疏向量和稀疏性映射而不是对应的密集向量减少了存储此类向量所需的存储器量。附加地,因为被递送到计算引擎中的数据量的减少增加了到计算引擎的递送速度,所以利用稀疏向量和稀疏性映射改进了带宽要求。
机器学习加速器(诸如神经网络加速器(neural network accelerator,NNA))可以使用专用硬件来执行2-D卷积操作。可由机器学习加速器执行的机器学习模型的体系结构正在持续地演进。一些此类体系结构包含了不是常规2-D卷积操作的机器学习层。例如,非2-D卷积操作可以包括深度方向卷积、逐元素加法等。为促进2-D卷积的执行而定制的机器学习加速器可能无法执行此类非2-D卷积。
一些机器学习加速器可以通过将非2-D卷积操作迁移到其他硬件来支持此类非2-D卷积操作。例如,2-D卷积机器学习加速器可以将层迁移到不同的硬件以执行深度方向卷积层并且从该不同的硬件取回输出以促进另一机器学习任务。在一些此类示例中,层的迁移和输出的取回增加了执行非2-D卷积操作时的处理等待时间。例如,由于层被迁移,机器学习加速器可能会变得空闲,这可能显著地使机器学习加速器的性能降级。在一些此类示例中,机器学习加速器的性能也可能由于遍历存储器层次体系以将所迁移的层作为输入供应给不同的硬件以及再次遍历存储器层次体系以用于机器学习加速器从该不同的硬件接收输出并继续处理机器学习网络而降级。
一些机器学习加速器可以使用专用硬件支持非2-D卷积操作。例如,机器学习加速器可以包括用于执行2-D卷积操作的第一硬件和用于执行非2-D卷积操作的第二硬件。在一些此类示例中,在机器学习加速器内包括专用硬件来执行非2-D卷积操作增加了机器学习加速器的总体大小和/或功耗。
在一些实例中,添加用于诸如深度方向和逐元素加法之类的层的专用硬件可能直接使机器学习加速器的性能降级。例如,机器学习加速器的性能可以以每秒万亿次操作(Tera-operation per second,TOPS)被测量,并且机器学习加速器的效率可以以每平方毫米管芯面积的TOPS(TOPS/mm2)和/或每瓦设备功率的TOPS(TOPS/W)被测量。因此,包括专用硬件可能会直接使机器学习加速器的TOPS/mm2性能降级,因为为执行相同数量的操作而增加的管芯面积可能会降低TOPS/mm2度量。包括专用硬件还可能要求在机器学习加速器内包含附加的数据路径,并且当针对可观的操作频率(例如,千兆赫(GHz)的操作频率)时,这些数据路径之间的复用会将显著的复杂性添加到机器学习加速器的物理实现方式。
本文中所公开的示例在稀疏加速器上执行机器学习模型操作。如本文中所使用,“稀疏加速器”是可以通过利用稀疏数据结构(例如,稀疏向量、稀疏性映射向量等)来实现机器学习操作(例如,卷积操作)的硬件加速器。在一些公开的示例中,示例稀疏加速器可以在该稀疏加速器内内部地生成稀疏性信息。例如,稀疏加速器可以生成稀疏或稀疏性信息,该信息包括激活稀疏性数据(例如,稀疏激活数据、(一个或多个)稀疏激活向量等)和/或权重稀疏性数据(例如,稀疏权重数据、(一个或多个)稀疏权重向量等)。在一些此类示例中,与从外部硬件取回稀疏性信息相比,稀疏加速器可以通过内部地生成稀疏性信息来实现增加的带宽。在一些公开的示例中,稀疏加速器可以在稀疏加速器内内部地生成权重信息。在一些此类公开的示例中,与从外部硬件取回权重信息相比,稀疏加速器可以通过内部地生成权重信息来实现增加的带宽。
在一些公开的示例中,稀疏加速器可以调节和/或以其他方式操纵稀疏性比特掩码以在稀疏加速器上实现非2-D卷积操作,该非2-D卷积操作可以包括深度方向卷积、分组卷积、非卷积操作(例如,逐元素加法)、扩张卷积等。在一些公开的示例中,稀疏加速器可以实现自定义操作,其中用户、计算系统等可以标识内部权重数据生成、内部权重稀疏性生成或内部激活稀疏性生成中的至少一者是否要由稀疏加速器执行。
有利地,本文中所公开的示例稀疏加速器可以通过调用稀疏性比特掩码操纵、稀疏性信息的内部生成、权重数据的内部生成等等和/或其组合来将非2-D卷积层作为稀疏机器学习体系结构上的2-D卷积层来执行。有利地,本文中所公开的示例稀疏加速器可以通过将非卷积操作作为卷积操作执行来实现与现有加速器相比改进的功率和性能。有利地,本文中所公开的示例稀疏加速器可以通过将非卷积操作作为卷积操作执行来实现在稀疏机器学习加速器(例如,稀疏神经网络(neural network,NN))上执行机器学习网络(例如,神经网络)的增加的效率。
在一些公开的示例中,稀疏加速器可以对稀疏加速器内的配置寄存器进行编程以内部地生成比特掩码向量、权重数据等,从而操纵经受计算的值并且将(一个或多个)层操作实现为卷积。有利地,比特掩码向量、权重数据等的内部生成可以节省从外部资源读取比特掩码向量、权重数据等的带宽。在一些公开的示例中,稀疏加速器可以操纵存储器中的比特掩码向量值以及读入这些向量以操纵经受计算的值并且将(一个或多个)层操作实现为卷积。
图1是包括示例计算系统102的示例计算环境100的图示,该示例计算系统102包括用于将稀疏加速器配置成用于将非卷积操作作为卷积操作来执行以实现改进的加速器效率和性能的示例加速器编译器104A-104C。在一些示例中,加速器编译器104A-104C从机器学习框架(例如,NN框架)获得输出,并且基于要由稀疏加速器执行和/或以其他方式进行的非卷积操作来编译该输出以用于在稀疏加速器上实现。
图1中所图示示例的计算系统102包括:示例中央处理单元(central processingunit,CPU)106、第一示例加速电路系统(加速电路系统A)108、第二示例加速电路系统(加速电路系统B)110、示例通用处理电路系统112、示例接口电路系统114、示例总线116、示例功率源118和示例数据存储120。在该示例中,数据存储120包括示例配置数据(CONFIG DATA)122和(一个或多个)示例机器学习模型((一个或多个)ML MODEL)124。在图1所图示的示例中进一步描绘的是示例用户接口126、示例网络128和示例外部计算系统130。
在一些示例中,计算系统102是表示以紧凑格式包含计算机或其他电子系统的组件的一个或多个集成电路(integrated circuit,IC)(例如,紧凑型IC)的片上系统(systemon a chip,SoC)。例如,计算系统102可以使用一个或多个可编程处理器、硬件逻辑和/或硬件外围设备和/或接口的组合来实现。附加地或替代地,图1的示例计算系统102可包括存储器、(一个或多个)输入/输出(input/output,I/O)端口和/或辅助存储装置。例如,计算系统102包括全部处于同一衬底(例如,硅衬底、基于半导体的衬底等)上的加速编译器104A-104C、CPU 106、第一加速电路系统108、第二加速电路系统110、通用处理电路系统112、接口电路系统114、总线116、功率源118、数据存储120、存储器、(一个或多个)I/O端口和/或辅助存储装置。在一些示例中,计算系统102包括数字、模拟、混合信号、射频(radio frequency,RF)或其他信号处理功能。
在图1的所图示的示例中,第一加速电路系统108是人工智能(artificialintelligence,AI)加速器。例如,第一加速电路系统108可以由硬件加速器来实现,该硬件加速器被配置成用于对AI任务或工作负载(诸如NN(例如,人工神经网络(artificialneural network,ANN))、机器视觉、机器学习等)进行加速。在一些示例中,第一加速电路系统108可以实现稀疏加速器(例如,稀疏硬件加速器)。在一些示例中,第一加速电路系统108可以实现视觉处理单元(vision processing unit,VPU)以实行机器或计算机视觉计算任务,训练和/或执行物理神经网络,和/或训练和/或执行神经网络。在一些示例中,第一加速电路系统108可以训练和/或执行卷积神经网络(convolution neural network,CNN)、深度神经网络(deep neural network,DNN)、ANN、循环神经网络(recurrent neural network,RNN)等、和/或其组合。
在图1所图示的示例中,第二加速电路系统110是图形处理单元(GPU)。例如,第二加速电路系统110可以是生成计算机图形、执行通用计算等的GPU。在一些示例中,第二加速电路系统110是第一加速电路系统108的另一实例。在一些此类示例中,计算系统102可以提供要由第一加速电路系统108和第二加速电路系统110并行地执行的AI/ML工作负载的(一个或多个)部分。
图1的示例的通用处理电路系统112是可编程处理器(诸如CPU或GPU)。替代地,第一加速电路系统108、第二加速电路系统110和/或通用处理电路系统112中的一个或多个可以是诸如数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(programmablelogic device,PLD)和/或现场可编程逻辑器件(field programmable logic device,FPLD)(例如,现场可编程门阵列(FPGA))之类的不同类型的硬件。
在图1的所图示的示例中,接口电路系统114是可以实现一个或多个接口(例如,计算接口、网络接口等)的硬件。例如,接口电路系统114可以是实现诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口之类的通信设备(例如,网络接口卡(network interface card,NIC)、智能NIC、网关、交换机等)的硬件、软件和/或固件,以促进经由网络128来与外部机器(例如,任何类型的计算设备)交换数据。在一些示例中,通信经由连接、以太网连接、数字订户线路(digital subscriber line,DSL)连接、无线保真(Wi-Fi)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光学连接(例如,光纤连接)等来实行。例如,接口电路系统114可由任何类型的接口标准(诸如/>接口、以太网接口、Wi-Fi接口、通用串行总线(universal serial bus,USB)、近场通信(near field communication,NFC)接口和/或外围组件互连快速(peripheral component interconnect express,PCIe)接口)实现。
计算系统102包括用于向计算系统102的硬件递送功率的功率源118。在一些示例中,功率源118可以实现功率递送网络。例如,功率源118可以实现交流转直流(AC/DC)功率供应。在一些示例中,功率源118可以耦合到电网基础设施,诸如AC干线(例如,110伏(volt,V)AC电网干线、220V AC电网干线等)。附加地或替代地,功率源118可以由电池实现。例如,功率源118可以是有限能量设备(诸如锂离子电池或任何其他可充电电池或功率源)。在一些此类示例中,功率源118可以是使用电源适配器或转换器(例如,AC/DC功率转换器)、墙壁插座(例如,110V AC墙壁插座、220V AC墙壁插座等)、便携式储能设备(例如,便携式充电宝、便携式动力电池等)等可充电的。
图1的所图示示例的计算系统102包括用于记录数据(例如,配置数据122、(一个或多个)ML模型124等)的数据存储120。本示例的数据存储120可以由易失性存储器(例如,同步动态随机存取存储器(Synchronous Dynamic Random Access Memory,SDRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、RAMBUS动态随机存取存储器(RAMBUSDynamic Random Access Memory,RDRAM)等)和/或非易失性存储器(例如,闪存)实现。数据存储120可以附加地或替代地由一个或多个双倍数据速率(doubledata rate,DDR)存储器(诸如DDR、DDR2、DDR3、DDR4、移动DDR(mobile DDR,mDDR)等)实现。数据存储120可以附加地或替代地由一个或多个大容量存储设备来实现,该一个或多个大容量存储设备诸如(一个或多个)硬盘驱动器(hard disk drive,HDD)、(一个或多个)致密盘(compact disk,CD)驱动器、(一个或多个)数字多功能盘(digital versatiledisk,DVD)驱动器、(一个或多个)固态盘(solid-state disk,SSD)驱动器等。尽管在所图示的示例中数据存储120被图示为单个数据存储,但是数据存储120可以由任何数量和/或(一种或多种)类型的数据存储来实现。此外,存储在数据存储120中的数据可以采用任何数据格式,诸如例如,二进制数据、逗号分隔的数据、制表符分隔的数据、结构化查询语言(structured query language,SQL)结构、可执行文件等。
在图1的所图示的示例中,计算系统102与用户接口126进行通信。例如,用户接口126可以由图形用户界面(graphical user interface,GUI)、应用用户界面等实现,其可以在与计算系统102电路连接和/或以其他方式与计算系统102通信的显示设备上呈现给用户。在一些此类示例中,用户(例如,开发者、IT管理员、客户等)经由用户接口126控制计算系统102,配置、训练和/或执行(一个或多个)ML模型124等。替代地,计算系统102可以包括和/或以其他方式实现用户接口126。
在图1的所图示的示例中,加速器编译器104A-104C、CPU 106、第一加速电路系统108、第二加速电路系统110、通用处理电路系统112、接口电路系统114、功率源118和数据存储120经由总线116与彼此中的一者(或多者)进行通信。例如,总线116可以由集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(Serial Peripheral Interface,SPI)总线、外围组件互连(Peripheral Component Interconnect,PCI)总线或PCIe总线中的至少一者来实现。附加地或替代地,总线116可以由任何其他类型的计算或电气总线来实现。
在图1所图示的示例中,网络128是因特网。然而,本示例的网络128可以使用任何合适的(一个或多个)有线和/或无线网络来实现,该(一个或多个)有线和/或无线网络包括例如一个或多个数据总线、一个或多个局域网(Local Area Network,LAN)、一个或多个无线LAN、一个或多个蜂窝网络、一个或多个私有网络、一个或多个公共网络等。在一些示例中,网络128使得计算系统102能够与外部计算系统130中的(一个或多个)外部计算系统130进行通信。
在图1的所图示的示例中,外部计算系统130包括和/或以其他方式实现要在其上执行(一个或多个)ML模型124的一个或多个计算设备。在该示例中,外部计算系统130包括示例桌面型电脑132、示例移动设备(例如,智能电话、支持因特网的智能电话等)134、示例膝上型电脑136、示例平板(例如,平板电脑、支持因特网的平板电脑等)138,以及示例服务器140。在一些示例中,可以使用比图1中描绘的外部计算系统130更少或更多的外部计算系统130。附加地或替代地,外部计算系统130可以包括、对应于和/或以其他方式表示任何其他类型和/或数量的计算设备。
在一些示例中,外部计算系统130中的一个或多个执行(一个或多个)ML模型124中的(一个或多个)ML模型124以处理计算工作负载(例如,AI/ML工作负载)。例如,移动设备134可以被实现为在单个SoC上具有一个或多个处理器(例如,CPU、GPU、VPU、AI或NN专用处理器等)来使用(一个或多个)ML模型124中的(一个或多个)ML模型124处理AI/ML工作负载的蜂窝或移动电话。在一些示例中,桌面型电脑132、膝上型电脑136、平板电脑和/或服务器140可以被实现为在一个或多个SoC上具有一个或多个处理器(例如,CPU、GPU、VPU、AI/NN专用处理器等)来使用(一个或多个)ML模型124中的(一个或多个)ML模型124处理(一个或多个)AI/ML工作负载的(一个或多个)计算设备。在一些示例中,服务器140可以实现这样的一个或多个服务器(例如,物理服务器、虚拟化服务器等、和/或其组合):该一个或多个服务器可以实现数据设施、云服务(例如,公共云或私有云提供方、基于云的存储库等)等,以使用(一个或多个)ML模型124中的(一个或多个)ML模型124来处理(一个或多个)AI/ML工作负载。
在图1的所图示的示例中,计算系统102包括第一加速器编译器104A(例如,加速器编译器104A-104C的第一实例)、第二加速器编译器104B(例如,加速器编译器104A-104C的第二实例)和第三加速器编译器104C(例如,加速器编译器104A-104C的第三实例)(本文中统称为加速器编译器104A-104C,除非另外指定)。在该示例中,第一加速器编译器104A由CPU 106来实现(例如,由CPU 106的硬件、软件和/或固件来实现)。
在图1的所图示的示例中,第二加速器编译器104B由通用处理电路系统112来实现(例如,由通用处理电路系统112的硬件、软件和/或固件来实现)。在该示例中,第三加速器编译器104C处于CPU 106的外部。例如,第三加速器编译器104C可以由计算系统102的硬件、软件和/或固件来实现。在一些此类示例中,第三加速器编译器104C可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)GPU、(一个或多个)DSP、(一个或多个)ASIC、(一个或多个)PLD和/或(一个或多个)FPLD来实现。
在一些示例中,第一加速器编译器104A、第二加速器编译器104B、第三加速器编译器104C和/或其(一个或多个)部分中的一者或多者可以诸如通过用一个或多个容器、一个或多个虚拟资源(例如,计算物理硬件资源、存储器物理硬件资源、联网物理硬件资源、存储物理硬件资源等的虚拟化)、一个或多个虚拟机等来实现而被虚拟化。在一些示例中,第一加速器编译器104A、第二加速器编译器104B、第三加速器编译器104C和/或其(一个或多个)部分中的一者或多者可以由计算系统102的(一个或多个)不同资源来实现。替代地,计算系统102可以不包括第一加速器编译器104A、第二加速器编译器104B和/或第三加速器编译器104C中的一者或多者。
在图1的所图示的示例中,加速器编译器104A-104C可以基于配置数据122来编译AI/ML框架以用于在加速电路系统108、110中的一者(或多者)上实现。在一些示例中,配置数据122可以包括AI/ML配置数据(例如,寄存器配置、激活数据、激活稀疏性数据、权重数据、权重稀疏性数据、超参数等)、要被执行的卷积操作(例如,2-D卷积、深度方向卷积、分组卷积、扩张卷积等)、非卷积操作(例如,逐元素加法操作)等、和/或其组合。在一些示例中,加速器编译器104A-104C可以编译AI/ML框架以生成可由加速电路系统108、110中的一者(或多者)执行的可执行构造。
在图1的所图示的示例中,加速器编译器104A-104C可以指令、指引和/或以其他方式调用加速电路系统108、110中的一者(或多者)来执行(一个或多个)ML模型124中的(一个或多个)ML模型124。例如,(一个或多个)ML模型124可以实现AI/ML模型。AI(包括机器学习(machine learning,ML)、深度学习(deep learning,DL)和/或其他驱动人工机器的逻辑)使机器(例如,计算机、逻辑电路等)能够使用模型来处理输入数据,以基于先前由模型经由训练过程习得的模式和/或关联来生成输出。例如,(一个或多个)机器学习模型124可以用数据来训练以识别模式和/或关联,并且在处理输入数据时遵循此类模式和/或关联,使得(一个或多个)其他输入得到与所识别的模式和/或关联一致的(一个或多个)输出。
存在许多不同类型的机器学习模型和/或机器学习体系结构。在一些示例中,加速器编译器104A-104C生成(一个或多个)机器学习模型124作为(一个或多个)神经网络模型。加速器编译器104A-104C可以调用接口电路系统114以将(一个或多个)机器学习模型124传送到外部计算系统130中的(一个或多个)外部计算系统130。使用神经网络模型使得加速电路系统108、110能够执行AI/ML工作负载。通常,适合在本文中所公开的示例中使用的机器学习模型/体系结构包括循环神经网络。然而,可以附加地或替代地使用其他类型的机器学习模型,诸如有监督学习ANN模型、聚类模型、分类模型等、和/或其组合。示例有监督学习ANN模型可包括两层(2层)径向基神经网络(radial basis neural network,RBN)、学习向量量化(learning vector quantization,LVQ)分类神经网络等。示例聚类模型可包括k均值聚类、分层聚类、均值移位聚类、基于密度的聚类等。示例分类模型可包括逻辑回归、支持向量机或网络、朴素贝叶斯等。在一些示例中,加速器编译器104A-104C可编译和/或以其他方式将(一个或多个)机器学习模型124中的(一个或多个)机器学习模型124生成为轻量级机器学习模型。
一般而言,实现ML/AI系统涉及两个阶段:学习/训练阶段和推断阶段。在学习/训练阶段,使用训练算法以基于例如训练数据将(一个或多个)机器学习模型124训练成根据模式和/或关联来操作。一般而言,(一个或多个)机器学习模型124包括引导输入数据如何被变换成输出数据的内部参数(例如,配置数据122),诸如通过(一个或多个)机器学习模型124内的一系列节点和连接来将输入数据变换成输出数据。附加地,超参数(例如,配置数据122)被用作训练过程的、用于控制学习如何被执行(例如,学习率、要在机器学习模型中使用的层的数量等)的部分。超参数被定义为是在发起训练过程之前被确定的训练参数。
可以基于ML/AI模型的类型和/或预期输出来执行不同类型的训练。例如,加速器编译器104A-104C可以调用有监督训练以使用输入和对应的预期的(例如,标记的)输出来选择(例如,通过在选择参数的组合上迭代)减少模型误差的、用于(一个或多个)机器学习模型124的参数。如本文中所使用,“标记”指的是机器学习模型的预期输出(例如,分类、预期输出值等)。替代地,加速器编译器104A-104C可以调用无监督训练(例如,用于深度学习、机器学习的子集等),该无监督训练(例如,在没有预期的(例如,标记的)输出的益处情况下)涉及从输入推断模式来选择用于(一个或多个)机器学习模型124的参数。
在一些示例中,加速器编译器104A-104C使用操作可观察量的无监督聚类来训练(一个或多个)机器学习模型124。然而,加速器编译器104A-104C可以附加地或替代地使用任何其他训练算法,诸如随机梯度下降、模拟退火、粒子群优化、进化算法、遗传算法、非线性共轭梯度等。
在一些示例中,加速器编译器104A-104C可以训练(一个或多个)机器学习模型124直到误差水平不再降低。在一些示例中,加速器编译器104A-104C可以在计算系统102上本地地训练(一个或多个)机器学习模型124,和/或在通信地耦合到计算系统102的外部计算系统(例如,外部计算系统130中的(一个或多个)外部计算系统130)处远程地训练(一个或多个)机器学习模型124。在一些示例中,加速器编译器104A-104C使用控制学习如何被执行的超参数(例如,学习率、要在机器学习模型中使用的层的数量等)来训练(一个或多个)机器学习模型124。在一些示例中,加速器编译器104A-104C可以使用控制模型性能和训练速度的超参数(诸如学习率和(一个或多个)正则化参数)。加速器编译器104A-104C可以通过例如反复试验来选择此类超参数以达到最优模型性能。在一些示例中,加速器编译器104A-104C利用贝叶斯超参数优化来确定最优的和/或以其他方式改进的或更高效的网络体系结构,以避免模型过度拟合并改进(一个或多个)机器学习模型124的总体适用性。替代地,加速器编译器104A-104C可以使用任何其他类型的优化。在一些示例中,加速器编译器104A-104C可以执行重新训练。加速器编译器104A-104C可以响应于由计算系统102的用户的(一个或多个)超控(override)、新训练数据的接收等来执行此类重新训练。
在一些示例中,加速器编译器104A-104C促进使用训练数据来训练(一个或多个)机器学习模型124。在一些示例中,加速器编译器104A-104C利用源自本地生成的数据的训练数据。在一些示例中,加速器编译器104A-104C利用源自外部生成的数据的训练数据。在其中使用有监督训练的一些示例中,加速器编译器104A-104C可以标记训练数据。通过用户手动或通过自动数据预处理系统对训练数据应用标记。在一些示例中,加速器编译器104A-104C可以使用例如接口(例如,接口电路系统114)来预处理训练数据。在一些示例中,加速器编译器104A-104C将训练数据细分为用于训练(一个或多个)机器学习模型124的数据的第一部分和用于验证(一个或多个)机器学习模型124的数据的第二部分。
一旦训练完成,则加速器编译器104A-104C可以部署(一个或多个)机器学习模型124以供用作可执行结构,该可执行结构基于(一个或多个)机器学习模型124中定义的节点和连接的网络来处理输入并提供输出。加速器编译器104A-104C可以将(一个或多个)机器学习模型124存储在数据存储120中。在一些示例中,加速器编译器104A-104C可以调用接口电路系统114以将(一个或多个)机器学习模型124传送到外部计算系统130中的(一个或多个)外部计算系统130。在一些此类示例中,响应于将(一个或多个)机器学习模型124传送到外部计算系统130中的(一个或多个)外部计算系统130,外部计算系统130中的该(一个或多个)外部计算系统130可以执行(一个或多个)机器学习模型124以用于在效率或性能中的至少一者被改进的情况下执行AI/ML工作负载。
一旦经训练,(一个或多个)机器学习模型124中的所部署的(一个或多个)机器学习模型124就可以在推断阶段中被操作以处理数据。在推断阶段中,要被分析的数据(例如,实况数据)被输入到(一个或多个)机器学习模型124,并且(一个或多个)机器学习模型124执行以创建输出。该推断阶段可以被认为是AI“思考”以基于其从训练中习得的内容来生成输出(例如,通过执行(一个或多个)机器学习模型124以将习得的模式和/或关联应用于实况数据)。在一些示例中,输入数据在被用作至(一个或多个)机器学习模型124的输入之前经历预处理。此外,在一些示例中,输出数据在其由(一个或多个)机器学习模型124生成之后可以经历后处理,以将输出变换成有用的结果(例如,数据的显示、对象的检测和/或对象的标识、要由机器执行的指令、等等)。
在一些示例中,(一个或多个)机器学习模型124中的所部署的(一个或多个)机器学习模型124的输出可以被捕获并作为反馈而被提供。通过分析该反馈,(一个或多个)机器学习模型124中的所部署的(一个或多个)机器学习模型124的准确性能够被确定。如果反馈指示所部署的模型的准确性低于阈值或其他准则,则可以使用反馈和经更新的训练数据集、超参数等来触发经更新的模型的训练,以生成经更新的所部署模型。
在一些示例中,加速器编译器104A-104C配置加速电路系统108、110中的一者(或多者)以执行卷积操作(诸如2-D卷积操作)。例如,加速电路系统108、110可以实现CNN。在一些示例中,CNN将图像摄取和/或以其他方式处理为张量,该张量是具有附加维度的数字矩阵。例如,CNN可以获得由3-D张量表示的输入图像,其中,第一维度和第二维度与矩阵的宽度和高度相对应,并且第三维度与矩阵的深度相对应。例如,矩阵的宽度和高度可以与输入图像的宽度和高度相对应,并且矩阵的深度可以与图像的颜色深度(例如,颜色层)或颜色编码(例如,红-绿-蓝(Red-Green-Blue,RGB)编码)相对应。
典型的CNN还可以接收输入并通过一系列隐藏层对该输入进行变换。例如,CNN可以具有多个卷积层、池化层、和/或全连接层。在一些此类示例中,CNN可以具有多个包括卷积层、池化层、和全连接层的层三元组。在一些示例中,CNN可以具有输出到一个或多个全连接层的多个卷积层和池化层对。在一些示例中,CNN可包括20个层、30个层、等等。
在一些示例中,加速电路系统108、110可以执行卷积层,以应用卷积函数或操作来将输入(先前)层的图像映射到CNN中的下一层。在一些示例中,卷积可以是三维(3-D)的,因为每个输入层可以具有与输入图像相关联的多个输入特征(例如,输入通道)。加速电路系统108、110可以执行卷积层,以通过以下操作来执行卷积:在每个单独的输入通道中形成区域滤波器窗口,以及通过计算(1)与区域滤波器窗口相关联的滤波器权重和(2)由区域滤波器窗口覆盖的输入数据的乘积来生成输出数据或激活。例如,加速电路系统108、110可以通过使用卷积滤波器扫描包括多个区域滤波器窗口的多个输入通道来确定输入图像的输出特征。
在一些示例中,加速电路系统108、110可以执行池化层以从每个输出通道中的激活集合提取信息。池化层可以执行与最大池化层相对应的最大池化操作或者与平均池化层相对应的平均池化操作。在一些示例中,最大池化操作可以包括选择池化窗口内的激活的最大值。在一些示例中,平均池化操作可以包括计算池化窗口内的激活的平均值。
在一些示例中,加速电路系统108、110可以执行全连接层,以获得由(一个或多个)卷积层和/或(一个或多个)池化层计算的数据和/或将数据分类成一个或多个类。在一些示例中,全连接层可以确定经分类的数据是否与输入图像的特定图像特征相对应。例如,加速电路系统108、110可以执行全连接层,以确定经分类的数据是否与简单图像特征(例如,水平线)或更复杂的图像特征(如类似于动物(例如,猫))相对应。
在一些示例中,加速器编译器104A-104C可以将加速电路系统108、110中的一者(或多者)配置成将非2-D卷积操作作为2-D卷积操作来执行。例如,加速器编译器104A-104C可以将加速电路系统108、110中的一者(或多者)配置成将深度方向卷积操作、逐元素加法操作、分组卷积操作、扩展卷积操作、自定义操作(例如,自定义卷积、自定义加速操作等)等实现为2-D卷积操作。在一些此类示例中,加速器编译器104A-104C可以指令加速电路系统108、110中的一者(或多者)内部地生成数据而不是从加速器编译器104A-104C、配置数据122等接收数据。例如,加速器编译器104A-104C可以指令第一加速资源基于要由第一加速电路系统108执行的加速操作来生成激活稀疏性数据、权重稀疏性数据或权重数据中的至少一个。在一些此类示例中,加速器编译器104A-104C可以指令加速电路系统108、110中的一者(或多者)基于由加速电路系统108、110中的一者(或多者)生成的数据来执行(一个或多个)ML模型124中的(一个或多个)ML模型124,这可以基于要由加速电路系统108、110中的一者(或多者)执行的卷积操作。
图2是示例加速器200的图示。在一些示例中,加速器200可以实现图1的第一加速电路系统108和/或第二加速电路系统110。例如,加速器200可以实现AI和/或ML加速器(例如,GPU、VPU、NN处理器等)。图2的加速器200是硬件加速器。例如,加速器200可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)GPU、(一个或多个)DSP、(一个或多个)ASIC、(一个或多个)PLD和/或(一个或多个)FPLD来实现。在一些示例中,加速器200实现机器学习模型(诸如NN或其(一个或多个)部分)。例如,加速器200可以实现图1的(一个或多个)ML模型124中的一个ML模型124、或ML模型124的一个或多个层(例如,ML层、NN层等)。
在图2的所图示的示例中,加速器200是稀疏加速器(诸如稀疏NN加速器)。例如,实现CNN的加速器可以使用输入激活与核权重之间的一个或多个乘法-累加(multiply-accumulate,MAC)操作来执行卷积层。加速器200可以通过忽略和/或以其他方式不计算具有零值的激活值来节省能量和/或以其他方式以减少的功耗执行(并且减少处理NN层所花费的时间)。在一些示例中,加速器200可以实现ReLU函数作为非线性激活。例如,ReLU函数可能会将所有负值钳制到零,这可能会导致输出激活中存在大量的零,并且由此可能是激活稀疏性的主要来源。
在一些示例中,加速器200可以响应于小幅度值的修剪以及用零值替换它们而实现权重稀疏性。例如,图1的加速器编译器104A-104C可以通过以下操作来引入稀疏性:采用诸如某些类型的正则化之类的技术,以在要由加速器200实现的机器学习模型(例如,图1的(一个或多个)ML模型124)的训练期间鼓励权重值归零。如下文进一步详细描述的,加速器200可以组合激活稀疏性和权重稀疏性两者以充分利用所有冗余来实现改进的加速和/或以其他方式的最大加速。
基于密集NNA的加速器仅可以读入数据(诸如激活和权重数据)。基于稀疏NNA的稀疏加速器可以既读入数据又读入控制信息。在一些示例中,控制信息可用于指示非零数据位于读入的数据中的何处。在一些示例中,控制信息可以以不同的控制格式被实现以表示稀疏数据,该控制格式诸如游程长度编码的比特流、坐标列表、非零条目的比特掩码等。在图2的示例中,加速器200可以使用非零条目的比特掩码(例如,稀疏性图或稀疏性向量)来表示稀疏数据。
所图示示例的加速器200包括加速器或加速输入,其可以包括示例配置接口202、示例激活数据接口(interface,I/F)204、示例激活稀疏性数据接口206、示例权重数据接口208、示例权重稀疏性数据接口210。加速器200包括加速器或加速输出,其可以包括示例输出激活接口212。例如,配置接口202、激活数据接口204、激活稀疏性数据接口206、权重数据接口208、权重稀疏性数据接口210或输出激活接口212中的至少一者可以由通过任何类型的接口标准实现的一个或多个接口电路(例如,接口电路系统、接口逻辑电路系统等)来实现。在一些此类示例中,配置接口202、激活数据接口204、激活稀疏性数据接口206、权重数据接口208、权重稀疏性数据接口210或输出激活接口212中的至少一者可以由一个或多个模拟或数字电路、逻辑电路等等来实现。
所图示示例的加速器200包括示例配置电路系统214、示例激活数据缓冲器216、示例外部激活稀疏性缓冲器218、示例内部激活稀疏性生成电路系统220、示例权重数据缓冲器222、示例内部权重生成电路系统224、示例外部权重稀疏性缓冲器226、示例内部权重稀疏性生成电路系统228、第一示例复用器(multiplexer,MUX)230、第二示例复用器232、示例组合稀疏性控制器234、多个示例乘法累加器(MAC)236、以及示例累加器存储装置238。在一些示例中,加速器200中可以存在其他结构。例如,加速器200可以包括直接存储器存取(direct memory access,DMA)电路系统、CPU调度电路系统等、或任何其他类型的加速器电路系统。在一些此类示例中,加速器200不限于图2的所图示示例中所描绘的结构。
激活数据接口204的(一个或多个)输出耦合到激活数据缓冲器216的(一个或多个)输入(例如,(一个或多个)缓冲器输入、(一个或多个)数据缓冲器输入等)。配置接口202的(一个或多个)输出(例如,(一个或多个)接口输出)耦合到配置电路系统214的(一个或多个)输入(例如,(一个或多个)配置输入、(一个或多个)配置电路系统输入等)。配置电路系统214的(一个或多个)输出(例如,(一个或多个)配置输出、(一个或多个)配置电路系统输出等)耦合到内部激活稀疏性生成电路系统220的(一个或多个)输入、内部权重稀疏性生成电路系统228的(一个或多个)输入、第一复用器230的(一个或多个)输入(例如,(一个或多个)选择输入、(一个或多个)控制输入、(一个或多个)复用器控制输入等)、以及第二复用器232的(一个或多个)输入(例如,(一个或多个)选择输入、(一个或多个)控制输入、(一个或多个)复用器控制输入等)。
在该示例中,激活稀疏性数据接口206的(一个或多个)输出耦合到外部激活稀疏性缓冲器218的(一个或多个)输入。内部激活稀疏性生成电路系统220的(一个或多个)输出和外部激活稀疏性缓冲器218的(一个或多个)输出(例如,(一个或多个)缓冲器输出、(一个或多个)数据缓冲器输出等)耦合到第一复用器230的(一个或多个)相应的输入(例如,(一个或多个)复用器输入)。第一复用器230的(一个或多个)输出(例如,(一个或多个)复用器输出)耦合到组合稀疏性控制器234的(一个或多个)输入(例如,(一个或多个)控制器输入)。
在该示例中,权重数据接口208的(一个或多个)输出耦合到权重数据缓冲器222的(一个或多个)输入。权重稀疏性数据接口210的(一个或多个)输出耦合到外部权重稀疏性缓冲器226的(一个或多个)输入。内部权重稀疏性生成电路系统228的(一个或多个)输出和外部权重稀疏性缓冲器226的(一个或多个)输出耦合到第二复用器232的相应的(一个或多个)输入。第二复用器232的(一个或多个)输出耦合到组合稀疏性控制器234的(一个或多个)输入。组合稀疏性控制器234的(一个或多个)输出(例如,(一个或多个)控制器输出)耦合到激活数据缓冲器216的(一个或多个)输入和权重数据缓冲器222的(一个或多个)输入。
在该示例中,激活数据缓冲器216的(一个或多个)输出耦合到MAC 236的(一个或多个)输入。例如,激活数据缓冲器216的一个或多个第一输出可以耦合到MAC 236中的第一MAC的一个或多个第一输入,激活数据缓冲器216的一个或多个第二输出可以耦合到MAC236中的第二MAC的一个或多个第二输入,等等。例如,激活数据缓冲器216的(一个或多个)输出可以耦合到加速器输入中的相应的加速器输入,这可以由MAC 236的输入来实现。
在该示例中,权重数据缓冲器222的(一个或多个)输出耦合到MAC 236的(一个或多个)输入。例如,权重数据缓冲器222的一个或多个第一输出可以耦合到MAC 236中的第一MAC的一个或多个第一输入,权重数据缓冲器222的一个或多个第二输出可以耦合到MAC236中的第二MAC的一个或多个第二输入,等等。MAC 236的(一个或多个)输出耦合到累加器存储装置238的(一个或多个)输入(例如,(一个或多个)存储装置输入、(一个或多个)累加器存储装置输入等)。累加器存储装置238的(一个或多个)输出(例如,(一个或多个)存储装置输出、(一个或多个)累加器存储装置输出等)耦合到输出激活接口212的(一个或多个)输入。输出激活接口212的(一个或多个)输出可以耦合到不同的硬件。例如,输出激活接口212的(一个或多个)输出可以耦合到图1中的CPU 106、第一加速电路系统108、第二加速电路系统110、通用处理电路系统112、接口电路系统114、总线116、数据存储120等中的一者(或多者)。
在图2的所图示的示例中,加速器200包括配置接口202、激活数据接口204、激活稀疏性数据接口206、权重数据接口208和权重稀疏性数据接口210,以从数据源(例如,计算系统102的硬件、软件和/或固件或其(一个或多个)部分)接收和/或以其他方式获得数据。在一些示例中,配置接口202接收配置数据(诸如图1的配置数据122)。例如,配置接口202可以接收包括配置寄存器设置的配置数据122。在一些此类示例中,配置寄存器设置可以包括第一配置寄存器设置,该第一配置寄存器设置当被调用时指令内部激活稀疏性生成电路系统220基于第一模式(例如,第一数据模式)生成激活比特掩码(例如,激活稀疏性比特掩码)。在一些此类示例中,配置寄存器设置可以包括第二配置寄存器设置,该第二配置寄存器设置当被调用时指令内部权重稀疏性生成电路系统228基于第二模式(例如,第二数据模式)生成权重比特掩码(例如,权重稀疏性比特掩码)。
在一些示例中,激活数据接口204接收激活数据(例如,卷积激活值、ML激活值等)并将激活数据存储在激活数据缓冲器216中。例如,外部激活稀疏性缓冲器218可以由易失性存储器(例如,闪存)、非易失性存储器等来实现。在一些示例中,激活稀疏性数据接口206接收稀疏性激活数据(例如,稀疏性激活向量)并将稀疏性激活数据存储在外部激活稀疏性缓冲器218中。在一些示例中,权重数据接口208接收权重数据(例如,卷积权重值、ML权重值等)并将权重数据存储在权重数据缓冲器222中。在一些示例中,权重稀疏性数据接口210接收稀疏性权重数据(例如,稀疏性权重向量)并将稀疏性权重数据存储在外部权重稀疏性缓冲器226中。例如,外部权重稀疏性缓冲器226可以由易失性存储器、非易失性存储器等来实现。
在图2所图示的示例中,加速器200包括用于基于配置数据(诸如图1的配置数据122)来生成激活稀疏性数据的内部激活稀疏性生成电路系统220。例如,内部激活稀疏性生成电路系统220可以基于数据模式来生成稀疏激活向量,该数据模式可以被指示和/或以其他方式基于配置数据。
在图2的所图示的示例中,加速器200包括用于基于配置数据(诸如图1的配置数据122)来生成权重稀疏性数据的内部权重稀疏性生成电路系统228。例如,内部权重稀疏性生成电路系统228可以基于数据模式来生成稀疏权重向量,该数据模式可以被指示和/或以其他方式基于配置数据。
有利地,内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228增加和/或以其他方式改进加速器200的带宽。例如,在常规的加速器体系结构中,稀疏性向量驻留在加速器的存储器中。对于常规的卷积操作,针对权重可以离线计算对应的比特掩码,或者针对激活可在运行时计算对应的比特掩码。由于数据内的零的分布是随机的,因此比特掩码不能在针对常规卷积的传统加速器体系结构内内部地被计算。
有利地,对于其他类型的加速器操作,其中比特掩码向量可以指示与稀疏性(例如,‘1’用于指示非零值,并且‘0’用于指示零值)相对的计算(例如,‘1’用于指示元素的计算,并且‘0’用于指示元素的非计算),内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228可以计算和/或以其他方式生成比特掩码以遵循固定或重复的模式(例如,固定或重复的数据模式)。例如,内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228可以内部地和/或以其他方式在加速器200内生成比特掩码(例如,激活稀疏性比特掩码、权重稀疏性比特掩码等),而不是从加速器200外部的硬件取回比特掩码。在一些此类示例中,内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228可以包括驱动硬件逻辑,以产生、生成和/或以其他方式输出数据模式(诸如行走一(1)或x个1后跟y个0的重复模式)。例如,行走1模式可以由具有1字节大小的“00000001”的第一比特掩码向量、具有1字节大小的“00000010”的第二比特掩码向量等来实现,其中每个后续向量的“1”被向左移位到先前的比特位置的相邻比特位置中。
在一些示例中,比特掩码向量(例如,激活稀疏性比特掩码向量、权重稀疏性比特掩码向量等)可以使用1比特控制来表示1字节(或8比特)数据。在一些此类示例中,对于将控制信息连同数据一起读入的加速器200,存在12.5%的最小开销(例如,0.125=1比特控制/8比特数据)。有利地,通过使用内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228内部地生成比特掩码向量,加速器200可以移除上述开销。在一些示例中,当处理带宽受限的层(诸如深度方向卷积)时,开销的移除是有益的,因为开销的减少可以减少用于处理层而读取的数量。
在图2的所图示的示例中,加速器200包括用于复用、选择和/或以其他方式提供来自外部激活稀疏性缓冲器218或内部激活稀疏性生成电路系统220的激活稀疏性数据的第一复用器230。例如,配置电路系统214可以基于配置数据指令第一复用器230从外部激活稀疏性缓冲器218选择第一激活稀疏性数据,配置数据可以指示要由加速器200执行的卷积操作的类型。在一些此类示例中,配置电路系统214可以基于配置数据指令第一复用器230从内部激活稀疏性生成电路系统220选择第二激活稀疏性数据,配置数据可以指示要由加速器200执行的卷积操作的类型。响应于来自配置电路系统214的指令,第一复用器230可以将第一激活稀疏性数据或第二激活稀疏性数据提供到组合稀疏性控制器234。
在图2所图示的示例中,加速器200包括用于复用、选择和/或以其他方式提供来自外部权重稀疏性缓冲器226或内部权重稀疏性生成电路系统228的权重稀疏性数据的第二复用器232。例如,配置电路系统214可以基于配置数据指令第二复用器232从外部权重稀疏性缓冲器226选择第一权重稀疏性数据,配置数据可以指示要由加速器200执行的卷积操作的类型。在一些此类示例中,配置电路系统214可以基于配置数据指令第二复用器232从内部权重稀疏性生成电路系统228选择第二权重稀疏性数据,配置数据可以指示要由加速器200执行的卷积操作的类型。例如,配置电路系统214可以基于要由加速器200执行的加速操作的类型来确定加速器模式。在一些此类示例中,配置电路系统214可以基于配置数据确定加速模式是2-D卷积模式、深度方向卷积模式、逐元素加法模式、分组卷积模式、扩张卷积模式、自定义模式(例如,其中加速器200要执行自定义操作的模式)等。响应于来自配置电路系统214的指令,第二复用器232可以将第一权重稀疏性数据或第二权重稀疏性数据提供到组合稀疏性控制器234。在一些示例中,第一复用器230和/或第二复用器232可以实现复用器电路系统、复用器逻辑电路系统等。
在图2的所图示的示例中,加速器200包括用于将非稀疏数据从激活数据缓冲器216或权重数据缓冲器222中的至少一者提供和/或以其他方式传输到MAC 236的组合稀疏性控制器234。例如,组合稀疏性控制器234可以实现控制电路系统、控制逻辑电路系统、控制器电路系统、控制器逻辑电路系统等。在一些示例中,组合稀疏性控制器234确定激活或权重数据中的零的存在指示在执行加速操作(诸如卷积)时何时跳过某些计算。例如,组合稀疏性控制器234可以确定稀疏性比特掩码向量指示“计算”比特掩码向量,其中每个比特可以表示元素是应当被计算还是不被计算(例如,被跳过)。在一些此类示例中,组合稀疏性控制器234可以确定比特掩码中的“1”指示元素应当是计算操作的部分并且比特掩码中的“0”指示元素不应当是计算操作的部分。在一些此类示例中,计算操作可以是标准或常规卷积操作(例如,2-D卷积操作)、非标准或非常规卷积操作(例如,深度方向卷积操作、分组卷积操作等)、或非卷积操作(例如,逐元素加法操作)。
在一些示例中,组合稀疏性控制器234基于稀疏性映射来标识要被传输的非稀疏数据。例如,组合稀疏性控制器234可以基于从第一复用器230获得的稀疏激活向量来标识非稀疏激活数据。在一些此类示例中,组合稀疏性控制器234可以将稀疏激活向量中的“1”映射到存储在激活数据缓冲器216中的非稀疏激活值。在一些此类示例中,激活数据缓冲器216将所标识的非稀疏激活值传输到MAC 236中的一个MAC 236。
在一些示例中,组合稀疏性控制器234可以基于从第二复用器232获得的稀疏权重向量来标识非稀疏权重数据。在一些此类示例中,组合稀疏性控制器234可以将稀疏权重向量中的“1”映射到存储在权重数据缓冲器222中的非稀疏权重值。在一些此类示例中,权重数据缓冲器222将所标识的非稀疏权重值传输到MAC 236中的一个MAC 236。在一些示例中,权重数据缓冲器222可以调用内部权重生成电路系统224来生成非稀疏权重值,该非稀疏权重值可以被传输到MAC 236中的一个MAC 236。
在一些示例中,组合稀疏性控制器234从第一复用器230或第二复用器232中的至少一者获得稀疏性数据。例如,稀疏性数据可以包括来自第一复用器230的激活稀疏性数据和/或来自第二复用器232的权重稀疏性数据。在一些示例中,组合稀疏性控制器234可以基于激活稀疏性数据和权重稀疏性数据来生成组合稀疏性比特掩码。在一些此类示例中,组合稀疏性控制器234可以指令激活数据缓冲器216基于组合稀疏性比特掩码将激活数据提供到MAC 236。在一些此类示例中,组合稀疏性控制器234可以指令权重数据缓冲器222基于组合稀疏性比特掩码将权重数据提供到MAC 236。在一些此类示例中,响应于内部权重生成电路系统224要生成权重数据的确定,组合稀疏性控制器234可以指令权重数据缓冲器222基于组合稀疏性比特掩码将内部生成的权重数据提供到MAC 236。
在图2的所图示的示例中,加速器200包括用于执行和/或以其他方式实现乘法-累加操作的MAC 236。例如,MAC 236中的第一MAC 236可以确定两个数字的乘积并将该乘积加到累加器。在一些示例中,MAC 236可以实现加速器或加速逻辑(例如,加速器或加速电路系统、加速器或加速逻辑电路系统等)、计算或计算逻辑(例如,计算或计算电路系统、计算或计算逻辑电路系统等)等。在此示例中,MAC 236被实现为MAC 236的4×4阵列。替代地,加速器200可以以不同的方式实现MAC 236。例如,加速器200可以将MAC 236实现为一个或多个8×8阵列、一个或多个16×16阵列等、或任何其他数量和/或类型的(一个或多个)阵列配置。在该示例中,MAC 236可以遵循公共互连,其中激活可以跨阵列的行共享和分布,并且权重可以沿阵列的列共享和分布。在一些示例中,MAC 236中的每个MAC 236可以具有相关联的累加器存储装置,该累加器存储装置可以允许部分和/或最终累加被保存,并且由此使得MAC 236能够逐工作负载地在多个输出点上工作。在一些此类示例中,响应于完成工作负载(例如,卷积工作负载、加速或加速器工作负载等),最终累加值可以被排出和/或以其他方式经由输出激活接口212从累加器存储装置238被输出到外部硬件以用于最终后处理。在一些示例中,最终后处理可包括在将经后处理的值写入到存储器(例如,外部存储器)之前添加偏置和/或应用非线性激活函数。例如,累加器存储装置238可以经由输出激活接口212将最终累加值提供到存储器。在一些示例中,累加器存储装置238可以输出与NN的层相对应的最终累加值。在一些此类示例中,响应于完成针对该层的工作负载(这可以由来自累加器存储装置238的输出来指示),加速器200可以处理NN的另一层,直到整个NN完成。
有利地,图2的加速器200可以利用稀疏性(例如,激活稀疏性和/或权重稀疏性)来实现更快的处理和/或降低的功耗。例如,加速器200可以组合激活稀疏性和权重稀疏性以移除和/或跳过冗余计算,从而实现对机器学习模型(例如,机器学习网络)的层的更快和/或以其他方式改进的处理,降低功耗,和/或提供稀疏加速。有利地,通过移除值为0的激活和/或权重以改进存储器存储密度(例如,与零数据值相比,增加非零数据值的存储),加速器200可以降低数据移动的成本(例如,带宽代价)和/或降低读入激活和/或权重的带宽要求。有利地,在一些示例中,加速器200可以通过内部地生成数据(例如,激活稀疏性数据、权重数据、权重稀疏性数据等)而不是从外部源取回数据来增加和/或以其他方式改进带宽。
在一些示例中,内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228可以实现示例用于基于加速操作来生成稀疏性数据的装置。例如,用于生成的装置可以由可执行指令来实现,该可执行指令诸如至少由图14的框1404、1408、1412,图15的框1510、1512、1516,框1608、1612、1616、1620和/或图17的框1714实现的可执行指令。在一些示例中,图14的框1404、1408、1412,图15的框1510、1512、1516,框1608、1612、1616、1620和/或图17的框1714的可执行零可以在诸如图18的示例处理器电路系统1812之类的至少一个处理器上被执行。在其他示例中,用于生成的装置由硬件逻辑、硬件实现的状态机、逻辑电路系统、和/或硬件、软件和/或固件的任何其他组合来实现。例如,用于生成的装置可以由被构造成用于在不执行软件或固件的情况下执行相对应的操作的至少一个硬件电路(例如,分立的和/或集成的模拟和/或数字电路系统、FPGA、PLD、FPLD、ASIC、比较器、运算放大器(operational-amplifier,op-amp)、逻辑电路等)来实现,但其他结构也同样适用。
在其中稀疏性数据包括稀疏权重向量的一些示例中,用于生成的装置用于响应于获得稀疏激活向量而基于稀疏激活向量和稀疏权重向量来生成稀疏性比特掩码。在其中稀疏性数据包括稀疏权重向量且加速操作是深度方向卷积操作的一些示例中,用于生成的装置用于基于深度方向卷积操作来标识数据模式,并且基于数据模式来生成稀疏权重向量。
在其中稀疏性数据包括稀疏权重向量且加速操作是分组卷积操作的一些示例中,用于生成的装置用于基于分组卷积操作来标识数据模式(该数据模式包括逻辑一的集合),并且基于该数据模式来生成稀疏权重向量。
在其中加速操作是逐元素加法操作的一些示例中,用于生成的装置用于基于逐元素加法操作来标识数据模式(该数据模式基于行走一数据模式),并且基于该数据模式来生成多个稀疏权重向量。
在其中稀疏性数据包括一个或多个稀疏权重向量且加速操作是扩张卷积的一些示例中,用于生成的装置用于基于扩张卷积操作来标识数据模式(该数据模式基于稀疏核),并且基于该数据模式来生成一个或多个稀疏权重向量。
在一些示例中,组合稀疏性控制器234可以实现示例用于指令一个或多个数据缓冲器基于稀疏性数据提供激活数据或权重数据中的至少一者的装置。例如,用于指令的装置可以由可执行指令来实现,该可执行指令诸如至少由图14的框1412、1416,图15的框1516、1518、和/或图16的框1622实现的可执行指令。在一些示例中,图14的框1412、1416,图15的框1516、1518,和/或图16的框1622的可执行指令可以在诸如图18的示例处理器电路系统1812之类的至少一个处理器上执行。在其他示例中,用于指令的装置由硬件逻辑、硬件实现的状态机、逻辑电路系统、和/或硬件、软件和/或固件的任何其他组合来实现。例如,用于指令的装置可以由被构造成用于在不执行软件或固件的情况下执行相对应的操作的至少一个硬件电路(例如,分立的和/或集成的模拟和/或数字电路系统、FPGA、PLD、FPLD、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现,但其他结构也同样适用。
在其中稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者并且一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器的一些示例中,用于指令的装置用于:基于激活稀疏性数据和权重稀疏性数据来生成组合稀疏性比特掩码,指令激活数据缓冲器基于组合稀疏性比特掩码来将激活数据提供到用于执行的装置,并且响应于确定生成权重数据而指令权重数据缓冲器基于组合稀疏性比特掩码来将生成的权重数据提供到用于执行的装置。
在其中稀疏性数据包括稀疏权重向量且加速操作是深度方向卷积操作的一些示例中,用于指令的装置用于基于稀疏权重向量来生成稀疏性比特掩码。在其中稀疏性数据包括稀疏权重向量且加速操作是分组卷积操作的一些示例中,用于指令的装置用于基于稀疏权重向量来生成稀疏性比特掩码。在其中稀疏性数据包括一个或多个稀疏权重向量且加速操作是扩张卷积操作的一些示例中,用于指令的装置用于基于一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
在一些示例中,MAC 236可以实现示例用于基于激活数据或权重数据中的至少一者来执行加速操作的装置。例如,用于指令的装置可以由可执行指令来实现,该可执行指令诸如至少由由图14的框1416、图15的框1518、和/或图16的框1622实现的可执行指令。在一些示例中,图14的框1416、图15的框1518、和/或图16的框1622的可执行指令可以在诸如图18的示例处理器电路系统1812之类的至少一个处理器上执行。在其他示例中,用于执行的装置由硬件逻辑、硬件实现的状态机、逻辑电路系统、和/或硬件、软件和/或固件的任何其他组合来实现。例如,用于执行的装置可以由被构造成用于在不执行软件或固件的情况下执行相对应的操作的至少一个硬件电路(例如,分立的和/或集成的模拟和/或数字电路系统、FPGA、PLD、FPLD、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现,但其他结构也同样适用。
在其中加速操作是逐元素加法操作的一些示例中,用于执行的装置用于:基于多个稀疏权重向量、以及激活数据的第一集合,存储与第一张量相关联的第一数据值;基于多个稀疏权重向量、以及激活数据的第二集合来存储与第二张量相关联的第二数据值;并且基于第一数据值和第二数据值的和来生成输出数据值。
在其中稀疏性数据包括稀疏权重向量的一些示例中,配置电路系统214可以实现示例用于基于配置信息来标识加速操作的装置,并且稀疏权重向量可以基于配置信息被生成。例如,用于标识的装置可以由可执行指令来实现,该可执行指令诸如至少由图14至少框1402、1404、1408、1412、1420,图15的框1502、1504、1510、1516、1522,和/或图16的框1602、1606、1608、1610、1612、1614、1616、1618、1620、1624实现的可执行指令。在一些示例中,图14的框1402、1404、1408、1412、1420,图15的框1502、1504、1510、1516、1522,和/或图16的框1602、1606、1608、1610、1612、1614、1616、1618、1620、1624的可执行指令可以在诸如图18的示例处理器电路系统1812之类的至少一个处理器上执行。在其他示例中,用于标识的装置由硬件逻辑、硬件实现的状态机、逻辑电路系统、和/或硬件、软件和/或固件的任何其他组合来实现。例如,用于标识的装置可以由被构造成用于在不执行软件或固件的情况下执行相对应的操作的至少一个硬件电路(例如,分立的和/或集成的模拟和/或数字电路系统、FPGA、PLD、FPLD、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现,但其他结构也同样适用。
尽管在图2中图示出实现图1的第一示例加速电路系统108和/或第二示例加速电路系统110的示例方式,但图2中图示出的元件、过程和/或设备中的一者或多者可以以任何其他方式组合、拆分、重新布置、省略、消除和/或实现。进一步地,以下各项可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现:示例配置接口202、示例激活数据接口204、示例激活稀疏性数据接口206、示例权重数据接口208、示例权重稀疏性数据接口210、示例输出激活接口212、示例配置电路系统214、示例激活数据缓冲器216、示例外部激活稀疏性缓冲器218、示例内部激活稀疏性生成电路系统220、示例权重数据缓冲器222、示例内部权重生成电路系统224、示例外部权重稀疏性缓冲器226、示例内部权重稀疏性生成电路系统228、第一示例复用器230、第二示例复用器232、示例组合稀疏性控制器234、示例MAC 236、示例累加器存储装置238、和/或(更一般地)图1的第一示例加速电路系统108和/或第二示例加速电路系统110。由此,例如,以下各项中的任一项可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)GPU、(一个或多个)DSP、(一个或多个)ASIC、(一个或多个)PLD和/或(一个或多个)FPLD来实现:示例配置接口202、示例激活数据接口204、示例激活稀疏性数据接口206、示例权重数据接口208、示例权重稀疏性数据接口210、示例输出激活接口212、示例配置电路系统214、示例激活数据缓冲器216、示例外部激活稀疏性缓冲器218、示例内部激活稀疏性生成电路系统220、示例权重数据缓冲器222、示例内部权重生成电路系统224、示例外部权重稀疏性缓冲器226、示例内部权重稀疏性生成电路系统228、第一示例复用器230、第二示例复用器232、示例组合稀疏性控制器234、示例MAC 236、示例累加器存储装置238、和/或(更一般地)第一示例加速电路系统108和/或第二示例加速电路系统110。当阅读涵盖纯软件和/或固件实现方式的本专利的装置权利要求或系统权利要求中的任一者时,以下各项中的至少一项由此被明确限定为包括诸如存储器、DVD、CD、蓝光盘等之类的非暂态计算机可读存储设备或存储盘,该非暂态计算机可读存储设备或存储盘包括软件和/或固件:示例配置接口202、示例激活数据接口204、示例激活稀疏性数据接口206、示例权重数据接口208、示例权重稀疏性数据接口210、示例输出激活接口212、示例配置电路系统214、示例激活数据缓冲器216、示例外部激活稀疏性缓冲器218、示例内部激活稀疏性生成电路系统220、示例权重数据缓冲器222、示例内部权重生成电路系统224、示例外部权重稀疏性缓冲器226、示例内部权重稀疏性生成电路系统228、第一示例复用器230、第二示例复用器232、示例组合稀疏性控制器234、示例MAC 236、和/或示例累加器存储装置238。更进一步地,图1的第一示例加速电路系统108和/或第二示例加速电路系统110可包括附加于或替代图2中所图示的那些元件、过程和/或设备的一个或多个元件、过程和/或设备,和/或可包括所图示的元件、过程和设备中的任何或所有元件、过程和设备中的多于一个的元件、过程和设备。如本文中所使用,短语“进行通信”(包括其变体)包含直接通信和/或通过一个或多个中间组件的间接通信,并且不要求直接的物理(例如,有线)通信和/或持续不断的通信,而是附加地包括以周期性间隔、预定间隔、非周期性间隔、和/或一次性事件来进行的选择性通信。
图3是示例加速器编译器300的框图。在一些示例中,图3的加速器编译器300可以实现图1的加速器编译器104A-104C中的一个或多个。加速器编译器300可以基于加速器模式来配置硬件加速器(诸如图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200)。例如,加速器编译器300可以基于加速器200要执行2-D卷积操作、逐元素加法操作等来配置图2的加速器200。
所图示示例的加速器编译器300包括示例机器学习(ML)模型配置处置器310、示例激活配置处置器320、示例权重配置处置器330、示例配置编译器340、示例可执行文件生成器350、示例加速器接口360、示例机器学习(ML)模型数据存储370、示例激活数据存储380、示例权重数据存储390和示例总线395。在该示例中,ML模型配置处置器310、激活配置处置器320、权重配置处置器330、配置编译器340、可执行文件生成器350、加速器接口360、ML模型数据存储370、激活数据存储380、以及权重数据存储390经由总线395与彼此中的一者(或多者)通信。例如,总线395可以由I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者来实现。附加地或替代地,总线395可以由任何其他类型的计算或电气总线来实现。
在图3的所图示的示例中,加速器编译器300包括用于基于要由加速器执行的加速操作和/或加速器的加速模式来配置加速器(诸如图1的第一加速电路系统108、图1的第二加速器电路系统110和/或图2的加速器200)的ML模型配置处置器310。在一些示例中,ML模型配置处置器310基于要由加速器执行的加速操作来确定加速模式。例如,ML模型配置处置器310可以基于要由加速器执行的NN的类型来确定加速器要执行深度方向卷积操作。在一些此类示例中,NN的类型可以指示深度方向卷积操作要被执行。在一些此类示例中,ML模型配置处置器310可以基于要由加速器执行的深度方向卷积操作来将加速模式确定为深度方向卷积模式。
在图3的所图示的示例中,加速器编译器300包括用于标识要由加速器利用的激活数据和/或激活稀疏性数据的激活配置处置器320。在一些示例中,激活配置处置器320可以标识要被提供到激活数据缓冲器216的激活数据和/或要被提供到外部激活稀疏性缓冲器218的激活稀疏性数据。在一些示例中,激活配置处置器320可以基于加速模式来确定加速器200要生成激活稀疏性数据。在一些此类示例中,激活配置处置器320可以标识一个或多个配置寄存器(例如,配置控制寄存器等)的值,该值可用于指令内部激活稀疏性生成电路系统220基于数据模式来生成激活稀疏性数据。
在图3的所图示的示例中,加速器编译器300包括用于标识要由加速器利用的权重数据和/或权重稀疏性数据的权重配置处置器330。在一些示例中,权重配置处置器330可以标识要被提供到权重数据缓冲器222的权重数据和/或要被提供到外部权重稀疏性缓冲器226的权重稀疏性数据。
在一些示例中,权重配置处置器330可以基于加速模式来确定加速器200要生成权重数据和/或权重稀疏性数据。在一些此类示例中,权重配置处置器330可以标识一个或多个配置寄存器(例如,配置控制寄存器等)的值,该值可用于指令内部权重稀疏性生成电路系统228基于第一数据模式来生成权重稀疏性数据,指令内部权重生成电路系统224基于第二数据模式来生成权重数据,等等,或者以上各项的组合。
在图3的所图示的示例中,加速器编译器300包括用于基于配置数据来编译ML、网络等的配置编译器340。在一些示例中,配置编译器340可以基于图1的配置数据122来编译ML模型、网络等,该配置数据122可以包括一个或多个配置寄存器的值,该值可以被加速器200用于在加速器200内内部地生成权重数据、权重稀疏性数据和/或激活稀疏性数据。
在图3的所图示的示例中,加速器编译器300包括用于基于由配置编译器340对配置的编译来生成ML模型、网络等的可执行构造的可执行文件生成器350。在一些示例中,可执行文件生成器350可以生成要由加速器执行以基于到激活数据接口204、激活稀疏性数据接口206、权重数据接口208或权重稀疏性数据接口210中的一者或多者的ML输入来从累加器存储装置238输出累加值的可执行构造。在一些示例中,可执行文件生成器350可以生成可执行构造作为图1的(一个或多个)ML模型124。
在图3的所图示的示例中,加速器编译器300包括用于对加速器提供接口的加速器接口360。在一些示例中,加速器接口360可以向配置接口202提供配置数据122。在一些示例中,加速器接口360可以向激活数据接口204提供激活数据。在一些示例中,加速器接口360可以向权重数据接口208提供权重数据。在一些示例中,加速器接口360可以向权重稀疏性数据接口210提供权重稀疏性数据。在一些示例中,加速器接口360可以从输出激活接口212获得累加器数据(例如,来自图2的MAC 236的累加器值)。
在图3的所图示的示例中,加速器编译器300包括用于存储一个或多个ML模型(诸如图1的(一个或多个)ML模型124)的ML模型数据存储370。在一些示例中,ML模型数据存储370可以实现(一个或多个)ML模型124、和/或(更一般地)图1的数据存储120。在图3所图示的示例中,加速器编译器300包括用于记录数据(诸如激活数据、激活稀疏性数据等)的激活数据存储380。在图3的所图示的示例中,加速器编译器300包括用于记录数据(诸如权重数据、权重激活数据等)的权重数据存储390。
该示例的ML模型数据存储370、激活数据存储380和/或权重数据存储390可以由易失性存储器和/或非易失性存储器来实现。ML模型数据存储370、激活数据存储380和/或权重数据存储390可以附加地或替代地由一个或多个DDR存储器来实现。ML模型数据存储370、激活数据存储380和/或权重数据存储390可以附加地或替代地由一个或多个大容量存储设备来实现。尽管在所图示示例中,ML模型数据存储370、激活数据存储380和权重数据存储390各自被图示为单个数据存储,但ML模型数据存储370、激活数据存储380和/或权重数据存储390可以由任何数量和/或(一种或多种)类型的数据存储来实现。此外,存储在ML模型数据存储370、激活数据存储380和/或权重数据存储390中的数据可以采用任何数据格式,诸如例如,二进制数据、逗号分隔的数据、制表符分隔的数据、SQL结构、可执行文件等。
尽管图3中图示出实现图1的加速器编译器104A-104C的示例方式,但图3中所图示的元件、过程和/或设备中的一个或多个可以被组合、拆分、重新设置、省略、消除和/或以任何其他方式被实现。进一步地,示例ML模型配置处置器310、示例激活配置处置器320、示例权重配置处置器330、示例配置编译器340、示例可执行文件生成器350、示例加速器接口360、示例ML模型数据存储370、示例激活数据存储380、示例权重数据存储390、示例总线395、和/或(更一般地)图1的示例加速器编译器104A-104C可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。由此,例如,以下各项中的任一项可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)GPU、(一个或多个)DSP、(一个或多个)ASIC、(一个或多个)PLD和/或(一个或多个)FPLD来实现:示例ML模型配置处置器310、示例激活配置处置器320、示例权重配置处置器330、示例配置编译器340、示例可执行文件生成器350、示例加速器接口360、示例ML模型数据存储370、示例激活数据存储380、示例权重数据存储390、示例总线395、和/或(更一般地)图1的示例加速器编译器104A-104C。当阅读涵盖纯软件和/或固件实现方式的本专利的装置或系统权利要求中的任一者时,以下各项中的至少一项由此被明确限定为包括诸如存储器、DVD、CD、蓝光盘等之类的非暂态计算机可读存储设备或存储盘,该非暂态计算机可读存储设备或存储盘包括软件和/或固件:示例ML模型配置处置器310、示例激活配置处置器320、示例权重配置处置器330、示例配置编译器340、示例可执行文件生成器350、示例加速器接口360、示例ML模型数据存储370、示例激活数据存储380、示例权重数据存储390、和/或示例总线395。更进一步地,图1的示例加速器编译器104A-104C可包括附加于或替代图3中所图示的那些元件、过程和/或设备的一个或多个元件、过程和/或设备,和/或可包括所图示的元件、过程和设备中的任何或所有元件、过程和设备中的多于一个的元件、过程和设备。
图4是可以由图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200执行的示例常规卷积操作400的图示。在一些示例中,常规卷积操作400可以对一个或多个图像(例如,图片、视频的静止帧等)实现空间卷积。在一些示例中,加速器200可以被配置成用于基于要由加速器200执行的常规卷积操作以常规卷积模式、2-D卷积模式、三维(3-D)卷积模式等进行操作。
常规卷积操作400包括将示例滤波器402应用到示例输入张量404以生成示例输出张量406。在该示例中,输入张量404是大小为xi*yi*zi的3-D对象。在该示例中,存在K个滤波器402并且滤波器402中的每个滤波器402的大小为f*f*zk。替代地,可以使用任何其他大小来实现滤波器402中的(一个或多个)滤波器402。例如,滤波器402中的一个或多个滤波器402的大小可以是fx*fy*zk,其中x和y可以是不同的,并且由此fx和fy可以是不同的。在该示例中,滤波器402是方形滤波器并且由此fx等于fy,但是本文中所描述的示例不限于此。在该示例中,输出张量406的大小为xa*ya*zo。在该示例中,zk=zi并且zo=K。在该示例中,滤波器402连同非线性激活函数被应用于输入张量404以产生输出张量406。例如,图2的加速器200可以获得输入张量404作为激活数据,获得滤波器402中的一个滤波器402作为权重数据,并且从图2的累加器存储装置238输出输出张量406。在一些此类示例中,加速器200可以以“密集”方式实现常规卷积操作400,而在其他示例中,加速器200可以利用稀疏性来实现常规卷积操作400。
有利地,加速器200可以基于稀疏数据来执行卷积操作400以降低计算的数量。例如,加速器200可以通过调用稀疏性技术来获得和/或生成激活稀疏性数据和/或权重稀疏性数据以输出输出张量406。
图5是可由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行的示例深度方向卷积操作500的图示。深度方向卷积操作500包括将示例滤波器502应用到示例输入张量504以生成示例输出张量506。
图5所图示的示例是利用比特掩码向量(例如,稀疏性比特掩码向量)来一次隔离单个通道的示例。例如,配置电路系统214可以基于图1的配置数据122来确定要调用加速器200执行图5的深度方向卷积操作500。在一些此类示例中,配置电路系统214可以基于配置寄存器设置来指令内部权重稀疏性生成电路系统228生成用于深度方向卷积操作500的权重稀疏性比特掩码,该配置寄存器设置可以基于配置数据122。在一些此类示例中,内部权重稀疏性生成电路系统228可以基于数据模式(诸如行走1模式)来生成权重稀疏性比特掩码。例如,内部权重稀疏性生成电路系统228可以基于行走1模式来生成滤波器502,该行走1模式当被利用时,使得滤波器502生成可以等效于深度滤波器的结果(例如,输出张量506),这可以允许加速器200执行稀疏常规卷积来实现深度方向卷积。
深度方向卷积操作500可以被实现为在输入张量504内的每个示例输入通道508上独立地执行的空间卷积。所图示示例的深度方向卷积操作500可以基于这样的确定:通过将加速器200配置成处于深度方向卷积模式,深度方向卷积可以在稀疏神经网络加速器(诸如加速器200)上被执行。例如,通过将滤波器502视为仅具有单个非稀疏比特的稀疏滤波器,深度方向卷积操作500可以使用加速器200来实现,这在图6的所图示的示例中进行描绘。
图6是与卷积滤波器相关联的示例稀疏性比特掩码向量602、604、606、608的图示。在该示例中,稀疏性比特掩码向量602、604、606、608可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200来实现。稀疏性比特掩码向量602、604、606、608包括第一示例稀疏性比特掩码向量602、第二示例稀疏性比特掩码向量604、第三示例稀疏性比特掩码向量606和第四示例稀疏性比特掩码向量608。例如,第一稀疏性比特掩码向量602、第二稀疏性比特掩码向量604、第三稀疏性比特掩码向量606或第四稀疏性比特掩码向量608可以实现图4的滤波器402和/或图5的滤波器502。在一些此类示例中,图2的内部权重稀疏性生成电路系统228可以生成第一稀疏性比特掩码向量602、第二稀疏性比特掩码向量604、第三稀疏性比特掩码向量606和/或第四稀疏性比特掩码向量608。在一些此类示例中,图2的内部权重稀疏性生成电路系统228可以基于配置数据122、数据模式等来生成第一稀疏性比特掩码向量602、第二稀疏性比特掩码向量604、第三稀疏性比特掩码向量606和/或第四稀疏性比特掩码向量608。
第一稀疏性比特掩码向量602可以实现滤波器长度为的全密集稀疏性向量。第二稀疏性比特掩码向量604可以实现稀疏的稀疏性向量,由于稀疏性的存在,该稀疏的稀疏性向量可以包括1和0的组合。在该示例中,第二稀疏性比特掩码向量604具有小于zk的有效滤波器长度。
所图示示例的第三稀疏性比特掩码向量606可以实现有效滤波器长度为1的行走1稀疏性向量。例如,第三稀疏性比特掩码向量606可以基于诸如行走一数据模式(例如,行走1数据模式)之类的数据模式被生成。第四稀疏性比特掩码向量608可以实现与有效滤波器深度zk为1的深度方向滤波器相关联的稀疏性比特掩码向量。在一些此类示例中,第三稀疏性比特掩码向量606的行走1数据模式可以被认为是被描绘为第二稀疏性比特掩码向量604的稀疏向量示例的子集,并且由此可以被用于模拟和/或以其他方式操作为深度方向核或滤波器。例如,第三稀疏性比特掩码向量606可以等效于和/或以其他方式基本上近似于第四稀疏性比特掩码向量608,因为它们具有相同的有效长度。因为深度方向卷积可以是带宽密集型的,所以内部权重稀疏性生成电路系统228可以在加速器200内部生成第三稀疏性比特掩码向量606,以消除读入用于第三稀疏性比特掩码向量606的稀疏性模式的需要,由此节省带宽并降低卷积时间。
有利地,通过指令内部权重稀疏性生成电路系统228生成第三稀疏性比特掩码向量606,加速器200可以在没有专用深度方向卷积硬件的情况下执行图5的深度方向卷积操作500。通过减少和/或以其他方式消除卷积特定硬件(诸如特定的深度方向卷积硬件),加速器200可以实现多种卷积操作类型,从而可以显著地简化加速器200的物理实现,减小加速器200的面积,和/或增强要由加速器200中的一个或多个加速器200执行卷积操作的可扩展性。
图7是可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行的示例分组卷积操作700的图示。图7的所图示的示例是利用比特掩码向量(例如,稀疏性比特掩码向量)来一次隔离数个通道并且随后将分组卷积操作700作为常规卷积操作来执行的示例。在一些示例中,分组卷积可以通过跨层内的通道组执行数个卷积而不是跨层内的所有通道执行单个卷积来实现。
在图7的所图示的示例中进一步描绘的是非分组卷积操作702,其通过将64个示例滤波器706应用到第一输入层的256个通道来处理NN的该第一示例输入层704,以生成第一示例输出层708。分组卷积操作700的层和非分组卷积操作702的层以(输入通道数量,滤波器大小,输出通道数量)的格式来描绘。例如,输入层704具有256个输入通道、1×1的滤波器大小和64个输出通道。
图7的所图示的示例中的分组卷积操作700可以通过将4个示例滤波器710的组应用到第二示例输入层712以创建示例4层输出714的组来实现。4层输出714可以被加在一起以输出第二示例输出层716。在分组卷积操作700中,示例的中间行中存在32组4层深的张量。浅的且分组的处理可包括执行较小的工作负载而不是由非分组卷积操作702描绘的单个较大的工作负载。
在一些示例中,与较小、较浅的工作负载相对的是,较大、较深的工作负载可能更高效和/或以其他方式更适于NNA处理。有利地,图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200可以利用比特掩码的操纵来使加速器200将第二输入层712(例如,32个(256,1×1,4)卷积)作为单个卷积(例如,(256,1×1,128)卷积)来执行并产生128深输出。在一些示例中,加速器200可以将128深输出作为单个张量(例如,(128,3×3,128)张量)进行处理,并产生与分组卷积操作700的32个(4,3×3,4)卷积相同的输出。
图8是可用于实现图7的分组卷积操作700的示例比特掩码802、804、806、808、810的图示,该分组卷积操作700可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行。在该示例中,比特掩码802、804、806、808、810可以实现稀疏性比特掩码(例如,激活稀疏性比特掩码、权重稀疏性比特掩码等)。
在一些示例中,比特掩码802、804、806、808、810可以由图2的内部激活稀疏性生成电路系统220和/或内部权重稀疏性生成电路系统228基于图1的配置数据122来生成。例如,配置电路系统214可以基于图1的配置数据122而确定要调用加速器200来执行图7的分组卷积操作700。在一些此类示例中,配置电路系统214可以基于配置寄存器设置来指令内部权重稀疏性生成电路系统228生成用于分组卷积操作700的比特掩码802、804、806、808、810,该配置寄存器设置可以基于配置数据122。在一些此类示例中,内部权重稀疏性生成电路系统228可以基于示例数据模式812来生成比特掩码802、804、806、808、810。在该示例中,数据模式812是分组行走1模式,其包括一的集合(例如,逻辑一的集合)、一的组(例如,逻辑一的组)等。
比特掩码802、804、806、808、810包括具有滤波器长度为z=256的32比特掩码,其包括与组0相对应的第一示例比特掩码802、与组1相对应的第二示例比特掩码804、与组2相对应的第三示例比特掩码806、与组3相对应的第四示例比特掩码808、以及与组31相对应的第五示例比特掩码810。例如,比特掩码802、804、806、808、810中的32个1可以用于从图7的256通道深的张量(例如,256深输入)一次隔离4个通道。在一些此类示例中,比特掩码802、804、806、808、810中的0可以确保滤波器仅有效地看到4个通道。有利地,加速器200可以基于数据模式812(或不同的数据模式)来操纵比特掩码802、804、806、808、810,从而以提高的效率执行分组卷积操作700。
图9是可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行的第一示例逐元素加法操作900的图示。第一逐元素加法操作900可以是利用比特掩码操纵和MAC阵列的结构一次隔离单个激活的示例。
第一逐元素加法操作900包括示例输入张量902、示例激活缓冲器的行904、示例权重缓冲器的列906、示例MAC阵列908、用于MAC阵列的示例共享累加器存储装置910以及示例输出激活912。输入张量902是4×1×4张量。替代地,输入张量902可以是任何其他大小。激活缓冲器的行904可以包括存储在图2的激活数据缓冲器216中的激活数据。权重缓冲器的列906可以包括存储在图2的权重数据缓冲器222中的权重数据。例如,内部权重稀疏性生成电路系统228可以基于图1的配置数据122来生成权重缓冲器的列906的权重数据。MAC阵列908可以是图2的MAC 236中的MAC 236的示例实现方式。在该示例中,MAC阵列236是4×4MAC阵列。替代地,MAC阵列236可以是任何其他大小和/或配置。在该示例中,向MAC 236提供权重数据。例如,内部权重生成电路系统224可以基于配置数据122来生成权重数据。共享累加器存储装置910可以实现图2的累加器存储装置238。输出激活912可以包括存储在图2的累加器存储装置238中的激活数据。
有利地,本文中描述的加速器(诸如加速器200)可以利用稀疏性模式和权重值的内部生成加上内部存储装置、使用MAC阵列908来执行第一逐元素加法操作900,其通常可用于常规卷积。有利地,加速器200可以重新配置针对常规卷积定制的硬件以实现非卷积操作,诸如第一逐元素加法操作900,其可以以可忽略的区域成本来执行。
在一些示例中,加速器200可以确定稀疏性向量可用于隔离张量(诸如输入张量902)中的单个元素以用于逐元素处理。例如,除隔离单个激活之外,权重数据可以由加速器200内部地生成并且被硬编码为可以被固定在硬件中和/或由固件和/或软件配置的值(例如,0×1)。在一些此类示例中,当隔离的激活值传递通过MAC阵列908和/或(更一般地)加速器200时,隔离的激活值可以被存储在共享累加器存储装置910中。
在图9的所图示的示例中,MAC阵列908可用于获得4×1×4输入张量作为输入,以基于行走1比特掩码以及MAC阵列908的操作来隔离16个1×1激活。在该示例中,MAC阵列908具有其中MAC阵列908的行共享激活缓冲器并且MAC阵列908的列共享权重缓冲器的配置。在该示例的顶行中,MAC阵列908的第一行中的所有MAC看到输入张量902的y[0]x[0]z[3:0],当权重缓冲器906的列的比特掩码向量被应用并且0x1乘法被执行时,顶行中的4个累加器值用y[0]x[0]z[0]、y[0]x[0]z[1]、y[0]x[0]z[2]和y[0]x[0]z[3]来填充。有利地,基于行走1模式的数据模式的比特掩码的生成可以实行输入张量902内的单个激活值的隔离。
图10是可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行的第二示例逐元素加法操作1000的图示。在该示例中,第二逐元素加法操作1000可以通过将第一示例张量(张量A)1002和第二示例张量(张量B)1004相加以生成和/或以其他方式输出第三示例张量(张量C)1006来实现。
在该示例中,图10的第一张量1002可以实现图9的输入张量902或其(一个或多个)部分。例如,图9的第一逐元素加法操作900可以被执行以在第一加速操作中隔离第一张量1002的第一激活值并且在第二加速操作中隔离第二张量1004的第二激活值。在一些此类示例中,图9的第一逐元素加法操作900可以被执行以将第一激活值和第二激活值相加以输出第三张量1006的第三激活值。
在一些示例中,图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200可以执行(例如,迭代地执行)图9的第一逐元素加法操作900以实现图10的第一张量1002和第二张量1004的加法。在一些此类示例中,图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200可以通过将第一张量1002和第二张量1004分解成更小的块或张量来执行(例如,迭代地执行)图9的第一逐元素加法操作900,并且相加(例如,迭代地相加)在一起以生成输出,如图11所图示的示例中所描绘。
图11是可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行的第三示例逐元素加法操作1100的图示。在该示例中,第一张量1002和第二张量1004可以被划分、分区和/或以其他方式分解成更小的张量或块。在该示例中,第一张量1002和第二张量1004可以被划分为16×8×16的块。在该示例中,第一张量1002的第一16×8×16块可以与第二张量1004的第二16×8×16块相加,以产生第三张量1006的第三16×8×16块。例如,图2的加速器200可以对第一块和第二块执行图9的第一逐元素加法操作900,以产生第三张量1006的第三块。在一些此类示例中,加速器200可以对第一张量1002和第二张量1004重复和/或以其他方式迭代地执行16次第一逐元素加法操作900,以输出第三张量1006的64×16×32块。
有利地,图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200可以执行第一逐元素加法操作900、第二逐元素加法操作1000和/或第三逐元素加法操作1100。例如,加速器200可以用硬件来实现以执行常规卷积操作。在一些此类示例中,加速器200可以被配置成用于使用相同的硬件来执行常规卷积操作、第一逐元素加法操作900、第二逐元素加法操作1000和/或第三逐元素加法操作1100,这可以减少支持和/或以其他方式实现逐元素加法操作的硬件成本。
有利地,第一加速电路系统108、第二加速电路系统110、和/或加速器200可以使用密集和/或稀疏向量来执行第一逐元素加法操作900、第二逐元素加法操作1000和/或第三逐元素加法操作1100。例如,加速器200可以利用图2的相同的硬件来执行第一逐元素加法操作900、第二逐元素加法操作1000和/或第三逐元素加法操作1100以实行两个稀疏向量、稀疏向量和密集向量、或两个密集向量的加法。
图12是可以由图1的第一加速电路系统108、图1的第二加速电路系统110和/或图2的加速器200执行的示例扩张卷积操作1202、1204、1206的图示。图12的扩张卷积操作1202、1204、1206可以实现生成比特掩码向量以操纵滤波器核的结构从而将扩张卷积操作1202、1204、1206作为常规2-D卷积操作执行的示例。如所图示的示例中所描绘的,扩张卷积或空洞卷积可以通过在相邻元素之间插入空洞(hole)来扩展第一示例核1208的感受野。
在该示例中,扩张卷积是3×3扩张卷积。所图示的示例描绘了三个示例扩张卷积1202、1204、1206,这三个示例扩张卷积包括第一示例扩张卷积1202、第二示例扩张卷积1204和第三示例扩张卷积1206。第一扩张卷积1202可以用1的扩张来实现,其中在第二示例核1210的相邻元素之间不存在空洞。第二扩张卷积1204可以用2的扩张来实现,其中在第三示例核1212的相邻元素之间存在单个空洞。第三扩张卷积1206可以用3的扩张来实现,其中在第四示例核1214的相邻元素之间存在两个空洞。
图13是可以由图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200实现的示例核1302、1304的图示。例如,图2的内部激活稀疏性生成电路系统220可以生成核1302、1304。在一些示例中,图2的内部权重稀疏性生成电路系统228可以生成核1302、1304。
在图13的所图示的示例中,核1302、1304包括第一示例核1302和第二示例核1304。在该示例中,第一核1302是5×5密集核并且第二核1304是5×5稀疏核。例如,内部权重稀疏性生成电路系统228可以生成第二核1304,以基于2的扩张来实现3×3扩张卷积操作。在一些此类示例中,第一核1302可以实现图12的第二核1210,和/或第二核1304可以实现图12的第三核1212。例如,第二核1304可以被认为是大的非扩张核(诸如第一核1302)的稀疏子集。有利地,内部权重稀疏性生成电路系统228可以通过在相邻元素之间插入0来操纵、修改和/或以其他方式调节第一核1302,以将第一核1302转译和/或以其他方式转换成第二核1304。在一些示例中,内部权重稀疏性生成电路系统228可以通过以下操作来生成第二核1304:对配置电路系统214和/或内部权重稀疏性生成电路系统228的配置寄存器进行编程以内部地产生重复模式,或者操纵配置电路系统214和/或内部权重稀疏性生成电路系统228的存储器中的值并允许权重数据缓冲器222读取此类值。有利地,内部权重稀疏性生成电路系统228和/或(更一般地)加速器200可以通过操纵第一核1302生成第二核1304来实行要在稀疏NNA(诸如加速器200)上作为常规卷积操作被执行的扩张卷积操作(诸如图12的扩张卷积操作1202、1204、1206中的一个扩张卷积操作)。
图14-图17中示出表示用于实现图1的示例加速器编译器104A-104C、图1的第一示例加速电路系统108、图1的第二示例加速电路系统110、图2的示例加速器200、和/或图3的加速器编译器300的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是用于由计算机处理器和/或处理器电路系统(诸如下面结合图18讨论的示例处理器平台1800中所示的处理器电路系统1812、示例图形处理单元1840、示例视觉处理单元1842、和/或示例神经网络处理器1844、下面结合图19讨论的处理器电路系统、和/或下面结合图20讨论的处理器电路系统)执行的一个或多个可执行程序或可执行程序的(一个或多个)部分。程序可被具体化在存储于与示例处理器电路系统1812、示例图形处理单元1840、示例视觉处理单元1842、和/或示例神经网络处理器1844相关联的诸如CD-ROM、软盘、HDD、DVD、蓝光盘或存储器之类的非暂态计算机可读存储介质上的软件中,但是整个程序和/或其部分可以替代地由示例处理器电路系统1812、示例图形处理单元1840、示例视觉处理单元1842、和/或示例神经网络处理器1844之外的设备执行,和/或程序可被具体化在固件或专用硬件中。进一步地,虽然参照图14-图-17中图示的流程图描述了示例程序,但是可替代地使用实现图1的示例加速器编译器104A-104C、图1的第一示例加速电路系统108、图1的第二示例加速电路系统110、图2的示例加速器200、和/或图3的加速器编译器300的许多其他方法。例如,框的执行次序可以被改变,和/或所描述的框中的一些框可以被改变、被消除或被组合。附加地或替代地,框中的任何框或所有框可以由被构造成用于在不执行软件或固件的情况下执行相对应的操作的一个或多个硬件电路(例如,分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现。处理器电路系统可以分布在不同的网络位置和/或位于一个或多个设备(例如,单个机器中的多核心处理器、跨服务器机架分布的多个处理器等)的本地。
本文中描述的机器可读指令可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式等中的一种或多种格式来存储。本文中描述的机器可读指令可以作为可用于创建、制造和/或产生机器可执行指令的数据或数据结构(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在位于网络或网络集合中的相同或不同位置处(例如,在云中、在边缘设备中等)的一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能要求安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新分配、编译等中的一项或多项,以使得它们由计算设备和/或其他机器直接可读取、可解释、和/或可执行。例如,机器可读指令可以被存储在多个部分中,这些部分被单独压缩、加密并存储在分开的计算设备上,其中,这些部分在被解密、解压缩和组合时形成实现诸如本文所述的、可以一起形成程序的一个或多个功能的可执行指令的集合。
在另一示例中,机器可读指令可以以它们可被处理器电路系统读取的状态来存储,但是要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发工具包(software development kit,SDK)、应用编程接口(application programminginterface,API)等,以便在特定的计算设备或其他设备上执行指令。在另一示例中,在可整体或部分地执行机器可读指令和/或相对应的(一个或多个)程序之前,机器可读指令可能需要被配置(例如,所存储的设置、所输入的数据、所记录的网络地址等)。由此,如本文中所使用,机器可读介质可包括机器可读指令和/或(一个或多个)程序,而不管机器可读指令和/或(一个或多个)程序在被存储时或以其他方式处于静态或在途中时的特定格式或状态如何。
本文中所描述的机器可读指令可以由任何过去、现在或未来的指令语言、脚本语言、编程语言等表示。例如,机器可读指令可以用以下语言中的任何语言来表示:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HyperText Markup Language,HTML)、结构化查询语言(SQL)、Swift等。
如上文所提及,可使用存储于非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图14-图17的示例过程,非暂态计算机和/或机器可读介质诸如HDD、闪存、只读存储器、CD、DVD、缓存、随机存取存储器和/或信息被存储于其中达任何持续时间(例如,达扩展时间段、持久地、在简短的实例期间、在临时缓冲和/或信息缓存期间)的任何其他存储设备或存储盘。如本文中所使用,术语非暂态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号且排除传输介质。
“包含”和“包括”(及其所有形式和时态)在本文中被用作开放式术语。由此,每当权利要求将任何形式的“包含”或“包括”(例如,包括、包含、包括有、包含有、具有等)用作前序部分或用于任何种类的权利要求记载内容之中时,应当理解的是,附加的元素、项等可以存在,而不落在相对应的权利要求或记载的范围之外。如本文中所使用,当短语“至少”被用作例如权利要求的前序部分中的过渡术语时,它以与术语“包括有”和“包含有”是开放式的相同的方式是开放式的。当例如以诸如A、B和/或C之类的形式被使用时,术语“和/或”指的是A、B、C的任何组合或子集,诸如(1)单独的A、(2)单独的B、(3)单独的C、(4)A与B、(5)A与C、(6)B与C、以及(7)A与B及与C。如本文中在描述结构、组件、项、对象和/或事物的上下文中所使用,短语“A和B中的至少一者”旨在指代包括以下各项中的任一项的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。类似地,如本文中在描述结构、组件、项、对象和/或事物的上下文中所使用,短语“A或B中的至少一者”旨在指代包括以下各项中的任一项的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。如本文中在描述过程、指令、动作、活动和/或步骤的实行或执行的上下文中所使用,短语“A和B中的至少一者”旨在指代包括以下各项中的任一项的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。类似地,如本文中在描述过程、指令、动作、活动和/或步骤的实行或执行的上下文中所使用,短语“A或B中的至少一者”旨在指代包括以下各项中的任一项的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。
如本文中所使用,单数引用(例如,“一(a、an)”、“第一”、“第二”等)不排除复数。如本文中所使用,术语“一(a或an)”实体是指一个或多个的该实体中。术语“一(a)”(或“一(an)”)、“一个或多个”和“至少一个”在本文中可以可互换地使用。此外,虽然单独列出,但多个装置、元件或方法动作可由例如单个单元或处理器来实现。附加地,虽然单独的特征可以被包括在不同的示例或权利要求中,但是这些特征可以可能被组合,并且在不同的示例或权利要求中的包含并不暗示特征的组合不可行和/或不是有利的。
图14是表示可示例过程1400的流程图,该示例过程1400可使用可被执行以执行加速操作的示例机器可读指令来执行,和/或使用被配置成用于实现图1的示例加速电路系统108、110和/或图2的稀疏加速器200以执行加速操作的硬件来执行。示例过程1400开始于框1402,在框1402处,第一加速电路系统108和/或第二加速电路系统110基于与加速器相关联的配置信息来标识加速操作。例如,配置电路系统214(图2)可以标识要由加速器200执行的图5的深度方向卷积操作500。在一些此类示例中,配置电路系统214可以基于图1的配置数据122来标识深度方向卷积操作500。
在框1404处,第一加速电路系统108和/或第二加速电路系统110可以基于加速操作来配置加速器。例如,配置电路系统214可以基于加速操作来配置内部激活稀疏性生成电路系统220(图2)、内部权重稀疏性生成电路系统228(图2)、和/或内部权重生成电路系统224的一个或多个配置寄存器。在一些此类示例中,配置电路系统214可以将一个或多个配置寄存器配置成用于基于数据模式(诸如行走1数据模式、分组行走1数据模式等、和/或其组合)来生成比特掩码(例如,激活稀疏性比特掩码、权重激活比特掩码等)和/或(一个或多个)权重值。
在框1406处,第一加速电路系统108和/或第二加速电路系统110可以获得激活数据、激活稀疏性数据或权重数据中的至少一者。例如,激活数据缓冲器216(图2)可以经由激活数据接口204(图2)从图1的计算系统102的资源(例如,硬件、软件和/或固件)获得激活数据。在一些此类示例中,外部激活稀疏性缓冲器218(图2)可以经由激活稀疏性数据接口206(图2)从图1的计算系统102的资源获得激活稀疏性数据。在一些此类示例中,权重数据缓冲器222(图2)可以经由权重数据接口208(图2)从图1的计算系统102的资源获得权重数据。
在框1408处,第一加速电路系统108和/或第二加速电路系统110可以确定加速器是否要生成权重稀疏性数据。例如,配置电路系统214可以基于要由加速器200执行的卷积加速操作来指令内部权重稀疏性生成电路系统228(图2)生成权重稀疏性数据。
如果在框1408处第一加速电路系统108和/或第二加速电路系统110确定加速器并非要生成权重稀疏性数据,则在框1410处,第一加速电路系统108和/或第二加速电路系统110获得权重稀疏性数据。例如,外部权重稀疏性缓冲器226(图2)可以从图1的计算系统102的资源获得权重稀疏性数据。响应于在框1410处获得权重稀疏性数据,控制进行到框1414以基于激活稀疏性数据和权重稀疏性数据来生成稀疏性比特掩码。
如果在框1408处第一加速电路系统108和/或第二加速电路系统110确定加速器要生成权重稀疏性数据,则控制进行到框1412以基于激活稀疏性数据和权重稀疏性数据来生成稀疏性比特掩码。例如,配置电路系统214可以基于加速操作而指令第一复用器230将稀疏激活向量提供到组合稀疏性控制器234(图2)。在一些示例中,配置电路系统214可以基于加速操作而指令第二复用器232将稀疏权重向量提供到组合稀疏性控制器234。在一些此类示例中,响应于加速操作标识为深度方向卷积操作,配置电路系统214可以指令第二复用器232从内部权重稀疏性生成电路系统228选择稀疏权重向量。在一些此类示例中,组合稀疏性控制器234可以基于激活稀疏性数据和权重稀疏性数据来生成稀疏性比特掩码,诸如图6的第三稀疏性比特掩码向量606,图8的比特掩码802、804、806、808、810等中的一个比特掩码,等等。
在框1416处,第一加速电路系统108和/或第二加速电路系统110可以指令一个或多个数据缓冲器基于稀疏性数据将激活数据或权重数据中的至少一者提供到加速器的加速器逻辑。例如,组合稀疏性控制器234可以指令激活数据缓冲器216基于稀疏性比特掩码将激活数据提供到MAC 236,该稀疏性比特掩码可以基于激活稀疏性数据。在一些示例中,组合稀疏性控制器234可以指令权重数据缓冲器222基于稀疏性比特掩码将权重数据提供到MAC 236,该稀疏性比特掩码可以基于权重稀疏性数据。
在框1418处,第一加速电路系统108和/或第二加速电路系统110可以基于激活数据或权重数据中的至少一者来执行加速操作。例如,加速器200可以执行图5的深度方向卷积操作500、图7的分组卷积操作700、图9的第一逐元素加法操作900、图10的第二逐元素加法操作1000、图11的第三逐元素加法操作1100、图12的第一扩张卷积操作1202、图12的第二扩张卷积操作1204、图12的第三扩张卷积操作1206等。
在框1420处,第一加速电路系统108和/或第二加速电路系统110可以确定是否选择另一加速操作来用加速器执行。例如,配置电路系统214可以确定是否选择另一加速操作来用加速器200执行。如果在框1420处第一加速电路系统108和/或第二加速电路系统110确定选择另一加速操作来用加速器执行,则控制返回到框1402以基于与加速器相关联的配置信息来标识加速操作,否则图14的示例过程1400结束。
图15是表示示例过程1500的流程图,该示例过程1500可以使用可被执行以执行加速操作的示例机器可读指令来执行,和/或使用被配置成用于实现图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200以执行加速操作的硬件来执行。图15的示例过程1500开始于框1502,在框1502处,第一加速电路系统108和/或第二加速电路系统110可以基于与加速器相关联的配置信息来标识加速操作。例如,配置电路系统214(图2)可以基于图1的配置数据122来标识加速器要执行图5的深度方向卷积操作500、图9的第一逐元素加法操作900等。
在框1504处,第一加速电路系统108和/或第二加速电路系统110可以确定加速器是否要生成权重数据。例如,配置电路系统214可以基于配置数据122来确定内部权重生成电路系统224要生成权重数据。在一些此类示例中,配置电路系统214可以基于指示要由加速器200执行的加速操作是图9的第一逐元素加法操作900的配置数据122来确定内部权重生成电路系统224要来生成权重数据。
如果在框1504处第一加速电路系统108和/或第二加速电路系统110确定加速器并非要生成权重稀疏性数据,则控制前进到框1508,否则在框1506处,第一加速电路系统108和/或第二加速电路系统110可以基于加速操作来生成权重数据。例如,基于加速操作是第一逐元素加法操作900,内部权重生成电路系统224可以生成权重数据。
在框1508处,第一加速电路系统108和/或第二加速电路系统110可以接收激活数据或权重数据中的至少一者。例如,响应于要生成权重数据的确定,激活数据缓冲器216(图2)可以经由激活数据接口204(图2)从计算系统102的资源接收激活数据。有利地,在一些此类示例中,可以不需要经由权重数据接口208(图2)接收生成的权重数据。在一些示例中,响应于并非要生成权重数据的确定,激活数据缓冲器216可以经由激活数据接口204从计算系统102的资源接收激活数据,并且权重数据缓冲器222可以经由权重数据接口208(图2)从计算系统102的资源接收权重数据。
在框1510处,第一加速电路系统108和/或第二加速电路系统110可以确定加速器是否要生成激活稀疏性数据或权重稀疏性数据中的至少一者。例如,配置电路系统214可以基于图1的配置数据122来确定要将内部激活稀疏性生成电路系统220(图2)和/或内部权重稀疏性生成电路系统228(图2)的一个或多个配置寄存器配置成用于基于深度方向卷积操作500、第一逐元素加法操作900等来生成激活稀疏性数据和/或权重稀疏性数据。
如果在框1510处第一加速电路系统108和/或第二加速电路系统110确定加速器并非要生成激活稀疏性数据或权重稀疏性数据中的至少一者,则控制前进到框1514。如果在框1510处第一加速电路系统108和/或第二加速电路系统110确定加速器要生成激活稀疏性数据或权重稀疏性数据中的至少一者,则在框1512处,第一加速电路系统108和/或第二加速电路系统110可以基于加速操作来生成激活稀疏性数据或权重稀疏性数据中的至少一者。例如,内部权重稀疏性生成电路系统228可以基于行走1数据模式来生成包括稀疏权重向量的权重稀疏性数据(诸如图6的第三稀疏性比特掩码向量606),其可以基于加速操作标识为深度方向卷积操作500。
在框1514处,第一加速电路系统108和/或第二加速电路系统110可以接收激活稀疏性数据或权重稀疏性数据中的至少一者。例如,响应于并非要生成激活稀疏性数据或权重稀疏性数据中的至少一者的确定,外部激活稀疏性缓冲器218(图2)可以经由激活稀疏性数据接口206(图2)从计算系统102的资源接收激活稀疏性数据。在一些示例中,响应于要生成激活稀疏性数据或权重稀疏性数据中的至少一者的确定,外部激活稀疏性缓冲器218(图2)可以经由激活稀疏性数据接口206从计算系统102的资源接收激活稀疏性数据,和/或外部权重稀疏缓冲器226(图2)可以经由权重稀疏性数据接口210(图2)从计算系统102的资源接收权重稀疏性数据。
在框1516处,第一加速电路系统108和/或第二加速电路系统110可以基于激活稀疏性数据或权重稀疏性数据来生成稀疏性比特掩码。例如,配置电路系统214可以基于加速操作而指令第一复用器230(图2)将稀疏激活向量提供到组合稀疏性控制器234(图2)。在一些示例中,配置电路系统214可以基于加速操作而指令第二复用器232(图2)将稀疏权重向量提供到组合稀疏性控制器234。在一些此类示例中,响应于加速操作标识为深度方向卷积操作500,配置电路系统214可以指令第二复用器232从内部权重稀疏性生成电路系统228选择稀疏权重向量。在一些此类示例中,组合稀疏性控制器234可以基于激活稀疏性数据和权重稀疏性数据来生成稀疏性比特掩码,诸如图6的第三稀疏性比特掩码向量606,图8的比特掩码802、804、806、808、810等中的一个比特掩码,等等。
在框1518处,第一加速电路系统108和/或第二加速电路系统110可以指令(一个或多个)数据缓冲器基于稀疏性比特掩码来将数据提供到加速器逻辑。例如,组合稀疏性控制器234可以指令激活数据缓冲器216基于稀疏性比特掩码和激活稀疏性数据将激活数据提供到MAC 236。在一些示例中,组合稀疏性控制器234可以指令权重数据缓冲器222基于稀疏性比特掩码和权重稀疏性数据将权重数据提供到MAC 236。
在框1520处,第一加速电路系统108和/或第二加速电路系统110可以用加速器逻辑来执行加速操作。例如,加速器200可以执行图5的深度方向卷积操作500、图7的分组卷积操作700、图9的第一逐元素加法操作900、图10的第二逐元素加法操作1000、图11的第三逐元素加法操作1100、图12的第一扩张卷积操作1202、图12的第二扩张卷积操作1204、图12的第三扩张卷积操作1206等。
在框1522处,第一加速电路系统108和/或第二加速电路系统110可以确定是否执行另一加速操作。例如,配置电路系统214可以确定是否选择另一加速操作来用加速器200执行。如果在框1522处第一加速电路系统108和/或第二加速电路系统110确定执行另一加速操作,则控制返回到框1502以基于与加速器相关联的配置信息来标识加速操作,否则图15的示例过程1500结束。
图16是表示示例过程1600的流程图,该示例过程可以使用可被执行以执行加速操作的示例机器可读指令来执行,和/或使用被配置成用于实现图1的第一加速电路系统108、图1的第二加速电路系统110、和/或图2的加速器200以执行加速操作的硬件来执行。示例过程1600开始于框1602,在框1602处,第一加速电路系统108和/或第二加速电路系统110可以确定加速模式是否是二维(2-D)卷积。例如,配置电路系统214(图2)可以基于经由配置接口202(图2)接收到的图1的配置数据122来确定加速器200的加速模式是2-D卷积模式。
如果在框1602处第一加速电路系统108和/或第二加速电路系统110确定加速模式不是2-D卷积,则控制前进到框1606。如果在框1602处第一加速电路系统108和/或第二加速电路系统110确定加速模式是2-D卷积,则在框1604处,第一加速电路系统108和/或第二加速电路系统110从加速接口获得(一个或多个)稀疏权重向量。例如,外部权重稀疏性缓冲器226(图2)可以经由权重稀疏性数据接口210(图2)从计算系统102的资源接收包括一个或多个稀疏权重向量的权重稀疏性数据。
在框1606处,第一加速电路系统108和/或第二加速电路系统110可以确定加速模式是否是深度方向卷积。例如,配置电路系统214可以基于配置数据122来确定加速器200的加速模式是深度方向卷积模式。
如果在框1606处第一加速电路系统108和/或第二加速电路系统110确定加速模式不是深度方向卷积,则控制前进到框1610。如果在框1606处第一加速电路系统108和/或第二加速电路系统110确定加速模式是深度方向卷积,则在框1608处,第一加速电路系统108和/或第二加速电路系统110可以基于深度方向卷积来标识稀疏权重向量数据模式。例如,配置电路系统214可以指令内部权重稀疏性生成电路系统228(图2)基于稀疏权重向量数据模式来生成一个或多个稀疏权重向量。在一些此类示例中,响应于基于加速模式是深度方向卷积作出的加速器200要执行图5的深度方向卷积操作500的确定,内部权重稀疏性生成电路系统228可以标识稀疏权重向量数据模式。
在框1610处,第一加速电路系统108和/或第二加速电路系统110可以确定加速模式是否是分组卷积。例如,配置电路系统214可以基于配置数据122来确定加速器200的加速模式是分组卷积模式。
如果在框1610处第一加速电路系统108和/或第二加速电路系统110确定加速模式不是分组卷积,则控制前进到框1614。如果在框1610处第一加速电路系统108和/或第二加速电路系统110确定加速模式是分组卷积,则在框1612处,第一加速电路系统108和/或第二加速电路系统110可以基于分组卷积来标识稀疏权重向量数据模式。例如,配置电路系统214可以指令内部权重稀疏性生成电路系统228基于稀疏权重向量数据模式来生成一个或多个稀疏权重向量。在一些此类示例中,响应于基于加速模式是分组卷积作出的加速器200要执行图7的分组卷积操作700的确定,内部权重稀疏性生成电路系统228可以标识稀疏权重向量数据模式。在一些此类示例中,内部权重稀疏性生成电路系统228可以生成比特掩码802、804、806、810、810中的一者(或多者)。
在框1614处,第一加速电路系统108和/或第二加速电路系统110可以确定加速模式是否是逐元素加法。例如,配置电路系统214可以基于配置数据122来确定加速器200的加速模式是逐元素加法模式。
如果在框1614处第一加速电路系统108和/或第二加速电路系统110确定加速模式不是逐元素加法,则控制前进到框1618。如果在框1614处第一加速电路系统108和/或第二加速电路系统110确定加速模式是逐元素加法,则在框1616处,第一加速电路系统108和/或第二加速电路系统110可以基于逐元素加法来标识稀疏权重向量数据模式。例如,配置电路系统214可以指令内部权重稀疏性生成电路系统228基于稀疏权重向量数据模式来生成一个或多个稀疏权重向量。在一些此类示例中,响应于基于加速模式是逐元素加法作出的加速器200要执行图9的第一逐元素加法操作900、图10的第二逐元素加法操作1000和/或图11的第三逐元素加法操作1100的确定,内部权重稀疏性生成电路系统228可以标识稀疏权重向量数据模式。在一些此类示例中,内部权重稀疏性生成电路系统228可以生成图9的权重缓冲器906的列。
在框1618处,第一加速电路系统108和/或第二加速电路系统110可以确定加速模式是否是扩张卷积。例如,配置电路系统214可以基于配置数据122来确定加速器200的加速模式是扩张卷积模式。
如果在框1618处第一加速电路系统108和/或第二加速电路系统110确定加速模式不是扩张卷积,则控制前进到框1624。如果在框1618处第一加速电路系统108和/或第二加速电路系统110确定加速模式是扩张卷积,则在框1620处,第一加速电路系统108和/或第二加速电路系统110可以基于扩张卷积来标识稀疏权重向量数据模式。例如,配置电路系统214可以指令内部权重稀疏性生成电路系统228基于稀疏权重向量数据模式来生成一个或多个稀疏权重向量。在一些此类示例中,响应于基于加速模式是扩张模式作出的加速器200要执行图12的扩张卷积操作1202、1204、1206中的一者(或多者),内部权重稀疏性生成电路系统228可以标识稀疏权重向量数据模式。在一些此类示例中,内部权重稀疏性生成电路系统228可以生成图13的第二核1304。
在框1622处,第一加速电路系统108和/或第二加速电路系统110可以指令数据缓冲器基于稀疏权重向量数据模式来提供激活数据和权重数据。例如,组合稀疏性控制器234(图2)可以指令激活数据缓冲器216(图2)基于激活数据和稀疏性比特掩码将激活数据提供到MAC 236(图2),稀疏性比特掩码可以基于稀疏激活向量并且稀疏权重向量基于稀疏权重向量数据模式。在一些示例中,组合稀疏性控制器234可以指令权重数据缓冲器222(图2)基于稀疏性比特掩码和权重数据将权重数据提供到MAC 236。
在框1624处,第一加速电路系统108和/或第二加速电路系统110可以确定加速模式是否是自定义模式。例如,配置电路系统214可以确定加速器200的加速模式是其中用户、计算系统等可以将加速器200配置成用于自定义操作、自定义加速操作等的自定义模式。
如果在框1624处第一加速电路系统108和/或第二加速电路系统110确定加速模式不是自定义模式,则控制前进到框1628。如果在框1624处第一加速电路系统108和/或第二加速电路系统110确定加速模式是自定义模式,则在框1626处,第一加速电路系统108和/或第二加速电路系统110可以基于配置数据来执行自定义加速。例如,用户、计算系统等可以向配置电路系统214提供配置数据,该配置数据包括:第一指令,用于使加速器200基于第一数据模式内部地生成(一个或多个)稀疏激活向量;第二指令,用于使加速器200基于第二数据模式内部地生成权重数据;第三指令,用于使加速器200基于第三数据模式内部地生成(一个或多个)稀疏激活向量等等;和/或以上各项的组合。在一些此类示例中,响应于第一指令,内部激活稀疏性生成电路系统220可以基于第一数据模式来生成(一个或多个)稀疏激活向量。在一些示例中,响应于第二指令,内部权重稀疏性生成电路系统228可以基于第二数据模式来生成(一个或多个)稀疏权重向量。在一些示例中,响应于第三指令,内部权重生成电路系统224可以基于第三数据模式来生成权重数据。在一些此类示例中,组合稀疏性控制器234可以指令激活数据缓冲器216基于激活数据和稀疏性比特掩码将激活数据提供到MAC 236,该稀疏性比特掩码可以基于(一个或多个)稀疏激活向量和(一个或多个)稀疏权重向量,该(一个或多个)稀疏激活向量和(一个或多个)稀疏权重向量基于第一数据模式和/或第二数据模式中的一者(或多者)。在一些示例中,组合稀疏性控制器234可以指令权重数据缓冲器222基于稀疏性比特掩码和内部生成的权重数据将权重数据提供到MAC 236。在一些此类示例中,MAC 236可以基于所提供的激活数据和权重数据来执行自定义操作。
在框1628处,第一加速电路系统108和/或第二加速电路系统110可以确定是否选择另一加速操作来执行。例如,配置电路系统214可以确定是否选择另一加速操作来用加速器200执行。在框1628处,如果第一加速电路系统108和/或第二加速电路系统110确定选择另一加速操作来执行,则控制返回到框1602,否则图16的示例过程1600结束。
图17是表示示例过程1700的流程图,该示例过程1700可以使用可被执行以基于机器学习模型的经编译的配置来生成可执行文件的示例机器可读指令来执行,和/或使用被配置成用于实现图1的加速器编译器104A-104C和/或图3的加速器编译器300以基于机器学习模型的经编译的配置来生成可执行文件的硬件来执行。图17的示例过程1700开始于框1702,在框1702处,加速器编译器104A-104C可以标识要由加速器执行的机器学习模型。例如,ML模型配置处置器310(图3)可以标识要由图1的第一加速电路系统108、图1的第二加速电路系统110、图2的加速器200等执行的图1的(一个或多个)ML模型124中的一个ML模型124。在一些此类示例中,ML模型配置处置器310可以将(一个或多个)ML模型124中的一个ML模型124标识为要由加速器200执行的NN。
在框1704处,加速器编译器104A-104C可以标识加速器的加速模式。例如,ML模型配置处置器310可以基于所标识的NN或要处理的该NN的(一个或多个)层来标识加速器200的深度方向卷积模式。
在框1706处,加速器编译器104A-104C可以确定基于加速模式将激活数据或激活稀疏性数据中的至少一者提供到加速器。例如,激活配置处置器320(图3)可以基于深度方向卷积模式来确定将激活数据或激活稀疏性数据中的至少一者提供到加速器200。在一些示例中,激活配置处置器320(图3)可以基于深度方向卷积模式来确定不将激活数据和/或激活稀疏性数据提供到加速器200以改进加速器的带宽。在一些此类示例中,激活配置处置器320可以确定加速器200可以内部地生成激活稀疏性数据以减少要被读入到加速器200的数据量,并且由此改进加速器200的效率。
如果在框1706处加速器编译器104A-104C基于加速模式确定不将激活数据或激活稀疏性数据中的至少一者提供到加速器,则控制前进到框1710。如果在框1706处加速器编译器104A-104C基于加速模式确定将激活数据或激活稀疏性数据中的至少一者提供到加速器,则在框1708处,加速器编译器104A-104C可以标识要被提供到加速器的激活数据或激活稀疏性数据中的至少一者。例如,激活配置处置器320可以标识要被传送到图2的激活数据接口204的激活数据和/或要被传送到图2的激活稀疏性数据接口206的激活稀疏性数据。
在框1710处,加速器编译器104A-104C可以基于加速模式来确定是否将权重数据或权重稀疏性数据中的至少一者提供到加速器。例如,权重配置处置器330(图3)可以基于深度方向卷积模式确定将权重数据或权重稀疏性数据中的至少一者提供到加速器200。在一些示例中,权重配置处置器330(图3)可以基于深度方向卷积模式确定不将权重数据和/或权重稀疏性数据提供到加速器200以改进加速器的带宽。在一些此类示例中,权重配置处置器330可以确定加速器200可以内部地生成权重数据和/或权重稀疏性数据,以减少要被读入到加速器200的数据量,并且由此改进加速器200的效率。
如果在框1710处加速器编译器104A-104C基于加速模式确定不将权重数据或权重稀疏性数据中的至少一者提供到加速器,则控制前进到框1714。如果在框1710处加速器编译器104A-104C基于加速模式确定将权重数据或权重稀疏性数据中的至少一者提供到加速器,则在框1712处,加速器编译器104A-104C可以标识要被提供到加速器的权重数据或权重稀疏性数据中的至少一者。例如,权重配置处置器330可以标识要被传送到图2的权重数据接口208的权重数据和/或要被传送到图2的权重稀疏性数据接口210的权重稀疏性数据。
在框1714处,加速器编译器104A-104C可以基于加速模式来编译要由加速器执行的机器学习模型的配置。例如,配置编译器340(图3)可以基于图1的配置数据122来编译NN的一个或多个层的配置。在一些示例中,配置编译器340可以响应于不向加速器200提供激活稀疏性数据、权重稀疏性数据或权重数据中的至少一者的确定来编译一个或多个NN层的配置。在一些此类示例中,配置编译器340可以将配置编译为包括到加速器200的命令、指令等,以使用内部激活稀疏性生成电路系统220来生成激活稀疏性数据,使用内部权重稀疏性生成电路系统228来生成权重稀疏性数据,和/或使用内部权重生成电路系统224来生成权重数据。
在框1716处,加速器编译器104A-104C可以基于经编译的配置来生成可执行文件。例如,可执行文件生成器350(图3)可以基于一个或多个NN层的经编译的(一个或多个)NN层来生成可执行文件。在一些此类示例中,可执行文件生成器350可以将可执行文件存储为(一个或多个)ML模型124中的一个ML模型124。在一些此类示例中,接口电路系统114(图1)可以将可执行文件传送到外部计算系统130中的(一个或多个)外部计算系统130,该可执行文件当由外部计算系统130中的该(一个或多个)外部计算系统130执行时,可以配置和/或执行与外部计算系统130中的该(一个或多个)外部计算系统130相关联的NN。
在框1718处,加速器编译器104A-104C可以将激活数据、权重数据、激活稀疏性数据或权重稀疏性数据中的至少一者提供到加速器。例如,加速接口360(图3)可以将激活数据传送到激活数据接口204,将激活稀疏性数据传送到激活稀疏性数据接口206,将权重数据传送到权重数据接口208,和/或将权重稀疏性数据传送到加速器200的权重稀疏性数据接口210。
在框1720处,加速器编译器104A-104C可以指令加速器执行加速操作。例如,加速器接口360可以将(一个或多个)经编译的配置传送到配置接口202,该(一个或多个)经编译的配置在被接收时,可以调用和/或以其他方式使得加速器200基于(一个或多个)经编译的配置来执行深度方向卷积操作(或不同的加速操作)。响应于在框1720处指令加速器执行加速操作,图17的示例过程1700结束。
图18是被构造成用于执行图14-图17的指令以实现图1的加速器编译器104A-104C、图1的第一加速电路系统108、图1的第二加速电路系统110、图2的加速器200、和/或图3的加速器编译器300的示例处理器平台1800的框图。处理器平台1800可以是例如,服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能电话、诸如iPadTM之类的平板)、个人数字助理(personal digital assistant,PDA)、因特网设备、DVD播放器、CD播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、耳机或其他可穿戴设备、或任何其他类型的计算设备。
所图示示例的处理器平台1800包括处理器电路系统1812。所图示示例的处理器电路系统1812是硬件。例如,处理器电路系统1812可以由来自任何所期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器来实现。硬件处理器可以是基于半导体的(例如,基于硅的)设备。在该示例中,处理器电路系统1812实现图3的示例ML模型配置处置器310、示例激活配置处置器320、示例权重配置处置器330、示例配置编译器340和示例可执行文件生成器350。
所图示示例的处理器电路系统1812包括本地存储器1813(例如,缓存)。所图示示例的处理器电路系统1812经由总线1818而与包括易失性存储器1814和非易失性存储器1816的主存储器进行通信。例如,总线1818可以实现图1的示例总线116和/或图3的示例总线395。易失性存储器1814可以由SDRAM、DRAM、和/或任何其他类型的随机存取存储器设备来实现。非易失性存储器1816可以由闪存和/或任何其他期望类型的存储器设备来实现。由存储器控制器1817控制对主存储器1814、1816的访问。
所图示示例的处理器平台1800还包括接口电路1820。接口电路1820可由任何类型的接口标准(诸如以太网接口、USB、接口、NFC接口和/或PCI快速接口)实现。
在所图示的示例中,一个或多个输入设备1822被连接至接口电路1820。(一个或多个)输入设备1822准许用户将数据和/或命令输入到处理器电路系统1812中。(一个或多个)输入设备可以由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标(isopoint)设备和/或语音识别系统实现。
一个或多个输出设备1824也被连接至所图示示例的接口电路1820。输出设备1824可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organic light emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、面内切换(in-place switching,IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。由此,所图示示例的接口电路1820典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所图示示例的接口电路1820还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络1826与外部机器(例如,任何种类的计算设备)交换数据。通信可经由例如以太网连接、DSL连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。在该示例中,接口电路1820实现图3的示例加速器接口360。
所图示示例的处理器平台1800还包括用于存储软件和/或数据的一个或多个大容量存储设备1828。此类大容量存储设备1828的示例包括软盘驱动器、硬驱动器盘、致密盘驱动器、蓝光盘驱动器、独立盘的冗余阵列(redundant array of independent disk,RAID)系统、以及DVD驱动器。
图14-图17的机器可执行指令1832可以被存储在大容量存储设备1828中,存储在易失性存储器1814中,存储在非易失性存储器1816中,和/或存储在诸如CD或DVD的之类可移除非暂态计算机可读存储介质上。在该示例中,一个或多个大容量存储设备1828实现图3的示例ML模型数据存储370、示例激活数据存储380、以及示例权重数据存储390。
图18的所图示示例的处理器平台1800包括示例图形处理单元(GPU)1840、示例视觉处理单元(VPU)1842和示例神经网络处理器1844。在该示例中,GPU 1840、VPU 1842和神经网络处理器1844经由总线1818与处理器平台1800的不同硬件(诸如易失性存储器1814、非易失性存储器1816等)通信。在该示例中,神经网络处理器1844可以由来自任何所期望的系列或制造商的可以用于执行AI模型(诸如神经网络)的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器来实现,该AI模型可以由图1的(一个或多个)ML模型124实现。在一些示例中,ML模型配置处置器310、激活配置处置器320、权重配置处置器330、配置编译器340、可执行文件生成器350、加速器接口360、ML模型数据存储370、激活数据存储380、和/或权重数据存储390中的一者或多者可以代替或者附加于处理器电路系统1812、一个或多个大容量存储设备1828和/或接口电路1820被实现在GPU 1840、VPU 1842或神经网络处理器1844中的至少一者或者与GPU 1840、VPU 1842或神经网络处理器1844中的至少一者一起被实现。
在一些示例中,图形处理单元1840可以实现图1的第一加速电路系统108、第二加速电路系统110、和/或通用处理电路系统112。在一些示例中,VPU 1842可以实现图1的第一加速电路系统108、第二加速电路系统110、和/或通用处理电路系统112。在一些示例中,神经网络处理器1844可以实现图1的第一加速电路系统108、第二加速电路系统110、和/或通用处理电路系统112。
图19是图18的处理器电路系统1812的示例实现方式的框图。在该示例中,图18的处理器电路系统1812由微处理器1900来实现。例如,微处理器1900可以实现多核心硬件电路系统,诸如,CPU、DSP、GPU、XPU等。虽然其可包括任何数量的示例核心1902(例如,1个核心),但该示例的微处理器1900是包括N个核心的多核心半导体器件。微处理器1900的核心1902可以独立地操作,或者可以协作以执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可以由核心1902中的一个核心执行,或者可以由核心1902中的多个核心在相同或不同的时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序对应的机器代码被分割成线程,并由核心1902中两个或更多个核心并行地执行。软件程序可以与由图14-图17的流程图表示的机器可读指令和/或操作的部分或全部相对应。
核心1902可通过示例总线1904进行通信。在一些示例中,总线1904可实现通信总线,以实行与核心1902中的(一个或多个)核心1902相关联的通信。例如,总线1904可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(Serial PeripheralInterface,SPI)总线、PCI总线或PCIe总线中的至少一者。附加地或替代地,总线1904可实现任何其他类型的计算或电气总线。核心1902可以通过示例接口电路系统1906从一个或多个外部设备获得数据、指令和/或信号。核心1902可以通过接口电路系统1906向一个或多个外部设备输出数据、指令和/或信号。尽管该示例的核心1902包括示例本地存储器1920(例如,第一级(Level 1,L1)缓存,其可被分成L1数据缓存和L1指令缓存),但微处理器1900还包括可由核心共享的示例共享存储器1910(例如,第二级(Level 2,L2_缓存)),以用于对数据和/或指令的高速访问。数据和/或指令可以通过向共享存储器1910写入和/或从共享存储器1910读取来传输(例如,共享)。核心1902中的每个核心的本地存储器1920、以及共享存储器1910可以是包括多个级别的缓存存储器和主存储器(例如,图18的主存储器1814、1816)的存储设备的层次体系的部分。典型地,相比于较低级别的存储器,层次体系中的较高级别的存储器表现出较低的访问时间并且具有较小的存储容量。缓存层次体系的各级别的改变由缓存一致性策略来管理(例如,协调)。
每个核心1902可以被称为CPU、DSP、GPU等、或任何其他类型的硬件电路系统。每个核心1902包括控制单元电路系统1914、算术和逻辑(arithmetic and logic,AL)电路系统(有时称为ALU)1916、多个寄存器1918、L1缓存1920和示例总线1922。可以存在其他结构。例如,每个核心1902可以包括向量单元电路系统、单指令多数据(single instructionmultipledata,SIMD)单元电路系统、加载/存储单元(load/store unit,LSU)电路系统、分支/跳转单元电路系统、浮点单元(floating-point unit,FPU)电路系统等。控制单元电路系统1914包括被构造成用于控制(例如,协调)对应的核心1902内的数据移动的基于半导体的电路。AL电路系统1916包括被构造成用于在对应的核心1902内对数据执行一个或多个数学和/或逻辑操作的基于半导体的电路。一些示例的AL电路系统1916执行基于整数的操作。在其他示例中,AL电路系统1916还执行浮点操作。在另外的其他示例中,AL电路系统1916可包括执行基于整数的操作的第一AL电路系统和执行浮点操作的第二AL电路系统。在一些示例中,AL电路系统1916可以被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器1918是用于存储数据和/或指令(诸如,由对应的核心1902的AL电路系统1916执行的操作中的一个或多个操作的结果)的基于半导体的结构。例如,寄存器1918可以包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)段寄存器、(一个或多个)机器特定寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器等。寄存器1918可按如图19中所示的区块来布置。替代地,寄存器1918可以按任何其他布置、格式或结构来组织(包括贯穿核心1902被分布)以缩短访问时间。总线1920可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者。
每个核心1902(和/或(更一般地)微处理器1900)可以包括上文示出和描述的那些结构的附加和/或替代结构。例如,可以存在一个或多个时钟电路、一个或多个电源、一个或多个功率门、一个或多个缓存归属地代理(cache home agents,CHA)、一个或多个聚合/公共网格站点(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路系统。微处理器1900是半导体器件,该半导体器件被制造成包括经互连接的许多晶体管,以在被包含在一个或多个封装中的一个或多个集成电路(IC)中实现上文所描述的结构。处理器电路系统可包括一个或多个加速器,和/或与一个或多个加速器协作。在一些示例中,加速器由逻辑电路系统来实现,从而相比于由通用处理器可以进行的更快和/或更高效地执行某些任务。加速器的示例包括ASIC和FPGA,诸如本文中所讨论的那些。GPU或其他可编程器件也可以是加速器。加速器可以板载于处理器电路系统,与处理器电路系统处于同一芯片封装中,和/或处于与处理器电路系统分离的一个或多个封装中。
图20是图18的处理器电路系统1812的另一示例实现方式的框图。在该示例中,处理器电路系统1812由FPGA电路系统2000实现。例如,FPGA电路系统2000可用于执行原本可通过图19的示例微处理器1900执行对应的机器可读指令来执行的操作。然而,一旦被配置,FPGA电路系统2000就在硬件中实例化机器可读指令,并且由此通常能够以相比这些操作能够通过通用微处理器执行对应的软件而被执行的情况更快地执行这些操作。
更具体地,相比于上文所描述的图19的微处理器1900(其为可被编程为用于执行由图14-图17的流程图表示的机器可读指令的部分或全部但其互连和逻辑电路系统一旦被制造就是固定的通用器件),图20的示例的FPGA电路系统2000包括可以在制造之后以不同的方式被配置和/或互连以实例化例如由图14-图17的流程图表示的机器可读指令的部分或全部的互连和逻辑电路系统。具体而言,FPGA 2000可以被认为是逻辑门、互连和开关的阵列。可以对开关进行编程,以改变逻辑门如何通过互连被互连,从而有效地形成一个或多个专用逻辑电路(除非并且直到FPGA电路系统2000被重新编程)。经配置的逻辑电路使逻辑门能够以不同的方式协作,从而对由输入电路系统接收到的数据执行不同的操作。这些操作可与由图14-图17的流程图表示的软件的部分或全部相对应。由此,FPGA电路系统2000可以被构造成用于将图14-图17的流程图的机器可读指令中的一些或全部有效地实例化为专用逻辑电路,以便以类似于ASIC的专用方式执行与这些软件指令相对应的操作。因此,FPGA电路系统2000可执行与图14-图17的机器可读指令的部分或全部相对应的操作的速度快于通用微处理器执行相同的操作的速度。
在图20的示例中,FPGA电路系统2000被构造成用于由终端用户通过诸如Verilog之类的硬件描述语言(hardware description language,HDL)编程(和/或重新编程一次或多次)。图20的FPGA电路系统2000包括示例输入/输出(input/output,I/O)电路系统2002,该示例输入/输出(I/O)电路系统2002用于从示例配置电路系统2004和/或外部硬件(例如,外部硬件电路系统)2006获得数据和/或向示例配置电路系统2004和/或外部硬件(例如,外部硬件电路系统)2006输出数据。例如,配置电路系统2004可以实现接口电路系统,该接口电路系统可获得用于配置FPGA电路系统2000或其(一个或多个)部分的机器可读指令。在一些此类示例中,配置电路系统2004可以从用户、机器(例如,可以实现人工智能/机器学习(Artificial Intelligence/Machine Learning,AI/ML)模型以生成指令的硬件电路系统(例如,经编程的或专用电路系统)等获得机器可读指令。在一些示例中,外部硬件2006可实现图19的微处理器1900。在一些示例中,外部硬件2006可以实现图1的第一加速电路系统108、图1的第二加速电路系统、和/或图1的任何其他组件。在一些示例中,外部硬件2006可实现图2的加速器200。FPGA电路系统2000还包括示例逻辑门电路系统2008、多个示例可配置的互连2010、以及示例存储电路系统2012的阵列。逻辑门电路系统2008和互连2010可配置用于实例化可与图14-图17的机器可读指令中的至少一些机器可读指令对应的一个或多个操作和/或其他期望的操作。图20所示的逻辑门电路系统2008是按组或块来制造的。每个块包括可以被配置为逻辑电路的基于半导体的电气结构。在一些示例中,电气结构包括提供用于逻辑电路的基本构建块的逻辑门(例如,与(“And”)门、或(“Or”)门、或非(“Nor”)门等)。电可控开关(例如,晶体管)存在于逻辑门电路系统2008中的每个逻辑门电路系统2008内,以使得能够将电气结构和/或逻辑门配置成形成电路来执行期望的操作。逻辑门电路系统2008可包括其他电气结构,诸如,查找表(look-up table,LUT)、寄存器(例如,触发器或锁存器)、复用器等。
所图示示例的互连2010是导电路径、迹线、通孔等,该导电路径、迹线、通孔等可以包括电可控开关(例如,晶体管),该电可控开关(例如,晶体管)的状态可以通过编程(例如,使用HDL指令语言)来改变以对逻辑门电路系统2008中的一个或多个逻辑门电路系统2008之间的一个或多个连接进行激活或解除激活,从而编程期望的逻辑电路。
所图示示例的存储电路系统2012被构造成用于存储由相对应的逻辑门执行的操作中的一个或多个操作的(一个或多个)结果。存储电路系统2012可以由寄存器等来实现。在所图示的示例中,存储电路系统2012分布在逻辑门电路系统2008之间,以促进访问并提高执行速度。
图20的示例FPGA电路系统2000还包括示例专用操作电路系统2014。在该示例中,专用操作电路系统2014包括专用电路系统2016,该专用电路系统2016可以被调用以实现常用功能,从而避免在现场对那些功能编程的需求。此类专用电路系统2016的示例包括存储器(例如,DRAM)控制器电路系统、PCIe控制器电路系统、时钟电路系统、收发器电路系统、存储器、以及乘法器-累加器电路系统。可以存在其他类型的专用电路系统。在一些示例中,FPGA电路系统2000还可以包括示例通用可编程电路系统2018,诸如,示例CPU 2020和/或示例DSP 2022。可以附加地或替代地存在可以被编程为用于执行其他操作的其他通用可编程电路系统2018,诸如,GPU、XPU等。
尽管图19和图20图示出图18的处理器电路系统1812的两种示例实现方式,但构想了许多其他方式。例如,如上文所提及的,现代FPGA电路系统可以包括板载CPU(诸如图20的示例CPU 2020中的一个或多个)。因此,图18的处理器电路系统1812可附加地通过组合图19的示例微处理器1900和图20的示例FPGA电路系统2000来实现。在一些此类混合示例中,由图14-图17的流程图表示的机器可读指令的第一部分可由图19的核心1902中的一个或多个执行,并且由图14-图17的流程图表示的机器可读指令的第二部分可由图20的FPGA电路系统2000执行。
在一些示例中,图18的处理器电路系统1812可以在一个或多个封装中。例如,图19的处理器电路系统1900和/或图20的FPGA电路系统2000可以在一个或多个封装中。在一些示例中,XPU可由图18的处理器电路系统1812实现,该处理器电路系统1812可以在一个或多个封装中。例如,XPU可包括一个封装中的CPU、另一封装中的DSP、又一封装中的GPU和再另一封装中的FPGA。
图21是示例软件分发平台2105的框图,该示例软件分发平台2105用于将软件(例如,与图18的示例机器可读指令1832相对应的软件)分发给诸如消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、转售、许可和/或分许可)、和/或原始装备制造商(original equipment manufacturer,OEM)(例如,用于包括在要被分发给例如零售商和/或直接购买客户的产品中)之类的第三方、客户端设备等。示例软件分发平台2105可以由能够存储软件并将软件传送到其他计算设备的任何计算机服务器、数据设施、云服务等来实现。第三方可以是拥有和/或操作软件分发平台的实体的客户。例如,拥有和/或操作软件分发平台的实体可以是软件(诸如图18的示例机器可读指令1832)的开发方、销售方、和/或许可方。第三方可以是购买和/或许可软件以用于使用和/或转售和/或分许可的消费者、用户、零售商、OEM等。在所图示的示例中,软件分发平台2105包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令1832,该机器可读指令1832可与如上文所描述的图14-图17的示例机器可读指令1400、1500、1600、1700相对应。示例软件分发平台2105的一个或多个服务器与网络2110通信,该网络2110可以与因特网和/或上文所描述示例网络128、1826中的任一个中的任何一个或多个相对应。在一些示例中,作为商业事务的一部分,一个或多个服务器响应于请求而将软件传送到请求方。可以由软件分发平台的一个或多个服务器和/或经由第三方支付实体来处置用于软件的交付、销售、和/或许可的支付。服务器使购买方和/或许可方能够从软件分发平台2105下载机器可读指令1832。例如,软件(其可与图14-图17的示例机器可读指令1400、1500、1600、1700相对应)可被下载到示例处理器平台1800,该示例处理器平台1800用于执行机器可读指令1832以实现图1的示例加速编译器104A-104C、图1的第一示例加速电路系统108、图1的第二示例加速电路系统110、图2的示例加速器200和/或图3的示例加速器编译器300。在一些示例中,软件分发平台2105的一个或多个服务器周期性地提供、传送和/或强制进行对软件(例如,图18的示例机器可读指令1832)的更新以确保改进、补丁、更新等被分发并被应用于终端用户设备处的软件。
从上文将会领会,已经公开了用于在稀疏加速器上执行机器学习模型操作的示例系统、方法、装置和制品。除了是稀疏向量之外,所公开的系统、方法、装置和制品还利用比特掩码向量作为计算向量来隔离张量内的单个激活和/或单个通道或通道组。所公开的系统、方法、装置和制品操纵稀疏加速器内部的比特掩码向量以节省从外部存储器读取比特掩码向量的带宽。所公开的系统、方法、装置和制品替代地可以离线执行操纵、加载到存储器、以及在处理层时将所操纵的比特掩码向量读取到稀疏加速器中。所公开的系统、方法、装置和制品通过减少要读取到加速器中以执行机器学习层并像常规卷积操作一样执行非常规卷积操作的数据量来改进使用计算设备的效率以改进系统效率和性能。所公开的方法、装置和制品相应地涉及计算机的运作的一个或多个改进。
本文中公开了用于在稀疏加速器上执行机器学习模型操作的示例方法、装置、系统和制品。进一步的示例及其组合包括以下内容:
示例1包括一种用于执行加速操作的装置,该装置包括:第一电路系统;第二电路系统,该第二电路系统用于基于加速操作来生成稀疏性数据;以及第三电路系统,该第三电路系统用于指令一个或多个数据缓冲器基于该稀疏性数据将激活数据或权重数据中的至少一者提供到第一电路系统,该第一电路系统用于基于激活数据或权重数据中的至少一者来执行加速操作。
示例2包括示例1的装置,其中,稀疏性数据包括稀疏权重向量,并且装置进一步包括:第四电路系统,该第四电路系统用于基于配置信息来标识加速操作,该稀疏权重向量基于配置信息而被生成;以及第三电路系统用于响应于获得稀疏激活向量而基于稀疏激活向量和稀疏权重向量来生成稀疏性比特掩码。
示例3包括示例1的装置,其中,稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者,一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且第三电路系统用于:基于激活稀疏性数据和权重稀疏性数据来生成组合稀疏性比特掩码;指令激活数据缓冲器基于组合稀疏性比特掩码将激活数据提供到第一电路系统;以及响应于确定要生成权重数据,指令权重数据缓冲器基于组合稀疏性比特掩码将所生成的权重数据提供到第一电路系统。
示例4包括示例1的装置,其中,稀疏性数据包括稀疏权重向量,加速操作是深度方向卷积操作,并且其中第二电路系统用于:基于深度方向卷积操作来标识数据模式;以及基于数据模式来生成稀疏权重向量;并且第三电路系统用于基于稀疏权重向量来生成稀疏性比特掩码。
示例5包括示例1的装置,其中,稀疏性数据包括稀疏权重向量,加速操作是分组卷积操作,并且其中第二电路系统用于:基于分组卷积操作来标识数据模式,该数据模式包括逻辑一的集合;以及基于该数据模式来生成稀疏权重向量;并且第三电路系统用于基于稀疏权重向量来生成稀疏性比特掩码。
示例6包括示例1的装置,其中,加速操作是逐元素加法操作,并且其中第二电路系统用于:基于逐元素加法操作来标识数据模式,该数据模式基于行走一数据模式;以及基于该数据模式生成多个稀疏权重向量;并且第一电路系统用于:基于多个稀疏权重向量、以及激活数据的第一集合,存储与第一张量相关联的第一数据值;基于多个稀疏权重向量、以及激活数据的第二集合,存储与第二张量相关联的第二数据值;以及基于第一数据值和第二数据值的和来生成输出数据值。
示例7包括示例1的装置,其中,稀疏性数据包括一个或多个稀疏权重向量,加速操作是扩张卷积操作,并且其中第二电路系统用于:基于深度方向卷积操作来标识数据模式;以及基于数据模式来生成稀疏权重向量;并且第三电路系统用于基于稀疏权重向量来生成一个或多个稀疏性比特掩码。
示例8包括一种非暂态计算机可读介质,该非暂态计算机可读介质包括指令,该指令当被执行时使得至少一个加速器:使用该至少一个加速器、基于要由该至少一个加速器执行的加速操作来至少生成稀疏性数据;指令一个或多个数据缓冲器基于稀疏性数据将激活数据或权重数据中的至少一者提供到该至少一个加速器的加速器逻辑;以及基于激活数据或权重数据中的至少一者来执行加速操作。
示例9包括示例8的非暂态计算机可读介质,其中,稀疏性数据包括稀疏权重向量,并且指令当被执行时使至少一个加速器:基于配置信息来标识加速操作,该稀疏权重向量基于配置信息而被生成;以及响应于获得稀疏激活向量,基于该稀疏激活向量和稀疏权重向量来生成稀疏性比特掩码。
示例10包括示例8的非暂态计算机可读介质,其中,稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者,一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且指令当被执行时使至少一个加速器:基于激活稀疏性数据和权重稀疏性数据来生成组合稀疏性比特掩码;指令激活数据缓冲器基于组合稀疏性比特掩码将激活数据提供到加速器逻辑;以及响应于确定要生成权重数据,指令权重数据缓冲器基于组合稀疏性比特掩码将生成的权重数据提供到加速器逻辑。
示例11包括示例8的非暂态计算机可读介质,其中,稀疏性数据包括稀疏权重向量,加速操作是深度方向卷积操作,并且指令当被执行时使至少一个加速器:基于深度方向卷积操作来标识数据模式;基于数据模式来生成稀疏权重向量;以及基于稀疏权重向量来生成稀疏性比特掩码。
示例12包括示例8的非暂态计算机可读介质,其中,稀疏性数据包括稀疏权重向量,加速操作是分组卷积操作,并且指令当被执行时使至少一个加速器:基于分组卷积操作来标识数据模式,该数据模式包括逻辑一的集合;基于数据模式来生成稀疏权重向量;以及基于稀疏权重向量来生成稀疏性比特掩码。
示例13包括示例8的非暂态计算机可读介质,其中,加速操作是逐元素加法操作,并且指令当被执行时使至少一个加速器:基于逐元素加法操作来标识数据模式,该数据模式基于行走一数据模式;基于该数据模式来生成多个稀疏权重向量;基于多个稀疏权重向量、以及激活数据的第一集合,存储与第一张量相关联的第一数据值;基于多个稀疏权重向量、以及激活数据的第二集合,存储与第二张量相关联的第二数据值;以及基于第一数据值和第二数据值的和来生成输出数据值。
示例14包括示例8的非暂态计算机可读介质,其中,稀疏性数据包括一个或多个稀疏权重向量,加速操作是扩张卷积,并且指令当被执行时使至少一个加速器:基于扩张卷积来标识数据模式,该数据模式基于稀疏核;基于数据模式来生成一个或多个稀疏权重向量;以及基于一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
示例15包括一种方法,该方法包括:使用加速器、基于要由该加速器执行的加速操作来生成稀疏性数据;指令一个或多个数据缓冲器基于稀疏性数据将激活数据或权重数据中的至少一者提供到加速器的加速器逻辑;以及基于激活数据或权重数据中的该至少一者来执行加速操作。
示例16包括示例15的方法,其中,稀疏性数据包括稀疏权重向量,并且方法进一步包括:基于配置信息来标识加速操作,该稀疏权重向量基于配置信息而被生成;以及响应于获得稀疏激活向量,基于稀疏激活向量和稀疏权重向量来生成稀疏性比特掩码。
示例17包括示例15的方法,其中,稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者,一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且方法进一步包括:基于激活稀疏性数据和权重稀疏性数据来生成组合稀疏性比特掩码;指令激活数据缓冲器基于组合稀疏性比特掩码将激活数据提供到加速器逻辑;以及响应于确定要生成权重数据,指令权重数据缓冲器基于组合稀疏性比特掩码将所生成的权重数据提供到加速器逻辑。
示例18包括示例15的方法,其中,稀疏性数据包括稀疏权重向量,加速操作是深度方向卷积操作,并且方法进一步包括:基于深度方向卷积操作来标识数据模式;基于数据模式来生成稀疏权重向量;以及基于稀疏权重向量来生成稀疏性比特掩码。
示例19包括示例15的方法,其中,稀疏性数据包括稀疏权重向量,加速操作是分组卷积操作,并且方法进一步包括:基于分组卷积操作来标识数据模式,该数据模式包括逻辑一的集合;基于数据模式来生成稀疏权重向量;以及基于稀疏权重向量来生成稀疏性比特掩码。
示例20包括示例15的方法,其中,加速操作是逐元素加法操作,并且方法进一步包括:基于逐元素加法操作来标识数据模式,该数据模式基于行走一数据模式;基于该数据模式来生成多个稀疏权重向量;基于多个稀疏权重向量、以及激活数据的第一集合,存储与第一张量相关联的第一数据值;基于多个稀疏权重向量、以及激活数据的第二集合,存储与第二张量相关联的第二数据值;以及基于第一数据值和第二数据值的和来生成输出数据值。
示例21包括示例15的方法,其中,稀疏性数据包括一个或多个稀疏权重向量,加速操作是扩张卷积,并且进一步包括:基于扩张卷积来标识数据模式,该数据模式基于稀疏核;基于数据模式来生成一个或多个稀疏权重向量;以及基于一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
示例22包括一种用于执行加速操作的设备,该设备包括:用于基于加速操作来生成稀疏性数据的装置;用于指令一个或多个数据缓冲器基于稀疏性数据来提供激活数据或权重数据中的至少一者的装置;以及用于基于激活数据或权重数据中的该至少一者来执行加速操作的装置。
示例23包括示例22的设备,其中,稀疏性数据包括稀疏权重向量,并且设备进一步包括用于基于配置信息来标识加速操作的装置,稀疏权重向量基于配置信息而被生成;并且用于生成的装置用于响应于获得稀疏激活向量而基于稀疏激活向量和稀疏权重向量来生成稀疏性比特掩码。
示例24包括示例22的设备,其中,稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者;一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且用于指令的装置用于:基于激活稀疏性数据和权重稀疏性数据来生成组合稀疏性比特掩码;指令激活数据缓冲器基于组合稀疏性比特掩码将激活数据提供到用于执行的装置;以及响应于确定要生成权重数据,指令权重数据缓冲器基于组合稀疏性比特掩码将所生成的权重数据提供到用于执行的装置。
示例25包括示例22的设备,其中,稀疏性数据包括稀疏权重向量,加速操作是深度方向卷积操作,并且其中用于生成的装置用于:基于深度方向卷积操作来标识数据模式;以及基于数据模式来生成稀疏权重向量;并且用于指令的装置用于基于稀疏权重向量来生成稀疏性比特掩码。
示例26包括示例22的设备,其中,稀疏性数据包括稀疏权重向量,加速操作是分组卷积操作,并且其中用于生成的装置用于:基于分组卷积操作来标识数据模式,该数据模式包括逻辑一的集合;以及基于数据模式来生成稀疏权重向量;并且用于指令的装置用于基于稀疏权重向量来生成稀疏性比特掩码。
示例27包括示例22的设备,其中,加速操作是逐元素加法操作,并且其中用于生成的装置用于:基于逐元素加法操作来标识数据模式,该数据模式基于行走一数据模式;以及基于数据模式来生成多个稀疏权重向量;并且用于执行的装置用于:基于多个稀疏权重向量、以及激活数据的第一集合,存储与第一张量相关联的第一数据值;基于多个稀疏权重向量、以及激活数据的第二集合,存储与第二张量相关联的第二数据值;以及基于第一数据值和第二数据值的和来生成输出数据值。
示例28包括示例22的设备,其中,稀疏性数据包括一个或多个稀疏权重向量,加速操作是扩张卷积,并且其中用于生成的装置用于:基于扩张卷积来标识数据模式,该数据模式基于稀疏核;以及基于数据模式来生成一个或多个稀疏权重向量;并且用于指令的装置用于基于一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
示例29包括一种装置,该装置包括:内部权重稀疏性生成电路系统,该内部权重稀疏性生成电路系统具有第一输出;第一复用器电路系统,该第一复用器电路系统具有第一复用器输入和第一复用器输出,第一复用器输入耦合到第一输出;控制器电路系统,该制器电路系统具有第一控制器输入、第一控制器输出、以及第二控制器输出,第一控制器输入耦合到第一复用器输出;以及加速电路系统,该加速电路系统具有加速输入。
示例30包括示例29的装置,进一步包括:配置电路系统,该配置电路系统具有第一配置输出、第二配置输出、第三配置输出和第四配置输出,第一配置输出耦合到内部权重稀疏性生成电路系统的第一输入,第二配置输出耦合到第一复用器电路系统的第一复用器控制输入;内部激活稀疏性生成电路系统,该内部激活稀疏性生成电路系统具有第二输入和第二输出,第二输入耦合到第三配置输出;以及第二复用器电路系统,该第二复用器电路系统具有第二复用器控制输入、第二复用器输入和第二复用器输出,第二复用器控制输入耦合到第四配置输出,第二复用器输入耦合到第二输出。
示例31包括示例30的装置,进一步包括配置接口,该配置接口耦合到配置电路系统的配置输入。
示例32包括示例30的装置,进一步包括:外部权重稀疏性缓冲器,该外部权重稀疏性缓冲器具有第一缓冲器输入和第一缓冲器输出,第一缓冲器输出耦合到第一复用器电路系统的第三复用器输入;外部激活稀疏性缓冲器,该外部激活稀疏性缓冲器具有第二缓冲器输入和第二缓冲器输出,第二缓冲器输出耦合到第二复用器电路系统的第四复用器输入;权重稀疏性数据接口,权重稀疏性数据接口耦合到第一缓冲器输入;以及激活稀疏性数据接口,该激活稀疏性数据接口耦合到第二缓冲器输入。
示例33包括示例30的装置,其中,控制器电路系统具有耦合到第二复用器输出的第二控制器输入,并且装置进一步包括:激活数据缓冲器,该激活数据缓冲器具有第一数据缓冲器输入和第一数据缓冲器输出,第一数据缓冲器输入耦合到第一控制器输出,第一数据缓冲器输出耦合到加速器输入中的相应的加速器输入;以及权重数据缓冲器,该权重数据缓冲器具有第二数据缓冲器输入和第二数据缓冲器输出,第二数据缓冲器输入耦合到第二控制器输出,第二数据缓冲器输出耦合到加速器输入中的相应的加速器输入。
示例34包括示例33的装置,其中,权重数据缓冲器包括内部权重生成电路系统。
示例35包括示例33的装置,进一步包括累加器存储装置,该累加器存储装置具有存储装置输入和存储装置输出,存储装置输入耦合到加速器电路系统的加速器输出中的相应的加速器输出;以及输出激活接口,该输出接口耦合到存储装置输出。
虽然本文中已公开了某些示例系统、方法、装置和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖完全落入本专利的权利要求的范围内的全部系统、方法、装置和制品。
所附的权利要求由此通过本参考被并入到本具体实施方式中,其中每一项权利要求其本身作为本公开的单独的实施例。
Claims (21)
1.一种用于执行加速操作的装置,所述装置包括:
第一电路系统;
第二电路系统,所述第二电路系统用于基于所述加速操作来生成稀疏性数据;以及
第三电路系统,所述第三电路系统用于指令一个或多个数据缓冲器基于所述稀疏性数据将激活数据或权重数据中的至少一者提供到所述第一电路系统,所述第一电路系统用于基于所述激活数据或所述权重数据中的至少一者来执行所述加速操作。
2.如权利要求1所述的装置,其中,所述稀疏性数据包括稀疏权重向量,并且所述装置进一步包括:
第四电路系统,所述第四电路系统用于基于配置信息来标识所述加速操作,所述稀疏权重向量基于所述配置信息而被生成;以及
所述第三电路系统用于响应于获得稀疏激活向量而基于所述稀疏激活向量和所述稀疏权重向量来生成稀疏性比特掩码。
3.如权利要求1所述的装置,其中,所述稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者,所述一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且所述第三电路系统用于:
基于所述激活稀疏性数据和所述权重稀疏性数据来生成组合稀疏性比特掩码;
指令所述激活数据缓冲器基于所述组合稀疏性比特掩码将激活数据提供到所述第一电路系统;以及
响应于确定要生成权重数据,指令所述权重数据缓冲器基于所述组合稀疏性比特掩码将所生成的权重数据提供到所述第一电路系统。
4.如权利要求1所述的装置,其中,所述稀疏性数据包括稀疏权重向量,所述加速操作是深度方向卷积操作,并且其中:
所述第二电路系统用于:
基于所述深度方向卷积操作来标识数据模式;以及
基于所述数据模式来生成所述稀疏权重向量;并且
所述第三电路系统用于基于所述稀疏权重向量来生成稀疏性比特掩码。
5.如权利要求1所述的装置,其中,所述稀疏性数据包括稀疏权重向量,所述加速操作是分组卷积操作,并且其中:
所述第二电路系统用于:
基于所述分组卷积操作来标识数据模式,所述数据模式包括逻辑一的集合;以及
基于所述数据模式来生成所述稀疏权重向量;并且
所述第三电路系统用于基于所述稀疏权重向量来生成稀疏性比特掩码。
6.如权利要求1所述的装置,其中,所述加速操作是逐元素加法操作,并且其中:
所述第二电路系统用于:
基于所述逐元素加法操作来标识数据模式,所述数据模式基于行走一数据模式;以及
基于所述数据模式来生成多个稀疏权重向量;并且
所述第一电路系统用于:
基于所述多个稀疏权重向量、以及所述激活数据的第一集合,存储与第一张量相关联的第一数据值;
基于所述多个稀疏权重向量、以及所述激活数据的第二集合,存储与第二张量相关联的第二数据值;以及
基于所述第一数据值和所述第二数据值的和来生成输出数据值。
7.如权利要求1所述的装置,其中,所述稀疏性数据包括一个或多个稀疏权重向量,所述加速操作是扩张卷积操作,并且其中:
所述第二电路系统用于:响应于基于扩张卷积而对数据模式的标识,基于所述数据模式来生成所述一个或多个稀疏权重向量,所述数据模式基于稀疏核;并且
所述第三电路系统用于基于所述一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
8.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括指令,所述指令当被执行时使至少一个加速器至少进行:
使用所述至少一个加速器、基于要由所述至少一个加速器执行的加速操作来生成稀疏性数据;
指令一个或多个数据缓冲器基于所述稀疏性数据将激活数据或权重数据中的至少一者提供到所述至少一个加速器的加速器逻辑;以及
基于所述激活数据或所述权重数据中的所述至少一者来执行所述加速操作。
9.如权利要求8所述的非暂态计算机可读介质,其中,所述稀疏性数据包括稀疏权重向量,并且所述指令当被执行时使所述至少一个加速器:
基于配置信息来标识所述加速操作,所述稀疏权重向量基于所述配置信息而被生成;以及
响应于获得稀疏激活向量,基于所述稀疏激活向量和所述稀疏权重向量来生成稀疏性比特掩码。
10.如权利要求8所述的非暂态计算机可读介质,其中,所述稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者,所述一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且所述指令当被执行时使所述至少一个加速器:
基于所述激活稀疏性数据和所述权重稀疏性数据来生成组合稀疏性比特掩码;
指令所述激活数据缓冲器基于所述组合稀疏性比特掩码将激活数据提供到所述加速器逻辑;以及
响应于确定要生成权重数据,指令所述权重数据缓冲器基于所述组合稀疏性比特掩码将所生成的权重数据提供到所述加速器逻辑。
11.如权利要求8所述的非暂态计算机可读介质,其中,所述稀疏性数据包括稀疏权重向量,所述加速操作是深度方向卷积操作,并且所述指令当被执行时使所述至少一个加速器:
基于所述深度方向卷积操作来标识数据模式;
基于所述数据模式来生成所述稀疏权重向量;以及
基于所述稀疏权重向量来生成稀疏性比特掩码。
12.如权利要求8所述的非暂态计算机可读介质,其中,所述稀疏性数据包括稀疏权重向量,所述加速操作是分组卷积操作,并且所述指令当被执行时使所述至少一个加速器:
基于所述分组卷积操作来标识数据模式,所述数据模式包括逻辑一的集合;
基于所述数据模式来生成所述稀疏权重向量;以及
基于所述稀疏权重向量来生成稀疏性比特掩码。
13.如权利要求8所述的非暂态计算机可读介质,其中,所述加速操作是逐元素加法操作,并且所述指令当被执行时使所述至少一个加速器:
基于所述逐元素加法操作来标识数据模式,所述数据模式基于行走一数据模式;
基于所述数据模式来生成多个稀疏权重向量;
基于所述多个稀疏权重向量、以及所述激活数据的第一集合,存储与第一张量相关联的第一数据值;
基于所述多个稀疏权重向量、以及所述激活数据的第二集合,存储与第二张量相关联的第二数据值;以及
基于所述第一数据值和所述第二数据值的和来生成输出数据值。
14.如权利要求8所述的非暂态计算机可读介质,其中,所述稀疏性数据包括一个或多个稀疏权重向量,所述加速操作是扩张卷积,并且所述指令当被执行时使所述至少一个加速器:
基于所述扩张卷积来标识数据模式,所述数据模式基于稀疏核;
基于所述数据模式来生成所述一个或多个稀疏权重向量;以及
基于所述一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
15.一种方法,包括:
使用加速器、基于要由所述加速器执行的加速操作来生成稀疏性数据;
指令一个或多个数据缓冲器基于所述稀疏性数据将激活数据或权重数据中的至少一者提供到所述加速器的加速器逻辑;以及
基于所述激活数据或所述权重数据中的所述至少一者来执行所述加速操作。
16.如权利要求15所述的方法,其中,所述稀疏性数据包括稀疏权重向量,并且所述方法进一步包括:
基于配置信息来标识所述加速操作,所述稀疏权重向量基于所述配置信息而被生成;以及
响应于获得稀疏激活向量,基于所述稀疏激活向量和所述稀疏权重向量来生成稀疏性比特掩码。
17.如权利要求15所述的方法,其中,所述稀疏性数据包括激活稀疏性数据或权重稀疏性数据中的至少一者,所述一个或多个数据缓冲器包括权重数据缓冲器和激活数据缓冲器,并且所述方法进一步包括:
基于所述激活稀疏性数据和所述权重稀疏性数据来生成组合稀疏性比特掩码;
指令所述激活数据缓冲器基于所述组合稀疏性比特掩码将激活数据提供到所述加速器逻辑;以及
响应于确定要生成权重数据,指令所述权重数据缓冲器基于所述组合稀疏性比特掩码将所生成的权重数据提供到所述加速器逻辑。
18.如权利要求15所述的方法,其中,所述稀疏性数据包括稀疏权重向量,所述加速操作是深度方向卷积操作,并且所述方法进一步包括:
基于所述深度方向卷积操作来标识数据模式;
基于所述数据模式来生成所述稀疏权重向量;以及
基于所述稀疏权重向量来生成稀疏性比特掩码。
19.如权利要求15所述的方法,其中,所述稀疏性数据包括稀疏权重向量,所述加速操作是分组卷积操作,并且所述方法进一步包括:
基于所述分组卷积操作来标识数据模式,所述数据模式包括逻辑一的集合;
基于所述数据模式来生成所述稀疏权重向量;以及
基于所述稀疏权重向量来生成稀疏性比特掩码。
20.如权利要求15所述的方法,其中,所述加速操作是逐元素加法操作,并且进一步包括:
基于所述逐元素加法操作来标识数据模式,所述数据模式基于行走一数据模式;
基于所述数据模式来生成多个稀疏权重向量;
基于所述多个稀疏权重向量、以及所述激活数据的第一集合,存储与第一张量相关联的第一数据值;
基于所述多个稀疏权重向量、以及所述激活数据的第二集合,存储与第二张量相关联的第二数据值;以及
基于所述第一数据值和所述第二数据值的和来生成输出数据值。
21.如权利要求15所述的方法,其中,所述稀疏性数据包括一个或多个稀疏权重向量,所述加速操作是扩张卷积,并且所述方法进一步包括:
基于所述扩张卷积来标识数据模式,所述数据模式基于稀疏核;
基于所述数据模式来生成所述一个或多个稀疏权重向量;以及
基于所述一个或多个稀疏权重向量来生成一个或多个稀疏性比特掩码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/357,924 | 2021-06-24 | ||
US17/357,924 US20210319317A1 (en) | 2021-06-24 | 2021-06-24 | Methods and apparatus to perform machine-learning model operations on sparse accelerators |
PCT/US2022/021590 WO2022271235A1 (en) | 2021-06-24 | 2022-03-23 | Methods and apparatus to perform machine-learning model operations on sparse accelerators |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117121018A true CN117121018A (zh) | 2023-11-24 |
Family
ID=78006610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280026134.3A Pending CN117121018A (zh) | 2021-06-24 | 2022-03-23 | 用于在稀疏加速器上执行机器学习模型操作的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210319317A1 (zh) |
EP (1) | EP4360007A1 (zh) |
CN (1) | CN117121018A (zh) |
WO (1) | WO2022271235A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995448B1 (en) | 2018-02-08 | 2024-05-28 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
US10997510B1 (en) | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
US11016801B1 (en) | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
US20210319317A1 (en) * | 2021-06-24 | 2021-10-14 | Intel Corporation | Methods and apparatus to perform machine-learning model operations on sparse accelerators |
DE102021127695A1 (de) | 2021-10-25 | 2023-04-27 | Infineon Technologies Ag | Systeme, verfahren und vorrichtungen zum effizienten ausführen von künstlichen neuronalen netzen |
US11693639B2 (en) * | 2021-11-05 | 2023-07-04 | Tenstorrent Inc. | Sparsity uniformity enforcement for multicore processor |
TWI832279B (zh) * | 2022-06-07 | 2024-02-11 | 宏碁股份有限公司 | 人工智慧模型運算加速系統及人工智慧模型運算加速方法 |
US20240048152A1 (en) * | 2022-08-03 | 2024-02-08 | Arm Limited | Weight processing for a neural network |
CN115456152B (zh) * | 2022-08-11 | 2023-12-05 | 南方科技大学 | 基于权重预编码的稀疏卷积神经网络加速器和计算设备 |
US20230018857A1 (en) * | 2022-09-19 | 2023-01-19 | Martin Power | Sparsity processing on unpacked data |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10997496B2 (en) * | 2016-08-11 | 2021-05-04 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US20210004668A1 (en) * | 2018-02-16 | 2021-01-07 | The Governing Council Of The University Of Toronto | Neural network accelerator |
CN111626410B (zh) * | 2019-02-27 | 2023-09-05 | 中国科学院半导体研究所 | 一种稀疏卷积神经网络加速器及计算方法 |
US20210319317A1 (en) * | 2021-06-24 | 2021-10-14 | Intel Corporation | Methods and apparatus to perform machine-learning model operations on sparse accelerators |
-
2021
- 2021-06-24 US US17/357,924 patent/US20210319317A1/en active Pending
-
2022
- 2022-03-23 EP EP22828933.6A patent/EP4360007A1/en active Pending
- 2022-03-23 CN CN202280026134.3A patent/CN117121018A/zh active Pending
- 2022-03-23 WO PCT/US2022/021590 patent/WO2022271235A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022271235A1 (en) | 2022-12-29 |
EP4360007A1 (en) | 2024-05-01 |
US20210319317A1 (en) | 2021-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117121018A (zh) | 用于在稀疏加速器上执行机器学习模型操作的方法和装置 | |
Sze et al. | Efficient processing of deep neural networks: A tutorial and survey | |
Sza et al. | Efficient processing of deep neural networks: a tutorial and survey | |
JP2023060820A (ja) | 機械学習モデル・スケーリングのためのディープ・ニューラル・ネットワーク最適化システム | |
CN112740236A (zh) | 在深度神经网络中利用激活稀疏性 | |
CN114365123A (zh) | 使用一个或更多个神经网络的视频上采样 | |
CN116011510A (zh) | 用于优化机器学习架构的框架 | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
US20190279038A1 (en) | Data flow graph node parallel update for machine learning | |
CN114139714A (zh) | 用于硬件感知的机器学习模型训练的方法和装置 | |
WO2021045904A1 (en) | Video interpolation using one or more neural networks | |
CN117597670A (zh) | 用以调试加速器硬件的系统、装置和方法 | |
JP2023519565A (ja) | 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け | |
US20220292366A1 (en) | Methods and apparatus to perform low overhead sparsity acceleration logic for multi-precision dataflow in deep neural network accelerators | |
CN117642721A (zh) | 机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构 | |
CN117223009A (zh) | 数据流深度神经网络硬件加速器的性能缩放 | |
Véstias | Processing systems for deep learning inference on edge devices | |
WO2021198810A1 (en) | Feature reordering based on similarity for improved memory compression transfers during machine learning jobs | |
US11461662B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
US20230325185A1 (en) | Methods and apparatus to accelerate matrix operations using direct memory access | |
US20190354833A1 (en) | Method and system for reducing communication frequency in neural network systems | |
CN116339704A (zh) | 用于机器学习引导的编译器优化的方法和装置 | |
WO2023097428A1 (en) | Methods and apparatus to perform parallel double-batched self-distillation in resource-constrained image recognition applications | |
EP3971787A1 (en) | Spatial tiling of compute arrays with shared control | |
WO2023155183A1 (en) | Systems, apparatus, articles of manufacture, and methods for teacher-free self-feature distillation training of machine learning models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |