CN109993285B - 用于执行人工神经网络正向运算的装置和方法 - Google Patents
用于执行人工神经网络正向运算的装置和方法 Download PDFInfo
- Publication number
- CN109993285B CN109993285B CN201910126275.2A CN201910126275A CN109993285B CN 109993285 B CN109993285 B CN 109993285B CN 201910126275 A CN201910126275 A CN 201910126275A CN 109993285 B CN109993285 B CN 109993285B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- neuron
- module
- operation module
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims description 43
- 239000013598 vector Substances 0.000 claims abstract description 84
- 210000004205 output neuron Anatomy 0.000 claims abstract description 40
- 210000002364 input neuron Anatomy 0.000 claims abstract description 35
- 230000003213 activating effect Effects 0.000 claims abstract description 4
- 210000002569 neuron Anatomy 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 22
- 239000000872 buffer Substances 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 12
- 230000004913 activation Effects 0.000 claims description 10
- 238000011176 pooling Methods 0.000 claims description 9
- 239000011159 matrix material Substances 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 7
- 238000011144 upstream manufacturing Methods 0.000 claims description 6
- 238000005070 sampling Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 24
- 238000010586 diagram Methods 0.000 description 9
- 239000002356 single layer Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 101100283966 Pectobacterium carotovorum subsp. carotovorum outN gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000012549 training 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/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/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
-
- 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
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Analysis (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种用于执行人工神经网络正向运算的装置,所述装置包括控制器单元、主运算模块、数据通路模块以及从运算模块,使用该装置可以实现多层人工神经网络的正向运算。对于每一层来说,首先对输入神经元数据进行加权求和计算出本层的中间结果向量,再对该中间结果向量加偏置并激活得到输出神经元数据,并将该输出神经元数据作为下一层的输入神经元数据。
Description
本申请是针对申请号为:201610037645.1(发明创造名称:用于执行人工神经网络正向运算的装置和方法,申请日:2016年1月20日)提出的分案申请。
技术领域
本申请涉及人工神经网络技术领域,特别是涉及一种用于执行人工神经网络正向运算的装置和方法。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
一种支持多层人工神经网络正向运算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的多层人工神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把多层人工神经网络正向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。
另一种支持多层人工神经网络反向训练的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
发明内容
本发明的一个方面提供了一种用于执行人工神经网络正向运算的装置,所述装置包括控制器单元、主运算模块、数据通路模块以及从运算模块;所述控制器单元,用于读取指令,并对所述指令进行译码,得到微指令,所述微指令用于对所述主运算模块、所述数据通路模块或所述从运算模块的行为进行控制;所述主运算模块,用于将输入神经元数据传输至所述数据通路模块;所述数据通路模块,用于将所述输入神经元数据传输至所述从运算模块,以及将所述从运算模块得到的输出神经元数据拼成中间结果向量;所述主运算模块,还用于根据所述中间结果向量进行后续处理。
本发明的另一个方面提供了一种使用上述装置执行单层人工神经网络正向运算的方法。
本发明的另一方面提供了一种使用上述装置执行多层人工神经网络正向运算的方法。
附图说明
图1示出了根据本发明实施例的用于执行人工神经网络正向运算的装置的整体结构的示例框图;
图2示意性示出了根据本发明实施例的用于执行人工神经网络正向运算的装置中H树模块数据通路模块的结构;
图3示出了根据本发明实施例的用于执行人工神经网络正向运算的装置中主运算模块结构的示例框图;
图4示出了根据本发明实施例的用于执行人工神经网络正向运算的装置中从运算模块结构的示例框图;
图5示出了根据本发明实施例的神经网络正向运算过程的示例框图;
图6示出了根据本发明实施例的单层人工神经网络运算的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
根据本发明实施例的多层人工神经网络的正向运算,包括两层或者两层以上的多个神经元。对于每一层来说,输入神经元向量首先和权值向量进行点积运算,结果经过激活函数得到输出神经元。其中激活函数可以是sigmoid函数,tanh、relu、softmax函数等。
图1示出了根据本发明实施例的用于执行人工神经网络正向运算的装置的整体结构的示例框图。如图1所示,该装置包括指令缓存单元1、控制器单元2、直接内存访问单元3、H树模块4、主运算模块5和多个从运算模块6。指令缓存单元1、控制器单元2、直接内存访问单元3、H树模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如专用集成电路ASIC)实现。
指令缓存单元1通过直接内存访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如直接内存访问单元3、主运算模块5和从运算模块6等。
直接内存访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。
图2示意性示出了H树模块4的结构。H树模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在每层人工神经网络开始计算阶段,主运算模块5内的神经元数据通过H树模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,当从运算模块的计算过程完成后,每个从运算模块输出的神经元的值会在H树中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。以神经网络全连接层进行说明,假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过H树模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算单元只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算单元需输出m个神经元值。
图3示出了根据本发明实施例的用于执行人工神经网络正向运算的装置中主运算模块5的结构的示例框图。如图3所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和神经元缓存单元53。
神经元缓存单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据,运算单元51完成主运算模块5的各种运算功能,数据依赖关系判断单元52是运算单元51读写神经元缓存单元53的端口,同时能够保证神经元缓存单元中数据的读写一致性。同时,数据依赖关系判断单元52也负责将读取数据通过H树模块4发送给从计算模块,而从计算模块6的输出数据通过H树模块4直接发送给运算单元51。控制器单元2输出的指令发送给计算单元51和数据依赖关系判断单元52,来控制其行为。
图4示出了根据本发明实施例的用于执行人工神经网络正向运算的装置中从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括运算单元61、数据依赖关系判定单元62、神经元缓存单元63和权值缓存单元64。
运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。
数据依赖关系判断单元62负责计算过程中对神经元缓存单元的读写操作。数据依赖关系判断单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
神经元缓存单元63缓存该从运算模块6的输入神经元向量数据和输出神经元值数据。
权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。对于每一个从运算模块6,都只会存储全部输入神经元与部分输出神经元之间的权值。以全连接层为例,输出神经元按照从运算单元的个数N进行分段,每段的第n个输出神经元对应的权值存放在第n个从运算单元中。
从运算模块6实现每层人工神经网络正向运算过程中可以并行的前半部分。以人工神经网络全连接层(MLP)为例,过程为y=f(wx+b),其中权值矩阵w和输入神经元向量x的乘法可以划分为不相关的并行计算子任务,out与in是列向量,每个从运算模块6只计算in中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在H树模块4中逐级两两相加得到最后的结果。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出神经元值,所有的输出神经元值在H树模块4中拼成得到中间结果向量。每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元值即可。H树模块4对所有从运算模块6输出的神经元值求和,得到最终的中间结果向量y。主运算模块5基于中间结果向量y进行后续计算,比如加偏置、池化(例如最大值池化(MAXPOOLING)或平均值池化(AVGPOOLING)等)、做激活和做采样等。
根据本发明实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令缓存单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
图5示出了根据本发明实施例的神经网络正向运算过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出神经元向量、in是输入神经元向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。H树模块将输入神经元向量[in0,…,inN]发送给所有的从运算单元,暂存在神经元缓存单元中。对于第i个从运算单元,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。从运算单元输出的结果经过H树模块拼成完整的输出向量并返回给主运算单元,在主运算单元中进行激活运算,得到最后的输出神经元向量[out0,out1,out2,…,outN]。
图5是示出根据一个实施例的单层人工神经网络正向运算流程图。该流程图描述利用本发明的装置和指令集实现图4所示的一种单层神经网络正向运算的过程。
在步骤S1,在指令缓存单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令缓存单元1的首地址读取该条IO指令,根据译出的微指令,直接内存访问单元3从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令缓存单元1中。
在步骤S3,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译出的微指令,直接内存访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5的神经元缓存单元53。
在步骤S4,控制器单元2接着从指令缓存单元读入下一条IO指令,根据译出的微指令,直接内存访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据。
在步骤S5,控制器单元2接着从指令缓存单元读入下一条CONFIG指令,根据译出的微指令,装置配置该层神经网络计算需要的各种常数。例如,运算单元51、61根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位,Lrn层算法的rang参数,AveragePooling层算法窗口大小的倒数等)
在步骤S6,控制器单元2接着从指令缓存单元读入下一条COMPUTE指令,根据译出的微指令,主运算模块5首先通过H树模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的神经元缓存单元63。
在步骤S7,根据COMPUTE指令译出的微指令,从运算模块6的运算单元61从权值缓存单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从神经元缓存单元读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过H树返回。
在步骤S8,在H树模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S9,主运算模块5得到H树模块4的返回值,根据COMPUTE指令译出的微指令,从神经元缓存单元53读取偏置向量,与H树模块4返回的向量相加,然后再对相加结果做激活,并将最后的输出神经元向量写回至神经元缓存单元53。
在步骤S10,控制器单元接着从指令缓存单元读入下一条IO指令,根据译出的微指令,直接内存访问单元3将神经元缓存单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
对于多层人工神经网络,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。
通过采用针对多层人工神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种用于执行人工神经网络正向运算的装置,其特征在于,所述装置包括控制器单元、主运算模块、数据通路模块以及从运算模块,所述从运算模块的数量为多个;
所述控制器单元,用于读取指令,并对所述指令进行译码,得到微指令,所述微指令用于对所述主运算模块、所述数据通路模块或所述从运算模块的行为进行控制;
所述主运算模块,用于将输入神经元数据传输至所述数据通路模块;
所述数据通路模块,用于将所述输入神经元数据传输至所述多个从运算模块;
所述多个从运算模块,用于根据相同的所述输入神经元数据以及各所述从运算模块所对应的不同的权值向量,并行计算出各所述从运算模块对应的输出神经元数据;
所述数据通路模块,还用于将所述从运算模块得到的输出神经元数据拼成中间结果向量,并将所述中间结果向量发送至所述主运算模块;
所述主运算模块,还用于根据所述中间结果向量进行后续处理;
所述主运算模块包括第一神经元缓存单元、第一运算单元以及第一数据依赖关系判断单元;
所述第一神经元缓存单元,用于缓存所述主运算模块在计算过程中用到的输入数据和输出数据;
所述第一运算单元,用于完成所述主运算模块的各种运算功能;
所述第一数据依赖关系判断单元包括所述第一运算单元读写所述第一神经元缓存单元的端口,用于保证对所述第一神经元缓存单元中数据读写不存在一致性冲突。
2.根据权利要求1所述的装置,其特征在于,所述从运算模块对应的权值向量包括权值矩阵中与所述从运算模块相对应的列向量。
3.根据权利要求1所述的装置,其特征在于,所述数据通路模块包括多个节点构成的二叉树通路,每个节点将上游节点的数据发送至下游的两个节点,以及将所述下游的两个节点返回的数据进行合并,并将合并结果返回给所述上游节点。
4.根据权利要求1所述的装置,其特征在于,所述装置还包括指令缓存单元,所述指令缓存单元用于缓存所述指令;
所述输入神经元数据包括输入神经元向量,和/或所述输出神经元数据包括输出神经元向量。
5.根据权利要求1-4任一所述的装置,其特征在于,所述主运算模块根据所述中间结果向量进行后续处理,包括以下操作的一种或多种:
加偏置操作,所述加偏置操作包括在所述中间结果向量上加上偏置;
激活操作,所述激活操作包括根据激活函数对所述中间结果向量进行激活;
采样操作,所述采样操作包括将所述中间结果向量与随机数进行比较;若所述中间结果向量大于随机数,则输出1;若所述中间结果向量小于随机数,则输出0;
池化操作,所述池化操作包括最大值池化或平均值池化。
6.根据权利要求1所述的装置,其特征在于,所述从运算模块包括第二神经元缓存单元、权值缓存单元、第二运算单元以及第二数据依赖关系判断单元;
所述第二神经元缓存单元,用于缓存所述输入神经元数据以及所述从运算模块计算得到的输出神经元数据;
所述权值缓存单元,用于缓存所述从运算模块在计算过程中需要的权值向量;
所述第二运算单元,用于接收所述控制器单元发送的所述微指令,并根据所述微指令进行算数逻辑运算;
所述第二数据依赖关系判断单元,用于对所述第二神经元缓存单元和所述权值缓存单元的读写操作,保证对所述第二神经元缓存单元和所述权值缓存单元的读写不存在一致性冲突;
所述第二运算单元,具体用于计算所述从运算模块对应的权值向量与输入神经元数据的点积得到输出神经元数据,将所述输出神经元数据发送至所述数据通路模块的下游节点;
所述数据通路模块,用于将两个所述下游节点的两个输出神经元数据进行合并,并将合并结果发送至上一级节点,通过逐级合并各所述从运算模块的输出神经元数据得到所述中间结果向量。
7.根据权利要求6所述的装置,其特征在于,所述第一数据依赖关系判断单元用于保证对所述第一神经元缓存单元中数据读写不存在一致性冲突,包括:
判断未执行的微指令对应的第一数据与正在执行过程中的微指令对应的第二数据之间是否存在依赖关系;若所述第一数据与所述第二数据之间不存在依赖关系,则允许所述未执行的微指令立即执行;若所述第一数据与所述第二数据之间存在依赖关系,则在与所述未执行的微指令存在依赖关系的所有微指令全部执行完成后,允许所述未执行的微指令执行;
和/或,所述第二数据依赖关系判断单元用于保证对所述第二神经元缓存单元和所述权值缓存单元的读写不存在一致性冲突,包括:
判断未执行的微指令对应的第一数据与正在执行过程中的微指令对应的第二数据之间是否存在依赖关系;若所述第一数据与所述第二数据之间不存在依赖关系,则允许所述未执行的微指令立即执行;若所述第一数据与所述第二数据之间存在依赖关系,则在与所述未执行的微指令存在依赖关系的所有微指令全部执行完成后,允许所述未执行的微指令执行。
8.一种执行人工神经网络正向运算的方法,其特征在于,所述方法应用于执行人工神经网络正向运算的装置,所述装置包括控制器单元、主运算模块、数据通路模块以及从运算模块,所述从运算模块的数量为多个;所述方法包括:
所述控制器单元读取指令,并对所述指令进行译码,得到控制所述主运算模块、所述数据通路模块以及所述从运算模块行为的微指令;
所述主运算模块将输入神经元数据传输至所述数据通路模块;
所述数据通路模块将所述输入神经元数据传输至所述多个从运算模块;
所述多个从运算模块根据相同的所述输入神经元数据以及各所述从运算模块所对应的不同的权值向量,并行计算出各所述从运算模块对应的输出神经元数据;
所述数据通路模块将所述从运算模块得到的输出神经元数据拼成中间结果向量,并将所述中间结果向量发送至所述主运算模块;
所述主运算模块根据所述中间结果向量进行后续处理;
所述主运算模块包括第一神经元缓存单元、第一运算单元以及第一数据依赖关系判断单元;
所述第一神经元缓存单元缓存所述主运算模块在计算过程中用到的输入数据和输出数据;
所述第一运算单元完成所述主运算模块的各种运算功能;
所述第一数据依赖关系判断单元保证对所述第一神经元缓存单元中数据读写不存在一致性冲突。
9.根据权利要求8所述的方法,其特征在于,所述从运算模块对应的权值向量包括权值矩阵中与所述从运算模块相对应的列向量。
10.根据权利要求8所述的方法,其特征在于,所述数据通路模块包括多个节点构成的二叉树通路,每个节点将上游节点的数据发送至下游的两个节点,以及将所述下游的两个节点返回的数据进行合并,并将合并结果返回给所述上游节点。
11.根据权利要求8所述的方法,其特征在于,所述装置还包括指令缓存单元;所述指令缓存单元缓存所述指令;
所述输入神经元数据包括输入神经元向量,和/或所述输出神经元数据包括输出神经元向量。
12.根据权利要求8-11任一所述的方法,其特征在于,所述主运算模块根据所述中间结果向量进行后续处理,包括以下操作的一种或多种:
加偏置操作,所述加偏置操作包括在所述中间结果向量上加上偏置;
激活操作,所述激活操作包括根据激活函数对所述中间结果向量进行激活;
采样操作,所述采样操作包括将所述中间结果向量与随机数进行比较;若所述中间结果向量大于随机数,则输出1;若所述中间结果向量小于随机数,则输出0;
池化操作,所述池化操作包括最大值池化或平均值池化。
13.根据权利要求8所述的方法,其特征在于,所述从运算模块包括第二神经元缓存单元、权值缓存单元、第二运算单元以及第二数据依赖关系判断单元;
所述第二神经元缓存单元缓存所述输入神经元数据以及所述从运算模块计算得到的输出神经元数据;
所述权值缓存单元缓存所述从运算模块在计算过程中需要的权值向量;
所述第二运算单元接收所述控制器单元发送的所述微指令,并根据所述微指令进行算数逻辑运算;
所述第二数据依赖关系判断单元对所述第二神经元缓存单元和所述权值缓存单元的读写操作,保证对所述第二神经元缓存单元和所述权值缓存单元的读写不存在一致性冲突;
所述数据通路模块将所述输入神经元数据传输至所述从运算模块,以及将所述从运算模块得到的输出神经元数据拼成中间结果向量,包括:
所述第二运算单元计算所述从运算模块对应的权值向量与输入神经元数据的点积得到输出神经元数据,将所述输出神经元数据发送至所述数据通路模块的下游节点;
所述数据通路模块将两个所述下游节点的两个输出神经元数据进行合并,并将合并结果发送至上一级节点,通过逐级合并各所述从运算模块的输出神经元数据得到所述中间结果向量。
14.根据权利要求13所述的方法,其特征在于,所述第一数据依赖关系判断单元保证对所述第一神经元缓存单元中数据读写不存在一致性冲突,包括:
判断未执行的微指令对应的第一数据与正在执行过程中的微指令对应的第二数据之间是否存在依赖关系;若所述第一数据与所述第二数据之间不存在依赖关系,则允许所述未执行的微指令立即执行;若所述第一数据与所述第二数据之间存在依赖关系,则在与所述未执行的微指令存在依赖关系的所有微指令全部执行完成后,允许所述未执行的微指令执行;
和/或,所述第二数据依赖关系判断单元保证对所述第二神经元缓存单元和所述权值缓存单元的读写不存在一致性冲突,包括:
判断未执行的微指令对应的第一数据与正在执行过程中的微指令对应的第二数据之间是否存在依赖关系;若所述第一数据与所述第二数据之间不存在依赖关系,则允许所述未执行的微指令立即执行;若所述第一数据与所述第二数据之间存在依赖关系,则在与所述未执行的微指令存在依赖关系的所有微指令全部执行完成后,允许所述未执行的微指令执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910126275.2A CN109993285B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610037645.1A CN106991476B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN201910126275.2A CN109993285B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610037645.1A Division CN106991476B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109993285A CN109993285A (zh) | 2019-07-09 |
CN109993285B true CN109993285B (zh) | 2020-02-07 |
Family
ID=59361382
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910126275.2A Active CN109993285B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN201811233424.7A Active CN109242094B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN202010150326.8A Active CN111340200B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN201610037645.1A Active CN106991476B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN202010252730.6A Active CN111353589B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811233424.7A Active CN109242094B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN202010150326.8A Active CN111340200B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN201610037645.1A Active CN106991476B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN202010252730.6A Active CN111353589B (zh) | 2016-01-20 | 2016-01-20 | 用于执行人工神经网络正向运算的装置和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10410112B2 (zh) |
EP (2) | EP3407265B1 (zh) |
KR (2) | KR102203746B1 (zh) |
CN (5) | CN109993285B (zh) |
WO (1) | WO2017124642A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993285B (zh) * | 2016-01-20 | 2020-02-07 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN106991478B (zh) * | 2016-01-20 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
CN111860811B (zh) * | 2016-04-27 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行人工神经网络全连接层正向运算的装置和方法 |
EP3451239A4 (en) * | 2016-04-29 | 2020-01-01 | Cambricon Technologies Corporation Limited | APPARATUS AND METHOD FOR PERFORMING RECURRENT NEURONAL NETWORK AND LTSM CALCULATIONS |
CN111860815A (zh) | 2017-08-31 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种卷积运算方法及装置 |
CN107748914A (zh) * | 2017-10-19 | 2018-03-02 | 珠海格力电器股份有限公司 | 人工神经网络运算电路 |
CN108874445A (zh) * | 2017-10-30 | 2018-11-23 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量点积指令的方法 |
CN109726807B (zh) * | 2017-10-31 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 神经网络处理器、运算方法及存储介质 |
TW201926147A (zh) * | 2017-12-01 | 2019-07-01 | 阿比特電子科技有限公司 | 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 |
CN109961138B (zh) * | 2017-12-14 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 神经网络训练方法及相关产品 |
WO2019114842A1 (zh) | 2017-12-14 | 2019-06-20 | 北京中科寒武纪科技有限公司 | 一种集成电路芯片装置 |
CN110097181B (zh) * | 2018-01-30 | 2023-07-11 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN110163360B (zh) * | 2018-02-13 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110472734B (zh) * | 2018-05-11 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
US11663461B2 (en) | 2018-07-05 | 2023-05-30 | International Business Machines Corporation | Instruction distribution in an array of neural network cores |
US12057109B2 (en) | 2018-09-13 | 2024-08-06 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
US20220004854A1 (en) * | 2018-10-08 | 2022-01-06 | Deeper-I Co., Inc. | Artificial neural network computation acceleration apparatus for distributed processing, artificial neural network acceleration system using same, and artificial neural network acceleration method therefor |
CN111079925B (zh) * | 2018-10-19 | 2021-04-09 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
KR20210157636A (ko) * | 2020-06-22 | 2021-12-29 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012893A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算簇 |
CN102426293A (zh) * | 2011-09-08 | 2012-04-25 | 天津理工大学 | 基于神经网络最小方均根的apf谐波检测系统及检测方法 |
US8442825B1 (en) * | 2011-08-16 | 2013-05-14 | The United States Of America As Represented By The Director, National Security Agency | Biomimetic voice identifier |
CN104297504A (zh) * | 2014-10-22 | 2015-01-21 | 上海申腾信息技术有限公司 | 一种自动化气相色谱控制系统 |
CN104376262A (zh) * | 2014-12-08 | 2015-02-25 | 中国科学院深圳先进技术研究院 | 一种基于Dalvik指令和权限组合的安卓恶意软件检测方法 |
US9222348B2 (en) * | 2011-08-05 | 2015-12-29 | Halliburton Energy Services, Inc. | Methods for monitoring the formation and transport of an acidizing fluid using opticoanalytical devices |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9205587D0 (en) * | 1992-03-13 | 1992-04-29 | Pilkington Micro Electronics | Improved artificial digital neuron,neuron network and network algorithm |
JPH06195322A (ja) * | 1992-10-29 | 1994-07-15 | Hitachi Ltd | 汎用型ニューロコンピュータとして用いられる情報処理装置 |
JP3172352B2 (ja) * | 1993-12-27 | 2001-06-04 | 松下電器産業株式会社 | ニューラルネットワーク回路 |
JPH0934858A (ja) * | 1995-07-14 | 1997-02-07 | Hitachi Ltd | 人工ニューロン |
JPH09101944A (ja) * | 1995-10-06 | 1997-04-15 | Nippon Telegr & Teleph Corp <Ntt> | ニューラルネットワーク回路 |
GB9902115D0 (en) * | 1999-02-01 | 1999-03-24 | Axeon Limited | Neural networks |
CN1516070A (zh) * | 2003-01-08 | 2004-07-28 | 剑 王 | 一种联想记忆神经网络 |
US7747070B2 (en) * | 2005-08-31 | 2010-06-29 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
AU2015207873B2 (en) * | 2005-11-15 | 2017-05-04 | Bernadette Garner | Method for training neural networks |
CN101527010B (zh) * | 2008-03-06 | 2011-12-07 | 上海理工大学 | 人工神经网络算法的硬件实现方法及其系统 |
US20100312736A1 (en) * | 2009-06-05 | 2010-12-09 | The Regents Of The University Of California | Critical Branching Neural Computation Apparatus and Methods |
CN101639901A (zh) * | 2009-09-03 | 2010-02-03 | 王连明 | 基于多核技术的前馈神经网络硬件实现方法 |
US8515885B2 (en) * | 2010-10-29 | 2013-08-20 | International Business Machines Corporation | Neuromorphic and synaptronic spiking neural network with synaptic weights learned using simulation |
CN201927073U (zh) * | 2010-11-25 | 2011-08-10 | 福建师范大学 | 一种可编程硬件bp神经元处理器 |
CN102004446A (zh) * | 2010-11-25 | 2011-04-06 | 福建师范大学 | 具有多层结构的bp神经元自适应方法 |
US9092729B2 (en) * | 2011-08-11 | 2015-07-28 | Greenray Industries, Inc. | Trim effect compensation using an artificial neural network |
KR20130090147A (ko) * | 2012-02-03 | 2013-08-13 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
CN102866982A (zh) * | 2012-09-14 | 2013-01-09 | 复旦大学 | 基于fpga的8位复杂指令集中央处理器 |
CN103971163B (zh) * | 2014-05-09 | 2017-02-15 | 哈尔滨工程大学 | 一种基于归一化最小均方自适应滤波的自适应学习率小波神经网络控制方法 |
CN104036451B (zh) * | 2014-06-20 | 2018-12-11 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104463324A (zh) * | 2014-11-21 | 2015-03-25 | 长沙马沙电子科技有限公司 | 一种基于大规模高性能集群的卷积神经网络并行处理方法 |
CN104612898B (zh) * | 2014-11-27 | 2017-09-08 | 江苏科技大学 | 一种风电变桨距多变量模糊神经网络pid控制方法 |
CN105095966B (zh) * | 2015-07-16 | 2018-08-21 | 北京灵汐科技有限公司 | 人工神经网络和脉冲神经网络的混合计算系统 |
CN105095967B (zh) * | 2015-07-16 | 2018-02-16 | 清华大学 | 一种多模态神经形态网络核 |
CN105184366B (zh) * | 2015-09-15 | 2018-01-09 | 中国科学院计算技术研究所 | 一种时分复用的通用神经网络处理器 |
CN109993285B (zh) * | 2016-01-20 | 2020-02-07 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
-
2016
- 2016-01-20 CN CN201910126275.2A patent/CN109993285B/zh active Active
- 2016-01-20 CN CN201811233424.7A patent/CN109242094B/zh active Active
- 2016-01-20 CN CN202010150326.8A patent/CN111340200B/zh active Active
- 2016-01-20 CN CN201610037645.1A patent/CN106991476B/zh active Active
- 2016-01-20 CN CN202010252730.6A patent/CN111353589B/zh active Active
- 2016-04-01 KR KR1020187015434A patent/KR102203746B1/ko active IP Right Grant
- 2016-04-01 EP EP16885906.4A patent/EP3407265B1/en active Active
- 2016-04-01 KR KR1020207034359A patent/KR102331978B1/ko active IP Right Grant
- 2016-04-01 WO PCT/CN2016/078281 patent/WO2017124642A1/zh unknown
- 2016-04-01 EP EP21202782.5A patent/EP3971789B1/en active Active
-
2018
- 2018-07-19 US US16/039,567 patent/US10410112B2/en active Active
-
2019
- 2019-06-14 US US16/441,025 patent/US10860917B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012893A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算簇 |
US9222348B2 (en) * | 2011-08-05 | 2015-12-29 | Halliburton Energy Services, Inc. | Methods for monitoring the formation and transport of an acidizing fluid using opticoanalytical devices |
US8442825B1 (en) * | 2011-08-16 | 2013-05-14 | The United States Of America As Represented By The Director, National Security Agency | Biomimetic voice identifier |
CN102426293A (zh) * | 2011-09-08 | 2012-04-25 | 天津理工大学 | 基于神经网络最小方均根的apf谐波检测系统及检测方法 |
CN104297504A (zh) * | 2014-10-22 | 2015-01-21 | 上海申腾信息技术有限公司 | 一种自动化气相色谱控制系统 |
CN104376262A (zh) * | 2014-12-08 | 2015-02-25 | 中国科学院深圳先进技术研究院 | 一种基于Dalvik指令和权限组合的安卓恶意软件检测方法 |
Non-Patent Citations (1)
Title |
---|
DaDianNao: A Machine-Learning Supercomputer;Yunji Chen等;《2014 47th Annual IEEE/ACM International Symposium on Microarchitecture》;20141231;第609-622页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109993285A (zh) | 2019-07-09 |
CN106991476B (zh) | 2020-04-10 |
KR20200136514A (ko) | 2020-12-07 |
EP3971789A1 (en) | 2022-03-23 |
CN111340200A (zh) | 2020-06-26 |
US20190294951A1 (en) | 2019-09-26 |
CN111353589B (zh) | 2024-03-01 |
EP3407265B1 (en) | 2021-11-10 |
CN111353589A (zh) | 2020-06-30 |
CN109242094A (zh) | 2019-01-18 |
CN111340200B (zh) | 2024-05-03 |
US10860917B2 (en) | 2020-12-08 |
KR102203746B1 (ko) | 2021-01-15 |
CN106991476A (zh) | 2017-07-28 |
KR102331978B1 (ko) | 2021-12-01 |
EP3407265A1 (en) | 2018-11-28 |
KR20180102059A (ko) | 2018-09-14 |
EP3971789C0 (en) | 2024-05-29 |
EP3407265A4 (en) | 2019-09-04 |
US20180322381A1 (en) | 2018-11-08 |
CN109242094B (zh) | 2020-05-08 |
US10410112B2 (en) | 2019-09-10 |
EP3971789B1 (en) | 2024-05-29 |
WO2017124642A1 (zh) | 2017-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109993285B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN110135581B (zh) | 用于执行人工神经网络反向运算的装置和方法 | |
CN111860812B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN109375951B (zh) | 一种用于执行全连接层神经网络正向运算的装置和方法 | |
CA3051990C (en) | Accelerated deep learning | |
CN107729990B (zh) | 支持离散数据表示的用于执行正向运算的装置及方法 | |
CN109284825B (zh) | 用于执行lstm运算的装置和方法 | |
WO2017185386A1 (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
WO2017185347A1 (zh) | 用于执行循环神经网络和lstm运算的装置和方法 | |
JP7387017B2 (ja) | アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム | |
CN109993276B (zh) | 用于执行人工神经网络反向训练的装置和方法 | |
CN110097181A (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 | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |