CN110020723A - 神经网络处理单元及包括该神经网络处理单元的片上系统 - Google Patents
神经网络处理单元及包括该神经网络处理单元的片上系统 Download PDFInfo
- Publication number
- CN110020723A CN110020723A CN201910018283.5A CN201910018283A CN110020723A CN 110020723 A CN110020723 A CN 110020723A CN 201910018283 A CN201910018283 A CN 201910018283A CN 110020723 A CN110020723 A CN 110020723A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- neural
- value
- network processing
- multiplying
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 170
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 108
- 230000001537 neural effect Effects 0.000 claims abstract description 63
- 238000012549 training Methods 0.000 claims description 61
- 230000004913 activation Effects 0.000 claims description 49
- 210000005036 nerve Anatomy 0.000 claims description 29
- 230000001186 cumulative effect Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 5
- 239000004065 semiconductor Substances 0.000 claims description 4
- 210000002569 neuron Anatomy 0.000 description 33
- 230000006870 function Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 23
- 230000015654 memory Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 210000004218 nerve net Anatomy 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 102100034112 Alkyldihydroxyacetonephosphate synthase, peroxisomal Human genes 0.000 description 1
- 101000799143 Homo sapiens Alkyldihydroxyacetonephosphate synthase, peroxisomal Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000000848 angular dependent Auger electron spectroscopy Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000004154 complement system Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 210000005223 peripheral sensory neuron Anatomy 0.000 description 1
- 238000010248 power generation Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000005057 refrigeration Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- 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/14—Arrangements for performing computing operations, e.g. operational amplifiers for addition or subtraction
-
- 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
- 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/26—Arbitrary function generators
-
- 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
-
- 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/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
- 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
Abstract
一种神经网络处理单元及包括该神经网络处理单元的片上系统。所述神经网络处理单元可被配置为执行近似乘法运算并且所述片上系统可包括所述神经网络处理单元。所述神经网络处理单元可包括多个神经处理单元并可基于输入数据的一个或多个实例和多个权重执行计算。至少一个神经处理单元被配置为接收第一值和第二值并基于第一值和第二值执行近似乘法运算,并且还被配置为基于所述近似乘法运算的输出值执行随机舍入运算。
Description
本申请要求于2018年1月9日提交到韩国知识产权局的第10-2018-0002776号韩国专利申请的权益,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本发明构思涉及神经网络处理单元,更具体地讲,涉及包括近似乘法器的神经网络处理单元以及包括该神经网络处理单元的片上系统。
背景技术
神经网络表示模拟生物大脑的计算架构。近来,随着神经网络技术的发展,已经积极研究了各种类型的电子系统,以用于使用神经网络处理单元来分析输入数据并提取有效信息。
神经网络处理单元利用相对大量的计算来处理复杂的输入数据。针对被配置为实时分析高质量输入并提取信息的神经网络处理单元,需要用于高效处理神经网络操作的技术。例如,低功率和高性能嵌入系统(诸如,智能电话)具有有限的资源。
发明内容
一些示例实施例提供一种神经网络处理单元,其中,所述神经网络处理单元被配置为能够在减少处理复杂输入数据所需的计算量的同时降低准确度的损失,从而提供可特别适合包括在低功率且高性能的嵌入系统(包括智能的电话)中的神经网络处理单元。
本发明构思提供包括被配置为执行定点型训练计算的近似乘法器的神经网络处理单元以及包括该神经网络处理单元的片上系统。
根据本发明构思的一方面,一种神经网络处理单元可被配置为基于输入数据的一个或多个实例和多个权重执行计算。所述神经网络处理单元可包括多个神经处理单元。所述多个神经处理单元中的至少一个神经处理单元可被配置为:接收第一值和第二值并基于第一值和第二值执行近似乘法运算,并且基于所述近似乘法运算的输出值执行随机舍入运算。
根据本发明构思的另一方面,一种片上系统可包括一个或多个半导体知识产权核(IP)以及神经网络处理单元,其中,神经网络处理单元被配置为从所述一个或多个IP接收输入数据并基于输入数据和多个权重执行神经网络计算。神经网络处理单元可包括多个神经处理单元,其中,所述多个神经处理单元中的至少一个神经处理单元被配置为:接收第一值和第二值并对第一值和第二值执行近似乘法运算,并且基于近似乘法运算的输出值执行随机舍入运算以输出关于近似乘法运算的输出的后激活。
根据本发明构思的另一方面,一种神经网络处理单元可用于在训练模式下基于训练数据的一个或多个实例和多个权重执行训练操作。所述神经网路处理单元可包括多个神经处理单元。所述多个神经处理单元中的至少一个神经处理单元可被配置为:在训练模式下,接收第一值和第二值并对第一值和第二值执行近似乘法运算,基于近似乘法运算的输出值和第三值执行加法运算,对近似乘法运算的输出值进行累加,并对基于所述累加输出的累加值执行随机舍入操作,以输出关于累加值的后激活。
附图说明
通过下面结合附图的详细描述,将更清楚地理解本发明构思的示例实施例,其中:
图1是示出根据本公开的一些示例实施例的片上系统(SoC)的框图;
图2是示出根据本公开的一些示例实施例的神经网络的示例的示图;
图3是示出根据本公开的一些示例实施例的神经网络的训练处理的流程图。可参照图2来描述图3;
图4是示出定点值的示例的示图;
图5是示出根据本公开的一些示例实施例的神经网络处理单元的结构的示例的框图;
图6是示出根据本公开的一些示例实施例的神经处理单元的详细结构的框图;
图7是示出根据本公开的一些示例实施例的算术逻辑单元的框图;
图8是示出根据本公开的一些示例实施例的激活函数单元的框图;
图9和图10分别是示出根据本公开的一些示例实施例的神经网络处理单元的训练的流程图和示出根据本公开的一些示例实施例的随机舍入的示图;
图11是示出根据本公开的一些示例实施例的算术逻辑单元的框图;
图12是示出根据本公开的一些示例实施例的算术逻辑单元的框图;
图13是示出根据本公开的一些示例实施例的移动计算装置的框图;
图14示出根据一些示例实施例的车辆。
具体实施方式
在下文中,将参照附图详细地描述本发明构思的示例实施例。
图1是示出根据本公开的一些示例实施例的片上系统(SoC)10的框图。
参照图1,SoC 10可包括多个知识产权(IP)和神经网络处理单元(NPU)100。SoC 10可被设计为在半导体系统中执行各种功能,例如,SoC 10可以是应用处理器。SoC 10可基于神经网络实时分析输入数据并提取有效信息,并基于提取的信息,可确定安装有SoC 10的电子装置的情况或控制安装有SoC 10的电子装置的配置。例如,SoC 10可用于无人机、机器人设备(诸如,高级驾驶员辅助系统(ADAS))、自主车辆、智能电视(TV)、智能电话、医疗装置、移动装置、图像显示装置、测量装置、物联网(IoT)装置等,此外,SoC 10可安装在各种种类的电子装置中的至少一种上。
如在此使用的,将理解,IP(例如,IP1、IP2和IP3)表示作为一方的知识产权的硬件电路(例如,集成电路)的实例。如在此提及的,IP可被互换地称为半导体知识产权核、IP核和/或IP块。SoC 10可包括各种种类的IP。例如,IP可包括处理单元(“处理电路的实例”,例如,CPU、专用集成电路、它们的一些组合等)、包括在处理单元中的多个核、多格式编解码器(MFC)、视频模块(例如,相机接口、联合图像专家组(JPEG)处理器、视频处理器或混频器)、三维(3D)图形核、音频系统、驱动器、显示驱动器、易失性存储器、非易失性存储器、存储器控制器、输入和输出接口块或高速缓冲存储器。
用于连接IP的大多数技术涉及基于系统总线的连接方法。例如,可使用先进精简指令集计算机(RISC)机器公司(ARM)的高级微控制器总线架构(AMBA)协议作为标准总线规范。AMBA协议的总线类型可包括高级高性能总线(AHB)、高级外围总线(APB)、高级可扩展接口(AXI)、AXI4、AXI一致性扩展(ACE)等。上述总线类型中的AXI是IP之间的接口协议并可提供多个出色的地址功能、数据交叉存取(interleaving)功能等。此外,其他类型的协议(诸如,SONICs Inc.的uNetwork、IBM的CoreConnect或OCP-IP的开放核心协议(Open CoreProtocol))可被应用到系统总线。
NPU 100可生成神经网络,可训练(或学习)神经网络,可基于接收的输入数据执行计算并基于计算的结果生成信息信号,或者可重新训练神经网络。在一些示例实施例中,NPU 100可基于定点来训练神经网络。这将在下面进行详细描述。
将理解,NPU 100可以是可执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)和/或可由可执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)来实现。因此,在一些示例实施例中,如在此描述的NPU 100可以是实现NPU 100的功能的处理器。
NPU 100可经由系统总线从IP接收各种种类的输入数据,并因此可生成信息信号(例如,基于输入数据执行神经网络计算以生成输出信号)。由神经网络生成的信息信号可包括各种种类的识别信号(诸如,语音识别信号、对象识别信号、图像识别信号和生物信息识别信号)之一。例如,NPU 100可接收包括在视频流中的帧数据作为输入数据,并可从帧数据生成关于包括在由帧数据表示的图像中的对象的识别信号。然而,本公开不限于此,NPU100可接收各种种类的输入数据并可根据输入数据生成识别数据。
图2是示出根据本公开的一些示例实施例的神经网络1的示例的示图。如图2所示的神经网络可通过神经网络处理单元(包括例如NPU 100和/或(下面进一步描述的)图13中所示的NPU 1058)实现。
参照图2,神经网络1可具有包括输入层、隐藏层和输出层的结构。实现神经网络1的神经网络处理单元可基于接收的输入数据(例如,I1和I2)执行计算并可基于计算的结果生成输出数据(例如,O1和O2)。在一些示例实施例中,神经网络处理单元可被训练为通过基于输入数据执行的计算来实现神经网络1。对神经网络处理单元进行训练以实现神经网络在此可被称为“训练”神经网络。当神经网络1被训练时,输入数据可以是训练数据。
神经网络1可以是深度神经网络(DNN)或包括两个或更多个隐藏层的n层神经网络。例如,如图2中所示,神经网络1可以是包括输入层2、第一隐藏层3、第二隐藏层4以及输出层5的DNN。DNN可包括但不限于:卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络、限制玻尔兹曼(Boltzmann)机等。
当神经网络1具有DNN结构时,神经网络1包括可从中提取有效信息的多个层,因此,神经网络1可处理复杂的数据集。虽然神经网络1被示出为包括四层(即,输入层2、第一隐藏层3、第二隐藏层4以及输出层5),但这仅是示例,神经网络1可包括更少的层或更多的层。此外,神经网络1可包括与图2中示出的结构不同的各种结构的层。
包括在神经网络1中的输入层2、第一隐藏层3、第二隐藏层4以及输出层5中的每个可包括多个神经元。神经元可对应于被称为处理元件(PE)、单元或相似术语的多个人工节点。例如,如在图2中所示,输入层2可包括两个神经元(节点),第一隐藏层3和第二隐藏层4中的每个可包括三个神经元(节点)。然而,这仅是示例,包括在神经网络1中的每个层可包括各种数量的神经元(节点)。
在神经网络1中包括的每个层中包括的神经元可彼此连接以交换数据。一个神经元可从其他神经元接收数据并执行计算,并且可将计算的结果输出到其他神经元。
每个神经元(节点)的输入和输出可被称为输入激活(activation)和输出激活。也就是说,激活可以是一个神经元的输出并且还可以是与包括在下一层中的神经元的输入对应的参数。每个神经元可基于从包括在之前层中的神经元接收的激活和权重来确定他们的激活。权重是用于计算每个神经元中的输出激活的参数,并且可以是被分配给神经元之间的连接关系的值。
每个神经元可通过接收输入并输出激活的神经处理单元(或PE)来处理,并且每个神经元的输入-输出可被映射。例如,σ可以是激活函数,可以是从包括在第(i-1)层中的第k神经元到包括在第i层中的第j神经元的权重值。可以是包括在第i层中的第j神经元的偏置值,可以是第i层的第j神经元的激活(换句话说,后激活(post-activation))。后激活可使用下面的等式1来计算。
【等式1】
如图2中所示,第一隐藏层3的第一神经元的后激活可被表示为此外,可根据等式1具有值换句话说,后激活可以是通过将激活函数应用到从之前的层接收的激活之和而获得的值。然而,等式1仅是用于解释神经网络1中用于处理数据的激活和权重的示例,但其不限于此。
如上所述,在神经网络1中,许多数据集在多个互相连接的神经元之间交换,并且当它们穿过层时经历许多计算处理。通过这样的计算,神经网络1可被训练,并且权重和偏置可因此被优化。根据本公开的一些示例实施例的NPU可包括近似乘法器和/或可被配置为实现近似乘法器,并且可被配置为基于定点型激活、权重和偏置来训练神经网络1。将在下面给出它们的详细描述。
图3是示出根据本公开的一些示例实施例的神经网络的训练处理的流程图。可参照图2来描述图3。图3中示出的训练处理可通过神经网络处理单元(包括NPU 100和/或(在下面进一步描述的)图13中示出的NPU 1058)来实现。
参照图3,在操作S100中,可基于训练数据来执行神经网络1的计算,并且还可生成输出数据。换句话说,当训练数据作为输入数据I1和I2被应用到输入层2时,神经网络1可生成与训练数据对应的输出数据O1和O2。作为应用到神经网络1以用于学习的输入数据的训练数据可以是预先知道对应的目标值或标签的数据。
可基于定点型激活、权重和偏置来训练神经网络1。在一些示例实施例中,可基于定点近似乘法器、定点加法器和定点舍入(round)器来计算每个神经元中的后激活。例如,可通过近似乘法器将之前层的后激活和权重一起近似地相乘,并对通过将多个近似的乘积相加获得的值执行舍入。例如,舍入器可执行随机舍入。
在操作S200中,可基于与训练数据对应的输出数据来计算损失。例如,损失可表示与训练数据对应的目标值和与训练数据对应的输出数据之间的差。
在操作S300中,可将损失向后传播给神经网络1,并且可确定每个神经元的参数。神经元的参数可包括提供神经网络计算的基础的各种种类的数据(例如,权重、偏置等)。随着神经网络1被反复训练,神经网络1的参数可被调整以针对给定输入计算更准确的输出。
图4是示出定点值FX的示例的示图。
参照图4,定点值FX可被划分为整数部分IL、小数点DP和小数部分FL。定点指的是通过使用小数点来表示具有固定位数的小数的表示法。
整数部分IL可包括符号位SB。符号位SB可确定定点值FX的符号。整数部分IL可对应于指示定点值FX的整数的部分,小数部分FL可对应于指示定点值FX的小数的部分。小数点DP可表示用于在定点值FX的整数部分IL和小数部分FL之间进行区分的参考的点。
例如,当定点值FX是8位定点值时,表示整数部分IL和小数部分FL的每个位可具有值1或0。表示整数部分IL的位可从符号位SB顺序地表示值-8、+4、+2和+1。此外,表示小数部分FL的位可基于小数点DP顺序地表示值+0.5、+0.25、+0.125和+0.0625。例如,当符号位SB是1时,整数部分IL的最高有效位表示的值是-8,其中,不管包括在整数部分IL和小数部分FL中的其他位的值如何,定点值FX表示的值都是负数。
尽管图4示出8位定点值FX,但这仅是示例实施例,并且定点值FX可以是具有任何适当位数的定点值。此外,定点值FX可表示使用编码表示、反码系统和补码系统之一来表示负数。
图5是示出根据本公开的一些示例实施例的NPU 100的结构的示例的框图。例如,图5示出NPU 100的详细结构。在下文中,将参照图1来描述图5。
参照图5,NPU 100可包括数据随机存取存储器(数据RAM)110、权重RAM 120、控制器130和多个神经处理单元(NP)140-1至140-n。虽然未示出,但是NPU 100还可包括定序器、多个寄存器、程序存储器等,在一些示例实施例中,控制器130、定序器、多个寄存器、程序存储器等可以是执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)和/或通过执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)来实现。因此,在一些示例实施例中,如在此描述的控制器130、定序器、多个寄存器、程序存储器等可以是实现控制器130、定序器、多个寄存器、程序存储器等的功能的处理器。
如在此描述的,神经处理单元140-1至140-n可均通过执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)来实现。因此,在一些示例实施例中,如在此描述的控制器130、定序器、多个寄存器、程序存储器等可以是实现控制器130、定序器、多个寄存器、程序存储器等的功能的处理器。
在一些示例实施例中,每个单独的神经处理单元140-1至140-n是被配置为实现各自神经处理单元的功能的单独的电路的实例。
数据RAM 110可存储一条或多条(“实例”)输入数据I并可将输入数据I应用到神经处理单元140-1至140-n。例如,输入数据I可从多个IP中的至少一个提供。此外,基于神经处理单元140-1至140-n的计算生成的输出数据O可被接收并存储。在一些示例实施例中,输入数据I和输出数据O可属于定点型。
例如,在NPU 100的训练模式(或学习模式)下(例如,响应于NPU 100在训练模式下操作),数据RAM 110可存储训练数据(例如,在训练模式下从一个或多个IP接收的训练数据)并且可将训练数据作为输入数据I应用到神经处理单元140-1至140-n。例如,在NPU 100的推理模式下(例如,响应于NPU 100在推理模式下操作),数据RAM 110可存储用于NPU 100的推理操作的数据并可将该数据作为输入数据I应用到神经处理单元140-1至140-n。当NPU100包括在片上系统(例如,图1的10)中时,数据RAM 110可存储从包括在片上系统(例如,图1的10)中的各种IP输出的数据作为输入数据I。因此,NPU 100可在训练模式下基于一条或多条(“实例”)训练数据和多个权重来执行训练操作。训练操作可包括定点型训练操作。
权重RAM 120可存储多个权重W并可将每个权重应用到对应的神经处理单元。换句话说,分别分配给神经处理单元140-1至140-n的权重W可被存储在权重RAM 120中。例如,在NPU 100的训练模式(或学习模式)下,权重RAM 120可从神经处理单元140-1至140-n接收通过训练处理调整的权重W并可存储权重W。在一些示例实施例中,权重W可属于定点型。
例如,数据RAM 110和权重RAM 120可以是动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、相变RAM(PRAM)等。然而,本公开不限于此,并且数据RAM 110和权重RAM 120可被实现为各种种类的存储器。
控制器130可对神经处理单元140-1至140-n执行总体控制操作。例如,控制器130可将用于控制包括在每个神经处理单元中的多路复用器的第一控制信号CTRL_1施加到神经处理单元140-1至140-n。此外,在一些示例实施例中,控制器130可将用于控制包括在每个神经处理单元中的近似乘法器的第二控制信号CTRL_2施加到神经处理单元140-1至140-n。例如,第二控制信号CTRL_2可以是近似乘法器的模式选择的基础。如在此描述的,用于控制神经处理单元140-1至140-n的元件(例如,乘法器和/或近似乘法器)的模式的控制信号可以是被输出以控制至少一个神经处理单元140-1至140-n的模式的控制信号。
神经处理单元140-1至140-n可分别被配置为作为包括在神经网络(例如,图2的10)的层(例如,图2的2、3、4和5)中的神经元进行操作。例如,神经处理单元140-1至140-n中的至少一些神经处理单元可对应于包括在输入层(例如,图2的2)中的神经元进行操作,从而,可接收输入数据I和权重W并因此输出激活。例如,神经处理单元140-1至140-n中的一些其他的神经处理单元可对应于包括在隐藏层(例如,图2的3和4)中的神经元进行操作,从而,可接收从包括在之前层中的神经元接收的激活和权重W并因此输出激活。例如,神经处理单元140-1至140-n中的其他神经处理单元可对应于包括在输出层(例如,图2的5)中的神经元进行操作,从而,可接收从包括在之前层中的神经元接收的激活和权重W并因此生成输出数据。
在一些示例实施例中,神经处理单元140-1至140-n中的至少一个可包括近似乘法器和舍入器。重申,神经处理单元中的至少一个可被配置为实现近似乘法器和舍入器的功能。例如,神经处理单元140-1至140-n中的至少一个可经由近似乘法器基于在该至少一个神经处理单元接收的第一值(例如,图6中的mo)和第二值(例如,W)(例如,对激活(例如,图6中的I_A或I)和权重W)执行近似乘法运算。此外,神经处理单元140-1至140-n中的至少一个可经由舍入器基于近似乘法运算的输出(例如,对多个近似相乘的值之和)执行随机舍入(“执行随机舍入运算”)。
虽然在一些示例实施例中未示出,但是NPU 100还可包括时钟,并且神经处理单元140-1至140-n可在每个时钟周期期间执行计算操作。在一些示例实施例中,神经处理单元140-1至140-n可以以流水线方式操作。
图6是示出根据本公开的一些示例实施例的神经处理单元140-m的详细的结构的框图。例如,图6中示出的神经处理单元140-m可以是图5的神经处理单元140-1至140-n之一。在下文中,将参照图5来描述图6。将理解,在一些示例实施例中,神经处理单元140-m的元件150m至180m中的一个或多个可通过神经处理单元的电路来实现。
参照图6,神经处理单元140-m可包括算术逻辑单元(ALU)160m、累加器170m和激活函数单元(AFU)180m和/或可被配置为实现ALU 160m、累加器170m和AFU 180m的功能。此外,神经处理单元140-m还可包括多路复用器150m和/或可被配置为实现多路复用器150m的功能。
多路复用器150m可接收输入数据I和输入激活A_I并且可基于第一控制信号CTRL_1可选地选择输入数据I和输入激活A_I之一并输出选择的那个作为第一值mo。例如,第一控制信号CTRL_1可由控制器130提供。在一些示例实施例中,输入数据I是从NPU 100的数据RAM(例如,数据RAM 110)输出的训练数据。
例如,输入数据I可从数据RAM 110提供。此外,输入激活A_I可从神经处理单元140-1至140-n之一提供。例如,基于包括与神经处理单元140-m对应的神经元的层,输入激活A_I可从与包括在之前层中的神经元对应的神经处理单元提供或者可从与包括在同一层中的神经元对应的神经处理单元提供。
ALU 160m可接收多条数据并因此可执行算术和逻辑运算。例如,ALU 160可接收第一值mo和权重W,并可对第一值mo和权重W执行乘法运算。此外,ALU 160m还可接收从累加器170m输出的累加值aco并可通过对关于第一值mo和权重W的乘法运算的结果和累加值aco执行加法运算来生成输出值alo。ALU 160m可包括定点型装置。
在一些示例实施例中,在NPU 100的训练模式下(例如,响应于NPU 100在训练模式下操作),ALU 160m可对第一值mo和权重W执行近似乘法运算。作为近似计算的一种的近似乘法运算可表示部分地允许计算的结果值的误差的乘法运算。此外,在NPU 100的推理模式下,ALU 160m可对第一值mo和权重W执行一般乘法运算。
累加器170m可暂时地存储ALU 160m的计算结果。详细地讲,累加器170m可包括接收并暂时存储ALU 160m的输出值alo的寄存器。例如,累加器170m可包括多个触发器彼此相连接的配置。累加器170m可将暂时存储的输出值alo作为累加值aco输出到ALU 160m或AFU180m。累加器170m可被理解为对由ALU 160m执行的近似乘法运算的一个或多个输出值alo进行累加。
AFU 180m可从累加器170m接收累加值aco(例如,由累加器170m执行的累加的输出值)。在一些示例实施例中,AFU 180m可对累加值aco执行舍入运算并且可生成关于累加值aco的后激活A_O。还将理解,后激活A_O可以是关于ALU 160m的近似乘法运算的输出。作为示例,AFU 180m可对累加值aco执行舍入运算并且可对其应用激活函数。可选地,AFU 180m可对累加值aco应用激活函数并可对其执行舍入运算。可选地,AFU 180m可对累加值aco执行舍入运算并可绕过激活函数的应用。例如,AFU 180m可对累加值aco执行随机舍入运算。因此,AFU 180m可生成后激活A_O(或输出激活)。
图7是示出根据本公开的一些示例实施例的ALU 160m的框图。例如,图7可以是图6中示出的ALU 160m的详细的框图。在下文中,将参照图5和图6来描述图7。
参照图7,ALU 160m可包括近似乘法器162m和加法器164m。近似乘法器162m可对多个输入值执行近似乘法运算。详细地讲,近似乘法器162m可接收第一值mo和权重W并可得到第一值mo和权重W的近似乘积。近似乘法器162m可被实现为各种类型,例如,基于近似4:2压缩器的乘法器、近似改良布斯(booth)乘法器等。
与第一值mo和权重W的一般乘积相比,通过近似乘法器162m得到的第一值mo和权重W的近似乘积可在一个或多个位中随机地具有误差。也就是说,第一值mo和权重W的乘积可通过近似乘法而具有随机性,因此随后可在AFU 180m中执行随机舍入运算。
在一些示例实施例中,近似乘法器162m可被控制为在NPU 100的训练模式下执行近似乘法并在NPU 100的推理模式下执行一般乘法。例如,近似乘法器162m可被控制为基于从控制器130接收的第二控制信号CTRL_2来执行近似乘法和一般乘法之一(例如,可在执行近似乘法运算的第一模式和执行一般乘法运算的第二模式中的一个模式下操作)。
加法器164m可对近似乘法器162m的输出和从累加器170m输出的累加值aco(例如,累加的输出值)执行加法运算。也就是说,加法器164m可通过在训练模式下对关于第一值mo和权重W的乘法运算的结果和累加值aco执行加法运算来生成输出值alo。例如,输出值alo可以是与从之前层接收的激活之和对应的值。
图8是示出根据本公开的一些示例实施例的AFU 180m的框图。例如,图8可以是图6中示出的AFU 180m的详细的框图。在下文中,将参照图5和图6来描述图8。
参照图8,AFU 180m可包括舍入器182m和激活函数(AF)模块184m。舍入器182m可对从累加器170m输出的累加值aco执行舍入运算。在一些示例实施例中,在NPU 100的训练模式下,累加值aco可基于近似乘法运算而随机地具有误差,因此舍入器182m可对累加值aco执行随机舍入运算。通过对累加值aco的舍入运算,累加值aco可被量化。
随机舍入运算可表示基于概率执行舍入的操作。例如,在指数部分是IL并且小数部分是FL的定点的基础上,随机舍入运算可被定义为下面的[等式2]。
[等式2]
在[等式2]中,可表示小于x的值中的∈的最大整数倍。在根据[等式2]的随机舍入运算中,舍入运算基于概率而被执行,因此,例如,在训练期间范围内的小的变化可被反映。
根据本发明构思的NPU 100可包括经由近似乘法器162m和舍入器182m实现近似舍入的多个神经处理单元。根据一些示例实施例的在神经处理单元中实现的随机舍入可被定义为下面[等式3]。
[等式3]
在[等式3]中,单值函数uniform()可被定义为返回两个输入变量之间的随机小数的函数。
在一些示例实施例中,AF模块184m可将激活函数应用于舍入的累加值aco。AF模块184m可将激活函数应用于舍入的激活函数aco并输出后激活A_O。也就是说,AF模块184m可将激活函数应用于从之前层接收的激活之和并输出后激活A_O。例如,AF模块184m可应用阶梯函数、S型(sigmoid)函数、双曲正切函数或整流线性单元(ReLU),但是本公开不限于此。
虽然在一些示例实施例中已经描述了在舍入器182m中被舍入的累加值aco被输入到AF模块184m,但是这仅是示例,并且本公开不限于此。作为示例,累加值aco可被输入到AF模块184m以对其应用激活函数,并且已经应用激活函数的累加值aco可被输入到舍入器182m以对其执行随机舍入运算。作为另一示例,可通过舍入器182m对累加值aco执行随机舍入运算,并且累加值aco可绕过AF模块184m并被AFU 180m输出。
图9和图10分别是示出根据本公开的一些示例实施例的NPU的训练的流程图和示出根据本公开的一些示例实施例的随机舍入的示图。在下文中,将参照图6和图8来描述图9和图10。
参照图9,在NPU 100的训练模式下,每个神经处理单元可对输入激活A_I和权重W执行近似乘法运算(操作S110)。例如,可经由包括在ALU 160m中的近似乘法器162m来执行近似乘法运算。
接下来,可对已经执行近似乘法运算的值执行累加(操作S120)。例如,可经由包括在ALU 160m中的加法器164m和累加器170m对已经执行近似乘法运算的值执行累加。例如,累加的值可对应于从之前层接收的激活之和。
接下来,每个神经处理单元可对累加值aco执行随机舍入(操作S130)。例如,可经由包括在AFU 180m中的舍入器182m来执行随机舍入运算。在执行随机舍入之后,可将激活函数应用于已经执行随机舍入的值(操作S140)。例如,可经由包括在AFU 180m中的AF模块184m来执行激活函数的应用。
进一步参照图10,对随机数的随机舍入的实现被示出。例如,当输入到舍入器182m的累加值aco是3.3时,依据根据本公开的一些示例实施例的随机舍入,被舍入为3的概率和被舍入为4的概率可分别为70%和30%。也就是说,由于即使在定点运算中也可根据概率反映小的变化,所以根据本公开的NPU 100可执行定点训练。此外,由于即使在没有单独的随机数生成器的情况下也可经由近似乘法器执行随机舍入运算,因此NPU 100的面积和功耗可减少。
图11是示出根据本公开的一些示例实施例的ALU 260m的框图。下面将省略图11中示出的参照图7给出的配置的重复的描述。
参照图11,ALU 260m可包括近似乘法器262m和近似加法器264m。在一些示例实施例中,近似加法器264m可对近似乘法器262m的输出和累加值aco执行近似加法运算。作为近似计算的一种的近似加法运算可表示部分地允许计算的结果值的误差的加法运算。
在一些示例实施例中,近似加法器264m可被控制为在NPU(图5的100)的训练模式下执行近似加法并在NPU(图5的100)的推理模式下执行一般加法。例如,近似加法器264m可被控制为基于从控制器(图5的130)接收的第三控制信号CTRL_3执行近似加法和一般加法之一。例如,在NPU(图5的100)的训练模式下,输出值alo可通过近似乘法器262m的近似乘法和近似加法器264m的近似加法而具有随机性,因此可随后在AFU(图6的180m)中执行随机舍入运算。
图12是示出根据本公开的一些示例实施例的ALU 360m的框图。下面将省略在图12中示出的参照图7和图11给出的配置的重复的描述。
参照图12,ALU 360m可包括一般乘法器362m和近似加法器364m。在一些示例实施例中,一般乘法器362m可在NPU(图5的100)的训练模式和推理模式下执行一般乘法。此外,近似加法器364m可被控制为在NPU(图5的100)的训练模式下执行近似加法并在NPU(图5的100)的推理模式下执行一般加法。例如,在NPU(图5的100)的训练模式下,输出值alo可通过近似加法器364m的近似加法而具有随机性,因此可随后在AFU(图6的180m)中执行随机舍入运算。
图13是示出根据本公开的一些示例实施例的移动计算装置1000的框图。作为非限制示例,移动计算装置1000可以是通过电池或自发电供电的任何移动电子装置(诸如,移动电话、平板个人计算机(PC)、可穿戴装置或者物联网(IoT)装置)。
如图13中所示,移动计算装置1000可包括存储器子系统1010、输入/输出(I/O)装置1030、处理单元1050和网络接口1070,并且存储器子系统1010、I/O装置1030、处理单元1050和网络接口1070可经由总线1090互相通信。在一些实施例中,存储器子系统1010、I/O装置1030、处理单元1050和网络接口1070中的至少两个可作为片上系统被包括在一个封装中。
存储器子系统1010可包括RAM 1012和存储装置1014。RAM 1012和/或存储装置1014可存储将由处理单元1050执行的指令和将被处理的数据。例如,RAM 1012和/或存储装置1014可存储变量(诸如,神经网络的信号、权重和偏置)或者可存储神经网络的神经元(或节点)的参数。在一些实施例中,存储装置1014可包括非易失性存储器。
处理单元1050可包括中央处理器(CPU)1052、图形处理器(GPU)1054、数字信号处理器(DSP)1056和NPU 1058。与图13所示不同,在一些实施例中,处理单元1050可包括CPU1052、GPU 1054、DSP 1056和NPU 1058中的至少一些。
CPU 1052可控制或执行移动计算装置1000的整体操作,例如,可响应于经由I/O装置1030接收的外部输入而直接执行特定操作或者可指示处理单元1050的其他组件来执行。GPU 1054可生成经由包括在I/O装置1030中的显示装置输出的图像的数据或者可对从包括在I/O装置1030中的相机接收的数据进行编码。DSP 1056可通过对数字信号(例如,从网络接口1070提供的数字信号)进行处理来生成有用的数据。
作为用于神经网络的专用硬件的NPU 1058可包括与构成神经网络的至少一些神经元对应的神经处理单元,并且神经处理单元中的至少一些可并行处理信号。根据本公开的一些示例实施例的NPU 1058可包括近似乘法器和舍入器并且可相应地执行神经网络训练,这使得定点训练具有高准确性,从而提高移动计算装置1000的操作性能和/或功能。此外,由于即使在没有单独的随机数生成器的情况下也可执行随机舍入,所以NPU 1058的面积和功耗可减少,从而进一步改善移动计算装置1000的操作性能和/或功能。
I/O装置1030可包括输入装置(诸如,触摸输入装置、声音输入装置和相机)以及输出装置(诸如,显示装置和声音输出装置)。例如,当经由声音输入装置输入用户的语音时,可通过在移动计算装置1000中实现的神经网络来识别语音,并且可触发对应的操作。此外,当经由相机输入图像时,可通过在移动计算装置1000中实现的神经网络来识别包括在图像中的对象,并且可将输出(诸如,虚拟现实)提供给用户。网络接口1070可向移动计算装置1000提供对移动通信网络(诸如,长期演进(LTE)、5G等)的访问或可提供对本地网络(诸如,WiFi)的访问。
图14示出根据一些示例实施例的车辆。
参照图14,车辆1400可包括以下项中的一个或多个:处理组件1402、一个或多个传感器装置1420、一个或多个通信接口1430、一个或多个驱动控制元件1440、自主导航系统1450和一个或多个车辆乘员(“用户”)接口1460。
如在此描述的,一个或多个传感器1420可包括一个或多个相机装置、主动扫描装置(例如,一个或多个LiDAR传感器装置)、一个或多个超声波传感器装置、一个或多个地理定位装置、它们的一些组合等。传感器装置1420可基于对车辆1400周围的外部环境的一个或多个部分进行监视来生成传感器信号。
如在此描述的,一个或多个驱动控制元件可包括以下项中的一个或多个:被配置为控制车辆1400的转向的车辆转向装置、被配置为控制车辆1400的发动机的至少一部分以控制车辆1400的加速和/或运动的油门装置、被配置为控制车辆1400的制动的制动装置、被配置为提供外部照明的灯组件(例如,前照灯、制动灯、转向信号指示灯等)、被配置为控制车辆1400舱的一个或多个部分的制热和/或制冷的气候控制组件或者被配置为控制车辆1400的任何操作的任何其他已知的元件。
如在此描述的,用户接口1460可包括在车辆1400舱中的一个或多个显示屏上呈现的图形显示接口(GUI)(包括触摸屏显示器、非交互式显示器、平视显示器、一些组合等)、音频接口(例如,扬声器和/或麦克风)、触觉接口装置、它们的一些组合等中的一个或多个。
如在此描述的,一个或多个通信接口1430可包括无线电收发器、无线网络通信收发器、点对点无线网络通信收发器、地理空间定位系统(GPS)装置、它们的一些组合等。
如在此描述的,自主导航系统1450可包括被配置为实现一个或多个驱动控制元件1440的自主控制以通过环境对车辆1400进行自主导航的计算装置(例如,存储指令的程序的至少一个存储器和被配置为执行指令的程序的至少一个处理器)。自主导航系统1450可被配置为基于对由一个或多个传感器装置1420生成的传感器数据进行处理实现对一个或多个驱动控制元件的这样的自主控制。
如示出的,处理组件1402可包括神经网络处理单元(NPU)1410。NPU 1410可以是如在此描述的NPU 100和/或NPU 1058。在一些示例实施例中,处理组件1402包括在自主导航系统1450中,使得自主导航系统包括NPU 1410。
在一些示例实施例中,车辆1400被配置为参与自主导航(“自主驾驶”)(例如,独立于车辆乘员对任何驱动控制元件1440的控制的车辆的驾驶),使得车辆1400在此可被称为自主车辆。
在一些示例实施例中,NPU 1410(可以是如在此描述的NPU 100和/或NPU 1058)可被配置为接收包括由一个或多个传感器装置1420生成的传感器数据的一条或多条(“实例”)输入数据。NPU 1410可被配置为从一个或多个各种装置(包括可被包括在处理组件1402和/或自主导航系统1450中的一个或多个IP)接收多个权重。权重可在NPU经由用户接口1460、传感器装置1420或通信接口1430中的一个或多个来接收。
NPU 1410可被配置为执行如在此描述的NPU 100的功能,例如,基于输入数据(例如,传感器数据)的一个或多个实例和多个权重来执行计算以生成输出信号(例如,后激活A_O),其中,输出信号可以是被发送给至少一个驱动控制元件1440以使得该至少一个驱动控制元件1440实现对车辆1400的驾驶的一个或多个方面的控制来对车辆1400进行自主导航的驱动控制元件控制信号。
此外,在一些示例实施例中,输入数据的一个或多个实例可以是在NPU 1410从用户接口1460和通信接口1430中的一个或多个接收的数据。此外,在一些示例实施例中,NPU1410被配置为生成使得用户接口1460提供关于车辆1400的一个或多个特定乘员的用户接口功能的输出信号(例如,后激活A_O)。此外,在一些示例实施例中,NPU 1410被配置为生成使得通信接口1430将信息和/或对信息的请求传送给一个或多个外部的远程定位的实体(包括基站、其他车辆、远程定位通信装置(例如,智能电话)、无线网络中的服务器装置、它们的一些组合等)的输出信号(例如,后激活A_O)。
在一些示例实施例中,NPU 1410可包括近似乘法器和舍入器并且可相应地执行神经网络训练,这能够使定点训练具有高准确性,从而提高车辆1400的关于被配置为实现车辆1400的自主导航的操作性能和/或功能。例如,NPU 1410可被配置为基于以提高的准确性、精度和/或高效性对由一个或多个传感器装置1420生成的传感器数据进行处理来实现车辆1400的自主导航,从而提高车辆1400的自主导航功能。此外,由于即使在没有单独的随机数生成器的情况下也可执行随机舍入,所以NPU 1410的面积和功耗可减少,从而进一步改善车辆1400的关于与车辆1400的自主导航功能相关联的至少高效且紧凑的硬件的操作性能和/或功能。
虽然已经参照本发明构思的示例实施例具体示出并描述了本发明构思,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可在其中进行形式和细节的各种改变。
Claims (20)
1.一种神经网络处理单元,被配置为基于输入数据的一个或多个实例和多个权重来执行计算,所述神经网络处理单元包括:
多个神经处理单元,其中,所述多个神经处理单元中的至少一个神经处理单元被配置为:
接收第一值和第二值并基于第一值和第二值执行近似乘法运算;
基于所述近似乘法运算的输出值执行随机舍入运算。
2.根据权利要求1所述的神经网络处理单元,其中,所述至少一个神经处理单元还被配置为:
可选地选择输入数据的所述一个或多个实例和所述多个神经处理单元中的一个神经处理单元的输出值中的一个元素,
输出选择的一个元素作为第一值。
3.根据权利要求1所述的神经网络处理单元,其中,第二值包括所述多个权重中的至少一个权重。
4.根据权利要求1所述的神经网络处理单元,其中,所述至少一个神经处理单元还被配置为:
对近似乘法运算的一个或多个输出值进行累加;
基于近似乘法运算的输出值和所述累加的输出值执行加法运算。
5.根据权利要求4所述的神经网络处理单元,其中,所述至少一个神经处理单元被配置为:对所述累加的输出值执行随机舍入运算。
6.根据权利要求1所述的神经网络处理单元,其中,所述至少一个神经处理单元被配置为:响应于神经网络处理单元在训练模式下操作而执行近似乘法运算。
7.根据权利要求6所述的神经网络处理单元,还包括:
控制器,被配置为输出用于控制至少一个神经处理单元的模式的控制信号,
其中,所述至少一个神经处理单元被配置为:基于所述控制信号,在以下模式中的一个模式下操作:
执行近似乘法运算的第一模式,
执行一般乘法运算的第二模式。
8.根据权利要求7所述的神经网络处理单元,其中,所述至少一个神经处理单元被配置为:基于所述控制信号,在作为所述神经网络处理单元的推理模式的第二模式下操作。
9.根据权利要求1所述的神经网络处理单元,其中,所述至少一个神经处理单元包括定点型装置。
10.一种片上系统,包括:
一个或多个半导体知识产权核IP;
神经网络处理单元,被配置为从所述一个或多个IP接收输入数据并基于输入数据和多个权重执行神经网络计算,神经网络处理单元包括多个神经处理单元,其中,所述多个神经处理单元中的至少一个神经处理单元被配置为:
接收第一值和第二值并对第一值和第二值执行近似乘法运算,
基于近似乘法运算的输出值执行随机舍入运算,以输出关于近似乘法运算的输出的后激活。
11.根据权利要求10所述的片上系统,其中,
神经网络处理单元还包括:控制器,被配置为控制近似乘法运算,
所述至少一个神经处理单元被配置为:基于控制器的控制,在神经网络处理单元的训练模式下执行近似乘法运算。
12.根据权利要求11所述的片上系统,其中,所述至少一个神经处理单元被配置为:基于控制器的控制,在神经网络处理单元的推理模式下执行一般乘法运算。
13.根据权利要求10所述的片上系统,其中,神经网络处理单元还包括:数据随机存取存储器,被配置为在训练模式下从所述一个或多个IP接收训练数据并存储训练数据。
14.根据权利要求13所述的片上系统,其中,所述至少一个神经处理单元被配置为:
接收从数据随机存取存储器输出的训练数据和所述多个神经处理单元中的一个神经处理单元的输出值,
选择训练数据和输出值之一,
输出训练数据和输出值中的选择的一个作为第一值。
15.根据权利要求10所述的片上系统,其中,第二值包括所述多个权重中的至少一个权重。
16.根据权利要求10所述的片上系统,其中,所述至少一个神经处理单元被配置为:
对近似乘法运算的一个或多个输出值进行累加,
基于近似乘法运算的输出值和所述累加的输出值执行加法运算,
对所述累加的输出值执行随机舍入运算。
17.一种神经网络处理单元,被配置为:在训练模式下,基于训练数据的一个或多个实例和多个权重执行训练操作,所述神经网路处理单元包括:
多个神经处理单元,所述多个神经处理单元中的至少一个神经处理单元被配置为:
在训练模式下,接收第一值和第二值并对第一值和第二值执行近似乘法运算,
基于近似乘法运算的输出值和第三值,执行加法运算,
对近似乘法运算的输出值进行累加,
对基于所述累加输出的累加值执行随机舍入操作,以输出关于累加值的后激活。
18.根据权利要求17所述的神经网络处理单元,其中,
第一值包括训练数据的所述一个或多个实例和所述多个神经处理单元中的一个神经处理单元的输出值中的一个,
第二值包括所述多个权重中的至少一个权重。
19.根据权利要求17所述的神经网络处理单元,其中,第三值包括基于所述累加输出的累加值。
20.根据权利要求17所述神经网络处理单元,其中,训练操作包括定点型训练操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0002776 | 2018-01-09 | ||
KR1020180002776A KR102637735B1 (ko) | 2018-01-09 | 2018-01-09 | 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110020723A true CN110020723A (zh) | 2019-07-16 |
Family
ID=66995591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910018283.5A Pending CN110020723A (zh) | 2018-01-09 | 2019-01-09 | 神经网络处理单元及包括该神经网络处理单元的片上系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190212981A1 (zh) |
KR (1) | KR102637735B1 (zh) |
CN (1) | CN110020723A (zh) |
DE (1) | DE102019100292A1 (zh) |
TW (1) | TWI818944B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035398A (zh) * | 2020-08-25 | 2020-12-04 | 青岛信芯微电子科技股份有限公司 | 一种系统级芯片SoC及适用于SoC的数据处理方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102098713B1 (ko) * | 2018-01-29 | 2020-04-08 | 주식회사 유엑스팩토리 | Cnn과 rnn이 하나의 고성능 저전력 칩으로 집적된 이기종 프로세서 구조 |
US11410040B2 (en) * | 2018-10-23 | 2022-08-09 | Qualcomm Incorporated | Efficient dropout inference for bayesian deep learning |
TWI723634B (zh) * | 2019-10-01 | 2021-04-01 | 創鑫智慧股份有限公司 | 資料處理系統及其資料處理方法 |
US11507702B2 (en) * | 2019-11-05 | 2022-11-22 | Apple Inc. | Secure mode switching in neural processor circuit |
CN111832719A (zh) * | 2020-07-28 | 2020-10-27 | 电子科技大学 | 一种定点量化的卷积神经网络加速器计算电路 |
CN112098845B (zh) * | 2020-08-17 | 2021-08-31 | 四川大学 | 一种用于分布式储能系统的锂电池状态估计方法 |
US11099854B1 (en) * | 2020-10-15 | 2021-08-24 | Gigantor Technologies Inc. | Pipelined operations in neural networks |
US11256981B1 (en) * | 2020-10-15 | 2022-02-22 | Gigantor Technologies Inc. | Unbounded parallel implementation of deep neural networks |
WO2022126630A1 (zh) * | 2020-12-18 | 2022-06-23 | 清华大学 | 可重构处理器及其上多种神经网络激活函数计算方法 |
EP4323864A1 (en) * | 2021-04-15 | 2024-02-21 | Gigantor Technologies Inc. | Pipelined operations in neural networks |
TWI819645B (zh) * | 2022-06-08 | 2023-10-21 | 緯創資通股份有限公司 | 更新神經網路模型的方法和電子裝置 |
KR102607328B1 (ko) * | 2023-02-01 | 2023-11-29 | (주) 한국주택정보 | 소규모 주택의 관리비 정산 방법 및 시스템 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106447036A (zh) * | 2015-10-08 | 2017-02-22 | 上海兆芯集成电路有限公司 | 执行随机舍入的神经网络单元 |
US20170103300A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Tri-configuration neural network unit |
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107533667A (zh) * | 2015-05-21 | 2018-01-02 | 谷歌公司 | 神经网络处理器中的向量计算单元 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7711765B2 (en) * | 2006-02-17 | 2010-05-04 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus to perform multiply-and-accumulate operations |
US9389863B2 (en) * | 2014-02-10 | 2016-07-12 | Via Alliance Semiconductor Co., Ltd. | Processor that performs approximate computing instructions |
US11244225B2 (en) * | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
CN107153522B (zh) * | 2017-04-21 | 2020-10-02 | 东南大学 | 一种面向人工神经网络计算的动态精度可配近似乘法器 |
US10474458B2 (en) * | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US11361215B2 (en) * | 2017-11-29 | 2022-06-14 | Anaflash Inc. | Neural network circuits having non-volatile synapse arrays |
-
2018
- 2018-01-09 KR KR1020180002776A patent/KR102637735B1/ko active IP Right Grant
-
2019
- 2019-01-03 US US16/239,046 patent/US20190212981A1/en active Pending
- 2019-01-08 DE DE102019100292.3A patent/DE102019100292A1/de active Pending
- 2019-01-09 CN CN201910018283.5A patent/CN110020723A/zh active Pending
- 2019-01-09 TW TW108100877A patent/TWI818944B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107533667A (zh) * | 2015-05-21 | 2018-01-02 | 谷歌公司 | 神经网络处理器中的向量计算单元 |
CN106447036A (zh) * | 2015-10-08 | 2017-02-22 | 上海兆芯集成电路有限公司 | 执行随机舍入的神经网络单元 |
US20170103300A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Tri-configuration neural network unit |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035398A (zh) * | 2020-08-25 | 2020-12-04 | 青岛信芯微电子科技股份有限公司 | 一种系统级芯片SoC及适用于SoC的数据处理方法 |
CN112035398B (zh) * | 2020-08-25 | 2023-10-24 | 青岛信芯微电子科技股份有限公司 | 一种系统级芯片SoC及适用于SoC的数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI818944B (zh) | 2023-10-21 |
KR20190084705A (ko) | 2019-07-17 |
KR102637735B1 (ko) | 2024-02-19 |
DE102019100292A1 (de) | 2019-07-11 |
US20190212981A1 (en) | 2019-07-11 |
TW201933194A (zh) | 2019-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110020723A (zh) | 神经网络处理单元及包括该神经网络处理单元的片上系统 | |
DeBole et al. | TrueNorth: Accelerating from zero to 64 million neurons in 10 years | |
Indiveri et al. | Memory and information processing in neuromorphic systems | |
TWI759361B (zh) | 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備 | |
Razlighi et al. | Looknn: Neural network with no multiplication | |
Lyu et al. | Real-time road segmentation using LiDAR data processing on an FPGA | |
US20180164866A1 (en) | Low-power architecture for sparse neural network | |
CN110392903A (zh) | 矩阵操作的动态剔除 | |
WO2017166568A1 (zh) | 一种神经网络加速器及其运算方法 | |
TW201917566A (zh) | 深度視覺處理器 | |
CN106295799B (zh) | 一种深度学习多层神经网络的实现方法 | |
CN112418392A (zh) | 一种神经网络构建方法以及装置 | |
CN111368972B (zh) | 一种卷积层量化方法及其装置 | |
US11816404B2 (en) | Neural network control variates | |
CN110222717A (zh) | 图像处理方法和装置 | |
CN108510065A (zh) | 应用于长短时记忆神经网络的计算装置和计算方法 | |
US11119507B2 (en) | Hardware accelerator for online estimation | |
CN111340190A (zh) | 构建网络结构的方法与装置、及图像生成方法与装置 | |
KR20200026586A (ko) | 2차원 어레이 기반 뉴로모픽 프로세서 및 그 동작 방법 | |
Gankidi | FPGA accelerator architecture for Q-learning and its applications in space exploration rovers | |
Kawashima et al. | FPGA implementation of hardware-oriented chaotic Boltzmann machines | |
CN112446462A (zh) | 目标神经网络模型的生成方法和装置 | |
US20230237342A1 (en) | Adaptive lookahead for planning and learning | |
Liu et al. | Deep neural networks with attention mechanism for monocular depth estimation on embedded devices | |
US20230025626A1 (en) | Method and apparatus for generating process simulation models |
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 |