CN114341884A - 用于针对二进制处理应用来修改神经网络的系统和方法 - Google Patents
用于针对二进制处理应用来修改神经网络的系统和方法 Download PDFInfo
- Publication number
- CN114341884A CN114341884A CN202080062059.7A CN202080062059A CN114341884A CN 114341884 A CN114341884 A CN 114341884A CN 202080062059 A CN202080062059 A CN 202080062059A CN 114341884 A CN114341884 A CN 114341884A
- Authority
- CN
- China
- Prior art keywords
- binary
- noise
- neural network
- vector
- cim
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
在一个实施例中,一种在二进制神经网络处理器上模拟人工神经网络的操作的方法包括:接收给包括概率二元权重矩阵的层的二进制输入向量;以及执行该输入向量与该概率二元权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改,其中该模拟是在用于针对该二进制神经处理硬件的神经网络模型的训练算法的前向传递中执行的。
Description
本专利申请要求于2020年9月9日提交的题为“SYSTEMS AND METHODS FORMODIFYING NEURAL NETWORKS FOR BINARY PROCESSING APPLICATIONS(用于针对二进制处理应用来修改神经网络的系统和方法)”的非临时申请No.17/016,130的优先权,并且要求于2019年9月9日提交的题为“SYSTEMS AND METHODS FOR MODIFIED NEURAL NETWORKS FORCOMPUTE-IN-MEMORY APPLICATIONS(用于针对存储器内计算应用的改良型神经网络的系统和方法)”的美国临时专利申请No.62/897,934的优先权,其通过援引全部明确纳入于此。
背景
本公开一般涉及用于存储器内计算(CIM)阵列的人工神经网络。
人工神经网络(ANN)应用在数量和用途上持续增长。一种特别常见的ANN类型是卷积神经网络(CNN),其是包括一个或多个卷积层的ANN。卷积层使用一个或多个内核(亦称为过滤器)(其是权重阵列)来处理一个输入张量或输入张量阵列,并生成输出张量。利用CNN运行推断通常需要众多计算来执行许多必需的张量运算。具体而言,使用CNN需要执行海量的矩阵乘法,这些矩阵乘法涉及将权重阵列乘以对应的输入阵列(亦称为激活)。然而,任何设备的计算和功率资源都是有限的。一些电子设备(诸如举例而言,移动设备和物联网(IoT)设备)的资源与台式或服务器设备相比而言尤为有限。另外,使用具有分离的存储器和处理器模块的常规冯·诺依曼(von-Neumann)计算架构需要在存储器和处理器寄存器之间移动大量数据,这往往会在当今的常规硬件中形成瓶颈。
概述
本公开的某些方面涉及一种在二进制神经网络处理器上模拟人工神经网络的操作的方法,包括:接收给包括概率二元权重矩阵的层的二进制输入向量;以及执行该输入向量与该概率二元权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改。
本公开的某些方面涉及一种装置,包括处理器和存储器,该装置被配置成在二进制神经网络处理器上模拟人工神经网络的操作。该模拟包括:接收给包括概率二元权重矩阵的层的二进制输入向量;以及执行该输入向量与该概率二元权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改。
本公开的某些方面涉及一种存储用于神经网络的操作的计算机可执行代码的非瞬态计算机可读介质,包括用于在二进制神经网络处理器上模拟人工神经网络的操作的代码。该模拟包括:接收给包括概率二元权重矩阵的层的二进制输入向量;以及执行该输入向量与该概率二元权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改。
本公开的附加方面、优点和特征会在阅读整个申请后变得明了。
附图简述
以下将结合附图来描述所公开的各实施例,提供附图是为了解说而非限定所公开的各实施例,其中相似的标号标示相似的元件,并且其中:
图1是示例性电子计算设备的简化示意图。
图2解说使用CIM阵列(诸如举例而言,图1的CIM阵列)的示例性二进制CIM系统。
图3是示例性CIM模块(其可对应于例如图1的CIM模块)的简化示意图。
图4示出用于在处于非共享设置的CIM芯片上执行卷积运算的模拟过程的示例性算法。
图5示出从深度学习框架中的实现的视角描述CIM训练规程的示例性算法。
图6是根据本公开的实施例的示例性过程的流程图。
详细描述
参照附图,描述了本公开的若干示例性方面。措辞“示例性”在本文中用于表示“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
一种新涌现的允许显著降低用电的架构是存储器内计算(CIM)架构。CIM设备的一些实现使用改良型静态随机接入存储器(SRAM)单元。其他实现可使用其他类型的存储器单元(例如,磁阻式RAM(MRAM)或电阻式RAM(RRAM))。示例性电子计算设备可包含单个或多个CIM阵列。在一些实施例中,CIM阵列可包括改良型SRAM单元阵列,其可编程以存储例如对应CNN的权重,其中这些单元还被配置成用接收到的输入值来执行计算。注意,CIM阵列也可由除CNN之外的神经网络使用,并且一般而言,CIM阵列对执行任何涉及矩阵乘法的计算有用。虽然常规的电子计算设备包括各种数字域计算组件,但CIM电子计算设备将数字域组件、模拟域组件和用于在这两者之间进行转换的转换器组件组合。这些转换可能向电子计算设备的计算引入噪声或其他不准确性。
使用二进制激活和权重的二进制神经网络(BNN)达成了对于许多人工智能(AI)任务而言足够的准确性。作为包括模拟在内的实现,CIM阵列是实现BNN的最佳方式之一。使用BNN允许用逐位运算(譬如XNOR和模拟总体计数)来替换MAC运算。使用XNOR运算是因为对0和1进行XNOR运算分别对应于对-1和+1进行乘法运算。在CIM中实现BNN允许功率和时间节省,因为每个CIM存储单元也是计算单元。
使用CIM设备进行神经网络加速的一个挑战由矩阵乘法发生在模拟域中(这会受噪声影响)而引起。噪声可能表现为取决于芯片设计呈不同形式的工艺、电压和温度(PVT)变化的结果。运算期间的其他噪声源可包括周期性信号的漂移或抖动。在一些实现中,对层进行处理可能需要使用模数转换器(ADC)来拆分矩阵向量乘法并重新接合其分段,这会引入额外的量化噪声。ADC和数模转换器(DAC)具有有限比特数的分辨率,并且由于这些转换器所需的用电和芯片面积随它们提供的分辨率而缩放,因此优选使用低比特转换器。然而,分辨率越低,添加的量化噪声越大。
如上面所提到的,CIM芯片包含一个或多个CIM阵列。每个阵列被设计成执行二进制矩阵向量乘法——换言之,将二进制输入向量乘以二进制权重矩阵。输入向量的标称最大大小取决于CIM阵列中的行数,而输出向量的标称最大大小取决于CMI阵列中的列数。该配置——其中CIM阵列大到足以在一个计算循环内执行整个矩阵向量乘法——可被称为非共享无限配置。然而,值得注意的是,如果采取额外措施来拆分和重新组合运算,则神经网络层可以实现需要比标称可用的阵列更大的阵列的矩阵向量乘法。如果CIM阵列的行数不足,则这些措施可以包括将矩阵向量乘法水平地拆分为若干部分、使用ADC来将这些乘法的输出数字化、然后将它们相加。在CIM阵列的列数不足的情形中,矩阵向量乘法可被垂直地拆分(而无需用ADC将中间结果数字化)。这两种缺点的组合也是可能的。在这些情形中的任一者中,多个CIM阵列被一起使用(在可被称为非共享有限配置的配置中),或者单个CIM阵列可以被多次使用(在可被称为共享配置的配置中),以执行完整矩阵向量乘法。
对于通用CIM芯片,不能假定它总是有合适量的个体CIM阵列可用于映射任何神经网络架构。一种示例性办法是在该芯片上仅具有一个CIM阵列,并按需将神经网络权重迭代地加载到该阵列中及卸载以处理矩阵向量乘法的各部分。尽管这种办法增加了数据传递的数目,但该数目仍然显著少于全数字非CIM设备上的等价操作。
类似的考虑适用于卷积神经网络层。对于卷积层,输出特征图的每个条目是在矩阵向量乘积的单独执行中按照上述思路计算的。在二进制计算设备(诸如CIM设备)上使用常规训练的神经网络的明显缺点是其预测性能将显著降级,这是因为CIM设备的二进制计算不同于模型已在其中或针对其进行了训练的数字域。由于CIM阵列的重用引起的PVT影响、ADC量化和噪声相关性导致执行环境与数字设备不同、逐CIM设备不同、并且在同一CIM设备上的后续执行之间不同。
相应地,用于提高二进制系统(诸如CIM设备)上的卷积神经网络的准确性的系统和方法将是合乎期望的。如本文中进一步描述的,此类方法包括在训练专为在二进制系统上使用的神经网络时计及噪声效应,以使得所得的神经网络模型更适合于使用CIM阵列的运算。换言之,训练过程包括对CIM设备的噪声效应进行模拟。
图1是示例性电子计算设备100的简化示意图。设备100包括一个或多个CIM模块101,诸如示例性CIM模块101(1)和101(2)。设备100还可包括处理器102、存储器模块103和I/O模块104。设备100的这些和其他组件(未示出)可以用总线、光纤或其他互连(未示出)来互连。每个CIM模块101包括CIM阵列105、输入模块106和模数转换器(ADC)模块107,诸如所解说的示例性CIM阵列105(1)、输入模块106(1)和ADC模块107(1)。
输入模块106路由来自设备100的数字组件(诸如举例而言,处理器102或存储器103)的输入以供CIM阵列105的单元使用。在一些实施例中,输入模块106包括一个或多个数模转换器(DAC)以将数字输入信号转换为模拟信号以供CIM阵列105的单元使用。ADC模块107将CIM阵列105的模拟输出转换为数字输出以提供给设备100的数字组件(诸如处理器102或存储器103)。设备100可以是例如片上系统(SoC)的形式。设备100可包括附加组件和/或芯片(未示出),并且自身是移动计算设备或IoT设备。CIM阵列105可由设备100用来执行卷积运算(诸如举例而言,用于神经网络推断的那些卷积运算)。
图2解说使用CIM阵列201(诸如举例而言,图1的CIM阵列105(1))的示例性二进制CIM系统200。卷积层系统200的层的示例性输入202具有1乘38乘11(1(深度)乘38(高度)乘11(宽度))的尺寸。该层具有六十四(64)个输出通道,并且相对应地具有64个过滤器(由示例性64过滤器张量214表示)。
张量214的64个过滤器中的每个过滤器(例如,示例性过滤器212)具有1乘5乘2(1x5x2)的尺寸(合起来,张量214的64个过滤器构成了一个64x5x2张量)。每个1x5x2过滤器(例如,过滤器212)与输入202进行卷积,以生成输出204的一个1x34x10分段(合起来,输出204是尺寸为64x34x10的张量)。输出204的每个1x34x10分段表示使用步幅一(1x1)对输入202的340个5x2感受野(诸如示例性感受野206)和对应的过滤器(诸如示例性过滤器212)的三千四百(3400)次XNOR运算。
过滤器张量214(64x5x2)的六百四十(640)个权重可被存储在CIM阵列201(其具有至少10行和64列)的640个对应单元中。CIM阵列201的每列可存储对应过滤器212的十个值,其本质上使用任何合适的映射将二维(5x2)过滤器212变换成一维(10x1)向量。应注意,出于简化起见,CIM阵列201在图2中被解说为仅具有几条线用于分别表示CIM阵列201的行和列的输入和输出。
在三百四十(340)个运算循环上,输入202的340个5x2感受野(例如,感受野206)中的每一者的十(10)个值使用字线216被输入到CIM阵列201。应注意,每个二维(5x2)感受野本质上是使用被用于过滤器的相同映射来变换成一维(10x1)向量的。感受野的值与所有64列的对应权重进行XNOR。每列的结果被求和并与阈值作比较以确定该列的二进制输出,其中所有列的结果被聚集以形成1x1x64输出张量(例如,输出张量210),该输出张量形成该层的输出张量204的一部分。输出张量204对应于针对输入202的340个对应感受野(例如,感受野206)的340个1x1x64输出张量的聚集。应注意,在替换实现中,通过例如使用更大的步幅、或膨胀卷积,输出张量204的大小就可以被减小。
图3是示例性CIM模块300(其可对应于例如图1的CIM模块101)的简化示意图。CIM模块300包括输入模块302、ADC模块304和CIM阵列306。CIM阵列306包括c列和r行CIM单元314(1)(1)-314(c)(r),其中每个CIM单元(i)(j)被配置成存储对应的权重值并将其与接收到的输入值相乘。应注意,如在本文中他处提到的,二进制权重和输入值的乘法可以使用XNOR运算来执行。CIM阵列306可对应于例如图1的CIM阵列105或图2的CIM阵列201。每个输入值由CIM阵列306的行i并且对应地由行i的c个CIM单元314(1)(i)-314(c)(i)经由对应的输入线310(i)从输入模块302接收。每个CIM单元314包括电容器,其在XNOR运算的结果为1的情况下被充电,而在该结果为0的情况下被放电。
由每列j的CIM单元314(j)(1)–314(j)(r)进行的XNOR运算的结果被输出到对应的读位线312(j)(诸如举例而言,用于列1的读位线312(1))。列j的CIM单元314(j)(1)–314(j)(r)的输出(以对应电容的形式)由对应位线312(j)求和并作为指示总体计数的输入被提供给ADC模块304中的对应ADC 308(j)。值得注意的是,由于诸如电容器失配和热效应之类的现象,总电压和总体计数之间的关系受噪声影响。附加地,由于跨位线的最大电压增加独立于阵列内的字线数目,因此随着阵列大小增大,总体计数相差1对应于从该位线测得的更小电压差。每个ADC 308还接收参考电压VREF以供用作用于确定对应输出值的阈值。应注意,具有1比特分辨率的ADC 308等同于比较器。然而,应注意,替换地,ADC 308可以是多比特ADC或可变分辨率ADC。各ADC 308的输出被提供给数字处理模块313以供进一步处理,其中该进一步处理可包括用于多比特实现的操作、用以拆分阵列处理的操作、或者与批次归一化、池化或应用非线性相对应的操作。
如上面所提到的,CIM设备中的模拟运算和转换引入了各种噪声,诸如电容器变化、热噪声和偏移噪声。电容器变化可以是每CIM阵列固定的,但可取决于针对运算的特定总体计数。热噪声针对每个计算而变化。偏移噪声可以是每CIM阵列固定的,并在每个激活处被添加。如在共享配置中那样重用CIM阵列可能会引入电容器变化和偏移的相关噪声。在训练期间应当计及这些各种噪声效应,以便生成准确的模型。
为了训练对因CIM而异的效应稳健的神经网络模型,生成CIM阵列的低级电路模拟(例如,SPICE)以具有低级噪声模型,该低级噪声模型被抽象到高级可微分CIM阵列模拟器中。CIM阵列模拟然后被集成到CIM芯片模拟器中。
低级电路模拟包括具有N个字线和单个位线的CIM阵列。单元权重被随机地初始化为0或1。随后,通过切换对应的字线以使得XNOR求值为1来顺序地激活所有行。对于以此方式激活的每个字线,对应于从0到N的总体计数的位线电压被读出。在典型情况下在完成该位线电压对总体计数表征之后,使用蒙特卡洛(Monte Carlo)模拟根据硬件噪声模型来生成[0,N]中的每个个体总体计数处的位线电压变化。
基于这些低级模拟,对无噪总体计数计算a起作用的CIM阵列噪声可针对特定列被表征为三个零均值正态分布源α、β和γ,以使得
这些噪声源取决于其起源及其如何影响a来被区分。首先,CIM计算跨所产生的所有CIM阵列的分布是随机的。随机性在制造时以工艺变化的形式加入。对于给定的CIM阵列实例化,来自这些噪声源的样本可被抽取并且可能以确定性方式影响该阵列的后续计算。具体而言,α涵盖电荷电容变化,并且作为取决于数据的乘性噪声影响总体计数计算。β包摄加性噪声,诸如偏移变化。其次,γ包摄噪声源,诸如应用于CIM阵列的列的每一个读出的热波动。这些噪声源的幅度由硬件设计与所建模的假定的整体来决定。应注意,除了这些类型的噪声源之外,替换实现还可包括其特性可介于之间的噪声源,诸如举例而言,1/f噪声和非线性。
图4示出用于在处于非共享设置的CIM芯片上执行卷积运算的模拟过程的示例性算法400——换言之,假定访问任意数目的固定大小的阵列。该模拟控制如何将每层的权重矩阵的输入激活和元素路由到该一个或多个CIM阵列。如在本文中他处描述的,算法400示出拆分(如果需要的话)输入、执行XNOR运算、注入各种类型的噪声、在电压域和总体计数域之间转换、与阈值(数字或模拟,这取决于是否需要拆分输入)进行比较、以及输出特征图结果。应注意,全连接层的执行是类似的,但无需将内核和每个输入片压平的附加步骤。
如先前描述的,取决于卷积层或全连接层相对于CIM阵列大小的大小,CIM芯片不同地操作。当内核容量未超过阵列的高度时,ADC作为比较器来操作以直接产生向下一层的二进制输入。替换地,矩阵向量运算是跨若干CIM阵列拆分的,并且部分式总体计数使用ADC被数字化以便在数字域中求和。训练模拟可被用于通过尝试不同的阵列高度调整CIM芯片的设计来在减少ADC使用与降低分辨率和信噪比(SNR)之间进行折衷。
如果输出通道数超过CIM阵列中的列数,则输出通道将被映射到不同的阵列,并且对应的输入片被呈现给这些阵列中的每一者。由于假定CIM噪声是跨列独立的,因此在非共享场景中不需要显式地对内核的这种水平拆分进行建模。然而,在共享CIM阵列场景中,算法400可被略微修改如下。首先,在执行一层之后,其内核被卸载以释放阵列以供执行后续层。其次,水平地拆分内核需要卸载和加载这些不同的内核部分,并分多个步骤计算所有的输出特征图。在非共享情形中,工艺变化噪声α和β仅引发跨特征图的条目的系统误差。然而,在共享情形中,同一列还在层之间、在不同特征图之间(水平拆分)、以及跨部分式卷积(当垂直地拆分时)被重用多次。
如早先所提到的,针对CIM应用训练神经网络的一个重要原则是在训练期间将神经网络暴露于它在测试时间将要暴露的环境中。如果网络被训练以在训练期间跨所有或宽范围的可能芯片分布表现良好,则它将在从与大量在训练期间模拟的CIM芯片相同的分布中抽取的测试芯片上表现良好,前提是这些模拟足够好地逼近现实。这同样适用于低比特量化。
一些实现使用概率二进制神经网络(PBNN)来训练二进制层。训练和使用PBNN在Peters,J.W.和Welling,M.发表于arXiv:1809.03368(2018)的Probabilistic binaryneural networks(概率二进制神经网络)中进行了描述,并通过援引整体纳入于此。本质上,在训练期间,PBNN的权重作为概率分布(尤其是权重为0或1的概率)进行管理。因此,网络学习权重具有那些值的概率,而不是直接学习权重的特定值。对网络的第一层进行多比特量化的实施例可以使用松弛量化,如在Louizos,C.、Reisser,M.、Blankevoort,T.、Gavves,E.和Welling,M.发表于arXiv:1810.01875(2018)的Relaxed quantization fordiscretized neural networks(用于离散化神经网络的松弛量化)中描述的,其通过援引整体纳入于此。
这两种方法都使用将网络的权重建模为随机变量的想法,其支持在于经量化权重在测试时间可以取的可能值。概率对待并非在训练期间直接对权重进行量化,而是允许避免使用有偏差的直通估计器进行梯度计算。相反,松弛量化使用具体分布来对权重进行采样,同时在训练期间使分布的方差缓慢退火。PBNN通过用具有高斯分布的概率权重(中心极限定理)直接逼近该层的线性运算的结果来避免采样。集成CIM知悉式训练和量化知悉式训练的一些实施例仅在二进制层上操作。其他实施例还可在多比特层上操作。为了训练用于CIM设备的高性能二进制模型,PBNN模型被扩展为CIM知悉的。
图5示出从深度学习框架中的实现的视角描述CIM训练规程的示例性算法500。在利用PBNN进行训练期间,假定权重和激活位于{-1,+1}中。如此,需要将作为中心极限定理逼近结果的高斯预激活映射到在{0,1}域中对权重w和激活x执行的XNOR运算的总体计数。在测试时间,域之间的变换由下式(3)针对内核j(其对应于CIM阵列中的列j)来描述。
在训练时间,通过对高斯预激活应用相同的变换来获得等价高斯预激活总体计数a
在将PBNN计算映射到等价CIM阵列计算之后,该操作行进到对由式(1)描述的模拟噪声模型进行积分。在前向传播期间,噪声源α、β和γ被采样并被应用于高斯预激活a的特征图。
在该模拟的一个实施例中,经压平内核的长度超过CIM阵列中的行数N的情景可以是显式地建模的。在该情形中,通过将a量化为在0到N之间的2b个均匀间隔的值来模拟ADC。在训练期间,a是高斯随机变量,并且因此,可在取整之前使用重新参数化技巧从a中采样,或者可使用概率替换方案,诸如松弛量化。应注意,采样与直通估计器相结合可能是有利的,因为它避免了松弛量化的计算密集型概率松弛。在将所有经量化的部分式预激活相加之后,式(3)的变换被取消,并且随机二进制激活的概率被编制为与阈值O之差。在CIM阵列足够大的情形中,可以继续计算高于阈值O的概率质量的PBNN二进制化规程。
许多应用需要输入和第一层的权重为多比特精度,以避免不可接受的预测性能损失。例如,在一个实现中,虽然隐藏层可能具有二进制输入和权重,但第一层接收4比特输入并且使用2比特权重。取决于各种考虑(诸如输入大小、所需位宽以及硬件的功率分布),第一层可以在CIM模块内使用针对二进制CIM阵列的多比特适配来执行,或者替换地,由上游数字处理器(诸如举例而言,图1的CPU 102)在数字域中执行。应当注意,在一些实施例中,这些模拟仅向二进制层添加噪声,并且因此不向例如多比特第一层添加噪声。输入和内核被量化为统一网格的卷积可以实现为整数乘法和加法,并适当处理网格尺度和零偏移。对于二进制CIM硬件上的整数卷积,整数卷积可以实现为二进制卷积的加权和,如式(5)中所示。
在CIM硬件上,每个二进制运算可以在CIM阵列上执行,使用ADC进行数字化,并进行数字内缩放和求和以计算最终结果。
图6是根据本公开的实施例的示例性过程600的流程图。过程600开始于接收给包括概率二进制权重矩阵的层的二进制输入向量(步骤601)。该过程继以利用该概率二进制权重矩阵来执行对该输入向量的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改(步骤602)。该过程然后可通过返回到步骤601来重复。过程600可以由例如包括处理器和所连接存储器的电子计算机来执行。
如上面所提到的,可以使用来自这些模拟的洞察来调整用于CIM设备的神经网络模型的设计。由于一重要瓶颈是所需ADC求值的次数,因此通过将内核容量上减少到小于或等于CIM阵列(诸如图3的CIM阵列306)中的行数Ⅳ来减少那些所需ADC求值的次数。将ADC作为二进制比较器进行操作需要更少的能量,并且每输入片只需要针对阈值进行一次DAC求值。通过对除第一层之外所有层的卷积过滤器的形状进行标准化,可以将内核容量保持为不大于Ⅳ,从而保持每过滤器的计算总数小于Ⅳ。对于第一层,由于输入深度通常为3或更小,因此相对容易保持内核容量低于Ⅳ,即使在内核较大的情况下亦如此。在一些实施例中,对第一层使用扩大的步幅长度和/或膨胀卷积,以减小输出的大小。可以早期在网络中使用大内核大小和步幅,以附加地使对于存储二进制特征图的存储器要求保持为低。
如上所述,通过使用再现硬件的相关特性的模拟器,训练对测试时间失配的问题可以得到解决。该模拟器是可微分的、随机的、并且使用深度学习框架(诸如举例而言,Pytorch,这是由加利福尼亚州门洛帕克的Facebook公司开发的开源机器学习框架)实现,这允许其集成到加速型训练流水线中。连同对ADC的模拟,还显式地考虑了由于CIM阵列重用引起的相关性,如上所述。此外,神经网络训练规程可被用于驱动硬件设计。值得注意的是,由于关于输入和第一层的特殊考虑,存在多种方式来容适CIM设备对第一层的替换处理。
以上结合附图阐述的以上详细说明描述了示例而不代表可被实现或者落在权利要求的范围内的仅有示例。术语“示例”或“示例性”在本说明书中使用时意指“用作示例、实例或解说”,并且并不意指“优于”或“胜过其他示例”。本详细描述包括具体细节以提供对所描述的技术的理解。然而,可在没有这些具体细节的情况下实践这些技术。在一些实例中,众所周知的结构和装置以框图形式示出以避免模糊所描述的示例的概念。
还注意到,本文任何示例性方面中所描述的操作步骤是为了提供示例而被描述的。所描述的操作可按除了所解说的顺序之外的众多不同顺序来执行。此外,在单个操作步骤中描述的操作实际上可在多个不同步骤中执行。另外,可组合示例性方面中讨论的一个或多个操作步骤。应理解,如对本领域技术人员显而易见地,在流程图中解说的操作步骤可进行众多不同的修改。本领域技术人员还将理解,可使用各种不同技术和技艺中的任何一种来表示信息和信号。例如,贯穿上面说明始终可能被述及的数据、指令、命令、信息、信号、比特、码元和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子、或其任何组合来表示。
结合本文中所描述的各方面所描述的各种解说性电路可以在集成电路(IC)(诸如,处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备)中实现或与其实现。处理器可以是微处理器,但在替换方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器、或任何其他此类配置。
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:a、b、c、a-b、a-c、b-c、和a-b-c,以及具有多重相同元素的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、C-C和C-C-C,或者a、b和c的任何其他排序)。
提供本公开是为使得本领域任何技术人员皆能够制作或使用本公开的各方面。对本公开的各种修改对本领域技术人员而言将容易是显而易见的,并且本文中所定义的普适原理可被应用到其他变型而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖特征一致的最广义的范围。
Claims (23)
1.一种在二进制神经网络处理器上模拟人工神经网络的操作的方法,包括:
接收给包括概率二进制权重矩阵的层的二进制输入向量;以及
执行所述输入向量与所述概率二进制权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改。
2.如权利要求1所述的方法,其中,所述二进制神经网络处理器是存储器内计算(CIM)设备。
3.如权利要求1所述的方法,其中,所述概率二进制权重矩阵包括权重为0或1的概率。
4.如权利要求1所述的方法,其中,所模拟的二进制神经处理硬件噪声模拟所模拟二进制神经处理硬件的工艺、电压和温度(PVT)变化。
5.如权利要求4所述的方法,其中,热噪声针对每次乘法而变化。
6.如权利要求4所述的方法,其中:
PVT变化噪声包括电容器变化噪声;
生成所述二进制输出向量包括计算总体计数;并且
电容器变化噪声取决于所述总体计数。
8.如权利要求1所述的方法,其中:
所述层大于所述二进制神经网络处理器的处理阵列;
所述二进制神经网络处理器包括模数转换器(ADC);
执行所述向量矩阵乘法包括拆分所述层以及生成由所述ADC数字化的中间结果;以及
所模拟的二进制神经处理硬件噪声包括源于所述ADC对所述中间结果进行数字化的量化噪声。
9.如权利要求1所述的方法,其中:
执行所述向量矩阵乘法包括在共享配置中使用所述二进制神经网络过程;
所模拟的二进制神经处理硬件噪声包括针对所述共享配置的相关噪声。
10.如权利要求1所述的方法,其中,所模拟的二进制神经处理硬件噪声是从所述二进制神经网络处理器的低级电路模拟生成的。
11.如权利要求1所述的方法,其中:
所述人工神经网络包括第一层和多个附加层;
所述概率二进制权重矩阵能对应于所述多个附加层中的任一者;并且
所述概率二进制权重矩阵不能对应于所述第一层。
12.一种装置,包括处理器和存储器,所述装置被配置成在二进制神经网络处理器上模拟人工神经网络的操作,所述模拟包括:
接收给包括概率二进制权重矩阵的层的二进制输入向量;以及
执行所述输入向量与所述概率二进制权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改。
13.如权利要求12所述的装置,其中,所述二进制神经网络处理器是存储器内计算(CIM)设备。
14.如权利要求12所述的装置,其中,所述概率二进制权重矩阵包括权重为0或1的概率。
15.如权利要求12所述的装置,其中,所模拟的二进制神经处理硬件噪声模拟所模拟二进制神经处理硬件的工艺、电压和温度(PVT)变化。
16.如权利要求15所述的装置,其中,热噪声针对每次乘法而变化。
17.如权利要求15所述的装置,其中:
PVT变化噪声包括电容器变化噪声;
生成所述二进制输出向量包括计算总体计数;并且
电容器变化噪声取决于所述总体计数。
19.如权利要求12所述的装置,其中:
所述层大于所述二进制神经网络处理器的处理阵列;
所述二进制神经网络处理器包括模数转换器(ADC);
执行所述向量矩阵乘法包括拆分所述层以及生成由所述ADC数字化的中间结果;以及
所模拟的二进制神经处理硬件噪声包括源于所述ADC对所述中间结果进行数字化的量化噪声。
20.如权利要求12所述的装置,其中:
执行所述向量矩阵乘法包括在共享配置中使用所述二进制神经网络过程;
所模拟的二进制神经处理硬件噪声包括针对所述共享配置的相关噪声。
21.如权利要求12所述的装置,其中,所模拟的二进制神经处理硬件噪声是从所述二进制神经网络处理器的低级电路模拟生成的。
22.如权利要求12所述的装置,其中:
所述人工神经网络包括第一层和多个附加层;
所述概率二进制权重矩阵能对应于所述多个附加层中的任一者;并且
所述概率二进制权重矩阵不能对应于所述第一层。
23.一种存储用于神经网络的操作的计算机可执行代码的非瞬态计算机可读介质,包括用于在二进制神经网络处理器上模拟人工神经网络的操作的代码,所述模拟包括:
接收给包括概率二进制权重矩阵的层的二进制输入向量;以及
执行所述输入向量与所述概率二进制权重矩阵的向量矩阵乘法以生成二进制输出向量,其中乘法结果由所模拟的二进制神经处理硬件噪声来修改。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962897934P | 2019-09-09 | 2019-09-09 | |
US62/897,934 | 2019-09-09 | ||
PCT/US2020/049997 WO2021050590A1 (en) | 2019-09-09 | 2020-09-09 | Systems and methods for modifying neural networks for binary processing applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341884A true CN114341884A (zh) | 2022-04-12 |
Family
ID=74851323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080062059.7A Pending CN114341884A (zh) | 2019-09-09 | 2020-09-09 | 用于针对二进制处理应用来修改神经网络的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11790241B2 (zh) |
CN (1) | CN114341884A (zh) |
WO (1) | WO2021050590A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11676063B2 (en) * | 2019-03-28 | 2023-06-13 | International Business Machines Corporation | Exposing payload data from non-integrated machine learning systems |
US11496147B2 (en) * | 2020-09-24 | 2022-11-08 | Apple Inc. | Fractal digital to analog converter systems and methods |
US20220138545A1 (en) * | 2020-11-05 | 2022-05-05 | Western Digital Technologies, Inc. | Adaptive mixed digital and analog computational storage systems |
US20220366224A1 (en) * | 2021-05-13 | 2022-11-17 | Micron Technology, Inc. | Binary neural network in memory |
US20220414444A1 (en) * | 2021-06-29 | 2022-12-29 | Qualcomm Incorporated | Computation in memory (cim) architecture and dataflow supporting a depth-wise convolutional neural network (cnn) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125477A1 (en) | 2003-12-04 | 2005-06-09 | Genov Roman A. | High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof |
EP3637272A4 (en) * | 2017-06-26 | 2020-09-02 | Shanghai Cambricon Information Technology Co., Ltd | DATA-SHARING SYSTEM AND RELATED DATA-SHARING PROCESS |
US11650751B2 (en) * | 2018-12-18 | 2023-05-16 | Hewlett Packard Enterprise Development Lp | Adiabatic annealing scheme and system for edge computing |
US11194886B2 (en) * | 2019-05-09 | 2021-12-07 | Applied Materials, Inc. | Bit-ordered binary-weighted multiplier-accumulator |
-
2020
- 2020-09-09 CN CN202080062059.7A patent/CN114341884A/zh active Pending
- 2020-09-09 US US17/016,130 patent/US11790241B2/en active Active
- 2020-09-09 WO PCT/US2020/049997 patent/WO2021050590A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021050590A1 (en) | 2021-03-18 |
US11790241B2 (en) | 2023-10-17 |
US20210073650A1 (en) | 2021-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114341884A (zh) | 用于针对二进制处理应用来修改神经网络的系统和方法 | |
US20240112029A1 (en) | Acceleration of model/weight programming in memristor crossbar arrays | |
EP3704637A1 (en) | Hardware accelerated discretized neural network | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
US11551062B2 (en) | Optimization apparatus and control method thereof | |
CN114418105B (zh) | 一种基于量子线路处理量子应用问题的方法及装置 | |
Cao et al. | Neural-pim: Efficient processing-in-memory with neural approximation of peripherals | |
Zhou et al. | Ml-hw co-design of noise-robust tinyml models and always-on analog compute-in-memory edge accelerator | |
Galetzka et al. | An hp‐adaptive multi‐element stochastic collocation method for surrogate modeling with information re‐use | |
US20210174182A1 (en) | Mtj-based hardware synapse implementation for binary and ternary deep neural networks | |
Bravo et al. | High level synthesis FPGA implementation of the Jacobi algorithm to solve the eigen problem | |
Agarwal et al. | ROSS SIM | |
Agarwal et al. | Designing an analog crossbar based neuromorphic accelerator | |
TWI818547B (zh) | 與用於具有不同的精度之按位元乘法之混合信號電路相關之設備、方法、製品、系統及裝置 | |
EP4141751A1 (en) | Error mitigation for sampling on quantum devices | |
Ma et al. | Non-volatile memory array based quantization-and noise-resilient LSTM neural networks | |
US20220121908A1 (en) | Method and apparatus for processing data, and related product | |
CN114418104B (zh) | 一种量子应用问题的处理方法及装置 | |
Corey et al. | Reliable measurement using unreliable binary comparisons | |
Xu et al. | Reliability analysis with partially observed information | |
Fu et al. | Cycle-to-cycle variation enabled energy efficient privacy preserving technology in ann | |
Reisser et al. | Deep Learning for Compute in Memory | |
Wang et al. | Can emerging computing paradigms help enhancing reliability towards the end of technology roadmap? | |
Caselli et al. | Modelling and Optimization of a Mixed-Signal Accelerator for Deep Neural Networks | |
Hemmat et al. | Power-efficient ReRAM-aware CNN model generation |
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 |