卷积神经网络中基于整数的融合卷积层以及融合卷积方法与流程

文档序号:26715744发布日期:2021-09-22 19:56阅读:459来源:国知局
卷积神经网络中基于整数的融合卷积层以及融合卷积方法与流程

1.本公开涉及卷积神经网络,具体地,涉及在卷积神经网络中提供基于整数的融合卷积层 以及融合卷积方法。


背景技术:

2.当前,在智能边缘装置中使用了深度卷积神经网络(dcnn)。为了在dcnn推理中实 现实时且低功耗,当模型部署在资源有限的装置中时,模型在内存大小和计算操作的数量方 面被进行了压缩。
3.当前大多数机制在卷积运算之前和之后都需要复杂的归一化步骤。归一化阶段的硬件 成本超过了卷积运算的硬件成本。针对量化实现存在一种可能的解决方案,该解决方案仅利 用一个额外的移位器进行归一化,从而显著降低了硬件成本。所提出的解决方案通过以2的 幂的标度限制量化来将基于乘法的归一化转换为仅移位的归一化。所提出的解决方案通过将 非对称量化融合到卷积偏置加法运算中来支持非对称量化,而无需用于零点校准的额外的加 法器。量化库使得零数值误差的硬件部署成为可能。


技术实现要素:

4.一种示例融合卷积层,包括以下中的至少一者:比较器,其能够接收第一零点和乘法累 加结果;第一多路复用器,其耦合到比较器,其中,第一多路复用器接收多个2的幂次方的 指数值;移位归一化器,其耦合至第一多路复用器,其中,移位归一化器能够接收乘法累加 结果和多个2的幂次方的指数值,其中,移位归一化器将对乘法累加结果的量化限制为2的 幂次方的标度;以及第二多路复用器,其耦合到移位归一化器的输出、第一多路复用器,并 接收第二零点且输出激活。
5.在其中一个实施例中,所述乘法累加结果是整数变量。
6.在其中一个实施例中,所述第一零点是融合的。
7.在其中一个实施例中,所述第一零点是近似的整数变量。
8.在其中一个实施例中,所述激活是整数变量。
9.在其中一个实施例中,所述量化是对称、非对称、逐层和逐通道中的一者。
10.在其中一个实施例中,所述激活是relu、prelu、relux和hard

sigmoid中的一者。
11.一种示例性融合卷积方法,包括以下中的至少一者:将输入张量量化为第一2的幂次方 值;将权重张量量化为第二2的幂次方值;基于量化的输入张量和量化的权重张量来执行卷 积;将偏置张量量化为第三2的幂次方值;将卷积的输出和量化的偏置张量进行偏置相加, 并且输出偏置相加;将偏置相加的输出进行非线性处理;以及将非线性处理的输出量化为采 用第四2的幂次方值输出张量的形式的激活。
12.在其中一个实施例中,所述偏置相加是融合的。
13.在其中一个实施例中,所述偏置相加是近似的整数变量。
14.在其中一个实施例中,对所述输出的所述量化是对称、非对称、逐层和逐通道中的
一者。
15.在其中一个实施例中,所述激活是relu、prelu、relux和hard

sigmoid中的一者。
附图说明
16.在附图中:
17.图1是根据本公开的一个实施例的第一示例系统图;
18.图2是根据本公开的一个实施例的第二示例系统图;
19.图3是根据本公开的一个实施例的示例的卷积层的仅移位实现的数据路径;
20.图4是根据本公开的一个实施例的示例量化库的量化计算图;以及
21.图5是根据本公开的一个实施例的示例方法。
具体实施方式
22.以下列出的实施例仅是为了说明对本设备和方法的应用而进行的撰写,并不限制范围。 对这种设备和方法的等同的修改形式应归入权利要求的范围内。
23.在整个以下描述和权利要求书中,使用某些术语来指代特定系统部件。如本领域技术人 员将领会的,不同的团体可用不同的名称来指代部件和/或方法。本文档不意在区分名称不同 但功能相同的组件和/或方法。
24.在以下论述和权利要求书中,术语“包括”和“包含”以开放式方式使用,因此可被解 释为表示“包括但不限于
……”
。此外,术语“耦合”或“耦接”意在表示间接或直接连接。 因此,如果第一装置连接到第二装置,则该连接可以是直接连接或经由其他装置和连接的间 接连接。
25.图1描绘了示例混合计算系统100,该混合计算系统100可用于实现与过程600的一个 或多个部分或步骤的操作相关联的神经网络。在该示例中,与混合系统相关联的处理器包括 现场可编程门阵列(fpga)122、图形处理器单元(gpu)120和中央处理器(cpu)118。
26.cpu 118、gpu 120和fpga 122具有提供神经网络的能力。cpu是可执行许多不同功 能的通用处理器,cpu的通用性导致了用以执行多种不同任务的能力。然而,cpu对多个数 据流的处理受到限制,并且cpu相对于神经网络的功能受到限制。gpu是图形处理器,具 有能够按顺序处理并行任务的许多小型处理核心。fpga是一种现场可编程装置,fpga具有 被重新配置并且以硬连线电路的方式执行可被编程到cpu或gpu中的任意功能的能力。由 于以电路形式对fpga进行编程,因此其速度比cpu快许多倍,并且明显快于gpu。
27.系统还可包含其他类型的处理器,诸如加速处理单元(apu)和数字信号处理器(dsp), apu包括具有片上gpu元件的cpu,dsp被设计为用于执行高速数字数据处理。专用集成 电路(asic)也可执行fpga的硬连线功能。然而,用以设计和生产asic的前置时间(leadtime)大约为一年的若干个季度,而不是在对fpga进行编程中可用的快速周转实施时间。
28.连接有图形处理器单元120、中央处理器118和现场可编程门阵列122,并且图形处理器 单元120、中央处理器118和现场可编程门阵列122连接到存储器接口和控制器112。fpga 通过连接至plc到存储器互连130的可编程逻辑电路连接到存储器接口。利用该额外的装置 是因为fpga在非常大的带宽下运行并且为了使fpga用以执行存储任务所利用的电路最小 化。存储器接口和控制器112另外地连接到永久性存储器盘110、系统存储器114和
只读存 储器(rom)116。
29.图1的系统可用于对fpga进行编程和训练。gpu与非结构化数据一起很好地运行,并 且可用于训练,一旦训练了数据,就可找到确定性的推理模型,并且cpu可利用由gpu确 定的模型数据对fpga进行编程。
30.存储器接口和控制器连接到中央互连124,中央互连另外连接到gpu 120、cpu 118和 fpga 122。中央互连124另外连接到输入和输出接口128和网络接口126。
31.图2描绘了第二示例混合计算系统200,该混合计算系统200可用于实现与过程1000的 一个或多个部分或步骤的操作相关的神经网络。在该示例中,与混合系统相关的处理器包括 现场可编程门阵列(fpga)210和中央处理器(cpu)220。
32.fpga电连接到fpga控制器212,fpga控制器212与直接存储器存取(dma)218相 连接。dma连接到输入缓冲器214和输出缓冲器216,输入缓冲器214和输出缓冲器216耦 合到fpga以分别将数据缓冲到fpga中以及将数据从fpga缓冲出。dma 218包括两个先 进先出(fifo)缓冲器,一个用于主cpu,另一个用于fpga。dma允许数据被写入适当 的缓冲器以及从适当的缓冲器读取数据。
33.在dma的cpu侧的是主开关228,主开关228将数据和命令往返传送到dma。dma 还连接到sdram控制器224,该sdram控制器224允许将数据从cpu 220传送到fpga 并且允许数据从fpga传送到cpu 220。sdram控制器还连接到外部sdram 226和cpu 220。主开关228连接到外围设备接口230。闪存控制器222控制持久性存储器,并连接到 cpu 220。
34.所公开的量化方法和硬件实现可允许利用最少的硬件资源来确定卷积,同时保持与相对 应的浮点模型相当的推理精度。具体地,提出了针对在归一化阶段中仅使用移位器的融合卷 积层操作的提出的硬件实现方式。所提出的方法和系统可支持多种不同的量化配置,诸如对 称或非对称、逐层或逐通道以及多种激活函数,诸如整流线性单元(relu)、参数整流线性 单元(prelu)、滤波整流线性单元(relux)和hard

sigmoid。所提出的解决方案可通过利 用量化库来提供零数值误差的硬件部署。该库可直接对来自公共深度学习(dl)框架的计算 图中的各个张量进行量化,而无需修改来自原始框架中的操作的内核实现。当可实现硬件部 署中的位级别等效时,该解决方案可提供其他可观察性。
35.2d卷积层
36.浮点运算
37.卷积神经网络(cnn)中的典型2d卷积层可用以下等式描述:
38.p=w*a
i
‑1+b#(1)
39.a
i
=σ(p)#(2)
40.其中,a
i
是形状为c
i
×
h
i
×
w
i
的第i个层的输出激活。
41.w是形状为c
i
×
c
i
‑1×
k
h
×
k
w
的层的权重矩阵,
42.b是形状为c
i
×
1形状的层的偏置向量,
43.p是形状为c
i
×
h
i
×
w
i
的层的中间的乘法累加结果,
44.σ是非线性激活函数,
45.c
i
是第i个层的通道数量,
46.h
i
、w
i
是第i层的特征地图的高度和宽度,
47.*表示2d卷积运算。
48.完全基于整数的运算
49.为了限制数据精度以提高计算效率,通常使用仿射映射将浮点值线性量化为有限的位宽 整数表示形式:
[0050][0051]
其中,是浮点中的近似于实际值v的去量化值(dequantized value),
[0052]
是量化值的整数表示,
[0053]
是量化参数,其中,s是v的采用浮点格式的归一化因子,是的采用整数格式的零 点。可对这些元组进行离线计算。
[0054]
在本文档中,带有杠条的符号是整数变量,带有波浪符的符号是融合的或近似的整数变 量。
[0055]
卷积层运算由等式(1)和(2)给出,具有量化的变量并说明了基于整数的实现。离线 计算的参数可采用低位格式以减少模型和内存占用空间,繁重的计算内核(卷积)也可以是 基于低位整数的,以用于低成本的硬件实现方式,并且离线计算的参数可在可能的情况下进 行融合,同时使融合中的诱导偏差最小化。
[0056]
将等式(3)插入具有相应量化参数(s,z)的等式(1)中,等效的基于整数的2d卷积运 算由下式给出:
[0057][0058]
分离整数运算和浮点运算:
[0059][0060]
基于整数的乘法累加运算的中间结果称为
[0061][0062][0063]
考虑等式(2)中的最终非线性运算以及采用量化的整数格式所表示的输出级联到下一层:
[0064][0065]
大多数非线性激活函数可通过上限钳位的参数化整形线性单元(prelu)来代表或近似:
[0066][0067]
将等式(11)插入等式(10),然后将剩余的浮点部分四舍五入为整数或将它们转换为 定点表示形式,得出:
[0068]
[0069][0070]
其中,γ(x)是将浮点值四舍五入为整数的舍入函数,{n∈z}和z为整数集。
[0071]
该运算式如等式(6)和(10)中所示。
[0072]
参数为其中,可采用低位格式(8位或更低) 以减少模型占用空间,可采用高位格式(16位或更高)以保持模型的准确性。
[0073]
可作为进行在线计算,并且动态地取决于输入数据。可进行离线计算,因为 可离线确定项。可四舍五入为整数,其中,采用浮点格式。的精度可能足够 高,以至于可概括这些项而不会产生过多的数值误差。
[0074]
仅移位归一化
[0075]
通过将浮点缩放因子(scaling factor)s和a约束为2的幂次方值:
[0076][0077]
归一化阶段可被简化为:
[0078][0079][0080]
在以下任一条件下,可避免在归一化阶段进行加法运算。
[0081]
表示激活可被对称地量化。
[0082]
relu(a=0)用作激活函数σ(x)。在该情况下,可在偏置相加阶段将与b融合为
[0083][0084][0085][0086]
数据路径如图3中所示。参数为
[0087]
针对累加器精度,为了模拟float32的尾数精度,中间累加可使用24位整数。只要累加 运算不会溢出,与软件量化相比,结果可能是位精确的。这意味着可对权重和输入激活数据 进行适当的归一化,这在模型中使用批处理归一化层时可被满足。
[0088]
融合的偏置的精度作为偏置项可添加到累加器中,合理的最大精度可指定为24位。在 等式(15)中,项和与累加结果具有相同的标度。如果满足归一化要求,则 不会发生溢出。项表示原始偏差向量b向定点的转换,并按累加结果的标度 进行归一化。在软件库中量化原始偏差向量b时,不需要仿射映射。定点位精度和
q因子可 被设计为维持软件准量化与硬件量化实现方式之间的位精确度。最后一项可被完全融合 而不会引入数值误差,因为它仍然保持了的低位精度。
[0089]
对于接近的的条目,融合零点的精度可能会影响后续的非线性运算。所诱导的偏置可 在输出激活中被放大,并且可在随后的层中传播。
[0090]
图3描绘了具有仅移位归一化器的融合卷积层300。乘法累加层300输出乘法累加的 314的中间结果作为整数变量。中间乘法累加器被路由到比较器318,该比较器318还接收第 一零点316。第一多路复用器320耦合到比较器318,第一多路复用器320接收到多个2的 幂次方的指数值n
i 322。基于仅移位进行归一化的移位归一化器324耦合到第一多路复用器 320。移位归一化器324接收乘法累加结果314和多个2的幂次方的指数值322。移位归一化 器324将对乘法累加结果314的量化限制为2的幂次方的标度。第二多路复用器326耦合到 移位归一化器324的输出、第一多路复用器320,并接收第二零点328,且输出激活332。
[0091]
乘法累加结果314可以是整数变量。第一零点316可以是融合的或近似的整数变量。激 活332可以是整数变量。
[0092]
各种量化配置
[0093]
使用relu激活函数时,提出的数据路径中支持非对称量化。
[0094]
针对权重量化,当非对称地量化权重时,可利用8位矩阵和额外的零点标量z
w
来表示 权重。零点标量可能会增加计算成本,如等式(6)所示的使用图3中的现有硬件, 可将这部分计算为卷积其中,是具有与相同形状的全1矩阵(all

ones

matrix)。 但是,mac操作的数量可能会增加一倍。因此,建议避免非对称地量化权重。
[0095]
激活函数。当使用对称量化或部分非对称量化(非对称权重和对称激活)时,多种激活 函数是可行的:relu(a=0,d=0),relu6leakyrelu(a≈0.125,d=0),prelu(p≈2
n
),hard

sigmoid(斜率为2

n
)。
[0096]
针对逐通道量化,以上的推导基于逐层量化,其中,s和z为标量。在许多轻量级模型中, 如果使用逐通道量化,则可在模型性能上实现较低的损耗。在该情况下,s和z可以是一维向 量,而不是标量。在该情况下,等式(4)的格式可能不像等式(5)那样,因为矩阵乘法不 是可交换的,因此不可能将分组。在提出的实现方式中,可在权重w中执行逐通道量 化,同时在激活a
i
中保持逐层量化。所支持的配置和限制可能与以上相同。以下离线计算的 参数可以是向量,而不是标量。
[0097]
位精确软件量化库
[0098]
在以上的实现方式中,参数是离线计算的。软件量化库可通过将准 量化节点插入dl框架中的原始浮点计算图中来计算参数,而无需替换原始与数学相关的运 算内核(2d卷积层(conv2d)、偏置相加(biasadd)、非线性),如图4中所示。优点是 量化库通常可在公共框架中使用,而无需修改各种dl框架中的众多操作内核实现方式。取 而代之的是,库可在计算图中的适当位置插入准量化节点。通过精心设计准量化节点和图形 插入模式,可实现位精确的硬件部署。
[0099]
单个张量的分布的统计样本允许获得量化元组(s,z)。通过有代表性的数据集,可完成对 浮点模型的正向计算,并在计算图中的特定位置对张量进行采样,如图4中所示。整数格式 的量化参数可在硬件实现方式进行计算。
[0100]
图4描绘了示例融合卷积方法400,该融合卷积方法包括将输入张量410a
i
‑1434量化414 为第一2的幂次方值。该方法包括将权重张量412w 432量化416为第二2的幂次方值,并 且基于量化的输入张量和量化的权重张量来执行卷积418。该方法还包括将偏置张量420b 436量化422为第三2的幂次方值,将卷积的输出与量化的偏置张量进行偏置相加424,并输 出偏置相加438。该方法将偏置相加的输出进行非线性处理426,并将非线性处理的输出量 化428为激活a
i 440,该激活a
i
采用第四2的幂次方值输出张量430的形式。
[0101]
图5描绘了仅移位归一化的示例方法500。该方法包括:将输入张量量化510为第一2 的幂次方值;将权重张量量化512为第二2的幂次方值;以及基于量化的输入张量和量化的 权重张量来执行514卷积。该方法进一步包括:将偏置张量量化516为第三2的幂次方值; 将卷积的输出和量化的偏置张量进行偏置相加518,并且输出偏置相加;将偏置相加的输出 进行非线性处理520;以及将非线性处理的输出量化522为采用第四2的幂次方值输出张量 的形式的激活。
[0102]
本领域技术人员将领会的是,本文所描述的各种说明性块、模块、元件、部件、方法和 算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性, 以上已经根据其功能大体上描述了各种说明性的块、模块、元件、组件、方法和算法。将这 样的功能实现为硬件还是软件取决于具体的应用和施加在系统上的设计约束条件。技术人员 可针对每个具体的应用以不同方式来实现所描述的功能。在均不背离本主题技术的范围的情 况下,各种部件和块可被不同地布置(例如,以不同的顺序布置或以不同的方式划分)。
[0103]
应当理解的是,所公开的过程中步骤的特定顺序或层级是对示例方法的说明。基于设计 偏好,应当理解的是,可重新排列过程中步骤的特定顺序或层级。一些步骤可被同时执行。 随附的方法权利要求以示例顺序呈现了各个步骤的要素,并不意味着受限于所呈现的特定顺 序或层级。
[0104]
提供先前的描述以使得本领域的任意技术人员能够实践本文所描述的各个方面。先前的 描述提供了本主题技术的各种示例,并且本主题技术不限于这些示例。对这些方面的各种修 改对于本领域技术人员而言将是显而易见的,并且本文中定义的一般原理可应用于其他方面。 因此,不意在将权利要求受限于本文中所示出的各方面,而是意在使全部范围与权利要求的 语言表述相一致,其中以单数形式所提及的元素并不意在表示“一个且仅一个”,除非明确 如此阐明,否则而是表示“一个或多个”。除非另有明确阐明,否则术语“一些”是指一个 或多个。男性代词(例如,他的)包括女性和中性性别(例如,她及它),反之亦然。标题 和副标题,如果有的话,仅是为了方便起见,并不限制本发明。谓语词“被配置以”、“可 操作以”和“被编程以”并不意味着对对象进行任意具体的有形或无形修改,而是意在将其 互换使用。例如,被配置以监测和控制操作或部件的处理器也可意味着处理器被编程以监测 和控制操作或处理器可被操作以监测和控制操作。同样地,被配置以执行代码的处理器可被 解释为被编程以执行代码或可被操作以执行代码的处理器。
[0105]
诸如“方面”的短语并不意味着这样的方面对于本主题技术是必不可少的,也不意
味着 这样的方面适用于本主题技术的配置。与一方面有关的公开内容可应用于配置,或者一个或 多个配置。一方面可提供一个或多个示例。诸如方面的短语可指一个或多个方面,反之亦然。 诸如“实施例”的短语并不意味着这样的实施例对于本主题技术是必不可少的,也不意味着 这样的实施例适用于本主题技术的配置。与一实施例有关的公开内容可适用于实施例,或者 一个或多个实施例。一实施例可提供一个或多个示例。诸如“实施例”的短语可指一个或多 个实施例,反之亦然。诸如“配置”的短语并不意味着这样的配置对于本主题技术是必不可 少的,也不意味着这样的配置适用于本主题技术的配置。与一配置有关的公开内容可适用于 配置,或者一个或多个配置。一配置可提供一个或多个示例。诸如“配置”的短语可指一个 或多个配置,反之亦然。
[0106]
词语“示例”在本文中用来表示“用作示例或说明”。本文中被描述为“示例”的任意 方面或设计不必然被解释为比其他方面或设计更优选或更有利。
[0107]
对于本领域普通技术人员而言是已知或以后将知道的是,在整个本公开中所描述的各个 方面的元件的结构和功能等同物均通过引用明确地并入本文,并且意在被权利要求书所涵盖。 此外,无论在权利要求书中是否明确叙述了本文所描述的公开内容,都不意在将这样的公开 内容捐献于公众。除非使用短语“用于
……
的手段”明确叙述该要素,或者在方法权利要求 的情况下,使用短语“用于
……
的步骤”来叙述该元素,否则任何权利要求的要素均不得根 据美国专利法35 u.s.c.、
§
112、第六段的规定进行解释。此外,针对说明书或权利要求书 中使用术语“包括(include)”、“具有(have)”等的程度,这样的术语旨在被包括在术 语“包含”的方式内,类似于当“包括”在权利要求中被用作连接词时,对“包括”的解释 那样。
[0108]
对“一个实施例”、“一实施例”、“一些实施例”、“各种实施例”等的引用指示具 体的要素或特征被包括在本发明的至少一个实施例中。虽然这些短语可出现在各个地方,但 是这些短语不一定指的是同一实施例。结合本公开,本领域技术人员将能够设计和结合适用 于实现上述功能的各种机构中的任意一者。
[0109]
应当理解的是,本公开仅教导了说明性实施例的一个示例,并且本领域技术人员在阅读 了本公开之后可容易地设计出本发明的许多变型,并且本发明的范围将由以下权利要求所确 定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1