CN112070204A - 一种基于阻变存储器的神经网络映射方法、加速器 - Google Patents

一种基于阻变存储器的神经网络映射方法、加速器 Download PDF

Info

Publication number
CN112070204A
CN112070204A CN202010722047.4A CN202010722047A CN112070204A CN 112070204 A CN112070204 A CN 112070204A CN 202010722047 A CN202010722047 A CN 202010722047A CN 112070204 A CN112070204 A CN 112070204A
Authority
CN
China
Prior art keywords
neural network
value
weight
array
values
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.)
Granted
Application number
CN202010722047.4A
Other languages
English (en)
Other versions
CN112070204B (zh
Inventor
何银涛
王颖
李华伟
李晓维
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202010722047.4A priority Critical patent/CN112070204B/zh
Publication of CN112070204A publication Critical patent/CN112070204A/zh
Application granted granted Critical
Publication of CN112070204B publication Critical patent/CN112070204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Semiconductor Memories (AREA)

Abstract

本发明提供一种基于阻变存储器的神经网络权重映射方法,其中,所述阻变存储器以存储单元的高阻态和低阻态存储二值数据,所述映射方法包括:S1、获得神经网络以二值形式表示的二进制权重阵列;S2、获得二进制权重值阵列的每一列的第一值和第二值的数量;S3、将二进制权重值阵列的每一列权重值映射存储到所述阻变存储器的每一列存储单元中,其中,对于第一值的数量大于第二值的数量的列,第一值映射为高阻态,第二值映射为低阻态;否则第二值映射为高阻态,第一值映射为低阻态。本发明在硬件上只是改变了原有的权重存储映射方式,有效的降低存储阵列中低电阻状态数量,大幅降低电流及其在阻变存储器计算阵列和模拟‑数字转换装置的功耗。

Description

一种基于阻变存储器的神经网络映射方法、加速器
技术领域
本发明涉及神经网络领域,具体来说,涉及神经网络相关的加速器和处理器体系结构设计领域,更具体地说,涉及一种基于阻变存储器的神经网络映射方法以及加速器。
背景技术
随着人工智能领域的不断发展,基于深度学习的神经网络模型已经在图像识别、语音处理等多个领域取得了令人瞩目的成果。随着神经网络复杂度的不断提高,对算力的需求也不断提高,由此出现了针对神经网络计算的专用硬件设计来实现硬件加速,例如,主流的硬件加速方式包括图形处理器(GPU)、现场可编程逻辑阵列(FPGA)和定制化专用处理器芯片。虽然有了针对神经网络的专用硬件加速设计,但是,在神经网络处理过程中的问题仍然不断凸显。由于神经网络处理器依赖大量的数据访存,而现有数据访存的速度不能满足计算部件的需要,因此,基于传统体系结构的处理器在数据搬运过程中出现了能耗大、延迟高的存储墙问题。
针对上述问题,众多研究者开展了广泛的研究,其中,基于阻变存储器的存内计算方案被广泛认可为一个有前途的新兴神经网络计算技术,可以实现神经网络计算与存储器一体的架构,大幅减少计算系统中的数据搬运带来的开销,为推进低功耗和实时的物联网场景计算提供了广阔前景,是解决当前计算中严重的内存墙问题的理想系统方案。
现阶段,基于阻变存储器的存内计算和非易失性带来的能效提升,已经有很多针对基于阻变存储器的神经网络加速器在物联网和移动平台场景中的应用的研究工作,尤其是长期保持工作的视觉和声音处理应用。
神经网络的计算结果为输入值与权重值的点积和。如图1所示,在使用阻变存储器进行神经网络计算时,以一列为例,神经网络的权重值被映射为阻变存储器的电导值G1和G2,在阻变存储器阵列的行上加对应输入值的电压值V1和V2,根据基尔霍夫电流定律,在列端得到的初始电流大小即为输入值与权重值的点积和。在实际的计算过程中,如图2所示的神经网络计算装置结构,权重值矩阵被全部映射到阻变存储器阵列上,输入值通过数字-模拟转换为电压施加在阻变存储器的行上,输出的电流值通过模拟数字转换,再通过移位累加最终得到计算结果。
然而,随着神经网络模型的不断增大,神经网络权重值不断增加,这会导致计算所需要的阻变存储器阵列数量增加,进而带来较高的功耗,因此在阻变存储器上实现大型深度神经网络的能量和性能优化方面还有很多工作要做。在基于阻变存储器的体系结构中,考虑到阻变存储器的漏电流功耗可以忽略不计,阻变存储器计算阵列上所消耗的功率占整体的重要部分,如何进一步降低阻变存储器计算阵列计算所产生的动态功耗已成为进一步将人工智能应用推向低功耗和实时物联网计算领域的重要目标。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新神经网络权重映射方法以及对应的神经网络计算装置及加速器。
根据本发明的第一方面,提供一种基于阻变存储器的神经网络权重映射方法,其中,所述阻变存储器以存储单元的高阻态和低阻态存储二值数据,所述映射方法包括:S1、获得神经网络以二值形式表示的二进制权重阵列;S2、获得二进制权重值阵列的每一列的第一值和第二值的数量;S3、将二进制权重值阵列的每一列权重值映射存储到所述阻变存储器的每一列存储单元中,其中,对于第一值的数量大于第二值的数量的列,第一值映射为高阻态,第二值映射为低阻态;否则第二值映射为高阻态,第一值映射为低阻态。
其中,所述二进制权重阵列是对神经网络的全精度权重值阵列进行均匀量化后得到的以二值形式表示的二进制权重阵列。
优选的,所述二进制权重阵列是在神经网络的全精度权重值阵列进行偏移量化后得到的以二值形式表示的二进制权重阵列。其中,所述步骤S1包括:S11、获得均匀量化后的二进制权重阵列的每一列的第一值和第二值的数量;S12、根据每一列的第一值和第二值的数量设置干扰因子并为每一个均匀量化对应的量化阈值设置偏移方向,其中,第一值数量多的列对应的量化阈值的偏移方向为增加第一值数量的方向,第二值数量多的列对应的量化阈值的偏移方向为增加第二值数量的方向;S13、根据设置的干扰因子和偏向方向偏移后的量化阈值对神经网络的全精度权重值阵列进行偏移量化。在本发明的一些实施例中,所述步骤S1还包括:S14、对完成全精度权重值阵列偏移量化后的神经网络进行多次迭代训练至收敛,对收敛后的神经网络的全精度权重值阵列进行偏移量化得到以二值形式表示的二进制权重阵列;其中,每次训练包括:S141、获取上一次训练后的当前全精度权重值阵列以及该全精度权重值阵列根据设置的干扰因子和偏移方向偏移量化后以二值形式表示的二进制权重阵列;S142、根据步骤S141中的二进制权重阵列和输入数据进行神经网络计算得到神经网络的输出,将该输出与输入数据的真实值进行比较计算得到当前的计算误差;S143、根据步骤S142中的计算误差对当前全精度权重值阵列进行更新。
根据本发明的第二方面,提供一种神经网络数据存储计算装置,包括:阻变存储器,其中,所述阻变存储器以存储单元的高阻态和低阻态存储二值数据;数字模拟转换装置,用于将神经网络输入数据转换为模拟电压值以加载在阻变存储器阵列的行上;模拟数字转换装置,用于将所述阻变存储器每一列输出的电流值转换为数字值;以及,状态寄存器,用于存储对应于阻变存储器每一列的状态;其中,采用本发明第一方面所述的方法将以二值形式表示的二进制权重阵列的每一列权重值映射存储到所述阻变存储器的每一列存储单元中,其中,对于第一值的数量大于第二值的数量的列,所述状态寄存器的相应位标记为第一状态,否则为第二状态。
根据本发明的第三方面,提供一种神经网络加速器,包括:本发明第二方面所述的神经网络数据存储计算装置;移位累加装置,用于对神经网络数据存储计算装置的计算结果进行移位累加,得到输入数据与权重值矩阵向量乘法计算的结果。优选的,所述加速器还包括:减法装置,用于将输入数据与权重值矩阵向量乘法计算的结果与输入数据进行减法操作以得到实际的神经网络权重值与输入数据的计算值;取反装置,用于对经过减法装置处理后的数据进行取反操作;多路选择装置,用于根据状态寄存器中标记的状态确定选择减法装置的计算结果或取反装置的计算结果;缓冲区,用于缓存神经网络数据存储计算装置的计算结果以及激活函数装置激活后的结果。
在本发明的一些实施例中,所述加速器包含多个由神经网络数据存储计算装置、移位累加装置、减法装置、取反装置、多路选择装置、激励函数装置、缓冲区组成的单元,每个单元对应于神经网络的一层。
与现有技术相比,本发明的优点在于:本发明在硬件上只是改变了原有的权重存储映射方式,并不会改变实际的计算结果,因此对神经网络计算结果几乎不会有影响,且增加的硬件开销可以忽略不计,同时能够有效的降低存储阵列中低电阻状态数量,大幅降低电流及其在阻变存储器计算阵列和模拟-数字转换装置的功耗。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为使用阻变存储器进行神经网络计算的电路原理示意图;
图2为现有技术的基于阻变存储器的神经网络计算装置结构示意图;
图3为阻变存储器单元电流-电压特性曲线示意图;
图4为根据本发明实施例的神经网络权重值映射关系示意图;
图5为根据本发明实施例的偏移量化和均匀量化对比示意图;
图6为根据本发明实施例的状态感知偏移量化后网络重训练过程示意图;
图7为根据本发明实施例的神经网络加速器结构示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
发明人在进行基于阻变存储器神经网络加速器研究中,发现在最新的位并行和位串行架构中,模拟-数字转换和数字-模拟转换模块的功耗和性能开销大大降低,从而消除了实现基于阻变存储器的超低功耗神经网络加速器的主要障碍,相对的,阻变存储器计算阵列的动态功耗在整个计算过程中占比增大。使用1位串行模拟-数字转换模块时,阻变存储器计算阵列消耗功率最多可占芯片整体的87.5%。因此,通过降低阵列的计算功耗,可以进一步实现基于阻变存储器的低能耗边缘神经网络计算。
如背景技术提到的,在阻变存储器计算阵列上,神经网络的权重存储在阻变存储器的存储单元中,以阻变存储器存储单元的电阻值状态表示对应权重值。在阻变存储器计算阵列执行点积计算的过程中,对应的输入数据转换为读电压,施加到存储单元阵列的每一行上,根据欧姆定律,每列中输入数据和权重之间的点积和通过电流累积,即施加到每行存储单元的输入电压与单元电导相乘,所产生的输出电流作为结果被感测并累积,从列对应的位线得到对应的输出电流,即权重值与输入数据的点积和结果。
发明人通过对阻变存储器单元电流-电压特性的研究发现,如图3所示电流-电压特性曲线可知,阻变存储器单元的电阻状态会直接影响读出的电流值,低阻态的读出电流是高阻态的读取电流的10倍左右,而电流大小与阵列的计算功耗紧密相关。同时,作为1位模拟-数字转换模块的读出放大器功耗也与参考电压的平方成正比,而在转换过程中,参考电压随着对应列中的低阻态数量减少而降低,当所有阻变存储器单元都处于低阻态时,流经电导的电流较大,因此功耗将最大化。例如,以128x128阵列为例,当所选阻变存储器单元均处于低阻态时,所选列上的读取电流是高阻态的24.4倍。由于使用阻变存储器计算阵列进行神经网络计算时,神经网络的权重被映射为阻变存储器存储单元的电阻状态,因此权重值分布及其映射方式将显著影响阻变存储器计算的功耗开销,在不同单元状态下阵列计算功耗开销差别高达50%。因此,发明人认为可以通过对阻变存储器的电阻状态映射和神经网络权重值分布进行优化,来降低阻变存储器计算阵列的计算动态功耗,从而进一步实现基于阻变存储器的低能耗边缘神经网络计算。
需要说明的是,在应用神经网络进行计算的过程中,将神经网络的权重值由浮点数量化为定点数,是低功耗领域的常用方法。为了方便说明,本发明中均以0和1表示的二进制权重阵列为例进行说明。均匀量化是最常见的量化方法,经过量化后的权重值以定点数0-1形式表示。当量化后的神经网络映射到阻变存储器计算阵列时,阻变存储器单元中的高阻态通常代表‘0’,低阻态代表‘1’,在这种直接单元映射方案中,阻变存储器单元的电阻状态分布是随机的。例如,当神经网络中有60%的权重为‘1’时,则60%的阻变存储器单元被映射为低阻态。发明人经过研究发现,通过感知当前权重值的分布状态,并根据状态选择对应的映射策略,可以降低低阻态的比例,以降低功耗。例如,在前面的例子中,如果采用低阻态表示数量更少的权重值‘0’,则低阻态的百分比可以下降到40%。由此可见,对神经网络权重值的状态感知映射方案可以降低低阻态单元占比。基于此,本发明提供一种基于阻变存储器的神经网络权重映射方法,用于将预训练后的神经网络的以二值形式表示的二进制权重值阵列映射存储在阻变存储器阵列上,通过对权重值进行状态感知映射以将权重值映射存储为阻变存储器的高阻态或低阻态,其中,状态感知映射是将每一列权重值中占比高的一类权重值映射为高阻态,另一类权重值映射为低组态。具体来说,将神经网络权重值以0-1二进制形式映射存储在阻变存储器上时,对映射到阻变存储器阵列同一列的权重值分布进行状态感知,例如通过统计的方式获得该列中不同权重值的数量,并将数量更多的‘0’值或‘1’值映射为高阻态,将另一数量更少的值映射为低阻态。例如,如果某一列权重值中‘0’值较多,则将该列中的‘0’值映射为高阻态,‘1’值映射为低阻态;反之,如果某一列权重值中‘1’值较多,则将该列中的‘1’值映射为高阻态,‘0’值映射为低阻态。由此,通过感知神经网络当前权重值在列上的分布状态,通过将数量更多的权重值映射为高阻态,从而减少阻变存储器计算阵列中的低阻态数量,可以有效降低阻变存储器阵列计算和读出过程的功耗。
根据本发明的一个示例,如图4所示,一个训练后的神经网络量化后的以二值形式表示二进制权重值阵列为{[01011101],[10100000],[00001101],[11101011]},该阵列中包含50%的‘0’值和50%的‘1’值。其中,按照现有技术的常规映射方法,‘0’值映射为高阻态,‘1’值映射为低阻态的情况下,则有50%的低阻态。按照本发明的映射方法进行映射,不同于常规的映射方法,本发明的状态感知映射通过对阻变存储器阵列上每列上对应存储的权重值分布进行感知,将对应列上数量更多的状态值映射为高阻态,数量较少的状态值映射为低阻态,由此,第一列权重值中占比多的‘1’值映射为高阻态,第二列权重值中占比多的‘0’值映射为高阻态,第三列权重值中占比多的‘0’值映射为高阻态,第四列权重值中占比多的‘1’值映射为高阻态,最后高阻态占比为69%,相对于现有技术的常规映射,其有效降低了整体阻变存储器阵列中低阻态的比例,大大的降低了功耗。
本发明的状态感知映射方案不会更改神经网络的权重值,因此不会影响基于阻变存储器的加速器网络计算准确率。通过本发明的状态感知映射方案,可以直接降低阻变存储器计算阵列中低阻态单元的比例。另一方面,权重值的整体分布很大程度上取决于神经网络参数的值分布,而神经网络的权重值分布在训练后是固定的,为了进一步增强状态感知映射减少低阻态单元的效果,本发明还提供一种基于状态感知的神经网络偏移量化方法,该方法可以使映射到阻变存储器同一列的权重值0-1分布更加不均衡,使原有列上数量多的‘0’或‘1’状态更多,从而提高状态感知映射的优化效果,进一步降低了低阻态单元的比率。
如前面提到的,在针对神经网络计算的专用加速硬件上,通常需要将神经网络权重值的浮点数量化为定点数,其中常用的量化方式为均匀量化。将浮点数权重值量化为n比特时,将输入值进行按照位从高到低的顺序依次量化,即把输入信号的取值域按照等距离分割成2n份,分割点即量化阈值分别为
Figure BDA0002600375970000071
其中n为量化位数,D为取值域。举例来说,将神经网络权重值分布限定在[-1,+1]之间的权重值量化到2比特时,对应的量化阈值分别为{-0.5,0,0.5},三个阈值将全精度权重的取值范围划分成四等份,并得到2比特中每一位的0-1分布,其中0-1分布具有不确定性。
根据本发明的一个实施例,为了扩大0-1分布的不均衡性,本发明提出一种基于状态感知的偏移量化方式,对于神经网络的每个输出通道的每个比特位,都将映射到阻变存储器阵列的单独一列上,每个比特位映射到一个存储单元,因此,首先,对神经网络每个通道对应的权重值比特位进行状态感知,根据该列的0-1分布选取该通道的量化偏移方向,即对应于映射‘0’值更多的列,偏移量化方向为得到更多的‘0’的方向;而映射‘1’值更多的列,偏移量化方向是得到更多的‘1’的方向。其次,根据偏移量化方向来选择对原有的量化阈值进行偏移,即在原有的量化阈值基础上进行偏移,通过引入干扰因子shift得到新的阈值,其中,在n比特的量化中,干扰因子shift的符号由偏移量化方向决定,而其绝对值的选取范围在
Figure BDA0002600375970000072
Figure BDA0002600375970000073
之间。随着干扰因子绝对值的增加,二进制权重阵列中单列的权重分布不均匀程度将进一步提高。根据本发明的一个示例,如图5所示,偏移量化和均匀量化对比示意图,以神经网络的全精度权重值为{-0.60,-0.10,0.42,0.64,0.90}为例,将每一个权重值量化为2比特,按照位从高到低的顺序依次量化。首先,对于第1个比特位(即符号位),在均匀量化中对应的量化阈值为0,小于0的权重值第一位量化为‘1’,大于0的权重值第一位量化为‘0’,则该示例权重值第一个比特位被量化为‘11000’,可见有60%的权重值的第一位被量化为‘0’,因此当前的量化方向偏向‘0’以使量化后得到更多的0。偏移量化时,为了让更多的权重值第一位量化为‘0’,对于当前量化阈值0加一个向左的干扰因子,从而使更多的权重值第一位被量化为‘0’,例如将当前量化阈值0向左偏移0.2变为-0.2,那么小于-0.2的权重值第一个符号位被量化为1,大于-0.2的权重值第一个符号位被量化为‘0’,偏移量化后,示例权重值第一个比特位被量化为‘10000’,可见偏移量化后有80%的权重值第一位被量化为‘0’。其次,对于权重值的第二个比特位,在均匀量化中,绝对值大于其所在区间的量化阈值绝对值的权重值被量化为‘1’,绝对值小于其所在区间的量化阈值绝对值0.5的权重值被量化为‘0’。例如,-0.60所在区间对应的量化阈值为-0.5,二者的绝对值相比,0.6大于0.5,则-0.60第二个比特位被量化为1;同理,0.42所在区间的量化阈值为0.5,二者的绝对值相比,0.42小于0.5,则0.42第二个比特位被量化为0,其他权重值依次类推,则该示例权重值第二个比特位被量化为‘10011’,可见有60%的权重值第二位被量化为‘1’,即当前的量化方向偏向‘1’,偏移量化时,为了让更多的权重值第二比特位量化为‘1’,将当前阈值的绝对值减小,向坐标轴0的方向偏移从而将更多的权重值第二位量化为‘1’,例如将当前量化阈值-0.5和0.5向0的方向偏移0.2变为-0.3和0.3,那么绝对值小于0.3的权重值第二位被量化为‘0’,绝对值大于0.3的权重值第二位被量化为‘1’,偏移量化后,示例权重值第二个比特位被量化为‘10111’,可见偏移量化后有80%的权重值第二位被量化为‘1’。量化完成,每个比特位映射到一个阻变存储器的存储单元。通过该示例可知,经过偏移量化后,可以明显的增加权重值0-1分布的差异性,在进行状态感知映射时,能够更好减少低阻态单元的占比。其他更多比特的量化过程与上述2比特量化过程类似,此处不再赘述。
需要说明的是,对全精度神经网络权重值直接进行偏移量化,会在一定程度上改变计算结果,从而对神经网络的准确率造成一定的影响。根据本发明的一个实施例,针对偏移量化后神经网络精度下降的问题,发明人提出了一种对偏移量化后的神经网络进行重训练的方案以恢复精度,从而在实现进一步低功耗计算的同时不影响准确率。其中,在重训练之前,首先按照前面所述的偏移量化方法完成对预训练好的神经网络全精度权重值阵列对应的均匀量化二进制权重阵列进行状态感知,并基于状态感知结果对干扰因子大小(用shift表示)、二进制权重阵列中每一列的偏移方向进行设置。在重训练过程中,如图6所示,需要同时保存当前训练好的全精度权重值阵列Wt、针对Wt根据设置好的干扰因子shift和偏移方向偏移量化后的二进制权重阵列
Figure BDA0002600375970000091
两套参数,使用偏移量化权重
Figure BDA0002600375970000092
和输入数据进行神经网络计算,得到模型的实际输出y,并与输入数据标签的真实值
Figure BDA0002600375970000093
计算得到当前的计算误差,根据量化权重的计算误差对全精度权重值进行更新,得到Wt+1,再通过偏移量化得到更新后的量化权重
Figure BDA0002600375970000094
重复上述训练过程,随着训练迭代次数的增加,量化权重的计算误差将不断减小,因此网络的准确率将不断提高。通过多次迭代训练更新后,卷积神经网络的准确率将恢复至原有水平不再上升,然后将重训练后的神经网络进行偏移量化得到更适用于状态感知映射的量化模型。由于该重训练后的网络的权重值分布更加不均衡,经过状态感知映射到阻变存储器阵列后,输出通道权重值分布的不均衡性将扩大,从而可以进一步降低映射中低阻态单元的数量,实现在不影响准确度前提下的低功耗阻变存储器神经网络计算。
根据本发明的一个实施例,提供一种采用状态感知映射的神经网络数据存储计算装置,用于将以二值形式表示的二进制权重阵列的每一列权重值映射存储到所述阻变存储器的每一列存储单元中,包括:阻变存储器、数字模拟转换装置、模拟数字转换装置、状态寄存器。其中,所述阻变存储器中以存储单元的高阻态和低阻态存储二值数据,对于第一值的数量大于第二值的数量的列,第一值映射为高阻态,第二值映射为低阻态;否则第二值映射为高阻态,第一值映射为低阻态;所述数字模拟转换装置用于将神经网络输入数据转换为模拟电压值以加载在阻变存储器阵列的行上;所述模拟数字转换装置用于将所述阻变存储器每一列输出的电流值转换为数字值;所述状态寄存器用于存储对应于阻变存储器每一列的状态,其中,对于第一值的数量大于第二值的数量的列,所述状态寄存器的相应位标记为第一状态,否则为第二状态。以第一值为‘0’,第二值为‘1’为例,将‘0’值的数量大于‘1’的数量的列中所有的‘0’值映射为阻变存储器中存储单元的高阻态,‘1’映射为低阻态,所述状态寄存器中将该列对应的状态标记为‘0’;将‘1’值的数量大于‘0’的数量的列中所有的‘1’值映射为阻变存储器中存储单元的高阻态,‘0’映射为低阻态,所述状态寄存器中将该列对应的状态标记为‘1’。
采用本发明的状态感知映射后,采用阻变存储器实现神经网络计算时与现有技术下的常规映射方式会有不同,因此,对神经网络加速器也要进行相应的改进。
根据本发明的一个实施例,提供一种采用状态感知映射的基于阻变存储器的神经网络加速器,该加速器更适用于采用了状态感知映射的神经网络计算。如图7所示,所述加速器包括:
神经网络数据存储计算装置,用于实现神经网络计算;
移位累加装置,用于将输入数据各个位与权重值进行矩阵向量乘法所得到的结果移位累加以得到输入数据与权重值矩阵向量乘法的结果;
减法装置,用于对矩阵向量乘法所获得的结果与输入数据进行减法操作,从而得到神经网络权重值与输入数据的实际计算值;
取反装置,用于对经过减法的结果进行符号取反的操作,以0和1形式表示的二进制权重阵列为例,若神经网络数据存储计算装置中某列对应状态为‘1’,则计算结果的实际值需要进行符号取反;
多路选择装置,根据状态寄存器的权重值映射状态选取对应的计算结果是否取反;以0和1形式表示的二进制权重阵列为例,状态寄存器中映射状态标记为0的列,多路选择器选择减法装置的计算结果;状态寄存器中映射状态标记为1的列,此时的映射与常规映射的阻变存储器状态相反,因此计算的点积和需要进行符号取反操作,所以多路选择器选择取反装置的计算结果;
激励函数装置,用于对多路选择装置选择的计算结果进行激活操作;
缓冲区,用于缓存数据存储计算装置的计算结果以及激活函数装置激活后的结果。
对于多层神经网络,神经网络的每一层对应一个如图7所示的结构单元,神经网络有多少层,对应加速器就有多少个单元。用这样的加速器进行神经网络计算时,如图7中标号①对应的数据路径所示,本层输入激活值经过数字-模拟转换模块从数字信号转变成模拟电压值,加在阵列的行上;在阵列的列上产生对应该列状态感知映射权重值与输入激活值点积和的电流值,经过模拟-数字转换得到计算结果的数字信号,经过移位累加之后得到点积和保存在缓冲区中,然后由图7中外围电路处理部分进行处理。由于在权重值映射之前对其进行了加偏置值的操作,因此从缓冲区所得到的点积和首先需要通过减法装置,,得到真实的输入激活值和权重值的点积和。对于状态感知映射中与常规映射相反的映射方式来说,需要通过取反装置,对得到的点积和符号进行取反来得到正确的点积和。随后,通过状态寄存器中保存的阻变存储器列映射标记位,选择对应的实际点积和计算结果,并经过激活函数单元完成本层计算,得到最终的神经网络输出激活值。其中,神经网络对应的第一次输入激活值即为外部输入数据,中间层的输入激活值为上一层的输出激活值。
由以上方案可知,本发明的优点在于:本发明在硬件上只是改变了原有的权重存储映射方式,并不会改变实际的计算结果,因此对神经网络计算结果几乎不会有影响,且增加的硬件开销可以忽略不计,同时能够有效的降低存储阵列中低电阻状态数量,大幅降低电流及其在阻变存储器计算阵列和模拟-数字转换装置的功耗。为了进一步提高上述映射方式的效果,本发明在均匀量化的基础上引入干扰因子,进一步扩大权重在映射到阻变存储器阵列同一列权重的0-1状态分布不均匀性,配合上述的状态感知映射方法和加速器设计,可以进一步降低存储阵列中低电阻状态数量,从而进一步降低计算功耗,且准确率没有明显下降。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (11)

1.一种基于阻变存储器的神经网络权重映射方法,其中,所述阻变存储器以存储单元的高阻态和低阻态存储二值数据,其特征在于,所述映射方法包括:
S1、获得神经网络以二值形式表示的二进制权重阵列;
S2、获得二进制权重值阵列的每一列的第一值和第二值的数量;
S3、将二进制权重值阵列的每一列权重值映射存储到所述阻变存储器的每一列存储单元中,其中,对于第一值的数量大于第二值的数量的列,第一值映射为高阻态,第二值映射为低阻态;否则第二值映射为高阻态,第一值映射为低阻态。
2.根据权利要求1所述的一种基于阻变存储器的神经网络权重映射方法,其特征在于,所述二进制权重阵列是对神经网络的全精度权重值阵列进行均匀量化后得到的以二值形式表示的二进制权重阵列。
3.根据权利要求2所述的一种基于阻变存储器的神经网络权重映射方法,其特征在于,所述二进制权重阵列是在神经网络的全精度权重值阵列进行偏移量化后得到的以二值形式表示的二进制权重阵列。
4.根据权利要求3所述的一种基于阻变存储器的神经网络权重映射方法,其特征在于,所述步骤S1包括:
S11、获得均匀量化后的二进制权重阵列的每一列的第一值和第二值的数量;
S12、根据每一列的第一值和第二值的数量设置干扰因子并为每一个均匀量化对应的量化阈值设置偏移方向,其中,第一值数量多的列对应的量化阈值的偏移方向为增加第一值数量的方向,第二值数量多的列对应的量化阈值的偏移方向为增加第二值数量的方向;
S13、根据设置的干扰因子和偏向方向偏移后的量化阈值对神经网络的全精度权重值阵列进行偏移量化。
5.根据权利要求4所述的一种基于阻变存储器的神经网络权重映射方法,其特征在于,所述步骤S1还包括:
S14、对完成全精度权重值阵列偏移量化后的神经网络进行多次迭代训练至收敛,对收敛后的神经网络的全精度权重值阵列进行偏移量化得到以二值形式表示的二进制权重阵列;其中,每次训练包括:
S141、获取上一次训练后的当前全精度权重值阵列以及该全精度权重值阵列根据设置的干扰因子和偏移方向偏移量化后以二值形式表示的二进制权重阵列;
S142、根据步骤S141中的二进制权重阵列和输入数据进行神经网络计算得到神经网络的输出,将该输出与输入数据的真实值进行比较计算得到当前的计算误差;
S143、根据步骤S142中的计算误差对当前全精度权重值阵列进行更新。
6.一种神经网络数据存储计算装置,包括:
阻变存储器,其中,所述阻变存储器以存储单元的高阻态和低阻态存储二值数据;
数字模拟转换装置,用于将神经网络输入数据转换为模拟电压值以加载在阻变存储器阵列的行上;
模拟数字转换装置,用于将所述阻变存储器每一列输出的电流值转换为数字值;以及,
状态寄存器,用于存储对应于阻变存储器每一列的状态;
其中,采用权利要求1至5任一所述的方法将以二值形式表示的二进制权重阵列的每一列权重值映射存储到所述阻变存储器的每一列存储单元中,其中,对于第一值的数量大于第二值的数量的列,所述状态寄存器的相应位标记为第一状态,否则为第二状态。
7.一种神经网络加速器,包括:
权利要求6所述的神经网络数据存储计算装置;
移位累加装置,用于对神经网络数据存储计算装置的计算结果进行移位累加,得到输入数据与权重值矩阵向量乘法计算的结果。
8.根据权利要求7所述的神经网络加速器,其特征在于,所述加速器还包括:
减法装置,用于将输入数据与权重值矩阵向量乘法计算的结果与输入数据进行减法操作以得到实际的神经网络权重值与输入数据的计算值;
取反装置,用于对经过减法装置处理后的数据进行取反操作;
多路选择装置,用于根据状态寄存器中标记的状态确定选择减法装置的计算结果或取反装置的计算结果;
缓冲区,用于缓存神经网络数据存储计算装置的计算结果以及激活函数装置激活后的结果。
9.根据权利要求8所述的一种神经网络加速器,其特征在于,所述加速器包含多个由神经网络数据存储计算装置、移位累加装置、减法装置、取反装置、多路选择装置、激励函数装置、缓冲区组成的单元,每个单元对应于神经网络的一层。
10.一种计算机可读存储介质,其特征在于,其上包含有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至5任一所述方法的步骤。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至5中任一项所述方法的步骤。
CN202010722047.4A 2020-07-24 2020-07-24 一种基于阻变存储器的神经网络映射方法、加速器 Active CN112070204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010722047.4A CN112070204B (zh) 2020-07-24 2020-07-24 一种基于阻变存储器的神经网络映射方法、加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010722047.4A CN112070204B (zh) 2020-07-24 2020-07-24 一种基于阻变存储器的神经网络映射方法、加速器

Publications (2)

Publication Number Publication Date
CN112070204A true CN112070204A (zh) 2020-12-11
CN112070204B CN112070204B (zh) 2023-01-20

Family

ID=73657472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010722047.4A Active CN112070204B (zh) 2020-07-24 2020-07-24 一种基于阻变存储器的神经网络映射方法、加速器

Country Status (1)

Country Link
CN (1) CN112070204B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112836816A (zh) * 2021-02-04 2021-05-25 南京大学 一种适用于光电存算一体处理单元串扰的训练方法
CN114330688A (zh) * 2021-12-23 2022-04-12 厦门半导体工业技术研发有限公司 基于阻变式存储器的模型在线迁移训练方法、装置及芯片
CN114399037A (zh) * 2022-03-24 2022-04-26 之江实验室 基于忆阻器的卷积神经网络加速器核心的模拟方法及装置
CN115311506A (zh) * 2022-10-11 2022-11-08 之江实验室 基于阻变存储器的量化因子优化的图像分类方法及装置
CN115564036A (zh) * 2022-10-25 2023-01-03 厦门半导体工业技术研发有限公司 基于rram器件的神经网络阵列电路及其设计方法
US11876527B2 (en) 2021-09-27 2024-01-16 Skymizer Taiwan Inc. Error calibration apparatus and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN110378475A (zh) * 2019-07-08 2019-10-25 浙江大学 一种基于多位并行二进制突触阵列的神经形态计算电路
EP3654247A1 (en) * 2018-11-15 2020-05-20 IMEC vzw Convolution engine for neural networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
EP3654247A1 (en) * 2018-11-15 2020-05-20 IMEC vzw Convolution engine for neural networks
CN110378475A (zh) * 2019-07-08 2019-10-25 浙江大学 一种基于多位并行二进制突触阵列的神经形态计算电路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈佳 等: ""基于忆阻器的神经网络应用研究"", 《微纳电子与智能制造》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112836816A (zh) * 2021-02-04 2021-05-25 南京大学 一种适用于光电存算一体处理单元串扰的训练方法
CN112836816B (zh) * 2021-02-04 2024-02-09 南京大学 一种适用于光电存算一体处理单元串扰的训练方法
US11876527B2 (en) 2021-09-27 2024-01-16 Skymizer Taiwan Inc. Error calibration apparatus and method
CN114330688A (zh) * 2021-12-23 2022-04-12 厦门半导体工业技术研发有限公司 基于阻变式存储器的模型在线迁移训练方法、装置及芯片
CN114399037A (zh) * 2022-03-24 2022-04-26 之江实验室 基于忆阻器的卷积神经网络加速器核心的模拟方法及装置
CN115311506A (zh) * 2022-10-11 2022-11-08 之江实验室 基于阻变存储器的量化因子优化的图像分类方法及装置
CN115564036A (zh) * 2022-10-25 2023-01-03 厦门半导体工业技术研发有限公司 基于rram器件的神经网络阵列电路及其设计方法
CN115564036B (zh) * 2022-10-25 2023-06-30 厦门半导体工业技术研发有限公司 基于rram器件的神经网络阵列电路及其设计方法

Also Published As

Publication number Publication date
CN112070204B (zh) 2023-01-20

Similar Documents

Publication Publication Date Title
CN112070204B (zh) 一种基于阻变存储器的神经网络映射方法、加速器
CN109800870B (zh) 一种基于忆阻器的神经网络在线学习系统
CN109791626B (zh) 神经网络权重编码方法、计算装置及硬件系统
CN110413255B (zh) 人工神经网络调整方法和装置
CN112183739A (zh) 基于忆阻器的低功耗脉冲卷积神经网络的硬件架构
AU2020274862B2 (en) Training of artificial neural networks
CN110569962B (zh) 一种基于1t1r存储器阵列的卷积计算加速器及其操作方法
CN113344170B (zh) 神经网络权重矩阵调整方法、写入控制方法以及相关装置
CN114677548B (zh) 基于阻变存储器的神经网络图像分类系统及方法
CN113517007B (zh) 一种流水处理方法、系统和忆阻器阵列
WO2022135209A1 (zh) 神经网络的权值的量化方法、量化装置及存储介质
TWI737228B (zh) 基於記憶體內運算電路架構之量化方法及其系統
KR20240025523A (ko) 깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름
US11526285B2 (en) Memory device for neural networks
Li et al. Input-aware dynamic timestep spiking neural networks for efficient in-memory computing
CN115879530B (zh) 一种面向rram存内计算系统阵列结构优化的方法
Zhou et al. Effective vision transformer training: A data-centric perspective
He et al. Towards state-aware computation in ReRAM neural networks
US20230005529A1 (en) Neuromorphic device and electronic device including the same
CN115796252A (zh) 权重写入方法及装置、电子设备和存储介质
Zhang et al. Memristive circuit design of quantized convolutional auto-encoder
CN113553028B (zh) 基于概率比特电路的问题求解优化方法及系统
CN114267391A (zh) 机器学习硬件加速器
CN114519423A (zh) 用于压缩神经网络的方法和装置
Huang et al. Structured precision skipping: Accelerating convolutional neural networks with budget-aware dynamic precision selection

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