CN110990771A - 用于机器学习过程的高效模拟矩阵乘法的系统和方法 - Google Patents
用于机器学习过程的高效模拟矩阵乘法的系统和方法 Download PDFInfo
- Publication number
- CN110990771A CN110990771A CN201910949449.5A CN201910949449A CN110990771A CN 110990771 A CN110990771 A CN 110990771A CN 201910949449 A CN201910949449 A CN 201910949449A CN 110990771 A CN110990771 A CN 110990771A
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- switches
- analog
- currents
- 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
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 57
- 238000000034 method Methods 0.000 title claims description 31
- 238000010801 machine learning Methods 0.000 title description 14
- 230000008569 process Effects 0.000 title description 11
- 230000006870 function Effects 0.000 claims description 24
- 230000004913 activation Effects 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims 2
- 238000012545 processing Methods 0.000 abstract description 10
- 210000002569 neuron Anatomy 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012805 post-processing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
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/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/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
-
- 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/492—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
- G06F7/493—Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination the representation being the natural binary coded representation, i.e. 8421-code
- G06F7/496—Multiplying; Dividing
-
- 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/16—Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/048—Activation functions
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
使用模拟乘法器和加法器的新型能量高效的乘法电路可减少在模拟域中执行矩阵乘法时数据必须移动的距离和数据必须移动的次数。定制乘法电路以对重新排列的矩阵公式的最内层乘积进行按位乘法,从而以电流的形式输出生成的矩阵乘法结果,然后将其数字化以进行进一步处理。
Description
相关申请的交叉引用
根据35U.S.C.§119(e),本申请要求如下优先权权益:属于共同待决和共同转让的于2018年10月3日提交的、名称为“Systems and Methods for Energy-Efficient AnalogMatrix Multiplication for Machine Learning Processes”美国临时专利申请,申请号为62/740,691,发明人为Sung Ung Kwak和Robert Michael Muchsel,该申请的全部内容通过引用合并于此。该专利文件中提及的每个参考文献均通过引用整体并入本文。
技术领域
本公开总体上涉及数据处理。更具体地,本公开涉及用于在执行诸如矩阵乘法的算术运算时提高计算和存储器资源的利用的系统和方法。
背景技术
机器学习是使得能够进行在“经典”计算中不可行的算法的计算的研究和开发的令人兴奋的领域。常见的机器学习实现利用传统的CPU或图形处理单元(GPU),它们使用寄存器和高速缓存来处理存储在存储器中的数据,并依赖于许多顺序的软件和硬件矩阵操作步骤,例如地址生成、移位、逐位处理位加法和移位,例如,在将乘法转换为加法并将结果输出到某个内部寄存器时。在生成正确结果的同时,此方法在功耗和时间上都非常昂贵,并且通常会排除使用计算密集型机器学习算法,尤其是低功耗应用程序的实时应用,例如,与耗电处理器不兼容的电池供电的便携式设备的应用。
例如,诸如用于完全连接的网络的矩阵乘法之类的对计算有要求的应用经常需要将软件功能嵌入到微处理器中。在执行矩阵乘法和相关操作时,软件必须访问标准存储器的相同位置,并一次又一次地读取、重新获取和写入相同的数据。这在计算上非常繁重,并产生了严重影响机器学习应用程序可用性的瓶颈。当前,没有能够有效选择、使用和重用数据,同时又避免了冗余数据生成的机制。简而言之,常规的硬件和方法不适用于当实时地执行涉及大量数据的无数复杂处理步骤时,对速度和性能的不断增长的需求。
因此,需要矩阵乘法系统和方法,例如,对于可以利用并集成机器学习过程的相对较小的计算设备,其在能量、算术运算的数目以及时间方面均能有效地处理数据,而没有过多的能源负担或过多的硬件成本。
附图说明
将参考本发明的实施例,其示例可以在附图中示出。这些图仅是说明性的,而非限制性的。尽管一般在这些实施例的上下文中描述了本发明,但是应当理解,其并不旨在将本发明的范围限制为这些特定实施例。
(“图”)图1是使用矩阵乘法的共同的全连接网络的简化图示。
图2示出了根据本公开的各种实施例的示例性矩阵乘法系统。
图3示出了根据本公开的各种实施例的示例性模拟乘法电路。
图4示出了根据本公开的各种实施例的简化的模拟乘法电路。
图5是根据本公开的各种实施例的通过利用如图2所示的矩阵乘法系统来执行矩阵乘法运算的说明性过程的流程图。
图6示出了根据本公开的各种实施例的使用列权重的示例性矩阵乘法系统。
图7示出了根据本公开的各种实施例的利用矩阵乘法的简化系统。
图8示出了根据本公开的各种实施例的利用列权重的简化矩阵乘法系统。
具体实施方式
在下面的描述中,出于解释的目的,阐述了具体细节以便提供对本发明的理解。然而,对于本领域的技术人员显而易见的是,可以在没有这些细节的情况下实践本发明。此外,本领域的技术人员将认识到,下面描述的本发明的实施例可以以多种方式来实现,所述方式例如过程、装置、系统、设备或有形计算机可读介质上的方法。
注意,图中所示的组件或模块是本发明的示例性实施例的说明,并且意在避免使本发明难以理解。还应理解,在整个文档中,组件可以被描述为单独的功能单元,其可以包括子单元,但是本领域技术人员将认识到,各种组件或其部分可以被划分为单独的组件或可以被集成在一起,包括集成在单个系统或组件中。还应注意,本文讨论的功能或操作可以被实现为组件。组件可以以软件、硬件或其组合来实现。
附图中的组件或系统之间的连接不旨在限于直接连接。而是,这些组件之间的数据可以通过中间组件修改、重新格式化或以其他方式更改。同样,可以使用更多或更少的连接。还应注意,术语“耦合”、“连接”或“通信地耦合”应理解为包括直接连接、通过一个或多个中间设备的间接连接以及无线连接。
在说明书中对“一个实施例”、“优选实施例”、“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构、特性或功能包括在本发明的至少一个实施例中,并且可以包括在一个以上的实施例中。同样,上述短语在说明书中各个地方的出现不一定都指的是同一实施例。
在说明书中的各个地方使用某些术语是为了说明,而不应被解释为限制性的。服务、功能或资源不限于单个服务、功能或资源;这些术语的使用可能是指可以是分布式的或聚合的相关服务、功能或资源的分组。
在本文中,术语“KT”是Kirchhoff Teiler的首字母缩写,该词是对Kirchhoff定律的引用与德语单词“Teiler”(意思是“因数”或“除法器”)的组合。术语“在线”、“就地”和“本地”可互换使用。此外,术语“包括”、“包括了”、“包含”和“包含了”应被理解为开放术语,并且以下的任何列表都是示例,并不意味着限于所列出的项目。本文使用的任何标题仅用于组织目的,并且不应用于限制说明书或权利要求书的范围。该专利文件中提及的每个参考文献均通过引用整体并入本文。
注意,本文描述的实施例是在机器学习的上下文中给出的,但是本领域的技术人员将认识到,本公开的教导不限于机器学习硬件,并且可以应用于各种其他网络和涉及算术运算的应用,例如可以在其他上下文中使用的加法和乘法。主要在完全连接的层的上下文中讨论本文的实施例。然而,本领域的技术人员将意识到,这并不将本公开限制于这种特定类型的神经网络;相反,本发明的教导可以等同地应用于各种其他类型的网络。
流行的机器学习算法涉及大量的矩阵乘法步骤,实际上,它们是执行计算(例如推理操作所需的那些)时的大部分功耗(和时间)的原因。如本领域技术人员将理解的,矩阵乘法可以表示为乘积之和。例如,向量和的点积定义为无论向量被写为行还是列。假设矩阵A=[aij]是m×n矩阵,并且矩阵B=[bij]是n×p矩阵,则两个矩阵A和B的乘积得出第三个m×p矩阵C=[cij],使得
cij=rowi(A)·colj(B)=ai1 b1j+…+ain bnj.
图1是使用矩阵乘法的共同的全连接网络的简化图示。网络100具有四个输入102(分别表示为0.1、0.2、0.3和0.4),三个隐藏的网络层112-132(对于第1层表示为1.1、1.2、1.3;对于第2层表示为2.1和2.2;以及对于第3层为3.1、3.2以及3.3)和三个输出152(分别为4.1、4.2以及4.3)。要指出的是,网络100仅用于演示目的和便于说明;实用的机器学习模型涉及大量的神经元。对于单个神经元,
y=g(xW+b) or yj.k=g(∑ixi·wi+b) (Eq.1)
其中,g是遵循大量矩阵乘法步骤的激活函数(例如ReLU),xi表示数据元素,并且wi表示权重或内核。在图1的示例中,神经元1.1的输出y1.1计算为:
或者
y1.1=g(x0.1w0.1.1+x0.2w0.2.1+x0.3w0.3.1+x0.4w0.4.1+b1)
(Eq.2)
其中,b1是偏置值。
有时,针对网络层中所有神经元的输出显示了完整的加权矩阵。
对于层1中的所有神经元:
(Eq.3)
作为示例,如果
则
xW=[1·1+2·4+3·7+4·10 1·2+2·5+3·8+4·11 1·3+2·6+3·9+4=[7080 90]
y=g(xW+b)=ReLU([70-75 80-75 90-75])=ReLU([-5 5 15])并且,最终,y=[05 15]。
然后,网络层1的输出(即y1=0、y2=5和y3=15)用作下一个网络层(层2)的输入。在图1的示例中,来自最后一层(层3)的数据值,可以例如通过软件来收集,并且可以将其直接使用或用作分类函数(例如softmax)的输入。注意,所有示例、值和结果均以说明的方式提供。因此,这些示例或它们的结果均不应用于限制本公开的范围。
如背景技术部分中所指示的,当以标准硬件实现时,矩阵乘法运算中的乘积和被顺序地计算,因此,运算的数量以及能量影响O(n2)随算法中使用的网络的大小而增加,其中n表示网络中神经元的数量。鉴于典型的机器学习算法需要数千到数百万个矩阵乘法的事实,因此在针对低功耗机器学习和类似的应用设计时,并行性和减少算术运算的能量影响至关重要。
因此,为了促进能量高效的实施,各种实施例将例如存储器或寄存器单元的存储元件与模拟电路和子电路集成在一起,以尤其促进就地计算以及其他。通过减少数据必须移动的距离并减少数据必须移动的次数,有利地,大大减少了执行计算任务的能量需求。
乘法器和加法器的模拟实现可以有益于系统和方法,例如在2018年10月3日提交的发明人为Mark Alan Lovell和Robert Michael Muchsel、标题为“ENERGY-EFFICIENTTORNADO MEMORY SYSTEMS AND METHODS”的美国临时专利申请第62/740,679号(案卷号:20057-2256P)以及2018年10月3日提交的发明人为Mark Alan Lovell、Robert MichaelMuchsel和Donald Wood Loomis III、标题为“SYSTEMS AND METHODS FOR ENERGY-EFFICIENT DATA PROCESSING”的美国临时专利申请第62/740,700(案号:20057-2257P)中公开的那些,其全部内容和所有目的通过引用合并于此。相反,这样的系统和方法可以与本文公开的能量高效的模拟矩阵乘法系统和方法自由组合。
图2示出了根据本公开的各种实施例的示例性矩阵乘法系统。为了便于描述和简化图示,选择图2中的组件。矩阵乘法系统200包括从x1到x256的256个8位数据项(图2仅示出了排列在8位宽阵列中的四个数据项202-208);256个3位权重,从w1到w256(图2仅显示了以3位宽阵列排列的四个权重212-218);2048个KT元素290;幅度调整电路260;ADC 270;以及激活函数单元280。应注意,例如,出于布局效率和容量的原因,本公开的实施例可以使用任何数量的结构。
在实施例中,矩阵乘法系统200提供权重数据对的模拟乘法和所得乘积的模拟加法。在操作中,数据项202中的数据点(例如220,标记为x1,0)可以与具有3个加权位230-234(标记为w1,2、w1,1、w1,0)的权重w1 212相乘。类似地,可以将数据项204中的数据点240(标记为x2,0)与具有3个加权位242-246(标记为w2,2、w2,1、w2,0)的权重w2 214相乘。在实施例中,然后可以例如通过在线路250上添加模拟电流而在模拟域中添加这两个乘法的乘积。应当理解,可以添加任何数量的乘积,这里为256。简而言之,可以将单个位乘以其权重,然后将其加到乘以其各自权重的其他单个位上。可以对所有数据位(此处为8位)重复该过程。
在实施例中,给定以上的Eq.1中的n位数据项xi(例如202)和相关联的权重wi(例如212),可以以如下的方式扩展和重新排列,使得xi,j表示数据字xi的位j的,并且每个数据位j分别乘以全权重wi。然后,可以在对所有j求和之前,所得的加权的单个位j对所有i求和,如下所示:
(Eq.4)
以这种方式,有利的是,可以将位线权重2j重新排列为更有效地进行计算的等效格式,同时仍然根据Eq.1来实现矩阵乘法的目标。
在实施例中,电路260可以用于例如通过将位220除以因子32、将位222除以因子16、将位224除以因子8、将位226除以因子4、将位228除以因子2、将位230乘以因子或除以因子1、将位232乘以因子2、并且将位232乘以因子4,来利用正数或负数对数据项(例如202)中的位进行加权。结果,由电路260生成的输出回答了问题Eq.1中的部分乘积之和是多少。换句话说,电路260的模拟输出表示是矩阵乘法的数学结果的部分点积的累积。
在实施例中,期望的是获得结果的数字表示。为此,如图2所示,可以将模拟结果传递到例如共享ADC 270,该共享ADC将模拟结果转换成可以随后进行数字处理的数字格式。注意,尽管图2描绘了差分ADC,出于精度原因,其可以用于将乘法结果数字化,例如,转换为8位,替代数字化技术同样可行。
在实施例中,数字化的结果然后可以被提交给激活函数单元280,其可以利用硬件加速器(未示出)来获得Eq.1的结果。在实施例中,激活函数单元280可以在模拟域中操作,并且可以使用相对简单的激活函数,例如ReLU。
类似地,可以将偏置b用作例如ADC 270输入的电流偏移、数字偏移、ADC 270输出的数字加法器、激活函数单元280内部的偏移或单独的权重项,例如,利用表示值1.0的相对应的固定数据项。
图2中所示的矩阵乘法系统200及其组件不限于在那里示出或在所附文本中描述的构造细节。例如,如本领域技术人员将意识到的,电路260可以以许多不同的方式实现,例如,无需明确地分离正数和负数,而是使用正电流和负电流。类似地,差分ADC 270可以由可以执行从模拟到数字的电流转换的任何其他合适的ADC替换。而且,激活函数单元280可以使用各种各样的激活函数电路,例如,Leaky ReLU和Sigmoid。此外,在实施例中,可以例如通过给电容器充电等将电流转换成电压。ReLU仅仅被限定为g(x)=max(0,x),可以相应地修改ADC 270以集成激活函数280。
图3示出了根据本公开的各种实施例的示例性模拟乘法电路。电路300包括KT元件320,其包括电流源302-305和开关310-317。图3中的电流340-346是分别标记为i1、i0、–i1以及–i0。开关wi,0 310和wi,1 311可以被视为表示针对它们各自的电流i0 342和i1 344的加权位;wi,2 312可被视为符号位,而开关xi,j 316、317可被视为表示数据位。在实施例中,对于负电流-i0和-i1,权重314、315被取反。在实施例中,电流,例如i0和i1,可以具有不同的值。例如,针对i0的电流可以为50nA,而针对i1的电流为100nA。
图3示出了3位权重,其包括符号位(例如312)和两个幅度位(例如310、311)。然而,应当理解,可以使用任意数量的加权位(具有或不具有符号位)来实现KT元素320。基于加权位wi,k的状态和数据位xi,j的状态,可以导通一个或多个参考电流。
在操作中,KT元素320根据Eq.2中的最内积将给定数据项xi的单个位j(在图3中表示为数据位xi,j 336)与权重wi(表示为加权位wi,k 330)相乘以产生xi,j·wi。在实施例中,KT乘法发生在模拟域中。在图3中描绘了两个输出,一个正电流输出zi,p 350和一个负电流输出zi,n 352。在实施例中,每个输出350、352可以由零、一个或两个电流的总和得出。
在实施例中,各个电流可以由2的幂或任何其他组合相关来表示w的值。从图3可以很容易地看出,每当数据位xi,j为0时,输出350、352为0,这将是与零相乘所期望的。相反,当xi,j为1时,输出350、352是wi,k 330与电流i1 340和i0 342的总和。详细地说,如果符号位wi,2312为0(正号),则输出350zi,p=wi,1*i1+wi,0*i0和zi,n=0,并且如果符号位wi,2 312为1(负号),则输出350zi,p=0和zi,n=wi,1*–i1+wi,0*–i0。在实施例中,选择i0和i1的幅度,使得i1=2*i0,从而导致模拟域中的二进制乘法方案。然而,应注意,权重wi 330不必表示为二进制权重。换句话说,电流不必与2的幂相关,并且可以实现二进制数据表示。在实施例中,电流的比率可以按照权重表示而不同。
在实施例中,Eq.2的内部加法项∑ixi,j·wi是通过对每个数据位j和所有i使用Kirchhoff的电流定律对电流求和以输出zi,p 350和zi,n 352,同时保持正电流和负电流分离。在实施例中,如图3所示,正电流zi,p 350和负电流zi,n 352然后可以基于它们的位位置被加权。对于二进制表示,如示例中所示,权重以2的幂进行排列。这样就满足了Eq.2的加权项(∑ixi,j·wi)·2j。图3示出了针对各个位的特定加权方案。有利地,该实施例可以防止在随后的步骤(例如,数字化步骤)中溢出。预想了术语权重的替代变体,并且在得出答案时也可以使用Kirchhoff的电流定律来添加加权项。
本领域技术人员将认识到,可以使用任何数量的电流在系统中实现本公开的教导,所述电流包括正电流和负电流,例如仅正电流或仅负电流、镜像电流等。
图4示出了根据本公开的各种实施例的简化的模拟乘法电路。在实施例中,图3中所示的KT元件可以进一步简化为图4中所示的KT元件420,使得参照图6所讨论的,可以使用单个“单位”电流单元iu 410。
图5是根据本公开的各种实施例的通过利用如图2所示的矩阵乘法系统来执行矩阵乘法运算的说明性过程的流程图。过程500在步骤502处开始,当使用模拟乘法器在模拟域中利用第一权重对数据项的第一位进行加权以获得与第一组电流相对应的第一乘积。
在步骤504处,使用模拟乘法器以利用第二权重对数据项的第二位进行加权以获得与第二组电流相对应的第二乘积。
在步骤506处,Kirchhoff的电流定律用于将第一乘积和第二乘积相加,以获得表示矩阵乘法中部分乘积之和的一组输出电流。
在步骤508处,根据位位置对该组输出电流进行加权。
在步骤510处,将输出电流转换成数字格式以获得数字化结果。
在步骤512处,将激活函数施加到数字化结果。
注意:(1)某些步骤可以可选地执行;(2)步骤可能不限于此处列出的特定顺序;(3)某些步骤可能以不同的顺序执行;(4)某些步骤可以在此同时进行。
在实施例中,权重可以从模拟域移动到数字域。图6示出了根据本公开的各种实施例的使用列权重的示例性矩阵乘法系统。为了清楚起见,与图2中所示的组件相似的组件以相同的方式被标记。为了简洁起见,在此不再重复描述或其功能。矩阵乘法系统600包括ADC670、数字乘法器672、列权重674、列加法器676和激活函数单元678。
在实施例中,ADC 670将相乘的数据660转换为数字域,使得可以使用数字乘法器672和数字列加法器676。但是,这并不意图限制意图的范围。如本领域技术人员将意识到的,可以利用模拟乘法器和列加法器并将其放置在ADC 670之前。
当与图2中所示的实施例比较时,在图6中使用列权重674来避免在每个数据项中存储例如3位权重数据。
此外,与图2中的系统不同,图2中的系统将多个电流和权重与数据项配对,图6中的系统600允许分组和共享几个权重项。此外,可以增加或减少电流量和列权重674中的权重的大小。
详细地,图6中的系统600按权重wi的值排列xi·wi项。由于wi可以是预定的(不同于到算法的输入或作为算法先前步骤的结果的xi),因此可以创建处理结构的几列674,使得可以每列使用一组wi 674(但可能每wi几列)。从数学上讲,y′j.k=∑ixi·wi可以表示为:
y′j.k=∑m(wm·∑pxm.p) (Eq.5)
其中,m表示列,wm是特定列的权重,并且p遍历列m的所有数据元素,使得xm.p表示针对m列的单个数据项。
这意味着可以降低KT元件690的复杂度,如图4所示,使得使用单个单位电流iu。该单位电流不再需要与权重成比例,并且可以针对计算精度和功率效率进行优化。在实施例中,取决于数据位的状态,KT元件690为导通或关断,并且仅对数据位进行计数,使得对于每个导通的数据位,可以将各自的电流添加至输出电流。对于此处为256(可能为“0”或“1”)的数据位,最多256个数据位可能为导通,以便计算设置为“1”的数据位的数量。换句话说,计数的结果可能从0(即没有数据位设置为“1”)到256(含)(即所有数据位设置为“1”)。
要注意的是,图6示出了一种可能的实施方式。例如,可以将比所示的更多或更少的组件放置在列重物674内以在所有列之间共享。
图7示出了根据本公开的各种实施例的利用矩阵乘法的简化系统。系统700包括数据存储器702、权重存储器704、模拟乘法器706、幅度调整电路708、ADC 710、激活单元712、后处理单元714和控制器730。
在操作中,模拟乘法器706可以分别从数据存储器702和权重存储器704取回数据703和权重705。在实施例中,模拟乘法器706可以在模拟域中将数据703和权重705中的至少一些相乘以生成乘积720。在实施例中,乘积720经由模拟加法器707累积,并且幅度调整电路708可以调整所累积的乘积721的幅度,并且输出调整后的乘积722,调整后的乘积722然后可以例如通过ADC 710将其转换为数字格式724。在实施例中,激活单元712可以施加激活函数,而后处理单元714可以将一个或多个后处理步骤施加到乘积,例如根据矩阵乘法。应当理解,所有处理步骤中的一些可以由控制器730来协调。
图8示出了根据本公开的各种实施例的利用列权重的简化矩阵乘法系统。系统800的子电路850、852可以各自包括数据存储器(例如802A)、权重存储器(例如804A)、模拟加法器(例如806A)、幅度调整电路(例如808A)、ADC 810A,810B、数字乘法器(例如806A)。系统800可以进一步包括可以分别在子电路850和852之间共享的数字加法器811、激活单元812、后处理单元814和控制器820。
在操作中,模拟加法器(例如806A)可以将来自数据存储器802A的数据803相加到输出总和820。在实施例中,总和820被输入到幅度调整电路808A,其在模拟域中调整总和820的幅度并且输出幅度调整值822。在实施例中,然后可以例如通过ADC 810A将幅度调整后的值822转换为数字格式824,并且例如通过数字乘法器809A将其与来自权重存储器804A的权重相乘。在实施例中,加法器811将数字乘法器809A和809B的输出相加,以生成可以将例如激活函数施加到其上的输出,例如通过激活单元812。后处理单元814可以将一个或多个后处理步骤例如在控制器830A的控制下施加到激活单元812的输出。
本发明的各方面可以在一个或多个非暂时性计算机可读介质上被编码有用于一个或多个处理器或处理单元以使得执行步骤的指令。应当注意,一个或多个非暂时性计算机可读介质应包括易失性和非易失性存储器。应当注意的是,替代实施方式是可能的,包括硬件实施方式或软件/硬件实施方式。可以使用ASIC、可编程阵列、数字信号处理电路等来实现硬件实现的功能。因此,任何权利要求中的“单元”术语旨在涵盖软件和硬件实现。类似地,本文所使用的术语“计算机可读介质”包括其上具有指令程序的软件和/或硬件,或其组合。考虑到这些实现方式的替代方案,应当理解,附图和随附的描述提供了本领域技术人员编写程序代码(即,软件)和/或制造电路(即,硬件)以执行需要的处理所需的功能信息。
应当注意,本发明的实施例可以进一步涉及具有非暂时性、有形计算机可读介质的计算机产品,所述非暂时性、有形计算机可读介质上具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是出于本发明的目的而专门设计和构造的那些,或者它们可以是相关领域技术人员已知或可获得的那种。有形的计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带之类的磁性介质;以及诸如CD-ROM和全息设备的光学介质;磁光介质;以及专门配置用于存储或存储并执行程序代码的硬件设备,例如专用集成电路(ASIC)、可编程逻辑器件(PLD)、闪存器件以及ROM和RAM器件。计算机代码的示例包括机器代码(例如由编译器生成的机器代码)以及包含由计算机使用解释器执行的更高级别代码的文件。本发明的实施例可以全部或部分地实现为机器可执行指令,该机器可执行指令可以在由处理设备执行的程序模块中。程序模块的示例包括库、程序、例程、对象、组件和数据结构。在分布式计算环境中,程序模块可以物理地位于本地、远程或两者的设置中。
本领域的技术人员将认识到没有任何计算系统或编程语言对于实施本发明至关重要。本领域技术人员还将认识到,上述许多元件可以在物理和/或功能上分离为子模块或组合在一起。
本领域技术人员将意识到,前述示例和实施例是示例性的,并且不限制本公开的范围。意图是,对本领域技术人员而言,在阅读说明书和研究附图之后显而易见的所有排列、增强、等同、组合和改进都包括在本公开的真实精神和范围内。还应当注意,任何权利要求的元素可以不同地布置,包括具有多个依赖性、配置和组合。
Claims (20)
1.一种矩阵乘法系统,包括:
与第一列权重相关联的第一子电路;
数据存储器;
幅度调整电路,其调整从所述数据存储器获得的值的幅度,以生成幅度调整后的值;
耦合到所述第一列权重的乘法器,所述乘法器将所述幅度调整后的值乘以所述第一列权重以获得部分乘积;
耦合到包括所述第一子电路的一组子电路的加法器,所述加法器将一个或多个乘法器的输出相加以获得部分乘积之和;以及
耦合到所述加法器的激活单元,所述激活单元将激活函数施加到所述部分乘积之和以生成矩阵乘法结果。
2.根据权利要求1所述的矩阵乘法系统,还包括ADC,所述ADC将所述幅度调整后的值转换为数字数据。
3.根据权利要求1所述的矩阵乘法系统,其中,所述幅度调整后的值为模拟值。
4.根据权利要求1的矩阵乘法系统,其中,所述加法器是数字加法器。
5.根据权利要求1所述的矩阵乘法系统,其中,所述第一子电路包括开关,所述开关基于数据位的状态来使能电流,所述数据位与从所述数据存储器获得的值相关联。
6.根据权利要求5所述的矩阵乘法系统,其中,将电流相加以生成表示多个位的输出电流。
7.根据权利要求1所述的矩阵乘法系统,其中,所述第一列权重在两个或更多个子电路之间共享。
8.一种用于执行模拟矩阵乘法的方法,所述方法包括:
使用模拟乘法电路来将数据项的第一位与第一权重相乘以获得与第一组电流相对应的第一乘积;
将所述数据项的第二位与第二权重相乘以获得与第二组电流相对应的第二乘积;
将所述第一组电流和所述第二组电流相加以获得表示矩阵乘法中部分点积之和的输出电流;
根据位位置来对所述输出电流进行加权;
将所述输出电流转换成数字格式以获得数字化结果;以及
将激活函数施加到所述数字化结果以生成矩阵乘法结果。
9.根据权利要求8所述的方法,其中,所述模拟乘法电路包括切换电流的开关。
10.根据权利要求9所述的方法,其中,所述开关基于加权位的状态和数据位的状态来切换电流。
11.根据权利要求9所述的方法,其中,具有不同值的电流表示不同的加权位。
12.根据权利要求10所述的方法,其中,所述加权位包括符号位。
13.根据权利要求9所述的方法,其中,所述输出电流是通过由两个或更多个电路共享的ADC转换的。
14.根据权利要求13所述的方法,其中,所述ADC将模拟激活函数施加到转换的电流。
15.一种模拟乘法电路,包括:
第一组开关,其表示针对流过所述第一组开关的电流的一组加权位;以及
第二组开关,其表示针对流过所述第二组开关的电流的一组数据位,所述模拟乘法电路执行以下步骤,包括:
将来自所述一组数据位的第一数据位与来自所述一组加权位的第一加权位相乘,以获得与第一组电流相对应的第一乘积;
将来自所述一组数据位的第二数据位与来自所述一组加权位的第二加权位相乘,以获得与第二组电流相对应的第二乘积;以及
在模拟域中,将流过所述第一组开关和所述第二组开关的电流中的至少一些相加,以获得表示矩阵乘法中部分点积之和的输出电流。
16.根据权利要求15所述的模拟乘法电路,其中,在所述第一组开关和所述第二组开关中流动的电流的比率与2的幂相关,以使得能够进行二进制数据表示。
17.根据权利要求15所述的模拟乘法电路,其中,流过所述第一组开关和所述第二组开关的电流具有相同的极性。
18.根据权利要求15所述的模拟乘法电路,其中,流过所述第一组开关和所述第二组开关的电流是根据位位置进行加权的。
19.根据权利要求15所述的模拟乘法电路,其中,负电流对权重取反。
20.根据权利要求15所述的模拟乘法电路,还包括第三组开关,其表示针对流过所述第三组开关的电流的符号位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862740691P | 2018-10-03 | 2018-10-03 | |
US62/740,691 | 2018-10-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990771A true CN110990771A (zh) | 2020-04-10 |
CN110990771B CN110990771B (zh) | 2024-04-23 |
Family
ID=69886552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910949449.5A Active CN110990771B (zh) | 2018-10-03 | 2019-10-08 | 用于机器学习过程的高效模拟矩阵乘法的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11494625B2 (zh) |
CN (1) | CN110990771B (zh) |
DE (1) | DE102019126714A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1132562A (zh) * | 1993-10-04 | 1996-10-02 | 乔冶亚技术研究公司 | 学习神经网络及其方法 |
US20090030964A1 (en) * | 2005-05-25 | 2009-01-29 | Toshiki Tada | Matrix operation device |
CN107545305A (zh) * | 2017-09-15 | 2018-01-05 | 中国科学技术大学 | 一种基于cmos工艺的、数模混合的、电荷域的神经元电路 |
CN107832846A (zh) * | 2017-11-30 | 2018-03-23 | 电子科技大学 | 一种整合多种激活函数的神经元电路 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11701870B2 (en) | 2015-12-21 | 2023-07-18 | Acc (Beijing) Science And Technology Co., Ltd. | Structural and decorative composite material, preparation method therefor, and article containing same |
CN107729989B (zh) | 2017-07-20 | 2020-12-29 | 安徽寒武纪信息科技有限公司 | 一种用于执行人工神经网络正向运算的装置及方法 |
WO2019133829A1 (en) * | 2017-12-29 | 2019-07-04 | Spero Devices, Inc. | Digital architecture supporting analog co-processor |
US10970441B1 (en) * | 2018-02-26 | 2021-04-06 | Washington University | System and method using neural networks for analog-to-information processors |
JP7136204B2 (ja) * | 2018-06-04 | 2022-09-13 | 株式会社ソシオネクスト | 演算方法 |
US11513797B2 (en) * | 2018-09-12 | 2022-11-29 | Mentium Technologies Inc. | Systems and methods for analog vector by matrix multiplier |
US11809798B2 (en) * | 2019-12-13 | 2023-11-07 | Intel Corporation | Implementing large multipliers in tensor arrays |
WO2022104223A1 (en) * | 2020-11-16 | 2022-05-19 | Lightmatter, Inc. | Parallelization and pipelining strategies for an efficient analog neural network accelerator |
-
2019
- 2019-10-01 US US16/590,272 patent/US11494625B2/en active Active
- 2019-10-02 DE DE102019126714.5A patent/DE102019126714A1/de active Pending
- 2019-10-08 CN CN201910949449.5A patent/CN110990771B/zh active Active
-
2022
- 2022-11-08 US US17/983,320 patent/US11829864B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1132562A (zh) * | 1993-10-04 | 1996-10-02 | 乔冶亚技术研究公司 | 学习神经网络及其方法 |
US20090030964A1 (en) * | 2005-05-25 | 2009-01-29 | Toshiki Tada | Matrix operation device |
CN107545305A (zh) * | 2017-09-15 | 2018-01-05 | 中国科学技术大学 | 一种基于cmos工艺的、数模混合的、电荷域的神经元电路 |
CN107832846A (zh) * | 2017-11-30 | 2018-03-23 | 电子科技大学 | 一种整合多种激活函数的神经元电路 |
Non-Patent Citations (2)
Title |
---|
罗文广等: "一种神经元自适应控制器的模拟电路实现研究", 《系统工程与电子技术》, no. 09, pages 78 - 81 * |
赵正平: "纳电子学与神经形态芯片的新进展(续)", 《微纳电子技术》, vol. 55, no. 02, pages 73 - 83 * |
Also Published As
Publication number | Publication date |
---|---|
US11494625B2 (en) | 2022-11-08 |
US20200167636A1 (en) | 2020-05-28 |
DE102019126714A1 (de) | 2020-04-09 |
CN110990771B (zh) | 2024-04-23 |
US20230121532A1 (en) | 2023-04-20 |
US11829864B2 (en) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111758106B (zh) | 用于大规模并行神经推理计算元件的方法和系统 | |
CN107636640B (zh) | 点积引擎、忆阻器点积引擎以及用于计算点积的方法 | |
US11615165B2 (en) | Systems and methods for mapping matrix calculations to a matrix multiply accelerator | |
AU2020274862B2 (en) | Training of artificial neural networks | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN111758107A (zh) | 用于基于硬件的池化的系统和方法 | |
CN114341891A (zh) | 神经网络剪枝 | |
Cai et al. | Training low bitwidth convolutional neural network on RRAM | |
KR102396447B1 (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
Lee et al. | Successive log quantization for cost-efficient neural networks using stochastic computing | |
CN116362314A (zh) | 一种存算一体装置和计算方法 | |
CN111126557A (zh) | 神经网络量化、应用方法、装置和计算设备 | |
CN110990771B (zh) | 用于机器学习过程的高效模拟矩阵乘法的系统和方法 | |
CN112784951A (zh) | Winograd卷积运算方法及相关产品 | |
Wang et al. | Deep neural network mapping and performance analysis on tiled rram architecture | |
Ma et al. | Non-volatile memory array based quantization-and noise-resilient LSTM neural networks | |
CN115730653A (zh) | 量化神经网络训练与推理 | |
Harma et al. | Accuracy Boosters: Epoch-Driven Mixed-Mantissa Block Floating-Point for DNN Training | |
CN114296684A (zh) | 交叉开关阵列装置和使用该装置的模拟乘积累加操作方法 | |
CN112215338A (zh) | 神经网络计算方法和装置、电子设备及存储介质 | |
CN110989971B (zh) | 用于节能数据处理的系统和方法 | |
US20240152327A1 (en) | Computing circuit, computing method, and decoder | |
US20240086682A1 (en) | Function-based activation of memory tiers | |
Wu et al. | DE-C3: Dynamic Energy-Aware Compression for Computing-In-Memory-Based Convolutional Neural Network Acceleration | |
JP2022173059A (ja) | ハイブリッドadc基盤のmac演算回路及び方法 |
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 |