CN117642721A - 机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构 - Google Patents

机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构 Download PDF

Info

Publication number
CN117642721A
CN117642721A CN202280043336.9A CN202280043336A CN117642721A CN 117642721 A CN117642721 A CN 117642721A CN 202280043336 A CN202280043336 A CN 202280043336A CN 117642721 A CN117642721 A CN 117642721A
Authority
CN
China
Prior art keywords
circuit module
icip
output
spatial array
pes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280043336.9A
Other languages
English (en)
Inventor
D·莫哈帕特拉
A·拉哈
D·马泰库蒂
R·宋
C·布里克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN117642721A publication Critical patent/CN117642721A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Nonlinear Science (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)

Abstract

本公开的实施例针对增强硬件(HW)加速器的性能的技术和配置。本公开提供用于HW加速器的调度感知、可动态重新配置的基于树的部分和累加器体系结构,其中所述HW加速器中的加法器树的深度基于由编译器生成的数据流调度被动态地重新配置。所述加法器树深度在运行时以逐层为基础被调整。经由软件所编程的配置寄存器基于数据流调度动态地改变用于部分和累加的加法器树深度。通过在运行时期间促进可变深度加法器树,编译器能够选择计算最佳数据流调度,所述数据流调度最小化跨HW加速器的PE阵列内的多个处理元件(PE)来累加部分和所需的计算循环数量。可描述和/或要求保护其他实施例。

Description

机器学习加速器中的部分和累加的调度感知、动态可重新配 置加法器树体系结构
相关申请
本申请要求2021年11月5日提交的美国申请17/520281的优先权,通过引用将其内容完整地结合于此并且用于所有目的。
技术领域
本公开的实施例一般涉及电子领域,以及更具体地涉及人工智能和/或机器学习(AI/ML)硬件装置的配置、布置、操作和制作。
背景技术
机器学习(ML)体系结构通常基于人工神经网络(NN),所述人工神经网络由生物大脑中的信号处理赋予灵感。NN在大范围的技术领域中已经并且继续用作基础技术解决方案,所述技术领域是诸如计算机视觉、面部识别、语音识别、导航、市场研究、机器人以及其他许多方面。因此,在推断算法开发方面以及在实现演进推断算法的硬件平台开发方面,NN的领域已经并且继续快速增长。NN的网络层(诸如深度神经网络(DNN)和深度学习卷积神经网络(CNN))有许多可能的张量形状,所述张量形状的维度随着现有NN推断算法被修订和/或新NN推断算法被开发而继续改变。在推断算法和在其上操作这些算法的硬件平台方面,NN域已经看到前所未有的增长。
由于DNN的流行,许多最近的硬件平台具有以DNN处理为目标的特殊特征,诸如用于深度学习的特殊向量指令、用于在单精度核心上执行两个16比特浮点(FP16)运算以获得更快深度学习计算的FP16算术支持和诸如此类。也已专门为DNN处理构建了计算系统。专门为DNN处理所构建的一些硬件平台基于高并行计算范例,以实现高性能。这些平台包括时间体系结构和空间体系结构。时间体系结构使用向量或并行线程来实现并行性,并且主要出现在CPU或GPU中,其中算术逻辑单元(ALU)从存储器层次体系中取得数据,并且不能直接相互通信。空间体系结构使用数据流处理,其中ALU或处理元件(PE)形成处理链,使得它们能够相互传递数据。数据流是计算块在PE之间的分配,并且有时称作“调度(schedule)”。空间体系结构通常用于利用现场可编程门阵列(FPGA)、专用集成电路(ASIC)和诸如此类的硬件加速器平台中的DNN。
空间体系结构中的计算块到PE的分配在很大程度上依靠基础编译器或调度器,所述编译器或调度器确定调度或数据流。调度的最优性基于对调度器所允许的搜索空间灵活性的程度来确定,所述搜索空间灵活性进而由基础硬件约束的集合规定。基础硬件平台约束的刚性越大,调度器搜索空间的灵活性和调度的质量就越低。
附图说明
通过结合所附附图的以下详细描述,将易于了解实施例。为了便于本描述,相似参考标号指定相似结构元件。在所附附图的图中通过示例方式而不是限制方式来图示实施例。
图1示出按照各个实施例的灵活调度机器学习(ML)加速器中的示例部分和累加体系结构。图2示出按照各个实施例的灵活硬件(HW)加速器的示例处理元件(PE)微体系结构。
图3示出按照各个实施例的固定调度HW加速器的基于树的部分和累加体系结构。图4示出按照各个实施例的示例输入通道分区(ICIP)方案。图5示出按照各个实施例的示例FlexTree体系结构。图6示出示例pSume累加元件的部件。图7示出按照各个实施例、到日志解析(drain)的FlexTree复用器输出分接点映射。图8示出按照各个实施例、基于ICIP值的FlexNN PE列的本地日志解析。图9、图10、图11、图12a和图12b示出各个ICIP因子的各个FlexTree时序图。图13、图14和图15示出固定深度加法器树方案和FlexTree方案的输入时序图。图20a、图20b和图20c示出与其他配置相比FlexTree加速的仿真结果。
图21示出按照各个实施例的示例神经网络(NN)。图22a示出示例加速器体系结构。图22b示出计算系统的示例部件。图23和图24图示按照各个实施例、具有空间阵列体系结构的示例加速器。图25图示按照各个实施例、由可配置的处理器元件阵列执行的示例张量操作。图26示出可用来实践本文中论述的各个实施例的示例过程。
具体实施方式
本公开的实施例一般涉及人工智能(AI)和机器学习(ML)硬件元件的领域,以及更具体地涉及用于部分和累加的调度感知的动态可重新配置的加法器树体系结构的技术和配置,其改善用于推断的硬件(HW)加速器中的计算效率。
本公开提供一种调度感知的动态可重新配置的基于树的部分和累加器体系结构(本文中称作“FlexTree”,尽管也可使用其他术语)。FlexTree并入用于灵活调度HW加速器的部分和累加的灵活深度的基于树的体系结构。FlexTree体系结构能够基于由编译器或调度器确定和生成的调度或数据流来调整加法器树的深度。所述深度调整在运行时以逐层为基础进行。在这里,逐层基础的“层”指代各个ML模型层。经由软件所编程的配置寄存器基于调度或数据流来动态改变部分和累加的加法器树深度。通过在运行时期间促进可变深度加法器树,FlexTree允许编译器选择计算最佳调度/数据流,所述调度/数据流使跨HW加速器的PE阵列内的多个处理元件(PE)来累加部分和所需的循环数量最小化。
仿真表明,与采用没有FlexTree的部分和累加的加法器树体系结构的现有灵活调度HW加速器相比,FlexTree能够实现至多2.14x部分和累加加速。仿真还表明,与采用部分和累加的固定深度加法器树体系结构的现有固定调度HW加速器相比,FlexTree能够实现4x-16x之间的部分和累加加速。
与采用部分和累加的固定深度加法器树体系结构的固定调度DNN加速器相比,FlexTree动态重新配置部分和累加器硬件内的加法器树的深度的能力促进由编译器对计算最佳调度的实现,由此实现更高程度的计算效率。与涉及灵活调度DNN加速器中的部分和累加的非基于树的体系结构的现有实现方式相比,FlexTree能够实现跨大范围的ML模型层维度的高效部分和累加,从而促进灵活调度DNN加速器内的更高计算效率。
1.FlexTree体系结构方面
图1和图2示出按照各个实施例、使用灵活数据流调度的HW加速器的示例。在下文中论述灵活数据流调度HW加速器的各个方面,以及还在2019年6月28日提交的共同待决美国申请No.16/456707(“[’707]”)、2019年12月24日提交的美国申请No.16/726709(“[’709]”)、2020年3月27日提交的美国申请No.16/832804(“[’804]”)以及2021年4月30日提交的美国申请No.17/246341(“[’341]”)中论述这类HW加速器的附加细节,通过引用将其每个的内容完整地结合于此。
图1示出按照各个实施例的示例部分和累加微体系结构100。图1中,微体系结构100包括处理元件(PE)130的空间阵列(本文中称作“空间阵列100”、“PE阵列100”、“阵列100”或“PE集合100”)。外部部分和(pSum)(“ext_pSum”)信号与外部累加运算相关,以及XpSum(“pSumX”)和YpSum(“pSumY”)信号是与内部累加运算相关的信号。图1还示出用于内部累加的累加模式1以及用于外部pSum累加的累加模式2。在模式1中,pSumX信号在水平(“X”)方向上从PEx 130馈送到相邻PE 130,以及pSumY信号在竖直(“Y”)方向上从PEy 130馈送到相邻PE 130。在模式2中,ext_pSum信号经由列缓冲器(col_buf)122从存储器电路模块121提供给PE 130。在一些实现方式中,存储器电路模块121可以是一个或多个静态随机存取存储器(SRAM)装置。在[’709]中更详细论述这些操作模式。
概括而言,各个PE 130计算pSum,这涉及累加单独PE 130内的ML模型的输入通道中的所有输入通道。至少在一些实施例中,pSum指代级数(series)或数列(sequence)的一个或多个项或值的求和。例如,在无穷级数[a1+a2+a3+,…,∞]中,所述级数的前n项sn=a1+a2+a3+,…,an的和或量是所述级数的pSum。如果pSum的数列收敛到定值,则所述级数被说成是收敛,而如果pSum的数列不收敛到极限(例如它振荡或接近±∞),则所述级数被说成是发散。在这里,存在多个输入通道(例如30、64、132,以及对于一些ResNet实现方式为2048个输入通道)。为了计算点积、广义矩阵乘法(GEMM)运算和/或卷积运算的输出点,输入通道中的所有输入通道需要被累加。例如,使用乘法累加(MAC)运算来计算点积,所述运算包括两个数相乘以及将积累加成pSum。在一些情况下,所述累加能够在单个PE 130内进行。
为了加速所述运算,能够通过跨多个PE 130划分数个输入通道,来划分和并行化所述计算,其中每个PE 130累加被指派给它们的输入通道集合。例如,在存在128个输入通道并且在四个PE 130之间划分计算的情况下,四个PE 130中的每个PE将累加32个输入通道(例如128/4=32),并且因此四个PE 130中的每个PE将具有四分之一的结果(或者四个pSum)。这四个PE 130中包含的四个pSum被聚集在一起(被积聚)并且相加在一起,以产生最终结果,所述最终结果称作“输出点”。PE阵列100可表示诸如DNN之类的ML模型的层,其中各个PE 130执行一个或多个运算,以计算所述ML模型的层。
如先前所提到,HW加速器(例如图22a的加速器2224)通过同时使用多个PE 130来利用并行性(parallelism)以改善性能,其中PE 130相互通信,以形成处理链。编译器(图1未示出)确定计算块、工作负荷、数据存取和/或通信模式跨多个PE 130的分配。在ML模型的处理中,这些编译器(又称作“调度器”或“映射器”)将ML模型形状、大小和/或其他参数转化为硬件兼容的计算映射,以用于在给定数据流的情况下执行。编译器还可执行映射优化,以基于HW平台和/或ML模型参数和/或约束来确定最佳数据流(在能量消耗/使用方面)。在Kwon等人的“Understanding Reuse,Performance,and Hardware Cost of DNNDataflows:A Data-Centric Approach Using MAESTRO”(arXiv:1805.02566v6[cs.DC](2020年5月11日))、Xing等人的“An In-depth Comparison of Compilers for DeepNeural Networks on Hardware”(2019 IEEE International Conference on EmbeddedSoftware and Systems(ICESS),第1-8页(2019年6月02日))、Ogawa等人的“A Compilerfor Deep Neural Network Accelerators to Generate Optimized Code for a WideRange of Data Parameters from a Hand-crafted Computation Kernel”(2019 IEEESymposiumin Low-Power and High-Speed Chips(COOL CHIPS),第1-3页(2019年4月17日))、Ma的“Hardware Acceleration of Deep Convolutional Neural Networks onFPGA”(Arizona State Univ.,PhD Dissertation(2018年12月))、Sze等人的“EfficientProcessing of Deep Neural Networks:A Tutorial and Survey”(arXiv:1703.09039v2[cs.CV](2017年8月13日))、Chen等人的“Using Dataflow to Optimize EnergyEfficiency ofDeep Neural Network Accelerators”(IEEE Micro’s Top Picks fromthe Computer Architecture Conferences,vol.37,no.3,(2017年5月-6月))以及Huang等人的“CoSA:Scheduling by Constrained Optimization for Spatial Accelerators”(2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture(ISCA),第554-566页(2021年6月14日))中论述这类编译器的示例,通过引用将其每个的内容完整地结合于此。
由调度器/编译器确定的分配通过数据流(又称作“层执行调度”或“调度”)来指示。数据流/调度通常使用适合的数据结构(例如图2的LDS204和/或图8的LDS 804)以循环-嵌套形式来表示。数据流还可指示pSum累加模块到各个PE 130的分配或指派。pSum累加模块(例如下文中论述的图5和图6的pSum累加元件510)负责跨多个PE 130来累加pSum,以生成最终输出。典型地,数据流被精心编排和/或被设计成使对(在资源消耗方面)比较昂贵的存储器装置的数据存取最小化,所述存储器装置包括其他PE 130中的存储装置和/或共享缓冲器。
在如下文中针对图3所论述的资源使用方面,HW加速器中的固定pSum累加方案(或“固定调度”)是低效的。在灵活调度HW加速器中,用来执行pSum累加的PE 130的数量能够在PE阵列100的操作之前使用“灵活数据流”或“灵活调度”来定义。一般来说,灵活调度用来基于当前层的最佳调度/数据流将输入特征(IF)和过滤器(FL)数据分发给PE阵列100(或各个PE 130),并且在将激活写到存储器(例如SRAM组或诸如此类)之前按照下一层的最佳调度来重新布置当前层的输出特征(OF)数据。IF和FL数据可使用加载模块被加载到PE阵列100中,所述加载模块是诸如[’707]和/或[’709]中论述的加载FSM模块。如下文中更详细论述,本文中论述的FlexTree机制通过减少计算ML模型的层所要求的循环(例如时钟循环)数量来改善灵活调度的效率,由此减少当操作ML模型以确定推断或预测时发生的计算开销。
图2示出按照各个实施例的HW加速器中的单独PE 130的示例微体系结构。如所示,PE微体系结构包括配置寄存器202、逻辑数据结构(LDS)204和PE 130的集合。PE 130包括单个乘法和累加(MAC)计算单元206以及寄存器堆(RF)集合208。RF208包括输入特征图(IF的IFMap)281、一个或多个过滤器权重(WT)282和输出特征图(OFMap或OF)283。
基于配置描述符集合来控制PE 130,以支持HW中的特定计算,其中所述配置描述符集合在ML模型的给定层的执行开始被初始化。因此,PE 130能够被实现为将HW配置寄存器202暴露于软件元件的纯HW解决方案(例如经由FPGA、ASIC、DSP、SoC等)。HW配置寄存器202暴露于软件元件使所述软件能够在运行时期间配置用于给定ML模型层的数据流。因此,PE 130以及PE 130到可配置PE阵列100中的关联布置使ML模型层的灵活数据流能够在HW加速器中执行,而没有因例如必须将任何工作迁移到外部处理器或软件引起的性能损失。
配置寄存器202存储可配置描述符,所述可配置描述符基于特定推断的调度指定来控制数据流。配置寄存器202的集合接受描述符的值,所述描述符的值在由PE 130处理ML模型的每个层的开始被更新。描述符包括描述符字段的集合,以通过按照可能的处理模板中的一个可能处理模板或可能的处理模板的集合控制PE 130内的输入数据的各个计算阶段的适当定序来支持灵活数据流调度。这类描述符的示例在[’709]的表1和/或[’707]的表1中示出。被应用于配置寄存器202的描述符字段的集合经由配置加载器(未示出)被编程,以实现数据流调度,以处理被实现的ML模型(例如DNN等)的当前层的输入数据(例如输入特征和/或输入通道)。在一些实现方式中,数据流调度基于张量处理模板,以及输入数据是ML模型(例如DNN等)的当前层的张量数据。
LDS204包括内部计数器和逻辑(例如粘合(glue)逻辑),以生成RF读和写(Rd/Wr)控制信号来驱动RF208。例如,LDS204包括内部计数器和逻辑,以生成到IF RF 281、FLRF282和OF RF 283中的读和写控制信号以及复用器控制信号,用于基于正被执行的操作的类型(例如MAC、Eltwise、MaxPool等)以及所操作的ML模型的维度将数据从RF 208路由到适当乘法算术单元260、加法器算术单元261和比较算术单元中。LDS204还可生成如[’707]、[’709]、[’804]和/或[’341]中论述的其他控制信号。LDS204可以是任何适合的,可以是集合体(aggregate)、树(例如抽象语法树或诸如此类)、图(例如有向无环图(DAG))、栈、队列、哈希表、有限自动机、有限状态机(FSM)、计算的模型、逻辑数据模型、逻辑模式(logicalschema)和/或描述逻辑、数据、元素等的其他相似数据结构,以生成控制信号来驱动RF208。RF 208可使用例如(一个或多个)SRAM装置、(一个或多个)DRAM装置、高速暂存存储器(scratchpad memory)和/或其他适合的存储器装置来实现。
MAC单元206,即HW加速器2224中的计算模块。MAC206的逻辑包括乘法器260、加法器261和各种复用器(MUX)控制逻辑262(统称为MUX262),以适当地路由适当的数据来实现MAC206的处理。PE 130支持内部和外部pSum累加。PE 130能够接受在水平方向(pSumX)或竖直方向(pSumY)上来自其相邻PE 130的pSum。配置寄存器202的可编程描述符字段能够用来经由“accum_dir”控制信号来指定内部累加的方向。“accum_Nbr”控制信号用来识别pSum的累加是在PE 130内还是跨PE 130和/或准许的相邻PE 130。对于外部pSum累加,值的一个集合被保存在“ext_pSum”寄存器中,而值的第二集合驻留在OFMap283中。MUX控制信号“en_ext_pSum”用来在内部pSum累加与外部pSum累加之间进行选择。在[’707]、[’709]、[’804]和/或[’341]中论述配置寄存器202、FSM204、MAC206、RF 208和PE 130的其他方面。
虽然图1或图2未示出,但灵活的调度感知数据分发(FSAD)模块可用来从PE阵列100(或者各个PE 130)中加载和/或提取数据。FSAD模块包括:可配置描述符,其基于数据流调度来控制数据流;地址生成器,其包括加载模块(和/或加载LDS204)和日志解析模块(和/或日志解析LDS204),用于基于描述符字段在加载阶段期间向PE阵列100传输数据(IF和FL)并且在提取阶段期间从PE阵列100中提取数据(OF);以及其他控制逻辑,用于在PE阵列100与存储器组(例如SRAM组或诸如此类)之间通过接口连接。在[’707]、[’709]、[’804]和/或[’341]中论述FSAD的其他方面和FSAD模块的操作。
在灵活调度HW加速器中,在竖直(pSumY)方向上或者在水平(pSumX)方向上(但不同时在两个方向上)在连续PE 130之间允许pSum累加。复用器控制信号“accum_dir”选择“pSumX”或者“pSumY”输入中的一个,而复用器控制信号“accum_Nbr”选择加法器正执行其自己的PE 130还是相邻PE 130的pSum累加。在某些调度中,可能需要溢出pSum并且在以后的时间点将它填充回PE 130中,以便被累加以生成最终输出。“en_ext_pSum”复用器控制信号用来在内部还是外部的pSum之间进行选择。相邻PE 130之间的pSum累加经由以串行方式根据累加的方向由下至上或者由左至右传递pSum进行。例如,如果四个连续PE 130必须在竖直方向上被累加,则PE0130的pSum与PE1130相加并且结果被存储在PE1130中,之后接着PE1130中的pSum与PE2130相加并且中间结果被存储在PE2130中,以及最后PE2130的pSum与PE3130相加并且使最终输出在PE3130中可用。
但是,灵活调度HW加速器的pSum累加的一个缺点是在竖直和/或水平方向上跨PE130的累加的串行化性质。串行化归因于与PE阵列内PE 130的2维网格中的单行或单列内的PE 130之间的所有对所有(all-to all)连接关联的极高互连开销。考虑其中某列(例如PE0130至PE3130)内的四个相邻PE 130在竖直方向上执行pSum累加的调度。这种情形开始于PE0130和PE1130内的pSum被累加,以及结果被存储在PE1130中。相似地,对于PE1130和PE2130对以及PE2130和PE3130对,pSume累加以逐跳或串行方式被执行,以及使最终输出点在PE3130中可得到。在这个示例中,PE0130内的pSum被传递到PE1130,这然后与PE1130的pSum相累加并且被存储在PE1130中;然后PE1130中的所存储的累加被传递到PE2130,这然后与PE2130的pSum相累加并且被存储在PE2130中;以及然后PE2130中的所存储的累加被传递到PE3130,这与PE3130的pSum相累加并且被存储在PE3130中。
使用灵活调度方案跨PE0130、PE1130、PE2130和PE3130来累加每个PE 130内的16个pSum花费48个循环(例如16×3=48),这是极为低效的。有可能以比如脉动阵列之类的方式管线化(pipelining)跨PE 130的累加,但是PE 130之间的工作不平衡的任何可能性(例如归因于数据中的稀疏性)能够易于要求PE 130之间的更复杂控制和缓冲,这可能会增加时延。附加地,甚至对于完善管线化,要从第一PE 130累加到最后一个PE 130的数据时延也能够引起相当大的性能开销。例如,如果你要在竖直或水平方向上跨16个PE 130进行累加,则在最后一个PE 130甚至开始累加之前会花费15跳(循环),在此情况下,总累加会花费31个循环来累加16个pSum。
图3提供按照各个实施例的固定调度HW加速器的基于树的pSum累加体系结构300(又称作“固定调度体系结构300”)。固定调度体系结构300包括列长度为N的PE列305(其中N是PE列305中的PE 130数量)。这个示例中的PE列305包括PE0至PE15。固定调度体系结构300还包括log2(N)的加法器树深度,它在这个示例中为四。加法器树深度可指代一直到获得最终输出点之前的求和/累加的层或循环数量。PE 130的数量N和加法器树深度在使用“固定调度”的操作之前是固定的。
在固定调度体系结构300中,不存在对不同PE 130进行加权或者选择PE 130的子集来执行pSum累加的概念。特别是,N并且因此log2(N)的值是固定的。但是,固定调度HW加速器的pSum累加方案的一个缺点是N的固定值。在图3的示例中,体系结构300仅能够支持跨加法器树深度为log2(N)=4的N=16个PE 130的pSum累加,并且不能够支持关于多少PE130用来累加pSum的灵活性。固定调度实现方式的示例包括权重固定方案(参见例如H.Kwon等人的“An Analytic Model for Cost-Benefit Analysis of Dataflows in DNNAccelerators”(arXiv:1805.02566v2[cs.DC](2018年9月13日))、无本地重复使用方案(参见例如Jouppi等人的“In-Datacenter Performance Analysis of a Tensor ProcessingUnit”(Proceedings of the 44th Annual Int’l Symposium on Computer Architecture(ISCA),第1-12页(2017年6月24日))、输出固定方案以及行固定方案(参见例如Y.Chen等人的“Eyeriss:An Energy-Efficient Reconfigurable Accelerator for DeepConvolutional Neural Networks”(第43ACM/IEEE ISCA(2016年6月))。
本公开提供使用基于树的体系结构来执行跨PE阵列100内的多个PE 130的pSum累加以生成最终输出点的技术。特别是,FlexTree能够动态改变加法器树的深度,以支持由编译器为维度变化的网络/ML模型层所编程的灵活调度。这个HW增强使编译器/调度器能够发现高计算效率的调度。加法器树深度的动态重新配置经由软件可编程配置寄存器(例如先前论述的配置寄存器202)来实现。
与支持灵活调度的现有HW加速器(其中pSum累加经由相邻PE 130之间pSum的移动进行)相比,FlexTree技术采用基于树的体系结构,所述基于树的体系结构显著改善pSum累加的效率(在一些仿真中至多2.14x加速)。此外,现有HW加速器在固定调度上进行操作并且使用基于加法器树的体系结构来累加pSum,加法器树的深度在设计时间是固定的,并且不能用来为由编译器/调度器推导的高效计算调度/数据流提供(accommodate)灵活调度。本文中论述的FlexTree技术因加法器树深度的动态重新配置能力而克服固定深度加法器树体系结构的限制,由此实现pSum累加的加速。以这些方式,本文中论述的FlexTree技术通过促进跨由HW加速器支持的、维度变化的大范围ML模型层的改进pSum累加来实现更高计算效率。性能优化的HW加速器在各种AI应用(包括成像、视频和语音应用)的推断/预测确定中发挥关键作用。本文中论述的FlexTree技术使高性能计算HW元件当运行现代AI/ML工作负荷时能够比现有解决方案更快地并且使用更少的计算资源来计算推断/预测。
在一些实现方式中,FlexTree方案涉及基于通过最佳调度所指示的pSum累加分区因子对加法器树深度进行编程,所述最佳调度由调度器/编译器编程。在一些实现方式中,分区因子可以是输入通道内部分区(ICIP)因子(参见例如下文中论述的图4)。对于ML模型层的不同维度,某些寄存器字段能够被编程为表示pSum累加的加法器树深度。附加地或替代地,这些寄存器字段的编程能够包括与主机处理器的控制/状态寄存器(CSR)连接的附加引脚,这能够在正被使用的特定主机处理器的数据表和/或其他产品文献中被指示。
图4示出按照各个实施例的ICIP的概念。一般来说,术语“输入通道内部分区”或“ICIP”至少在一些实施例中指代在一个或多个PE 130和/或MAC单元410之间对多个输入通道进行分区。在图4的示例中,存在64个激活输入通道(AIC)400a(例如0至63)和64个权重输入通道(WIC)400b(例如0至63);AIC400a和WIC400b可统称为输入通道(IC)400。虽然这个示例包括64个IC 400,但在其他实现方式中可使用任何数量的IC 400。
对于ICIP因子为1(例如ICIP=1)的ICIP 401,计算最终输出中涉及的PE 130的数量等于1,这在这个示例中为PE0。激活和权重的所有64个输入通道在单个PE0内被逐点相乘和累加,并且最终输出在PE0中可用。PE0包括单个MAC单元410(又称作“MAC运算符410”、“乘法和累加器410”、“乘法-累加器410”或“MAC410”),以累加IC 400中的所有IC的pSum。对于ICIP因子为2(例如ICIP=2)的ICIP402,64个输入通道在两个PE 130之间被划分,所述PE在这个示例中包括PE0和PE1。在这里,PE 130中的每个PE在32个IC 400上工作。在这个示例中,使用相应MAC 4100和4101,PE0在IC 0至31上工作,以及PE1在IC 32-63上工作。从0-31和32-63的IC400的pSum分别在PE0和PE1中可用。在PE0和PE1中可用的pSum然后由pSum累加元件(pSAE)430累加,以形成最终输出点。对于ICIP因子为4(例如ICIP=4)的ICIP 402,IC 400被分布于四个PE 130,所述PE在这个示例中包括PE0、PE1、PE2和PE3。在这里,PE0、PE1、PE2和PE3中的每个PE接收16个IC 400,所述IC各自需要被累加以形成最终输出。在这个示例中,使用相应MAC4100、4101、4102和4103,PE0在IC 0至15上工作,PE1在IC 16至31上工作,PE2在IC 32至47上工作,以及PE3在IC 48至63上工作。在PE0、PE1、PE2和PE3中变得可用的pSum然后由pSAE430累加,以形成最终输出点。按照各个实施例,FlexTree机制可驻留在pSAE430处或中,以产生最终输出结果。
图5示出按照各个实施例的示例FlexTree体系结构500。FlexTree体系结构500(又称作“加法器树网络500”、“FlexTree网络500”、“FlexNN500”、“FlexTree500”和/或诸如此类)包括FlexTree500的PE列505、寄存器A至H和pSum累加元件(pSAE)510(其可对应于图4的MAC410)。在一些实现方式中,寄存器A-H能够是整数寄存器和/或浮点运算符(flop)寄存器,这取决于pSAE 510的输入精度。在这个示例中,PE列505具有列长度N,这在这个示例中包括16个PE 130(例如PE0至PE15)。PE列505可以是来自图1的PE阵列100的单独列。虽然这个示例包括16个PE 130,但PE列505在其他实现方式中可包括任何数量的PE 130。
在图5的示例中,在第一级(第1级),16个PE 130的pSum在相应寄存器A至H缩减到(或累加至)8个pSum,它们然后在第二级(第2级)的相应寄存器I至L缩减到(或累加至)4个pSum,然后在第三级(第3级)的相应寄存器M和N缩减到(或累加至)2个pSum,并且然后在第四级(第4级)的flop O缩减到(或累加至)1个pSum。由加法器树网络500支持的ICIP因子的范围(例如参与pSum累加以生成通过“ICIP”所表示的最终输出的PE 130的数量)为1至16(均包含在内)。每级对应于加法器树深度,例如第1级对应于加法器树深度1,第2级对应于加法器树深度2,第3级对应于加法器树深度3,以及第4级对应于加法器树深度4。无论ICIP因子如何,计算的输出在产生最终OF输出之前都经过加法器树网络500。这被进行,以经由通过实现跨ICIP的所有值的一致性对硬件设计的简化来减少硬件开销。在一些实现方式中,FlexTree500能够通过在与2的幂不对齐的PE 130将零馈送到FlexTree网络500中来支持不是2的幂的ICIP的值。
图6示出按照各个实施例的FlexTree 500的示例pSum累加元件(pSAE)510的部件。pSAE510包括部件或运算符(operator)621至624的集合,包括整数加法器621、浮点(fp)加法器622、整数比较器623和fp比较器624。在其他实现方式中,可采用任何适合的布置中来包括附加或替代部件。在这个示例中,整数加法器621和整数比较器623各自可获得8比特整数(INT8)值(例如有符号范围为-128至127或者无符号范围为0至255),以及fp加法器622和fp比较器624各自可获得16比特fp(FP16)或半精度值(例如范围为±65504)。
图6中,来自两个PE 130的相应输入615被馈送到输入块620中,所述输入块可组合两个输入615。输入块620将所组合的输入620路由到部件/运算符621-624中的一个或多个,这取决于要被执行的、所配置的(一个或多个)操作。例如,特定运算符可基于配置的运算类型(OpType)和配置的精度来选择。OpType和精度可通过本文中论述的灵活调度来指示。部件/(一个或多个)运算符621-624对输入515执行对应操作/变换,其被提供给输出块625。输出块625将单个输出630馈送到下一个元件,诸如,如图5中所示的flop或诸如此类。
能够包括部件/运算符的各种组合,以支持或能够实现各个ML模型层方面的计算。例如,部件/运算符621-624可支持深度方向的(depthwise)层和池化层连同由HW加速器2224执行的CNN的卷积层。基于输入精度(例如INT8或FP16)和输入运算类型(例如加法或比较),来自PE 130的pSum输出630被路由到FlexTree 500内的适当HW资源中。
表1示出FlexTree输出寄存器,所述FlexTree输出寄存器基于图5a的加法器树网络500中的ICIP因子用作最终OF输出分接点。在这里,至少在一些实施例中,“分接点”指代从其中读取或者以其他方式获得(一个或多个)输出点的一个或多个寄存器。如表1中所示并且参照图5a,对于ICIP=[1,2],在第1级的寄存器[A,B,C,D,E,F,G,H]可被分接以获得最终OF输出;对于ICIP=[4],在第2级的寄存器[I,J,K,L]是最终OF输出分接点;对于ICIP=[8],在第3级的寄存器[M,N]用作最终OF输出分接点,以及对于ICIP=[16],在第4级的flop[O]用作最终OF输出分接点。
表1:FlexTree输出分接点
在FlexTree体系结构500中,寄存器A、B、C、D、E、F、G、H保存ICIP=1、2的最终输出值,寄存器I、J、K、L保存ICIP=4的最终输出,寄存器M、N保存ICIP=8的最终输出值,以及寄存器O保存ICIP=16的输出值。寄存器A-H、I-L和O能够被认为是作为根据ICIP因子的值[1、2、4、8或16]输出的分接点的寄存器组。FlexTree500的每级存在一个输出提取点(也称作“分接点”),例如:对于ICIP=1、2,输出处于第一级分接点(寄存器A-H);对于ICIP=4,输出处于第二级分接点(寄存器I-L);对于ICIP=8,输出处于第三级分接点(寄存器M、N);以及对于ICIP=16,输出处于第四级分接点(寄存器O)。
如表1中所示,对于ICIP的不同值,FlexTree输出分接点的总数是可变的。对于ICIP=[1、2、4、8、16],FlexTree输出分接点的总数分别为[8、8、4、2、1]。基于灵活调度生成器将如下文中论述来生成的不同的分区值,最终输出点能够从FlexTree网络500中的不同分接点被分接。在一些实现方式中,为了简化将最终OF点从FlexTree模块500提取到日志解析模块(例如与[’707]和/或[’709]中论述的日志解析FSM模块相同或相似)中,四个输出特征图(OF)点的最大数能够从FlexTree输出中提取。这类实现方式中的FlexTree输出(例如来自寄存器[A、B、C、D、E、F、G、H、I、J、K、L、M、N、O]的输出)到4个输出中的复用通过图7中示出。
图7示出按照各个实施例的FlexTree输出复用器700。在这里,FlexTree输出复用器700设置有寄存器A至O的输出中的一个或多个(参见例如图5a)和ICIP因子,并且输出一至四个输出(图7中被标记为Out1、Out2、Out3和Out4)。在一些实现方式中,当日志解析模块没有提取所有输出点的能力时,可使用FlexTree输出复用器700。在这个示例中,日志解析模块可能仅能够提取四个输出点(例如Out1、Out2、Out3和Out4),并且因此日志解析模块可按照表2通过四个或更少循环以串行化方式来获得这些输出点,表2示出复用器输出分接点到日志解析的映射。
表2:复用器输出分接点到日志解析映射
在表2中,如果ICIP因子为1或2,则日志解析模块可经由Out1从寄存器A和B中、经由Out2从寄存器C和D中、经由Out3从寄存器E和F中以及经由Out4从寄存器G和H中提取输出点。在这里,来自寄存器A、C、E和G的输出点在第一循环(Cyc1)期间获得,以及来自寄存器B、D、F和H的输出点在第二循环(Cyc2)期间获得。如果ICIP因子为4,则日志解析模块可在Cyc1期间经由Out1从flop I中、经由Out2从flop J中、经由Out3从flop K中以及经由Out 4从flop L中提取输出点,并且在Cyc2期间没有输出点。如果ICIP因子为8,则日志解析模块可在Cyc1期间经由Out1从flopM中以及经由Out3从flop N中提取输出点,并且在Cyc2期间没有输出点。如果ICIP因子为16,则日志解析模块可在Cyc1期间经由Out2从flopO中提取输出点。在各个实施例中,最终输出点能够从不同分接点被分接,并且在日志解析模块中被累加,以及这种日志解析模块的示例操作通过图8示出。
图8示出按照各个实施例的本地日志解析操作800的部件。日志解析操作800基于单独PE列505的ICIP值可以是那个PE列505本地的。本地日志解析操作800可由诸如[’707]和/或[’709]中论述的日志解析FSM模块之类的适合的日志解析模块来执行。本地日志解析800以逐列505(例如,在这个示例中,每列505具有16个PE和1个FlexTree500)为基础来提取FlexTree500的输出,以及列505的集合的输出由全局日志解析(图8未示出)处置。在一个示例实现方式中,可存在由全局日志解析(图8中示出)处置的16列505。本地日志解析800包括日志解析LDS 804、累加树820、一个或多个后处理引擎(PPE)830和N个输出点850的阵列(其中N为数字)。
日志解析LDS 804可与[’707]、[’709]、[’804]和/或[’341]中论述的LDS204和/或日志解析FSM相同或相似。日志解析LDS 804是HW加速器2224的部分,所述部分负责从PE阵列100的每个PE列505中的PE 130中提取最终OF点,并且向全局日志解析(例如全局日志解析可与[’707]和/或[’709]中论述的日志解析FSm模块相同或相似)发送所提取的最终OF点,其中OC能够经过零压缩并且以能够由HW加速器2224在ML模型中的下一层(例如DNN层等)的执行期间所使用的方式被重新排列。日志解析LDS 804基于ML模型层的最佳调度进行工作(参见例如[’707]、[’709]、[’804]和[’341]),以及特别当基于作为调度804的部分所生成的ICIP值时。LDS 804可以以任何适合的数据结构的形式,诸如,例如集合体、树(例如抽象语法树或诸如此类)、图(例如有向无环图(DAG))、栈、队列、哈希表、有限自动机、FSM、计算的模型、逻辑数据模型、逻辑模式和/或描述逻辑、数据、元素等的其他相似数据结构,以生成控制信号,来从PE 130中提取最终OF点。LDS 804生成(或者用来生成)一个或多个控制信号815。(一个或多个)信号815可包括读地址信号(rdaddr)和读-启用(rden)控制信号。rdaddr指示OF RF 283的、从其中读取输出的地址,以及rden控制信号是rdaddr中包括的OFRF 283地址的读使能输入。
一个或多个信号815使一个或多个PE 130向累加树820提供其存储的pSum。例如,所存储的pSum可从PE 130的相应RF 208传输到累加树820的一个或多个pSAE 430中。累加树820产生一个或多个信号825,以向PPE 830提供累加数据。在一些实现方式中,一个或多个信号825中的每个可对应于图7中的输出信号(Out1、Out2、Out3和Out4)。例如,信号8251可对应于Out1,信号8252可对应于Out2,信号8253可对应于Out3,以及信号8254可对应于Out4。在一些实现方式中,一个或多个信号825包括:累加数据信号(accum_data),包括原始累加pSum;以及有效性指示符(accum_valid),指示accum_data(是否)有效和/或指示accum_data的有效性中的置信水平。
继续图7的示例,复用器700用来路由4个FlexTree输出中的一个或全部(例如在单个循环中来自寄存器A-O的4个中的最大数,基于ICIP值,它能够为4或2或1)。由于存在四个FlexTree输出,即来自四个PE 130的集合(参见例如表2)的日志解析OF点中的每个(例如图7中的Out1、Out2、Out3和Out4),因此OFRF的rdaddr和rden信号需要被正确定序,以从PE130中提取通过ICIP值所确定的OF点。4个输出Out1-4能够对于ICIP=1或2由任一个寄存器A-H、对于ICIP=4由寄存器I-L、对于ICIP=8由寄存器M、N或者对于ICIP=16由寄存器O来驱动。当寄存器A-H中存在8个值要被驱动到4输出接口时,输出能够通过2个循环来获得,以及当存在4个或更少值要被驱动到4个输出(如在ICIP=4、8、16的情况下)时,输出能够通过单个循环来获得。例如,如果ICIP因子为1,则LDS 804能够实现以循环方式对来自每个PE130的OF点的日志解析;如果ICIP因子为2,则从每隔一个PE 130中提取点;等等(参见例如表2)。日志解析LDS 804(或者按照LDS 804进行操作的控制器)以一个或多个嵌套条件的形式来实现这个逻辑。由于使用有限数量的ICIP值(例如1、2、4、8和16),因此用于实现这个逻辑的开销与整个ML加速器2224或者甚至与日志解析LDS 804逻辑相比是可忽略的。
在输出点从适当的PE 130中被提取并且通过累加树820被累加之后,输出点被发送到一个或多个PPE830以用于对值的进一步处理,诸如,例如按输出通道偏置、缩放和/或诸如此类的应用。一个或多个PPE830中的每个可包括:输出特征图(OF)PPE,用于对OF点执行各个后处理任务(例如通道偏置、缩放、ReLU、PreLU、双曲正切(tanh)和/或一个或多个其他激活功能和/或诸如此类);以及输入数据精度(IDP)(例如INT或FP)PPE,用于执行数据后处理任务(例如缩放、通道偏置、ReLU、PreLU、双曲正切(tanh)和/或一个或多个其他激活功能和/或诸如此类)。一个或多个PPE830产生一个或多个信号835用于将OF点放置在缓冲器阵列850中的对应输出缓冲器(图8中被标记为OF0至OF15)中。在被移动到适合的存储器和/或存储位置之前,相应的输出缓冲器OF0至OF15存储PE 130中的对应PE的OF点。在一些实现方式中,一个或多个信号835包括:PPE数据信号(ppe_data),其包括要被存储在相应输出缓冲器OF0至OF15中的、经后处理的OF点;以及有效性指示符(ppe_valid),其指示accum_data是否有效和/或指示ppe_valid的有效性中的置信水平。
图9-12示出来自PE0至PE15的pSum值对于分别等于1、2、4和8的ICIP值在时间上到FlexTree网络中的定序。下列表示出与通过图9-12所示的序列对应的输出分接点。FlexTree输出分接点在表3b、表4b、表5b和表6b中已使用粗体文本被突出显示。针对ICIP的不同值对FlexTree模块的输入和输出的时序图在图9、图10、图11和图12中示出。标注vD*(其中*为数字)用来表示在给定时刻从单独PE 130输出到FlexTree模块800/820输入中的有效pSum数据。
图9示出按照各个实施例的、针对为1的ICIP因子(例如ICIP=1)的FlexTree时序图。图9包括针对输入时钟信号(clk)的循环(Cyc)0至Cyc4的输入时序图900a以及示出针对输出clk的Cyc0至Cyc5的输出905的输出时序图900b。表3a示出针对为1的ICIP因子的FlexTree输入定序(例如对应于输入时序图900a),以及表3b示出针对为1的ICIP因子的FlexTree输出定序(例如对应于输出时序图900b)。
表3a:针对ICIP=1的FlexTree输入和输出定序
ICIP=1 Cyc0 Cyc1 Cyc2 Cyc3 Cyc4
PE0 vD0 0 vD01 0 vD02
PE1 0 vD1 0 vD11 0
PE2 vD2 0 vD21 0 vD22
PE3 0 vD3 0 vD31 0
PE4 vD4 0 vD41 0 vD42
PE5 0 vD5 0 vD51 0
PE6 vD6 0 vD61 0 vD62
PE7 0 vD7 0 vD71 0
PE8 vD8 0 vD81 0 vD82
PE9 0 vD9 0 vD91 0
PE10 vD10 0 vD101 0 vD102
PE11 0 vD11 0 vD111 0
PE12 vD12 0 vD121 0 vD122
PE13 0 vD13 0 vD131 0
PE14 vD14 0 vD141 0 vD142
PE15 0 vD15 0 vD151 0
表3b:针对ICIP=1的FlexTree输入和输出定序
/>
如通过时序图900b所示,当ICIP因子为1时,最终输出在自输入的1个循环之后是可得到的。附加地,如通过表3b所示,对于ICIP=1的FlexTree输出分接点是寄存器A、B、C、D、E、F、G和H。对于为1的ICIP因子,不要求加法器树,因为单独PE 130的pSum输出是最终OF输出本身。然而,在一些实现方式中,最终OF输出值仍然通过加法器树网络800/820被传递,以简化HW设计并且实现跨多个ICIP值的一致性。在其他实现方式中,当ICIP因子为1时,适合的旁路机制可用来绕过加法器树网络800/820。
图10示出按照各个实施例的针对为2的ICIP因子(例如ICIP=2)的FlexTree时序图。图10包括针对输入clk的Cyc0至Cyc4的输入时序图1000a以及示出针对输出clk的Cyc0至Cyc3的输出1005的输出时序图1000b。表4a示出针对为2的ICIP因子的FlexTree输入定序(例如对应于输入时序图1000a),以及表4b示出针对为2的ICIP因子的FlexTree输出定序(例如对应于输出时序图1000b)。
表4a:针对ICIP=2的FlexTree输入和输出定序
ICIP=2 Cyc0 Cyc1 Cyc2 Cyc3 Cyc4
PE0 vD0 vD01 vD02 vD03 vD04
PE1 vD1 vD11 vD12 vD13 vD14
PE2 vD2 vD21 vD22 vD23 vD24
PE3 vD3 vD31 vD32 vD33 vD34
PE4 vD4 vD41 vD42 vD43 vD44
PE5 vD5 vD51 vD52 vD53 vD54
PE6 vD6 vD61 vD62 vD63 vD64
PE7 vD7 vD71 vD72 vD73 vD74
PE8 vD8 vD81 vD82 vD83 vD84
PE9 vD9 vD91 vD92 vD93 vD94
PE10 vD10 vD101 vD102 vD103 vD104
PE11 vD11 vD111 vD112 vD113 vD114
PE12 vD12 vD121 vD122 vD123 vD124
PE13 vD13 vD131 vD132 vD133 vD134
PE14 vD14 vD141 vD142 vD143 vD144
PE15 vD15 vD151 vD152 vD153 vD154
表4b
/>
如通过时序图1000b所示,当ICIP因子为2时,最终输出在自输入的1个循环之后是可得到的,因为FlexTree加法器树深度为log2(2)=1。如通过表4b所示,当ICIP因子为2时,FlexTree输出分接点是寄存器A、B、C、D、E、F、G和H。
图11示出按照各个实施例的针对为4的ICIP因子(例如ICIP=4)的FlexTree时序图。图11包括针对输入clk的Cyc0至Cyc4的输入时序图1100a以及示出针对输出clk的Cyc0至Cyc2的输出1105的输出时序图1100b。表5a示出针对为4的ICIP因子的FlexTree输入定序(例如对应于输入时序图1100a),以及表5b示出针对为4的ICIP因子的FlexTree输出定序(例如对应于输出时序图1100b)。
表5a:针对ICIP=4的FlexTree输入和输出定序
/>
表5b
/>
如通过时序图1100b所示,当ICIP因子为2时,最终输出在自输入的2个循环之后是可得到的,因为FlexTree加法器树深度为log2(4)=2。如通过表5b所示,当ICIP因子为4时,FlexTree输出分接点是寄存器I、J、K和L。
图12a和图12b示出按照各个实施例的针对为8的ICIP因子(例如ICIP=8)的FlexTree时序图。图12a包括针对输入clk的Cyc0至Cyc3的输入时序图1200a,以及图12b包括示出针对输出clk的Cyc0至Cyc3的输出1205的输出时序图1200b。表6a示出针对为8的ICIP因子的FlexTree输入定序(例如对应于输入时序图1200a),以及表6b示出针对为8的ICIP因子的FlexTree输出定序(例如对应于输出时序图1200b)。
表6a:针对ICIP=8的FlexTree输入和输出定序
/>
表6b
/>
如通过时序图1200b所示,当ICIP因子为8时,最终输出在自输入的3个循环之后是可得到的,因为FlexTree加法器树深度为log2(8)=3。如通过表5b所示,当ICIP因子为8时,FlexTree输出分接点是寄存器M和N。对于为16的ICIP因子(例如ICIP=16),最终输出在自输入的4个循环之后是可得到的,因为FlexTree加法器树深度为log2(16)=4。针对ICIP=16的FlexTree输出分接点是flop O。
图13-图15示出针对具有为4的ICIP因子的固定深度加法器树和FlexTree的时序图。图13包括针对输入clk的Cyc0至Cyc4的PE列长度为N=16并且ICIP因子为4(例如加法器树的深度固定到ceil(log2(16))=4的值)的固定深度加法器树的输入时序图1300a。图13还包括PE列长度为N=16并且ICIP因子为4并且针对输入clk的Cyc0至Cyc5的输入时序图1300b。图14包括针对输出clk的Cyc0至Cyc7的ICIP=4的固定深度加法器树的输出时序图1400(例如对应于输入时序图1300a)。图15包括针对输出clk的Cyc0至Cyc2的ICIP=4的FlexTree的输出时序图1500(例如对应于输入时序图1300b)。
如在图13-图14中对于ICIP=4能够看到,固定深度加法器树必须为未被累加的PE130(例如输入时序图1300a中的PE4至PE15)馈入零,并且最终输出在自输入循环的四个循环之后才是可得到的。然而,如通过针对FlexTree体系结构500的输出时序图1500所示,输出在自输入循环的两个循环之后是可得到的。为了合计分布于16个PE 130的ICIP=4pSume值的四个集合,固定深度加法器树体系结构花费七个循环,而FlexTree体系结构500仅花费两个循环。
对不同pSum累加配置执行性能分析,其中针对多种卷积神经网络(CNN)中的每种卷积神经网络,基线灵活调度NN(FlexNN)。CNN包括:50层残差网络(ResNet50)模型(参见例如He等人的“Deep Residual Learning for Image Recognition”(arXiv:1512.03385v1[cs.CV](2015年12月10日));Inception版本2(v2)模型(参见例如Ioffe的“BatchNormalization:Accelerating Deep Network Training by Reducing InternalCovariate Shift”(arXiv:1502.03167v3[cs.LG](2015年3月02日));Squeezenet v1.1(参见例如Iandola等人的“SqueezeNet:AlexNet-level accuracy with 50x fewerparameters and<0.5MB model size”(arXiv:1602.07360[cs.CV](2016年11月04日))和“What's new in SqueezeNet v1.1?”(GitHub.com(于2021年10月26日被访问)https://github.com/forresti/SqueezeNet/blob/master/SqueezeNet_v1.1/RE ADME.md);以及MobileNet单点多盒检测(SSD)(参见例如Liu等人的“SSD:Single Shot MultiBoxDetector”(arXiv:1512.02325v5[cs.CV](2016年12月29日)以及Howard等人的“MobileNets:Efficient Convolutional Neural Networks for Mobile VisionApplications”(arXiv:1704.04861v1[cs.CV](2017年4月17日))。为了仿真,FlexNN包括256个PE 130,被布置为16×16网格(包括16行和16个PE列505)。每个PE 130包括八个MAC410,其中FlexTree500中的MAC 410的总数为2048。仿真中作为目标的时钟频率为1.8千兆赫兹(GHz),这给出每秒7.37兆兆次运算(TOPS)的理论性能上限。表7a和表7b示出针对不同pSum累加方式的逐层性能比较。特别是,表7a提供逐层性能比较的层信息,以及表7b提供逐层性能比较。
表7a:逐层性能比较的FlexNN层信息
表7b:FlexNN逐层性能比较(TOPS@1.8GHz)
表7a和表7b示出不同pSum累加方法如何能够引起不同性能。表7b中的无树方式表示现有FlexNN pSum累加机制,其中一个PE 130的pSum被传递到相邻PE 130。表7b中的固定树方式表示固定加法器树。利用两个固定树变体,其包括:第一固定树方式(4输入),具有累加来自四个相邻PE 130的pSum的加法器树(总共64个加法器树);以及第二固定树方式(16输入),具有累加来自16个PE 130的pSum的加法器树。表7b中的粗体文本中的单元格是四个配置之中的最大性能量度。如通过图7b所示,FlexTree500示为与其他FlexNN方式相比具有最佳性能。至少在这个仿真中,FlexTree500能够被看作是其他配置的超集。
当不存在跨PE 130的pSum累加(例如无树配置)时,ResNet50产生最佳性能。由于无树配置对于为1的ICIP因子没有性能开销,因此无树配置和FlexTree 500均实现等效性能。固定树方式要求调整调度,使得ICIP与对加法器树的输入的数量保持一致,以及在ResNet50仿真中,两种固定树方式均产生比无树配置和FlexTree 500更差性能的调度。Inception v2当与4输入固定树配合使用时具有最佳性能,以及SqueezeNet v1.1当与16输入固定树配合使用时具有最佳性能。ICIP因子为8的MobileNet SSD(例如表7b的第四行)示为最佳调度,以及其他三个配置都不能够匹配FlexTree 500性能。
图20a、图20b和图20c示出与诸如先前针对图7a和图7b示出和描述的那些配置之类的其他配置相比FlexTree加速的仿真结果。图20a、图20b和图20c概括FlexTree 500与其他pSum累加配置相比的总体加速。图20a包括FlexTree 500与无树配置相比的加速的图。图20a中的图表明,与其他配置相比,FlexTree 500在最少数量的层中比无树配置表现更好。这类情况中的大多数情况是当除了IC之外的层尺寸足够大以使得工作负荷能够均匀地被分布在PE 130而不需要跨PE 130进行累加时。然而,大致17%的层看到来自灵活加法器树的性能益处。
图20b示出与4输入固定加法器树相比时FlexTree 500的加速分布,以及图20c示出与16输入固定加法器树相比时FlexTree 500的加速分布。当使用固定加法器树时,具有小型IC的几个层示为最受影响,因为这类情况下的调度仅能够引起ICIP=1,但是由于PE130被强制使用加法器树,因此只有PE 130的子集被启用,以产生正确的输出值。
如通过表7b以及图20a-图20c所示,FlexTree500与现有技术灵活调度HW加速器相比实现至多2.14x的性能加速,所述现有技术灵活调度HW加速器没有用来执行pSum累加的加法器树。附加地,表7b和图20a-图20c表明,FlexTree 500与固定加法器树体系结构相比时实现范围从4x-16x的性能加速。在仿真设置中,检查来自表8所列示的7个网络的301个卷积层。由于并非所有层都显示加速,因此所述层根据加速被分类,并且表8仅绘制具有加速的层。
表8:跨NN和加法器树配置的加速分布
表8示出与不同FlexNN配置相比的FlexTree加速范围。表8列示七个NN、每个NN的加速的范围以及基线加法器树配置。百分比(“%层加速”)指示与基线加法器树配置相比,NN中受益于具有FlexTree的层的百分比。在这里,301个卷积层不包括每个网络的第一卷积层和深度方向卷积层。虽然在本公开中不论述这些层类型,但相似或更好的性能增强应当通过具有FlexTree配置来实现。这是因为这些层类型在调度中具有有限灵活性,这在很大程度上依靠跨PE 130的pSum累加,并且要累加的PE 130的数量可根据过滤器大小、步幅(stride)和输入维度而变化。
2.人工智能和机器学习方面
机器学习(ML)涉及使用示例(训练)数据和/或过去的经验对计算系统进行编程以优化性能准则。ML指代计算机系统的使用和开发,所述计算机系统能够通过使用算法和/或统计模型来分析数据中的模式并且从其中得出推断,在不遵循明确指令的情况下进行学习和适配。ML涉及使用算法来执行(一个或多个)具体任务,而不使用明确指令来执行所述(一个或多个)具体任务,而是依靠学习的模式和/或推断。ML使用统计来构建(一个或多个)数学模型(又称作“ML模型”或者简单地称作“模型”),以便基于样本数据(例如训练数据)进行预测或判定。所述模型被定义成具有参数的集合,并且学习是执行计算机程序,以使用训练数据或过去的经验来优化所述模型的参数。经训练的模型可以是基于输入数据集进行预测的预测性模型、从输入数据集来获得知识的描述性模型或者是预测性且描述性的。一旦已学习(训练)模型,它就能够用来进行推断(例如预测)。
ML算法对训练数据集执行训练过程,以估计基础ML模型。ML算法是一种计算机程序,所述计算机程序从针对某个(一些)任务和某个(一些)性能量度/(一个或多个)度量的经验中学习,以及ML模型是在采用训练数据来训练ML算法之后所创建的对象或数据结构。换言之,术语“ML模型”或“模型”可描述采用训练数据所训练的ML算法的输出。在训练之后,ML模型可用来对新数据集进行预测。附加地,单独训练的AI/ML模型能够在推断或预测生成期间在AI/ML管线中被链接在一起。虽然术语“ML算法”指代与术语“ML模型”不同的概念,但这些术语为了本公开的目的而可以可互换地使用。本文中论述的ML技术中的任何技术及其变体和/或组合可完全或部分用于本文中论述的示例实施例中的任何示例实施例。
ML尤其可要求获得和清理数据集、执行特征选择、选择ML算法、将数据集划分为训练数据和测试数据、训练模型(例如使用所选的ML算法)、测试模型、优化或调谐模型以及确定模型的度量。这些任务中的一些任务可以是可选的或者被省略,这取决于用例和/或所使用的实现方式。
ML算法接受模型参数(或者简单地称作“参数”)和/或能够用来控制训练过程和所产生模型的某些性质的超参数。模型参数是在训练期间所学习的参数、值、特性、配置变量和/或性质。模型参数通常是由模型当进行预测时所要求的,并且它们的值定义模型对特定问题的技能。至少在一些实施例中,超参数是ML过程的、无法在训练过程期间学习的特性、性质和/或参数。超参数通常在训练发生之前被设置,并且可在过程中用来帮助估计模型参数。
ML技术一般落入以下主要类型的学习问题类别:有监督学习、无监督学习和强化学习。有监督学习涉及根据包含输入和所期望的输出的数据集来构建模型。无监督学习是如下ML任务,所述ML任务旨在从未标记数据中学习描述隐藏结构的函数。无监督学习涉及根据仅包含输入而不包含期望输出标记(label)的数据集来构建模型。强化学习(RL)是面向目的的学习技术,其中RL代理旨在通过与环境进行交互来优化长期目标。AI和ML的一些实现方式以模仿生物大脑的工作的方式来使用数据和神经网络(NN)。这种实现方式的示例通过图21示出。
图21示出示例NN 2100,所述NN可适合供本文中论述的各个实现方式的计算系统(或子系统)中的一个或多个使用、由HW加速器部分实现和/或诸如此类。NN 2100可以是深度神经网络(DNN),所述DNN用作计算节点或者计算节点的网络的人工大脑,以处置非常大且复杂的观测空间。附加地或替代地,NN 2100能够是某个其他类型的拓扑(或者拓扑的组合),诸如前馈NN(FFN)、深度FNN(DFF)、递归(recurrent)NN(RNN)、深度信念NN、随机NN(例如贝叶斯网络(BN)、贝叶斯信念网络(BBN)、贝叶斯NN(BNN)、深度BNN(DBNN)、动态BN(DBN)、概率图模型(PGM)、玻尔兹曼机器、受限玻尔兹曼机器(RBM)、霍普菲尔德网络或霍普菲尔德NN、卷积深度信念网络(CDBN)等)和/或诸如本文中论述的那些体系结构之类的某个其他类型的ML体系结构。
NN 2100可包含多种ML技术,其中所连接人工神经元2110的集合(松散地)对生物大脑中向其他神经元/节点2110传送信号的神经元进行建模。神经元2110又可称作节点2110、处理元件(PE)2110或诸如此类。节点2110之间的连接2120(或边缘2120)(松散地)在生物大脑的突触上被建模,并且在节点2110之间传递信号。要注意,为了清楚起见,并非所有神经元2110和边缘2120在图21中都被标记。
每个神经元2110具有一个或多个输入,并且产生输出,所述输出能够被发送到一个或多个其他神经元2110(输入和输出可称作“信号”)。对输入层Lx的神经元1210的输入能够是外部数据的样本的特征值(例如输入变量xi)。输入变量xi能够设置为包含相关数据(例如观测、ML特征等)的向量。对隐藏层La、Lb和Lc的隐藏单元2110的输入可基于其他神经元2110的输出。输出层Ly的最终输出神经元2110的输出(例如输出变量yj)包括预测、推断和/或完成期望/配置的任务。输出变量yj可以以确定、推断、预测和/或评估的形式。附加地或替代地,输出变量yj能够设置为包含相关数据(例如确定、推断、预测、评估和/或诸如此类)的向量。
在ML的上下文中,“ML特征”(或者简单地称作“特征”)是所观测的现象的单独可测量性质或特性。通常使用数字/数值(例如整数)、字符串、变量、序数、实值、类别和/或诸如此类来表示特征。附加地或替代地,ML特征是各个变量,所述变量可以是基于能够被量化和记录的可观测现象的无关变量。ML模型使用一个或多个特征来进行预测或推断。在一些实现方式中,能够从旧特征中推导新特征。
神经元2110可具有阈值,使得信号仅在聚合信号超过那个阈值时才被发送。节点2110可包括激活函数,所述激活函数在给定输入或者输入的集合的情况下定义那个节点2110的输出。附加地或替代地,节点2110可包括传播函数,所述传播函数根据作为加权和的其前导神经元2110以及它们的连接2120的输出来计算对神经元2110的输入。偏置项也能够被添加到传播函数的结果。在一些实现方式中,NN 2100可以是通过下列操作所构建的随机NN:通过赋予神经元2110随机传递函数,或者通过给予它们随机权重220,将随机变化引入NN中。
NN2100还包括连接2120,所述连接中的一些连接提供至少一个神经元2110的输出作为对至少另一神经元2110的输入。每个连接2120可被指派表示其相对重要性的权重(又称作“权重2120”)。权重2120可随着学习进行而调整。各个权重2120增加或减少连接2120处的信号的强度。权重2120中的一些或所有权重可以是多个权重值的矩阵,它们在这个示例中被标记为W(1)至W(4)(要注意,并非所有权重2120都被标记有其相应权重矩阵)。在一些实现方式中,权重2120(或权重矩阵)可表示一个或多个概率分布,诸如当NN2100是随机NN(例如BNN、DBNN等)或者利用概率分布的其他相似NN体系结构/拓扑时。
神经元2110能够被聚合或编组为一个或多个层L,其中不同层L可对其输入执行不同变换。图21中,NN 2100包括输入层Lx、一个或多个隐藏层La、Lb和Lc以及输出层Ly(其中a、b、c、x和y可以是数字),其中每个层L包括一个或多个神经元2110。信号可能在多次穿过隐藏层La、Lb和Lc之后从第一层(例如输入层L1)行进到最后一层(例如输出层Ly)。图21中,输入层La接收输入变量xi(其中,i=1,...,p,其中p是数字)的数据。隐藏层La、Lb和Lc处理输入xi,并且最终输出层Ly提供输出变量yj(其中,j=1,...,p',其中p'是与p相同或不同的数字)。在图21的示例中,为了图示的简洁起见,在ANN2100中仅存在三个隐藏层La、Lb和Lc,然而,NN2100可包括比所示的隐藏层更多(或更少)的隐藏层La、Lb和Lc
3.示例硬件和软件配置及布置
图22a是按照各个实施例的示例加速器体系结构2200。加速器体系结构2200向应用逻辑2212提供神经网络(NN)功能性,并且因此可称作NN加速器体系结构2200、DNN加速器体系结构2200和/或诸如此类。
应用逻辑2212可包括用来执行规范功能的应用SW和/或HW部件。应用逻辑2212将数据2214转发到推断引擎2216。推断引擎2216是传递统一应用编程接口(API)的运行时元件,所述API将ANN(例如(一个或多个)DNN(诸如NN2100和/或诸如此类))推断与应用逻辑2212相集成,以向应用逻辑2212提供结果2218(或输出)。
为了提供所述推断,推断引擎2216使用控制如何对数据2214进行AI/ML推断的模型2220来生成结果2218。具体地,模型2220包括NN的层的拓扑。所述拓扑包括:输入层,其接收数据2214;输出层,其输出结果2218;以及输入与输出层之间的一个或多个隐藏层,其提供数据14与结果2218之间的处理。所述拓扑可被存储在适合的信息对象(诸如扩展标记语言(XML)、JavaScript对象标注(JSON)和/或其他适合的数据结构、文件和/或诸如此类)中。模型2220还可包括使用DNN来处理推断中的数据2214的同时这些层中的任何层的结果的权重和/或偏置。
推断引擎2216可使用(一个或多个)HW单元2222来实现和/或与其连接。至少在一些实施例中,推断引擎2216是将逻辑规则应用于知识库以推论新信息的元件。至少在一些实施例中,知识库是用来存储由计算系统(例如图22的计算节点2250)所使用的复杂结构化和/或非结构化信息的任何技术。知识库可包括存储装置、存储库、数据库管理系统和/或其他相似元件。
此外,推断引擎2216包括一个或多个加速器2224,所述加速器使用一个或多个HW单元2222为ML模型推断/预测提供HW加速。(一个或多个)加速器2224是专门定制/设计为用于AI/ML应用和/或AI/ML任务的HW加速的(一个或多个)SW和/或HW元件。在一些实现方式中,(一个或多个)加速器2224可包括处理元件,诸如下文中针对(一个或多个)HW单元2222所论述的那些处理元件中的任何处理元件。附加地或替代地,(一个或多个)加速器2224可以是专用于一个或多个DNN模型类型的DNN前向和/或前向/后向两种传递的HW元件。
一个或多个加速器2224可包括以多个突触结构2225的形式的一个或多个处理元件(PE)阵列和/或乘和累加(MAC)体系结构。每个加速器2224的一个或多个PE阵列中的每个可与图1-图15的PE阵列100和/或下文中论述的空间阵列体系结构2300相同或相似。在一些实现方式中,可存在数百个PE来处置一个或多个DNN模型中的数十亿个MAC操作以及高速暂存存储器和PE间互连网络来最大化数据重复使用以应对用于从存储器(例如SRAM、DRAM等)取得数据的巨大能量成本。(一个或多个)加速器2224可对应于下文中描述的图22b的加速电路模块2264。
(一个或多个)HW单元2222可包括一个或多个处理器和/或一个或多个可编程装置。作为示例,处理器可包括中央处理单元(CPU)、图形处理单元(GPU)、专用AI加速器专用集成电路(ASIC)、视觉处理单元(VPU)、张量处理单元(TPU)和/或边缘TPU、神经计算引擎(NCE)、像素视觉核心(PVC)、光子集成电路(PIC)或光学/光子计算装置和/或诸如此类。可编程装置可包括例如逻辑阵列、诸如复杂可编程逻辑装置(PLD)(CPLD)之类的PLD、现场可编程门阵列(FPGA)、可编程ASIC、可编程片上系统(SoC)和诸如此类。(一个或多个)处理器和/或可编程装置可对应于图22的处理器电路模块2252和/或加速电路模块2264。特别是,一个或多个加速器2224和/或(一个或多个)HW单元2222可包括多个突触结构2225,所述突触结构可按照针对图1-图15示出和描述的各个实施例被配置或布置。
图22b图示可存在于计算节点2250中以用于实现本文中描述的技术(例如操作、过程、方法和方法学)的部件的示例。图22b提供当被实现为计算装置(例如被实现为移动装置、基站、服务器计算机、网关、设施等)的计算节点2250的部件的视图。计算节点2250可包括本文中引用的HW或逻辑部件的任何组合,并且它可包括与边缘通信网络或者这类网络的组合可配合使用的任何装置或者与其耦合。部件可被实现为IC、其部分、分立电子装置或其他模块、指令集、可编程逻辑或算法、HW、HW加速器、软件(SW)、固件或者它们在计算节点2250中被适配的组合,或者被实现为以其他方式并入更大的系统的机箱内的部件。对于一个实施例,至少一个处理器2252可与计算逻辑2282被封装在一起,并且配置成实践本文中描述的各个示例实施例的方面,以形成系统级封装(SiP)或片上系统(SoC)。
节点2250包括以一个或多个处理器2252的形式的处理器电路模块。处理器电路模块2252包括电路模块,诸如但不限于一个或多个处理器核心以及下列项中的一个或多个:缓存存储器、低压差电压调节器(LDO)、中断控制器、诸如SPI、I2C或通用可编程串行接口电路之类的串行接口、实时时钟(RTC)、包括间隔和看门狗定时器的定时器-计数器、通用I/O、诸如安全数字/多媒体卡(SD/MMC)等的存储卡控制器、接口、移动工业处理器接口(MIPI)接口和联合测试访问组(JTAG)测试访问端口。在一些实现方式中,处理器电路模块2252可包括一个或多个HW加速器(例如与加速电路模块2264相同或相似),所述HW加速器可以是微处理器、可编程处理装置(例如FPGA、ASIC等)或诸如此类。一个或多个加速器可包括例如计算机视觉和/或深度学习加速器。在一些实现方式中,处理器电路模块2252可包括片上存储器电路模块,所述片上存储器电路模块可包括任何适合的易失性和/或非易失性存储器,诸如DRAM、SRAM、EPROM、EEPROM、闪速存储器、固态存储器和/或诸如本文中描述的那些技术之类的任何其他类型的存储器装置技术。
处理器电路模块2252可包括例如一个或多个处理器核心(CPU)、应用处理器、GPU、RISC处理器、Acorn RISC Machine(ARM)处理器、CISC处理器、一个或多个DSP、一个或多个FPGA、一个或多个PLD、一个或多个ASIC、一个或多个基带处理器、一个或多个射频集成电路(RFIC)、一个或多个微处理器或控制器、多核心处理器、多线程处理器、超低压处理器、嵌入式处理器或任何其他已知处理元件或者它们的任何适合的组合。处理器(或核心)2252可耦合于或者可包括存储器/存储装置,并且可配置成执行存储器/存储装置中存储的指令2281,以使各个应用或操作系统能够在平台2250上运行。处理器(或核心)2252配置成操作应用SW,以向平台2250的用户提供特定服务。在一些实施例中,(一个或多个)处理器2252可以是被配置(或者可配置)成按照本文中的各个实施例进行操作的(一个或多个)专用处理器/(一个或多个)控制器。
作为示例,(一个或多个)处理器2252可包括:基于Architecture CoreTM的处理器,诸如基于i3、i5、i7和i9的处理器;基于/>微控制器的处理器,诸如QuarkTM、AtomTM或其他基于MCU的处理器;(一个或多个)/>处理器、(一个或多个)/>处理器或者从/>公司(加州圣克拉拉)可得到的另一这种处理器。然而,可使用任何数量的其他处理器,诸如下列项中的一个或多个:Advanced Micro Devices(AMD)/>体系结构,诸如(一个或多个)/>或/>处理器、加速处理单元(APU)、MxGPU、(一个或多个)/>处理器或诸如此类;来自/>公司的(一个或多个)A5-A12和/或S1-S4处理器、来自/>技术公司的(一个或多个)SnapdragonTM或CentriqTM处理器、(一个或多个)/>开放多媒体应用平台(Open Multimedia ApplicationsPlatform,OMAP)TM处理器;来自MIPS技术公司的基于MIPS的设计,诸如MIPS Warrior M-class、Warrior I-class和Warrior P-class处理器;从ARM控股有限公司许可的基于ARM的设计,诸如ARM Cortex-A、Cortex-R和Cortex-M系列的处理器;由CaviumTM公司提供的或诸如此类。在一些实现方式中,(一个或多个)处理器2252可以是片上系统(SoC)、系统级封装(SiP)、多芯片封装(MCP)和/或诸如此类的一部分,其中(一个或多个)处理器2252和其他部件形成到单个集成电路或单个封装(诸如来自/>公司的EdisonTM或GalileoTM SoC板)中。在本公开中的其他部分提及(一个或多个)处理器2252的其他示例。
节点2250可包括或者被耦合到加速电路模块2264,所述加速电路模块可由一个或多个AI/ML加速器、神经计算棒、神经形态HW、FPGA、GPU的布置、一个或多个SoC(包括可编程SoC)、一个或多个CPU、一个或多个数字信号处理器、专用ASIC(包括可编程ASIC)、诸如复杂(CPLD)或高复杂度PLD(HCPLD)之类的PLD和/或被设计成实现一个或多个专门任务的其他形式的专用处理器或电路模块来实施。这些任务可包括AI/ML处理(例如包括训练、推断和分类操作)、视觉数据处理、网络数据处理、对象检测、规则分析或诸如此类。在基于FPGA的实现方式中,加速电路模块2264可包括逻辑块或逻辑组构和其他互连的资源,它们可被编程(配置)为执行各个功能,诸如本文中论述的各个实施例的过程、方法、功能等。在这类实现方式中,加速电路模块2264还可包括用来在LUT和诸如此类中存储逻辑块、逻辑组构、数据等的存储器单元(例如EPROM、EEPROM、闪速存储器、静态存储器(例如SRAM、反熔丝等))。
在一些实现方式中,处理器电路模块2252和/或加速电路模块2264可包括为机器学习功能性专门定制的HW元件,诸如用于操作执行诸如本文中论述的那些操作之类的ANN操作。在这些实现方式中,处理器电路模块2252和/或加速电路模块2264可以是或者可包括AI引擎芯片,所述AI引擎芯片一旦加载有适当的加权和训练代码就能够运行许多不同种类的AI指令集。附加地或替代地,处理器电路模块2252和/或加速电路模块2264可以是或者可包括(一个或多个)AI加速器,所述AI加速器可以是被设计用于AI应用的HW加速的上述HW加速器中的一个或多个。作为示例,这(一个或多个)处理器或加速器可以是下列项的集群:人工智能(AI)GPU、由公司提供的张量处理单元(TPU)、由/>提供的RealAI Processors(RAPsTM)、由/>公司提供的NervanaTM神经网络处理器(NNP)、/>MovidiusTM MyriadTM X视觉处理单元(VPU)、基于/>PXTM的GPU、由General提供的NM500芯片、由/>公司提供的HW 3、由/>提供的基于EpiphanyTM的处理器或诸如此类。在一些实施例中,处理器电路模块2252和/或加速电路模块2264和/或HW加速器电路模块可被实现为(一个或多个)AI加速协处理器,诸如由提供的Hexagon 685 DSP、由Imagination Technologies/>提供的PowerVR2NX神经网加速器(NNA)、/>A11或A12 Bionic SoC内的神经引擎核心、由提供的HiSilicon Kirin 970内的神经处理单元(NPU)和/或诸如此类。在一些基于HW的实现方式中,节点2250的各个子系统可由配置有适当逻辑块、(一个或多个)比特流等以执行其相应功能的相应的(一个或多个)AI加速协处理器、AI GPU、TPU或HW加速器(例如FPGA、ASIC、DSP、SoC等)等来操作。
节点2250还包括系统存储器2254。任何数量的存储器装置可用来提供给定量的系统存储。作为示例,存储器2254可以是或者包括易失性存储器,诸如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、动态随机存取存储器和/或任何其他期望类型的易失性存储器装置。附加地或替代地,存储器2254可以是或者包括非易失性存储器,诸如只读存储器(ROM)、可擦可编程ROM(EPROM)、电可擦可编程(EEPROM)、闪速存储器、非易失性RAM、铁电RAM、相变存储器(PCM)、闪速存储器和/或任何其他期望类型的非易失性存储器装置。对存储器2254的存取由存储控制器控制。各个存储器装置可具有任何数量的不同封装类型,诸如单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装(Q17P)。可使用任何数量的其他存储器实现方式,诸如不同种类的双列直插存储器模块(DIMM),包括但不限于microDIMM或MiniDIMM。
存储电路模块2258提供诸如数据、应用、操作系统等等的信息的永久存储。在示例中,存储装置2258可经由固态盘驱动器(SSDD)和/或高速电可擦存储器(通常称作“闪速存储器”)来实现。可用于存储装置2258的其他装置包括诸如SD卡、microSD卡、XD图片卡和诸如此类的闪速存储卡以及USB闪存驱动器。在示例中,存储器装置可以是或者可包括一些存储器装置,所述存储器装置使用硫属化物玻璃、多阈值水平NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、反铁电存储器、结合忆阻器技术的磁阻随机存取存储器(MRAM)存储器、相变RAM(PRAM)、电阻存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))或者自旋转移矩(STT)-MRAM、基于自旋电子磁结存储器的装置、基于磁隧穿结(MTJ)的装置、基于畴壁(DW)和自旋轨道转移(SOT)的装置、基于晶闸管的存储器装置、硬盘驱动器(HDD)、微型HDD、它们的组合和/或任何其他存储器。存储器电路模块2254和/或存储电路模块2258还可并入来自和/>的三维(3D)交叉点(XPOINT)存储器。
存储器电路模块2254和/或存储电路模块2258配置成存储以SW、固件、微码或HW级指令的形式的计算逻辑2283,以实现本文中描述的技术。计算逻辑2283可用来存储编程指令或者用于创建所述编程指令的数据的工作副本和/或永久副本,以用于系统2200的各个部件(例如驱动器、资料库、应用编程接口(API)等)、系统2200的操作系统、一个或多个应用的操作,和/或用于执行本文中论述的实施例。计算逻辑2283可作为指令2282或者用于创建所述指令2282的数据被存储或加载到存储器电路模块2254中,它们然后被访问以用于由处理器电路模块2252执行,以执行本文中描述的功能。处理器电路模块2252和/或加速电路模块2264通过IX2256来访问存储器电路模块2254和/或存储电路模块2258。指令2282指导处理器电路模块2252执行例如如针对先前所示的操作和功能性的(一个或多个)流程图和(一个或多个)框图所述的动作的特定序列或流。各个元件可通过由处理器电路模块2252支持的汇编指令或者可被编译为指令2281的高级语言或者用于创建指令2281的数据以由处理器电路模块2252执行的高级语言来实现。编程指令的永久副本可在工厂中或者在现场通过例如分发介质(未示出)、通过通信接口(例如从分发服务器(未示出))、空中(OTA)或者它们的任何组合被放置到存储电路模块2258的永久存储装置中。
IX2256将处理器2252耦合到通信电路模块2266,以用于与诸如远程服务器(未示出)和诸如此类的其他装置的通信。通信电路模块2266是用来通过一个或多个网络2263和/或与其他装置进行通信的HW元件或者HW元件的集合。在一个示例中,通信电路模块2266是或者包括收发器电路模块,所述收发器电路模块配置成能够使用任何数量的频率和协议来实现无线通信,诸如,例如电气和电子工程师协会(IEEE)802.11(和/或其变体)、IEEE802.15.4、和/或/>低能量(BLE)、/>LoRaWANTM(长程广域网)、诸如3GPPLTE和/或第五代(5G)/新空口(NR)之类的蜂窝协议和/或诸如此类。附加地或替代地,通信电路模块2266是或者包括一个或多个网络接口控制器(NIC),以能够使用例如以太网连接、控制器区域网络(CAN)、本地互连网络(LIN)、DeviceNet、ControlNet、DataHighway+、或PROFINET等等来实现有线通信。在一些实施例中,根据各个实施例,通信电路模块2266可包括或者以其他方式耦合于加速器2224,所述加速器包括一个或多个突触装置/结构2225等,如先前所述。
IX2256还将处理器2252耦合到接口电路模块2270,所述接口电路模块用来将节点2250与一个或多个外部装置2272耦合。外部装置2272可包括例如传感器、致动器、定位电路模块(例如全球导航卫星系统(GNSS)/全球定位系统(GPS)电路模块)、客户端装置、服务器、网络元件和/或网络设施(例如交换机、中枢、路由器等)、(一个或多个)HW加速器2200、集成光子装置(例如光学神经网络(ONN)集成电路(IC)和/或诸如此类)和/或其他相似装置。
传感器包括装置、模块或子系统,其目的是检测其环境中的事件或变化,并且向某个其他装置、模块、子系统等发送与所检测的事件有关的信息(传感器数据)。这类传感器的示例尤其是包括:惯性测量单元(IMU),其包括加速器、陀螺仪和/或磁力计;微机电系统(MEMS)或纳米机电系统(NEMS),其包括3轴加速计、3轴陀螺仪和/或磁力计;水平传感器;流量传感器;温度传感器(例如热敏电阻,包括用于测量内部部件的温度的传感器以及用于测量计算节点2250外部的温度的传感器);压力传感器;大气压传感器;重力计;高度计;图像捕获装置(例如摄像机);光检测和测距(LiDAR)传感器;接近传感器(例如红外辐射检测器和诸如此类);深度传感器、环境光传感器;光学光传感器;超声收发器;话筒;和诸如此类。
致动器允许计算节点2250改变其状态、位置和/或取向,或者移动或控制机构或系统。致动器包括用于移动或控制机构或系统的电气和/或机械装置,并且将能量(例如电流或者移动的空气和/或液体)转换为某种运动。致动器可包括一个或多个电子(或电化学)装置,诸如压电生物形态、固态致动器、固态继电器(SSR)、基于形状记忆合金的致动器、基于电活性聚合物的致动器、继电器驱动器集成电路(IC)和/或诸如此类。致动器可包括一个或多个机电装置,诸如气动致动器、液压致动器、包括机电继电器(EMR)的机电开关、电动机(例如DC电动机、步进电动机、伺服机构等)、电力开关、阀致动器、轮子、推进器、螺旋桨、钩爪、夹具、钩子、可听声音生成器、视觉警告装置和/或其他相似机电部件。计算节点2250可配置成基于从服务提供商和/或各个客户端系统所接收的指令或控制信号和/或一个或多个所捕获事件来操作一个或多个致动器。
在一些可选示例中,各个输入/输出(I/O)装置可存在于节点2250内或者连接到节点2250,它们在图22中称作输入电路模块2286和输出电路模块2284。输入电路模块2286和输出电路模块2284包括:一个或多个用户接口,被设计成能够与平台2250实现用户交互;和/或外设部件接口,被设计成能够与平台2250实现外设部件交互。输入电路模块2286可包括用于接受输入的任何物理或虚拟部件,其尤其是包括一个或多个物理或虚拟按钮(例如重置按钮)、物理键盘、小键盘、鼠标、触摸板、触摸屏、话筒、扫描仪、耳机和/或诸如此类。输出电路模块2284可被包括,以显示信息或者以其他方式传递信息,诸如传感器读数、(一个或多个)致动器位置或者其他相似信息。可在输出电路模块2284的一个或多个用户接口部件上显示数据和/或图形。输出电路模块2284可包括音频或视觉显示器的任何数量和/或组合,其尤其是包括一个或多个简单视觉输出/指示器(例如二进制状态指示器(例如发光二极管(LED))和多字符视觉输出或者更复杂的输出,诸如显示装置或触摸屏(例如液晶显示器(LCD)、LED显示器、量子点显示器、投影仪等),其中从平台2250的操作中生成或产生字符、图形、多媒体对象和诸如此类。输出电路模块2284还可包括扬声器和/或其他音频发射装置、(一个或多个)打印机和/或诸如此类。附加地或替代地,(一个或多个)传感器可用作输入电路模块2284(例如图像捕获装置、运动捕获装置或诸如此类),以及一个或多个致动器可用作输出装置电路模块2284(例如用于提供触觉反馈的致动器或诸如此类)。外设部件接口可包括但不限于非易失性存储器端口、USB端口、音频插孔、电力供应接口等。在本系统的上下文中的显示器或控制台HW可用来:提供输出并且接收边缘计算系统的输入;管理边缘计算系统的部件或服务;识别边缘计算部件或服务的状态;或者进行任何其他数量的管理或管控(administration)功能或服务用例。
节点2250的部件可通过互连(IX)2256进行通信。IX2256可包括任何数量的技术,包括工业标准体系结构(ISA)和/或扩展ISA(EISA)、FASTBUS、低引脚数(LPC)总线、集成电路间(I2C)、串行外设接口(SPI)、电源管理总线(PMBus)、外设部件IX(PCI)、PCI快速(PCIe)、PCI扩展(PCIx)、QuickPathIX(QPI)、/>UltraPath IX(UPI)、/>加速器链路、快速计算链路(CXL)、一致加速器处理器接口(CAPI)和/或OpenCAPI、/>Omni-Path体系结构(OPA)、RapidIOTM、加速器的缓存一致互连(CCIX)、Gen-Z联盟、HyperTransport和/或Lightning数据传输(LDT)、由/>所提供的NVLink、InfiniBand(IB)、时间触发协议(TTP)、FlexRay、PROFIBUS、以太网、通用串行总线(USB)、点对点接口和/或任何数量的其他IX技术。IX2256可以是例如在基于SoC的系统中使用的专有总线。
计算节点2250的元件的数量、能力和/或容量可改变,这取决于计算节点2250是用作固定计算装置(例如数据中心中的服务器计算机、工作站、台式计算机等)还是移动计算装置(例如智能电话、平板计算装置、膝上型计算机、游戏控制台、IoT装置等)。在各个实现方式中,计算节点2250可包括数据中心的一个或多个部件,诸如一个或多个服务器和/或交换机(或交换组构)、台式计算机、工作站、膝上型计算机、智能电话、平板、数字摄像机、智能设施、智能家用中枢、网络设施、无人机或机器人、自主交通工具和/或处理数据的任何其他装置/系统。
在一个示例实现方式中,计算节点2250可以是设施计算装置或者可以是设施计算装置的部分,所述设施计算装置是包括壳体、底盘、箱体或外壳的独立电子装置。在一些情况下,壳体可被确定尺寸为用于便携,使得它能够由人类携带和/或被装运。附加地或替代地,壳体可以是适合于在交通工具中或者在户外位置(例如电线杆、建筑物的侧面、树或岩石上和/或诸如此类)的安装的较小模块。示例壳体可包括形成一个或多个外部表面的材料,所述外部表面部分或完全保护设施的内容,其中保护可包括气候保护、危险环境保护(例如EMI、振动、极端温度)和/或启用潜水功能(submergibility)。示例壳体可包括用于为固定的和/或便携的实现方式提供电力的电力电路模块,诸如AC电力输入、DC电力输入、(一个或多个)AC/DC或DC/AC转换器、电力调节器、变压器、充电电路模块、电池、有线输入和/或无线电力输入。较小的模块化实现方式还可包括用于无线通信的可扩展或嵌入式天线布置。示例壳体和/或其表面可包括或者连接到安装HW,以能够实现到诸如建筑物、电信结构(例如杆、天线结构等)和/或机架(例如服务器机架、刀片支架等)之类的结构的附连。示例壳体和/或其表面可支承一个或多个传感器(例如温度传感器、振动传感器、光传感器、声传感器、电容传感器、接近传感器等)。一个或多个这类传感器可被包含在或者以其他方式被嵌入表面中、由表面携带,和/或被安装到设施的表面。示例壳体和/或其表面可支持机械连通性,诸如推进HW(例如轮子、螺旋桨等)和/或铰接HW(例如机器人手臂、可枢轴转动附件等)。在一些情况下,传感器可包括任何类型的输入装置,诸如用户接口HW(例如按钮、开关、转盘、滑块等)。在一些情况下,示例壳体包括输出装置,所述输出装置被包含在其中、嵌入其中、由其携带和/或与其附连。输出装置可包括显示器、触摸屏、灯、LED、扬声器、I/O端口(例如USB、Lightning、以太网等)等。在一些情况下,计算节点2250可在网络中被部署用于特定目的(例如交通灯、路侧单元、监控摄像机、IoT装置和/或自主传感器等),但是可具有可用于其他目的的处理和/或其他容量。这类计算节点2250可独立于其他联网装置,并且可设置有壳体,所述壳体具有适合于其主要目的的形状因子;仍然可用于不干扰其主要任务的其他计算任务。计算节点2250可包括HW和SW部件,以管理本地问题,诸如装置温度、振动、资源利用、更新、电力问题、物理和网络安全性等。用于管理本地问题的这些HW和SW部件可用来按照本文中论述的各个实施例来适配由计算节点2250操作的ML模型。
在另一示例实现方式中,计算节点2250可以是或者可被包括在一个或多个服务器中。这类服务器可包括操作系统,并且实现虚拟计算环境。虚拟计算环境可包括管理(例如产生(spawn)、部署、破坏等)一个或多个虚拟机、一个或多个容器等的管理程序。这类虚拟计算环境提供执行环境,其中一个或多个应用和/或其他SW、代码或脚本可执行,同时与一个或多个其他应用、SW、代码或脚本隔离。
图23和图24图示按照各个实施例的示例空间阵列体系结构2300和2400。空间阵列体系结构2300和2400(统称为“体系结构2300”或诸如此类)可在图22b的加速电路模块2264和/或图22a的(一个或多个)加速器2224中被实现或者由其实现。体系结构2300可对应于或者包括PE阵列100。如通过图23和图24所图示,体系结构2300包括PE 2330的空间阵列2310(又称作“PE阵列2310”或诸如此类)和存储器层次体系2332。PE 2330可与图1的PE 130相同或相似。
存储器层次体系2332可以是本地存储器2332。存储器层次体系2332可包括RF(例如图2的RF 208)和/或一个或多个存储器组(或存储器缓冲器)。每个PE 2330的RF可被拆分为多个RF实例。一个或多个存储器组可包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)组和/或某个(一些)其他适合的存储器装置。对于预测/推断任务,权重或过滤器可被预先训练并且是层特定的,以及从存储器2332(例如DRAM和/或SRAM组)加载到PE阵列2310。也使称作输入激活或特征图的输入数据进入(一个或多个)PE阵列2310。在PE 2330内部,乘和累加(MAC)运算通过多个输入通道(IC)在相应MAC运算符中被执行,以生成输出激活(Oc)。权重张量的多个集合可针对激活的给定集合被使用,以产生输出张量体积。非线性函数可被应用于输出激活,所述输出激活进而成为下一层的输入激活。在一些实现方式中,可存在彼此上下堆叠的多个PE阵列2310,从而创建三维PE阵列2310(或者PE 2330的多层阵列)。
作为示例,非线性函数可以是经矫正线性单元(“ReLU”或“矫正器”)或参数ReLU(“PreLU”)。ReLU是激活函数,所述激活函数计算函数f(x)=max(0,x),其中ReLU的激活当x<0时为零并且当x>0时是线性的,具有斜率1(例如激活的阈值为零)。PReLU是激活函数,所述激活函数计算函数其中yi是第i通道上的非线性激活函数f的输入,以及ai是控制负斜率的系数(“泄漏参数”),使得当ai=0时,PReLU成为ReLU,以及当ai是较小的数(例如ai=0.01)时,PReLU成为泄漏ReLU。以这种方式,PReLU使泄漏的系数成为连同其他神经网络参数一起被学习的参数。换言之,PReLU学习泄漏参数a,以便发现负输入的适当正斜率,这防止负神经元因阻断后向传播误差信号的零导数而死亡(即,始终等于零的神经元)。
现在参照图24,多级存储层次体系2332与主机处理器2405通信地耦合,所述主机处理器可以与图22的处理器电路模块2252相同或相似。多级存储层次体系2332可包括片外存储器2432(例如DRAM)、(片上)全局缓冲器2433、片上网络(NoC)(图23b未示出)和/或相应PE 2330中的寄存器堆(RF)2408(例如所述RF可与图2的RF 208相同或相似)。片外存储器2432、全局缓冲器2433以及阵列2310中的PE 2330能够经由先进先出(FIFO)缓冲器(包括输入FIFO(iFIFO)和输出FIFO(oFIFO))直接相互通信。存储层次体系2332能够用来利用四级设置中的数据重复使用(以能量成本降序):存储器2432、全局缓冲器2433、用于PE 2330间通信的NoC以及作为本地高速暂存器(local scratchpad)的PE 2330中的RF。在一些实现方式中,全局缓冲器2433被实现为片上SRAM组的集合。附加地或替代地,能够采用列缓冲器集合来替代全局缓冲器2433和/或全局缓冲器2433被布置为列缓冲器集合,所述列缓冲器中的每个与PE阵列2310中的PE 2330的对应列关联。列缓冲器可包括相应输出数据处理器,所述输出数据处理器能够对正在从PE 2330输出的数据执行截取和/或ReLU操作以用于存储在存储器2332中。PE阵列2310为高吞吐量提供高并行性。在每个PE 2330内,PE FIFO(pFIFO)控制进和出算术逻辑单元(ALU)(包括来自RF和/或其他存储级)的业务(traffic)。
在这个体系结构中,所有数据类型可在存储层次体系2332的任何级被存储和存取。MAC操作的输入数据(例如过滤器权重和IFMap)能够从最昂贵级(例如DRAM)移动到更低成本级。最终,它们通常从最便宜级(例如RF 208)传递到ALU以用于计算。来自ALU的结果(例如pSum)一般在相反方向上移动。这个移动的编排通过在特定数据流体系结构的映射规则约束下特定DNN形状和大小的映射来确定。
PE阵列2310能够基于多个描述符被配置,以基于与多个张量处理模板中的一个张量处理模板对应的数据流调度(又称作“层执行调度”)来实现ML模型的层(例如DNN和/或诸如此类)。PE 2330基于所配置的张量处理模板对与ML模型的层关联的输入激活数据和过滤器数据进行操作,以产生与ML模型的所述层关联的输出激活数据。在实施例中,编译器可将ML模型的层的描述转换为与可能的张量处理模板的集合中的所选张量处理模板对应的数据流调度。可能的张量处理模板提供用于分解要由可配置PE阵列2310执行以实现给定的DNN层的总体张量操作的不同方式,使得总体张量操作能够通过可配置PE阵列2310中所包括的PE 2330的组合来实现。要由可配置PE阵列2310执行以实现给定的DNN层的总体张量操作的示例通过图25图示。图25的示例还引入要贯穿本公开使用的标注。
图25示出示例张量操作2500对应于如下DNN层,其中输入数据2505(又称作输入激活数据2505或输入激活2505)的集合要采用过滤器内核(filterkernel)2510(又称作过滤器权重2510或权重2510)的集合来处理,以产生输出数据2515(又称作输出激活数据2515或输出激活2515)的集合。输入激活2505以阵列排列,其具有x维中的Ix个元素、y维中的Iy个元素以及输入激活数据的Ic个通道。维Ix、Iy和Ic可以是相同或不同的,并且可以是任何(一个或多个)值。
具有维Ix×Iy×Ic的输入激活数据2505由过滤器2510的集合处理。过滤器2510以阵列排列,具有x维中的Fx个元素(例如权重)、y维中的Fy个元素(例如权重)以及通道维中的Ic个元素,后者与输入激活数据的通道Ic的数量相同。例如,Fx和Fy维各自可对应于3和3,使得采用每个输入激活数据元素及其相邻邻居对3×3过滤器2510进行处理(例如卷积)。过滤器2510在其他示例中对于Fx和Fy维可具有其他值,以及Fx和Fy维相互可以是相同或不同的。
图25的示例张量操作2500涉及采用输入激活数据2505来卷积过滤器2510中的每个,并且对通道维(Ic)合计(累加)所产生的数据,以产生输出激活数据2515。例如,过滤器中的给定过滤器2510a采用以给定的输入激活数据元素2525为中心的输入激活数据2505的给定部分2520来卷积。通道维中的每个通道维的结果被合计(例如对应于对Ic维的累加),以在与输入激活数据元素2525的阵列位置对应的阵列位置产生输出激活数据元素2530,如所示。采用输入激活数据2505对过滤器2510中的每一个过滤器的卷积产生输出激活数据2515,所述输出激活数据以阵列排列,其具有x维中的Ox个元素、y维中的Oy个元素以及输出激活数据的Oc个不同通道。Ox和Oy维可具有相同值或不同值,并且与Ix和Iy维可以是相同或不同的。Oc维可对应于采用输入激活数据2505所卷积的不同过滤器2510的数量。
本公开中使用的其他术语如下:“On”指代批大小(例如要被并行处理以使DNN处理图像的图像数量)。术语“IF”指代输入激活数据,术语“FL”指代过滤器数据(例如权重),以及术语“OF”指代输出激活数据。此外,术语“Psum”或“pSum”指代DNN操作(例如卷积操作)中的部分结果。
4.示例实现方式
图26示出用于操作HW加速器2224的灵活加法器树的示例过程2600。硬件加速器2224包括PE 130的空间阵列100以及布置到加法器树500/820中并且连接到空间阵列100中的各个PE 130的pSAE 430的集合。过程2600开始于操作2605,其中计算节点(或HW加速器2224)在处理ML模型的单独层(例如DNN的层或诸如此类)之前动态地重新配置加法器树500的深度。在操作2610,计算节点(或HW加速器2224)操作日志解析模块,以使空间阵列100中的一个或多个PE 130向pSAE430的集合中的已连接pSAE输出相应pSum,一直到加法器树500/820的重新配置的深度。在操作2615,计算节点(或HW加速器2224)操作日志解析模块,以使已连接pSAE430累加相应pSum,以及在操作2620,计算节点(或HW加速器2224)操作日志解析模块,以使已连接pSAE 430向一个或多个输出缓冲器输出所累加pSum。在操作2620之后,过程2600可结束或者根据需要重复进行。
当前描述的实施例的附加示例包括以下非限制性示例实现方式。以下非限制性示例中的每个可独立存在,或者可以以任何置换或组合与以下或者贯穿本公开所提供的其他示例中的任何一个或多个相组合。
示例A01包括用于处理机器学习(ML)模型的加速器电路模块,所述加速器电路模块包括:处理元件(PE)的空间阵列,其中所述空间阵列中的各个PE配置成累加来自所述空间阵列中的至少一个相邻PE的信号;部分和累加元件(pSAE)的集合,其中所述pSAE的集合中的各个pSAE连接到所述空间阵列中的一个或多个PE,并且所述各个pSAE配置成基于由所述各个pSAE所连接的一个或多个PE提供的所累加信号来生成相应输出信号;以及寄存器的集合,其中所述寄存器的集合中的各个寄存器连接到所述pSAE的集合中的一个或多个pSAE,并且所述各个寄存器配置成存储由所述各个寄存器所连接的一个或多个pSAE提供的相应输出信号,并且其中来自所述寄存器的集合之中的寄存器的子集要用作要从其中提取输出点的分接点,并且属于所述寄存器的子集的寄存器按照通过数据流调度所指示的输入通道内分区(ICIP)因子被动态重新配置。
示例A02包括示例A01和/或本文中的某个(一些)其他示例的加速器电路模块,进一步包括:与PE的空间阵列通信地耦合的编译器,其中所述编译器配置成生成数据流调度。
示例A03包括示例A02和/或本文中的某个(一些)其他示例的加速器电路模块,其中,数据流调度指示寄存器的子集中的、要从其中提取输出点的各个寄存器。
示例A04包括示例A01-A03和/或本文中的某个(一些)其他示例的加速器电路模块,其中,ICIP因子是空间阵列中的、要被用于对输入通道的集合进行分区的PE的数量。
示例A05包括示例A04和/或本文中的某个(一些)其他示例的加速器电路模块,其中:当ICIP因子为一时,数据流调度指示以循环方式从空间阵列中的每个PE提取输出点;当ICIP因子为二时,数据流调度指示从空间阵列中的每隔一个PE提取输出点,或者指示寄存器的子集包括寄存器的集合的全部;当ICIP因子为四时,数据流调度指示从空间阵列中的每个第四PE提取输出点,或者指示寄存器的子集包括寄存器的集合的一半;当ICIP因子为八时,数据流调度指示从空间阵列中的每个第八PE提取输出点,或者指示寄存器的子集包括寄存器的集合的四分之一;以及当ICIP因子为十六时,数据流调度指示从空间阵列中的每个第十六PE提取输出点,或者指示寄存器的子集包括寄存器的集合的八分之一。
示例A06包括示例A03-A05和/或本文中的某个(一些)其他示例的加速器电路模块,其中,空间阵列中的每个PE包括用于存储相应描述符的配置寄存器的对应集合,所述相应描述符用于将空间阵列中的PE配置成基于数据流调度向其所连接pSAE输出累加部分和(pSum)。
示例A07包括示例A03-A06和/或本文中的某个(一些)其他示例的加速器电路模块,其中,数据流调度包括日志解析有限状态机(FSM),并且其中所述日志解析FSM包括用于从寄存器的子集提取输出点的多个嵌套条件。
示例A08包括示例A07和/或本文中的某个(一些)其他示例的加速器电路模块,其中,日志解析FSM的执行用于使空间阵列中的PE中的所选PE基于数据流调度向其所连接pSAE输出相应累加部分和(pSum)。
示例A09包括示例A08和/或本文中的某个(一些)其他示例的加速器电路模块,进一步包括:后处理引擎,配置成对从寄存器的子集提取的值执行一个或多个后处理操作。
示例A10包括示例A01-A09和/或本文中的某个(一些)其他示例的加速器电路模块,其中,PE的阵列中的每个PE包括乘和累加器(MAC)的对应集合以及寄存器堆(RF)的对应集合,其中所述RF的对应集合中的每个RF包括相应的输入特征图(IF)和相应的过滤器(FL),其中所述相应的IF和所述相应的FL要被馈送到MAC的对应集合中的对应MAC,以及对应MAC基于所述IF和所述FL来生成相应的输出特征图(OF)。
示例A11包括示例A01-A10和/或本文中的某个(一些)其他示例的加速器电路模块,进一步包括配置成存储所提取的输出点的输出缓冲器的集合。
示例A12包括示例A01-A11和/或本文中的某个(一些)其他示例的加速器电路模块,进一步包括:存储器电路模块以及被耦合到所述存储器电路模块的处理器电路模块,其中所述处理器电路模块包括PE的空间阵列。
示例A13包括示例A12和/或本文中的某个(一些)其他示例的加速器电路模块,其中,ICIP因子通过数据流调度来指示。
示例A14包括示例A13和/或本文中的某个(一些)其他示例的加速器电路模块,其中,数据流调度指示空间阵列中的、要从其中提取相应pSum的各个PE以及要从其中提取所累加pSum的各个pSAE。
示例A15包括示例A13-A14的加速器电路模块,其中:当ICIP因子为一时,数据流调度指示以循环方式从空间阵列中的每个PE提取pSum;当ICIP因子为二时,数据流调度指示从空间阵列中的每隔一个PE提取pSum;当ICIP因子为四时,数据流调度指示从空间阵列中的每个第四PE提取输出点;当ICIP因子为八时,数据流调度指示从空间阵列中的每个第八PE提取输出点;以及当ICIP因子为十六时,数据流调度指示从空间阵列中的每个第十六PE提取输出点。
示例B01包括一种操作硬件加速器的灵活加法器树的方法,其中,所述硬件加速器包括处理元件(PE)的空间阵列以及被布置到加法器树中并且连接到所述空间阵列中的各个PE的部分和累加元件(pSAE)的集合,并且其中所述方法包括:在处理机器学习(ML)模型的单独层之前动态地重新配置所述加法器树的深度;由日志解析模块使所述空间阵列中的一个或多个PE向所述pSAE的集合中的已连接pSAE输出相应部分和(pSum),一直到所述加法器树的重新配置的深度;由日志解析模块使已连接pSAE累加相应pSum;以及由日志解析模块使已连接pSAE向一个或多个输出缓冲器输出所累加pSum。
示例B02包括示例B01和/或本文中的某个(一些)其他示例的方法,进一步包括:按照通过数据流调度所指示的输入通道内分区(ICIP)因子动态地重新配置加法器树的深度。
示例B03包括示例B02和/或本文中的某个(一些)其他示例的方法,其中,ICIP因子是空间阵列中的、要在其之中对输入通道的集合进行分区的PE的数量。
示例B04包括示例B02-B03和/或本文中的某个(一些)其他示例的方法,进一步包括:操作编译器以生成数据流调度。
示例B05包括示例B01-B04和/或本文中的某个(一些)其他示例的方法,进一步包括:生成一个或多个控制信号,使一个或多个PE输出其相应pSum。
示例B06包括示例B05和/或本文中的某个(一些)其他示例的方法,其中,空间阵列中的每个PE包括用于存储相应描述符的配置寄存器的对应集合,所述相应描述符用于将空间阵列中的PE配置成基于数据流调度向其所连接pSAE输出相应pSum。
示例B07包括示例B01-B06和/或本文中的某个(一些)其他示例的方法,其中,日志解析模块包括有限状态机(FSM),并且所述FSM包括用于从一个或多个PE提取相应pSum的多个嵌套条件。
示例B08包括示例B01-B07和/或本文中的某个(一些)其他示例的方法,其中,日志解析模块包括有限状态机(FSM),并且所述FSM包括用于从已连接pSAE提取所累加pSum的多个嵌套条件。
示例B09包括示例B01-B08和/或本文中的某个(一些)其他示例的方法,其中,指令的执行用于进一步使一个或多个处理器:对所累加pSum执行一个或多个后处理操作。
示例B10包括示例B01-B09和/或本文中的某个(一些)示例的方法,其中,硬件加速器进一步包括灵活加法器树电路模块,所述灵活加法器树电路模块包括被布置到加法器树体系结构中的pSAE的集合,其中所述灵活加法器树电路模块配置成基于通过数据流调度所指示的ICIP因子动态地重新配置加法器树体系结构的深度。
示例B11包括示例B10和/或本文中的某个(一些)其他示例的方法,其中,数据流调度指示空间阵列中的、要从其中提取相应pSum的各个PE以及要从其中提取所累加pSum的各个pSAE。
示例B12包括示例B11和/或本文中的某个(一些)其他示例的方法,其中:当ICIP因子为一时,数据流调度指示以循环方式从空间阵列中的每个PE提取pSum;当ICIP因子为二时,数据流调度指示从空间阵列中的每隔一个PE提取pSum;当ICIP因子为四时,数据流调度指示从空间阵列中的每个第四PE提取输出点;当ICIP因子为八时,数据流调度指示从空间阵列中的每个第八PE提取输出点;以及当ICIP因子为十六时,数据流调度指示从空间阵列中的每个第十六PE提取输出点。
示例C01包括用于机器学习的加速器电路模块,所述加速器电路模块包括:存储器电路模块;以及处理器电路模块,耦合到所述存储器电路模块,其中所述处理器电路模块包括处理元件(PE)的空间阵列,其中所述空间阵列中的各个PE配置成基于从所述空间阵列中的一个或多个其他PE所获得的信号来生成部分和(pSum);以及灵活加法器树电路模块,通信地耦合到所述处理器电路模块,所述灵活加法器树电路模块包括被布置到加法器树体系结构中的部分和累加元件(pSAE)的集合,其中所述pSAE的集合中的各个pSAE配置成累加来自它们所连接的、所述空间阵列中的一个或多个PE的pSum,并且其中所述灵活加法器树电路模块配置成基于配置的输入通道内分区(ICIP)因子动态地重新配置所述加法器树体系结构的深度,所述ICIP因子是要在其之中对输入通道的集合进行分区的PE的数量。
示例C02包括示例C01和/或本文中的某个(一些)其他示例的加速器电路模块,其中,ICIP因子通过由编译器生成的数据流调度来指示。
示例C03包括示例C02和/或本文中的某个(一些)其他示例的加速器电路模块,其中,数据流调度指示空间阵列中的、要从其中提取相应pSum的各个PE以及要从其中提取所累加pSum的各个pSAE。
示例C04包括示例C02和/或本文中的某个(一些)其他示例的加速器电路模块,其中:当ICIP因子为一时,数据流调度指示以循环方式从空间阵列中的每个PE提取pSum;当ICIP因子为二时,数据流调度指示从空间阵列中的每隔一个PE提取pSum;当ICIP因子为四时,数据流调度指示从空间阵列中的每个第四PE提取输出点;当ICIP因子为八时,数据流调度指示从空间阵列中的每个第八PE提取输出点;以及当ICIP因子为十六时,数据流调度指示从空间阵列中的每个第十六PE提取输出点。
示例C05包括示例C01-C04和/或本文中的某个(一些)其他示例的加速器电路模块,其中,灵活加法器树电路模块进一步包括:寄存器的集合,其中所述寄存器的集合中的各个寄存器连接到pSAE的集合中的一个或多个pSAE,并且所述各个寄存器配置成存储由所述各个寄存器所连接的所述一个或多个pSAE提供的相应所累加pSum,并且其中来自所述寄存器的集合之中的寄存器的子集要用作要从其中提取输出点的分接点,以及属于所述寄存器的子集的寄存器按照通过数据流调度所指示的ICIP因子被动态地重新配置。
示例X01包括示例A01-A15、B01-B12、C01-C05和/或本文中的某个(一些)其他示例的系统,其中,所述系统是中央处理单元(CPU)、图形处理单元(GPU)、视觉处理单元(VPU)、张量处理单元(TPU)、神经计算引擎(NCE)、神经网络处理器(NNP)、视觉处理单元(VPU)或硬件加速器。
示例Z01包括一个或多个计算机可读介质,其包含指令,其中,由处理器电路模块对所述指令的执行用于使所述处理器电路模块执行示例A01-A15、B01-B12、C01-C05和/或本文中的某个(一些)其他示例中的任何示例的方法。
示例Z02包括一种计算机程序,其包括示例Z01和/或本文中的某个(一些)其他示例的指令。示例Z03a包括一种定义示例Z02的计算机程序的功能、方法、变量、数据结构和/或协议的应用编程接口。示例Z03b包括一种定义功能、方法、变量、数据结构、协议等的API或规范,所述功能、方法、变量、数据结构、协议等定义或涉及示例A01-A15、B01-B12、C01-C05或者其部分中的任何示例的使用或者以其他方式与A01-A15、B01-B12、C01-C05和/或其部分中的任何示例相关。示例Z04包括一种设备,其包括加载有示例Z01和/或本文中的某个(一些)其他示例的指令的电路模块。示例Z05包括一种设备,其包括可操作以运行示例Z01和/或本文中的某个(一些)其他示例的指令的电路模块。示例Z06包括一种集成电路,其包括下列项中的一个或多个:示例Z01的处理器电路模块;以及示例Z01和/或本文中的某个(一些)其他示例的一个或多个计算机可读介质。示例Z07包括一种计算系统,其包括示例Z01和/或本文中的某个(一些)其他示例的一个或多个计算机可读介质和处理器电路模块。示例Z08包括一种设备,包括用于执行示例Z01和/或本文中的某个(一些)其他示例的指令的部件。示例Z09包括一种信号,其作为执行示例Z01和/或本文中的某个(一些)其他示例的指令的结果而被生成。示例Z10包括一种数据单元,作为执行示例Z01和/或本文中的某个(一些)其他示例的指令的结果而被生成。示例Z11包括示例Z10和/或本文中的某个(一些)其他示例的数据单元,其中,数据单元是数据报、网络分组、数据帧、数据段、协议数据单元(PDU)、服务数据单元(SDU)、消息或数据库对象。示例Z12包括一种信号,其编码有示例Z10和/或Z11和/或本文中的某个(一些)其他示例的数据单元。示例Z13包括一种电磁信号,其携带示例Z01和/或本文中的某个(一些)其他示例的指令。示例Z14包括示例Z01-Z13和/或本文中的一个或多个其他示例中的任何示例,其中,计算系统和/或处理器电路模块包括系统级封装(SiP)、多芯片封装(MCP)、片上系统(SoC)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑装置(PLD)、中央处理单元(CPU)、图形处理单元(GPU)中的一个或多个,或者计算系统和/或处理器电路模块包括彼此互连的SiP、MCP、SoC、DSP、FPGA、ASIC、PLD、CPU、GPU中的两个或更多。示例Z15包括一种设备,其包括用于执行示例A01-A15、B01-B12、C01-C05和/或本文中的某个(一些)其他示例中的任何一个示例的方法的部件。
以上所述示例中的任何示例可与任何其他示例(或者示例的组合)相组合,除非另加明确陈述。前面的技术的实现方式可通过硬件和软件的任何数量的规范、配置或示例部署被实现。应当理解,本说明书中描述的功能单元或能力可称作或者被标记为部件或模块,以便更特别强调它们的实现方式独立性。这类部件可通过任何数量的软件或硬件形式被实施。例如,部件或模块可被实现为硬件电路,所述硬件电路包括:定制超大规模集成(VLSI)电路或门阵列;诸如逻辑芯片、晶体管之类的现货半导体;或者其他分立部件。部件或模块也可在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑装置或诸如此类的可编程硬件装置中被实现。部件或模块也可在供各种类型的处理器执行的软件中被实现。可执行代码的识别的部件或模块例如可包括计算机指令的一个或多个物理或逻辑块,其例如可被组织为对象、过程或功能。然而,识别的部件或模块的可执行文件(executable)无需在物理上定位在一起,而是可包括不同位置中存储的不同指令,所述指令当在逻辑上接合在一起时包括所述部件或模块并且实现所述部件或模块的所述目的。
实际上,可执行代码的部件或模块可以是单个指令或者许多指令,并且甚至可被分布于若干不同的代码段、被分布在不同程序以及被分布于若干存储器装置或处理系统。特别是,所述过程的一些方面(诸如代码重写和代码分析)可在与其中部署代码的系统(例如在传感器或机器人中嵌入的计算机中)不同的处理系统上(例如在数据中心中的计算机中)进行。相似地,操作数据在本文中可在部件或模块内被识别和图示,并且可以以任何适当形式被实施并且被组织在任何适合类型的数据结构内。操作数据可作为单个数据集被收集,或者可被分布于不同位置(包括分布于不同存储装置),并且可至少部分只作为电子信号存在于系统或网络上。部件或模块可以是无源或有源的,包括可操作以执行期望功能的代理。
5.术语
在前面的详细描述中,参照形成其一部分的所附附图,其中相似标号通篇指定相似部分,并且其中作为图示示出可被实施的实施例。要理解,可利用其他实施例,并且在没有背离本公开的范围的情况下可进行结构或逻辑改变。因此,本具体实施方式不是要以限制性的意义来理解,以及实施例的范围通过所附权利要求及其等效方案来限定。
各个操作可以以最有助于理解所要求保护的主题的方式依次描述为多个分立动作或操作。然而,描述的顺序不应当被理解为暗示这些操作一定是顺序相关的。特别是,这些操作可以不以呈现的顺序来执行。所述的操作可以以与所述的实施例不同的顺序来执行。可执行各个附加操作,和/或在附加实施例中可省略所述操作。
本描述可使用各自可指代相同或不同实施例中的一个或多个实施例的短语“在一实施例中”或“在实施例中”。此外,如针对本公开的实施例所使用的术语“包含”、“包括”(comprising、including)、“具有”和诸如此类是同义的。在本公开叙述“一”或“第一”元件或者其等效体的情况下,这类公开包括一个或多个这类元件,既不要求也不排除两个或更多这类元件。进一步,用于所识别元件的顺序指示符(例如第一、第二或第三)用来区分元件,而不是指示或暗示所要求或有限数量的这类元件,它们也不是指示这类元件的特定位置或顺序,除非另加具体陈述。
如本文中所使用,单数形式“一”(a、an)和“所述”旨在也包括复数形式,除非上下文另加明确指示。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”(comprises、comprising)指定存在所述特征、整数、步骤、操作、元件和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、部件和/或上述各项的组。短语“A和/或B”表示(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。本描述可使用各自可指代相同或不同实施例中的一个或多个实施例的短语“在一实施例中”或“在一些实施例中”。此外,如针对本公开的实施例所使用的术语“包含”、“包括”(comprising、including)、“具有”和诸如此类是同义的。
本文中使用术语“耦合”、“通信地耦合”连同其派生。术语“耦合”可表示两个或更多元件相互直接物理或电接触,可表示两个或更多元件相互间接接触但仍然相互协作或交互,和/或可表示一个或多个其他元件耦合或者连接在被说成是相互耦合的元件之间。术语“直接耦合”可表示两个或更多元件相互直接接触。术语“通信地耦合”可表示两个或更多元件可借助于通信(包括通过有线或其他互连连接、通过无线通信信道或链路和/或诸如此类)相互接触。
至少在一些实施例中,术语“建立”(establish、establishment)指代(部分或完全)与主动或被动(例如暴露装置识别码或实体识别码)使某物存在或者准备使某物存在相关的动作、任务、操作等。附加地或替代地,至少在一些实施例中,术语“建立”指代(部分或完全)与发起、开始或预热通信或者发起、开始或预热两个实体或元件之间的关系(例如建立会话、建立会话等)相关的动作、任务、操作等。附加地或替代地,至少在一些实施例中,术语“建立”(establish、establishment)指代将某物启动到工作准备就绪的状态。至少在一些实施例中,术语“建立”指代是可操作的或者准备好使用的状态(例如完全建立)。此外,能够为了本公开的目的而使用任何规范或标准中定义的术语“建立”(establish、establishment)的任何定义,并且这类定义未被前述定义中的任何定义否定。
至少在一些实施例中,术语“获得”指代(部分或完全)对原始分组流或者对分组流的副本(例如新实例)进行拦截、移动、复制、检索或获取(例如从存储器、接口或缓冲器)的动作、任务、操作等。获得或接收的其他方面可涉及例示、启用或控制获得或接收分组流(或者以下参数和模板或模板值)的能力。
至少在一些实施例中,术语“元件”指代在给定的抽象级不可分割并且具有明确定义的边界的单元,其中元件可以是任何类型的实体,包括例如一个或多个装置、系统、控制器、网络元件、模块等或者它们的组合。
至少在一些实施例中,术语“测量”指代对象、事件或现象的属性的观测和/或量化。
至少在一些实施例中,术语“信号”指代质量和/或数量的可观测变化。附加地或替代地,至少在一些实施例中,术语“信号”指代传递与对象、事件或现象有关的信息的功能。附加地或替代地,至少在一些实施例中,术语“信号”指代可以或者可以不携带信息的任何时变电压、电流或电磁波。至少在一些实施例中,术语“数字信号”指代从物理量的波形的离散集合所构造以使得表示离散值的序列的信号。
至少在一些实施例中,术语“电路模块”指代配置成在电子装置中执特定功能的电路或者多个电路的系统。所述电路或者电路的系统可以是一个或多个硬件部件的部分或者包括一个或多个硬件部件,一个或多个硬件部件诸如是逻辑电路、处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑控制器(PLC)、片上系统(SoC)、系统级封装(SiP)、多芯片封装(MCP)、数字信号处理器(DSP)等,它们配置成提供所描述的功能性。附加地,术语“电路模块”还可指代一个或多个硬件元件与程序代码的组合,其用来执行那个程序代码的功能性。一些类型的电路模块可执行一个或多个软件或固件程序,以提供所述功能性中的至少一些功能性。硬件元件和程序代码的这种组合可称作特定类型的电路模块。
至少在一些实施例中,术语“处理器电路模块”指代或包括能够顺序地和自动执行算术或逻辑操作序列或者记录、存储和/或传输数字数据的电路模块或者作为其部分。至少在一些实施例中,术语“处理器电路模块”指代一个或多个应用处理器、一个或多个基带处理器、物理CPU、单核心处理器、双核心处理器、三核心处理器、四核心处理器和/或能够执行或者以其他方式操作计算机可执行指令(诸如程序代码、软件模块和/或功能过程)的任何其他装置。术语“应用电路模块”和/或“基带电路模块”可被认为同义于并且可称作“处理器电路模块”。
至少在一些实施例中,术语“存储器”和/或“存储器电路模块”指代用于存储数据的一个或多个硬件装置,包括RAM、MRAM、PRAM、DRAM和/或SDRAM、核心存储器、ROM、磁盘存储介质、光学存储介质、闪速存储器装置或者用于存储数据的其他机器可读介质。术语“计算机可读介质”可包括但不限于存储器、便携式或固定存储装置、光学存储装置以及能够存储、包含或携带指令或数据的各个其他介质。
至少在一些实施例中,术语“接口电路模块”指代或包括能够实现两个或更多部件或装置之间的信息交换的电路模块或者作为其部分。至少在一些实施例中,术语“接口电路模块”指代一个或多个硬件接口,例如总线、I/O接口、外设部件接口、网络接口卡和/或诸如此类。
至少在一些实施例中,术语“装置”指代一种物理实体,所述物理实体被嵌入其附近的另一物理实体内部或者被附连到另一物理实体,其中具有从或者向那个物理实体传递数字信息的能力。
至少在一些实施例中,术语“实体”指代体系结构或装置的不同部件或者作为有效载荷所传输的信息。
至少在一些实施例中,术语“控制器”指代具有诸如通过改变其状态或者使物理实体移动来影响所述物理实体的能力的元件或实体。
至少在一些实施例中,术语“端子”指代来自部件、装置或网络的导体到达末端的点。附加地或替代地,至少在一些实施例中,术语“端子”指代充当到导体的接口并且创建外部电路能够被连接的点的电连接器。在一些实施例中,端子可包括电引线、电连接器、电连接器、焊杯或焊桶和/或诸如此类。
至少在一些实施例中,术语“计算节点”或“计算装置”指代实现计算操作的方面的可识别实体,无论是更大的系统的部分、系统的分布式集合还是独立设备。在一些示例中,计算节点可称作“计算装置”、“计算系统”或诸如此类,无论在操作中作为客户端、服务器还是中间实体。计算节点的具体实现方式可被并入到服务器、基站、网关、路侧单元、内部单元(on-premiseunit)、用户设备、终端消费装置、设施或诸如此类。
至少在一些实施例中,术语“计算机系统”指代任何类型的互连电子装置、计算机装置或者它们的部件。附加地,至少在一些实施例中,术语“计算机系统”和/或“系统”指代计算机的相互通信地耦合的各个部件。此外,至少在一些实施例中,术语“计算机系统”和/或“系统”指代多个计算机装置和/或多个计算系统,它们相互通信地耦合并且配置成共享计算和/或联网资源。
至少在一些实施例中,术语“体系结构”指代计算机体系结构或网络体系结构。“计算机体系结构”是计算系统或平台中的软件和/或硬件元件的物理和逻辑设计或布置,包括在其之间进行交互的技术标准。“网络体系结构”是网络中的软件和/或硬件元件的物理和逻辑设计或布置,包括通信协议、接口和媒体传送。
至少在一些实施例中,术语“网络元件”指代用来提供有线或无线通信网络服务的物理或虚拟化设备和/或基础设施。术语“网络元件”可被认为同义于和/或称作联网的计算机、连网硬件、网络设备、网络节点、路由器、交换机、中枢、桥接器、无线电网络控制器、网络接入节点(NAN)、基站、接入点(AP)、RAN装置、RAN节点、网关、服务器、网络设施、网络功能(NF)、虚拟化NF(VNF)和/或诸如此类。
至少在一些实施例中,术语“人工智能”或“AI”指代通过机器所展示的任何智能,这与人类和其他动物所显示的自然智能形成对照。附加地或替代地,至少在一些实施例中,术语“人工智能”或“AI”指代对“智能代理”和/或感知其环境并且采取最大化它成功实现目标的机会的动作的任何装置的研究。
术语“人工神经网络”、“神经网络”或“NN”指代一种ML技术,所述ML技术包括(松散地)对能够向其他人工神经元或节点传送信号的生物大脑中的神经元进行建模的已连接人工神经元或节点的集合,其中人工神经元或节点之间的连接(或边缘)在生物大脑的突触上被(松散地)建模。人工神经元和边缘典型地具有随着学习进行而调整的权重。所述权重增加或减少连接处信号的强度。神经元可具有阈值,使得信号仅在聚合信号超过那个阈值时才被发送。人工神经元能够被聚合或编组为一个或多个层,其中不同层可对其输入执行不同变换。信号可能在多次穿过层之后从第一层(输入层)行进到最后一层(输出层)。NN通常用于有监督学习,但是也能够用于无监督学习。NN的示例包括深度NN(DNN)、前馈NN(FFN)、深度FNN(DFF)、卷积NN(CNN)、深度CNN(DCN)、去卷积NN(DNN)、深度信念NN、感知NN、递归NN(RNN)(例如包括长短期记忆(LSTM)算法、选通循环单元(gated recurrent unit,GRU)、回声状态网络(ESN)等)、尖峰NN(SNN)、深度堆叠网络(DSN)、马尔可夫链、感知NN、生成对抗网络(GAN)、变换器、随机NN(例如贝叶斯网络(BN)、贝叶斯信念网络(BBN)、贝叶斯NN(BNN)、深度BNN(DBNN)、动态BN(DBN)、概率图形模型(PGM)、玻尔兹曼机器、受限玻尔兹曼机器(RBM)、霍普菲尔德网络或霍普菲尔德NN、卷积深度信念网络(CDBN)等)、线性动态系统(LDS)、交换LDS(SLDS)、光学NN(ONN)、用于强化学习(RL)和/或深度RL(DRL)的NN和/或诸如此类。
至少在一些实施例中,机器学习的上下文中的术语“分类”指代用于确定各个数据点所属的类的ML技术。在这里,至少在一些实施例中,术语“类”(class、classes)指代类别,并且有时称作“目标”或“标记”。当输出被限制到可计量的性质的有限集合时使用分类。分类算法可描述其类别要使用特征向量来预测的单独(数据)实例。作为示例,当所述实例包括文本的集合(文集)时,特征向量中的每个特征可以是特定字词出现在文本的文集中的频率。在ML分类中,标记被指派给实例,以及模型被训练,以正确预测来自训练示例的预先指派标记。用于分类的ML算法可称作“分类器”。分类器的示例包括线性分类器、k最近邻(kNN)、决策树、随机森林、支持向量机(SVM)、贝叶斯分类器、卷积神经网络(CNN)等等(要注意,这些算法中的一些算法也能够用于其他ML任务)。
术语“轮次(epoch)”至少在一些实施例中指代通过完整的训练数据集的一个循环。附加地或替代地,至少在一些实施例中,术语“轮次”指代对整个训练数据集的完整训练的一遍,使得每个训练示例已被看到一次;在这里,轮次表示N/批大小训练迭代,其中N是示例的总数。
至少在一些实施例中,术语“事件”在概率论中指代对其指派概率的实验的结果集合(例如样本空间的子集)。附加地或替代地,至少在一些实施例中,术语“事件”指代指示某事已经发生的软件消息。附加地或替代地,至少在一些实施例中,术语“事件”指代时间上的对象或对象中的性质的实例化。附加地或替代地,至少在一些实施例中,术语“事件”指代在某个时刻的空间点(例如时空中的位置)。附加地或替代地,至少在一些实施例中,术语“事件”指代在特定时间点的显著发生的事(occurrence)。
至少在一些实施例中,术语“特征”指代正被观测的现象的单独可测量的性质、可计量的性质或特性。附加地或替代地,至少在一些实施例中,术语“特征”指代进行预测时使用的输入变量。至少在一些实施例中,可使用数字/数值(例如整数)、字符串、变量、序数、实值、类别和/或诸如此类来表示特征。在一些实施例中,术语“特征”又可称作“输入通道”。
至少在一些实施例中,术语“特征提取”指代降维的过程,通过所述降维的过程,原始数据的初始集合缩减成更多可管理的组以用于处理。附加地或替代地,至少在一些实施例中,术语“特征提取”指代检索通过无监督模型或预先训练模型计算的中间特征表示,以在另一模型中用作输入。特征提取有时用作“特征工程”的同义词。
至少在一些实施例中,术语“特征图”指代一种功能,所述功能获取一个空间中的特征向量(或特征张量),并且将它们变换为另一空间中的特征向量(或特征张量)。附加地或替代地,至少在一些实施例中,术语“特征图”指代将数据向量(或张量)映射到特征空间的功能。附加地或替代地,至少在一些实施例中,术语“特征图”指代应用被应用到先前层的一个过滤器的输出的功能。在一些实施例中,术语“特征图”又可称作“激活图”或“输出通道”。
在ML的上下文中,至少在一些实施例中,术语“特征向量”指代表示被传递到模型中的示例的特征集合和/或特征值列表。附加地或替代地,在ML的上下文中,至少在一些实施例中,术语“特征向量”指代包括一个或多个特征的元组的向量。
在ML和NN的上下文中,至少在一些实施例中,术语“隐藏层”指代ANN中不是专用于输入或输出的神经元的内部层。术语“隐藏单元”指代ANN中隐藏层中的神经元。
至少在一些实施例中,术语“超参数”指代不能在训练过程期间学习的ML过程的特性、性质和/或参数。超参数通常在训练发生之前被设置,并且可在过程中用来帮助估计模型参数。超参数的示例包括:模型大小(例如在存储器空间、字节、层数等方面);训练数据混洗(shuffle)(例如是否这样做以及多少);评估实例、迭代、轮次(例如对训练数据的迭代次数或遍数)或回合(episode)的数量;对训练数据的遍数;正则化;学习速率(例如算法达到(收敛到)最佳权重的速度);学习速率衰减(或权重衰减);动量(momentum);步幅;填充;深度(例如输入通道的数量和/或输出通道的数量);隐藏层的数量;各个隐藏层的大小;权重初始化方案;压差(Dropout)和梯度裁剪阈值;SVM的C值和∑值;k最近邻中的k;决策树中的分支数量;聚类算法中的聚类数量;向量大小;NLP和NLU的词向量大小;和/或诸如此类。
至少在一些实施例中,术语“推断引擎”指代计算系统的、将逻辑规则应用于知识库以推论新信息的部件。
至少在一些实施例中,术语“智能代理”指代软件代理或其他自主实体,所述软件代理或其他自主实体起作用,从而使用通过传感器和随后的致动器的观测朝向对环境实现目标来引导其活动(即,它是智能的)。智能代理还可学习或使用知识来实现其目标。
至少在一些实施例中,术语“迭代”指代过程的重复,以便生成结果序列,其中所述过程的每次重复是单次迭代,以及每次迭代的结果是下一次迭代的起始点。附加地或替代地,至少在一些实施例中,术语“迭代”指代训练期间对模型的权重的单次更新。
至少在一些实施例中,术语“知识库”指代用来存储由计算系统使用的复杂结构化和/或非结构化信息的任何技术。
至少在一些实施例中,术语“损失函数”或“成本函数”指代事件或者一个或多个变量到实数上的值,所述值表示与所述事件关联的某个“成本”。通过损失函数所计算的值可称作“损失”或“误差”。附加地或替代地,至少在一些实施例中,术语“损失函数”或“成本函数”指代用来确定算法的输出与目标值之间的误差或损失的函数。附加地或替代地,至少在一些实施例中,术语“损失函数”或“成本函数”指代在优化问题中使用的、以最小化损失或误差为目标的函数。
至少在一些实施例中,术语“数学模型”指代作为实体或事态的数学描述所呈现的先决条件(postulate)、数据和推断的系统,包括控制方程、假设和约束。
至少在一些实施例中,术语“机器学习”或“ML”指代计算机系统用来使用示例(训练)数据和/或过去的经验来优化性能准则。ML涉及使用算法来执行(一个或多个)具体任务,而不使用明确指令来执行所述(一个或多个)具体任务,和/或依靠模式、预测和/或推断。ML使用统计来构建(一个或多个)数学模型(又称作“ML模型”或者简单地称作“模型”),以便基于样本数据(例如训练数据)进行预测或判定。所述模型被定义成具有参数集合,并且学习是对计算机程序的执行,以使用训练数据或过去的经验来优化所述模型的参数。经训练的模型可以是基于输入数据集进行预测的预测性模型、从输入数据集中获得知识的描述性模型或者是预测性且描述性的。一旦学习(训练)了模型,它就能够用来进行推断(例如预测)。ML算法对训练数据集执行训练过程,以估计基础ML模型。ML算法是一种计算机程序,所述计算机程序从针对某个(一些)任务和某个(一些)性能量度/(一个或多个)度量的经验中学习,以及ML模型是在采用训练数据来训练ML算法之后所创建的对象或数据结构。换言之,术语“ML模型”或“模型”可描述采用训练数据所训练的ML算法的输出。在训练之后,ML模型可用来对新数据集进行预测。附加地,分开训练的AI/ML模型能够在推断或预测生成期间在AI/ML管线中被链接在一起。虽然至少在一些实施例中术语“ML算法”指代与术语“ML模型”不同的概念,但这些术语为了本公开的目的而可以可互换地使用。此外,至少在一些实施例中,术语“AI/ML应用”或诸如此类指代包含一些AI/ML模型和应用级描述的应用。ML技术一般落入以下主要类型的学习问题类别:有监督学习、无监督学习和强化学习。
至少在一些实施例中,术语“矩阵”指代以行和列排列的数字、符号或表达式的矩形阵列,它可用来表示对象或者这类对象的性质。
至少在一些实施例中,ML的上下文中的术语“模型参数”和/或“参数”指代在训练期间所学习的值、特性和/或性质。附加地或替代地,至少在一些实施例中,ML的上下文中的“模型参数”和/或“参数”指代一种配置变量,所述配置变量在所述模型内部,并且其值能够根据给定的数据来估计。模型参数通常是由模型当进行预测时所要求的,并且它们的值定义模型对特定问题的技能。这类模型参数/参数的示例包括:权重(例如在ANN中);约束;支持向量机(SVM)中的支持向量;线性回归和/或逻辑回归中的系数;用于自然语言处理(NLP)和/或自然语言理解(NLU)的单词频率、句子长度、每句的名词或动词分布、每单词的特定字符n-gram的数量、词汇多样性等;和/或诸如此类。
至少在一些实施例中,术语“目标函数”指代针对特定优化问题要被最大化或最小化的函数。在一些情况下,目标函数通过其决策变量和目标来定义。目标是要优化的值、目标(target)或目的(goal),诸如最大化利润或者最小化特定资源的使用。所选的特定目标函数取决于要解决的特定问题和要优化的目标。约束也可被定义成限制决策变量能够采用的值,由此影响能够被实现的目标值(输出)。在优化过程期间,目标函数的决策变量通常在约束的界限内被改变或操纵,以改善目标函数的值。一般来说,求解目标函数中的困难随着那个目标函数中所包括的决策变量的数量增加而增加。术语“决策变量”指代表示要进行的决策的变量。
至少在一些实施例中,术语“优化”指代使某个方面(例如设计、系统或决策)尽可能完全完善、起作用或有效的动作、过程或方法。优化通常包括数学过程,诸如发现函数的最大数或最小数。至少在一些实施例中,术语“最佳(optimal)”指代最期望或令人满意的结局、结果或输出。至少在一些实施例中,术语“最优(optima)”指代最有益于某个结果的、某个方面的量或程度。至少在一些实施例中,术语“最优”指代产生可能的最好结果的条件、程度、量或折衷。附加地或替代地,至少在一些实施例中,术语“最优”指代最有益或有利的结果或成果。
至少在一些实施例中,术语“概率”指代关于事件要发生的可能性和/或命题为真的可能性的数值描述。至少在一些实施例中,术语“概率分布”指代给出实验或事件的不同可能结果的发生概率的数学函数。
至少在一些实施例中,术语“概率分布”指代给出实验或事件的不同可能结果的发生概率的函数。附加地或替代地,至少在一些实施例中,术语“概率分布”指代一种统计函数,所述统计函数描述随机变量在给定范围内能够获取的所有可能值和似然性(例如最小与最大可能值之间的界限)。概率分布可具有一个或多个因子或属性,诸如,例如均值或平均数、模、支撑集(support)、尾、头、中值、方差、标准差、分位数、对称性、偏度(skewness)、峰度等。概率分布可以是关于样本空间和事件的概率(样本空间的子集)方面的随机现象的描述。示例概率分布包括离散分布(例如伯努利分布、离散均匀、二项式、希拉克量度、高斯-库兹明分布、几何、超几何、负二项式、负超几何、泊松、泊松二项式、拉德马赫分布、尤尔-西蒙分布、zeta分布、Zipf分布等)、连续分布(例如Bates分布、β、连续均匀、正态分布、高斯分布、钟形曲线、联合正态、γ、卡方、非中心卡方、指数、柯西、对数正态、分对数正态、F分布、t分布、希拉克δ函数、帕累托分布、洛马克斯分布、维夏特分布、威布尔分布、冈贝尔分布、欧文-霍尔分布、龚珀茨分布、逆高斯分布(或沃尔德分布)、切尔诺夫分布、拉普拉斯分布、波尔亚-伽马分布等)和/或联合分布(例如狄利克雷分布、埃文思取样公式、多项式分布、多元正态分布、多元t分布、维夏特分布、矩阵正态分布、矩阵t分布等)。
至少在一些实施例中,术语“概率密度函数”或“PDF”指代一种函数,其值在样本空间中的任何给定样本(或点)能够被解释为提供随机变量的值会接近那个样本的相对似然性。附加地或替代地,至少在一些实施例中术语“概率密度函数”或“PDF”指代随机变量落入值的特定范围之内的概率。附加地或替代地,至少在一些实施例中,术语“概率密度函数”或“PDF”指代两个不同样本处、能够用来在随机变量的任何特定抽取中推断随机变量与其他样本相比会接近一个样本的可能性多大的值。
至少在一些实施例中,术语“精度”指代两个或更多测量相互的接近性。术语“精度”又可称作“正预测值”。
至少在一些实施例中,术语“分位数”指代将概率分布的范围分成具有相等概率的连续区间或者以相同方式来划分样本中的观测的(一个或多个)切点。至少在一些实施例中,术语“分位数函数”指代如下函数,所述函数与随机变量的概率分布关联,并且指定所述随机变量的值,使得小于或等于那个值的所述变量的所述概率等于给定的概率。术语“分位数函数”又可称作百分比函数、百分点函数或者逆累积分布函数。
至少在一些实施例中,术语“强化学习”或“RL”指代基于与环境的交互的面向目标的学习技术。在RL中,代理旨在通过基于试错过程与环境进行交互来优化长期目标。RL算法的示例包括马尔可夫决策过程、马尔可夫链、Q学习、多臂老虎机(multi-armedbandit)学习、时间差学习和深度RL。
至少在一些实施例中,实验或随机试验的概率论中的术语“样本空间”(又称作“样本描述空间”或“可能性空间”)指代那个实验的所有可能的结果或成果的集合。
至少在一些实施例中,优化的上下文中的术语“搜索空间”指代要优化的函数的域。附加地或替代地,至少在一些实施例中,搜索算法的上下文中的术语“搜索空间”指代定义所有可能的解的集合的可行区域。附加地或替代地,至少在一些实施例中,术语“搜索空间”指代与所观测的训练示例一致的所有假说的子集。附加地或替代地,至少在一些实施例中,术语“搜索空间”指代版本空间,所述版本空间可经由机器学习来开发。
至少在一些实施例中,术语“有监督学习”指代一种ML技术,所述ML技术旨在学习函数或者生成在给定标记的数据集的情况下产生输出的ML模型。有监督学习算法根据包含输入和期望输出的数据集来构建模型。例如,有监督学习涉及学习函数或模型,所述函数或模型基于示例输入-输出对或者包括训练示例的集合的某个其他形式的加标记训练数据将输入映射到输出。每个输入-输出对包括输入对象(例如向量)和期望的输出对象或值(称作“监督信号”)。有监督学习能够被编组为分类算法、回归算法和基于实例的算法。
至少在一些实施例中,术语“标准差”指代值的集合的变化或分散的量的量度。附加地或替代地,至少在一些实施例中,术语“标准差”指代随机变量、样本、统计总体(statistical population)、数据集或概率分布的方差的平方根。
至少在一些实施例中,术语“张量”指代通过描述与空间的坐标相关的函数的分量阵列所表示的对象或其他数据结构。附加地或替代地,至少在一些实施例中,术语“张量”指代向量和矩阵的一般化,和/或可被理解为多维阵列。附加地或替代地,至少在一些实施例中,术语“张量”指代被排列在具有可变数量的轴的规则网格上的数字的阵列。至少在一些实施例中,张量能够被定义为单个点、孤立点的集合或者点的连续体,其中张量的元素是位置的函数,并且张量形成“张量场”。至少在一些实施例中,向量可被视为一维(1D)或一阶张量,以及矩阵可被视为二维(2D)或二阶张量。张量标注可与矩阵标注相同或相似,其中大写字母表示张量,以及具有下标整数的小写字母表示张量内的标量值。
至少在一些实施例中,术语“无监督学习”指代如下ML技术,所述ML技术旨在从未标记数据中学习描述隐藏结构的函数。无监督学习算法根据仅包含输入以及没有期望输出标记的数据集来构建模型。无监督学习算法用来发现数据中的结构,比如数据点的编组或聚类。无监督学习的示例是K均值聚类、主分量分析(PCA)和主题建模等等。至少在一些实施例中,术语“半监督学习”指代如下ML算法,所述ML算法根据不完整训练数据来开发ML模型,其中样本输入的一部分不包括标记。
至少在一些实施例中,术语“向量”指代一维阵列数据结构。附加地或替代地,至少在一些实施例中,术语“向量”指代称作标量的一个或多个值的元组。
至少在一些实施例中,术语“横向”指代相对于所述对象、跨越对象主体的宽度、与所述对象的侧面相关和/或相对所述对象在侧面方向上移动的的方向或位置。
至少在一些实施例中,术语“纵向”指代相对于所述对象、跨越对象主体的长度、与所述对象的顶部或底部相关和/或相对所述对象在向上和/或向下方向上移动的的方向或位置。
至少在一些实施例中,术语“线性”指代相对于对象、沿着相对所述对象的直线的方向或位置,和/或表示沿直线而不是沿曲线发生的移动或力。
至少在一些实施例中,术语“线形(lineal)”指代相对于对象、依照沿着相对所述对象的给定路径的方向或位置,其中路径的形状是直的或者不是直的。
至少在一些实施例中,术语“法线”或“法线轴”指代与给定对象垂直的线、射线或向量。
至少在一些实施例中,术语“曲率”指代曲线相对沿曲线的距离的方向变化率。
虽然本文中出于描述的目的而已经图示和描述某些实施例,但在不背离本公开的范围的情况下,适合实现相同目的的大量备选和/或等效实施例或实现方式可替代所示和所述的实施例。本申请旨在涵盖本文中论述的实施例的任何适配或变化。因此,显然预期本文中描述的实施例仅受权利要求限制。

Claims (32)

1.用于处理机器学习(ML)模型的加速器电路模块,所述加速器电路模块包括:
处理元件(PE)的空间阵列,其中所述空间阵列中的各个PE配置成累加来自所述空间阵列中的至少一个相邻PE的信号;
部分和累加元件(pSAE)的集合,其中所述pSAE的集合中的各个pSAE连接到所述空间阵列中的一个或多个PE,并且所述各个pSAE配置成基于由所述各个pSAE所连接的所述一个或多个PE提供的所累加信号来生成相应输出信号;以及
寄存器的集合,其中所述寄存器的集合中的各个寄存器连接到所述pSAE的集合中的一个或多个pSAE,并且所述各个寄存器配置成存储由所述各个寄存器所连接的所述一个或多个pSAE提供的所述相应输出信号,以及
其中来自所述寄存器的集合之中的寄存器的子集要用作要从其中提取输出点的分接点,并且属于所述寄存器的子集的寄存器按照通过数据流调度所指示的输入通道内分区(ICIP)因子被动态地重新配置。
2.如权利要求1所述的加速器电路模块,进一步包括:
与PE的所述空间阵列通信地耦合的编译器,其中所述编译器配置成生成所述数据流调度。
3.如权利要求2所述的加速器电路模块,其中,所述数据流调度指示所述寄存器的子集中的、要从其中提取所述输出点的各个寄存器。
4.如权利要求1-3所述的加速器电路模块,其中,所述ICIP因子是所述空间阵列中的、要被用于对输入通道的集合进行分区的PE的数量。
5.如权利要求4所述的加速器电路模块,其中:
当所述ICIP因子为一时,所述数据流调度指示以循环方式从所述空间阵列中的每个PE提取输出点;
当所述ICIP因子为二时,所述数据流调度指示从所述空间阵列中的每隔一个PE提取输出点,或者指示所述寄存器的子集包括所述寄存器的集合的全部;
当所述ICIP因子为四时,所述数据流调度指示从所述空间阵列中的每个第四PE提取输出点,或者指示所述寄存器的子集包括所述寄存器的集合的一半;
当所述ICIP因子为八时,所述数据流调度指示从所述空间阵列中的每个第八PE提取输出点,或者指示所述寄存器的子集包括所述寄存器的集合的四分之一;以及
当所述ICIP因子为十六时,所述数据流调度指示从所述空间阵列中的每个第十六PE提取输出点,或者指示所述寄存器的子集包括所述寄存器的集合的八分之一。
6.如权利要求3-5所述的加速器电路模块,其中,所述空间阵列中的每个PE包括用于存储相应描述符的配置寄存器的对应集合,所述相应描述符用于将所述空间阵列中的所述PE配置成基于所述数据流调度向其所连接pSAE输出累加部分和(pSum)。
7.如权利要求3-6所述的加速器电路模块,其中,所述数据流调度包括日志解析有限状态机(FSM),并且其中所述日志解析FSM包括用于从所述寄存器的子集提取所述输出点的多个嵌套条件。
8.如权利要求7所述的加速器电路模块,其中,所述日志解析FSM的执行用于使所述空间阵列中的所述PE中的所选PE基于所述数据流调度向其所连接pSAE输出相应累加部分和(pSum)。
9.如权利要求8所述的加速器电路模块,进一步包括:
后处理引擎,配置成对从所述寄存器的子集提取的值执行一个或多个后处理操作。
10.如权利要求1-9所述的加速器电路模块,其中,所述PE的阵列中的每个PE包括乘和累加器(MAC)的对应集合以及寄存器堆(RF)的对应集合,其中所述RF的对应集合中的每个RF包括相应的输入特征图(IF)和相应的过滤器(FL),其中所述相应的IF和所述相应的FL要被馈送到所述MAC的对应集合中的对应MAC,以及所述对应MAC基于所述IF和所述FL来生成相应的输出特征图(OF)。
11.如权利要求1-10所述的加速器电路模块,进一步包括配置成存储所提取的输出点的输出缓冲器的集合。
12.如权利要求1-11所述的加速器电路模块,进一步包括:
存储器电路模块;
处理器电路模块,通信地耦合到所述存储器电路模块,其中所述处理器电路模块包括所述PE的空间阵列;以及
灵活加法器树电路模块,通信地耦合到所述处理器电路模块,所述灵活加法器树电路模块包括被布置到加法器树体系结构中的所述pSAE的集合和所述寄存器的集合,其中所述灵活加法器树电路模块配置成基于所述ICIP因子动态地重新配置所述加法器树体系结构的深度。
13.如权利要求12所述的加速器电路模块,其中,所述ICIP因子通过所述数据流调度来指示。
14.如权利要求13所述的加速器电路模块,其中,所述数据流调度指示所述空间阵列中的、要从其中提取相应pSum的各个PE以及要从其中提取所累加pSum的各个pSAE。
15.如权利要求13-14所述的加速器电路模块,其中:
当所述ICIP因子为一时,所述数据流调度指示以循环方式从所述空间阵列中的每个PE提取pSum;
当所述ICIP因子为二时,所述数据流调度指示从所述空间阵列中的每隔一个PE提取pSum;
当所述ICIP因子为四时,所述数据流调度指示从所述空间阵列中的每个第四PE提取输出点;
当所述ICIP因子为八时,所述数据流调度指示从所述空间阵列中的每个第八PE提取输出点;
当所述ICIP因子为十六时,所述数据流调度指示从所述空间阵列中的每个第十六PE提取输出点。
16.一种操作硬件加速器的灵活加法器树的方法,其中,所述硬件加速器包括处理元件(PE)的空间阵列以及被布置到加法器树中并且连接到所述空间阵列中的各个PE的部分和累加元件(pSAE)的集合,所述方法包括:
在处理机器学习(ML)模型的单独层之前动态地重新配置所述加法器树的深度;
操作日志解析模块,包括:
使所述空间阵列中的一个或多个PE向所述pSAE的集合中的已连接pSAE输出相应部分和(pSum),一直到所述加法器树的重新配置的深度,
使所述已连接pSAE累加所述相应pSum,以及
使所述已连接pSAE向一个或多个输出缓冲器输出所累加pSum。
17.如权利要求16所述的方法,其中,所述方法包括:
按照通过数据流调度所指示的输入通道内分区(ICIP)因子动态地重新配置所述加法器树的深度。
18.如权利要求17所述的方法,其中,所述ICIP因子是所述空间阵列中的、要在其之中对输入通道的集合进行分区的PE的数量。
19.如权利要求18所述的方法,其中,所述方法包括:
操作编译器,以生成所述数据流调度。
20.如权利要求16-19所述的方法,其中,所述方法包括:
生成一个或多个控制信号,使所述一个或多个PE输出其相应pSum。
21.如权利要求20所述的方法,其中,所述空间阵列中的每个PE包括用于存储相应描述符的配置寄存器的对应集合,所述相应描述符用于将所述空间阵列中的所述PE配置成基于所述数据流调度向其所连接pSAE输出所述相应pSum。
22.如权利要求16-21所述的方法,其中,所述日志解析模块包括有限状态机(FSM),并且所述FSM包括用于从所述一个或多个PE提取所述相应pSum的多个嵌套条件。
23.如权利要求16-22所述的方法,其中,所述日志解析模块包括有限状态机(FSM),并且所述FSM包括用于从所述已连接pSAE提取所累加pSum的多个嵌套条件。
24.如权利要求16-23所述的方法,其中,所述方法包括:
对所累加pSum执行一个或多个后处理操作。
25.如权利要求16-24所述的方法,其中,所述硬件加速器进一步包括灵活加法器树电路模块,所述灵活加法器树电路模块包括被布置到所述加法器树体系结构中的所述pSAE的集合,其中所述方法包括:
操作所述灵活加法器树电路模块,以基于通过数据流调度所指示的ICIP因子动态地重新配置所述加法器树体系结构的深度。
26.如权利要求25所述的方法,其中,所述数据流调度指示所述空间阵列中的、要从其中提取相应pSum的各个PE以及要从其中提取所累加pSum的各个pSAE。
27.如权利要求26所述的加速器电路模块,其中:
当所述ICIP因子为一时,所述数据流调度指示以循环方式从所述空间阵列中的每个PE提取pSum;
当所述ICIP因子为二时,所述数据流调度指示从所述空间阵列中的每隔一个PE提取pSum;
当所述ICIP因子为四时,所述数据流调度指示从所述空间阵列中的每个第四PE提取输出点;
当所述ICIP因子为八时,所述数据流调度指示从所述空间阵列中的每个第八PE提取输出点;
当所述ICIP因子为十六时,所述数据流调度指示从所述空间阵列中的每个第十六PE提取输出点。
28.用于机器学习的加速器电路模块,所述加速器电路模块包括:
存储器电路模块;以及
处理器电路模块,耦合到所述存储器电路模块,其中所述处理器电路模块包括处理元件(PE)的空间阵列,其中所述空间阵列中的各个PE配置成基于从所述空间阵列中的一个或多个其他PE所获得的信号来生成部分和(pSum);以及
灵活加法器树电路模块,通信地耦合到所述处理器电路模块,所述灵活加法器树电路模块包括被布置到加法器树体系结构中的部分和累加元件(pSAE)的集合,其中所述pSAE的集合中的各个pSAE配置成累加来自它们所连接的、所述空间阵列中的一个或多个PE的pSum,以及
其中所述灵活加法器树电路模块配置成基于配置的输入通道内分区(ICIP)因子动态地重新配置所述加法器树体系结构的深度,所述ICIP因子是要在其之中对输入通道的集合进行分区的PE的数量。
29.如权利要求28所述的加速器电路模块,其中,所述ICIP因子通过由编译器生成的数据流调度来指示。
30.如权利要求29所述的加速器电路模块,其中,所述数据流调度指示所述空间阵列中的、要从其中提取所述相应pSum的各个PE以及要从其中提取所累加pSum的所述各个pSAE。
31.如权利要求29-30所述的加速器电路模块,其中:
当所述ICIP因子为一时,所述数据流调度指示以循环方式从所述空间阵列中的每个PE提取pSum;
当所述ICIP因子为二时,所述数据流调度指示从所述空间阵列中的每隔一个PE提取pSum;
当所述ICIP因子为四时,所述数据流调度指示从所述空间阵列中的每个第四PE提取输出点;
当所述ICIP因子为八时,所述数据流调度指示从所述空间阵列中的每个第八PE提取输出点;
当所述ICIP因子为十六时,所述数据流调度指示从所述空间阵列中的每个第十六PE提取输出点。
32.如权利要求28-31所述的加速器电路模块,其中,所述灵活加法器树电路模块进一步包括:
寄存器的集合,其中所述寄存器的集合的各个寄存器连接到所述pSAE的集合中的一个或多个pSAE,并且所述各个寄存器配置成存储由所述各个寄存器所连接的所述一个或多个pSAE提供的所述相应所累加pSum,并且其中来自所述寄存器的集合之中的寄存器的子集要用作要从其中提取输出点的分接点,以及属于所述寄存器的子集的寄存器按照通过数据流调度所指示的所述ICIP因子被动态地重新配置。
CN202280043336.9A 2021-11-05 2022-10-04 机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构 Pending CN117642721A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/520,281 US20220129320A1 (en) 2021-11-05 2021-11-05 Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators
US17/520281 2021-11-05
PCT/US2022/045652 WO2023080976A1 (en) 2021-11-05 2022-10-04 Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerator

Publications (1)

Publication Number Publication Date
CN117642721A true CN117642721A (zh) 2024-03-01

Family

ID=81257014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280043336.9A Pending CN117642721A (zh) 2021-11-05 2022-10-04 机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构

Country Status (3)

Country Link
US (1) US20220129320A1 (zh)
CN (1) CN117642721A (zh)
WO (1) WO2023080976A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220097690A1 (en) * 2020-09-30 2022-03-31 Toyota Motor Engineering & Manufacturing North America, Inc. Optical sense-compute solution for real-time navigation involving multiple vehicles
US20220129320A1 (en) * 2021-11-05 2022-04-28 Debabrata Mohapatra Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators
CN116224676B (zh) * 2023-04-28 2023-08-01 吉林大学 光学相控阵的高速控制电路及其控制方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101098758B1 (ko) * 2007-09-20 2011-12-26 서울대학교산학협력단 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
US9600278B1 (en) * 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
GB201508635D0 (en) * 2015-05-20 2015-07-01 Ibm Multiply-and-accumulate unit in carry-save adder format and application in a feedback loop equalizer
US10110233B2 (en) * 2016-06-23 2018-10-23 Altera Corporation Methods for specifying processor architectures for programmable integrated circuits
US10853448B1 (en) * 2016-09-12 2020-12-01 Habana Labs Ltd. Hiding latency of multiplier-accumulator using partial results
GB2555459B (en) * 2016-10-28 2018-10-31 Imagination Tech Ltd Division synthesis
US10455253B1 (en) * 2017-02-28 2019-10-22 Google Llc Single direction long interpolation filter
US11488004B2 (en) * 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
EP3789871B1 (en) * 2017-12-27 2023-06-07 Cambricon Technologies Corporation Limited Integrated circuit chip device
US11636327B2 (en) * 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US11615300B1 (en) * 2018-06-13 2023-03-28 Xilinx, Inc. System and method for implementing neural networks in integrated circuits
US20190392287A1 (en) * 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
US11210063B2 (en) * 2019-03-27 2021-12-28 Intel Corporation Machine learning training architecture for programmable devices
KR102360452B1 (ko) * 2019-06-18 2022-02-11 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치
US11347828B2 (en) * 2020-03-24 2022-05-31 Intel Corporation Methods, apparatus, articles of manufacture to perform accelerated matrix multiplication
US20220083500A1 (en) * 2020-09-15 2022-03-17 Nvidia Corporation Flexible accelerator for a tensor workload
US20220129320A1 (en) * 2021-11-05 2022-04-28 Debabrata Mohapatra Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators

Also Published As

Publication number Publication date
US20220129320A1 (en) 2022-04-28
WO2023080976A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
DeBole et al. TrueNorth: Accelerating from zero to 64 million neurons in 10 years
US11586907B2 (en) Arithmetic unit for deep learning acceleration
CN110197276B (zh) 用于深度学习加速的数据体雕刻器
Abdelouahab et al. Accelerating CNN inference on FPGAs: A survey
US20230071424A1 (en) Placement of compute and memory for accelerated deep learning
CN117642721A (zh) 机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构
Liao et al. Ascend: a scalable and unified architecture for ubiquitous deep neural network computing: Industry track paper
TW201917566A (zh) 深度視覺處理器
Zaman et al. Custom hardware architectures for deep learning on portable devices: a review
US20190279038A1 (en) Data flow graph node parallel update for machine learning
CN117121018A (zh) 用于在稀疏加速器上执行机器学习模型操作的方法和装置
US20190130268A1 (en) Tensor radix point calculation in a neural network
US20210271960A1 (en) Performance scaling for dataflow deep neural network hardware accelerators
Irmak et al. A dynamic reconfigurable architecture for hybrid spiking and convolutional fpga-based neural network designs
Zhang et al. Enabling highly efficient capsule networks processing through a PIM-based architecture design
Zhu et al. Cnnlab: a novel parallel framework for neural networks using gpu and fpga-a practical study with trade-off analysis
Wan et al. Robotic computing on fpgas: Current progress, research challenges, and opportunities
Kim FPGA based neural network accelerators
US20190130276A1 (en) Tensor manipulation within a neural network
WO2021074865A1 (en) Basic wavelet filtering for accelerated deep learning
Mishra et al. Artificial intelligence accelerators
Chen et al. Exploiting on-chip heterogeneity of versal architecture for gnn inference acceleration
Mohaidat et al. A Survey on Neural Network Hardware Accelerators
CN114265673A (zh) 利用共享控制的计算阵列的空间分片
Kästner et al. Analysis of hardware implementations to accelerate convolutional and recurrent neuronal networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication