硬件加速器执行的方法、硬件加速器和神经网络装置

文档序号:7749 发布日期:2021-09-17 浏览:41次 英文

硬件加速器执行的方法、硬件加速器和神经网络装置

本申请要求于2020年3月17日在美国专利商标局提交的第62/990,509号美国临时申请的权益,并且要求于2020年9月7日在韩国知识产权局提交的第10-2020-0114066号韩国专利申请的权益,所述美国临时申请和所述韩国专利申请的全部公开出于所有目的通过引用包括于此。

技术领域

以下描述涉及硬件加速器执行的方法、硬件加速器和神经网络装置。

背景技术

可基于计算架构来实现神经网络。神经网络处理装置可能需要大的计算量来对复杂的输入数据进行计算。

发明内容

提供本发明内容以便以简化的形式介绍在下面的

具体实施方式

中进一步描述的构思的选择。本发明内容不意图确定要求权利的主题的关键特征或必要特征,也不意图用于帮助确定要求权利的主题的范围。

在一个总体方面,一种硬件加速器执行的方法包括:接收待分类图像;通过对待分类图像执行与神经网络的全连接层对应的计算处理,生成与待分类图像被分类到相应类的概率相关的结果值,作为概率相关数据;加载查找表;基于概率相关数据的概率相关数据分布,将概率相关数据的每个概率相关数据值映射到查找表中的索引;使用查找表获得与概率相关数据值对应的输出数据值;以及基于输出数据值确定待分类图像所属的类,其中,输出数据值与概率相关数据值的相应柔性最大值成比例。

所述方法还可包括:计算概率相关数据的最大的概率相关数据值与每个概率相关数据值之间的差。

映射的步骤可包括:直接将将所述差映射到索引。

映射的步骤可包括:对所述差进行缩放并将缩放后的差映射到索引。

查找表可在其中存储与对应于索引的指数函数的倒数相关联的信息。

与指数函数的倒数相关联的信息可包括与这样的整数相关联的信息:基于用于输出数据值的量化的比特数的与指数函数的倒数对应的整数。

查找表可包括多个查找表,其中,加载的步骤包括:基于通过计算获得的差中的最大差来确定索引范围;以及基于确定的索引范围来加载所述多个查找表中的一个查找表。

加载的步骤可包括:基于通过计算获得的差中的最大差来确定索引范围;以及加载基于确定的索引范围实时生成的查找表。

获得输出数据值的可步骤包括:将移位寄存器的时钟映射到索引;以及使用移位寄存器获得输出数据值。

所述方法还可包括:加载补偿系数查找表;计算与概率相关数据值对应的输出数据值的和;将输出数据值的和映射到补偿系数查找表中的索引;使用补偿系数查找表获得与概率相关数据值对应的补偿系数;以及基于补偿系数获得与概率相关数据值对应的归一化输出数据值。

硬件加速器可以是神经处理器(NPU)。

中央处理器(CPU)可被配置为生成查找表。

在另一总体方面,一种硬件加速器包括:一个或多个处理器,被配置为:接收待分类图像,通过对待分类图像执行与神经网络的全连接层对应的计算处理,生成与待分类图像被分类到相应类的概率相关的结果值作为概率相关数据,加载查找表,基于概率相关数据的概率相关数据分布将每个概率相关数据值映射到查找表中的索引,使用查找表获得与概率相关数据值对应的输出数据值,以及基于输出数据值确定待分类图像所属的类,其中,输出数据值与概率相关数据值的相应柔性最大值成比例。

所述一个或多个处理器可被配置为:计算概率相关数据的最大的概率相关数据值与每个概率相关数据值之间的差。

所述一个或多个处理器可被配置为:直接将所述差映射到索引。

所述一个或多个处理器可被配置为:对所述差进行缩放并将缩放后的差映射到索引。

查找表可在其中存储与对应于索引的指数函数的倒数相关联的信息。

与指数函数的倒数相关联的信息可包括与这样的整数相关联的信息:基于用于输出数据值的量化的比特数的与指数函数的倒数对应的整数。

查找表可包括多个查找表,所述一个或多个处理器可被配置为:基于通过计算获得的差中的最大差来确定索引范围;以及基于确定的索引范围来加载所述多个查找表中的一个查找表。

所述一个或多个处理器可被配置为:基于通过计算获得的差中的最大差来确定索引范围;以及加载基于确定的索引范围实时生成的查找表。

所述一个或多个处理器可被配置为:将移位寄存器的时钟映射到索引;以及使用移位寄存器获得输出数据值。

所述一个或多个处理器可被配置为:加载补偿系数查找表;计算与概率相关数据值对应的输出数据值的和;将输出数据值的和映射到补偿系数查找表中的索引;使用补偿系数查找表获得与概率相关数据值对应的补偿系数;以及基于补偿系数获得与概率相关数据值对应的归一化输出数据值。

所述硬件加速器可以是神经处理器(NPU)。

在另一总体方面,一种神经网络装置包括:中央处理器(CPU),被配置为:生成查找表,查找表中存储与指数函数的倒数相关联的信息;以及神经处理器(NPU),被配置为:接收待分类图像,通过对待分类图像执行与神经网络的全连接层对应的计算处理,生成与待分类图像被分类到相应类的概率相关的结果值作为概率相关数据,加载查找表并获得与概率相关数据值对应的输出数据值,以及基于输出数据值确定待分类图像所属的类,其中,输出数据值与概率相关数据值的相应柔性最大值成比例。

NPU可以是硬件加速器。

CPU还可被配置为生成用于图像分类的神经网络。

输出数据值可作为计算待分类图像对应于每个类的概率的结果而获得。

用于图像分类的神经网络可包括损失层,损失层被配置为计算损失作为用于学习的目标函数。

NPU还可被配置为:将概率相关数据值的最大的概率相关数据值与每个概率相关数据值之间的差进行缩放,并且将缩放后的差映射到查找表的索引。

在一个总体方面,一种操作硬件加速器的方法包括:加载查找表,基于输入数据的输入数据分布,将输入数据的每个输入数据值映射到查找表中的多个索引中的索引;以及使用查找表获得与输入数据值对应的输出数据值。输出数据值与输入数据值的相应柔性最大值成比例。

所述方法还可包括:计算输入数据的最大输入数据值与每个输入数据值之间的差。

映射的步骤可包括:直接将将所述差映射到索引。

映射的步骤可包括:对所述差进行缩放,并且将缩放后的差映射到索引。

查找表可在其中存储与对应于索引的指数函数的倒数相关联的信息。

与指数函数的倒数相关联的信息可包括与这样的整数相关联的信息:基于用于输出数据值的量化的比特数的与指数函数的倒数对应的整数。

查找表可包括多个查找表。加载的步骤可包括:基于通过计算获得的差中的最大差来确定索引范围;以及基于确定的索引范围来加载所述多个查找表中的一个查找表。

加载的步骤可包括:基于通过计算获得的差中的最大差来确定索引范围;以及加载基于确定的索引范围实时生成的查找表。

获得输出数据值的步骤可包括:将移位寄存器的时钟映射到索引;以及使用移位寄存器获得输出数据值。

所述方法还可包括:加载补偿系数查找表;计算与输入数据值对应的输出数据值的和;将输出数据值的和映射到补偿系数查找表中的索引;使用补偿系数查找表获得与输入数据值对应的补偿系数;以及基于补偿系数获得与输入数据值对应的归一化输出数据值。

一种非暂时性计算机可读存储介质可存储指令,所述指令在由一个或多个处理器执行时,配置所述一个或多个处理器执行所述方法。

在另一总体方面,一种硬件加速器包括:一个或多个处理器,被配置为:加载查找表,基于输入数据的输入数据分布将每个输入数据值映射到查找表中的索引中的索引,并且使用查找表获得与输入数据值对应的输出数据值。输出数据值与输入数据值的相应柔性最大值成比例。

所述一个或多个处理器可被配置为:计算输入数据的最大输入数据值与每个输入数据值之间的差。

所述一个或多个处理器可被配置为:直接将所述差映射到索引。

所述一个或多个处理器可被配置为:对所述差进行缩放并将缩放后的差映射到索引。

查找表可在其中存储与对应于索引的指数函数的倒数相关联的信息。

与指数函数的倒数相关联的信息可包括与这样的整数相关联的信息:基于用于输出数据值的量化的比特数的与指数函数的倒数对应的整数。

查找表可包括多个查找表。所述一个或多个处理器可被配置为:基于通过计算获得的差中的最大差来确定索引范围;以及基于确定的索引范围来加载所述多个查找表中的一个查找表。

所述一个或多个处理器可被配置为:基于通过计算获得的差中的最大差来确定索引范围;以及加载基于确定的索引范围实时生成的查找表。

所述一个或多个处理器可被配置为:将移位寄存器的时钟映射到索引;以及使用移位寄存器获得输出数据值。

所述一个或多个处理器可被配置为:加载补偿系数查找表;计算与输入数据值对应的输出数据值的和;将输出数据值的和映射到补偿系数查找表中的索引;使用补偿系数查找表获得与输入数据值对应的补偿系数;以及基于补偿系数获得与输入数据值对应的归一化输出数据值。

在另一总体方面,一种神经网络装置,包括:中央处理器(CPU),被配置为:生成查找表,查找表中存储与指数函数的倒数相关联的信息;以及神经处理器(NPU),被配置为:加载查找表并获得与输入数据值对应的输出数据值。输出数据值与输入数据值的相应柔性最大值成比例。

NPU可以是硬件加速器。

CPU还可被配置为生成用于输入数据值的分类的神经网络。

输出数据值可作为计算输入数据值对应于哪一类的概率的结果而获得。

用于分类的神经网络可包括损失层,损失层被配置为计算损失作为用于学习的目标函数。

NPU还可被配置为:将输入数据值的最大输入数据值与每个输入数据值之间的差进行缩放,并且将缩放后的差映射到查找表的索引。

从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。

附图说明

图1示出神经网络的示例。

图2示出神经网络装置的硬件配置的示例。

图3示出用于分类的神经网络的示例。

图4示出柔性最大近似方法的示例的流程图。

图5示出基于最大输入数据值与每个输入数据值之间的差将每个输入数据值映射到查找表(LUT)中的索引的方法的示例的流程图。

图6示出对最大输入数据值与每个输入数据值之间的差进行缩放并且将缩放后的差映射到LUT中的索引的方法的示例的流程图。

图7示出使用多个LUT通过多项式近似获得输出数据的方法的示例的流程图。

图8示出使用移位寄存器获得输出数据的方法的示例的流程图。

图9示出生成LUT的方法的示例的流程图。

图10示出确定有效量化边界的方法的示例的流程图。

图11示出获得归一化输出数据的方法的示例的流程图。

贯穿附图和具体实施方式,除非另有描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。

具体实施方式

提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解了本申请的公开之后,在此描述的方法、设备和/或系统的各种变化、修改和等同物将是清楚的。例如,在此描述的操作顺序仅仅是示例,并不限于在此阐述的操作顺序,而是除了必须以特定顺序发生的操作之外,操作顺序可如在理解本申请的公开之后将是清楚地那样改变。此外,为了更加清楚和简明,可省略在理解本申请的公开之后已知的特征的描述。

在此描述的特征可以以不同的形式被实现,并且不应被解释为限于在此描述的示例。相反,已提供在此描述的示例,以仅示出实现在理解本申请的公开之后将是清楚的在此描述的方法、设备和/或系统的许多可行的方式中的一些可行的方式。

虽然可在此使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应受这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。

在整个说明书中,当组件被描述为“连接到”另一组件或“结合到”另一组件时,该组件可直接“连接到”所述另一组件或“结合到”所述另一组件,或者可存在介于它们之间的一个或更多个其他元件。相比之下,当元件被描述为“直接连接到”另一元件或“直接结合到”另一元件时,可能不存在介于它们之间的其他元件。同样地,相似的表达(例如,“在……之间”与“紧接在……之间”、“与……邻近”与“紧邻”)也应以相同的方式解释。如在此使用的,术语“和/或”包括相关所列项中的任意一个和任意两个或更多个的任意组合。

在此使用的术语仅用于描述各种示例,并将不用于限制公开。除非上下文另外清楚地指示,否则单数形式也意图包括复数形式。术语“包含”、“包括”和“具有”说明存在阐述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。

除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义和基于对本申请的公开的理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如在通用词典中定义的术语)将被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且将不以理想化或过于形式化的含义进行解释。

此外,在示例实施例的描述中,当认为在理解本申请的公开之后由此已知的结构或功能的详细描述将导致对示例实施例的模糊解释时,将省略这样的描述。

以下示例实施例可以以各种形式的产品(例如,个人计算机(PC)、膝上型计算机、平板PC、智能电话、电视(TV)、智能家用电器、智能车辆、自助服务机和可穿戴装置)来实现。在下文中,将参照附图详细描述示例实施例,并且附图中的相同参考标号始终表示相同的元件。

期望这样的方法:高效地处理涉及神经网络的计算或操作,以使用神经网络实时分析大量输入数据并提取期望的信息。

图1示出神经网络的示例。

在图1的示例中,示出了神经网络10。神经网络10可具有包括输入层、隐藏层和输出层的架构,并且可被配置为基于接收的输入数据(例如,I1和I2)来执行计算或操作,并且基于执行计算的结果来生成输出数据(例如,O1和O2)。在此,注意的是,关于示例或实施例使用术语“可”(例如,关于示例或实施例可包括或可实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例和实施例不限于此。

神经网络10可以是包括一个或多个隐藏层的深度神经网络(DNN)或n层神经网络。例如,如图1中所示,神经网络10可以是包括输入层(层1)、两个隐藏层(层2和层3)和输出层(层4)的DNN。DNN可包括例如卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络(DBN)和受限玻尔兹曼机(RBM),但是示例不限于此。

在神经网络10具有这样的DNN架构的示例中,神经网络10可包括提取可用信息的更大数量的层,从而与现有神经网络相比处理更复杂的数据集。尽管在图1中神经网络10被示出为包括四个层,但示例不限于此,神经网络10可包括小于或大于所示出的四个层的数量的层。此外,神经网络10可包括与示出的架构不同的各种架构的层。例如,神经网络10可以是包括卷积层、池化层和全连接(FC)层的DNN。

包括在神经网络10中的每个层可包括各自通过诸如“神经元”、“处理元件(PE)”和“单元”的术语已知的多个人工节点。例如,如图1中所示,层1可包括两个节点,层2可包括三个节点。然而,节点的数量仅作为示例提供,包括在神经网络10中的每个层可包括各种数量的节点。

在神经网络10中包括的层中包括的节点可彼此连接以在它们之间交换数据。例如,一个节点可从其他节点接收数据以对接收的数据执行计算,并将计算结果输出到其他节点。

每个节点的输出值在此可被称为激活。激活可以是一个节点的输出值和包括在后续层中的节点的输入值。每个节点可基于从包括在先前层中的节点接收的激活和权重来确定它自己的激活。权重可表示用于计算每个节点处的激活并且被分配给节点之间的连接关系的参数。

每个节点可以是例如接收输入激活和输出激活并且执行输入输出映射的硬件计算单元。例如,在σ表示激活函数、表示从包括在第i-1层中的第k节点至包括在第i层中的第j节点的权重、表示包括在第i层中的第j节点的偏置值、并且表示第i层中的第j节点的激活的情况下,激活可由等式1表示。

等式1:

例如,如图1中所示,第二层(层2)中的第一节点的激活可被表示为在这个示例中,基于上面的等式1,激活可具有由表示的值。等式1仅作为描述用于处理神经网络中的数据的激活和权重的示例而被提供,因此示例不限于此。例如,激活可以是这样的值:通过将通过将激活函数应用于从前一层接收的激活的加权和而获得的值应用于线性整流函数(ReLU,又称为修正线性单元)而获得的值。

如上所述,在神经网络中,许多数据集可在多个互连节点之间交换,并且在经过层时经历许多计算处理。因此,期望一种可最小化准确度损失同时减少处理复杂输入数据所需的计算量的方法。

图2示出神经网络装置的硬件配置的示例。

在图2中,作为非限制性示例,神经网络装置200可包括主机210、硬件加速器230和存储器220。

神经网络装置200可以是具有各种处理功能(诸如,以生成神经网络、训练或学习神经网络、将浮点型神经网络量化为定点型神经网络、以及重新训练神经网络为例)的计算装置。例如,神经网络装置200可以是各种类型的装置(例如,PC、远程服务器装置、移动装置等)或者可以由各种类型的装置(例如,PC、远程服务器装置、移动装置等)实现。

主机210可执行用于控制神经网络装置200的整体功能。例如,主机210可通过执行存储在神经网络装置200的存储器220中的指令来整体控制神经网络装置200。主机210可以是例如包括在神经网络装置200中的中央处理器(CPU)、图形处理器(GPU)和应用处理器(AP),或者可由例如包括在神经网络装置200中的中央处理器(CPU)、图形处理器(GPU)和应用处理器(AP)来实现,但是示例不限于此。

主机210可生成用于分类的神经网络,并且可训练用于分类的神经网络。用于分类的神经网络可输出通过计算输入数据属于哪个类而获得的计算结果。例如,用于分类的神经网络可输出通过计算输入数据与每个类对应的概率而获得的计算结果作为关于每个类的结果值。用于分类的神经网络可包括柔性最大(softmax)层和损失层。柔性最大层可将关于每个类的结果值转换为概率值,并且损失层可计算损失作为用于训练或学习的目标函数。

存储器220可以是被配置为存储各种数据集的硬件,并且可存储在神经网络装置200中处理的或将被处理的数据集。此外,存储器220可存储将由神经网络装置200执行或驱动的应用、驱动器等。存储器220可以是动态随机存取存储器(DRAM),但不限于此。存储器220可包括易失性存储器和非易失性存储器中的至少一者。

神经网络装置200还可包括用于操作神经网络的硬件加速器230。硬件加速器230可以是专用于操作神经网络的模块,并且可包括例如神经处理器(NPU)、张量处理器(TPU)和神经引擎,但是示例不限于此。

图3示出用于分类的神经网络的示例。

在图3中,用于分类的神经网络300可包括隐藏层310、FC层320、柔性最大层330和损失层340。隐藏层310的一部分可以是FC层,因此FC层320可以是神经网络300的最后一个FC层。也就是说,FC层320可以是在神经网络300的FC层之中按顺序最后出现的FC层。

当输入数据被输入到神经网络300时,顺序的计算处理通过隐藏层310和FC层320被执行,然后与输入数据被分类到每个类的概率对应的计算结果s可从FC层320被输出。也就是说,FC层320可输出与输入数据被分类到相应类的概率对应的结果值作为针对每个类的计算结果s(或称为,概率相关数据)。在一个示例中,当待分类图像被输入到神经网络300时,可通过隐藏层310和FC层320对待分类图像执行计算处理,以生成与待分类图像被分类到相应类的概率相关的结果值,作为神经网络300的柔性最大层330的输入数据。例如,FC层320可包括分别与多个类对应的节点,并且FC层320的每个节点可输出与输入数据被分类到相应类的概率对应的结果值。例如,在神经网络被执行以分类到五个类的情况下,神经网络的FC层的第一节点至第五节点中的每个节点的输出值可以是指示输入数据被分类到第一类至第五类中的每个类的概率的结果值。

FC层320可将计算结果s输出到柔性最大层330,并且柔性最大层330可将计算结果s转换为概率值y。也就是说,柔性最大层330可通过将与输入数据被分类到每个类中的概率对应的结果值进行归一化来生成概率值y。然后,柔性最大层330可将概率值y输出到损失层340,并且损失层340可基于概率值y来计算计算结果s的交叉熵损失(cross-entropy loss)L。也就是说,损失层340可计算指示计算结果s的误差的交叉熵损失L。

例如,柔性最大层330可使用如等式2所示的柔性最大运算将计算结果s转换为概率值y,并且损失层340可使用下面表示的等式3来计算计算结果s的交叉熵损失L。

等式2:

等式3:

在等式2和等式3中,si表示FC层320的第i节点的输出值(例如,关于类中的第i类的结果值)。yi表示柔性最大层330的第i节点的输出值(例如,关于类中的第i类的概率值)。Nc表示类的数量。ti可以是第i类的地面真值(GT,ground truth)标签。

随后,可执行反向传播学习处理。通过损失层340,柔性最大层330可计算交叉熵损失L的梯度。

例如,柔性最大层330可使用下面表示的等式4来计算交叉熵损失L的梯度(例如,)。

等式4:

在等式4中,si表示FC层320的第i节点的输出值(例如,关于类中的第i类的结果值)。yi表示柔性最大层330的第i节点的输出值(例如,关于类中的第i类的概率值)。Nc表示类的数量。ti表示第i类的GT标签。

随后,可在FC层320中执行基于交叉熵损失L的梯度的学习处理。例如,可根据梯度下降算法来更新FC层320的权重。此外,可在隐藏层310中执行后续的学习处理。

返回参照图2,硬件加速器230可执行柔性最大运算。典型的硬件加速器不会执行复杂的柔性最大运算,而仅执行矩阵-向量乘法。因此,典型的神经网络装置可仅通过硬件加速器执行矩阵-向量乘法,将乘法的结果移到主机,在主机中执行柔性最大运算,然后将柔性最大运算的结果移回硬件加速器。这种典型的方法可能使用于数据转换和移动的软件的开发更复杂,这可能不利地影响整体性能和功耗。

对于柔性最大运算,已经提出了硬件加速器执行柔性最大运算的方法,以防止主机的干预;然而,这种方法可能需要除法器,这可能导致额外的硬件成本。

根据示例实施例,硬件加速器230可在没有这样的除法器的情况下执行柔性最大运算。硬件加速器230可在防止溢出的同时将概率相关数据转换为具有正值,并且通过直接使用通过转换获得的值作为索引来通过查找表(LUT)来读取适当的值,从而实现和执行高效的柔性最大近似。

硬件加速器230可通过由以下等式5表示的近似运算而非由上面的等式2表示的柔性最大运算,来估计柔性最大值。

等式5:

在等式5中,x表示柔性最大层的每个输入数据值(即,概率相关数据),并且y表示与每个概率相关数据值对应的柔性最大层的输出数据。max(x)表示最大的概率相关数据值。因此,max(x)-x表示最大的概率相关数据值与每个概率相关数据值之间的差。

在上面的等式2中,柔性最大值可以是每个概率相关数据值x的指数函数值的概率值。然而,在等式5中,输出数据可以是每个转换的概率相关数据的指数函数值。因此,等式5中的输出数据y可与每个概率相关数据值x的柔性最大值成比例。

在等式5中,硬件加速器230可通过反向计算(例如,max(x)-x,而非x-max(x))将概率相关数据转换为正值数据,并且执行倒数转换(例如,1/exp(x))以补偿这样的反向计算。

此外,尽管将在下文中进行描述,但是硬件加速器230可在防止溢出的同时将概率相关数据转换为具有正值,并且将通过转换获得的值映射到LUT中的索引。然而,在没有这种转换的情况下使用概率相关数据的示例中,可能不定义概率相关数据的范围,因此可能不容易构建与概率相关数据对应的LUT。此外,在通过前向计算将概率相关数据转换为负值数据的示例(例如,x-max(x))中,可能需要附加的转换或变换(例如,缩放和/或偏置)来映射LUT中的索引,因此可能发生过载。

根据示例实施例,通过仅使用1维LUT计算柔性最大值,可减小LUT的大小,大大降低计算复杂度而不需要除法器和/或乘法器,并且在硬件加速器230(诸如,NPU)中实现它而不需要大的硬件资源。

图4示出柔性最大近似方法的示例的流程图。在下文中将参照图4描述的操作410至操作430可由硬件加速器(例如,图2的硬件加速器230)执行。硬件加速器可以是一个或多个硬件模块、一个或多个软件模块或它们的各种组合,或者可由一个或多个硬件模块、一个或多个软件模块或它们的各种组合来实现。

在图4中,在操作410中,硬件加速器加载LUT。硬件加速器可加载存储在主机中的LUT、或者在主机中实时生成的LUT。例如,NPU可加载在CPU中生成的LUT。

LUT可存储与对应于预设范围的指数函数的倒数相关联的信息。例如,LUT可包括与从1/exp(0)到1/exp(n)的值相关联的信息,其中,n表示正整数。LUT可指示指数函数的倒数的近似值,如下表1中所示。

表1:

索引(id) LUT(id)
0 1.000
1 0.368
2 0.135
3 0.050
4 0.018
5 0.007
6 0.002
7 0.001

此外,与指数函数的倒数相关联的信息可包括与这样的整数相关联的信息:基于用于输出数据的量化的比特数的与指数函数的倒数对应的整数。例如,可使用8个比特将输出数据量化到[0,255],并且LUT可包括与同指数函数的倒数成比例的[0,255]内的整数相关联的信息,如下表2中所示。

表2:

索引(id) LUT(id)
0 255
1 94
2 35
3 13
4 5
5 2
6 1
7 0

类似地,可使用4个比特将输出数据量化到[0,15],并且LUT可包括与同指数函数的倒数成比例的[0,15]内的整数相关联的信息,如下表3中所示。

表3:

索引(id) LUT(id)
0 15
1 6
2 2
3 1
4 0

在操作420中,硬件加速器基于概率相关数据分布将每个概率相关数据值映射到LUT的索引。在一个示例中,概率相关数据分布可以是最大的概率相关数据值与每个概率相关数据值之间的差,而本申请不限于此。这里,概率相关数据可以是将被输入到柔性最大层的数据(例如,上面参照图3描述的计算结果s)。硬件加速器可计算最大的概率相关数据值与每个概率相关数据值之间的差,并且基于计算的差将每个概率相关数据值映射到LUT中的索引。

在一个示例中,硬件加速器可将最大的概率相关数据值与每个概率相关数据值之间的差直接映射到LUT中的索引。例如,在概率相关数据是990、991、992、992、990、995、993和997的情况下,硬件加速器可在不进行处理的情况下直接将最大的概率相关数据值(例如,997)与每个概率相关数据值之间的差(例如,7、6、5、5、7、2、4和0)映射到LUT中的索引。

此外,在非限制性示例中,主机可存储多个LUT,并且硬件加速器可加载多个LUT中的一个。硬件加速器可基于所计算的最大的概率相关数据值与每个概率相关数据值之间的差的最大差来确定LUT索引范围,并且基于确定的索引范围来加载LUT中的一个。

例如,在上面的表2和表3中指示的LUT存储在主机中并且概率相关数据是990、991、992、992、990、995、993和997的情况下,硬件加速器可基于最大的概率相关数据值997与每个概率相关数据值之间的差7、6、5、5、7、2、4和0中的最大差7将索引范围确定为[0,7],然后加载与确定的索引范围对应的表2的LUT作为最终LUT。在这个示例中,当加载LUT中的一个时,硬件加速器可在计算最大的概率相关数据值与每个概率相关数据值之间的差之后加载LUT。

在操作430中,硬件加速器使用LUT获得与每个概率相关数据值对应的输出数据。如上面参照图3所述,输出数据可以是从柔性最大层输出的数据(例如,指示神经网络的输入数据被分类到每个类中的概率的相对概率值)。

例如,在柔性最大层的输入数据(或概率相关数据)是990、991、992、992、990、995、993和997的情况下,硬件加速器可输出LUT(7)、LUT(6)、LUT(5)、LUT(5)、LUT(7)、LUT(2)、LUT(4)和LUT(0),作为与各个概率相关数据值对应的输出数据。在上面的表1的LUT中,输出数据可以是0.001、0.002、0.007、0.007、0.001、0.135、0.018和1.0。在这个示例中,神经网络的输入数据可被分类到与最大输出数据值(例如,1)对应的类8。

这里,2n个循环可足以使硬件加速器执行柔性最大运算。例如,可能需要n个循环来获得最大的概率相关数据值,并且可能需要n个循环来加载LUT并获得输出数据。在下文中,将参照图5至图7描述基于概率相关数据分布将每个概率相关数据值映射到LUT中的索引的详细示例。

图5示出基于最大的概率相关数据值与每个概率相关数据值之间的差将每个概率相关数据值映射到LUT中的索引的方法的示例的流程图。

在图5中,硬件加速器可从主机(例如,CPU)加载具有索引范围[0,x_q]的的LUT。

硬件加速器可提取最大的概率相关数据值并计算提取的最大的概率相关数据值与每个概率相关数据值之间的差。

硬件加速器可直接将最大的概率相关数据值与每个概率相关数据值之间的差映射到LUT中的索引。

硬件加速器可使用LUT获得与每个概率相关数据值对应的输出数据。如上所述,输出数据可指示相对概率值,该相对概率值指示神经网络的输入数据被分类到每个类中的概率。

硬件加速器可直接将最大的概率相关数据值与每个概率相关数据值之间的差映射到LUT中的索引,并且获得指示神经网络的输入数据被分类到每个类中的概率的相对概率值,而无需除法器。

图6示出对最大的概率相关数据值与每个概率相关数据值之间的差进行缩放并且将缩放后的差映射到LUT中的索引的方法的示例的流程图。

在图6中,硬件加速器可对最大的概率相关数据值与每个概率相关数据值(例如,x)之间的差进行缩放,并将缩放后的差映射到LUT中的索引。

例如,在最大的概率相关数据值与每个概率相关数据值之间的差具有[0,10]的范围并且加载的LUT的索引具有[0,20]的范围的情况下,与将差直接映射到索引相比,将差缩放为适合于索引范围可更有效地提高输出数据的准确性。

硬件加速器可提取最大的概率相关数据值并计算最大的概率相关数据值与每个概率相关数据值之间的差。

硬件加速器可对最大的概率相关数据值与每个概率相关数据值之间的差进行缩放,并将缩放后的差映射到索引。作为示例,在图6中,基于等式id x=ax+b,可将最大的概率相关数据值与每个概率相关数据值之间的差缩放为适合于索引范围,其中,a和b是缩放系数,idx是缩放后的差。在前述示例中,基于等式idx=2x,硬件加速器可将最大的概率相关数据值与每个概率相关数据值之间的差映射到索引。

硬件加速器可使用LUT(例如,通过y=LUT[idx])获得与每个概率相关数据值对应的输出数据。

图7示出使用多个LUT通过多项式近似获得输出数据的方法的示例的流程图。

在图7中,硬件加速器可使用多个LUT通过多项式近似获得输出数据。

硬件加速器可根据所选择的多项式灵活地控制近似准确度。作为示例,硬件加速器可加载多个LUT(或LUT家族),例如,LUT_a、LUT_b、LUT_c等。例如,硬件加速器可通过基于情况从一次多项式近似方法710(例如,y=LUT_a[idx]*x+LUT_b[idx])和二次多项式近似方法720(例如,y=LUT_a[idx]*x2+LUT_b[idx]*x+LUT_c[idx])之间选择一个,来灵活地控制近似准确度。

图8示出使用移位寄存器获得输出数据的方法的示例的流程图。

在图8中,硬件加速器可将移位寄存器的时钟映射到索引,并使用移位寄存器获得输出数据。

硬件加速器可提取最大的概率相关数据值,并计算提取的最大的概率相关数据值与每个概率相关数据值之间的差。

硬件加速器可基于计算的最大的概率相关数据值与每个概率相关数据值之间的差将移位寄存器的时钟映射到索引。

硬件加速器可使用移位寄存器获得输出数据,输出数据对应于与最大的概率相关数据值与每个概率相关数据值之间的差对应的时钟。例如,在使用4位移位寄存器的情况下,硬件加速器可获得下表4中指示的输出。

表4:

索引(id) LUT(id)
0 15(1111<sub>(2)</sub>)
1 7(0111<sub>(2)</sub>)
2 3(0011<sub>(2)</sub>)
3 1(0001<sub>(2)</sub>)
4 0(0000<sub>(2)</sub>)

图9示出生成LUT的方法的示例的流程图。

在图9中,主机(例如,CPU)可提取最大的概率相关数据值,并且计算提取的最大的概率相关数据值与每个概率相关数据值之间的差。可选地,主机可从硬件加速器(例如,NPU)接收最大的概率相关数据值与每个概率相关数据值之间的差,而不直接计算该差。

主机可提取通过计算最大的概率相关数据值与每个概率相关数据值之间的差而获得的差中的最大差。例如,在概率相关数据是990、991、992、992、990、995、993和997的情况下,主机可将最大的概率相关数据值997与各个概率相关数据值之间的差7、6、5、5、7、2、4和0之中的最大差确定为7。

主机可基于最大差和用于输出数据的量化的比特数来生成LUT。在前述示例中,主机可基于作为7的最大差来确定LUT索引范围,并且基于用于输出数据的量化的比特数生成与这样的整数相关联的信息:所述整数与对应于索引的指数函数的倒数成比例。例如,主机可基于作为7的最大差和作为8比特的比特数,生成上面的表2中指示的LUT。

图10示出确定有效量化边界的方法的示例的流程图。

在图10中,硬件加速器可如等式6所示确定有效量化边界。

等式6:

x_q=ln(2w-1)

在等式6中,w表示用于输出数据的量化的比特数。例如,在使用int8硬件加速器的情况下,w可被确定为7。例如,在使用int4硬件加速器的情况下,w可被确定为3。例如,在使用uint4硬件加速器的情况下,w可被确定为4。

硬件加速器可基于上面的等式6来确定量化边界,并且基于确定的量化边界来有效地使用可用的量化范围。也就是说,在这样的示例中,LUT可在相同数量的量化比特的情况下提供更高水平的准确度。当基于上面的等式6确定量化边界时,可能需要基于x_q重新计算LUT的内容。

图11示出获得归一化输出数据的方法的示例的流程图。

上面参照图1至图10描述的硬件加速器的操作可应用于图11的示例,因此这里将省略更详细和重复的描述。

硬件加速器可通过由上面的等式5表示的近似运算来估计柔性最大值。然而,在使用等式5中的近似柔性最大值执行复杂任务的示例中,任务的最终准确度可能由于近似误差而下降到破坏任务的正常性能的程度。硬件加速器可通过将补偿系数α应用于近似柔性最大值来获得归一化输出数据。例如,近似柔性最大值可为缩放后的实际柔性最大值,因此硬件加速器可通过将缩放的等级分配给近似柔性最大值来获得归一化输出数据。可如等式7所示来获得归一化输出数据。

等式7:

y(x)=α*y(x)

在等式7中,y(x)表示通过上面的等式5估计的柔性最大值,α表示补偿系数,并且y(x)表示归一化输出数据。可如等式8所示来计算补偿系数α。

等式8:

在等式8中,y表示近似柔性最大值。硬件加速器可计算近似柔性最大值的和(例如,sum_rexp),并将所述和映射到补偿系数α的索引(例如,alpha_idx)。硬件加速器可使用预设函数将近似柔性最大值的和映射到补偿系数α的索引。例如,硬件加速器可如等式9所示将近似柔性最大值的和映射到补偿系数α的索引。

等式9:

alpha_idx=round(sum_rexp)

等式9仅作为将近似柔性最大值的和映射到补偿系数α的索引的示例而提供。作为非限制性示例,可使用各种函数(f(sum_rexp))(例如,alpha_idx=round(sum_rexp)-1、alpha_idx=ceil(sum_rexp)-1、alpha_idx=floor(sum_rexp)等)来执行映射。

硬件加速器可使用包括与补偿系数α(例如,alpha)相关联的信息的补偿系数LUT(例如,LUT_expln)来获得与索引对应的补偿系数α,并且通过将每个近似柔性最大值乘以补偿系数α来获得与概率相关数据对应的归一化输出数据。

例如,可在下面的表5中指示与使用有符号的16比特的16个索引对应的补偿系数LUT。

表5:

例如,可在下面的表6中指示与使用无符号的8比特的16个索引对应的补偿系数LUT。

表6:

例如,可在下面的表7中指示与使用有符号的4比特的16个索引对应的补偿系数LUT。

表7:

索引(id) LUT_expln(id)
0 15
1 8
2 5
3 4
4 3
5 3
6 2
7 2
8 2
9 2
10 1
11 1
12 1
13 1
14 1
15 0

例如,可在下面的表8中指示与使用有符号的2比特的7个索引对应的补偿系数LUT。

表8:

索引(id) LUT_expln(id)
0 3
1 2
2 1
3 1
4 1
5 1
6 0

此外,为了提高准确度,可调整补偿系数LUT的缩放系数。例如,在补偿系数LUT被缩放到LUT_expln[0,scale*sum_q]的情况下,可基于alpha_idx=round(scale*sum_rexp)-1来确定补偿系数α的索引,其中,[0,sum_q]可表示原始补偿系数LUT的范围,scale可表示缩放系数。

在此针对图1至图11描述的神经网络装置、主机、硬件加速器、存储器、神经网络装置200、主机210、硬件加速器230、存储器220以及其他装置、设备、单元、模块和其他组件通过硬件组件实现。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明起见,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但是在其他的示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,其中,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。

图1至图11中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,计算硬件被如上所述实现为执行指令或软件,以执行在本申请中描述的通过该方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。

用于控制处理器或计算机实现硬件组件并执行如上所述的方法的指令或软件被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置处理器或者计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由处理器或者计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由处理器或者计算机使用解释器执行的高级代码。本领域的普通技术的编程人员可基于附图中所示的框图和流程图以及说明书中的对应描述,容易地编写指令或软件,附图中所示的框图和流程图以及说明书中的对应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。

用于控制处理器或计算机以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、可编程随机存取只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极速数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行指令的任何其他装置。

虽然本公开包括具体的示例,但是本领域普通技术人员将清楚,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合,和/或由其他组件或它们的等同物替换或补充,则可实现合适的结果。

因此,公开的范围不是由具体实施方式限定,而是由权利要求及其等同物限定,并且在权利要求及其等同物的范围内的所有变化应被解释为包括在公开中。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:重要空白凭证管理方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!