CN116583854A - Rpu交叉开关阵列的最坏情况噪声和界限管理 - Google Patents
Rpu交叉开关阵列的最坏情况噪声和界限管理 Download PDFInfo
- Publication number
- CN116583854A CN116583854A CN202180080347.XA CN202180080347A CN116583854A CN 116583854 A CN116583854 A CN 116583854A CN 202180080347 A CN202180080347 A CN 202180080347A CN 116583854 A CN116583854 A CN 116583854A
- Authority
- CN
- China
- Prior art keywords
- input
- vector value
- value
- input vector
- analog
- 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
- 238000003491 array Methods 0.000 title abstract description 7
- 239000013598 vector Substances 0.000 claims abstract description 156
- 238000000034 method Methods 0.000 claims abstract description 68
- 239000011159 matrix material Substances 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013139 quantization Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 abstract description 19
- 238000007726 management method Methods 0.000 description 50
- 238000010586 diagram Methods 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 14
- 239000010410 layer Substances 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000013528 artificial neural network Methods 0.000 description 7
- 210000002364 input neuron Anatomy 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 5
- 210000004205 output neuron Anatomy 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000003920 cognitive function Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation 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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- 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
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
提供了用于使用基于最坏情况的缩放因子对RPU交叉开关阵列上的DNN训练进行噪声和界限管理的技术。一种用于噪声和界限管理的方法,包括:获得RPU器件的模拟交叉开关阵列的输入向量值x,其中权重矩阵被映射到RPU器件的模拟交叉开关阵列;以及基于最坏情况来缩放输入向量值x,以提供经缩放的输入向量值x'来用作RPU器件的模拟交叉开关阵列的输入,其中最坏情况包括权重矩阵的假定最大权重乘以来自输入向量值x的绝对值的总和。
Description
技术领域
本发明涉及具有电阻处理单元(resistive processing unit,RPU)器件的模拟交叉开关(crossbar)阵列的深度神经网络(deep neural network,DNN)的训练,更具体地,涉及用于使用基于最坏情况的缩放因子对RPU交叉开关阵列上的DNN训练进行噪声和界限管理的技术,该技术提供了有效的运行时间改进。
背景技术
深度神经网络(DNN)可以在诸如电阻处理单元(RPU)之类的存储器设备的模拟交叉开关阵列中体现。基于DNN的模型已经被用于各种不同的基于认知的任务,诸如对象和语音识别以及自然语言处理。当执行这些任务时,需要神经网络训练来提供高水平的准确性。然而,在RPU阵列上执行的操作本质上是模拟的,因此容易受到各种噪声源的影响。当RPU阵列的输入值很小时(诸如对于后向循环遍次而言),输出信号可能被噪声掩盖,因此产生不正确的结果。
此外,数模转换器(digital-to-analog converter,DAC)和模数转换器(analog-to-digital converter,ADC)分别用于将RPU阵列的数字输入转换成模拟信号,以及将RPU阵列的输出转换回数字信号。因此,训练过程也受到阵列所采用的DAC和ADC转换器的有界范围的限制。
界限管理对于RPU阵列上的DNN训练变得非常重要,特别是在根据自动权重缩放设置权重时。利用自动权重缩放,阵列中的RPU器件的可用电阻状态资源被最优地映射到权重范围(电阻值)中,该权重范围通过用阵列大小来缩放RPU器件的有界权重范围而对DNN训练有用。
传统的方法是识别输入向量中的最大值(m),并且将RPU阵列的输入值缩放该最大值(m),以获得最佳的模拟噪声性能(噪声管理)。为了管理界限(界限管理),通过减少形成RPU阵列的输入信号所根据的值来消除RPU阵列的输出处的饱和。
然而,当超过界限时,需要对缩小的输入进行重复计算,以达到输出阈值。虽然在解决自动权重缩放的增加的测试误差的问题上非常有效,但是这种迭代的缩小方法带来了不期望的成本,即可变的运行时间。
因此,具有改进的运行时间的有效的噪声和界限管理技术将是期望的。
发明内容
本发明提供了用于使用基于最坏情况的缩放因子对电阻处理单元(RPU)交叉开关阵列上的深度神经网络(DNN)训练进行噪声和界限管理的技术,该技术提供了有效的运行时间改进。在本发明的一个方面,提供了一种用于噪声和界限管理的方法。该方法包括:获得RPU器件的模拟交叉开关阵列的输入向量值x,其中,权重矩阵被映射到RPU器件的模拟交叉开关阵列;以及基于最坏情况来缩放输入向量值x,以提供经缩放的输入向量值x'来用作RPU器件的模拟交叉开关阵列的输入,其中,最坏情况包括权重矩阵的假定最大权重乘以来自输入向量值x的绝对值的总和。
例如,可以根据输入向量值x来计算绝对最大输入值xmx,可以将建议缩放因子σ计算为其中,ω是权重矩阵的假定最大权重,s是总输入变量,并且b是RPU器件的模拟交叉开关阵列的输出界限,可以将噪声和界限管理缩放因子α设置为绝对最大输入值xmx或建议缩放因子σ,以较大者为准,并且可以使用噪声和界限管理缩放因子α来缩放输入向量值x。
通过参考下面的详细描述和附图,将获得对本发明的更完整的理解以及本发明的进一步特征和优点。
附图说明
图1是示出根据本发明实施例的在电阻处理单元(RPU)器件的模拟交叉开关阵列中体现的深度神经网络(DNN)的图;
图2是示出根据本发明实施例的用于噪声和界限管理的示例性方法的图;
图3是示出根据本发明实施例的前向循环操作中的本噪声和界限管理技术的示例性实施方式的图;
图4是示出根据本发明实施例的后向循环操作中的本噪声和界限管理技术的示例性实施方式的图;
图5是示出根据本发明实施例的用于噪声和界限管理的替代示例性方法的图;
图6是示出根据本发明实施例的用于执行本文给出的一种或多种方法的示例性装置的图;
图7描绘了根据本发明实施例的云计算环境;以及
图8描绘了根据本发明实施例的抽象模型层。
具体实施方式
如上所述,现有的噪声和界限管理技术涉及使用输入向量中的最大值(m)来缩放RPU阵列的输入值,以便获得最佳的模拟噪声性能(噪声管理)。为了管理界限,通过迭代地减少形成RPU阵列的输入信号所根据的值直到达到输出阈值来消除RPU阵列的输出处的饱和(界限管理)。然而,这样做会不期望地导致运行时间延迟。
有利地是,本文提供了用于当(有噪声的)模拟系统的动态范围受限并且运行时间必须被最小化时对模拟RPU交叉开关阵列上的深度神经网络(DNN)训练进行噪声和界限管理的技术。即,如将在下面详细描述的,本方法是相对于最坏情况(即,给定特定输入情况下的任何权重矩阵的最大可能输出)来缩放RPU阵列的输入信号,该最坏情况用于估计将输入信号带入模拟交叉开关系统的受限动态范围中所需的缩放因子。
如图1所示,DNN可以体现在RPU器件的模拟交叉开关阵列中,其中算法(抽象)权重矩阵102的每个参数(权重Wij)被映射到硬件上的单个RPU器件(RPUij),即RPU器件110的物理交叉开关阵列104。交叉开关阵列104具有一组(第一组)导电行线106和一组(第二组)导电列线108,该组导电列线108与该组导电行线106正交并相交。参见图1。多组导电行线106和导电列线108的交叉点被RPU器件110分隔开,形成了RPU器件110的交叉开关阵列104。每个RPU器件110可以包括两个电极之间的有源区(即,双端器件)。有源区的导电状态标识了RPU器件110的权重值,该权重值可以通过向电极施加编程信号而被更新/调整。
每个RPU器件110(RPUij)基于其位置(即,在交叉开关阵列104的第i行和第j列中)而被唯一地识别。例如,在交叉开关阵列104中从上到下、从左到右,位于第一导电行线106a和第一导电列线108a的交叉点处的RPU器件110被指定为RPU11,位于第一导电行线106a和第二导电列线108b的交叉点处的RPU器件110被指定为RPU12,以此类推。权重矩阵102中的权重参数到交叉开关阵列104中的RPU器件110的映射遵循相同的惯例。例如,权重矩阵102的权重Wi1被映射到交叉开关阵列104的RPUi1,权重矩阵102的权重Wi2被映射到交叉开关阵列104的RPUi2,以此类推。
交叉开关阵列104的RPU器件110用作DNN中的神经元之间的加权连接。RPU器件110的电阻可以通过控制施加在该组导电行线106和该组导电列线108的各个导线之间的电压而被更改。更改RPU器件110的电阻是如何基于例如RPU器件110的高电阻状态或低电阻状态将数据存储在交叉开关阵列104中。通过向该组导电行线106和该组导电列线108中相对应的导线施加(读取)电压并测量流过目标RPU器件110的电流,来读取RPU器件110的电阻状态(高或低)。所有涉及权重的操作由RPU器件110完全并行地执行。
在机器学习和认知科学中,基于DNN的模型是灵感来自动物的生物神经网络(特别是大脑)的一系列统计学习模型。这些模型可以用于估计或近似取决于大量输入和通常未知的连接权重的系统和认知功能。DNN通常体现为互连处理器元件的所谓“神经形态”系统,处理器元件充当以电子信号的形式在彼此之间交换“消息”的仿真“神经元”。DNN中在模拟神经元之间携带电子消息的连接被提供有与给定连接的强弱相对应的数字权重。这些数字权重可以基于经验而被调整和调谐,使得DNN适应输入并能够学习。例如,用于图像分类的DNN由一组可以被输入图像的像素激活的输入神经元定义。在通过由网络设计者确定的函数进行加权和变换之后,这些输入神经元的激活随后被传递给其他下游神经元。重复这一过程,直到输出神经元被激活。被激活的输出神经元确定图像的分类。
可以使用诸如随机梯度下降(stochastic gradient descent,SGD)之类的过程来执行DNN训练,其中使用后向传播来计算每个参数(权重Wij)的误差梯度。后向传播在三个循环中执行,即前向循环、后向循环和权重更新循环,这三个循环重复多次,直到满足收敛标准。
基于DNN的模型由多个处理层组成,多个处理层学习具有多个抽象级别的数据表示。对于其中N个输入神经元连接到M个输出神经元的单个处理层,前向循环涉及计算向量矩阵乘法(y=Wx),其中长度为N的向量x表示输入神经元的活动,并且大小为M×N的矩阵W存储每对输入和输出神经元之间的权重值。所得的长度为M的向量y通过在每个电阻存储器元件上执行非线性激活来进一步处理,然后将其传递到下一层。
一旦信息到达最终输出层,后向循环就涉及计算误差信号并通过DNN后向传播误差信号。单层上的后向循环还涉及权重矩阵(z=WTδ)的转置(交换每一行和相对应的列)上的向量矩阵乘法,其中长度为M的向量δ表示由输出神经元计算的误差,并且长度为N的向量z使用神经元非线性的导数来进一步处理,然后将其向下传递到先前的层。
最后,在权重更新循环中,通过执行前向循环和后向循环中使用的两个向量的外积来更新权重矩阵W。这两个向量的外积通常被表示为W←W+η(δxT),其中η是全局学习率。后向传播期间在权重矩阵102上执行的所有这些操作可以用RPU器件110的交叉开关阵列104来实施。
如上所述,数模转换器(DAC)和模数转换器(ADC)分别用于将交叉开关阵列104的RPU器件110的数字输入转换成模拟信号和将交叉开关阵列104的RPU器件110的输出转换回数字信号。在对模拟RPU交叉开关阵列上的DNN训练进行噪声和界限管理的情况下,
是模拟空间中的输入向量,并且
是数字输出向量,其中fDAC和fADC分别表示DAC和ADC的变换,并且α是噪声和界限管理缩放因子。通过交叉开关阵列104的RPU器件110进行的操作具有来自ADC饱和的有界输出值。即,ADC被限定在某个范围-b,...,b内,其中低于输出界限-b或高于输出界限b的值对于相应的界限是饱和的。超出界限值的相对信息会由于限幅而丢失。传统上,如果模拟计算输出大于界限,即/>则在设置α←2α的情况下迭代地重复计算,直到输出低于界限(界限管理)。然而,迭代计算对运行时间有负面影响。
相比之下,根据本技术,基于最坏情况来缩放交叉开关阵列104的RPU器件110的输入,以便减轻由于RPU器件110的模拟交叉开关阵列104的受限动态范围而导致的限幅输出值的风险。本文使用的术语“最坏情况(worst-case scenario)”是指给定特定输入向量的情况下来自权重矩阵(诸如权重矩阵102)的最大可能输出(即最大权重)。在RPU器件中表示权重的物理电导受到物理限制。因此,在本文中假定权重矩阵中的权重在–wmax至wmax的范围内,其中,wmax对应于gmax(即RPU器件可达到的最大电导)。如将在下面详细描述的,利用本技术,输入信号的绝对总和以及恒定最大权重的假定被用于计算数字外围设备中(在DAC之前或在ADC之后)的输入和输出的噪声和界限管理缩放因子(α),以将输入带入交叉开关阵列104的RPU器件110的动态范围中。有利的是,本最坏情况管理过程不添加可变的运行时间,因为当界限被限幅时不需要重新计算结果,这是因为通过将最坏情况作为确定缩放因子的参考而确保了输出界限永远不会被限幅。
图2是示出用于噪声和界限管理的示例性方法200的图,该示例性方法200相对于最坏情况来缩放对交叉开关阵列104的RPU器件110的输入。如上所述,在权重矩阵102上执行的前向循环和后向循环各自涉及向量矩阵乘法运算。在RPU器件110的模拟交叉开关阵列104中,这种向量矩阵乘法运算涉及将每个输入向量值(参见下文)与权重矩阵102中相对应的权重值Wij(在相应的行上)相乘,并对结果求加。这一过程在本文中也称为RPU器件110的模拟交叉开关阵列104的“乘法累加”运算。对于每个乘法累加循环,方法200的步骤作为在数字方面的预先计算来执行,以确定用于RPU器件110的模拟交叉开关阵列104上的操作的缩放因子α。值得注意的是,根据示例性实施例,方法200的一个或多个步骤,包括噪声和界限管理缩放因子a的计算、将来自RPU器件110的交叉开关阵列104的输入/输出值缩放/重新缩放a倍(参见下文)等,是在RPU阵列硬件的外部执行的,例如,由诸如下文结合图6的描述所描述的装置600之类的装置来执行。另外,本技术的一个或多个元素可以可选地作为云环境中的服务来提供。例如,仅作为示例,用于输入向量值的训练数据(参见下文)可以远程驻留在云服务器上。此外,方法200的任何步骤可以在专用云服务器上执行以利用高性能CPU和GPU,此后,将结果发送回本地设备。
在步骤202中,获得输入向量。输入向量包括数字值x。输入向量中的数字值x在本文中也称为“输入向量值x”。根据示例性实施例,输入向量值x包括来自训练数据集的数据。仅作为示例,训练数据集可以从DNN训练数据的数据库或其他储存库获得。
在步骤204中,输入向量值的绝对最大值xmx被计算如下:
xmx=maxi|xi| (3)
因此,xmx在本文中也可以称为绝对最大输入值。在步骤206中,将绝对最大输入值xmx分配给缩放因子a。
在该过程的这一阶段,将为RPU器件110的模拟交叉开关阵列104上执行的向量矩阵乘法运算所采用的权重值(参见上文)是先验未知的。然而,如上所述,最坏情况假定是所有模拟权重对于所有正输入向量值最大为正,并且对于所有负输入向量值最大为负。在这种情况下,在步骤208中,计算输入向量值x的所有绝对值的总和。在步骤210中,将该总和分配给总输入变量s,即s=∑|xi|。
在前面的示例中,输入向量值x(负的和正的)在一个遍次中作为输入被给到RPU器件110的模拟交叉开关阵列104。替代地,在另一示例性实施例中,输入向量值x的负输入值和正输入值在两个单独的遍次中作为输入被给到RPU器件110的模拟交叉开关阵列104,其中输入向量的相应其他输入值(负的或正的)被设置为零,并且两个遍次的输出被符号校正并相应地相加以获得最终结果。例如,如果负输入值在第一遍次中作为输入被给到RPU器件110的模拟交叉开关阵列104(而正输入值被设置为零),则在第二遍次中正输入值作为输入被给到RPU器件110的模拟交叉开关阵列104(而负输入值被设置为零),反之亦然。在这种情况下,可以应用相对应的最坏情况,其中假定所有正(或负)输入向量值达到最大正(或负)权重,并且所有其他权重对输出没有贡献(因此可以假定为零),因为相对应的输入值对于相应的遍次将被设置为零。在这种情况下,将正输入向量值或负输入向量值中的较大量分配给总输入变量s。
即,根据该替代实施例,在步骤212中,仅正输入向量值的所有绝对值的总和(sp)被计算为:
sp=∑iI(xi>0)·|xi| (4)
其中,I(true)=1且I(false)=0指示条件是否为真。在步骤214中,仅负输入向量值的所有绝对值的总和(sn)被计算为:
sn=∑iI(xi<0)·|xi| (5)
其中,I(true)=1且I(false)=0指示条件是否为真。
在步骤216中,将两个量sp和sn中较大的一个分配给总输入变量s。即,在该示例性实施例中,总输入变量s被设置如下:
s=max(sn,sp) (6)
假定ω是权重矩阵102的最大权重,即ω是假定最大权重。然而,如将在下面详细描述的,ω可以被减少(例如减少到假定最大权重的50%),因为最坏情况的发生是高度不可能的。即,对于一些不可能的输入向量,输出确实可能被输出界限所限幅,但是对于大多数情况来说这是不可能的,使得DNN训练或推断结果将不会显著地改变。
给定ω是假定最大权重,预期的最坏情况总输出是ω乘以总输入s,即ωs。如上所述,期望这一预期的最坏情况总输出小于输出界限b。因此,在步骤218中,输入向量值(在最坏情况下)的建议缩放因子σ被计算为ω乘以总输入s的乘积除以输出界限b,即
如上所述,ω是假定最大权重。根据示例性实施例,ω是基于RPU器件110的最大电导值根据DNN的“数学”权重值所对应的映射的用户定义值。例如,仅作为示例,假定最大权重ω的合适值可能是0.6。因此,基于等式7,如果来自RPU器件110的模拟交叉开关阵列104的实际总输出确实与预期的最坏情况总输出(ωs)一样大,则σ=1,并且总输入s不需要被缩放。这样,即使在最坏情况下,缩放也确保了永远不会达到输出界限b。
然而,由于最坏情况的发生是非常不可能的(即,来自RPU器件110的模拟交叉开关阵列104的实际总输出将不太可能与预期的最坏情况总输出一样大),因此可能期望通过将假定最大权重ω减少到假定最大权重的例如50%、然后在步骤218中重新计算建议缩放因子,来调整建议缩放因子σ。参见图2(即调整ω)。在这种情况下,虽然实际上达到预期的最坏情况总输出界限,但是大多数情况下的输出都低于输出界限b。以这种方式调整σ通常会产生期望的较大信噪比(signal-to-noise ratio,SNR)。
如上所述,数模转换器(DAC)将用于将经缩放的数字输入向量值(按照方法200)转换成模拟信号,以用于在RPU器件110的模拟交叉开关阵列104上执行向量矩阵乘法运算。具体地,DAC会将经缩放的数字输入向量值转换成模拟脉冲宽度。然而,DAC分辨率可能受限。即,值得注意的是,按照上面的等式7计算的建议缩放因子σ实际上可能很大,以至于输入向量值中的任何值除以建议缩放因子σ的结果将会小于数模转换的最小区间(bin)。在这种情况下,RPU器件110的模拟交叉开关阵列104的输入将在DAC转换之后全部为零。
为了避免这种情况的发生,可能期望在步骤220中,通过采用从上面的等式7计算的值,或者采用被计算为绝对最大输入值xmx乘以变量(ρ)除以DAC的量化区间宽度(rDAC)的建议缩放因子σ的替代值(即以较小者为准),来对建议缩放因子σ设上限(cap):
在输入范围(-1,...,1)的情况下,总范围为2。DAC将总范围划分为n个步长(其中,n为量化步长的数量(例如,在8位DAC情况下,n=256)),以达到量化区间宽度(或简称为“区间宽度”)。因此,在本示例中,量化区间宽度为/>根据示例性实施例,变量ρ=0.25。变量ρ在最小有效位分辨率上基本上为1。因此,对于ρ=0.25的值,由于σ倍缩放,在输入范围内只允许4个不同的值(而不是256个)。
在步骤222中,噪声和界限管理缩放因子(α)被设置为xmx(根据上面的等式3)或建议缩放因子σ的值(根据上面的等式8),以较大者为准,即
α=max(xmx,σ) (9)
这样做避免了使经缩放的输入向量值的最大值(参见下面描述的步骤224)大于1(其被假定为被任意设置为(-1,...,1)的DAC的最大输入向量值范围),因为不想要输入值被限幅。
如上所述,采用上述过程来预先计算用于RPU器件110的模拟交叉开关阵列104上执行的每个乘法累加循环的噪声和界限管理缩放因子α。因此,在步骤224中,每个数字输入向量值x按噪声和界限管理缩放因子(α)(在步骤222中计算)进行缩放,即
x←x/α (10)
以提供经缩放的数字输入向量值x',x'经由数模转换器(DAC)而被转换成模拟信号。在步骤226中,然后在RPU器件110的模拟交叉开关阵列104上执行模拟计算。如上所述,模拟计算涉及通过将每个经缩放的输入向量值x'与权重矩阵102中相对应的权重值相乘而在RPU器件110的模拟交叉开关阵列104上执行向量矩阵乘法运算。
同样,在步骤228中,从RPU器件110的模拟交叉开关阵列104获得的每个模拟输出向量值经由模数转换器(ADC)而被转换成数字信号,以提供数字输出向量值y'。在步骤230中,每个数字输出向量值y'通过噪声和界限管理缩放因子(α)(在步骤222中计算)进行重新缩放,即
y←y′α (11)
以提供经重新缩放的数字输出向量值y。
现在通过参考图3和图4来描述本技术的示例性实施方式。即,图3是示出正在RPU器件310的模拟交叉开关阵列304上执行的前向循环操作的示意图。如图3所示,数字输入向量值x(参见“数字输入x”)作为输入被提供给RPU器件310的模拟交叉开关阵列304。然而,首先,如结合上面图2的方法200的描述所描述的,计算噪声和界限管理缩放因子(参见“噪声/界限管理计算α”)。然后,每个数字输入向量值x按噪声和界限管理缩放因子(α)进行缩放,即x←x/α,以提供经缩放的数字输入向量值x'(参见“经缩放的数字RPU输入x'”)。
经缩放的数字输入向量值x'经由数模转换器(参见“DA转换器”)被转换成模拟信号。模拟信号作为模拟脉冲宽度320被提供给RPU器件310的模拟交叉开关阵列304,其中在RPU器件310的模拟交叉开关阵列304上执行模拟计算。如上所述,这种模拟计算涉及通过将每个经缩放的输入向量值x'与相对应的权重矩阵(未示出)中的相对应的权重值相乘而在RPU器件310的模拟交叉开关阵列304上执行向量矩阵乘法运算。结合上面图1的描述来描述权重矩阵到RPU器件的模拟交叉开关阵列的映射。
如图3所示,从在RPU器件310的模拟交叉开关阵列304上执行的操作获得的模拟输出向量值被提供给包括运算放大器324的集成电路322,运算放大器324具有连接(跨接)到运算放大器324的反相输入端和运算放大器324的输出端(Vout)的电容器(Cint)。运算放大器324的非反相输入端接地。运算放大器324的输出端(Vout)也连接到模数转换器(参见“AD转换器”)的输入端。
模数转换器(AD转换器)将从RPU器件310的模拟交叉开关阵列304获得的每个模拟输出向量值转换成数字信号,以提供数字输出向量值y'(参见“数字RPU输出y'”)。然后,每个数字输出向量值y'按噪声和界限管理缩放因子(α)重新缩放(参见“使用α的噪声/界限管理”),即y←yα,以提供经重新缩放的数字输出向量值y(参见“经重新缩放的数字输出y”)。如上所述,诸如噪声和界限管理缩放因子α的计算、将来自RPU器件的交叉开关阵列的输入/输出值缩放/重新缩放α倍等过程可以在RPU阵列硬件的外部执行,例如,由诸如下面结合图6的描述所描述的装置600之类的装置来执行。
图4是示出在RPU器件410的模拟交叉开关阵列404上执行的后向循环操作的示意图。该过程总体上与上面结合图3的描述所描述的前向循环操作相同,除了经转置的模拟RPU阵列404被用于后向循环遍次之外。“转置”是指将输入和输出进行交换,即以前的输出现在变成输入,而以前的输入变成输出。这是为了(本质上)计算x=W′y,其中W′是矩阵W的转置。如图4所示,数字输入向量值x(参见“数字输入x”)作为输入被提供给RPU器件410的模拟交叉开关阵列404。然而,首先,如结合上面图2的方法200的描述所描述的,计算噪声和界限管理缩放因子(参见“噪声/界限管理计算α”)。即,如上所述,对于每个前向循环和后向循环,方法200的步骤被执行为在数字方面的预先计算,以确定用于RPU器件的模拟交叉开关阵列上的操作的缩放因子α。然后,每个数字输入向量值x通过噪声和界限管理缩放因子(α)进行缩放,即x←x/α,以提供经缩放的数字输入向量值x'(参见“经缩放的数字RPU输入x'”)。
然后,经缩放的数字输入向量值x'经由数模转换器(参见“DA转换器”)而被转换成模拟信号。模拟信号作为模拟脉冲宽度420被提供给RPU器件410的模拟交叉开关阵列404,其中,在RPU器件410的模拟交叉开关阵列404上执行模拟计算。如上所述,这种模拟计算涉及通过将每个经缩放的输入向量值x'与相对应的权重矩阵(未示出)中的相对应的权重值相乘而在RPU器件410的模拟交叉开关阵列404上执行向量矩阵乘法运算。结合上面图1的描述来描述权重矩阵到RPU器件的模拟交叉开关阵列的映射。
如图4所示,从在RPU器件410的模拟交叉开关阵列404上执行的操作获得的模拟输出向量值被提供给包括运算放大器424的集成电路422,运算放大器424具有连接(跨接)到运算放大器424的反相输入端和运算放大器424的输出端(Vout)的电容器(CintBACKWARD)。运算放大器424的非反相输入端接地。运算放大器424的输出端(Vout)也连接到模数转换器(参见“AD转换器”)的输入端。
模数转换器(AD转换器)将从RPU器件410的模拟交叉开关阵列404获得的每个模拟输出向量值转换成数字信号,以提供数字输出向量值y'(参见“数字RPU输出y'”)。然后,每个数字输出向量值y'按噪声和界限管理缩放因子(α)重新缩放(参见“使用α的噪声/界限管理”),即y←yα,以提供经重新缩放的数字输出向量值y(参见“经重新缩放的数字输出y”)。如上所述,诸如噪声和界限管理缩放因子α的计算、将来自RPU器件的交叉开关阵列的输入/输出值缩放/重新缩放α倍等过程可以在RPU阵列硬件的外部执行,例如,由诸如下面结合图6的描述所描述的装置600之类的装置来执行。
如上所述,本技术通过基于最坏情况缩放RPU器件的模拟交叉开关阵列的输入向量值x来最小化运行时间。在上述实施例的情况下,将最坏情况作为确定缩放因子的参考确保了输出界限永远不会被限幅。
根据替代实施例,仅当超过界限时,才执行上述方法200(即,计算最坏情况的噪声和界限管理缩放因子α,将来自RPU器件的交叉开关阵列的输入/输出值缩放/重新缩放倍α等)。例如,参见图5的示例性方法500。
在步骤502中,获得数字值x的输入向量,即“输入向量值x”。根据示例性实施例,输入向量值x包括来自训练数据集的数据。仅作为示例,训练数据集可以从DNN训练数据的数据库或其他储存库获得。
在步骤504中,根据上面的等式3来计算输入向量值的绝对最大值xmx(本文也称为绝对最大输入值)。在步骤506中,将绝对最大输入值xmx分配给噪声和界限管理缩放因子α,即α=xmx。
在步骤508中,每个数字输入向量值x通过噪声和界限管理缩放因子α=xmx进行缩放,即
x′initial←x/α (12)
以提供经由数模转换器(DAC)而被转换成模拟信号的经缩放的数字输入向量值x′initial。在步骤510中,然后在RPU器件110的模拟交叉开关阵列104上执行模拟计算。如上所述,模拟计算涉及通过将每个经缩放的输入向量值x′initial与权重矩阵102中的相对应的权重值相乘而在RPU器件110的模拟交叉开关阵列104上执行向量矩阵乘法运算。同样,在步骤512中,从RPU器件110的模拟交叉开关阵列104获得的每个模拟输出向量值经由模数转换器(ADC)被转换成数字信号,以提供数字输出向量值y′initial。
在步骤514中,确定数字输出向量值y′initial中的任何一个是否已经被限幅(界限管理)。例如,可以通过感测运算放大器的输出端处的饱和来确定数字输出向量值y′initial中的任何一个是否已经被限幅。存在一些电路方法用于确定界限的限幅。然而,一种直截了当的方式是简单地使用ADC的最大和最小输出值,因为当ADC的输入超过ADC范围时,输出将会饱和到这些值。因此,例如,如果任何一个数字输出是255(其为8位DAC的最高输出值)或0(其为8位DAC的最低输出值),则确定界限被限幅并重复计算。
如果在步骤514中确定为“否”,即没有一个数字输出向量值y′initial已经被限幅,则在步骤516中,每个数字输出向量值y′initial按噪声和界限管理缩放因子α=xmx重新缩放,即
y←y′initialα (13)
以提供经重新缩放的数字输出向量值y,并且该过程结束。另一方面,如果在步骤514中确定为“是”,即数字输出向量值y′initial中的至少一个已经被限幅,则在步骤518中,最坏情况的噪声和界限管理缩放因子α被计算为α=max(xmx,σ)(参见上面的等式8),如结合上面图2的方法200的描述所描述的。
在步骤520中,每个数字输入向量值x然后通过最坏情况的噪声和界限管理缩放因子α=max(xmx,σ)进行缩放,即
x′←x/α (14)
以提供经由DAC被转换成模拟信号的经缩放的数字输入向量值x′。在步骤522中,然后在RPU器件110的模拟交叉开关阵列104上执行模拟计算。如上所述,模拟计算涉及通过将每个经缩放的输入向量值x′与权重矩阵102中的相对应的权重值相乘而在RPU器件110的模拟交叉开关阵列104上执行向量矩阵乘法运算。
同样,在步骤524中,从RPU器件110的模拟交叉开关阵列104获得的每个模拟输出向量值经由ADC被转换成数字信号,以提供数字输出向量值y′。在步骤526中,每个数字输出向量值y′按最坏情况的噪声和界限管理缩放因子α=max(xmx,σ)重新缩放,即,
y←y′α (15)
以提供经重新缩放的数字输出向量值y。在该第二次迭代中,不测试输出界限限幅,因为在通常的最坏情况下,界限通常不被限幅。然而,即使假定最大权重ω被改变(参见上文),并且发生了一些限幅,则应该忽略该限幅,并且在第二次迭代中不测试界限。因此,在最坏情况下,方法500仅需要两次迭代,即,一次初始确定输出界限已经被限幅,然后再次用最坏情况的噪声和界限管理缩放因子α。这样,对运行时间的影响是最小的,即,运行时间最多增加两倍。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),计算机可读程序指令用于使得处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机磁盘、硬盘、随机存取存储器(randomaccess memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(EPROM(erasable programmable read-only memory)或闪存)、静态随机存取存储器(static random access memory,SRAM)、便携式紧凑盘只读存储器(compact disc read-only memory,CD-ROM)、数字多功能盘(digital versatile disk,DVD)、记忆棒、软盘、机械编码设备(诸如其上记录有指令的打孔卡或凹槽中的凸起结构),以及前述各项的任何合适组合。如本文所使用的,计算机可读存储介质不应被解释为本身是瞬时信号,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(instruction-set-architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者是以一种或多种编程语言(包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的传统过程编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户计算机上执行,作为独立软件包而部分在用户计算机上执行,部分在用户计算机上执行并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一场景中,远程计算机可以通过任何类型的网络(包括局域网(local area network,LAN)或广域网(wide area network,WAN))连接到用户计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(field-programmablegate array,FPGA)或可编程逻辑阵列(programmable logic array,PLA))可以通过利用计算机可读程序指令的状态信息对电子电路进行个性化来执行计算机可读程序指令,以便执行本发明的各方面。
本文参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将会理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令来实施。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实施流程图和/或框图的一个或多个框中指定的功能/动作的部件。这些计算机可读程序指令也可以被存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括一种包含实施流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令的制造品。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得一系列操作步骤在计算机、其他可编程装置或其他设备上执行,从而产生计算机实施的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实施流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这点上,流程图或框图的每个框可以表示指令的模块、片段或部分,其包括用于实施(多个)指定逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中标注的功能可以不按照图中标注的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的次序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由基于专用硬件的系统来实施,该基于专用硬件的系统执行指定的功能或动作或者执行专用硬件和计算机指令的组合。
如上所述,根据示例性实施例,方法200的一个或多个步骤,包括噪声和界限管理缩放因子α的计算、缩放/重新缩放来自RPU器件的交叉开关阵列的输入/输出值等,可以在RPU阵列硬件的外部执行,例如,由诸如图6所示的装置600之类的装置来执行。图6是用于实施本文给出的一种或多种方法的装置600的框图。仅作为示例,装置600可以被配置为实施图2的方法200的一个或多个步骤。
装置600包括计算机系统610和可移动介质650。计算机系统610包括处理器设备620、网络接口625、存储器630、介质接口635和可选的显示器640。网络接口625允许计算机系统610连接到网络,而介质接口635允许计算机系统610与介质(诸如硬盘驱动器或可移动介质650)交互。
处理器设备620可以被配置为实施本文公开的方法、步骤和功能。存储器630可以是分布式的或本地的,并且处理器设备620可以是分布式的或单一的。存储器630可以被实施为电、磁或光存储器,或者这些或其他类型的存储设备的任何组合。此外,术语“存储器”应该被足够宽泛地解释为包含能够从处理器设备620所访问的可寻址空间中的地址读取或向其写入的任何信息。在这种定义的情况下,可通过网络接口625访问的网络上的信息仍在存储器630内,因为处理器设备620可以从网络检索信息。应该注意,组成处理器设备620的每个分布式处理器通常包含其自己的可寻址存储器空间。还应注意,计算机系统610的一些或全部可以被并入专用或通用集成电路。
可选的显示器640是适于与装置600的人类用户交互的任何类型的显示器。通常,显示器640是计算机监视器或其他类似的显示器。
参考图7和图8,应该理解,尽管本公开包括关于云计算的详细描述,但是本文记载的教导的实施方式不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实施。
云计算是一种用于支持对可配置计算资源(例如,网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务)的共享池进行便捷的按需网络访问的服务交付模型,其可以用最少的管理工作或与服务提供商的互动来快速地调配和释放这些可配置计算资源。这一云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助服务:云消费者可以根据需要自动地单方面调配计算能力(诸如服务器时间和网络存储),而无需与服务提供商进行人工交互。
广泛的网络接入:能力可通过网络获得并通过标准机制介入,该标准机制促进了异构的瘦或胖客户端平台(例如,移动电话、膝上型电脑和PDA)的使用。
资源池化:使用多租户模型将提供商的计算资源池化以服务多个消费者,其中根据需求动态地分配和重新分配不同的物理资源和虚拟资源。有一种位置独立性的感觉,因为消费者通常无法控制或知道所提供资源的确切位置,但是能够在更高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:可以快速且灵活地调配功能,在某些情况下自动地调配功能,以迅速地放大并快速地释放以迅速缩小。对于消费者来说,可用于调配的功能通常似乎是不受限的,并且可以在任何时间购买任何数量。
测量服务:云系统通过以适合于服务类型(例如,存储、处理、带宽和活动用户帐户)的某种抽象级别利用计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用情况,从而为所利用服务的提供者和消费者都提供透明度。
服务模型如下:
软件即服务(Software as a Service,SaaS):向消费者提供的能力是使用运行在云基础设施上的提供商的应用。应用可从各种客户端设备通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端界面进行访问。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统、存储、乃至各个应用能力,其中受限的用户特定应用配置设置可能除外。
平台即服务(Platform as a Service,PaaS):向消费者提供的能力是将使用提供商支持的编程语言和工具创建的、消费者创建或获取的应用部署到云基础设施上。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统或存储,但是可以控制所部署的应用以及可能的应用托管环境配置。
基础设施即服务(Infrastructure as a Service,IaaS):向消费者提供的能力是调配处理、存储、网络和其他基本计算资源,消费者可以在这样的资源中部署和运行任意软件,任意软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但是可以控制操作系统、存储、所部署的应用,并且可能受限地控制选定的联网组件(例如,主机防火墙)。
部署模型如下:
私有云:该云基础设施仅为组织运营。它可以由组织或第三方管理,并且可以存在于内部或外部。
社区云:该云基础设施被若干组织共享,并且支持具有共同关注点的特定社区(例如,任务、安全需求、策略和遵从性考虑)。它可以由组织或第三方管理,并且可以存在于内部或外部。
公共云:该云基础设施可用于普通大众或大型行业团体,并且由销售云服务的组织拥有。
混合云:该云基础设施由两个或更多个云(私有云、社区云或公共云)组成,这些云保持唯一的实体,但是通过标准化或专有技术而绑定在一起,从而实现数据和应用的可移植性(例如,用于云之间的负载平衡的云爆发)。
云计算环境是面向服务的,其关注无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
现在参考图7,描绘了说明性的云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点10,云消费者所使用的本地计算设备(诸如个人数字助理(personaldigital assistant,PDA)或蜂窝电话54A、桌上型计算机54B、膝上型计算机54C和/或汽车计算机系统54N)可以与云计算节点10进行通信。节点10可以彼此通信。它们可以在一个或多个网络(诸如如上所述的私有云、社区云、公共云或混合云,或者它们的组合)中被物理地或虚拟地分组(未示出)。这允许云计算环境50提供基础设施即服务、平台即服务和/或软件即服务,为此云消费者不需要在本地计算设备上维护资源。应该理解,图7所示的计算设备54A-54N的类型仅仅是说明性的,并且计算节点10和云计算环境50可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备进行通信。
现在参考图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应该预先理解,图8所示的组件、层和功能仅仅是说明性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相对应的功能:
硬件和软件层60包括硬件组件和软件组件。硬件组件的示例包括:大型机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,可以从抽象层提供虚拟实体的以下示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能。资源调配81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并且为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(Service Level Agreement,SLA)规划和履行85为云计算资源提供预先布置和采购,根据SLA来预期对云计算资源的未来需求。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该工作负载层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;交易处理95;以及缩放因子计算和输入/输出缩放/重新缩放96。
尽管本文已经描述了本发明的说明性实施例,但是应该理解,本发明不限于那些精确的实施例,并且本领域技术人员可以在不脱离本发明的范围的情况下进行各种其他改变和修改。
Claims (20)
1.一种用于噪声和界限管理的方法,所述方法包括:
获得电阻处理单元RPU器件的模拟交叉开关阵列的输入向量值x,其中,权重矩阵被映射到RPU器件的模拟交叉开关阵列;以及
基于最坏情况来缩放所述输入向量值x,以提供经缩放的输入向量值x'来用作RPU器件的模拟交叉开关阵列的输入,其中,所述最坏情况包括所述权重矩阵的假定最大权重乘以来自所述输入向量值x的绝对值的总和。
2.根据权利要求1所述的方法,还包括:
根据所述输入向量值x计算绝对最大输入值xmx;
将建议缩放因子σ计算为其中,ω是所述权重矩阵的假定最大权重,s是总输入变量,并且b是RPU器件的模拟交叉开关阵列的输出界限;
将噪声和界限管理缩放因子α设置为所述绝对最大输入值xmx或所述建议缩放因子σ,以较大者为准;以及
使用所述噪声和界限管理缩放因子α来缩放所述输入向量值x。
3.根据权利要求2所述的方法,其中,所述绝对最大输入值xmx被计算如下:xmx=maxi|xi|。
4.根据权利要求2所述的方法,还包括:
计算所述输入向量值x的所有绝对值的总和;以及
将所述输入向量值x的所有绝对值的总和分配给所述总输入变量s。
5.根据权利要求2所述的方法,还包括:
计算仅正输入向量值的所有绝对值的总和sp;
计算仅负输入向量值的所有绝对值的总和sn;以及
将sp和sn中较大的一个分配给所述总输入变量s。
6.根据权利要求2所述的方法,还包括:
将所述建议缩放因子σ的上限设为被计算为的值或被计算为/>的替代值,以较小者为准,其中,ρ是变量,并且rDAC是数模量化的区间宽度。
7.根据权利要求2所述的方法,还包括:
减少所述权重矩阵的假定最大权重ω;以及
重新计算所述建议缩放因子σ。
8.根据权利要求2所述的方法,还包括:
将所述经缩放的输入向量值x'转换成模拟信号;以及
在RPU器件的模拟交叉开关阵列上执行向量矩阵乘法运算。
9.根据权利要求8所述的方法,其中,执行所述向量矩阵乘法运算包括:
将每个经缩放的输入向量值x'与所述权重矩阵中的相对应的权重值相乘。
10.根据权利要求8所述的方法,还包括:
将从RPU器件的模拟交叉开关阵列获得的模拟输出向量值转换成数字信号,以提供数字输出向量值y';以及
使用所述噪声和界限管理缩放因子α来重新缩放所述数字输出向量值y',以提供经重新缩放的数字输出向量值y。
11.根据权利要求1所述的方法,还包括:
根据所述输入向量值x来计算绝对最大输入值xmx;
将所述绝对最大输入值xmx分配给缩放因子α;
使用所述缩放因子α来缩放所述输入向量值x,以提供经缩放的输入向量值x′initial来用作RPU器件的模拟交叉开关阵列的输入;
将所述经缩放的输入向量值x′initial转换成模拟信号;
在RPU器件的模拟交叉开关阵列上执行向量矩阵乘法运算;
将从RPU器件的模拟交叉开关阵列获得的模拟输出向量值转换成数字信号,以提供数字输出向量值y′initial;
确定是否所述数字输出向量值y′initial中的任何一个已经被限幅;以及
当所述数字输出向量值y′initial中的至少一个已经被限幅时,基于所述最坏情况来缩放所述输入向量值x。
12.一种用于噪声和界限管理的装置,包括连接到存储器的处理器,所述处理器用于:
获得RPU器件的模拟交叉开关阵列的输入向量值x,其中,权重矩阵被映射到RPU器件的模拟交叉开关阵列;以及
基于最坏情况来缩放所述输入向量值x,以提供经缩放的输入向量值x'来用作RPU器件的模拟交叉开关阵列的输入,其中,所述最坏情况包括所述权重矩阵的假定最大权重乘以来自所述输入向量值x的绝对值的总和。
13.根据权利要求12所述的装置,其中,所述处理器还用于:
根据所述输入向量值x来计算绝对最大输入值xmx;
将建议缩放因子σ计算为其中,ω是所述权重矩阵的假定最大权重,s是总输入变量,并且b是RPU器件的模拟交叉开关阵列的输出界限;
将噪声和界限管理缩放因子α设置为所述绝对最大输入值xmx或所述建议缩放因子σ,以较大者为准;以及
使用所述噪声和界限管理缩放因子α来缩放所述输入向量值x。
14.根据权利要求13所述的装置,其中,所述处理器还用于:
计算所述输入向量值x的所有绝对值的总和;以及
将所述输入向量值x的所有绝对值的总和分配给总输入变量s。
15.根据权利要求13所述的装置,其中,所述处理器还用于:
计算仅正输入向量值的所有绝对值的总和sp;
计算仅负输入向量值的所有绝对值的总和sn;以及
将sp和sn中较大的一个分配给总输入变量s。
16.根据权利要求13所述的装置,其中,所述处理器还用于:
将所述建议缩放因子σ的上限设为被计算为的值或被计算为/>的替代值,以较小者为准,其中,ρ是变量,并且rDAC是数模量化的区间宽度。
17.一种用于噪声和界限管理的非暂时性计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质中含有程序指令,所述程序指令可由计算机执行以使得所述计算机:
获得RPU器件的模拟交叉开关阵列的输入向量值x,其中,权重矩阵被映射到RPU器件的模拟交叉开关阵列;以及
基于最坏情况来缩放所述输入向量值x,以提供经缩放的输入向量值x'来用作RPU器件的模拟交叉开关阵列的输入,其中,所述最坏情况包括所述权重矩阵的假定最大权重乘以来自所述输入向量值x的绝对值的总和。
18.根据权利要求17所述的非暂时性计算机程序产品,其中,所述程序指令还使得所述计算机:
根据所述输入向量值x来计算绝对最大输入值xmx;
将建议缩放因子σ计算为其中,ω是所述权重矩阵的假定最大权重,s是总输入变量,并且b是RPU器件的模拟交叉开关阵列的输出界限;
将噪声和界限管理缩放因子α设置为所述绝对最大输入值xmx或所述建议缩放因子σ,以较大者为准;以及
使用所述噪声和界限管理缩放因子α来缩放所述输入向量值x。
19.根据权利要求18所述的非暂时性计算机程序产品,其中,所述程序指令还使得所述计算机:
计算所述输入向量值x的所有绝对值的总和;以及
将所述输入向量值x的所有绝对值的总和分配给总输入变量s。
20.根据权利要求18所述的非暂时性计算机程序产品,其中,所述程序指令还使得所述计算机:
计算仅正输入向量值的所有绝对值的总和sp;
计算仅负输入向量值的所有绝对值的总和sn;以及
将sp和sn中较大的一个分配给总输入变量s。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/113,898 | 2020-12-07 | ||
US17/113,898 US20220180164A1 (en) | 2020-12-07 | 2020-12-07 | Worst Case Noise and Bound Management for RPU Crossbar Arrays |
PCT/CN2021/128643 WO2022121569A1 (en) | 2020-12-07 | 2021-11-04 | Worst case noise and bound management for rpu crossbar arrays |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116583854A true CN116583854A (zh) | 2023-08-11 |
Family
ID=81849287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180080347.XA Pending CN116583854A (zh) | 2020-12-07 | 2021-11-04 | Rpu交叉开关阵列的最坏情况噪声和界限管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220180164A1 (zh) |
JP (1) | JP2023552459A (zh) |
CN (1) | CN116583854A (zh) |
DE (1) | DE112021005637T5 (zh) |
GB (1) | GB2616371B (zh) |
WO (1) | WO2022121569A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020160887A (ja) * | 2019-03-27 | 2020-10-01 | ソニー株式会社 | 演算装置及び積和演算システム |
US20220284956A1 (en) * | 2020-07-06 | 2022-09-08 | Tetramem, Inc. | Reducing current in crossbar array circuits utilizing large input resistance |
US12032690B2 (en) * | 2022-07-01 | 2024-07-09 | Nxp B.V. | Method for protecting a machine learning model from a side channel attack |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385079B1 (en) * | 2001-08-31 | 2002-05-07 | Hewlett-Packard Company | Methods and structure for maximizing signal to noise ratio in resistive array |
US10755170B2 (en) * | 2017-03-01 | 2020-08-25 | International Business Machines Corporation | Resistive processing unit with hysteretic updates for neural network training |
US10325007B2 (en) * | 2017-04-05 | 2019-06-18 | International Business Machines Corporation | Noise and bound management for RPU array |
US11676004B2 (en) * | 2017-08-15 | 2023-06-13 | Xilinx, Inc. | Architecture optimized training of neural networks |
US10496374B2 (en) * | 2018-03-22 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Crossbar array operations using ALU modified signals |
US10984860B2 (en) * | 2019-03-26 | 2021-04-20 | Hewlett Packard Enterprise Development Lp | Self-healing dot-product engine |
US11361218B2 (en) * | 2019-05-31 | 2022-06-14 | International Business Machines Corporation | Noise and signal management for RPU array |
US11556770B2 (en) * | 2019-05-31 | 2023-01-17 | International Business Machines Corporation | Auto weight scaling for RPUs |
-
2020
- 2020-12-07 US US17/113,898 patent/US20220180164A1/en active Pending
-
2021
- 2021-11-04 WO PCT/CN2021/128643 patent/WO2022121569A1/en active Application Filing
- 2021-11-04 CN CN202180080347.XA patent/CN116583854A/zh active Pending
- 2021-11-04 GB GB2308548.3A patent/GB2616371B/en active Active
- 2021-11-04 JP JP2023534345A patent/JP2023552459A/ja active Pending
- 2021-11-04 DE DE112021005637.9T patent/DE112021005637T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022121569A1 (en) | 2022-06-16 |
GB202308548D0 (en) | 2023-07-26 |
US20220180164A1 (en) | 2022-06-09 |
JP2023552459A (ja) | 2023-12-15 |
DE112021005637T5 (de) | 2023-08-17 |
GB2616371A (en) | 2023-09-06 |
GB2616371B (en) | 2024-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7087079B2 (ja) | 深層学習アプリケーションのための堅牢な勾配重み圧縮方式 | |
CN116583854A (zh) | Rpu交叉开关阵列的最坏情况噪声和界限管理 | |
US20200125926A1 (en) | Dynamic Batch Sizing for Inferencing of Deep Neural Networks in Resource-Constrained Environments | |
US20200257939A1 (en) | Data augmentation for image classification tasks | |
US20220366005A1 (en) | Hardware acceleration for computing eigenpairs of a matrix | |
US20220391681A1 (en) | Extraction of weight values in resistive processing unit array | |
US20230177337A1 (en) | Multi-objective driven refactoring of a monolith application using reinforcement learning | |
US20230097217A1 (en) | Learning static bound management parameters for analog resistive processing unit system | |
US20220366230A1 (en) | Markov processes using analog crossbar arrays | |
US10893117B2 (en) | Enabling high speed and low power operation of a sensor network | |
US20220292390A1 (en) | Uniform artificial intelligence model conversion | |
US11023530B2 (en) | Predicting user preferences and requirements for cloud migration | |
US20210089932A1 (en) | Forecasting values utilizing time series models | |
US20220121901A1 (en) | Gated unit for a gated recurrent neural network | |
US11574196B2 (en) | Dynamic management of weight update bit length | |
JP2024515023A (ja) | ニューラル・ネットワークのパフォーマンス・ホット・スポットの特定 | |
US11461645B2 (en) | Initialization of memory networks | |
US20220059082A1 (en) | Multiplicative integration in neural network transducer models for end-to-end speech recognition | |
WO2022063614A1 (en) | Accuracy of streaming rnn transducer | |
KR20230019819A (ko) | 아날로그 크로스바 아키텍처를 이용한 매트릭스 스케치 | |
US20230419093A1 (en) | Stochastic Bitstream Generation with In-Situ Function Mapping | |
US20220207376A1 (en) | Matrix inversion using analog resistive crossbar array hardware | |
US11966708B2 (en) | Dynamic contraction and expansion of heuristic beam width based on predicted probabilities | |
US11811416B2 (en) | Energy-efficient analog-to-digital conversion in mixed signal circuitry | |
CN109670577B (zh) | 模型生成方法和装置 |
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 |