CN117829225A - 具有再量化电路的神经网络硬件加速器电路 - Google Patents

具有再量化电路的神经网络硬件加速器电路 Download PDF

Info

Publication number
CN117829225A
CN117829225A CN202211177373.7A CN202211177373A CN117829225A CN 117829225 A CN117829225 A CN 117829225A CN 202211177373 A CN202211177373 A CN 202211177373A CN 117829225 A CN117829225 A CN 117829225A
Authority
CN
China
Prior art keywords
quantization
quantized
values
format
output
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
CN202211177373.7A
Other languages
English (en)
Inventor
G·德索利
S·P·辛格
T·勃伊施
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.)
STMICROELECTRONICS INTERNATIONAL NV
STMicroelectronics SRL
Original Assignee
STMICROELECTRONICS INTERNATIONAL NV
STMicroelectronics SRL
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 STMICROELECTRONICS INTERNATIONAL NV, STMicroelectronics SRL filed Critical STMICROELECTRONICS INTERNATIONAL NV
Priority to CN202211177373.7A priority Critical patent/CN117829225A/zh
Publication of CN117829225A publication Critical patent/CN117829225A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本公开的各实施例涉及具有再量化电路的神经网络硬件加速器电路。卷积神经网络包括卷积电路系统。卷积电路系统对输入张量值执行卷积操作。所述卷积神经网络包括再量化电路系统,再量化电路系统将从所述卷积电路系统输出的卷积值再量化。

Description

具有再量化电路的神经网络硬件加速器电路
技术领域
本公开通常涉及在传感器系统中实施的卷积神经网络。
背景技术
深度学习算法在涉及识别、标识和/或分类任务的众多应用中提升了非常高的性能,然而,这种进步可能以大量使用处理能力为代价。因此,其采用可能会因缺乏低成本和节能解决方案的可用性而受到阻碍。因此,在嵌入式设备上部署深度学习应用时,严格的性能规范可能与功耗和能耗方面的严格限制并存。
发明内容
本公开的实施例提供了一种神经网络,该神经网络利用神经网络的层之间的张量数据的再量化。张量数据可以最初以第一量化格式量化并且提供给神经网络的第一层以进行处理。在第一层处理了量化张量数据之后,数据被传递给再量化单元或电路。再量化单元将数据再量化为相同的量化格式、新的量化格式或相同的量化格式和新的量化格式两者。再量化数据接着被传递给神经网络的下一层。
再量化过程提供了许多益处。在某些情况下,如果与前一层相比,缩放和偏移等量化因子发生变化,则神经网络的层、过程或单元可以更有效地处理数据。在某些情况下,如果利用完全不同的量化格式,则神经网络的层、过程或单元可以更有效地处理数据。在某些情况下,两个并行层、单元或过程从前一层接收不同量化格式的数据可能是有益的。本公开的实施例提供了在神经网络的层、过程或单元之间以多种方式再量化张量数据的灵活性。
在一些实施例中,神经网络为卷积神经网络(CNN)。CNN的每一层包括卷积过程、激活过程和池化过程。再量化单元可以在卷积过程、激活过程、池化过程之后或在这些过程中的每一过程之后实施。
在一些实施例中,CNN网络包括卷积电路系统,该卷积电路系统被配置为通过对多个量化输入值执行卷积操作来生成多个卷积值。CNN包括第一再量化电路系统,该第一再量化电路系统被耦合到卷积电路系统并且被配置为通过对卷积值执行第一量化过程来生成第一量化格式的多个第一量化输出值。
在一些实施例中,一种方法包括在神经网络的第一层处接收包括多个量化输入数据值的输入张量以及通过对量化数据值执行第一操作从输入张量值生成中间数据值。该方法包括在第一层处生成包括多个第一量化输出数据值的第一输出张量。该生成包括通过对中间数据值执行第一再量化过程。
在一些实施例中,一种电子设备包括神经网络。该神经网络包括:流链路,被配置为提供包括多个量化输入数据值的张量数据;以及硬件加速器,被配置为接收张量数据并且通过对量化输入数据值执行操作来生成中间数据值。神经网络包括再量化电路系统,该再量化电路系统被配置为通过对中间数据值执行再量化操作来生成多个量化输出数据值。
在一些实施例中,一种具有内容的非暂态计算机可读介质,该内容配置卷积神经网络的硬件加速器以执行方法。该方法包括:接收包括多个量化输入数据值的输入张量;以及通过对量化数据值执行第一操作,从输入张量值生成中间数据值。该方法包括生成包括多个第一量化输出数据值的第一输出张量。该生成包括对中间数据值执行第一再量化过程。
附图说明
图1为根据一些实施例的电子设备的框图。
图2为根据一些实施例的CNN内的过程流程的框图。
图3为根据一些实施例的特征张量的表示。
图4A至图4C为图示了根据一些实施例的量化原理的曲线图。
图5A至图5C为根据一些实施例的CNN的卷积层的框图。
图6为根据一些实施例的CNN的池化层的框图。
图7为根据一些实施例的CNN的激活过程的框图。
图8为根据一些实施例的用于操作CNN的方法的流程图。
图9为根据一些实施例的电子设备或系统的功能框图。
具体实施方式
图1为根据一些实施例的电子设备100的框图。电子设备100包括卷积神经网络(CNN)101。CNN 101接收输入数据102并且基于输入数据102生成输出数据104。CNN 101通过对输入数据102执行一个或多个卷积操作来生成输出数据104。
在一个实施例中,输入数据102由电子设备100的图像传感器(未示出)或另一种类型的传感器提供。因此,输入数据102可以包括对应于由图像传感器捕获的一个或多个图像的图像数据。图像数据被格式化以使得其可以被CNN 101接收。CNN 101分析输入数据102并且生成输出数据104。输出数据104指示与图像数据的一个或多个方面相关的预测或分类。输出数据104可以对应于识别图像的形状、对象、表面或其他方面。
尽管本文中的各种示例集中于结合图像传感器实施的CNN 101,但在不脱离本公开的范围或传感器类型的各种组合的情况下,CNN 101可以结合其他类型的传感器来实施。另外,CNN 101可以在不脱离本公开的范围的情况下处理除传感器数据之外的数据。此外,在不脱离本公开的范围的情况下,可以利用除CNN之外的机器学习网络或过程。
在一个实施例中,CNN 101用机器学习过程训练以识别提供给CNN 101的训练图像的方面。机器学习过程包括将具有已知特征的多个训练图像传递给CNN。机器学习过程训练CNN 101生成预测数据,该预测数据准确预测或分类训练图像的特征。训练过程可以包括深度学习过程。
CNN 101包括多个卷积单元或电路106、激活单元108和池化单元110。卷积单元106实施CNN 101的卷积层。因此,每个卷积单元106为实施对应于CNN 101的卷积层的卷积操作的硬件块。每个激活单元108为在卷积操作之后实施激活操作的硬件块。每个池化单元110为实施卷积层之间的池化功能的硬件块。卷积单元106、激活单元108和池化单元110协作从输入数据102生成输出数据104。
在一个实施例中,每个卷积单元106包括卷积加速器。每个卷积单元106对提供给卷积单元106的特征数据执行卷积操作。特征数据是从输入数据102生成。卷积层处的卷积操作将特征数据与在CNN 101的机器学习过程中生成的内核数据进行卷积。卷积操作引起根据内核数据而改变的特征数据。
来自卷积单元106的数据被提供给激活单元108。激活单元108对来自卷积单元106的数据执行激活操作。激活操作可以包括对从卷积单元106接收的数据值执行非线性操作。激活操作的一个示例为整流线性单元(ReLU)操作。在不脱离本公开的范围的情况下,可以利用其他类型的激活操作。
池化单元110从激活单元108接收特征数据。池化单元110对从激活单元108接收的特征数据执行池化操作。对特征数据执行池化操作,为下一个卷积层的卷积操作准备特征数据。池化单元110执行卷积层之间的池化操作。池化单元110用于加速卷积神经网络操作。池化单元110可以执行最大池化操作、最小池化操作、平均池化操作或其他类型的池化操作。
CNN 101将张量数据结构用于特征数据。每个单元106、108和110的输入为输入张量。每个单元106、108和110的输出为具有与输入张量不同的数据值的输出张量。在一个示例中,卷积单元106接收输入张量并且生成输出张量。激活单元108接收卷积单元106的输出张量作为输入张量并且生成输出张量。池化单元110接收激活单元108的输出张量作为输入张量并且生成输出张量。池化单元110的输出张量可以被传递给下一个卷积层的卷积单元106。
张量类似于矩阵,因为张量包括多个行和列,其中数据值位于各个数据字段中。卷积操作生成与输入张量相同维度的输出张量,但具有不同的数据值。激活操作生成与输入张量相同维度的输出张量,但具有不同的数据值。与输入张量相比,池化操作生成维度减小的输出张量。
池化操作获取特征张量的一部分,例如池化窗口,并且生成与池化操作相比维度减小的池化子张量。池化子张量中的每个数据字段是通过对特征张量中的多个数据字段执行特定类型的数学操作(例如从这些数据字段中取最大值、最小值或平均值)生成的。对特征张量的每个部分执行池化操作。各种池化子张量作为该卷积层的特征张量传递给下一个卷积层。因此,池化有助于减少和排列下一次卷积操作的数据。
继续图像传感器的示例,图像传感器可以输出多个浮点数据值的传感器数据。浮点数据值可能会利用大量内存,或者可能难以使用CNN 101进行处理或效率低下。因此,在将传感器数据排列成输入张量之前,浮点数据值可能经历量化过程。量化过程将每个浮点数据值转换为量化数据值。与浮点数据值相比,量化数据值可以具有减少的位数,可以改变为整数,或者可以通过其他方式改变以促进CNN 101的有效处理。
各种量化格式可以用于输入数据102。一种可能的量化格式为缩放/偏移格式。另一种可能的量化格式为定点格式。使用这些格式中的任何一种都可能有各种优势。与图4A-4C相关地提供了关于这些量化格式的其他细节。虽然描述和附图主要描述了缩放/偏移和定点量化格式,但可以在不脱离本公开的范围的情况下利用其他量化格式。
CNN 101包括多个再量化单元112。图1将再量化单元112图示为在卷积单元106、激活单元108和池化单元110之间的路径之外。然而,实际上,再量化单元通常位于CNN 101的各种硬件单元之间。例如,再量化单元112可以直接位于卷积单元106与激活单元108之间。换句话说,卷积单元的输出被传递给再量化单元112。再量化单元112对卷积单元106的输出张量的数据值执行再量化操作,并且接着将再量化张量值传递给激活单元108。
再量化单元112可以位于激活单元108与后续池化单元110之间。再量化单元112从激活单元108接收输出张量,对激活单元108的输出张量的数据值执行再量化操作,并且将再量化张量传递给池化单元110。
再量化单元112可以位于池化单元110与后续卷积单元106之间。再量化单元112接收池化单元110的输出张量,对池化单元110的输出张量的数据值执行再量化操作,并且将再量化张量传递给卷积单元106。
CNN 101可以包括位于硬件单元106、108和110中的两个硬件单元之间的单个再量化单元112。CNN 101可以包括位于硬件单元106、108和110中的各个硬件单元之间的多个再量化单元112。
在一个示例中,再量化单元112位于第一卷积单元106与第一激活单元108之间。输入数据102已经以包括缩放因子和偏移的缩放/偏移格式量化。卷积单元106对量化输入张量执行卷积操作,并且生成输出张量。再量化单元112可以将卷积单元106的输出张量的数据值再量化为不同的量化格式,例如定点量化格式。或者,再量化单元112可以将卷积单元106的输出张量的数据值再量化为缩放/偏移格式,但具有不同的缩放因子和不同的偏移。或者,可以有位于卷积单元106的输出处的两个再量化单元。再量化单元112中的一个再量化单元可以将输出张量再量化为缩放/偏移格式。另一再量化单元112可以将输出张量再量化为定点量化格式。如果有接收卷积单元106的输出的两个再量化单元112,则再量化单元112中的一个再量化单元可以将其再量化张量传递给激活单元108,而另一个再量化单元112可以将其再量化张量传递给CNN 101的不同单元,或者传递给CNN 101之外的过程或系统。再量化单元112可以通过相同的方式定位在激活单元108和池化单元110的输出。
如本文中所使用,术语“再量化”可以与术语“量化”互换使用。实际上,每个再量化单元112只是执行量化操作的量化单元。利用术语“再量化”是因为量化单元可以对先前量化的数据值或从先前量化的数据值生成的数据值执行量化。
为简单起见,图1的CNN 101图示了卷积单元106、激活单元108、池化单元110和再量化单元112。然而,实际上,CNN 101可以包括许多其他硬件块。这些其他硬件块可以包括批量标准化块、缩放块、偏置块、标准化块、缓冲区、流开关和其他类型的硬件块,其作为CNN101的一部分执行各种操作。
如本文中所使用,术语“卷积单元”可以与“卷积电路”或“卷积电路系统”互换使用。如本文中所使用,术语“池化单元”可以与“池化电路”或“池化电路系统”互换使用。如本文中所使用,术语“激活单元”可以与“激活电路”或“激活电路系统”互换使用。如本文中所使用,术语“再量化单元”可以与“再量化电路”或“再量化电路系统”互换使用。这是因为卷积单元106、激活单元108、池化单元110和再量化单元112为硬件电路。
与实施卷积神经网络的电子设备相关的其他细节可见于2019年2月20日提交的美国专利申请公开第2019/0266479号、2019年2月20日提交的美国专利申请公开第2019/0266485号和2019年2月20日提交的美国专利申请公开第2019/0266784号中。
图2为根据一个实施例的CNN 101内的过程流程的简化框图。CNN 101包括输入层114、卷积层116a和116b、激活层118a和118b、池化层120a和120b以及一个或多个完全连接层122。输入数据102被提供给输入层114并且通过各种卷积层116a和116b、激活层118a和118b、池化层120a和120b以及完全连接层122传递。最终完全连接层122的输出为输出数据104。卷积层116a和116b、激活层118a和118b以及池化层120a和120b中的每个层可以包括相应再量化过程121a-f。
在一个实施例中,第一卷积层116a从输入层114接收特征数据。第一卷积层116a的特征数据为输入数据102。第一卷积层116a通过在输入数据102的特征张量与第一卷积层116a的内核张量之间执行卷积操作,从输入数据102生成特征数据。第一卷积层116a的输出在本文中还称为特征数据。
第一卷积层116a还包括再量化过程121a。可以对由与第一卷积层116a相关联的卷积操作生成的特征数据执行再量化过程121a。再量化过程121a可以生成相同量化格式、不同量化格式或相同量化格式和不同量化格式两者的特征数据。
卷积层116a的卷积过程和再量化过程121a可以共同构成卷积层116a。卷积层116a的卷积过程和再量化过程可以由如关于图1所描述的卷积单元106和再量化单元112执行。
第一卷积层116a将再量化特征数据传递给激活层118a。激活层118a对来自卷积层116a的再量化特征数据执行激活过程。激活过程可以包括对来自特征张量的量化数据值中的每个量化数据值执行非线性数学操作。如前所述,非线性数学操作的一个示例为ReLU操作。
激活层118a还包括再量化过程121b。可以对由与激活层118a相关联的激活操作生成的特征数据执行再量化过程121b。再量化过程121b可以生成相同量化格式、不同量化格式或相同量化格式和不同量化格式两者的特征数据。
激活层118a的卷积过程和再量化过程121b可以共同构成激活层118a。激活层118a的激活过程和再量化过程可以由如关于图1所描述的激活单元108和再量化单元112执行。
激活层118a将再量化特征数据传递给池化层120a。池化层120a对从激活层118a接收的特征数据执行池化操作。池化操作可以包括通过执行最大池化操作、最小池化操作和平均池化操作或其他类型的池化操作中的一种或多种来减小特征张量的维度。
池化层120a还包括再量化过程121c。可以对由与池化层120a相关联的池化操作生成的特征数据执行再量化过程121c。再量化过程121c可以生成相同量化格式、不同量化格式或相同量化格式和不同量化格式两者的特征数据。
池化层120a的池化操作和再量化过程121c可以共同构成池化层120a。池化层120a的池化操作和再量化过程可以由池化单元110和再量化单元112执行。
第二卷积层116b从池化层120a接收特征数据。第一卷积层116b通过在池化层118a的特征张量与第二卷积层116b的内核张量之间执行卷积操作,从池化层118a生成特征数据。
第二卷积层116b还包括再量化过程121d。可以对由与第二卷积层116b相关联的卷积操作生成的特征数据执行再量化过程121d。再量化过程121d可以生成相同量化格式、不同量化格式或相同量化格式和不同量化格式两者的特征数据。
卷积层116b的卷积过程和再量化过程121d可以共同构成卷积层116b。卷积层116b的卷积过程和再量化过程可以由如关于图1所描述的卷积单元106和再量化单元112执行。
卷积层116b将再量化特征数据传递给激活层118b。激活层118b对来自卷积层116b的再量化特征数据执行激活过程。激活过程可以包括对来自特征张量的量化数据值中的每个量化数据值执行非线性数学操作。
激活层118b还包括再量化过程121e。可以对由与激活层118b相关联的激活操作生成的特征数据执行再量化过程121e。再量化过程121e可以生成相同量化格式、不同量化格式或相同量化格式和不同量化格式两者的特征数据。
激活层118b的激活过程和再量化过程121e可以共同构成激活层118b。激活层118b的激活过程和再量化过程可以由如关于图1所描述的激活单元108和再量化单元112执行。
激活层118b将再量化特征数据传递给池化层120b。池化层120b对从激活层118b接收的特征数据执行池化操作。池化操作可以包括通过执行最大池化操作、最小池化操作和平均池化操作或其他类型的池化操作中的一种或多种来减小特征张量的维度。
池化层120b还包括再量化过程121f。可以对由与池化层120b相关联的池化操作生成的特征数据执行再量化过程121f。再量化过程121f可以生成相同量化格式、不同量化格式或相同量化格式和不同量化格式两者的特征数据。
池化层120b的池化操作和再量化过程121f可以共同构成池化层120b。池化层120b的池化操作和再量化过程121f可以由池化单元110和再量化单元112执行。
虽然图2中所示的每一层都包括再量化过程,但实际上,一个或多个层可能不包括再量化过程。此外,CNN 101可以包括比图2所示更多的层。实际上,CNN 101包括除图2所示的过程之外的其他过程。特别地,CNN 101可以包括批量归一化操作、缩放操作、偏置操作、归一化操作、激活操作和其他类型的操作。
图3为根据一个实施例的特征张量128的表示。特征张量128包括多个块302。这些块302中的每个块表示数据值。张量128包括高度、宽度和深度。尽管图3的特征张量128图示了5x5x5张量,但实际上,特征张量128可以包括其他调度、宽度和深度维度。
在一个实施例中,在各种卷积、激活、池化和再量化操作期间,特征张量128被分成批次。特征张量128可以按高度、宽度或深度进行批处理。对来自特征张量的批次执行卷积、激活、池化和再量化操作。每个批次可以被视为特征张量128的子张量。
图4A为图示了根据一些实施例的定点值xf的范围的曲线图400。浮点值xf可以对应于在量化之前由CNN 101最初接收的传感器数据。浮点值具有在最小浮点值xfmin与最大浮点值xfmax之间的范围。曲线图400图示了xfmin小于零并且xfmax大于零。
在曲线图400的示例中,xf的正值范围大于xf的负值范围。看待这一点的一种方法是xfmax的绝对值大于xfmin的绝对值。在一个示例中,xf为一个八位数,其值可以在-128与128之间。xfmax可以为128,而xfmin可以为-14。因此,图4A中存在大量未使用的负值范围。
图4B为图示了根据一些实施例的根据定点量化方案的量化值xq的范围的曲线图402。在定点量化方案中,每个值xf被量化为对应的值xq。浮点值xf对应于曲线图402的横轴。量化值xq对应于曲线图402的纵轴。定点量化通常通过将每个值xf乘以缩放值来执行。通常,缩放值是2的倍数。
定点量化的一个特性是正负值的范围将具有与生成量化值xq的浮点值xf的正负值范围类似的特性。正如xf的负值范围小于xf的正值范围一样,xq的负值范围小于xq的正值范围。这可以通过注意最低量化值xqmin的绝对值小于最高量化值xqmax的绝对值来理解。因此,对于曲线图402中表示的定点量化方案,存在类似大范围的未使用的负值。
图4C为图示了根据一些实施例的根据缩放/偏移量化方案的量化值xq的范围的曲线图404。在缩放/偏移量化方案中,量化值是根据缩放因子s和零偏移z生成的。z的值对应于量化值的y截距。缩放因子是斜率的倒数。
缩放/偏移量化方案的一个益处是利用了全范围的正值和负值。最小量化值xqmin的绝对值与缩放/偏移量化方案中的最大量化值xqmax的绝对值大致相同。因此,可以基于xfmin和xfmax来选择z的值和缩放因子,以提供利用与缩放/偏移量化方案相关联的对应比特范围中可用的全范围的正负数据值的量化值。每个缩放/偏移量化值xq的位数可以与每个浮点值xf的位数相同或更少。
图5A-5C表示根据一些实施例的连同再量化单元的CNN的卷积单元。在讨论图5A-5C之前,描述与从浮点值进行量化和量化值的再量化相关联的一些关系是有益的。对于图5A-5C的讨论,浮点值xf通过以下一般关系与缩放/偏移量化值xq相关:
xf=s(xq-z), (1a)
其中s为缩放因子,z为零偏移。在以下讨论中,带有后缀“i”的术语对应于卷积层处的输入值。带有后缀“o”的术语对应于再量化操作的输出值。如果输入处的值先前已被量化,则生成量化输入值xqi的浮点值xf可以通过以下关系与量化输入值xqi相关:
xf=si(xqi-zi), (1b)
其中si为输入缩放因子,zi为与在卷积层之前发生的量化操作相关联的输入零偏移。
浮点值的卷积操作具有以下一般公式:
Conv=∑nxf*wf, (2)
其中wf为与卷积操作相关联的浮点加权值,Conv为卷积操作的输出,索引n是指张量内的特定值或位置。使用等式1b为xf重写等式2并以缩放/偏移格式重写浮点加权值wf提供以下内容:
Conv=∑nsi(xqi-zi)*sw(w-zw), (3)
其中w为缩放/偏移加权值,sw为与缩放/偏移格式的权重值wf相关联的缩放因子,zw为缩放偏移格式的加权值wf的零偏移。以下关系对于简化卷积值是有用的:
Xi=(xqi-zi)并且W=(w-zw). (4)
卷积值现在可以用以下关系表示:
Conv=(si*sw)∑nXi*W. (5)
此外,如果我们用以下方式将sum中的值重命名为ACC:
Acc=∑nXi*W, (6)
则我们可以用以下方式表示卷积值:
Conv=(si*sw)Acc. (7)
将再量化单元操作引入卷积操作,等式7中的值可以用以下方式表示:
so(xqo-zo)=(si*sw)Acc, (8)
其中so为与再量化过程相关联的输出缩放因子,xqo为由再量化过程生成的量化值,zo为与再量化操作相关联的输出零偏移。
如果我们对输出量化值引入饱和操作,则输出量化值可以用以下关系表示:
xqo=SAT(A*Acc+B), (9)
其中SAT为饱和操作,其强制xqo以所需位数(例如8b或16b)表示,A为(si*so)/sw,B为以选定位数表示的输出零偏移。
图5A图示了根据一些实施例的CNN 101的卷积单元106。流链路130提供输入张量的量化值xqi。输入张量可以从先前的池化层、从先前的激活层或从初始量化操作接收。在任何情况下,张量中的数据值由流链路130作为量化输入值xqi的流提供。图5A图示了位于流链路130与卷积单元106之间的减法器132和移位器134。尽管减法器132和移位器134被示为与卷积单元106分离的硬件块,但实际上,减法器132和移位器134可以为卷积单元106的一部分。
图5A中所示的卷积方案图示了与卷积单元106相关联的再量化操作。再量化单元112耦合到卷积单元106。再量化单元112对来自卷积单元106的数据值进行再量化。尽管再量化单元112被示为与卷积单元106分离的硬件块,但在某些情况下,再量化单元112可以被视为卷积单元106的一部分。再量化单元112对卷积单元106的输出进行再量化。此外,实际上,减法器132和移位器134可以被视为再量化单元112的一部分。
在图5A的示例中,再量化单元112将卷积单元106的输出再量化为定点量化方案。如果来自流链路130的值xqi先前为缩放/偏移格式,则减法器132可以减去对应于输入量化方案的零偏移zi的值。移位器134可以将从减法器132接收的数据值向下移位回更小的位数。例如,来自流链路130的量化输入值xqi最初可以具有8位值。减法器132可以为24位减法器并且可以在减去输入零偏移zi的同时生成25位值。移位器134将来自减法器132的数据值移位回八位值。如果从流链路130提供的量化输入值xqi在定点量化方案中,则减法器132可以被选择性地配置为减去零值。由于在定点量化方案中没有Z偏移,因此输入的Z偏移zi可以被视为零。
卷积单元106接收经过减法器132和移位器134处理后的量化输入值xqi。卷积单元106对量化输入值xqi中的每个量化输入值执行卷积操作。卷积操作对应于将每个量化值乘以加权因子。卷积单元106的输出为ACC。由卷积单元106输出的每个数据值被赋予符号ACC,这是因为卷积单元106可以被视为卷积加速器。
再量化单元112接收值ACC并且执行再量化操作。再量化单元112可以被视为包括算术子单元136和138的算术单元。算术子单元136将每个值ACC乘以一个值。如前所述,值A对应于与导致量化输入值xqi的初始量化相关联的输入缩放因子以及与卷积单元106的加权值相关联的缩放因子sw。如果存在与再量化如此相关联的输出缩放因子,则值A可以对应于si*sw/so
子单元136将数据值提供给移位器138。移位器138可以根据需要向上或向下移位数据值。例如,移位器138可以将由子单元136提供的值饱和到较低位值(例如从16位到8位)。再量化单元112的输出为再量化数据值xqo。实际上,图5A的再量化单元112的输出可以对应于卷积层的输出。如前所述,再量化单元112可以为卷积单元106的一部分,使得卷积单元106执行卷积和再量化操作。
图5B为根据一些实施例的CNN 101的卷积单元106的图式。图5B的卷积操作基本上类似于图5A的卷积操作。主要区别在于图5B的再量化单元112将卷积单元106的输出再量化为缩放/偏移格式而不是定点量化形式。图5B的再量化单元112的子单元136将每个值ACC乘以因子A并加上值B。如前所述,因子A对应于输入缩放因子乘以加权缩放因子除以输出缩放因子。值B对应于再量化单元112的缩放/偏移量化格式的Z偏移zo
图5C为根据一些实施例的CNN 101的卷积单元106的图式。图5C的卷积操作与图5A和图5B的卷积操作的不同之处在于存在耦合到卷积单元106的两个再量化单元112a和112b。第一再量化单元112a类似于图5A的再量化单元112。第二再量化单元112b类似于图5B的再量化单元112。再量化单元112a和112b中的每个再量化单元从卷积单元106接收值ACC。再量化单元112a根据如关于图5A描述的定点量化方案对值ACC进行再量化。再量化单元112b根据如关于图5B描述的缩放/偏移量化方案对值ACC进行再量化。因此,图5C的卷积层根据第一量化格式接收量化输入数据值,对输入的量化数据值执行卷积操作,并且生成第一量化格式和第二量化格式的输出量化数据值xqo
图6为根据一些实施例的CNN 101的池化操作的图式。在图6中,池化单元110从流链路130接收量化数据值xqi。在继续描述图6的组件之前,引入与浮点值的池化操作、量化值xqi的池化操作和池化值的再量化相关联的一些关系是有益的。以下讨论主要与平均池化操作相关。然而,在不脱离本公开的范围的情况下,可以利用其他类型的池化操作。
输入张量的n个浮点值xf的平均池化值y可以由以下关系表示:
将等式1b代入等式10得出以下关系:
使数量C用以下方式定义:
使数量Xi用以下方式定义:
Xi=(xqi-zi). (13)
池化单元110的输出Acc可用以下方式给出:
再量化可以根据以下关系执行:
so(xo-zo)=si*Acc-C. (15)
更特别地,可以根据以下关系生成缩放/偏移格式的再量化输出值:
可以用以下方式执行再量化为定点偏移:
回到图6的描述,量化输入数据值xqi可以为由卷积层或激活层输出的张量的数据值。量化输入数据值xqi可以为定点格式或缩放/偏移格式。与图5A-5C中所示的卷积层类似,池化层包括减法器132和移位器134。减法器132减去与先前量化过程相关联的零偏移值zo。移位器134将数据值移位到期望的位数。
池化单元110对从移位器接收的数据值执行池化操作。通常,池化操作可以包括减小输入张量的维度。这可以通过执行最小池化操作、最大池化操作、平均池化操作或其他类型的池化操作来完成,其中来自输入张量的多个数据值在较小的输出张量中组合成单个数据值。
池化单元110可以生成数据值ACC。然而,在输出数据值ACC之前,池化单元110可以将每个数据值ACC乘以对应于输入缩放因子除以输出缩放因子和池化因子的乘积的因子A。池化因子可以对应于来自输入张量的数据值的数量,这些数据值在输出张量中组合成单个输出值。加法器140将与新的或下一个或后续量化操作相关联的零偏移值相加。如果新的量化操作为缩放/偏移量化操作,则加法器添加零偏移值zo。如果新的量化操作为定点量化操作,则加法器添加零值。在所示实施例中,再量化操作的一部分由池化单元110执行。加法器140对应于将来自图5B和图5C的B的等价物相加的算术块,或者可以为独立的加法器电路。加法器140、移位器134和减法单元132可以统称为再量化单元112。
图7对应于根据一些实施例的CNN 101的激活层。激活层对从卷积操作接收的张量值执行激活操作。张量值为从流链路130接收的量化输入值xqi。在描述图7的激活层的组件之前,描述与浮点和量化值的非线性激活相关联的一些关系是有益的。
在一些实施例中,激活单元108使用二次多项式对输入值执行非线性变换。从浮点输入值xf的情况开始,非线性函数y(xf)可以根据以下关系应用于浮点值xf:
y(xf)=(axf+b)xf+c (18)
其中a、b和c为标量系数。引入如等式1b中描述的输入量化给出以下关系:
y(xf)={asi(xqi-zi)+b}si(xqi-zi)+c. (19)
现在我们引入以下关系:
Xi=xi-zi, (20)
B=bsi,以及(22)
C=c.(23)
这使我们能够用以下形式呈现非线性函数:
我们现在可以将前面等式中的结果再量化如下:
我们进一步引入以下关系:
A’=(a*si^2)/so, (26)
B’=b*si/so,以及 (27)
C’=c/so+zo. (28)
我们现在可以用以下关系表示量化的输出值:
现在回到图7的描述,激活层包括位于流链路130与激活单元108之间的减法器132和移位器134。移位器134的减法器132执行先前关于图5A-6描述的相同操作。
激活单元108对从前一个卷积层接收的每个数据值执行非线性激活操作。激活操作可以使用任何通用激活功能。在一个示例中,激活操作与再量化单元112组合,以同时执行激活功能和再量化操作。激活单元108通过移位器134接收量化输入值xqi,并且如上所述生成值A*X^2+B*X+C。接着,再量化单元用如上所述的值A'、B'和C'再量化这些值。激活单元108的输出是再量化的激活数据值xqo。在不脱离本公开的范围的情况下,可以使用其他类型的激活和再量化。
图8为根据一些实施例的用于操作CNN的方法800的流程图。在802处,方法800包括在神经网络的第一层处接收包括多个量化输入数据值的输入张量。在804处,方法800包括通过对量化数据值执行第一操作,从输入张量值生成中间数据值。在806处,方法800包括通过对中间数据值执行第一再量化过程,在第一层处生成包括多个第一量化输出数据值的第一输出张量。
图9为根据一些实施例的电子设备或系统900的功能框图。系统900可用于实施如关于图1-8所描述的CNN、CNN的组件或涉及CNN的过程。系统900包括一个或多个处理核心或电路902。处理核心902可以包括例如一个或多个处理器、状态机、微处理器、可编程逻辑电路、离散电路系统、逻辑门、寄存器等,以及其各种组合。处理核心可以控制系统900的整体操作、系统900对应用程序的执行等。
系统900包括一个或多个存储器,例如一个或多个易失性和/或非易失性存储器,其可以存储例如与系统900的控制、系统900执行的应用程序和操作相关的全部或部分指令和数据等。如图所示,系统900包括一个或多个高速缓冲存储器904、一个或多个主存储器906和一个或多个辅助存储器908,每个都包括存储器管理电路系统或MMU910。存储器904、906、908中的一个或多个存储器包括存储器阵列,其在操作中可由系统900执行的一个或多个过程共享。
系统900可以包括一个或多个传感器920(例如图像传感器、加速度计、压力传感器、温度传感器等)、一个或多个接口930(例如无线通信接口、有线通信接口等)、一个或多个ANN电路,如图所示的卷积神经网络(CNN)加速器电路940和其他电路950,其可以包括其他功能电路、天线、电源等,以及主总线系统960。加速器电路940可以包括卷积电路、激活电路、池化电路和如前所述的其他电路。加速器电路940可以包括如前所述的再量化电路112。
主总线系统960可以包括耦合到系统900的各种组件的一个或多个数据、地址、电源和/或控制总线。系统900还可以包括附加的总线系统,例如:总线系统962,以通信方式耦合高速缓冲存储器904和处理核心902;总线系统964,以通信方式耦合高速缓冲存储器904和主存储器906;总线系统966,以通信方式耦合主存储器906和处理核心902;以及总线系统968,以通信方式耦合主存储器906和辅助存储器908。
一个或多个主存储器906通常是系统900的工作存储器(例如,处理核心902在其上工作或诸如CNN加速器电路系统940之类的协处理器在其上工作的一个或多个存储器),并且通常可以是有限大小的易失性存储器(例如,DRAM)存储与系统900执行的过程相关的代码和数据。为方便起见,此处对存储在存储器中的数据的引用也可以指代存储在存储器中的代码。在实施例中,诸如SRAM、ReRAM、PCM、MRAM、FRAM、多级存储器等非易失性存储器可以用作或用于一个或多个主存储器中。辅助存储器908通常可以是非易失性存储器,其存储指令和数据,当系统900需要时,可以检索并存储在主存储器906中。与辅助存储器908相比,高速缓冲存储器904可以是相对较快的存储器,并且通常具有有限的大小,其可能大于主存储器906的大小。
高速缓冲存储器904临时存储代码和数据以供系统900以后使用。系统900可以首先检查高速缓冲存储器904以查看数据或代码是否已经存储在高速缓冲存储器904中,而不是从辅助存储器908中检索所需的代码或数据以存储在主存储器906中。高速缓冲存储器904可以通过减少检索数据和代码以供系统900使用所需的时间和其他资源来显著提高系统(例如系统900)的性能。当(例如从辅助存储器908)检索代码和数据以供系统900使用时,或者当将数据或代码写入(例如到主存储器906或辅助存储器908)时,数据或代码的副本可以存储在高速缓冲存储器904中以供系统900以后使用。可以采用各种高速缓存管理例程来控制存储在一个或多个高速缓冲存储器904中的数据。
在一些实施例中,CNN网络包括卷积电路系统,该卷积电路系统被配置为通过对多个量化输入值执行卷积操作来生成多个卷积值。CNN包括第一再量化电路系统,该第一再量化电路系统被耦合到卷积电路系统并且被配置为通过对卷积值执行第一量化过程来生成第一量化格式的多个第一量化输出值。
在一些实施例中,一种方法包括在神经网络的第一层处接收包括多个量化输入数据值的输入张量以及通过对量化数据值执行第一操作从输入张量值生成中间数据值。该方法包括在第一层处生成包括多个第一量化输出数据值的第一输出张量。该生成包括通过对中间数据值执行第一再量化过程。
在一些实施例中,一种电子设备包括神经网络。神经网络包括:流链路,被配置为提供包括多个量化输入数据值的张量数据;以及硬件加速器,被配置为接收张量数据并且通过对量化输入数据值执行操作来生成中间数据值。神经网络包括再量化电路系统,该再量化电路系统被配置为通过对中间数据值执行再量化操作来生成多个量化输出数据值。
在一些实施例中,一种具有内容的非暂态计算机可读介质,该内容配置卷积神经网络的硬件加速器以执行方法。该方法包括:接收包括多个量化输入数据值的输入张量;以及通过对量化数据值执行第一操作,从输入张量值生成中间数据值。该方法包括生成包括多个第一量化输出数据值的第一输出张量。该生成包括对中间数据值执行第一再量化过程。
一些实施例可以采取计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,该计算机可读介质包括适于执行上述方法或功能中的一个或多个的计算机程序。介质可以是物理存储介质,例如只读存储器(ROM)芯片或磁盘,例如数字多功能盘(DVD-ROM)、压缩盘(CD-ROM)、硬盘、将由适当的驱动器或通过适当的连接读取的存储器、网络或便携式媒体物品,包括以一个或多个条形码或存储在一个或多个此类计算机可读介质上的其他相关代码编码并可由适当的阅读器设备读取。
此外,在一些实施例中,一些或所有方法和/或功能性可以通过其他方式实施或提供,例如至少部分地以固件和/或硬件的方式,包括但不限于一个或多个特殊应用集成电路(ASIC)、数字信号处理器、离散电路系统、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂的可编程逻辑设备(CPLD)等,以及采用RFID技术的设备及其各种组合。
上文描述的各种实施例能够组合以提供其他实施例。能够鉴于以上详细描述对实施例进行这些和其他修改。一般来说,在随附权利要求中,所使用的术语不应被解释为将权利要求限制为说明书和权利要求中公开的具体实施例,而是应被解释为包括所有可能实施例以及此类权利要求所属的等效物的完整范围。因此,权利要求不受本公开的限制。

Claims (30)

1.一种卷积神经网络,包括:
卷积电路系统,被配置为通过对输入量化格式的多个量化输入值执行卷积操作来生成多个卷积值;以及
第一再量化电路系统,被耦合到所述卷积电路系统,并且被配置为通过对所述卷积值执行第一量化过程来生成第一输出量化格式的多个第一量化输出值。
2.根据权利要求1所述的卷积神经网络,还包括第二再量化电路系统,所述第二再量化电路系统被耦合到所述卷积电路系统,并且被配置为通过对所述卷积值执行第二量化过程来生成第二输出量化格式的多个第二量化输出值。
3.根据权利要求2所述的卷积神经网络,其中所述第一输出量化格式为缩放/偏移量化格式,并且所述第二输出量化格式为定点量化格式。
4.根据权利要求1所述的卷积神经网络,其中所述输入量化格式为缩放/偏移格式,并且所述第一输出量化格式为所述缩放/偏移量化格式。
5.根据权利要求1所述的卷积神经网络,其中所述输入量化格式为缩放/偏移格式,并且所述第一输出量化格式为定点量化格式。
6.根据权利要求1所述的卷积神经网络,其中所述输入量化格式为定点量化格式,并且所述第一输出量化格式为缩放/偏移量化格式。
7.根据权利要求1所述的卷积神经网络,其中所述输入量化格式为定点量化格式,并且所述第一输出量化格式为所述定点量化格式。
8.根据权利要求1所述的卷积神经网络,还包括:
流链路,被配置为接收所述量化输入值;以及
减法器,被定位在所述流链路与所述卷积电路系统之间,并且被配置为在所述卷积操作之前对所述量化输入值执行减法操作。
9.根据权利要求8所述的卷积神经网络,还包括移位器,所述移位器被耦合在所述减法器与所述卷积电路系统之间,并且被配置为在所述卷积操作之前调整所述量化输入值的位数。
10.根据权利要求1所述的卷积神经网络,还包括池化电路系统,所述池化电路系统被配置为通过对多个第二量化输入值执行池化操作来生成多个池化值;以及
第二再量化电路系统,被耦合到所述池化电路系统,并且被配置为通过对所述池化值执行第二量化过程来生成多个第二量化输出值。
11.根据权利要求1所述的卷积神经网络,还包括激活电路系统,所述激活电路系统被配置为通过对多个第二量化输入值执行激活操作来生成多个激活值;以及
第二再量化电路系统,被耦合到所述激活电路系统,并且被配置为通过对所述激活值执行第二量化过程来生成多个第二量化输出值。
12.一种方法,包括:
在神经网络的第一层处接收包括多个量化输入数据值的输入张量;
通过对所述量化数据值执行第一操作,从所述输入张量值生成中间数据值;以及
在所述第一层处生成包括多个第一量化输出数据值的第一输出张量,所述生成包括通过对所述中间数据值执行第一再量化过程。
13.根据权利要求12所述的方法,其中所述第一操作为卷积操作。
14.根据权利要求12所述的方法,其中所述第一操作为池化操作。
15.根据权利要求12所述的方法,其中所述第一操作为激活操作。
16.根据权利要求12所述的方法,包括:通过对所述中间数据值执行第二再量化过程,在所述第一层处生成包括多个第二量化输出数据值的第二输出张量。
17.根据权利要求16所述的方法,其中所述第一量化输出数据值为第一量化格式,并且所述第二量化输出数据值为第二量化格式。
18.根据权利要求17所述的方法,其中所述第一量化格式为缩放/偏移格式。
19.根据权利要求18所述的方法,其中所述第二量化格式为定点格式。
20.一种电子设备,包括神经网络,所述神经网络包括:
流链路,被配置为提供包括多个量化输入数据值的张量数据;
硬件加速器,被配置为接收所述张量数据,并且通过对所述量化输入数据值执行操作来生成中间数据值;以及
再量化电路系统,被配置为通过对所述中间数据值执行再量化操作来生成多个量化输出数据值。
21.根据权利要求20所述的电子设备,其中所述硬件加速器为卷积加速器。
22.根据权利要求20所述的电子设备,其中所述再量化电路系统包括算术电路系统。
23.根据权利要求20所述的电子设备,其中所述硬件加速器为池化加速器。
24.根据权利要求20所述的电子设备,其中所述硬件加速器为激活加速器。
25.一种具有内容的非暂态计算机可读介质,所述内容配置卷积神经网络的硬件加速器以执行方法,所述方法包括:
接收包括多个量化输入数据值的输入张量;
通过对所述量化数据值执行第一操作,从所述输入张量值生成中间数据值;以及
生成包括多个第一量化输出数据值的第一输出张量,所述生成包括对所述中间数据值执行第一再量化过程。
26.根据权利要求25所述的非暂态计算机可读介质,其中所述硬件加速器为卷积加速器。
27.根据权利要求26所述的方法,其中所述第一操作为卷积操作。
28.根据权利要求25所述的方法,其中所述第一操作为池化操作。
29.根据权利要求25所述的方法,其中所述第一操作为激活操作。
30.根据权利要求25所述的方法,包括:通过对所述中间数据值执行第二再量化过程,在所述第一层处生成包括多个第二量化输出数据值的第二输出张量。
CN202211177373.7A 2022-09-26 2022-09-26 具有再量化电路的神经网络硬件加速器电路 Pending CN117829225A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211177373.7A CN117829225A (zh) 2022-09-26 2022-09-26 具有再量化电路的神经网络硬件加速器电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211177373.7A CN117829225A (zh) 2022-09-26 2022-09-26 具有再量化电路的神经网络硬件加速器电路

Publications (1)

Publication Number Publication Date
CN117829225A true CN117829225A (zh) 2024-04-05

Family

ID=90517803

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211177373.7A Pending CN117829225A (zh) 2022-09-26 2022-09-26 具有再量化电路的神经网络硬件加速器电路

Country Status (1)

Country Link
CN (1) CN117829225A (zh)

Similar Documents

Publication Publication Date Title
CN107239829B (zh) 一种优化人工神经网络的方法
US11727276B2 (en) Processing method and accelerating device
CN111652368B (zh) 一种数据处理方法及相关产品
EP3242254B1 (en) Convolutional neural network hardware configuration
JP6183980B1 (ja) ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CN112418391B (zh) 用于对深度神经网络的权重进行转换的方法和系统
US20180046903A1 (en) Deep processing unit (dpu) for implementing an artificial neural network (ann)
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US10872295B1 (en) Residual quantization of bit-shift weights in an artificial neural network
Daghero et al. Energy-efficient deep learning inference on edge devices
US11853897B2 (en) Neural network training with decreased memory consumption and processor utilization
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
CN113126953A (zh) 针对浮点处理的方法和装置
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
CN114615507B (zh) 一种图像编码方法、解码方法及相关装置
CN109389209B (zh) 处理装置及处理方法
US11604973B1 (en) Replication of neural network layers
CN117829225A (zh) 具有再量化电路的神经网络硬件加速器电路
Wong et al. Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic
CN112189216A (zh) 数据处理方法及设备
CN110889080A (zh) 乘积累加运算装置、乘积累加运算方法和系统
CN111492369A (zh) 人工神经网络中移位权重的残差量化
EP4336409A1 (en) Neural network hardware accelerator circuit with requantization circuits
US20220044090A1 (en) Computing device using sparsity data and operating method thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination