CN113656751B - 无符号dac实现有符号运算的方法、装置、设备和介质 - Google Patents
无符号dac实现有符号运算的方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN113656751B CN113656751B CN202110915035.8A CN202110915035A CN113656751B CN 113656751 B CN113656751 B CN 113656751B CN 202110915035 A CN202110915035 A CN 202110915035A CN 113656751 B CN113656751 B CN 113656751B
- Authority
- CN
- China
- Prior art keywords
- unsigned
- bias
- dac
- activation value
- signed
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000004913 activation Effects 0.000 claims abstract description 72
- 239000011159 matrix material Substances 0.000 claims abstract description 24
- 238000012549 training Methods 0.000 claims abstract description 15
- 238000013507 mapping Methods 0.000 claims abstract description 7
- 230000015654 memory Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 24
- 230000010354 integration Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000011022 operating instruction Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 229920005994 diacetyl cellulose Polymers 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Advance Control (AREA)
Abstract
本申请提供的一种无符号DAC实现有符号运算的方法、装置、设备和介质,依据数据输入对应的有符号激活值转换为无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;将无符号激活值、权重、新偏置映射到无符号DAC实现的存算一体电路上执行矩阵运算。本申请用无符号DAC实现的存算一体电路完成有符号矩阵乘法,相比于现有的有符号DAC,无符号DAC大大降低了实现的复杂度与成本。
Description
技术领域
本发明涉及的神经网络运算技术领域,特别是涉及一种无符号DAC实现有符号运算的方法、装置、设备和介质。
背景技术
深度神经网络(DNN)研究近年来取得了飞速发展并得到初步应用。然而实现这样的算法,通常需要消耗大量的算力。如经典的深度卷积网络(CNN)模型AlexNet,需要进行至少7.2亿次的乘法运算。大的运算量产生大的功耗,一般功耗在10瓦到100瓦左右。
典型的存算一体电路中,多位宽的数字信号经过数字模拟转化器(DAC)被转成模拟信号,与存储在阵列中的权重在模拟域实现了乘加运算,模拟信号经过模拟数字转换器(ADC)被转成数字信号。存算一体电路实现了矩阵乘法,将存算一体电路输出进行其他数字域的处理,就可以实现深度神经网络的硬件加速。
通常深度神经网络中每层的数据输入(多位宽的数字信号)一般是有符号数(即正负),因此其中的DAC是有符号数DAC,而有符号DAC相比于无符号DAC设计复杂度高,成本较高。
因此,本申请提出一种无符号DAC实现的存算一体电路完成有符号矩阵乘法。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种无符号DAC实现有符号运算的方法、装置、设备和介质,以解决现有技术中的问题。
为实现上述目的及其他相关目的,本申请提供一种无符号DAC实现有符号运算的方法,应用于存算一体电路,所述方法包括:依据数据输入对应的有符号激活值转换为无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;将无符号激活值、权重、新偏置映射到无符号DAC实现的存算一体电路上执行矩阵运算。
于本申请的一实施例中,所述依据数据输入对应的有符号激活值转换为无符号激活值包括:通过在存算一体电路各DAC前设置反相器对多位二进制表示的有符号激活值的最高位取相反数,以转换为符合无符号DAC输入要求的多位二进制表示的无符号激活值。
于本申请的一实施例中,所述无符号激活值为:aui=ai+2AW-1;其中,ai为有符号激活值,其取值范围为-2AW-1≤ai≤2AW-1-1;AW为数据宽度;aui为无符号激活值,其取值范围为0≤aui≤2AW-1;i表示存算一体阵列的行。
于本申请的一实施例中,所述新偏置为:其中,ai为有符号激活值;AW为数据宽度;weighti,j为存算一体阵列中存储的权重;N表示权重数;biasj为原偏置;bias′j为新偏置;i,j分别表示存算一体阵列的行和列。
于本申请的一实施例中,所述矩阵运算为:其中,Oj为数据输出;weighti,j为存算一体阵列中存储的权重;N表示权重数;aui为无符号激活值;bias′j为新偏置;i,j分别表示存算一体阵列的行和列。
于本申请的一实施例中,所述方法包括:所述矩阵运算中所述新偏置所参与的运算可在存算一体电路之外进行处理。
为实现上述目的及其他相关目的,本申请提供一种无符号DAC实现有符号运算的装置,所述装置包括:转换模块,用于依据数据输入对应的有符号激活值转换为无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;处理模块,用于将无符号激活值、权重、新偏置映射到无符号DAC实现的存算一体阵列上执行矩阵运算。
为实现上述目的及其他相关目的,本申请提供一种计算机设备,所述设备包括:存储器、及处理器;所述存储器用于存储计算机指令;所述处理器运行计算机指令实现如上所述的方法。
为实现上述目的及其他相关目的,本申请提供一种计算机可读存储介质,存储有计算机指令,所述计算机指令被运行时执行如上所述的方法。
综上所述,本申请的一种无符号DAC实现有符号运算的方法、装置、设备和介质,依据数据输入对应的有符号激活值转换为无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;将无符号激活值、权重、新偏置、映射到无符号DAC实现的存算一体电路上执行矩阵运算。
具有以下有益效果:
本申请用无符号DAC实现的存算一体电路完成有符号矩阵乘法,相比于现有的有符号DAC,无符号DAC大大降低了实现的复杂度与成本。
附图说明
图1显示为本申请于一实施例中的存算一体电路的示意图。
图2显示为本申请于一实施例中的无符号DAC实现有符号运算的方法的流程示意图。
图3显示为本申请于一实施例中的无符号DAC实现有符号运算的装置的模块示意图。
图4显示为本申请于一实施例中的计算机设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,虽然图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,但其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
其中提到的第一、第二及第三等术语是为了说明多样的部分、成分、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成分、区域、层或段区别于其它部分、成分、区域、层或段。因此,以下叙述的第一部分、成分、区域、层或段在不超出本申请范围的范围内,可以言及到第二部分、成分、区域、层或段。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
需要说明的是,本申请中存算一体电路采用忆阻器进行乘加运算。忆阻器不仅可以存储权重,还可以同时实现和输入数据的乘加运算,运算的功耗较普通的数字乘加电路低很多。而乘加运算是深度神经网络的最典型的运算,以忆阻器阵列为主要组成部分的存算一体由于其低功耗优势获得迅猛发展。
如图1所示,展示为存算一体电路的示意图。数据输入为多位宽的数字信号V,经过数字模拟转化器(DAC)被转成模拟信号,与存储在存算一体阵列中的权重G在模拟域实现了乘加运算,模拟信号经过模拟数字转换器(ADC)被转成数字信号,进而存算一体电路便实现了矩阵乘法。将存算一体电路输出进行其他数字域的处理,就可以实现深度神经网络的硬件加速。
但是深度神经网络中每层的数据输入的多位宽的数字信号V,其中深度神经网络中激活值一般是有符号数(即正负),因此,图1中的DAC是有符号数DAC。而有符号DAC相比于无符号DAC设计复杂度高,成本较高。为降低实现的复杂度与成本,本申请提出用无符号DAC实现的存算一体电路完成有符号矩阵乘法。
如图2所示,展示为本申请一实施例中的无符号DAC实现有符号运算的方法的流程示意图。如图所示,所述方法包括:
步骤S201:依据数据输入对应的有符号激活值转换为无符号激活值;
步骤S202:将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;
步骤S203:将无符号激活值、权重、新偏置、映射到无符号DAC实现的存算一体电路上执行矩阵运算。
举例来说,如图1所示,假设深度神经网络中每层的数据输入为多位宽的数字信号V,各数据输入对应的神经网络中的有符号激活值为ai,一般是有符号数(即正负);权重为weighti,j(图1中的Gi,j),神经网络中的原偏置为biasj,输出为Oj(图1中的Ij),典型的神经网络运算如公式(1)。假定数据输入的数据宽度为AW,有以下公式:
对有符号激活值ai变形,则有;
进一步地,所述无符号激活值与有符号激活值的转换关系为:
aui=ai+2AW-1 (3);
对公式(4)变形则得到:
进一步地,设则有:
其中,ai为有符号激活值,其表示的数据范围为-2AW-1≤ai≤2AW-1-1;AW为数据宽度;aui为无符号激活值,其取值范围为0≤aui≤2AW-1,因此aui是一个无符号数。对于无符号DAC实现的存算一体电路来说,aui就是符合条件的输入;weighti,j为存算一体阵列中存储的权重;biasj为原偏置;bias′j为新偏置;i,j分别表示存算一体阵列的行和列。
具体来说,本申请主要通过在如图1中数据输入后、各DAC前设置反相器对多位二进制表示的有符号激活值的最高位取相反数,以转换为符合无符号DAC输入要求的多位二进制表示的无符号激活值。需要说明的是,本申请中将反相器设置为有符号激活值的最高位取反。
举例来说,当数据宽度AW=3时,有符号激活值ai与无符号激活值aui之间的对应关系,如下表1所示。
表1有符号激活值ai与无符号激活值aui之间的对应关系
多位二进制表示ai | ai表示的十进制数值 | aui=ai+22 | aui表示的十进制数值 |
011 | +3 | 111 | +7 |
010 | +2 | 110 | +6 |
001 | +1 | 101 | +5 |
000 | 0 | 100 | +4 |
111 | -1 | 011 | +3 |
110 | -2 | 010 | +2 |
101 | -3 | 001 | +1 |
100 | -4 | 000 | 0 |
由上表可以看出,通过无符号激活值的最高位取有符号激活值的最高位的反数,即可由有符号激活值得到无符号激活值。其中,有符号激活值的最高为0时,无符号激活值的最高为则取1,当有符号激活值的最高为1时,无符号激活值的最高为则取0,进而依据公式(3)aui=ai+2AW-1可得到无符号激活值的数值为0~7,由存在正负符号的激活值,转换成全为非负的无符号激活值。
本申请以一个反相器的代价将存算一体中的多位位宽的有符号DAC置换成无符号DAC,与现有有符号DAC相比,大大降低了实现的复杂度与成本。
需要说明的是,通常在人工智能应用中,主要有两个流程:第一是训练,根据大量的训练数据训练得到网络的权重和偏置等;第二是推理,将训练得到的权重、偏置配置到芯片上,将采集到的数据输入深度神经网络,芯片进行推理运算。在推理过程中,权重和偏置都是不变的。公式(6)得到的新偏置bias′j类似于原偏置biasj,在训练结束就可以由软件计算完成,并将bias′j配置到执行推理功能的芯片上,推理芯片没有额外的运算和存储。即在所述矩阵运算中所述权重和新偏置运算流程不变。
于本申请中,无符号DAC实现的存算一体完成有符号矩阵乘法的方法如下:
1)训练完成后,软件根据公式(6)计算新偏置bias′j,并将新偏置bias′j与权重weighti,j配置到芯片上;
2)根据一般的存算一体映射流程将权重weighti,j、无符号激活值aui、数据输出Oj映射到无符号DAC实现的存算一体电路上;
3)芯片将有符号激活值ai变换成无符号数aui,其中,主要对有符号激活值的最高位取反;
4)存算一体执行矩阵运算;
5)运算结果做必要的后处理。
进一步地,存算一体领域研发人员熟知的:新偏置bias′j可以类似于权重配置在存算一体阵列中,如其对应的数据输入需要置为1,用阵列实现加新偏置bias′j的运算;加新偏置bias′j的运算也可以在存算一体阵列之外做后处理,并不局限在上述无符号DAC实现的存算一体电路上所执行的矩阵运算中进行处理。
综上所述,本申请以一个反相器的代价将存算一体中的多位位宽的有符号DAC置换成无符号DAC,大大降低了实现的复杂度与成本。
如图3所示,展示为本申请于一实施例中的无符号DAC实现有符号矩阵运算的装置的模块示意图。如图所示,所述装置300包括:
判断模块301,用于转换模块,用于依据数据输入对应的有符号激活值转换为无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;
处理模块302,用于将无符号激活值、权重、新偏置映射到无符号DAC实现的存算一体阵列上执行矩阵运算。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请所述方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
还需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,处理模块302可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理模块302的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital signal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
如图4所示,展示为本申请于一实施例中的计算机设备的结构示意图。如图所示,所述计算机设备400包括:存储器401、及处理器402;所述存储器401用于存储计算机指令;所述处理器402运行计算机指令实现如图2所述的方法。
在一些实施例中,所述计算机设备400中的所述存储器401的数量均可以是一或多个,所述处理器402的数量均可以是一或多个,而图4中均以一个为例。
于本申请一实施例中,所述计算机设备400中的处理器402会按照如图2所述的步骤,将一个或多个以应用程序的进程对应的指令加载到存储器401中,并由处理器402来运行存储在存储器401中的应用程序,从而实现如图2所述的方法。
所述存储器401可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。所述存储器401存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
所述处理器402可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在一些具体的应用中,所述计算机设备400的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清除说明起见,在图4中将各种总线都成为总线系统。
于本申请的一实施例中,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图2所述的方法。
在任何可能的技术细节结合层面,本申请可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本申请的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。。
综上所述,本申请提供的一种无符号DAC实现有符号运算的方法、装置、设备和介质,通过依据数据输入对应的有符号激活值转换为无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置;将无符号激活值、权重、新偏置映射到无符号DAC实现的存算一体电路上执行矩阵运算。本申请以一个反相器的代价将存算一体中的多位位宽的有符号DAC置换成无符号DAC,大大降低了实现的复杂度与成本。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中包含通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (7)
1.一种无符号DAC实现有符号运算的方法,其特征在于,应用于存算一体电路,所述方法包括:
依据数据输入对应的有符号激活值转换为无符号激活值,其过程包括:通过在存算一体电路各DAC前设置反相器对多位二进制表示的有符号激活值的最高位取相反数,以转换为符合无符号DAC输入要求的多位二进制表示的无符号激活值;
将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置,所述新偏置为:
其中,AW为数据宽度;weighti,j为存算一体阵列中存储的权重;N表示权重数;biasj为原偏置;biasj ′为新偏置;i,j分别表示存算一体阵列的行和列;
将无符号激活值、权重、新偏置、映射到无符号DAC实现的存算一体电路上执行矩阵运算。
2.根据权利要求1所述的方法,其特征在于,所述无符号激活值与有符号激活值的转换关系为:
aui=ai+2AW-1;
其中,ai为有符号激活值,其取值范围为-2AW-1≤ai≤2AW-1-1;AW为数据宽度;
aui为无符号激活值,其取值范围为0≤aui≤2AW-1;i表示存算一体阵列的行。
3.根据权利要求1所述的方法,其特征在于,所述矩阵运算为:
其中,Oj为数据输出;weighti,j为存算一体阵列中存储的权重;N表示权重数;aui为无符号激活值;biasj ′为新偏置;i,j分别表示存算一体阵列的行和列。
4.根据权利要求3所述的方法,其特征在于,所述方法包括:
所述矩阵运算中所述新偏置所参与的运算可在存算一体电路之外进行处理。
5.一种无符号DAC实现有符号运算的装置,其特征在于,所述装置包括:
转换模块,用于依据数据输入对应的有符号激活值转换为无符号激活值,其过程包括:通过在存算一体电路各DAC前设置反相器对多位二进制表示的有符号激活值的最高位取相反数,以转换为符合无符号DAC输入要求的多位二进制表示的无符号激活值;将通过训练得到的权重和原偏置,结合数据宽度转换为新偏置,所述新偏置为:
其中,AW为数据宽度;weighti,j为存算一体阵列中存储的权重;N表示权重数;biasj为原偏置;biasj ′为新偏置;i,j分别表示存算一体阵列的行和列;
处理模块,用于将无符号激活值、权重、新偏置、映射到无符号DAC实现的存算一体阵列上执行矩阵运算。
6.一种计算机设备,其特征在于,所述设备包括:存储器、及处理器;所述存储器用于存储计算机指令;所述处理器运行计算机指令实现如权利要求1至4中任意一项所述的方法。
7.一种计算机可读存储介质,其特征在于,存储有计算机指令,所述计算机指令被运行时执行如权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110915035.8A CN113656751B (zh) | 2021-08-10 | 2021-08-10 | 无符号dac实现有符号运算的方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110915035.8A CN113656751B (zh) | 2021-08-10 | 2021-08-10 | 无符号dac实现有符号运算的方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656751A CN113656751A (zh) | 2021-11-16 |
CN113656751B true CN113656751B (zh) | 2024-02-27 |
Family
ID=78479403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110915035.8A Active CN113656751B (zh) | 2021-08-10 | 2021-08-10 | 无符号dac实现有符号运算的方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656751B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07261984A (ja) * | 1994-03-18 | 1995-10-13 | Fujitsu Ltd | 演算方法及び装置 |
JPH08314697A (ja) * | 1995-05-22 | 1996-11-29 | Samsung Electron Co Ltd | 符号付き/符号なし数兼用乗算器 |
JP6183980B1 (ja) * | 2016-12-02 | 2017-08-23 | 国立大学法人東京工業大学 | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム |
JP2018160007A (ja) * | 2017-03-22 | 2018-10-11 | 株式会社デンソー | ニューラルネットワーク回路 |
CN109784486A (zh) * | 2018-12-26 | 2019-05-21 | 中国科学院计算技术研究所 | 一种光学神经网络处理器及其训练方法 |
CN110059800A (zh) * | 2019-01-26 | 2019-07-26 | 中国科学院计算技术研究所 | 脉冲神经网络转换方法及相关转换芯片 |
CN110288086A (zh) * | 2019-06-13 | 2019-09-27 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
CN111837145A (zh) * | 2017-12-18 | 2020-10-27 | 米西克有限公司 | 用于将矩阵计算映射到矩阵乘法加速器的系统和方法 |
CN111882050A (zh) * | 2020-07-20 | 2020-11-03 | 复旦大学 | 基于fpga的用于提高bcpnn速度的设计方法 |
CN112749784A (zh) * | 2019-10-31 | 2021-05-04 | 华为技术有限公司 | 一种计算设备及神经网络的加速方法 |
CN112988451A (zh) * | 2021-02-07 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 量子纠错解码系统、方法、容错量子纠错系统及芯片 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708193B1 (en) * | 2000-02-21 | 2004-03-16 | Hewlett-Packard Development Company, L.P. | Linear summation multiplier array implementation for both signed and unsigned multiplication |
US11507846B2 (en) * | 2018-03-26 | 2022-11-22 | Nvidia Corporation | Representing a neural network utilizing paths within the network to improve a performance of the neural network |
EP3654250B1 (en) * | 2018-11-13 | 2023-04-12 | IMEC vzw | Machine learning accelerator |
US20200210838A1 (en) * | 2018-12-31 | 2020-07-02 | Microsoft Technology Licensing, Llc | Neural network activation compression with narrow block floating-point |
US11562247B2 (en) * | 2019-01-24 | 2023-01-24 | Microsoft Technology Licensing, Llc | Neural network activation compression with non-uniform mantissas |
US20200264876A1 (en) * | 2019-02-14 | 2020-08-20 | Microsoft Technology Licensing, Llc | Adjusting activation compression for neural network training |
CN111583940A (zh) * | 2020-04-20 | 2020-08-25 | 东南大学 | 极低功耗关键词唤醒神经网络电路 |
-
2021
- 2021-08-10 CN CN202110915035.8A patent/CN113656751B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07261984A (ja) * | 1994-03-18 | 1995-10-13 | Fujitsu Ltd | 演算方法及び装置 |
JPH08314697A (ja) * | 1995-05-22 | 1996-11-29 | Samsung Electron Co Ltd | 符号付き/符号なし数兼用乗算器 |
JP6183980B1 (ja) * | 2016-12-02 | 2017-08-23 | 国立大学法人東京工業大学 | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム |
CN109844775A (zh) * | 2016-12-02 | 2019-06-04 | 国立大学法人东京工业大学 | 神经网络电路装置、神经网络、神经网络处理方法及神经网络的执行程序 |
JP2018160007A (ja) * | 2017-03-22 | 2018-10-11 | 株式会社デンソー | ニューラルネットワーク回路 |
CN111837145A (zh) * | 2017-12-18 | 2020-10-27 | 米西克有限公司 | 用于将矩阵计算映射到矩阵乘法加速器的系统和方法 |
CN109784486A (zh) * | 2018-12-26 | 2019-05-21 | 中国科学院计算技术研究所 | 一种光学神经网络处理器及其训练方法 |
CN110059800A (zh) * | 2019-01-26 | 2019-07-26 | 中国科学院计算技术研究所 | 脉冲神经网络转换方法及相关转换芯片 |
CN110288086A (zh) * | 2019-06-13 | 2019-09-27 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
CN112749784A (zh) * | 2019-10-31 | 2021-05-04 | 华为技术有限公司 | 一种计算设备及神经网络的加速方法 |
CN111882050A (zh) * | 2020-07-20 | 2020-11-03 | 复旦大学 | 基于fpga的用于提高bcpnn速度的设计方法 |
CN112988451A (zh) * | 2021-02-07 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 量子纠错解码系统、方法、容错量子纠错系统及芯片 |
Non-Patent Citations (6)
Title |
---|
A Two-way SRAM Array based Accelerator for Deep Neural Network On-chip Training;Hongwu Jiang;《2020 57th ACM/IEEE Design Automation Conference (DAC)》;1-6 * |
Single RRAM Cell-based In-Memory Accelerator Architecture for Binary Neural Networks;Hyunmyung Oh;《2021 IEEE 3rd International Conference on Artificial Intelligence Circuits and Systems (AICAS)》;1-4 * |
基于FPGA的卷积神经网络卷积层并行加速结构设计;陈煌;微电子学与计算机;第35卷(第10期);85-88 * |
基于FPGA的改进二值化卷积层设计;蒋佩卿;电气开关;第57卷(第06期);8-13 * |
基于阻变存储器的神经网络电路设计;陈子轩;《中国优秀硕士学位论文全文数据库信息科技辑》;第2019年卷(第02期);I137-57 * |
指纹识别专用集成电路中乘法器模块的设计;崔建明;微电子学(第05期);625-629 * |
Also Published As
Publication number | Publication date |
---|---|
CN113656751A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
Lee et al. | UNPU: An energy-efficient deep neural network accelerator with fully variable weight bit precision | |
US11321096B2 (en) | Hardware unit for performing matrix multiplication with clock gating | |
US10997272B2 (en) | Apparatus and method for generating efficient convolution | |
CN112673383A (zh) | 神经网络核中动态精度的数据表示 | |
US10768898B2 (en) | Efficient modulo calculation | |
US11341400B1 (en) | Systems and methods for high-throughput computations in a deep neural network | |
CN108171328B (zh) | 一种神经网络处理器和采用其执行的卷积运算方法 | |
US10210137B2 (en) | Binary multiplier for binary vector factorization | |
US11294634B2 (en) | Float division by constant integer | |
Sanyal et al. | Neural network training with approximate logarithmic computations | |
CN111126557B (zh) | 神经网络量化、应用方法、装置和计算设备 | |
CN113656751B (zh) | 无符号dac实现有符号运算的方法、装置、设备和介质 | |
EP3767455A1 (en) | Apparatus and method for processing floating-point numbers | |
An et al. | 29.3 an 8.09 tops/w neural engine leveraging bit-sparsified sign-magnitude multiplications and dual adder trees | |
Thangavel et al. | Intrinsic evolution of truncated Puiseux series on a mixed-signal field-programmable soc | |
US20230401420A1 (en) | Compiling asymmetrically-quantized neural network models for deep learning acceleration | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
Kang et al. | Weight partitioning for dynamic fixed-point neuromorphic computing systems | |
Jo et al. | Bit-serial multiplier based neural processing element with approximate adder tree | |
Chen et al. | SmartDeal: Remodeling Deep Network Weights for Efficient Inference and Training | |
CN114492778A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
US20200327182A1 (en) | Method for processing numerical data, device, and computer readable storage medium | |
Panwar et al. | M2DA: a low-complex design methodology for convolutional neural network exploiting data symmetry and redundancy | |
Wisayataksin et al. | A Programmable Artificial Neural Network Coprocessor for Handwritten Digit Recognition |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |