用于负值和正值的非对称缩放因子支持的系统和方法与流程

文档序号:28682664发布日期:2022-01-29 09:06阅读:163来源:国知局
用于负值和正值的非对称缩放因子支持的系统和方法与流程

1.本公开大体上涉及神经网络中的计算,包括但不限于用于神经网络中的值的非对称缩放因子支持的系统和方法。


背景技术:

2.人工智能(ai)处理可以使用不同形式的激活函数。给定输入集合,激活函数可以生成神经网络中的节点的输出。激活函数可以基于输入集合输出正值或负值。激活函数可以用正值激活神经网络中的一个或多个神经元,并且用负值激活神经网络中的一个或多个神经元。


技术实现要素:

3.本文提供了用于支持负值和正值的非对称缩放因子的设备、系统和方法。例如,具有硬件组件的电路可以被设计和配置为提供用于乘法器和累加器电路系统(mac)中的正值和负值的非对称缩放因子。在示例中,电路可以包括乘法器组件,以接收多个值(例如权重值、激活值)。该电路可以包括比较器组件,以确定被提供给乘法器组件的至少一个值的符号。例如,比较器组件可以确定被提供给乘法器组件的激活值的符号。响应于值的符号,电路可以为正值与负值提供不同的缩放。例如,响应于正值,电路可以将乘法器的结果提供给移位组件或电路,以将结果移位预定位数。该电路可以将移位组件或电路的结果提供给复用器组件,以生成该电路的输出。响应于负值,电路可以将乘法器的结果提供给复用器组件(例如没有移位操作),以生成电路的输出。因此,电路可以为正值与负值提供不同的缩放因子。
4.根据本发明的第一方面,提供了一种包括电路的设备,该电路包括移位电路系统和乘法电路系统,并且被配置为执行神经网络的计算,包括:经由乘法电路系统,将第一值和第二值相乘;经由移位电路系统,将相乘的结果移位所确定的位数;以及当第一值的符号位为负时输出相乘的结果,并且当第一值的符号位为正时输出移位的结果。
5.该电路可以被配置为对神经网络的当前层或具体层执行计算。
6.该电路可以包括复用器。该电路可以被配置为经由复用器根据第一值的符号位来输出相乘的结果或者移位的结果。第一值可以包括对神经网络的第一层(例如前一层或先前层)的激活。所确定的位数可以对应于针对神经网络的第一层的激活函数的缩放因子的以2为底的指数。激活函数可以包括渗漏整流线性单元(relu)函数。所确定的位数可以是m,并且m可以是等于或大于1的整数。所确定的位数可以是2。
7.该电路还可以包括比较器电路系统,该比较器电路系统被配置为确定第一值的符号位是负还是正。该电路可以包括乘法器和累加器(mac)电路系统,该mac电路系统包括累加器电路系统。该电路还可以被配置为将输出的结果提供给mac电路系统的累加器电路系统。神经网络的计算还可以包括经由乘法电路系统进行将第三值和第四值相乘的第二相乘。神经网络的计算还可以包括经由移位电路系统进行将第二相乘的结果移位所确定的位
数的第二移位。神经网络的计算还可以包括:进行当第三值的符号位为负时输出第二相乘的结果、并且当第三值的符号位为正时输出第二移位的结果的第二输出。神经网络的计算还可以包括将第二输出的结果提供给mac电路系统的累加器电路系统。
8.根据本发明的第二方面,提供了一种方法,包括:由电路的乘法电路系统,将针对神经网络的第一值和第二值相乘;经由电路的移位电路系统,将相乘的结果移位所确定的位数;以及当第一值的符号位为负时由该电路输出相乘的结果,并且当第一值的符号位为正时由该电路输出移位的结果。
9.该方法可以包括:经由电路的复用器,基于第一值的符号位来输出相乘的结果或者移位的结果。第一值可以包括针对神经网络的第一层或前一层的激活。所确定的位数可以对应于针对神经网络的第一层的激活函数的缩放因子的以2为底的指数。激活函数可以包括渗漏整流线性单元(relu)函数。预定位数可以是m,并且m可以是等于或大于1的整数。所确定的位数可以是2。
10.该方法还可以包括由电路的比较器电路系统确定第一值的符号位是负还是正。该方法还可以包括将输出的结果提供给电路的累加器电路系统。该方法还可以包括经由乘法电路系统进行将第三值和第四值相乘的第二相乘。该方法还可以包括经由移位电路系统进行将第二相乘的结果移位预定位数的第二移位。该方法还可以包括:进行当第三值的符号位为负时输出第二相乘的结果、并且当第三值的符号位为正时输出第二移位的结果的第二输出。该方法还可以包括将第二输出的结果提供给电路的累加器电路系统。
11.示例实现在下面详细讨论。以下详细描述包括各个示例实现的说明性示例,并且提供了用于理解要求保护的方面和实现的性质和特性的概述或者框架。附图提供了对各个方面和实现的说明和进一步理解,并且被并入本说明书中并构成其一部分。
附图说明
12.附图不旨在按比例绘制。在各个附图中,相同的附图标记和名称指示相同的元件。为了清晰起见,并非每个组件都可以在每个附图中标记。在附图中:
13.图1a是根据本公开的示例实现的用于执行人工智能(ai)相关处理的系统的实施例的框图;
14.图1b是根据本公开的示例实现的用于执行ai相关处理的设备的实施例的框图;
15.图1c是根据本公开的示例实现的用于执行ai相关处理的设备的实施例的框图;
16.图1d是根据本公开的示例实现的计算环境的框图;
17.图2a是根据本公开的示例实现的用于负值和正值的非对称缩放因子的系统的框图;
18.图2b是根据本公开的示例实现的激活函数的曲线图;以及
19.图2c是图示了根据本公开的示例实现的用于负值和正值的非对称缩放因子的过程或方法的流程图。
具体实施方式
20.在转到详细图示某些实施例的附图之前,应该理解的是,本公开不被限于在描述中陈述或在附图中图示的细节或方法。还应该理解的是,本文使用的术语仅为了描述的目
的,并且不应该被认为是限制性的。
21.为了阅读下面对本发明的各个实施例的描述,对说明书的章节及其相应内容的以下描述可能会有所帮助:
22.章节a描述了用于实践或实现本系统、方法和设备的实施例的环境、系统、配置和/或其他方面;并且
23.章节b描述了用于支持负值和正值的非对称缩放因子的设备、系统和方法的实施例。
24.章节a.用于人工智能相关处理的环境
25.在讨论章节b中的系统、设备和/或方法的实施例的细节之前,讨论对实践或实现系统、设备和/或方法的某些实施例有用的环境、系统、配置和/或其他方面可能是有帮助的。现在参照图1a,描绘了用于执行人工智能(ai)相关处理的系统的实施例。在简要概述中,该系统包括一个或多个ai加速器108,其可以使用输入数据110执行ai相关处理。虽然称为ai加速器108,但有时也被称为神经网络加速器(nna)、神经网络芯片或硬件、ai处理器、ai芯片等。(多个)ai加速器108可以根据输入数据110和/或参数128(例如权重和/或偏置信息)执行ai相关处理,以输出或提供输出数据112。ai加速器108可以包括和/或实现一个或多个神经网络114(例如人工神经网络)、一个或多个处理器和/或一个或多个存储设备12。
26.上述元件或组件中的每一个在硬件或者硬件和软件的组合中实现。例如,这些元件或组件中的每一个可以包括任何应用、程序、库、脚本、任务、服务、过程或者在诸如电路系统等硬件上执行的任何类型和形式的可执行指令,其可以包括数字和/或模拟元件(例如一个或多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件)。
27.输入数据110可以包括用于配置、调谐、训练和/或激活(多个)ai加速器108的神经网络114和/或用于由(多个)处理器124处理的任何类型或形式的数据。神经网络114有时被称为人工神经网络(ann)。配置、调谐和/或训练神经网络可以指代或包括机器学习的过程,其中诸如历史数据等训练数据集(例如作为输入数据110)被提供给神经网络以进行处理。调谐或配置可以指代或者包括神经网络114的训练或处理,以允许神经网络提高准确性。调谐或配置神经网络114可以包括例如使用针对神经网络114期望的问题或目标类型已被证明是成功的架构来设计神经网络。在一些情况下,一个或多个神经网络114可以以相同或类似的基线模型发起,但是在调谐、训练或学习过程期间,神经网络114的结果可能是充分不同的,使得每个神经网络114可以被调整,以处理具体类型的输入,并且与处于基线模型或者针对不同目标或目的调谐或训练的不同神经网络相比,生成具有更高准确性和可靠性水平的具体类型的输出。调谐神经网络114可以包括为每个神经网络114设置不同的参数128,为每个神经网络114不同地微调参数128,或者分配不同的权重(例如超参数或学习率)、张量流等。因此,通过基于调谐或训练过程以及(多个)神经网络和/或系统的目标为(多个)神经网络114设置适当的参数128,这可以提高整个系统的性能。
28.ai加速器108的神经网络114可以包括任何类型的神经网络,包括例如卷积神经网络(cnn)、深度卷积网络、前馈神经网络(例如多层感知器(mlp))、深度前馈神经网络、径向基函数神经网络、kohonen自组织神经网络、递归神经网络、模块化神经网络、长/短期记忆神经网络等。(多个)神经网络114可以被部署或用于执行数据(例如图像、音频、视频)处理、对象或特征识别、推荐器功能、数据或图像分类、数据(例如图像)分析等,诸如自然语言处
理。
29.作为示例,并且在一个或多个实施例中,神经网络114可以被配置为或包括卷积神经网络。卷积神经网络可以包括一个或多个卷积单元(或池化层)和内核,其分别可以用于不同的目的。卷积神经网络可以包括、包含和/或使用卷积内核(有时简称为“内核”)。卷积内核可以处理输入数据,并且池化层可以简化数据,例如使用非线性函数(诸如max),从而减少不必要的特征。包括卷积神经网络的神经网络114可以促进图像、音频或任何数据识别或其他处理。例如,输入数据110(例如来自传感器)可以被传递给形成漏斗的卷积神经网络的卷积层,从而压缩输入数据110中检测到的特征。卷积神经网络的一层可以检测第一特点,第二层可以检测第二特点,以此类推。
30.卷积神经网络可以是一种深度、前馈人工神经网络,被配置为分析视觉图像、音频信息和/或任何其他类型或形式的输入数据110。卷积神经网络可以包括被设计为使用最少的预处理的多层感知器。基于它们的共享权重架构和平移不变性特点,卷积神经网络可以包括或者被称为移位不变性或空间不变性人工神经网络。由于与其他数据分类/处理算法相比,卷积神经网络可以使用相对较少的预处理,因此卷积神经网络可以自动学习可能为其他数据分类/处理算法手工设计的滤波器,从而提高与配置、建立或设置神经网络114相关联的效率,从而提供相对于其他数据分类/处理技术的技术优点。
31.神经网络114可以包括神经元或节点的输入层116和输出层122。神经网络114还可以具有一个或多个隐藏层118、119,这些隐藏层可以包括神经元或节点的卷积层、池化层、全连接层和/或归一化层。在神经网络114中,每个神经元可以从先前层中的某个数量的地点接收输入。在全连接层中,每个神经元都可以从先前层的每个元素接收输入。
32.神经网络114中的每个神经元可以通过将某个函数应用于来自先前层中的感受域的输入值来计算输出值。被应用于输入值的函数由权重向量和偏置(通常是实数)指定。神经网络114中的学习(例如在训练阶段期间)可以通过对偏置和/或权重进行增量调整来进行。权重向量和偏置可以被称为滤波器,并且可以表示输入的某个特征(例如特定形状)。卷积神经网络的区别特征是许多神经元可以共享同一滤波器。这减少了存储器占用,因为单个偏置和单个权重向量可以在共享该滤波器的所有感受域上使用,而不是每个感受域都有自己的偏置和权重向量。
33.例如,在卷积层中,系统可以对输入层116应用卷积操作,从而将结果传递给下一层。卷积模拟单独神经元对输入刺激的响应。每个卷积神经元只可以处理其感受域的数据。与全连接的前馈神经网络相比,使用卷积操作可以减少神经网络114中使用的神经元的数量。因此,卷积操作可以减少自由参数的数量,从而允许网络更深,参数更少。例如,无论输入数据(例如图像数据)大小如何,大小为5x5的图块区域(分别具有相同的共享权重)可能仅使用25个可学习参数。通过这种方式,具有卷积神经网络的第一神经网络114可以通过使用反向传播来解决在训练具有许多层的传统多层神经网络时梯度消失或爆炸的问题。
34.神经网络114(例如被配置有卷积神经网络)可以包括一个或多个池化层。一个或多个池化层可以包括局部池化层或全局池化层。池化层可以将一层的神经元集群的输出组合为下一层的单个神经元。例如,最大池化可以使用来自前一层的神经元集群中的每个神经元的最大值。另一示例是平均池化,它可以使用来自前一层的神经元集群中的每个神经元的平均值。
35.神经网络114(例如被配置有卷积神经网络)可以包括全连接层。全连接层可以将一层中的每个神经元连接至另一层中的每个神经元。神经网络114可以在卷积层中被配置有共享权重,其可以指用于层中的每个感受域的相同滤波器,从而减少存储器占用并且提高第一神经网络114的性能。
36.隐藏层118、119可以包括被调谐或配置为基于输入数据(例如来自例如虚拟现实系统的传感器数据)检测信息的滤波器。当系统逐步通过神经网络114(例如卷积神经网络)中的每层时,系统可以转化来自第一层的输入,并且将变换后的输入输出给第二层,以此类推。基于被检测、处理和/或计算的对象或信息的类型以及输入数据110的类型,神经网络114可以包括一个或多个隐藏层118、119。
37.在一些实施例中,卷积层是神经网络114(例如被配置为cnn)的核心构建块。层参数128可以包括可学习滤波器(或内核)的集合,其具有小的感受域,但延伸通过输入体积的整个深度。在前向传递期间,每个滤波器在输入体积的宽度和高度上进行卷积,从而计算滤波器条目和输入之间的点积,并且产生该滤波器的二维激活图。因此,神经网络114可以学习当它在输入中的某个空间位置检测到某种具体类型的特征时激活的滤波器。沿着深度维度堆叠所有滤波器的激活图形成卷积层的完整输出体积。因此,输出体积中的每个条目也可以被解释为神经元的输出,该神经元查看输入中的小区域,并且与同一激活图中的神经元共享参数。在卷积层中,神经元可以从先前层的受限子区域接收输入。通常,子区域是正方形的(例如大小为5x5)。神经元的输入区域被称为其感受域。因此,在全连接层中,感受域是整个先前层。在卷积层中,感受区域可以小于整个先前层。
38.第一神经网络114可以被训练为检测、分类、分段和/或转化输入数据110(例如通过检测或确定对象、事件、词语和/或其他特征的概率,基于输入数据110)。例如,神经网络114的第一输入层116可以接收输入数据110,处理输入数据110以将数据变换为第一中间输出,并且将第一中间输出转发给第一隐藏层118。第一隐藏层118可以接收第一中间输出,处理第一中间输出以将第一中间输出变换为第二中间输出,并且将第二中间输出转发给第二隐藏层119。第二隐藏层119可以接收第二中间输出,处理第二中间输出以将第二中间输出变换为第三中间输出,并且将第三中间输出转发给输出层122。输出层122可以接收第三中间输出,处理第三中间输出以将第三中间输出中间变换为输出数据112,并且转发输出数据112(例如可能输出给后处理引擎,用于向用户进行绘制、用于存储等)。作为示例,输出数据112可以包括对象检测数据、增强/转化/扩张数据、推荐、分类和/或分段数据。
39.再次参照图1a,ai加速器108可以包括一个或多个存储设备126。存储设备126可以被设计或实现为存储、保持或维护与(多个)ai加速器108相关联的任何类型或形式的数据。例如,数据可以包括由(多个)ai加速器108接收的输入数据110和/或输出数据112(例如在被输出给下一设备或处理级之前)。数据可以包括用于或来自(多个)神经网络114和/或(多个)处理器124的任何处理级的中间数据。数据可以包括用于输入到(多个)神经网络114的神经元并且在神经元处处理的一个或多个操作数,其可以从存储设备126读取或访问。例如,数据可以包括(多个)神经网络114的一个或多个神经元(或节点)和/或层的输入数据、权重信息和/或偏置信息、激活函数信息和/或参数128,其可以被存储在存储设备126中并且从存储设备126读取或访问。数据可以包括来自(多个)神经网络114的神经元的输出数据,其可以被写入并存储在存储设备126处。例如,数据可以包括针对(多个)神经网络114的
pitts)模型):
45.ζ=∑iwixiꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
46.y=σ(ζ)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
47.其中ζ是输入的加权和(例如输入向量和抽头权重向量的内积),并且σ(ζ)是加权和的函数。在权重和输入元素形成向量w和x的情况下,ζ加权和变成简单的点积:
48.ζ=w
·
x
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
49.这可以被称为激活函数(例如在阈值比较的情况下)或传输函数。在一些实施例中,一个或多个pe可以被称为点积引擎。神经网络114的输入(例如输入数据110)x可以来自输入空间,并且输出(例如输出数据112)是输出空间的一部分。针对一些网络网络,输出空间y可能像{0,1}一样简单,或者可能是复杂的多维(例如多通道)空间(例如针对卷积神经网络)。神经网络往往在输入空间的每个自由度有一个输入,并且在输出空间的每个自由度有一个输出。
50.再次参照图1b,pe 120的输入x可以是从存储设备126(例如sram)读取的输入流132的一部分。输入流132可以被引导到一行pe(水平存储体或组),并且可以在一个或多个pe之间共享,或者被分区为数据部分(重叠或非重叠部分)作为相应pe的输入。权重流134(例如从存储设备126读取)中的权重134(或权重信息)可以被引导或提供给一列pe(竖直存储体或组)。列中的pe中的每个pe可以共享相同的权重134,或者接收对应权重134。每个目标pe的输入和/或权重可以被直接路由(例如从存储设备126)到目标pe,或通过一个或多个pe(例如沿着一行或一列pe)路由到目标pe。每个pe的输出可以被直接路由到pe阵列之外,或者通过一个或多个pe(例如沿着一列pe)以退出pe阵列。每列pe的输出可以在相应列的加法器电路系统处求和或相加,并且被提供给相应pe列的缓冲器130。(多个)缓冲器130可以将接收到的输出提供、传输、路由、写入和/或存储到存储设备126。在一些实施例中,被存储到存储设备126的输出(例如来自神经网络的一层的激活数据)可以从存储设备126取回或读取,并且被用作pe 120阵列的输入,以用于稍后处理(神经网络的后续层)。在一些实施例中,被存储到存储设备126的输出可以从存储设备126取回或读取,作为ai加速器108的输出数据112。
51.现在参照图1c,描绘了用于执行ai相关处理的设备的一个示例实施例。在简要概述中,该设备可以包括或对应于ai加速器108,例如具有上面结合图1a和图1b描述的一个或多个特征。ai加速器108可以包括一个或多个pe 120、其他逻辑或电路系统(例如加法器电路系统)和/或其他结构或构造(例如互连、数据总线、时钟电路系统、(多个)电源网络)。上述元件或组件中的每一个在硬件或至少硬件和软件的组合中实现。硬件可以例如包括电路元件(例如一个或多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或电线或导电连接器)。
52.在一些实施例中,pe 120可以包括一个或多个乘法累加(mac)单元或电路140。一个或多个pe有时可以被称为mac引擎。mac单元被配置为执行(多个)乘法累加操作。mac单元可以包括乘法器电路、加法器电路和/或累加器电路。乘法累加操作计算两个数字的乘积,并且将该乘积添加到累加器。mac操作可以被表示如下,结合累加器a以及输入b和c:
53.a

a+(b
×
c)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
54.在一些实施例中,mac单元140可以包括在组合逻辑中实现的乘法器,随后是加法
器(例如包括组合逻辑)和累加器寄存器(例如包括顺序和/或组合逻辑),其存储结果。累加器寄存器的输出可以被反馈回加法器的一个输入,因此在每个时钟周期,乘法器的输出都可以被添加到寄存器。
55.如上面讨论的,mac单元140可以执行乘法和加法功能。mac单元140可以在两个阶段中操作。mac单元140首先可以在第一阶段计算给定数字(输入)的乘积,并且转发结果用于第二阶段操作(例如加法和/或累加)。n位mac单元140可以包括n位乘法器、2n位加法器和2n位累加器。
56.本文描述的各种系统和/或设备可以在计算系统中实现。图1d示出了代表性计算系统150的框图。在一些实施例中,图1a的系统可以形成计算系统150的(多个)处理单元156的至少一部分。计算系统150可以被实现为例如设备(例如消费者设备),诸如智能手机、其他移动电话、平板计算机、可穿戴计算设备(例如智能手表、眼镜、头戴式显示器)、台式计算机、膝上型计算机,或者用分布式计算设备实现。计算系统150可以被实现为提供vr、ar、mr体验。在一些实施例中,计算系统150可以包括常规的、专业的或自定义的计算机组件,诸如处理器156、存储设备158、网络接口151、用户输入设备152和用户输出设备154。
57.网络接口151可以提供到局域网/广域网(例如互联网)的连接,(本地/远程)服务器或后端系统的网络接口也被连接至该局域网/广域网。网络接口151可以包括有线接口(例如以太网)和/或无线接口,其实现各种rf数据通信标准,诸如wi-fi、蓝牙或蜂窝数据网络标准(例如3g、4g、5g、60ghz、lte等)。
58.用户输入设备152可以包括用户可以经由其向计算系统150提供信号的任何设备(或多个设备);计算系统150可以将信号解释为指示特定用户请求或信息。用户输入设备152可以包括键盘、触摸板、触摸屏、鼠标或其他指点设备、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风、传感器(例如运动传感器、眼睛追踪传感器等)等。
59.用户输出设备154可以包括计算系统150可以经由其向用户提供信息的任何设备。例如,用户输出设备154可以包括显示器,以显示由计算系统150生成或递送给计算系统150的图像。显示器可以包含各种图像生成技术,例如液晶显示器(lcd)、包括有机发光二极管(oled)的发光二极管(led)、投影系统、阴极射线管(crt)等,以及支持电子设备(例如数模或模数转换器、信号处理器等)。同时用作输入和输出设备的设备(诸如触摸屏)可以被使用。除了显示器之外或代替显示器,输出设备154可以被提供。示例包括指示灯、扬声器、触觉“显示”设备、打印机等。
60.一些实现包括电子组件,诸如微处理器、存储装置和存储器,其将计算机程序指令存储在计算机可读存储介质中。本说明书中描述的许多特征可以被实现为过程,该过程被指定为在计算机可读存储介质上编码的程序指令集合。当这些程序指令由一个或多个处理器执行时,它们使处理器执行程序指令中指示的各种操作。程序指令或计算机代码的示例包括机器代码(诸如由编译器产生的)以及包括由计算机、电子组件或微处理器使用解释器执行的高级代码的文件。通过合适的编程,处理器156可以为计算系统150提供各种功能性,包括本文描述的由服务器或客户端执行的任何功能性或者与消息管理服务相关联的其他功能性。
61.要了解的是,计算系统150是说明性的,并且变化和修改是可能的。结合本公开使用的计算机系统可以具有此处没有具体描述的其他能力。进一步地,虽然计算系统150参照
特定块来描述,但要理解的是,这些块是为了便于描述而定义的,并且不旨在暗示组件部分的特定物理布置。例如,不同的块可以位于同一设施中、同一服务器机架中或同一母板上。进一步地,块不需要对应于物理上不同的组件。块可以被配置为执行各种操作,例如通过对处理器进行编程或提供适当的控制电路系统,并且取决于初始配置如何被获得,各种块可能是或者可能不是可重新配置的。本公开的实现可以在包括电子设备的各种装置中实现,该各种装置使用电路系统和软件的任何组合实现。
62.章节b.用于支持负值和正值的非对称缩放因子的方法和设备
63.本文公开的包括用于负值和正值的非对称缩放因子的系统、方法和设备的实施例。例如,并且在一些实施例中,具有一个或多个硬件组件或电路系统的电路可以被设计为在乘法器和累加器电路系统(mac)中为正值和负值提供非对称缩放因子。硬件组件或电路系统可以包括乘法电路系统、移位电路系统、比较器电路系统和/或复用器。例如,乘法电路系统可以接收值(也称为操作数),诸如用于激活函数的神经网络操作(例如卷积或乘法操作)的权重和激活值。乘法电路系统可以例如通过将这些值相乘在一起来用权重值缩放激活值。乘法电路系统可以将值相乘的结果提供给移位电路系统和复用器,以支持非对称缩放。移位电路系统可以将相乘的结果移位所确定的位数,以修改或进一步缩放结果,并且将移位的结果(例如相对于相乘的原始结果非对称缩放)提供给复用器。比较器电路系统可以确定至少一个值或操作数的符号(例如针对神经网络的一层的权重值,或来自神经网络的前一层的激活值)或者针对该一层的操作或激活函数的输出的预期符号,并且生成符号指示信号以被用作复用器的选择信号。例如,响应于正值,电路可以经由复用器将来自移位电路系统的移位结果输出为基于根据激活函数的第一缩放因子。第一缩放因子可以指代激活值(有时称为激活)的绝对值乘以2的n次方,其中n是由移位电路系统执行的比特移位的次数。响应于负值,电路可以经由复用器将乘法电路系统的结果(例如相乘的结果)输出为基于根据激活函数的第二缩放因子。例如,第二缩放因子可以指激活值的绝对值。因此,该电路可以响应于至少一个值或操作数(或乘法操作或激活函数的输出)的符号来为正值与负值提供不同的缩放因子。
64.由电路生成、提供、选择和/或采用的缩放因子可以包括或表示不同类型的纠错之间的折衷或平衡。例如,由电路应用的缩放因子可以被选择或确定,以减少或最小化量化误差和限幅误差的组合。然而,当补偿或校正量化误差时,缩放因子可能会对限幅误差产生负面影响,并且当补偿或校正限幅误差时,缩放因子可能会对量化误差产生负面影响。例如,针对定点表示,较大的缩放因子可以提供或暗示较小的限幅误差(例如因为更大的数字可以被表示),代价是更高的量化误差(例如因为介于0到缩放因子之间的位数是固定的)。针对神经网络节点处的激活,其中输入与标量数字相乘,如果该数字为负值,则对应的输出针对正值与负数可以具有不同的斜率。因此,负值或正值都可以被折中,因为当针对正值补偿或校正一种类型的误差时,负值的误差因子可能会增加,并且当针对负值补偿或校正一种类型的误差时,正值的误差因子可能会增加。例如,如果缩放因子被选择为使得它最小化正元素的量化和限幅误差的组合,则负元素的误差总和可能很大,这是由于通过采用相同缩放因子导致的不必要的大动态范围。
65.本文描述的系统、方法和设备可以为负值和正值提供非对称的缩放因子,例如以减少或最小化应用(诸如但不限于机器学习应用)的量化误差和限幅误差的组合。正值和负
值可以通过不同的因子或操作(例如相乘、比特移位或两者)进行缩放,以减少或最小化量化误差和限幅误差的组合,并且不会损害由神经网络的操作、激活函数和/或过程计算或生成的负值或正值。电路可以在mac单元或引擎中配置以提供非对称缩放因子,同时减少或最小化硬件开销。例如,该电路可以包括乘法器电路系统、移位电路系统、比较器元件和/或复用器元件,以接收操作数(例如权重值和激活值)并且生成为负值和正值提供非对称缩放因子的输出。例如,乘法器电路系统可以将第一值和第二值(例如权重值、激活值)相乘。乘法器电路系统可以将相乘结果提供给移位电路系统和复用器。移位电路系统可以将相乘结果移位预定位数,并且可以将移位的结果提供给复用器。比较器可以确定这些值中的至少一个的符号(例如正或负),并且可以向复用器提供符号指示。因此,复用器可以接收相乘结果、移位结果和至少一个值的符号指示。在一些实施例中,响应于该值的符号,复用器可以输出相乘结果或移位结果。例如,响应于正符号,复用器可以输出移位结果,该移位结果表示与正缩放因子相乘或按正缩放因子缩放的激活值(例如权重值的值乘以2的n次方,其中n是由移位电路系统执行的比特移位的次数),并且响应于负符号,复用器可以输出相乘结果,该相乘结果表示与负缩放因子相乘或按负缩放因子缩放的激活值(例如权重值的值)。在一些实施例中,正负缩放因子可以被预定。例如,在一些实施例中,正负缩放因子可以被设置为具有2的幂关系。通过示例,正缩放因子可以是k(2n),并且负缩放因子可以是k,其中k可以是任何值(例如整数、小数或其他)。因此,该电路可以为正值提供第一缩放因子,并且为负值提供第二不同的缩放因子。
66.现在参照图2a,描绘了用于为负值和正值提供非对称缩放因子的系统200的实施例。在简要概述中,系统200可以包括具有乘法电路系统204、移位电路系统206、比较器电路系统208和/或复用器220的电路202。电路202可以部分地基于提供给电路的至少一个值的符号来为正值和负值提供非对称缩放因子。
67.电路202可以包括处理器,诸如但不限于上面相对于图1a描述的(多个)处理器124。在一些实施例中,电路202可以是上面相对于图1b描述的ai加速器108的组件或一部分。在一些实施例中,电路202可以是ai加速器系统的处理元件(pe)的组件或一部分,诸如图1b的(多个)pe 120。电路202可以是或包括mac单元140(例如如结合图1c描述的。电路202可以被配置为执行ai相关处理。例如,电路202可以被配置为提供用于配置、调谐、训练和/或激活神经网络(例如图1a的(多个)ai加速器108的神经网络114)的输出数据。在一些实施例中,电路202可以是上面相对于图1d描述的计算系统150的组件或一部分。电路202可以包括存储器。例如,电路202可以包括与一个或多个处理器耦合的存储器。作为示例,存储器可以包括静态随机存取存储器(sram)。在一些实施例中,存储器可以包括图1a至图1b的存储设备126或图1d的存储装置158,与其相同或基本类似。
68.乘法电路系统204可以包括硬件或至少硬件和软件的组合,或者在其中实现。乘法电路系统204可以对应于mac单元140的乘法器。在一些实施例中,乘法电路系统204可以包括用以将至少两个值(例如以二进制数字形式或其他形式)相乘的乘法器或电子电路。乘法电路系统204可以包括电子电路,以获取或产生(例如矩阵的)向量的点积或对至少两个矩阵(例如权重矩阵、激活矩阵)执行点积求和。点积可以指代对操作数(例如可以包括向量、矩阵和/或其他输入或值)执行点积操作的结果或输出。乘法电路系统204可以被配置为例如从输入流、权重流和/或电路202的其他形式的输入接收两个值210,并且可以与相应的值
210相乘以生成相乘结果205。相乘结果205可以包括或对应于例如至少两个值的乘积或向量的点积。例如,乘法电路系统204可以通过将激活值210乘以权重值210来用权重值210缩放激活值210。乘法电路系统204可以将相乘结果205提供给移位电路系统206和复用器220,以支持非对称缩放。
69.移位电路系统206可以包括硬件或至少硬件和软件的组合,或者在其中实现。移位电路系统206可以包括用于移位、缩放、增加、减少或以其他方式修改相乘结果205的一个或多个位212以生成移位结果207的电子电路系统。移位电路系统206可以被配置为实现比特移位操作,以在第一方向或第二方向上移位相乘结果205的一个或多个位,并且部分地基于移位的方向和/或移位的所确定的位数212来缩放(例如增加、减少)相乘结果205。移位电路系统206可以按所确定的位数212缩放相乘结果205,以相对于相乘结果205提供非对称缩放。例如,移位电路系统206可以将相乘结果移位对应于移位因子或缩放因子的所确定的位数212。所确定的位数212可以是大于1的整数。在一个实施例中,并且通过示例,所确定的位数212可以等于2(例如以提供或贡献缩放因子22=4)。在一些实施例中,所确定的位数212转化为等于以2为底的指数的缩放量,其形成神经网络(诸如但不限于图1a的神经网络114)的第一层的激活函数的缩放因子的一部分。在一些实施例中,激活函数可以包括渗漏整流线性单元(relu)函数。移位电路系统206可以被配置为将乘法电路系统204的相乘结果205移位所确定的位数212,以生成移位结果207。移位结果207可以对应于相乘结果205的进一步缩放版本。移位结果207可以包含缩放因子,该缩放因子包括以2为底的指数,该缩放因子是针对神经网络(诸如但不限于图1a的神经网络114)的至少一层的激活函数(例如relu函数)的一部分。
70.比较器电路系统208可以包括硬件或至少硬件和软件的组合,或者在其中实现。在一些实施例中,比较器电路系统208可以包括比较器或电子电路,其被配置为将至少一个值210(作为第一输入)与参考值(作为第二输入)进行比较,并且生成符号指示信号209,指示哪个输入更大。例如,比较器电路系统208可以被配置为将第一值210a与参考信号进行比较,以确定第一值210a的符号或者第一值210a是正还是负。比较器电路系统208可以包括比较器或电子电路,其被配置为将至少一个值210的符号位或符号与参考值进行比较,并且生成符号指示信号209,指示相应值210a是正还是负。如本文引用的,被引用为正或负的值210的符号位意味着值210分别为正或负(或具有分别为正或负的符号),和/或符号位具有指示值210分别为正或负(或具有分别为正或负的符号)的值。
71.复用器220可以包括硬件或至少硬件和软件的组合,或者在其中实现。复用器220可以包括多个输入,并且被配置为在相应输入之间进行选择并且将所选的输入转发给输出线。复用器的输出线可以与电路202的输出222相同或相对应。复用器220可以部分地基于从比较器电路系统208接收的选择信号或符号指示信号209在输入之间进行选择。例如,复用器220可以包括被配置为从乘法电路系统204接收相乘结果205的输入、被配置为从移位电路系统206接收移位结果207的输入以及被配置为从比较器电路系统208接收符号指示信号209的输入。复用器220可以部分地基于符号指示信号209来选择相乘结果205或移位结果207。在一些实施例中,至少部分地基于符号指示信号209以及值210是正还是负,复用器220可以生成对应于或等于相乘结果205或移位结果207的输出222。
72.在一些实施例中,电路202可以包括具有累加器电路系统的乘法器和累加器(mac)
电路系统。例如,电路202可以包括上面相对于图1c描述的一个或多个mac单元140。电路202可以将输出222提供给mac单元140的加法器和/或累加器,其可以处理输出222。复用器220的至少一个输出可以将电路202的输出222提供给mac单元140的加法器和/或累加器。
73.本文描述的值210可以包括在用于ai相关处理的神经网络中使用的权重值或激活值。例如,值210可以包括本文描述的任何形式的数据,诸如用于或来自图1a的(多个)神经网络114和/或(多个)处理器124的任何处理级、节点和/或层的中间数据。值210可以包括用于(多个)神经网络114的一个或多个神经元(或节点)和/或层的输入数据、权重信息和/或偏置信息、激活函数信息和/或参数128,其可以例如被存储在存储设备126中并且从存储设备126读取或访问。例如,值210可以包括来自输入流的值或数据,诸如但不限于上面相对于图1b描述的输入流132。值210可以包括两个向量(例如权重矩阵的向量、激活矩阵的向量)的内核或点积。在一些实施例中,值210包括权重值、权重缩放因子、权重矩阵或由权重流提供的任何其他权重信息。例如,值210可以包括用于神经网络的第一层的权重,诸如上面相对于图1b描述的权重134。这些值可以包括激活值、激活缩放因子、激活矩阵或任何其他激活信息。
74.现在参照图2b,提供了渗漏整流线性单元(relu)激活函数的曲线图240的实施例。本文描述的电路202可以为激活函数提供非对称缩放因子,包括泄漏relu激活函数。作为示例,曲线图240可以示出卷积或点积操作的结果。在一个说明性实施例中,曲线图240可以由以下卷积操作(c)表示:
75.c=(w
scaling
*w
int
)*(a
scaling
*a
int
)=(w
scaling
*a
scaling
)*(a
scaling
*a
int
)
ꢀꢀ
(5)
76.其中c表示卷积操作的输出,w
scaling
表示权重标量缩放因子,w
int
表示权重值矩阵的整数表示,a
scaling
表示激活标量缩放因子,并且a
int
表示激活值矩阵的整数表示。权重缩放因子可以确定或表示它可以表示的权重的上阈值。例如,如果权重缩放因子等于1并且8位线性量化被假设,则最大权重输出可以等于1*127=127。激活缩放因子可以提供类似的结果。如曲线图240所图示的,(激活函数的输出的)正值242可以具有与负值244不同的斜率。电路202可以生成输出222,该输出222包含正值242与负值244的不同缩放因子。在一些实施例中,提供给正值242与负值244的缩放因子差可以具有2的幂关系。例如,正值242的权重标量缩放因子(w
scaling
)可以是负值244的权重标量缩放因子(w
scaling
)的四倍。本文描述的电路202可以提供用于正值242的第一缩放因子和用于负值244的第二不同缩放因子。在一个实施例中,在神经网络的当前层或具体层的点积求和期间,如果第一值210a或激活值(来自前一层)例如被确定为正值(使得对应的激活函数输出被预期为正值242),则由电路202生成的输出222可以被移位两位。响应于比较器电路系统208确定第一值210a或激活值是正值242,复用器220可以将移位结果207提供给电路202的输出222。输出222可以被缩放和/或生成,以减少或最小化针对神经网络的至少一层的激活函数的量化误差和限幅误差的组合。
77.虽然本公开可以讨论用于某些激活值和/或激活函数的输出的正值的标量缩放因子,但是正值的标量缩放因子可以大于负值的缩放因子。例如,针对一些其他激活值、内核和/或激活函数,可能反之亦然。例如,并且在一些场景中,用于某些激活值和/或激活函数的输出的负值的标量缩放因子可以大于正值的缩放因子。
78.现在参照图2c,提供了用于为正值和负值提供非对称缩放因子的方法250。在简要
概述中,方法250可以包括建立电路(252),接收第一值(254),接收第二值(256),将值相乘(258),移位相乘结果(260),确定值的符号(262),并且生成输出(264)。
79.在操作252中,并且在一些实施例中,电路202可以被建立、提供和/或配置,以具有乘法电路系统204、移位电路系统206、比较器电路系统208和/或复用器220。乘法电路系统204可以包括乘法电路系统或电路组件,以接收多个值210并且生成相乘结果205。例如,乘法电路系统204可以包括多个输入,其中每个输入被配置为接收至少一个值210。例如,在一些实施例中,相乘结果205例如可以包括点积或卷积输出。乘法电路系统204可以被配置为将乘法结果205发送给移位电路系统206和复用器220。例如,乘法电路系统204可以包括一个或多个输出,其中一个或多个输出被配置为将相乘结果205提供给移位电路系统206的至少一个输入和复用器220的至少一个输入。移位电路系统206可以包括移位电路、按位运算符、顺序逻辑和/或电路组件,以将值修改或移位所确定或定义的位数并且生成移位结果207,和/或通过所确定或定义的因子缩放值(例如相乘结果205)以生成移位结果207。移位电路系统206可以被配置为将移位结果207提供给复用器。例如,移位电路系统206可以包括至少一个输出,其被配置为将移位结果207提供给复用器220的至少一个输入。
80.比较器电路系统208可以被配置为接收一个或多个值210,并且可以确定值210的特性。例如,比较器电路系统208可以包括被配置为接收第一值210a和/或第二值210b的至少一个输入。比较器电路系统208可以包括比较器或电路组件,以确定值210的符号或符号位是正还是负,并且生成指示相应值210的符号的符号指示信号209。比较器电路系统208可以被配置为向复用器提供符号指示信号。例如,比较器电路系统208可以包括至少一个输出,其被配置为向复用器220的至少一个输入提供符号指示信号209。复用器220可以包括一个或多个电路组件,以接收一个或多个输入(例如符号指示信号209、相乘结果205、移位结果),并且为电路202提供输出222。例如,复用器220可以部分地基于符号指示信号209在相乘结果205和移位结果207之间进行选择,并且可以响应于符号指示信号209输出相乘结果205或移位结果207。复用器220可以响应于至少一个值210或操作数(或乘法操作或激活函数的输出)来为正值与负值提供不同的缩放因子。例如,移位电路系统206可以提供第一缩放因子,并且乘法电路系统204可以提供第二缩放因子。复用器220可以部分地基于符号指示信号209在来自移位电路系统206的移位结果207和来自乘法电路系统204的相乘结果205之间进行选择,以提供正值210与负值210的不同缩放因子。
81.在操作254中,第一值210a可以被接收。乘法电路系统204可以从至少一个流接收或从存储设备(例如图1b的存储设备126)读取第一值210a。第一值210a可以包括本文描述的任何形式的数据,诸如用于或来自图1a的(多个)神经网络114和/或(多个)处理器124的任何处理级的中间数据。数据可以包括用于(多个)神经网络114的一个或多个神经元(或节点)和/或层的输入数据、权重信息和/或偏置信息、激活函数信息和/或参数128,其可以被存储在存储设备126中并且从存储设备126读取或访问。例如,第一值210a可以包括由权重流提供的权重值、权重缩放因子或者权重矩阵。第一值210a可以包括神经网络的当前层或具体层的权重。例如,第一值210a可以包括上面相对于图1b描述的权重134。第一值210a可以包括激活值、激活缩放因子或激活矩阵。第一值210a可以包括用于神经网络的第一层或前一层(例如在当前层或具体层之前的层)的激活值。在一些实施例中,第一值210a可以包括输入数据、内核信息或偏置信息。例如,第一值210a可以从输入流接收,诸如但不限于上
面相对于图1b描述的输入流132。
82.在操作256中,第二值210b可以被接收。第二值210b可以包括本文描述的任何形式的数据,诸如用于或来自图1a的(多个)神经网络114和/或(多个)处理器124的任何处理级的中间数据。数据可以包括用于(多个)神经网络114的一个或多个神经元(或节点)和/或层的输入数据、权重信息和/或偏置信息、激活函数信息和/或参数128,其可以被存储在存储设备126中并且从存储设备126读取或访问。乘法电路系统204可以接收不同于第一值210a的第二值210b。例如,与第一值210相比,第二值210b可以包括不同类型的值。在一些实施例中,如果第一值210a包括权重值、权重缩放因子、权重矩阵、偏置信息或内核信息,第二值210b可以包括激活值、激活缩放因子或激活矩阵。在一些实施例中,如果第一值210a包括激活值、激活缩放因子或激活矩阵,则第二值210b可以包括权重值、权重缩放因子、权重、偏置信息或内核信息。在一些实施例中,乘法电路系统204可以从至少一个流接收或从存储设备(例如图1b的存储设备126)读取第二值210b。例如,第二值210b可以包括由权重流提供的权重值、权重缩放因子或权重矩阵。第二值210b可以包括神经网络的第一层的权重。例如,第二值210b可以包括上面相对于图1b描述的权重134。第二值210b可以包括激活值、激活缩放因子或激活矩阵。在一些实施例中,第二值210b可以包括输入数据、内核信息或偏置信息。例如,第二值210b可以从输入流接收,诸如但不限于上面相对于图1b描述的输入流132。
83.在操作258中,值210a、210b可以被相乘。乘法电路系统204可以在神经网络的计算中将第一值210a和第二值210b相乘。乘法电路系统204可以被配置为执行第一值210a与第二值210b的相乘,以生成相乘结果205。在一些实施例中,第一值210a可以包括激活值,并且第二值210b可以包括权重值。乘法电路系统204可以通过将激活值210乘以权重值210来缩放激活值210。相乘结果205可以包括第一值210a和第二值210b的乘积。相乘结果205可以包括与权重值210相乘或按权重值210缩放的激活值210的乘积。在一些实施例中,第一值210a和第二值210b可以包括或对应于值矩阵。在一些实施例中,第一值210a和第二值210b可以包括或对应于矩阵的整数表示。乘法电路系统204可以执行或取第一值210a和第二值210b的点积,以生成相乘结果205。在一些实施例中,乘法电路系统204可以执行第一值210a和第二值210b的点积求和,以生成相乘结果205。乘法电路系统204可以包括至少一个输出,其被配置为将相乘结果205提供给移位电路系统206的至少一个输入。在一些实施例中,如果第一值210a包括神经网络的第一层或前一层(例如在当前层或具体层之前的层)的激活值,则乘法电路系统204的输出可以至少部分地基于或对应于神经网络的第一层或前一层的激活。乘法电路系统204可以包括至少一个输出,其被配置为将相乘结果205提供给复用器220的至少一个输入。
84.在操作260中,并且在一个或多个实施例中,相乘结果205可以被移位。移位电路系统206可以将相乘结果205(例如以位形式)移位所确定的位数212(或比特位置)。在一些实施例中,移位电路系统206可以接收相乘结果205,并且可以通过将相乘结果205移位所确定的位数212来修改或进一步缩放相乘结果205。所确定的位数212可以由m表示,并且m可以是1的整数(或任何其他整数值,正数或负数)。在一个实施例中,所确定的位数212可以等于2,并因此m可以等于2。在一些实施例中,所确定的位数212可以在神经网络的第一层(或前一层)的激活函数中转化或贡献于缩放因子(例如以2为底的指数)。激活函数可以包括但不限于渗漏整流线性单元(relu)函数。位212的移位可以部分地基于移位的方向和/或预定位数
212来缩放或修改相乘结果205。例如,移位电路系统206可以在第一方向(例如左方向,《《)上将相乘结果205的比特移位m位以缩放相乘结果205(例如将结果乘以2m),或者在第二方向(例如右方向,》》)上将相乘结果205的位移位m位以缩放相乘结果205(例如将结果除以2m)。在一些实施例中,移位电路系统206可以在左方向上将相乘结果205移位或进一步缩放2位,以将相乘结果205缩放4,并且生成移位结果207。移位电路系统206可以包括至少一个输出,其被配置为向复用器220的至少一个输入提供移位结果207。
85.在操作262中,并且在一些实施例中,值210的符号可以被确定。电路202的比较器电路系统208可以确定第一值210a的符号位或值/符号是负还是正。在一些实施例中,电路202的比较器电路系统208可以确定第二值210b的符号位或值/符号是负还是正。电路202的比较器电路系统208可以确定操作或激活函数的输出的预期符号/值是负还是正。第一值210a的符号位可以指示第一值210a为正或负。第二值210b的符号位可以指示第二值210b为正或负。比较器电路系统208可以将参考信号与第一值210a的符号位或第二值210b的符号位进行比较。在一些实施例中,参考信号可以包括零(或其他)值,并且比较器电路系统208可以将第一值210a或第二值210b与参考信号进行比较,以确定相应的值210是正还是负(例如相对于参考信号)。在一些实施例中,参考信号可以包括零位值(例如0),并且比较器电路系统208可以将第一值210a的符号位或第二值210b的符号位与零参考信号进行比较,以确定相应的值210是正还是负。例如,如果第一值210a或第二值210b大于零参考信号,则比较器电路系统208可以输出正值的指示。如果第一值210a或第二值210b小于或等于零参考信号,则比较器电路系统208可以输出负值的指示。
86.比较器电路系统208可以生成指示相应值210是正还是负的符号指示信号209。例如,比较器电路系统208可以生成指示第一值210a是正还是负的符号指示信号209。在一些实施例中,比较器电路系统208可以生成指示第二值210b是正还是负的符号指示信号209。比较器电路系统208可以包括至少一个输出,其被配置为将符号指示信号290提供给复用器220的至少一个输入。
87.在操作264中,并且在一些实施例中,输出信号222可以被生成。在一些实施例中,当第一值210a的符号位为负时,电路202可以输出相乘结果205,并且当第一值210a的符号位为正时,输出移位结果207。电路202可以包括复用器220,以部分地基于至少一个值210的符号在多个输入之间进行选择。复用器220可以包括多个输入和至少一个输出,并且可以部分地基于选择器输入选择性地将提供给至少一个输入的值提供给其相应输出。例如,复用器220可以接收来自乘法电路系统204的相乘结果205、来自移位电路系统206的移位结果207以及来自比较器电路系统208的符号指示信号209。经由复用器220并且基于第一值210a的符号位,电路202可以输出相乘结果205或移位结果207。
88.电路202可以响应于至少一个值210或操作数(或乘法操作或激活函数的输出)的符号来为正值与负值提供不同的缩放因子。在一些实施例中,响应于指示正值的符号指示信号209,复用器202可以将来自移位电路系统206的移位结果207输出为基于根据激活函数的第一缩放因子。第一缩放因子可以指代权重值210的绝对值乘以2的n次方,其中n是由移位电路系统206执行的比特移位的次数。复用器220可以将移位结果207提供给电路202的输出222,作为相对于相乘结果205缩放的第一缩放输出222。在一些实施例中,响应于指示负值的符号指示信号209,电路202将乘法电路系统204的结果205(例如相乘结果)输出为基于
根据激活函数的第二缩放因子。例如,第二缩放因子可以指权重值210的绝对值。复用器220可以将相乘结果205提供给电路202的输出222,作为相对于移位结果207缩放的第二缩放输出222。因此,电路202可以通过部分地基于相应值210是正值210还是负值210提供不同的缩放因子来支持正值210和负值210的非对称缩放。
89.在一些实施例中,符号指示信号209可以包括或对应于选择器输入,复用器220可以使用该选择器输入在来自乘法电路系统204的相乘结果205和来自移位电路系统206的移位结果207之间进行选择。响应于由符号指示信号209指示的值或符号,复用器可以将相乘结果205或移位结果207提供给电路202的输出222。在一些实施例中,符号指示信号209可以指示第一值210a是正值,并且复用器220可以提供来自移位电路系统206的移位结果207作为电路202的输出222。例如,电路202可以确定第一值210a是正值,并且输出移位结果207,以最小化或减少由例如图1b的ai加速器108的处理元件120输出的正元素或正值的量化误差和限幅误差的组合。
90.在一些实施例中,符号指示信号209可以指示第一值210a是负值,并且响应于此,复用器220可以提供来自乘法电路系统204的相乘结果205作为电路202的输出222。例如,电路202可以确定第一值210a为负值,并且响应于此,输出相乘结果205,以最小化或减少例如由图1b的ai加速器108的处理元件120输出的负元素或负值的量化误差和限幅误差的组合。
91.电路202的输出222可以被反馈回神经网络中,并且被用于配置、调谐、训练和/或激活神经网络,诸如图1a的(多个)ai加速器108的神经网络114。在一些实施例中,电路202可以接收后续值210,并且可以连续生成输出222以为正值和负值提供非对称缩放因子。例如,电路202可以经由乘法电路系统204分别执行对第三值210和第四值210或后续值210相乘的第二相乘或后续相乘。电路202可以经由移位电路系统206执行对第二相乘的结果205移位预定位数212的第二移位或者后续移位,或者执行对后续相乘的结果205移位预定位数212的第二移位或者后续移位。电路202可以执行当第三值210的符号位为负时输出第二相乘的结果205、并且当第三值210的符号位为正时输出第二移位的结果207的第二输出。电路202可以向电路202的累加器电路系统140提供第二输出的结果222。在一些实施例中,电路202可以执行当后续值210的符号位为负时输出后续相乘的后续结果205、并且当后续值210的符号位为正时输出后续移位的结果207的后续输出。电路202可以向电路202的累加器电路系统140提供后续输出的后续结果222。
92.在一些实施例中,通过复用器220,电路202可以将输出的结果或输出222提供给电路202的累加器电路系统。例如,电路202可以包括具有累加器电路系统的乘法器和累加器(mac)电路系统。具有累加器电路系统的乘法器和累加器(mac)电路系统可以与上面相对于图1c描述的mac单元140相同或基本类似。电路202可以将一个或多个输出222提供给mac单元140的累加器电路系统或累加器寄存器,以用于处理。
93.虽然本公开可以描述确定值210或者值210的符号或符号位是正还是负,以在按不同量缩放的输出之间进行选择,但是应该理解的是,这仅通过示例并且不旨在以任何方式进行限制。例如,代替在正值和负值之间确定(例如在正负配置中),本系统、方法和设备可以包括确定值是大于还是小于(或相对于参考值或阈值是正还是负)参考值或阈值(例如在更大更小配置中),并且类似地在按不同量缩放的输出之间执行选择。例如,比较器电路系统208可以被配置为执行这种确定,并且其他电路系统或元件可以被适用于以与本文讨论
的正负配置的实施例类似的方式操作。进一步地,在正负配置下的某些实施例中,类似的操作可以被执行,其中正值和负值可以彼此切换或颠倒。类似地,在更大更小配置下的某些实施例中,类似的操作可以被执行,其中更大值和更小值可以彼此切换或颠倒。
94.现在已经描述了一些说明性实现,明显的是,前述内容是说明性的而非限制性的,通过示例进行呈现。具体地,尽管本文呈现的许多示例涉及方法行动或系统元件的具体组合,但是这些行动和这些元件可以以其他方式组合以实现相同的目标。结合一个实现讨论的行动、元件和特征不旨在从其他实现或实现中的类似作用中排除。
95.用于实现结合本文公开的实施例描述的各种过程、操作、说明性逻辑、逻辑块、模块和电路的硬件和数据处理组件可以用通用单芯片或多芯片处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑设备、离散门或晶体管逻辑、离散硬件组件或其任何组合(被设计为执行本文描述的功能)来实现或执行。通用处理器可以是微处理器或者任何常规处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,诸如dsp和微处理器的组合、多个微处理器、结合dsp核心的一个或多个微处理器或者任何其他这种配置。在一些实施例中,特定过程和方法可以由特定于给定功能的电路系统来执行。存储器(例如存储器、存储器单元、存储设备等)可以包括用于存储数据和/或计算机代码以完成或促进本公开中描述的各种过程、层和模块的一个或多个设备(例如ram、rom、闪存、硬盘存储装置等)。存储器可以是或包括易失性存储器或非易失性存储器,并且可以包括数据库组件、目标代码组件、脚本组件或用于支持本公开中描述的各种活动和信息结构的任何其他类型的信息结构。根据示例性实施例,存储器经由处理电路被可通信地连接至处理器,并且包括用于执行(例如由处理电路和/或处理器)本文描述的一个或多个过程的计算机代码。
96.本公开设想了方法、系统和任何机器可读介质上的程序产品以完成各种操作。本公开的实施例可以使用现有的计算机处理器来实现,或者通过用于适当系统(处于该目的或另一目的而并入)的专用计算机处理器来实现,或者通过硬连线系统来实现。本公开的范围内的实施例包括程序产品,该程序产品包括机器可读介质,用于携带或具有存储在其上的机器可执行指令或数据结构。这种机器可读介质可以是可以由通用或专用计算机或者具有处理器的其他机器访问的任何可用介质。通过示例,这种机器可读介质可以包括ram、rom、eprom、eeprom或者其他光盘存储装置、磁盘存储装置或者其他磁性存储设备或者任何其他介质,其可以被用于以机器可执行指令或者数据结构的形式携带或存储期望程序代码,并且可以由通用或专用计算机或者具有处理器的其他机器访问。以上的组合也被包括在机器可读介质的范围内。例如,机器可执行指令包括指令和数据,它使通用计算机、专用计算机或专用处理机器执行特定功能或功能组。
97.本文使用的措辞和术语是出于描述的目的,并且不应该被认为是限制性的。本文中“包括(including)”、“包括(comprising)”、“具有”、“包含”、“涉及”、“特点在于(characterized by)”、“特点在于(characterized in that)”及其变化的使用意在涵盖其后列出的项目、其等效物和附加项目以及排外地包含其后列出的项目的交替实现。在一个实现中,本文描述的系统和方法包括一个元件、行动或组件、多于一个元件、行动或组件的每个组合或者所有描述的元件、行动或组件。
98.对本文中以单数形式引用的系统和方法的实现或元件或行动的任何引用还可以
包含包括多个这些元件的实现,并且对本文中的任何实现或元件或行动的复数形式的任何引用还可以包含仅包括单个元件的实现。单数形式或复数形式的引用都不旨在将当前公开的系统或方法、其组件、行动或元件限制为单个或多个配置。对基于任何信息、行动或元件的任何行动或元件的引用可以包括行动或元件至少部分地基于任何信息、行动或元件的实现。
99.本文公开的任何实现都可以与任何其他实现或实施例组合,并且对“实现”、“一些实现”、“一个实现”等的引用不一定相互排斥,并且旨在指示结合实现描述的特定特征、结构或特点可以被包括在至少一个实现或实施例中。本文使用的这种术语不一定都引用相同的实现。任何实现都可以以与本文公开的方面和实现一致的任何方式包括性地或者排外地与任何其他实现组合。
100.在附图、详细描述或任何权利要求中的技术特征后面是参考符号的情况下,参考符号已经被包括在内,以增加附图、详细描述和权利要求的可理解性。因此,参考符号或者其缺失都不会对任何权利要求元素的范围产生任何限制效果。
101.本文描述的系统和方法可以在不脱离其特点的情况下以其他具体形式实施。除非另有明确指示,否则对“近似”、“大约”、“基本上”或其他程度术语的引用包括与给定测量值、单位或范围的+/-10%的变化。耦合元件可以彼此直接地或与中间元件电耦合、机械耦合或物理耦合。本文描述的系统和方法的范围因此由所附权利要求而不是前述描述指示,并且落入权利要求的等效物的含义和范围内的改变被包含在其中。
102.术语“耦合”及其变化包括两个构件彼此直接或间接地接合。这种接合可以是静止的(例如永久的或固定的)或可移动的(例如可移除的或可释放的)。这种接合可以利用直接彼此耦合的两个构件来实现,两个构件使用彼此耦合的单独中间构件和任何附加的中间构件彼此耦合,或者两个构件使用中间构件彼此耦合,该中间构件与两个构件中的一个构件集成地形成为单个整体。如果“耦合”或其变化被附加术语(例如直接耦合)修改,则上面提供的“耦合”的通用定义由附加术语的明语含义修改(例如“直接耦合”意味着接合两个构件而没有任何单独的中间构件),导致比上面提供的“耦合”的通用定义更窄的定义。这种耦合可以是机械的、电学的或流体的。
103.对“或者”的引用可以被解释为包括性的,使得使用“或者”描述的任何术语可以指示单个术语、多于一个术语和所有描述的术语中的任何一个。对
“‘
a’和

b’中的至少一个”的引用可以包括仅

a’、仅

b’以及

a’和

b’。结合“包括”或其他开放术语使用的这种引用可以包括附加项目。
104.所描述的元件和行动的修改(诸如各种元件的大小、尺寸、结构、形状和比例、参数值、安装布置、材料的使用、颜色、定向的变化)可以发生,而实质上不脱离本文公开的主题的教导和优点。例如,示出为集成地形成的元件可以由多个部分或元件构成,元件的位置可以被颠倒或以其他方式改变,并且分立元件或位置的性质或数量可以被更改或改变。在不脱离本公开的范围的情况下,其他替换、修改、变化和省略还可以在所公开的元件和操作的设计、操作条件和布置上进行。
105.本文中对元件位置(例如“顶部”、“底部”、“上方”、“下方”)的引用仅被用于描述附图中的各种元件的定向。各种元件的大小可以根据其他示例性实施例而不同,并且这种变化旨在被本公开所涵盖。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1