CN111164617B - 具有交叉连接优化的脉动神经网络引擎 - Google Patents
具有交叉连接优化的脉动神经网络引擎 Download PDFInfo
- Publication number
- CN111164617B CN111164617B CN201880063946.9A CN201880063946A CN111164617B CN 111164617 B CN111164617 B CN 111164617B CN 201880063946 A CN201880063946 A CN 201880063946A CN 111164617 B CN111164617 B CN 111164617B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- arrangement
- data
- neural network
- processing
- 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 399
- 238000005457 optimization Methods 0.000 title description 3
- 238000012545 processing Methods 0.000 claims abstract description 588
- 238000000034 method Methods 0.000 claims description 225
- 230000004913 activation Effects 0.000 claims description 164
- 230000015654 memory Effects 0.000 claims description 130
- 238000004364 calculation method Methods 0.000 claims description 77
- 230000008569 process Effects 0.000 claims description 65
- 239000003550 marker Substances 0.000 claims description 10
- 238000003672 processing method Methods 0.000 abstract description 2
- 239000010410 layer Substances 0.000 description 335
- 230000000541 pulsatile effect Effects 0.000 description 77
- 230000006870 function Effects 0.000 description 56
- 238000012549 training Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 22
- 238000012546 transfer Methods 0.000 description 17
- 230000008901 benefit Effects 0.000 description 12
- 230000010349 pulsation Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 11
- 238000003491 array Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 238000007792 addition Methods 0.000 description 8
- 239000007787 solid Substances 0.000 description 8
- 230000000644 propagated effect Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 239000000758 substrate Substances 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 239000002356 single layer Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 239000011229 interlayer Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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
-
- 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
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Multi Processors (AREA)
Abstract
公开了一种计算机处理方法,包括在神经网络的处理节点接收数据分组,在处理节点进行数据分组的计算以创建经处理的数据分组,将标记附加到经处理的数据分组,在脉动脉冲期间将经处理的数据分组从处理节点发送到接收节点,在接收节点接收经处理的数据分组,对经处理的数据分组进行顺时针卷积并对经处理的数据分组进行逆时针卷积,进行加法函数并将进行的sigmoid函数的结果后向传播到最初处理数据分组的每个处理节点。
Description
相关申请的交叉引用
本申请要求2018年5月16提交的美国专利申请No.15/981,679的权益,该美国专利申请要求2018年2月8日提交的美国专利申请No.62/628,076和2018年2月8日提交的美国专利申请No.62/627,957的权益,这些美国专利申请的全部公开内容通过引用合并于此。
技术领域
本文公开的系统和方法涉及计算机处理器,更特别地,涉及能够进行前向传播和后向传播的脉动机器学习处理器。
背景技术
计算机学习模型可以处理大量数据。例如,模型可以实现为人工神经网络。人工神经网络在这种意义上是人工的,它们是受生物神经网络启发但被修改以由计算装置实现的计算实体。人工神经网络能够在称为训练的过程期间改变其结构,在此过程中,网络暴露于成对的输入数据和预期输出,并对其内部参数进行调整,以便在提供对应的输入时能够预测预期的输出。一旦经过训练,神经网络就可以用于推断(inference),即通过提供新的输入数据来预测对应的输出。
可以在称为训练的过程中设置神经网络的参数。例如,可以使用训练数据对神经网络进行训练,该训练数据包括输入数据以及对应的输入数据的模型的正确或优选输出。可以通过使用输入矩阵而不是单个输入向量同时处理单独输入向量的集合(“迷你批次(mini-batch)”),这可以加快训练速度。神经网络可以重复处理输入数据,并且可以修改神经网络的参数(例如权重矩阵),这相当于试错过程,直到模型产生(或“收敛”到)正确或优选的输出为止。权重值的修改可以通过被称为“后向传播”的过程来进行。后向传播包括确定预期模型输出与获得的模型输出之间的差异,然后确定如何修改模型的一些或全部参数的值以减小预期模型输出与获得的模型输出之间的差异。
附图说明
在所有附图中,附图标记可以被重复使用以指示引用的元件之间的对应关系。提供附图是为了说明本文描述的示例实施例,而无意于限制本公开的范围。
图1是根据一些实施例的人工神经网络的示意图。
图2绘示了根据一些实施例的由图1的神经网络的节点进行的示例计算。
图3是根据一些实施例的如本文所述的脉动神经网络引擎的实施例的框图。
图4A-4C绘示了根据一些实施例的通过图3的脉动神经网络引擎的脉动脉冲的实施例,脉动脉冲对应于通过图1的神经网络的隐藏层的节点的数据。
图5是根据一些实施例的配置为用于进行顺时针和逆时针卷积的图3的脉动神经网络引擎的DPU的图示。
图6A绘示了根据一些实施例的通过神经网络的后向传播。
图6B至6E绘示了根据一些实施例的表示由图3的脉动神经网络引擎实现的前向传播和后向传播的图示。
图6F示出了基于批次的后向传播的图示。
图7是根据一些实施例的在通过图3的脉动神经网络引擎的后向传播期间使用的标记的图示。
图8A是根据一些实施例的通过图3的脉动神经网络引擎的后向传播的另一图示。
图8B示出了根据一些实施例的通过图3的脉动神经网络引擎的前向和后向传播的流程图。
图9是根据一些实施例的由图3的脉动神经网络引擎的DPU在前向传播期间针对顺时针和逆时针卷积进行的计算的示意图。
图10是根据一些实施例的针对图3的脉动神经网络引擎的DPU的后向传播中的累加求和的图示。
图11A是根据一些实施例的在Time=0时根据示例实施例的通过图3的脉动神经网络引擎的一部分在前向传播期间的数据分组处理的图示。
图11B是根据一些实施例的在Time=1时的数据分组处理的图示。
图11C是根据一些实施例的在Time=2时根据示例实施例的前向传播中的数据分组处理的图示。
图11D是根据一些实施例的在Time=3时根据示例实施例的前向传播中的数据分组处理的图示。
图11E是根据一些实施例的在Time=4时根据示例实施例的前向传播中的数据分组处理的图示。
图11F是根据一些实施例的在Time=5时根据示例实施例的前向传播中的数据分组处理的图示。
图11G绘示了根据一些实施例的根据示例实施例的用于以脉动性质处理数据分组的脉动神经网络引擎的流程图。
图11H绘示了根据一些实施例的根据示例实施例的用于进行基于反馈的卷积引擎的脉动神经网络引擎的流程图。
图12是根据一些实施例的具有激活输入和激活输出的脉动流引擎核心的图示。
图13是根据一些实施例的具有单个输入布置的脉动流引擎接口系统的图示。
图14是根据一些实施例的具有激活输入、激活输出、偏差输入和偏差输出的脉动流引擎的图示。
图15是根据一些实施例的具有多个连接的脉动流引擎和接口系统的图示。
图16是根据一些实施例的在硬盘驱动器中使用的脉动流引擎的图示。
图17是根据一些实施例的在固态驱动器中使用的脉动流引擎的图示。
图18是根据一些实施例的在具有卡接口的固态驱动器中使用的脉动流引擎的图示。
图19是根据一些实施例的在存储级存储器中使用的脉动流引擎的图示。
图20和图20(续-)绘示了根据一些实施例的多核心脉动流引擎的实施例。
图21示出了根据一些实施例的裸芯中的层的重新目的化的流程图。
图22示出了根据一些实施例的为脉动神经网络引擎实现多个裸芯的流程图。
图23示出了根据一些实施例的为具有反馈回路的脉动神经网络引擎实现多个裸芯的流程图。
具体实施方式
本公开的系统、方法和装置各自具有若干创新方面,其中没有一个单独地对本文公开的所有期望属性负责。
一些实施例包括用于进行神经网络的计算的装置,该神经网络包括至少第一层和第二层,该装置包括:配置为进行神经网络的第一层的第一节点的计算的第一处理单元,该第一处理单元包括:第一输入脉动元件、配置为从第一输入脉动元件接收数据并根据第一节点进行处理以生成第一激活输出的第一处理电路;以及配置为从第一处理电路接收第一激活输出的第一输出脉动元件;以及配置为进行神经网络的第二层的第二节点的计算的第二处理单元,其中第二处理单元包括第二输入脉动元件,其中第一输出脉动元件还配置为向第二输入脉动元件脉动地脉冲第一激活输出。
在任一前述段落的装置和/或本文所公开的任一装置还可以包括第三处理单元,其配置为进行神经网络的第一层的第三节点的计算,第三处理单元包括第二输出脉动元件,其中第一输出脉动元件在第一脉动脉冲期间向第二输入脉动元件脉动地脉冲第一激活输出,且其中第一输出脉动元件还配置为在第一脉动脉冲期间向第二输出脉动元件脉动地脉冲第一激活输出。
在任一前述段落的装置和/或本文所公开的任一装置中,第二输出脉动元件还可以配置为在第一脉动脉冲期间向第一输出脉动元件脉动地脉冲第二激活输出。
在任一前述段落的装置和/或本文所公开的任一装置还可以包括第三处理单元,其配置为进行神经网络的第二层的第三节点的计算,第三处理单元包括第三输入脉动元件,其中第二输出脉动元件配置为向第三输入脉动元件脉动地脉冲第一激活输出。
在任一前述段落的装置和/或本文所公开的任一装置当可以包括包含第一处理单元的第一多个处理单元的第一布置,其中第一多个处理单元的至少子组配置为进行神经网络的第一层的对应数量的节点的计算;包含第二处理单元的第二多个处理单元的第二布置,其中第二多个处理单元的至少子组配置为进行神经网络的第二层的对应数量的节点的计算;以及第一多个处理单元中一个的输出脉动元件与第二多个处理单元中的一个的输入脉动元件之间的交叉连接。
在任一前述段落的装置和/或本文所公开的任一装置当可以包括脉动处理器芯片,且其中第一和第二处理单元包括嵌入脉动处理器芯片的电路。
在任一前述段落的装置和/或本文所公开的任一装置中,第一输出脉动元件还可以配置为用标识符标记第一激活输出,其中标识符标识第一激活输出被第一处理单元计算出。
在任一前述段落的装置和/或本文所公开的任一装置中,脉动地脉冲到第二输入脉动元件的第一激活输出可以包括标记。
在任一前述段落的装置和/或本文所公开的任一装置中,第二处理单元可以包括第二处理电路,其配置为接收第一激活输出并根据第二节点进行处理以生成第二激活输出,且其中第二处理单元使用标记来标识权重以用于处理第一激活输出。
在任一前述段落的装置和/或本文所公开的任一装置中,标识权重可以包括使用标记来标识第一激活输出和权重之间的映射。
一些实施例包括用于进行包括至少第一层和第二层的神经网络的计算的方法,该方法包括:分配第一数据处理单元(DPU)以进行神经网络的第一层的第一节点的计算;分配第二DPU以进行神经网络的第二层的第二节点的计算;使用第一DPU进行第一层的第一节点的计算以生成第一激活输出;将第一激活输出发送到第一DPU的第一输出脉动元件;在第一脉动脉冲期间,从第一输出脉动元件向第二DPU的第一输入脉动元件脉动地脉冲第一激活输出;以及通过使用第二DPU来进行第二层的第二节点的计算以处理至少第一激活输出,其中该方法由至少一个处理器进行。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括脉动地脉冲第一激活输出通过分配为进行第二层的计算的对应的多个DPU的多个输入脉动元件。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括向分配为进行第一层的计算的第一附加DPU的输出脉动元件脉动地脉冲第一激活输出;以及通过交叉连接从第一附加DPU的输出脉动元件向分配为进行第二层的计算的第二附加DPU的输入脉动元件脉动地脉冲第一激活输出。
在任一前述段落的方法和/或本文所公开的任一方法中,第二节点的计算可以包括将脉冲到第二输入脉动元件的第一激活输出乘以权重。
在任一前述段落的方法和/或本文所公开的任一方法中,权重可以本地存储在第二节点。
在任一前述段落的方法和/或本文所公开的任一方法中,权重可以从第二节点外部的存储器取回。
在任一前述段落的方法和/或本文所公开的任一方法中,乘法可以通过反馈卷积引擎进行,该方法还包括在另一激活输出的处理期间将相乘后的第一激活输出反馈到反馈卷积引擎中。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括基于指示第一激活输出的起源地址的信息从多个权重中标识权重。
一些实施例包括存储计算机可执行指令的非暂时性计算机可读介质,当计算机可执行指令被处理器执行时,使处理器进行以下操作,包括:使用第一处理单元进行神经网络的第一节点的计算以生成第一激活输出,第一节点包含在神经网络的第一层中;从第一处理单元向分配为进行神经网络的第二节点的计算的第二处理单元脉动地脉冲第一激活输出,第二节点包含在神经网络的第二层中;以及通过使用第二处理单元进行第二节点的计算以处理至少第一激活输出来生成第二激活输出。
在任一前述段落的操作和/或本文所公开的任一操作中,操作还可以包括,由第一处理单元用起源地址标记第一激活输出,该起源地址将其起源标识为第一处理单元。
在任一前述段落的操作和/或本文所公开的任一操作中,操作还可以包括由第二处理单元基于起源地址标识用于乘以第一激活输出的权重。
一些实施例包括用于进行包括至少第一、第二和第三层的神经网络的计算的装置,该装置包括:第一脉动处理芯片,至少包括:第一处理单元的第一布置,其中第一处理单元的至少子组被分配为进行神经网络的第一层的对应节点的计算,以及第二处理单元的第二布置,其中第二处理单元的至少子组被分配为进行神经网络的第二层的对应节点的计算,且其中第一处理单元的第一布置配置为向第二处理单元的第二布置脉动地脉冲数据。
在任一前述段落的装置和/或本文所公开的任一装置中,向第二输入脉动元件脉动地脉冲第一激活输出可以包括向第二输入脉动元件前向传播第一激活输出。
在任一前述段落的装置和/或本文所公开的任一装置中,向第二输入脉动元件脉动地脉冲第一激活输出可以包括使用线性移位寄存器。
一些实施例包括用于经由后向传播进行神经网络的训练的装置,该装置包括:存储器,配置为存储输入值和对应的预期输出值;至少一个附加的存储器,配置为存储对应于所述神经网络之间的节点的连接的权重;以及多个处理单元,其配置为根据神经网络的特定节点进行计算;其中多个处理节点配置为对输入值通过神经网络的层的前向传播进行计算,以至少由多个处理单元中的特定处理单元生成预测输出值;接收输入值;使用权重中的一个或多个来处理输入数据以生成激活输出;以及生成输出数据,其包括激活输出和标识特定处理单元的标记;且其中多个处理节点配置为至少部分地基于特定处理单元的标记对预期输出值和预测输出值中的对应的预测输出值之间的差的后向传播进行计算,其中后向传播更新权重。
在任一前述段落的装置和/或本文所公开的任一装置中,该装置可以包括脉动处理器芯片,且其中多个处理单元包括嵌入脉动处理器芯片的电路。
在任一前述段落的装置和/或本文所公开的任一装置中,多个处理单元的特定子组可以形成脉动阵列的特定布置,其中脉动阵列的特定布置被分配给神经网络的特定层。
在任一前述段落的装置和/或本文所公开的任一装置中,脉动阵列的第一处理单元的第一布置可以配置为在前向传播期间向脉动阵列的第二布置脉动地脉冲由第一处理单元输出的值。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元可以配置为在后向传播期间基于从第二布置接收的值累加偏导数。
在任一前述段落的装置和/或本文所公开的任一装置中,脉动处理器芯片可以配置为:在前向传播期间在第一方向上脉动地脉冲数据通过多个处理单元,且在后向传播期间在第二方向上脉动地脉冲数据通过多个处理单元,其中第二方向与第一方向相反。
在任一前述段落的装置和/或本文所公开的任一装置中,在第二方向上脉动地脉冲数据可以包括使用线性移位寄存器。
在任一前述段落的装置和/或本文所公开的任一装置中,存储权重的至少一个附加的存储器可以包括对应的处理单元内的多个本地存储器。
在任一前述段落的装置和/或本文所公开的任一装置中,存储权重的至少一个附加的存储器可以设置在多个处理单元的外部,且其中多个处理单元可以配置为从至少一个附加的存储器获取权重中的标识的权重。
在任一前述段落的装置和/或本文所公开的任一装置中,多个处理节点的特定处理单元可以包括配置为接收输入数据的输入脉动元件,处理电路可以配置为对接收的输入数据进行处理以生成激活输出,且输出脉动元件可以配置为脉动地输出激活输出。
在任一前述段落的装置和/或本文所公开的任一装置中,多个处理节点可以布置为多个布置,其中多个布置中的每一个可以配置为进行神经网络的对应层的计算。
在任一前述段落的装置和/或本文所公开的任一装置中,多个布置中的特定布置可以包括多个处理节点的第一子组,其中,在后向传播期间,多个处理节点的第一子组可以配置为至少部分地基于标记来计算偏导数,其中当数据后向传播通过特定布置时,偏导数的加权和可以被累加。
一些实施例包括用于经由脉动处理单元的阵列训练神经网络的方法,该方法包括:访问神经网络的输入值和对应的预期输出值;由脉动处理单元的阵列计算输入值通过神经网络的层的前向传播以生成预测输出值,其中进行前向传播包括:使用特定脉动处理单元且使用神经网络的至少一些权重计算特定激活输出值;以及生成标记信息,其表示脉动处理单元中的哪个计算出哪个特定激活输出值;由脉动处理单元的阵列计算预期输出值与预测输出值中的对应的预测输出值之间的差的后向传播,其中计算后向传播至少部分地基于标记信息;以及基于后向传播更新权重。
在任一前述段落的方法和/或本文所公开的任一方法中,脉动处理单元可以布置为阵列,该方法还可以包括将特定布置分配到神经网络的特定层。
在任一前述段落的方法和/或本文所公开的任一方法中,计算前向传播还可以包括向布置中的第二布置脉动地脉冲布置中的第一布置的激活输出。
在任一前述段落的方法和/或本文所公开的任一方法中,计算后向传播还可以包括向第一布置脉动地脉冲第二布置的偏差输出。
在任一前述段落的方法和/或本文所公开的任一方法中,计算后向传播还可以包括,由第一布置的特定脉动处理单元至少部分地基于标记信息计算偏导数。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括,当偏导数后向传播通过第一布置时,累加偏导数的加权和。
在任一前述段落的方法和/或本文所公开的任一方法中,生成标记信息可以包括,由脉动处理单元的第一处理单元用第一处理单元的地址标记从第一处理单元输出的激活值。
在任一前述段落的方法和/或本文所公开的任一方法中,进行前向传播可以包括,由脉动处理单元的第二处理单元基于第一处理单元的地址标识权重中的一个以用于处理激活值。
在任一前述段落的方法和/或本文所公开的任一方法中,进行后向传播可以包括基于第一处理单元的地址更新权重中的一个。
在任一前述段落的方法和/或本文所公开的任一方法中,进行后向传播可以包括使用梯度下降。
在任一前述段落的方法和/或本文所公开的任一方法中,使用梯度下降可以包括计算误差函数相对于一个或多个权重的梯度。
在任一前述段落的方法和/或本文所公开的任一方法中,更新权重可以包括减少前向传播期间神经网络的未来误差。
在任一前述段落的方法和/或本文所公开的任一方法中,第二方向可以是朝向神经网络的输入的方向。
在任一前述段落的方法和/或本文所公开的任一方法中,进行后向传播可以包括使用在前向传播中使用的权重的转置矩阵。
在任一前述段落的方法和/或本文所公开的任一方法中,标记可以用于标识权重和标识特定处理单元的地址之间的映射。
一些实施例包括进行包括至少第一、第二和第三层的神经网络的计算的装置,该装置包括:处理单元的阵列,包括至少:第一处理单元的第一布置和第二处理单元的最后布置,其中从布置向阵列的布置脉动地脉冲数据;控制器,配置为分配第一和第二处理单元以进行神经网络的至少第一、第二和第三层的特定节点的计算;以及存储器,配置为存储从最后布置接收的激活输出值;其中:控制器配置为至少分配第一布置的第一处理单元的第一子组以进行神经网络的第一层的特定节点的计算,以及至少分配最后布置的第二处理单元的子组以对第一激活输出值进行神经网络的第二层的特定节点的计算;第一处理单元的第一子组配置为处理进入神经网络的输入以生成被脉动地脉冲通过阵列的第一激活输出值;最后布置的第二处理单元的子组配置为处理接收的数据以生成第二激活输出值并将第二激活输出值发送到存储器;控制器还配置为至少重新分配第一布置的第一处理单元的第二子组以进行神经网络的第三层的特定节点的计算;且第一处理单元的第二子组配置为从存储器接收第二激活输出值并根据神经网络的第三层的特定节点的计算处理第二激活输出值。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元的第一和第二子组可以包括一个或多个处理单元,该一个或多个处理单元也包含在第一处理单元的第二子组中。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元的第一和第二子组中的一个可以包括未包含在第一处理单元的第一和第二子组中的另一个中的一个或多个处理单元。
在任一前述段落的装置和/或本文所公开的任一装置中,神经网络可以包括第一和第二层之间的若干层,其中阵列可以包括第一和最后布置之间的若干布置,且其中层的数量可以等于布置的数量。
在任一前述段落的装置和/或本文所公开的任一装置中,装置可以包括脉动处理器芯片,且其中处理单元的第一和最后布置中的每一个可以包括嵌入脉动处理器芯片的电路。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元的第一子组的特定处理单元的计算可以包括用权重乘以输入数据。
在任一前述段落的装置和/或本文所公开的任一装置中,权重可以本地存储在第一处理单元的特定处理单元。
在任一前述段落的装置和/或本文所公开的任一装置中,可以从第一处理单元的第一子组的特定处理单元的外部的存储器取回权重。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器还可以配置为保持处理单元的第一布置的第二子组的分配,以在后向传播的第一阶段期间进行神经网络的第三层的特定节点的计算。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器可以配置为重新分配处理单元的第一布置的第一子组,以在后向传播的第二阶段期间进行神经网络的第一层的特定节点的计算。
一些实施例包括用于经由包括至少第一处理单元的第一布置和第二处理单元的最后布置的处理单元的阵列进行包括至少第一、第二和第三层的神经网络的计算的方法,该方法包括:将第一布置的第一处理单元的至少第一子组分配给神经网络的第一层;将最后布置的第二处理单元的至少子组分配给神经网络的第二层;接收神经网络的输入数据;通过使用第一处理单元的第一子组进行神经网络值的第一层的特定节点的计算以处理输入数据来生成第一激活输出值;使用第二处理单元的第二子组进行神经网络的第二层的特定节点的计算以生成第二激活输出值;将第二激活输出值发送到存储器;将第一布置的第一处理单元的至少第二子组重新分配到神经网络的第三层;由第一处理单元的第二子组访问来自存储器的第二激活输出值;以及使用第一处理单元的第二子组进行神经网络的第三层的特定节点的计算。
在任一前述段落的方法和/或本文所公开的任一方法中,重新分配可以包括将第一子组的一个或多个处理单元分配给神经网络的第三层。
在任一前述段落的方法和/或本文所公开的任一方法中,重新分配可以包括将不在第一子组中的一个或多个处理单元分配给神经网络的第三层。
在任一前述段落的方法和/或本文所公开的任一方法中,神经网络可以包括第一层和第二层之间的若干层,其中阵列可以包括第一和最后布置之间的若干布置,且其中层的数量可以等于布置的数量,该方法还可以包括将若干布置分配给若干层的对应层。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:从第一布置向若干布置的相邻布置脉动地脉冲第一激活输出;在若干布置中的每一个处,生成附加的一组激活输出并向下一相邻布置脉冲该附加的一组激活输出;且在最后布置处,接收从若干布置的与最后布置相邻的布置脉动地脉冲的该附加的一组激活输出。
一些实施例包括存储计算机可执行指令的非暂时性计算机可读介质,当存储计算机可执行指令由至少一个处理器执行时,使至少一个处理器进行以下操作,包括:标识神经网络以由处理单元的阵列处理,神经网络包括至少第一、第二和第三层,且阵列包括至少第一处理单元的第一布置和第二处理单元的最后布置;将第一处理单元的至少第一子组分配给神经网络的第一层;将最后布置的第二处理单元的至少子组分配给神经网络的第二层;提供输入数据以由第一处理单元的第一子组处理;存储从存储器的最后布置接收的激活输出值;将第一布置的第一处理单元的至少第二子组重新分配到神经网络的第三层;以及从存储器向第一处理单元的第二子组提供激活输出值。
在任一前述段落的操作和/或本文所公开的任一操作中,操作还可以包括将第一布置的至少一个处理单元分配给第一处理单元的第一子组和第一处理单元的第二子组两者。
在任一前述段落的操作和/或本文所公开的任一操作中,操作还可以包括将第一布置的至少一个处理单元分配给第一处理单元的第一和第二子组中的一个而不分配给第一处理单元的第一和第二子组中的另一个。
在任一前述段落的操作和/或本文所公开的任一操作中,神经网络可以包括第一和第二层之间的若干层,其中阵列包括第一和最后布置之间的若干布置,且操作可以包括将若干布置的中的每一个分配给若干层中的对应层。
一些实施例包括计算机实现的方法,包括:确定神经网络的层的数量超过脉动处理芯片的处理单元的布置的数量;对于通过神经网络的第一部分的第一组前向传播,分配若干布置中的第一布置以根据神经网络的第一层进行计算;向第一布置提供神经网络的输入以启动第一组前向传播;在存储器中存储来自脉动处理芯片的输出;对于通过神经网络的第二部分的第二组前向传播,分配第一布置以根据神经网络的不同层进行计算;以及向第一布置提供输出以启动第二组前向传播。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:确定神经网络的若干层中的每一层已被脉动处理芯片处理;并且将脉动处理芯片的附加输出存储在存储器中作为神经网络的输出。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:对于第一组后向传播,分配第一布置以根据神经网络的不同层后向传播第一接收值;且对于第二组后向传播,分配第一布置以根据神经网络的第一层后向传播第二接收值。
一些实施例包括用于进行包括若干层的神经网络的计算的装置,该装置包括:控制器,配置为:确定神经网络的层的数量超过脉动处理芯片的处理单元的布置的数量;对于通过神经网络的第一部分的第一组前向传播,分配多个布置的第一布置以根据神经网络的第一层进行计算;向第一布置提供神经网络的输入以启动第一组前向传播;在存储器中存储来自脉动处理芯片的输出;对于通过神经网络的第二部分的第二组前向传播,分配第一布置以根据神经网络的不同层进行计算;以及向第一布置提供输出以启动第二组前向传播。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器还可以配置为:确定神经网络的若干层中的每一个已被脉动处理芯片处理;并且将脉动处理芯片的附加输出存储在存储器中作为神经网络的输出。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器还可以配置为:对于第一组后向传播,分配第一布置以根据神经网络的不同层来后向传播第一接收值;且对于第二组后向传播,分配第一布置以根据神经网络的第一层来后向传播第二接收值。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器可以包括ARM处理器或RISC-V处理器中的至少一个。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器可以配置为分配第一布置的第一处理单元的至少第三子组以进行后向传播。
在任一前述段落的装置和/或本文所公开的任一装置中,控制器可以控制第一布置以通过在每个处理单元处从第一布置的前一处理单元接收偏差输入并将偏差输出发送到第一布置的下一处理单元来进行后向传播。
一些实施例包括用于根据神经网络脉动地处理数据的装置,该装置包括:第一处理单元的第一布置,包括至少第一、第二、第三和第四处理单元,其中第一和第二处理单元连接以彼此脉动地脉冲数据,且其中第三和第四处理单元连接以彼此脉冲地脉冲数据;第二处理单元的第二布置,包括至少第五、第六、第七和第八处理单元,其中第五和第六处理单元连接以彼此脉动地脉冲数据,且其中第七和第八处理单元连接以彼此脉动地脉冲数据;第二和第七处理单元之间的第一互连,其中第二处理单元配置为沿着第一互连向第七处理单元脉动地脉冲数据;以及第三和第六处理单元之间的第二互连,其中第三处理单元配置为沿着第二互连向第六处理单元脉动地脉冲数据。
在任一前述段落的装置和/或本文所公开的任一装置中,第一和第二互连可以形成第一对互连,其中若干对互连可以将第一处理单元的第一布置连接到第二处理单元的第二布置。
在任一前述段落的装置和/或本文所公开的任一装置中,第一和第二处理单元中的每一个可以包括多个卷积引擎,其数量等于若干对互连的数量。
在任一前述段落的装置和/或本文所公开的任一装置中,装置还可以包括第二对互连,第二对互连包括第一布置中的最顶部的处理单元与第二布置中的最顶部的处理单元之间的第三互连和第一布置中的最底部的处理单元与第二布置中的最底部的处理单元之间的第四互连。
在任一前述段落的装置和/或本文所公开的任一装置中,在每个脉动脉冲,第一和第二处理单元中的每一个可以配置为脉动地脉冲两个数据,每一个数据到第一和第二处理单元中的不同的一个。
在任一前述段落的装置和/或本文所公开的任一装置中,装置还可以包括脉动处理器芯片,且其中第一和第二处理单元的第一和第二布置可以包括嵌入脉动处理器芯片的电路。
在任一前述段落的装置和/或本文所公开的任一装置中,第二处理单元可以包括输出脉动元件,其配置为用标识符标记由第二处理单元生成的激活输出,其中标识符指示第二处理单元的地址。
在任一前述段落的装置和/或本文所公开的任一装置中,包括标记的激活输出可以被脉动地脉冲到第七处理单元的输入脉动元件。
在任一前述段落的装置和/或本文所公开的任一装置中,第七处理单元可以配置为:接收激活输出并进行处理以生成附加的激活输出,并且使用标识符来标识权重以用于处理激活输出。
在任一前述段落的装置和/或本文所公开的任一装置中,权重可以本地存储在第七处理单元。
在任一前述段落的装置和/或本文所公开的任一装置中,可以从第七处理单元的外部的存储器取回权重。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元的至少子组可以分配以进行神经网络的第一层的计算,且其中第二处理单元的子组可以分配为进行神经网络的第二层的计算。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元可以包括配置为接收数据的输入脉动元件、配置为对接收的数据进行处理以生成第一激活输出的第一处理电路、第一输出脉动元件、以及配置为用第一处理单元的地址标记第一激活输出的数据标记器。
一些实施例包括用于根据包括至少第一层和第二层的神经网络脉动地处理数据的方法,该方法包括:在第一脉动时钟周期期间,通过沿第一布置来布置的至少第一、第二、第三和第四处理单元和沿第二布置布置的至少第五、第六、第七和第八处理单元进行数据的第一组脉动脉冲,第一组脉动脉冲包括:从第一布置的第一处理单元向第一布置的第二处理单元脉动地脉冲数据;从第一布置的第三处理单元向第一布置的第四处理单元脉动地脉冲数据;从第二布置的第五处理单元向第二布置的第六处理单元脉动地脉冲数据;从第二布置的第七处理单元向第二布置的第八处理单元脉动地脉冲数据;以及从第一布置的第二处理单元向第二布置的第七处理单元脉动地脉冲数据;其中第二处理单元配置为沿着第一和第二布置之间的第一互连向第七处理单元脉动地脉冲数据,且其中第三处理单元配置为沿着第一和第二布置之间的第二互连向第六处理单元脉动地脉冲数据。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括,在第一脉动时钟周期期间,进行第二组脉动脉冲,包括:从第一布置的第二处理单元向第一布置的第一处理单元脉动地脉冲数据;从第一布置的第三处理单元向第二布置的第六单元脉动地脉冲数据;从第一布置的第四处理单元向第一布置的第三处理单元脉动地脉冲数据;从第二布置的第六处理单元向第二布置的第五处理单元脉动地脉冲数据;以及从第二布置的第八处理单元向第二布置的第七处理单元脉动地脉冲数据。
在任一前述段落的方法和/或本文所公开的任一方法中,第一组脉动脉冲可以在第一方向上行进通过第一和第二布置,且其中第二组脉动脉冲在第二方向上行进通过第一和第二布置,其中第一方向与第二方向相反。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括,在第二脉动时钟周期期间,进行第二组脉动脉冲,包括:从第一布置的第二处理单元向第二布置的第七处理单元脉动地脉冲在第一脉动时钟周期期间从第一处理单元接收的数据;以及从第一布置的第三处理单元向第二布置的第六处理单元脉动地脉冲在第一脉动时钟周期期间从第四处理单元接收的数据。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括,在第二脉动时钟周期期间经由第七处理单元,处理在第一脉动时钟周期期间从第二处理单元接收的数据,根据神经网络的第二层的节点的计算进行处理。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括,在第三脉动时钟周期期间经由第七处理单元,处理在第二脉动时钟周期期间从第二处理单元接收的数据,根据神经网络的第二层的节点的计算进行处理。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括,使用从第二处理单元接收的数据的标记来标识权重,以用于处理从第二处理单元接收的数据,标记标识数据源于第二处理单元。
在任一前述段落的方法和/或本文所公开的任一方法中,第一互连以及与第二布置的相邻处理单元的附加互连可以允许第六处理单元从两个不同的源接收两个数据分组。
一些实施例包括用于进行包括至少第一层和第二层的神经网络的计算的装置,该装置包括:第一处理单元,配置为进行神经网络的第一层的第一节点的计算,以生成第一输出;第二处理单元,配置为进行神经网络的第一层的第二节点的计算,以生成第二输出;以及第三处理单元,配置为进行神经网络的第二层的第三节点的计算,其中第三处理单元包括:输入脉动元件,配置为在第一脉动脉冲时钟周期期间,接收第一处理单元的第一输出和第二处理单元的第二输出;第一卷积引擎,配置为对第一输出进行第一卷积以生成第一经处理的值;第二卷积引擎,配置为对第二输出进行第二卷积以生成第二经处理的值;以及加法电路,配置为接收并相加第一和第二经处理的值。
在任一前述段落的装置和/或本文所公开的任一装置中,该装置还可以包括脉动处理器芯片,且其中第一、第二和第三处理单元包括嵌入脉动处理器芯片的电路。
在任一前述段落的装置和/或本文所公开的任一装置中,脉动处理器芯片可以包括处理单元的阵列,其中第一和第二处理单元形成阵列的第一布置的一部分,且其中第三处理单元形成阵列的第二布置的一部分。
在任一前述段落的装置和/或本文所公开的任一装置中,第一卷积引擎还可以配置为至少部分地通过将第一输出乘以第一权重来进行第一卷积;并且第二卷积引擎配置为至少部分地通过将第二输出乘以第二权重来进行第二卷积。
在任一前述段落的装置和/或本文所公开的任一装置中,第三处理单元还可以配置为至少部分地通过以下操作从包括神经网络的多个权重的数据集标识第一和第二权重:标识附加到第一输出的第一标记;基于第一标记在数据集中查找第一权重;标识附加到第二输出的第二标记;基于第二标记在数据集中查找第二权重。
在任一前述段落的装置和/或本文所公开的任一装置中,第一处理单元可以包括配置为将第一标记附加到第一输出的电路,且其中第二处理单元包括配置为将第二标记附加到第二输出的电路。
在任一前述段落的装置和/或本文所公开的任一装置中,第三处理单元可以包括存储器,装置还包括控制器,其配置为将第三处理单元分配给第三节点并在存储器中存储第一权重。
在任一前述段落的装置和/或本文所公开的任一装置中,第三处理单元还可以包括:输入脉动元件,配置为经由脉动脉冲接收数据并向第一和第二卷积引擎提供数据;激活电路,配置为对加法电路的输出进行激活函数以生成激活输出;以及输出脉动元件,配置为经由至少一个脉动脉冲输出激活输出。
在任一前述段落的装置和/或本文所公开的任一装置中,装置还可以包括:第四处理单元,配置为进行神经网络的第一层的第四节点的计算以生成第三输出;以及第五处理单元,配置为进行神经网络的第一层的第五节点的计算以生成第四输出,其中第三处理单元的输入脉动元件还配置为在第二脉动脉冲时钟周期期间接收第三和第四输出。
在任一前述段落的装置和/或本文所公开的任一装置中,第一卷积引擎还可以配置为对第三输出进行第三卷积以生成第三经处理的值;第二卷积引擎还配置为对第四输出进行第四卷积以生成第四经处理的值。
在任一前述段落的装置和/或本文所公开的任一装置中,第三处理单元可以配置为将第一输出反馈回第一卷积引擎中以进行第三卷积,并将第二输出反馈回第二卷积引擎中以进行第四卷积。
一些实施例包括用于进行包括至少第一层和第二层的神经网络的计算的方法,该方法包括:由第一处理单元进行神经网络的第一层的第一节点的计算以生成第一输出;由第二处理单元进行神经网络的第一层的第二节点的计算以生成第二输出;由第三处理单元进行神经网络的第二层的第三节点的计算,其中进行第三节点的计算包括:在第一脉动脉冲时钟周期期间接收第一和第二输出;使用第三处理单元的第一卷积引擎对第一输出进行第一卷积以生成第一经处理的值;使用第三处理单元的第二卷积引擎对第二输出进行第二卷积以生成第二经处理的值;并且加和第一和第二经处理的值。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:至少部分地通过将第一输出乘以第一权重来进行第一卷积;以及至少部分地通过将第二输出乘以第二权重来进行第二卷积。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:标识附加到第一输出的第一标记;标识附加到第二输出的第二标记;基于第一标记在数据集中查找第一权重,其中数据集包括神经网络的多个权重;以及基于第二标记在数据集中查找第二权重。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括由第一处理元件的输出脉动元件用第一标记来标记第一输出,其中标记指示第一处理单元的地址。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括向第三处理单元的输入脉动元件脉动地脉冲具有第一标记的第一输出。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:由第四处理单元进行神经网络的第一层的第四节点的计算以生成第三输出;由第五处理单元进行神经网络的第一层的第五节点的计算以生成第四输出;以及在第二脉动脉冲时钟周期期间在第三处理单元处接收第三和第四输出。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:经由第一卷积引擎对第三输出进行第三卷积以生成第三经处理的值;经由第二卷积引擎对第四输出进行第四卷积以生成第四经处理的值。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括将第三和第四经处理的值与第一和第二经处理的值加和。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:将第一输出反馈回第一卷积引擎中以进行第三卷积;以及将第二输出反馈回第二卷积引擎以进行第四卷积。
在任一前述段落的方法和/或本文所公开的任一方法中,将第一卷积引擎的输出反馈回第一卷积引擎可以基于脉动脉冲增量地进行。
一些实施例包括用于进行包括第一、第二和第三层的神经网络的计算的装置,该装置包括:第一脉动处理芯片,包括至少:第一处理单元的第一布置和第二处理单元的第二布置,其中第一处理单元的第一布置配置为向第二处理单元的第二布置脉动地脉冲数据;第二脉动处理芯片,包括至少第三处理单元的第三布置,其中第二脉动处理芯片配置为接收从第一脉动处理芯片的第二布置输出的数据并将数据提供给处理单元的第三布置;以及至少一个控制器,配置为:分配第一布置的第一处理单元的至少子组以进行神经网络的第一层的特定节点的计算,分配第二布置的第二处理单元的至少子组以进行神经网络的第二层的特定节点的计算,并且分配第三布置的第三处理单元的至少子组以进行神经网络的第三层的特定节点的计算。
在任一前述段落的装置和/或本文所公开的任一装置中,处理单元的第一和第二布置中的每一个包括可以嵌入第一脉动处理芯片的电路。
在任一前述段落的装置和/或本文所公开的任一装置中:第一处理单元的子组可以配置为:处理神经网络的输入值以生成第一激活输出值;以及向第二处理单元的至少子组脉动地脉冲第一激活输出值;并且第二处理单元的子组配置为处理第一激活输出值以生成第二激活输出值;且至少一个控制器还配置为将第二激活输出值发送到第三处理单元的第三布置。
在任一前述段落的装置和/或本文所公开的任一装置中,第一脉动处理芯片可以配置为脉动地脉冲第二激活输出值通过第二处理单元的第二布置到存储器。
在任一前述段落的装置和/或本文所公开的任一装置中,至少一个控制器还可以配置为从存储器取回第二激活输出并将第二激活输出提供给第二脉动处理芯片。
在任一前述段落的装置和/或本文所公开的任一装置中,第二处理单元的特定处理单元的计算可以包括将从第一处理单元的一个子组接收的激活输出乘以对应的权重。
在任一前述段落的装置和/或本文所公开的任一装置中,一个或多个对应的权重可以本地存储在第二处理单元的一个子组。
在任一前述段落的装置和/或本文所公开的任一装置中,一个或多个对应的权重可以从在第二处理单元的一个子组外部的存储器取回。
在任一前述段落的装置和/或本文所公开的任一装置中,至少一个控制器还可以配置为:初始地配置第一和第二脉动处理芯片以根据神经网络进行前向传播,随后配置第一和第二脉动处理芯片以后向传播与预期输出的偏差。
在任一前述段落的装置和/或本文所公开的任一装置中,至少一个控制器还可以配置为基于后向传播更新神经网络的权重。
一些实施例包括用于进行包括至少第一、第二和第三层的神经网络的计算的方法,该方法包括:将第一脉动处理芯片的第一布置的第一处理单元的至少子组分配给神经网络的第一层;将第一脉动处理芯片的第二布置的第二处理单元的至少子组分配给神经网络的第二层;将第二脉动处理芯片的第三布置的第三处理单元的至少子组分配给神经网络的第三层;接收神经网络的输入数据;使用第一处理单元的子组处理输入数据以生成第一激活输出值;向第二处理单元的子组脉动地脉冲第一激活输出值;使用第二处理单元的子组处理第一激活输出值以生成第二激活输出值;以及使用第二脉动处理芯片的第三处理单元的子组处理第二激活输出值。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括脉动地脉冲第二激活输出值通过第二布置的第二处理单元到存储器。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括:从存储器取回第二激活输出;以及向第二脉动处理芯片提供第二激活输出。
在任一前述段落的方法和/或本文所公开的任一方法中,处理第一激活输出值可以包括经由第二处理单元的一个子组将至少一个第一激活输出值乘以权重。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括从第二处理器单元的一个子组的本地存储器取回权重。
在任一前述段落的方法和/或本文所公开的任一方法中,该方法还可以包括从第二处理单元的一个子组外部的存储器取回权重。
一些实施例包括存储计算机可执行指令的非暂时性计算机存储介质,当该计算机可执行指令由处理器执行时,使处理器进行以下方法:将第一脉动处理芯片的第一布置的第一处理单元的至少子组分配给包括至少第一层以及第二和第三层的神经网络的第一层;将第一脉动处理芯片的第二布置的第二处理单元的至少子组分配给神经网络的第二层;将第二脉动处理芯片的第三布置的第三处理单元的至少子组分配给神经网络的第三层;接收神经网络的输入数据;使用第一处理单元的子组处理输入数据以生成第一激活输出值;向第二处理单元的子组脉动地脉冲第一激活输出值;使用第二处理单元的子组处理第一激活输出以生成第二激活输出值;以及使用第二脉动处理芯片的第三处理单元的子组处理第二激活输出值。
在任一前述段落的操作和/或本文所公开的任一操作中,该方法还可以包括脉动地脉冲第二激活输出值通过第二布置的第二处理单元到存储器。
在任一前述段落的操作和/或本文所公开的任一操作中,处理第一激活输出值可以包括经由第二处理单元的一个子组将至少一个第一激活输出值乘以权重。
在任一前述段落的操作和/或本文所公开的任一操作中,该方法还可以包括从第二处理单元的一个子组的本地存储器取回权重。
在任一前述段落的操作和/或本文所公开的任一操作中,该方法还可以包括在第一处理芯片上进行后向传播且在第二处理芯片上进行后向传播。
在任一前述段落的操作和/或本文所公开的任一操作中,进行后向传播可以在第二处理芯片上开始,且第二处理芯片上的后向传播的输出被作为第一处理芯片的输入馈送以在第一处理芯片上继续进行后向传播。
在任一前述段落的操作和/或本文所公开的任一操作中,在第一处理芯片上进行后向传播可以包括将与第二处理芯片的输出的偏差保存到偏差存储器中,并将来自偏差存储器的偏差作为输入发送到第一处理芯片的第二布置。
总体上,本公开描述了一种专用硬件处理器,其在机器学习的训练和推断阶段期间都使用神经网络来加速计算。硬件加速使用计算机硬件以比在更通用的中央处理单元(“CPU”)上运行的软件更高效地进行某些功能。由于在训练或使用神经网络时进行大量的计算,因此此类神经网络计算可能出现问题,因为它们在计算上很昂贵,它们会消耗大量的处理资源。此外,另一个问题是神经网络一次在不同的处理装置上执行工作(piece),随后将计算组合以获得最终结果。
出于这个原因,通常认为常规CPU并非最适合用于神经网络处理。这可能是由于使用CPU完成神经网络计算所需的时间,以及在管理其他计算机功能仍需要CPU时,CPU带宽的大量使用。为此,一些现有方法利用了图形处理单元(“GPU”)的并行处理能力。但是,使用GPU的功耗比CPU高得多。张量处理单元(“TPU”)是一种专用的机器学习处理器。但是,TPU仅可用于推断,不支持训练新的神经网络所需的计算类型。
本公开使用可以在训练和推断阶段期间进行专门的机器学习任务的专用硬件加速器和相关联的数据处理技术解决了这些问题以及其他问题。本公开的一些实施例的益处包括比常规处理器更高效地处理神经网络的各个方面(例如,使用更少的处理时间和/或电力成本)。例如,该硬件加速器(在本文中称为“脉动神经网络引擎”)使用具有多个数据处理单元(“DPU”)的脉动阵列,每个数据处理单元都与本地区域中的少量其他DPU连接。来自神经网络的许多节点的数据通过这些DPU脉冲,这些数据带有标识这些数据起源和处理的位置的相关标记,使得每个DPU知道传入数据的起源位置,因此能够按照神经网络的架构指定的方式计算数据。此外,这些标记使脉动神经网络引擎能够在后向传播期间进行计算,从而使脉动神经网络引擎能够支持训练。在详细描述中提供了脉动神经网络引擎的更多细节。
如上所述,本公开涉及一种用于机器学习训练和推断的改进的处理器,在本文中被称为脉动神经网络引擎。脉动神经网络引擎限定了可重新配置的构建块和互连资源。控制处理器可以基于面向用户的软件执行指令,该软件使用户能够指定要使用的特定深度神经网络(“DNN”)架构和参数,其中指令将这些DNN映射到脉动神经网络引擎的可用硬件。这种可用硬件在本文中称为现场可编程织物(fabric)。除现场可编程织物外,脉动神经网络引擎裸芯包括控制处理器,用于向每个工作者通信和/或分配标识并在裸芯上建立互连。如本文中所使用的,工作者是指脉动阵列的单个DPU的处理组件(例如,专用逻辑电路)。
在一些实施例中,处理器以及脉动神经网络引擎的可编程织物和工作者可以被实现为片上系统(“SoC”)。SoC是指将系统的组件集成或嵌入到单个基板(或基板的键合堆叠体)中的集成电路(也称为“IC”)。SoC的基板是指薄的平面晶片材料(例如,半导体材料,比如硅),其可作为沉积SoC电子元件(例如,晶体管、二极管、电子电路)的基础。因此,所公开的脉动神经网络引擎包括基板,该基板具有形成SoC的存储器和处理组件的电子组件,如下面更详细描述的。因此,SoC的存储器和处理组件被称为“嵌入”在SoC的芯片中。
如本领域的技术人员将理解的,所公开的处理装置(例如,脉动神经网络引擎)和相关联的处理技术代表了优于现有实施方式的重大技术进步。具体地,在神经网络小于或等于脉动神经网络引擎的处理装置的数量的实施方式中,使用脉动脉冲来进行层到层数据传输使得整个神经网络的处理可以在单个芯片上进行。这避免了或最小化与一次生成单个层的激活输出以及从外部存储器存储和获取这些激活输出相关的延迟。此外,脉动数据传输连接的配置 布置内的相邻处理单元之间的连接,以及相邻布置的某些处理单元之间的互连 提供了多种益处。例如,这些包括显著地减少了根据给定神经网络的节点到节点连接而直接连接处理单元产生的有线连接的数量。此外,通过允许处理单元在给定的脉动时钟周期期间接收和处理多个数据分组,脉动数据传输连接和互连的数量和设置(以及每个处理单元内的卷积引擎的相关数量)可以加速处理时间。此外,由于数据的硬连线不是围绕特定模型设计的,因此脉动数据传输连接创建了可以与多种神经网络模型一起使用的通用芯片。另外,所公开的输出标记提供的益处包括,通过提供可用于标识给定激活输出的适当权重,使下游处理单元能够以彼此不同的顺序接收和处理数据分组。标记的另一个益处包括,除了前向传播外,还允许将脉动神经网络引擎用于后向传播,这可以使用户使用脉动神经网络引擎训练新的神经网络。由此,本文所述的实施例代表了计算机相关技术的重大改进。
现在将参考附图描述一些实施例。在以下描述中,阐述了许多细节以提供对各种实施例和/或特征的理解。然而,本领域技术人员将理解,可以在没有许多这些细节的情况下实践一些实施例,并且可以对所描述的实施例进行多种变化或修改。
图1是人工神经网络10的示意图。这种人工神经网络用于对输入和输出之间的复杂关系进行建模或在数据中发现模式,在这种情况下输入和输出之间的依赖关系很难确定。神经网络10包括输入层11A、两个中间(“隐藏”)层11B、11C和输出层11D,每个层包括多个节点15。节点15的数量可以在层之间变化。如果神经网络包含两个或更多个隐藏层,则被视为“深度”。每个层中的节点连接到后续层中的一些或所有节点,这些连接12、14的权重通常是在训练过程期间从数据中学习的,例如通过后向传播,其中调整网络参数以在标记的训练数据中给定相应输入的情况下产生预期输出。因此,人工神经网络10是自适应系统,其配置为基于训练期间流经网络的信息改变其结构(例如,连接配置和/或权重),且隐藏层的权重可以被认为是数据中有意义模式的编码。
绘示的示例神经网络10是完全连接的神经网络,也就是说,输入层11A中的每个节点连接到第一隐藏层11B中的每个节点,第一隐藏层11B中每个节点进而连接到后续隐藏层11C中的每个节点,且以此类推,直到最终隐藏层中的每个节点连接到输出层11D中的每个节点。
尽管示例神经网络10被绘示为具有特定数量的节点、层和连接,但是所公开的脉动神经网络处理引擎可以处理多种神经网络架构的计算。例如,所公开的脉动神经网络处理引擎可以处理完全连接的神经网络和部分连接的神经网络(例如,未连接相邻层中的所有节点的情况)的计算。作为另一示例,所公开的脉动神经网络处理引擎可以处理针对卷积神经网络(“CNN”)的计算。
CNN是通常用于图像分析的一种人工神经网络。像上述的人工神经网络一样,CNN由节点组成,并且具有可学习的权重。但是,层的节点仅局部地连接到它之前的宽度和高度层的小区域(例如,图像像素的3x3或5x5邻域),称为接收场(receptive field)。隐藏层权重可以采用应用于接收场的卷积滤波器的形式。在某些实施方式中,CNN的层可以具有布置在以下三个维度上的节点:宽度、高度和深度。这对应于每个图像中的像素值的阵列(例如,宽度和高度)以及处理的通道数(例如,深度)。CNN的每个卷积层中的节点可以共享权重,使得给定层的卷积滤波器跨输入体积的整个宽度和高度被复制(例如,跨整个帧),从而减少了可训练的权重的总数,并且增加了CNN对训练数据之外的数据集的适用性。可以池化(pool)层的值以减少后续层的计算的数量(例如,代表某些像素的值,比如接收场内的最大值,可以前向传递,而其他值则被丢弃)。进一步沿着CNN池的深度,掩码(mask)可以重新引入任何丢弃的值,以将数据点的数量返回到先前的大小。可以堆叠多个层(可选地将其中一些完全连接)以形成CNN架构。
这种人工神经网络对超大规模集成(“VLSI”)系统架构提出了布线挑战。如图1中的连接12所示,输入层11A中的节点各自以大型“扇出”配置将其信号输出到许多其他节点。类似地,如图1中的连接14所示,输出层11D中的节点各自以大型“扇入”配置从许多其他节点接收输入信号。以与扇入和扇出配置相对应的方式物理连接处理单元会给放置和布设大量接线带来很大的困难。此外,由于这将涉及实际的物理接线,一旦放置,此类接线将无法重新配置。这种预先配置的设计将无法修改以适应不同的网络结构,从而创建了针对特定神经网络架构的非常有限用途的处理器。假设一个层中的N个神经元与后续层中的N个神经元完全连接,则物理地影响这种节点的连接的接线数成为N2的函数。一些神经网络可能涉及数以百万计的节点,因此可以理解,布线问题是一个巨大的挑战。因此,需要找到一种更好的方法来实现用于完全连接的人工神经网络的硬件设计,而不必将设计限于根据特定网络架构进行处理。
为了克服直接连接神经网络的处理节点的布线挑战,所公开的脉动神经网络引擎实现了脉动阵列。脉动网格是数据处理单元(“DPU”)的矩阵状网络,这些数据处理单元硬线连接到相邻的DPU,数据被脉冲(例如,以脉冲方式发送)通过网络。脉动阵列可以是嵌入SoC中的DPU的矩形布置,其中数据流过相邻DPU之间的阵列,并且其中不同的数据可以在不同的方向上流动。每个DPU配置为作为从上游DPU接收到的数据的函数独立计算部分结果,将结果存储在其内部,然后将结果传递到下游。每个DPU可以配置为进行相同类型的计算。与其他类型的处理器相比,所公开的脉动阵列的优点之一在于,它们可以在优越的基础上进行计算,因为在神经网络的节点处进行的计算的重复特性(repetitive nature)可以通过设计为进行这些功能的DPU高效地进行。此外,在一些实施方式中,仅将脉动阵列矩阵的边界处的DPU接线以访问存储器,并且从存储器取回(或发送至存储器)的数据在脉动脉冲中传递至其他DPU(或从其他DPU传递)。这样可以减少对存储器或存储系统提供及时数据的需求,从而避免了存储器输入/输出瓶颈。此外,脉动阵列适用于各种不同的神经网络架构,而不是根据特定网络的连接结构进行硬接线。
图2绘示了在信息通过网络10的示例节点15的前向传递期间的计算的图示,其可以由公开的动神经网络引擎的DPU进行。节点15组合多个输入34并产生输出24,输出24可以传递给网络10的后续层中的节点。在组合输入34时,使用加权求和函数30将权重W1至WN应用于N个不同输入中的相应的输入。由于输出是输入的加权和,因为加法的交换性,进行加权和的顺序不会影响得到的加权和36。如下所述,根据本公开,利用加权求和函数30的这种交换性来获得硬件架构益处。加权和36被提供给激活函数38,例如sigmoid函数、整流器函数(实现整流器函数的节点也称为修正线性单元(“ReLU”))、双曲正切函数(“tanh”)、softmax函数、或其他合适的线性或非线性激活函数。激活函数采用加权的输入并确定是否和/或如何将加权的输入作为信号传递,例如通过将其映射到0到1(例如sigmoid函数)或-1到1(例如,tanh函数)之间的值。
有利地,所公开的脉动神经网络引擎的DPU可以处理输入数据,使得与接收数据的时间无关以标识适当的权重,其中每个输入数据分组被标识为源自特定的其他DPU,从而可以从存储器访问输入的适当权重。所公开的脉动神经网络引擎也能够在DPU之间传输数据,从而将来自神经网络的一个的节点层的结果直接脉冲到分配为进行神经网络的另一层的节点的计算的DPU。与现有处理器不同,现有处理器在每个层中使用相同的处理硬件进行计算,因此必须将结果从第一层发送到存储器或缓冲区,然后将其取回以对下一个层进行计算,DPU之间的数据的脉动脉冲有利地不需要使用存储器或缓冲区的推送/取回以进行层间处理。这可导致处理时间减少,例如在特定数量的时钟周期内提供数据处理和从一层到另一层的传输。还可以根据特定神经网络的计算负载动态配置DPU,以优化DPU的使用并同时避免存储/存储瓶颈。所公开的脉动神经网络引擎的某些实施例使DPU之间的数据传输和DPU的计算重叠。
提供给DPU的数据可以带有标记,以允许在整个过程中跟踪和标识数据。添加到数据的此类标记允许在通过网络在前向传播期间标识输入的正确权重,在DPU之间如何对数据分组进行脉冲化的方面提供了灵活性。添加到数据的标记不仅可以将特定数据分组的信息起源处理DPU通知给DPU,还可以用于将有效数据的到达通知给DPU。因此,可以将检查功能添加到DPU,以便在验证标记之前不会进行处理。这些标记还可以实现分布式控制的手段,因为它们的内容会影响对DPU处的数据的操作。
所公开的脉动神经网络引擎可以有利地在机器学习的标记的推断和训练阶段期间使用。所公开的标记使得能够通过DPU后向传播数据以及修改应用于输入的权重值。后向传播,“误差的后向传播”的缩写,是一种使用梯度下降的人工神经网络的监督学习的算法。给定人工神经网络和误差函数,后向传播计算误差函数相对于神经网络的权重的梯度。后向传播将数据流相对于推断反转。即,梯度的计算通过网络后向进行,首先计算权重的最终层的梯度,最后计算权重的第一层的梯度。
因此,在一些实施例中,相对于在推断阶段处理(例如,前向传播)期间使用的指针的方向,在训练(例如,后向传播)期间,每个DPU中的指针增量的方向也被反转。在后向传播期间,指针指向权重,权重乘以从深度神经网络(DNN)输出传播通过层的误差/偏差。在监督学习的示例实施例中,可以将数据输入到神经网络中并前向传播到输出层。然后可以将输出层处的节点的值与期望的正确输出值进行比较。来自计算出的输出和正确输出的误差量将后向传播,并用于计算深度神经网络的每个处理节点中对应的误差量,一直到输入层。
图3示出了包括DPU 15'的阵列的脉动神经网络引擎300的实施例。DPU 15’可以进行神经网络10的一个或多个节点15的计算。类似于图1的网络10,所示的实施例包括映射到输入层(p11-p1N)、两个隐藏层(p21-p2N和p31-p3N)和输出层(p41-p4N)的DPU。每个DPU 15’可以分配以进行单独层中的一个或多个节点15的计算。可通过高级高性能总线(例如AHB-Lite总线)将神经网络的权重编程到每个DPU中。在其他实施例中,脉动神经网络引擎300的DPU15’可以被映射到具有更多或更少层的其他神经网络架构的节点。此外,DPU 15’的物理布置不必一定反映神经网络中的节点的布置,因为所公开的通过脉动神经网络引擎300的带标记的脉动脉冲数据使得能够在DPU之间共享节点输出。脉动神经网络引擎300的变体的DPU可以与图3的实施例中所图示的DPU的数量和布置不同。
DPU 15’包括三元组“h-p-s”架构。“h”块表示目标脉动元件,其与相邻的目标脉动元件接收和发送输入值(例如,要在DPU处理的值)。“p”块表示DPU的处理硬件,其示例功能将参考图5详细讨论。“s”块表示来源脉动元件,其与相邻的来源脉动元件接收和发送输出值(例如,在给定DPU处的处理结果的值)。每个目标脉动元件(“h”)可以连接(例如,经由硬线连接)到一个或多个相邻的目标脉动元件,且类似地,每个来源脉动元件(“s”)可以连接(例如,经由硬连线连接)到一个或多个相邻的来源脉动元件。这种布线配置与公开的带标记的脉动脉冲相结合,实现空间高效的布线,同时仍将所有需要的值传递给每个DPU,并实现可适应各种神经网络架构的灵活处理架构。目标和来源脉动元件包括移位寄存器,来源脉动元件还包括用于将标记添加到输出的经处理的数据分组的标记电路。在前向传播期间,目标脉动元件在训练中一次将数据移位一个位置,例如使用线性移位寄存器。来源脉动元件也以类似方式移位数据,并另外进行数据标记。在后向传播期间,目标和来源元件也进行这样的数据移位,并附加地帮助将来自下游的偏导数乘以对应的权重。这可以看作是移位和累加函数。
脉动神经网络引擎300包括DPU的多个布置,用于进行神经网络的各个层的计算。在一些实施方式中,这些可以是线性并行布置,例如分配给隐藏层11B和11C的所示的列。布置中的处理单元经由发送器和接收器块(目标(“h”)和来源(“s”)脉动元件)脉动地脉冲数据到布置中的相邻处理单元,相邻的布置通过一个或多个交叉连接来连接。箭头示出了目标(“h”)和来源(“s”)脉动元件之间的分组的传输,其表示沿有线连接的说明性数据流。如图3中的箭头所示,使用目标和来源脉动元件之间的向上和向下方向上的流动,将来自第一隐藏层11B的激活输出脉动地传递到第二隐藏层11C。在中点的交叉连接(基于每个隐藏层中的节点的数量)可以有利地加快传递速度,如关于图4C更详细地描述的。假设每个隐藏层中有N个节点,在N个脉动脉冲中,对第二隐藏层11C中的节点进行处理的每个DPU将看到来自对第一隐藏层11B中的节点进行处理的每个DPU的激活输出。
此外,一旦从前一层接收到第一激活信号,对第二隐藏层11C中的节点进行处理的每个DPU可以开始其激活信号的加权和的计算。每个DPU还可以在N个脉动脉冲中完成其激活信号的加权和。因此,将激活信号从一层传递到下一层的延迟被隐藏,因为该延迟与每个接收节点中的计算重叠。此外,可以添加附加的交叉路径,以有利地加快激活输出从一层到下一层的传递。
DPU 15’以称为脉动脉冲的间隔传递这些数据分组。这些脉冲可以通过时钟(未示出)控制,或可以基于在给定的顺时针卷积或逆时针卷积期间将进行处理的最大时间量的确定来控制。设置在脉动神经网络引擎300中的每个DPU 15’可以处理设置有标记(如之前所述)的数据分组(例如,input1-inputN值和/或其他DPU的输出结果),例如以关于图2所述类似的方式。因此,脉动神经网络引擎300允许对数据分组的处理的整体流水线操作,以在神经网络内进行计算。
与需要路由到后一层的所有DPU的激活信号相反,后一层使用的权重特定于前一层中的每个节点。因此,脉动技术被适当地用于传递激活信号,但是权重是直接传递的(例如,不是通过脉动手段)。例如,一旦控制处理器将特定的DPU作为特定节点分配以处理数据,则所需的权重就可以存储在该特定DPU的存储器中。
图4A-4C绘示了通过图3的脉动神经网络引擎的一部分的脉动脉冲的实施例,所示的脉动脉冲对应于通过图1的神经网络的隐藏层的节点的数据(s1-sN and h1-hN)。出于本示例的目的,假设在第一隐藏层11B和第二隐藏层11C中的每一个都有相同数量的N个处理节点。在图4A-4C中,s*块表示已经分配为进行对网络10的第一隐藏层11B中的节点的处理的DPU的来源脉动元件,h*块表示已经分配为进行对网络10的第二隐藏层11C中的节点的处理的DPU的目标脉动元件。s*和h*块的布局可以或可以不对应于SoC脉动神经网络引擎中的对应的DPU的实际物理布局(例如,进行第一隐藏层11B的处理的DPU可以或可以不一定布置为单个连续布置,例如列,如在说明性示图中,且对于第二隐藏层11C的DPU也是如此)。取决于脉动阵列中的特定s*和h*块位置,来自s*块的输出将以不同的延迟和顺序到达h*块。DPU包括特殊的处理块结构以使用简单的元(cell)来处理数据的不同延迟和顺序,如下面关于图4A-4C详细描述的。
图4A示出了隐藏层脉动脉冲400A的第一实施例。在该实施例中,脉动脉冲在单个方向上流过s*块,使得第一s*块s1的值行进通过后续的s*块到达最终s*块sN。因此,块s1将其值传递至块s2,块s2将其值和从块s1接收的值传递至块s3,以此类推。从最终s*块sN,所有的s*块值在脉动脉冲中传递给最终h*块hN。脉动脉冲在单个方向上流过h*块,使得从最终h*块hN发送的值行进通过h*块到第一h*块h1。因此,所有的h*块将在数量2N个脉动脉冲中看到所有s*块的输出,其中N对应于每个层中的节点的数量。由于脉动数据流的路径,最终h*块hN将看到第一h*块h1的所有值。然而,由于数据源标记和加法的可交换性(例如,用于计算加权和),这些块可以没有问题地准确处理所需的数据。
图4B示出了隐藏层脉动脉冲400B的第二实施例。在该实施例中,脉动脉冲在第一方向上流过s*块的第一半部(sN/2至s1)且在第二方向上流过s*块的第二半部(sN/2+1至sN)。在图4B中,在第一方向上流动的数据由线形末端箭头表示,而在第二方向上流动的数据由三角形末端箭头表示。在一些实施方式中,这些箭头可以代表沿着单个接线的单个多路传输。如箭头所示,在第一方向上流动的脉冲从第一s*块s1发送到第一h*块h1,且从那里行进通过所有的h*块到达最终的h*块hN。在第二方向上流动脉动从最终的s*块sN发送到最终的h*块hN,且从那里行进通过所有的h*块到达第一h*块h1。因此,所有的h*块将在数量3N/2个脉动脉冲中看到所有的s*块的输出。
图4C示出了隐藏层脉动脉冲400C的第三实施例。在该实施例中,互连在S1、SN/2、SN/2+1和SN节点及其配对者处存在于s*块和H节点之间。在第三实施例中,脉动脉冲在第一和第二方向上流过s*块的第一半部(sN/2至s1)且在第三和第四方向上流过s*块的第二半部(sN/2+1至sN)。在图4C中,在第一方向上流动的数据由实线线形末端箭头示出,在第二方向上流动的数据由实线三角形末端箭头示出,在第三方向上流动的数据由虚线线形末端箭头示出,在第四方向上流动的数据由虚线三角形末端箭头示出。在一些实施方式中,这些箭头可以代表沿着单个接线的单个多路传输。
在第三实施例400C中,脉冲在第一方向上从第一s*块s1流过s*块的第一半部到块sN/2,然后沿着一个互连从块sN/2到块hN/2+1。从块hN/2+1,数据流过h*块的第二半部到块hN。脉冲还从块sN/2流过s*块的第一半部到第一s*块s1,然后沿着另一互连从块s1到块h1。从块h1,数据流过h*块的第一半部的到块hN/2。脉冲在第三方向上从块sN/2+1流过s*块的第二半部到块sN,然后沿着另一互连从块sN到块hN。从块hN,数据流过h*块的第二半部到块hN/2+1。脉冲还从块sN流过s*块的第二半部到块sN/2+1,然后沿着另一互连从块sN/2+1到块hN/2。从块hN/2,数据流过h*块的第一半部到块h1。因此,所有的h*块将在数量N个脉动脉冲中看到所有的s*块的输出。为此,第三实施例400C在脉动神经网络引擎300的某些实施方式中可以是优选的,因为它以最少的脉冲数传输所有值。相对于图4A,图4C配置的脉动流动加快了数据传递过程,但代价是每个h*块从s*块接收数据的顺序不同。但是,同样由于数据源标记和加法的交换性,这些块没有问题地准确处理所需的数据。
现在参考图5,在本公开中教导的神经网络的其他优点包括:在数据分组的脉动脉冲期间在整个神经网络中分布信息和控制信号以及数据的能力。脉动阵列可以使用周期脉动脉冲分布数据(例如,基于时钟信号)。可以使用移位寄存器将信号从一个节点同步发送到另一个。在一些实施例中,脉冲可以每个时钟信号、时钟信号的倍数(例如,每四个时钟)、频率的倍数,和/或诸如此类发送一次。数据可以通过DPU经由脉动传递从神经网络的一部分移动到神经网络的另一部分。在将数据从神经网络的一部分移动到神经网络的另一部分之后,会发生特定于节点的函数的计算。这样的计算可以包括乘法和/或加法函数。
可以在前向传播和后向传播期间在整个神经网络中分布信息和/或控制信号。基于反馈的卷积(顺时针和逆时针)130、132的设置有利于简化电路并节省硬件。在其他实施例中,可以共享在卷积130和132中使用的硬件。此外,与常规的神经网络处理(其中,当数据在节点之间传播时,通常在每个周期从共享的存储器访问)相比,所公开的脉动神经网络引擎通过在DPU之间直接传播层间数据来消除和/或减少该要求,从而消除和/或减少那些存储器访问所需的等待时间。随着处理器技术的进步,计算时间继续减少,专门用于存储器访问的时间的部分成为越来越明显的处理延迟。因此,脉动神经网络引擎方法提供了显著的益处,其可以扩展到更大的神经网络。
脉动阵列可以用于进行神经网络计算。一些脉动阵列一次计算单个层的值。脉动阵列可以进行单个层的节点的并行计算。然而,这样的脉动阵列需要该层的输出发送到缓冲区和/或存储器,然后从缓冲区和/或存储器取回,之后将通过相同的脉动阵列将数据发送回去以进行下一层的计算。因此,在每个层之间存储和取回数据,产生读写延迟,并增加了存储器存储需求。此外,在具有大量层的更复杂的神经网络的情况下,延迟可能变得相当大。
所公开的脉动神经网络引擎通过以下方式来缓解这些问题:使用沿引擎的第一布置(例如列)的DPU来进行神经的第一层的计算,使用沿引擎的第二布置(例如列)的DPU来进行神经网络的第二层的计算,以此类推。为了在避免上述布线问题的同时适应多个层的计算,所公开的脉动神经网络引擎使用脉动脉冲来进行层到层数据分组通信。具体来说,某个布置(例如列)的DPU会为特定层生成激活输出,然后将这些激活输出脉动地脉冲到分配给下一层的DPU。因此,每个DPU包括(1)输入脉动元件(在本文中称为“接收器块”),其接收表示前一层的输出的数据分组并通过相同层的其他DPU脉动地脉冲这些数据分组,以及(2)输出脉动元件(在本文中称为“发送器块”),其将DPU的激活输出脉动地脉冲到下一层的一个或多个DPU的接收器块。节点的计算在电路中进行,该电路定位成从接收器块接收数据,然后输出数据到发送器块。例如,如下面更详细描述的,图5中DPU的计算可以在处理块中进行。数据可以从接收器块610发送到基于反馈的卷积电路(顺时针和逆时针)130、132。卷积130、132的输出可以基于脉动脉冲被增量地反馈回卷积块中,如下面更详细描述的。基于反馈的卷积130、132可以将输出发送到加法器140,其被馈送到sigmoid函数150中,并且被发送至发送器块151。
图5是图3的脉动神经网络引擎300的DPU的图示,配置为在用于进行卷积神经网络的脉动神经网络引擎300的实施方式中进行顺时针130和逆时针132卷积(也称为反顺时针卷积,或“aconv”)。DPU包括接收器块610和发送器块151,中心虚线区域对应于DPU的处理块。处理块包括用于进行DPU的处理计算的电路,包括卷积电路130、132、求和电路140和激活函数电路150。数据标记可以被放置在从发送器块151发送的每个数据分组上,例如通过发送器块151,其从关联的硬件存储器(未示出)访问DPU的ID,并将该ID附加到输出数据分组。标记位可用于指示整个脉动神经网络引擎中脉冲的数据的起源点和有效性。作为对正在处理的数据结束的指示,发送器块151可以不将数据标记放置在系列中的最后一个数据分组上以作为加法器140的指示符。
两个输入yin_1和y_in2分别提供给卷积130和132。例如,图5的DPU可以用于图4C的阵列结构中,其中交叉互连允许DPU在每个脉动脉冲中从不同的源接收两个数据分组。因此,在各种实施方式中,DPU的处理电路中的卷积引擎的数量可以对应于在每个脉动脉冲期间接收的数据分组的数量,如由交叉结构所确定的。根据DPU在脉动阵列中的位置,可以需要多个数据脉动以获得进行这些卷积的信息。为了进行卷积130和aconv 132,处理块可以确定什么权重应当应用于相应的输入(例如,作为卷积滤波器)。基于指针Pconv和Paconv指向的数据,为yin_1和y_in2中的每一个确定权重。这些指针可以是与输入一起脉冲的数据标记的一部分。在每个脉动脉冲上,在130中进行卷积计算的适当权重为win_1=weight[Pconv]。类似地,在132中进行的aconv计算的适当权重为win_2=weight[Paconv]。指针Pconv133和Paconv134指向表中的权重值(例如,存储在并入DPU中或可由DPU访问的存储器中的权重表)。指针Pconv和Paconv 133、134开始分别指向表的第一和最后位置中的权重值,且在不同的方向上移动通过表。当在hj中存在有效数据时,在每个脉动脉冲中,更新指针Pconv以指向增大的地址号的表格位置中的下一权重值,而更新指针Paconv以指向减小的地址号的表格位置中的下一权重值。Pconv和Paconv的组合步骤数将为值N。这些指针133、134指示表中的适当权重w1至wN以应用于相应的输入值syin_1和y_in2来进行处理。在一些实施方式中,每个DPU可以存储权重表的副本(或其包括要由特定DPU使用的权重的一部分)。这可以使得从权重表更快地读取数据,但是以增加每个DPU占用的硅面积为代价,这是由于添加了内部存储器。在一些实施例中,DPU可以从存储在外部存储器中的权重表获取权重。这样产生用于脉动神经网络引擎的更小且更便宜的芯片,但是这样做的代价是从外部存储器获取权重较慢。
卷积130的输出被标记为yout_1,aconv 132的输出被标记为yout_2。yout_1和yout_2的值被反馈到其相应的卷积单元,以便它们的值与输入yin_1和yin_2和其相应的权重的下一个乘法相累加(由接收器块610在另一脉动脉冲之后发送):
yout_1[k]=yout_1[k-1]+Win_1.yin_1[k]
yout_2[k]=yout_2[k-1]+Win_2.yin_2[k]
其中索引[k]指的是当前输出,索引[k-1]指的是在卷积单元中实现的乘法和累加运算中的前一个输出。
当不再从接收器块hj接收带标记的数据时,加法器140被激活且将yin_1和y_in2的最后的值相加。加法器140将其输出传递给激活函数150。在N个脉动脉冲结束时,将激活函数150的输出提供给接收节点sj 151。因此,来自sigmoid的最终输出被锁存到sj链中,且将就绪以发送到分配给神经网络中的下一层的节点的DPU。h*块(目标脉动元件)是DPU流动来自前一层的数据的地方,且DPU基于源标记提取所需的数据。然后,DPU的处理组件进行所需的计算,并在处理组件完成时,其将该处理的结果锁存到s*块上。锁存到s*块上的数据就绪以传输到下一层,例如,当DPU的所有处理完成并且所有结果都锁存到s*块中时。脉动神经网络引擎可以在层之间实施握手(handshake),以确定何时将数据从层的DPU的s*块发送到下一层的DPU的h*块。可以在分配给同一层的所有工作者完成其工作的同时将数据保存在sj中(例如,关于图4C所的讨论,某些工作者可以更快地接收数据,从而更快地完成其工作)。DPU使用握手协议告诉下一层的DPU它具有所有数据,并检查下一层的DPU是否要接收它。如果响应为是,则DPU开始脉动地传输其数据。
图6A是在后向传播期间从神经网络的一个层到神经网络的先前层的数据流的方向的示意图。如上所述,在训练期间发生后向传播以细化神经网络的权重,以便在发生另外的前向处理时有益地最小化神经网络的未来误差。如图6A所示,使用层2中的权重,从si2,i=1..N,误差信号被发送到层1中的节点si1,i=1..N。在为镜像此配置而连线的处理器中,可以在后向传播期间根据数据到达所来自的接线来标识数据起源。然而,在所公开的脉动神经网络引擎中,数据以脉冲行进,因此需要另一种机制来标识不同数据所源自的DPU。
图6B示出了由脉动神经网络引擎使用的带标记数据的两个示例。图6C和6D示出了由所公开的脉动神经网络引擎实现的前向和后向传播的数据加上信息和处理控制标记的脉动传输。图6C和6D中的圆形特征表示神经网络的两个不同层中的节点。提供指示哪些权重与哪个节点相关联的虚线箭头以供参考,并且不一定描绘了进行这些节点的处理的DPU之间的物理连接。应当理解,如上所述,数据可以以脉动脉冲在实线箭头的方向上并沿着其路径流过节点。
图6C示出了从两个层中的第一层的节点到两个层中的第二层的节点的数据的前向传播的图示。在前向传播中,第二层的节点使用标记来标识来自前一层的激活输出,并确定是否或如何需要处理此类输出。可以通过与每个节点相邻的所示公式来计算后续层中的三个节点的值,其包括输入层的单个处理节点的权重,绘示为w11、w21和w31。在前向传播期间,产生激活信号的节点的标识被插入该激活信号的标记中。由于脉动传递,激活信号以不同的顺序到达每个接收节点。然而,每个节点配对(并记录)接收的权重和激活信号以计算其激活信号的加权和。
图6D示出了从第二层的节点到第一层的节点的后向传播。在后向传播中,数据和带标记的信息的脉动流动反向于输入。当累加的结果脉动地移回层[l]中的节点时,损失相对于激活的偏导数后向传播并沿着层[l+1]累加。在后向传播过程期间,与每个节点相邻的所示公式用于计算更新的权重值。在后向传播期间,当脉动流动倒转时,权重和激活源的记录的配对允许每个节点正确地配对其损失相对于权重的计算出的偏导数(δi [l])和正确的权重。与前向传播不同,在后向传播期间,当数据后向传播时,累加偏导数的加权和。标记在通过的每个节点中通知目标源,且当目标地址匹配时,每个节点将其计算出的偏导数和权重相加。后向传播是用在前向传播中使用的权重的转置矩阵。
图6E示出了示例神经网络中的前向传播、后向传播和更新的示例。所示的示例是两层完全连接的DNN,具有400个输入节点、25个隐藏节点和10个输出节点,其用于手写数字识别。每个状态所涉及的脉动脉冲的总数由涉及的节点的数量分别计算为231、18和213个脉动脉冲。所有的延迟可以在脉动脉冲的数量中计算。网络可以在梯度下降(“DC”)、小批次GD或随机GD中训练。在训练模式中,网络将依次处于3种状态:“F”前向,“B”后向和“U”权重的更新。此图中未示出的其他控制信号用于将网络置于这些状态中的每个状态。这些信号还控制沿流水线结构的传播状态。控制信号还用于指示何时激活信号被锁存并就绪以传播到下一层,其他信号用于指示何时将所有激活信号都传递到下一层,等等。
在一些实施例中,系统可以通过跟踪在训练的各个阶段期间使用的脉动脉冲的数量来确定训练神经网络所需的时间。在图6E的示例训练场景中,前向传播用231个脉动脉冲进行,后向传播用18个脉动脉冲进行,权重的更新用213个脉动脉冲进行。因此,估计训练神经网络需要462个脉动脉冲。
图像的像素值可以用作输入,以开始通过脉动网络的前向传递。然后,系统可以通过脉动网络进行后向传播,并调整一个或多个节点的权重,例如,将前向传递的输出与预期输出进行比较,并后向传播偏差。在某些实施例中,后向传播可以在一个图像的值通过脉动网络前向传递之后发生。例如,图像的值可以通过脉动网络前向传播,该相同图像可以发生后向传播,并根据后向传播调整权重。在替代实施例中,后向传播可以在使一组图像传递通过脉动网络之后发生。系统可以使用后向传播来确定用于调整权重的批次大小。
图6F示出了基于批次的后向传播的过程620的流程图。在框622,可以确定批次大小。批次大小可以包括多个图像和/或其他输入源,其将在进行后向传播之前,前向传递通过脉动神经网络引擎。在框624,可以将图像输入到脉动网络中(例如,将其像素值作为输入提供给对应于神经网络的第一层的节点的DPU)。在框626,可以递增计数器。在框628,系统可以确定计数器是否满足批次大小。如果不是,则可以将另一图像输入到脉动网络中。如果是,则在框630,可以重置计数器,并在框632进行后向传播。例如,批次大小可以在框622确定为10个图像。可以在框624输入第一图像,且在框626将计数器递增到1。计数器(1)在框628不满足批次大小(10),从而过程继续至框624,在框624输入第二图像。重复框624、626和628,直到10个图像输入到脉动网络中。然后,在框628,计数器(10)满足批次大小(10)。然后,在框630将计数器重置为0,在框632进行后向传播。尽管过程620的各个步骤被描述为由脉动网络进行,但是在替代实施例中,这些步骤可以由用于脉动神经网络引擎的另一合适的控制处理器来进行。
图7示出了与数据相关联并且在后向传播期间使用的标记802的图示。对于目标脉动元件hj,后向传播需要将数据发送回进行前一层中的节点的处理的DPU的特定来源脉动元件。如图7所示,进入和离开目标脉动元件hj804的数据具有与该数据相关联的标记。标记允许系统根据需要正确地向网络的特定区域发送和接收数据。
图8A是通过图3的脉动神经网络引擎的后向传播的另一图示。如图所示,“originating_address”的标记在前向传播阶段期间与权重w1…wN配对。在后向传播期间,节点600和同一层中的其他节点将使用这些权重并乘以误差量δ,它们从下一层向输出接收。权重也可以用起源地址标记,以帮助数据通过处理节点600的后向传播。指针Pconv和Paconv可以在与前向传播方向上递增相反的方向上递增。对于权重的使用,地址匹配指示符可以用于确定权重w1…wN的起源地址。出于计算目的,如果起源地址匹配,则值o=i+a,否则o=i。
图8B示出了根据一些实施例的通过图3的脉动神经网络引擎的前向和后向传播的流程图。在框852,脉动神经网络引擎可以进行前向传播。在前向传播期间,数据可以经由图5的发送器块600传递至每个DPU。数据可以从发送器块600发送到卷积引擎Pconv和Paconv。然后,可以经数据乘以对应于数据源的权重,例如图5的W1,W2,...Wn。
在框854,数据可以标记有起源地址和权重。如图8所示,权重和/或起源地址可以保存到存储器中。在一些实施例中,权重和/或起源地址可以标记到数据上。本地存储的权重可以与存储器中的起源地址配对。然后,节点可以标识数据来自何处以在卷积引擎中累加。sigmoid的输出可以保存到存储器中。然后,权重和sigmoid的输出可以用于计算偏导数。
在框856,可以取回用于(多个)起源处理DPU的地址以进行后向传播。可以从具有权重和起源地址的表格取回地址。地址可以用于标识后向传播的方向。
在框858,可以取回权重。可以基于(多个)起源处理DPU取回权重。例如,对于要后向传播的(多个)特定DPU,可以取回相关联的权重。
在框860,可以使用取回的权重对(多个)起源处理DPU进行后向传播。例如,对于sigmoid,可以本地保存一个偏导数。可以为特定权重确定偏导数,然后沿着布置(例如列)脉动地脉冲到下一DPU,以进行下一偏导数的计算。这标识出节点的输出对权重的敏感程度,例如权重对网络的输出的影响程度。在后向传播期间,可以基于已标识出的节点和权重对输出的敏感度来调整权重。尽管过程850的各个步骤被描述为由脉动神经网络引擎进行,但是在替代实施例中,这些步骤可以由用于脉动神经网络引擎的另一合适的控制处理器来进行。
图9和图10绘示了在训练期间通过脉动神经网络引擎的信息的传播。图9是由脉动神经网络引擎的DPU在前向传播期间针对顺时针和逆时针卷积进行的计算的示意图,图10是紧随其后的后向传播在后向传播中的累加求和的图示。在每个处理节点中,对于所有i,j,l,进行局部值在训练期间,示例对(x(i),y(i))的每个前向传播允许计算sigmoid函数的导数g’(z(i)),或每个DPU中的a(i)(1-a(i)),其中a(i)是sigmoid函数单元或其他类似的激活函数(例如,tanh、ReLU、sigmoid等)的输出。该值存储在DPU中。本领域技术人员将认识到,如果使用不同的非线性函数,则将使用不同的导数函数。
现在参考图10,在紧随其后的后向传播中,从输出开始,并且使用用于后向传播的加权和本地保存在每个DPU中的a(i)·(1-a(i)),每个DPU计算其在后向方向上的下一层的σ(l) 其为所有个后续层乘以当前元sigmoid的导数的加权和。在每个DPU中,可以进行更新:
可以通过将累加值除以m(训练对的总数),对所有的对(x(i),y(i))进行上述操作,并且取平均值
该程序还通过平均值(如果是第一层)或该平均值加上/>(当前权重的调制值)调整权重。每个DPU在后向传播过程期间接收数据,其中
图11A绘示了根据示例实施例的用于以脉动性质处理数据分组的脉动神经网络引擎的一部分100。在一些实施例中,脉动神经网络引擎包括脉动处理器芯片,其包括嵌入脉动处理器芯片内的处理节点。说明性地,在第一层中仅绘示了了四个处理节点,在第二层中仅绘示了四个处理节点。然而,在替代实施例中,脉动芯片可以包括分配给神经网络的每个层的更多或更少的处理节点。脉动神经网络引擎的部分100包括DPU 110、112、114和116,其进行神经网络的第一层中的节点的计算,以及DPU 120、122、124和126,其进行网络的第二层中的节点的计算。起自处理节点的箭头指示数据分组行进的方向。作为示例实施例,互连存在于DPU 110、112、114和116与DPU 120、122、124和126之间。出于说明目的,仅针对第二层的两个DPU突出显示了卷积运算。
在一些实施方式中,这样的互连被提供为双向脉动传递。这些互连提供从DPU 110到DPU 120的输出,从DPU 112到DPU 124的输出,以及从DPU 116到DPU 126的输出。DPU110、112、114和116之间的互连包括从DPU 110到DPU 112的输出,从DPU 112到DPU 110的输出。另外,DPU 114具有到DPU 116的输出,并且DPU 116具有到DPU 114的输出。
继续到神经网络的第二级,DPU 120连接到布置以进行顺时针卷积130和逆时针卷积132。如本文所述,顺时针和逆时针卷积(或反卷积)是指每个DPU中的两个卷积引擎。以类似的方式,来自一个DPU 126的一个输出前进到卷积引擎134,来自DPU 126的一个输出前进到逆时针卷积(Aconv)引擎136。神经网络的第二级内的互连包括从DPU 120到DPU 122的输出和从DPU 122到DPU 120的输出。此外,DPU 124具有到DPU 126的输出,且DPU 126具有到DPU 124的输出。
卷积引擎130具有到加法器140的输出。如关于图5所讨论的,还向卷积引擎130的输入提供反馈回路。反卷积引擎132具有到加法器140的输出。还向反卷积引擎132的输入提供反馈回路。在与上述类似的配置中,卷积引擎134具有到加法器142的输出。还返回向卷积引擎134的输入提供反馈线。反卷积引擎136具有到加法器142的输出。还向反卷积引擎136的输入提供反馈回路。加法器140、142连接到元件150、152,元件150、152尽管示出为sigmoid函数,但可以是tanh、ReLU、sigmoid或其他合适的激活函数。
现在将描述时间步骤描述,以便读者可以跟随数据分组从起源节点到激活函数处理的过程。为了便于描述,数据分组被描述为与以下相关:系列 系列/>系列/>或系列/>(对应的符号用于说明这些数据分组通过脉动神经网络引擎的部分100的流动)。在初始时间步骤=0,两个系列1数据分组/>位于DPU 110内,两个系列/>数据分组位于DPU 112内,两个系列3数据分组/>位于DPU 114中,两个系列4数据分组位于DPU 116中。
如图11B所示,其表示时间步骤=1,系列1数据分组中的第一个脉动地传送到第二神经网络层的DPU 120,系列1数据分组/>中的第二个脉动地传送至第一神经网络层的DPU 112。对于系列2数据分组/>第一数据分组/>被脉动地传送至第二神经网络层的DPU124,且第二数据分组/>被脉动地传送至第一神经网络层的DPU 110。对于系列3数据分组第一系列3数据分组/>被脉动地传送至第二神经网络层的DPU 122,且第二系列3数据分组/>被脉动地传送至第一神经网络层的DPU 116。对于系列4数据分组/>第一系列4数据分组/>被脉动地传送至第二神经网络层的DPU 126,且第二系列4数据分组/>被脉动地传送至第一神经网络层的DPU 114。
参考图11C,其表示时间步骤=2,所有系列的每个数据分组都已进入第二神经网络层的DPU。DPU 120具有系列3数据分组和系列2数据分组/>DPU 122具有系列1数据分组/>和系列4数据分组/>DPU 124具有系列1数据分组/>和系列4数据分组/>DPU 126具有系列2数据分组/>和系列3数据分组/>
参考图11D,其表示时间步骤=3,系列系列/>系列/>和系列/>数据分组已如图所示由DPU进一步处理,在时间步骤=2处存储了这些数据分组。在DPU 120中,系列4数据分组/>被处理并发送到分配给神经网络的下一层的DPU。在DPU 122中,系列2数据分组被处理并在下一时间步骤发送到DPU 120。在DPU 124中,系列3数据分组/>被处理并在下一时间步骤发送到DPU 126。在126中,系列1数据分组/>被处理并传送至分配给下一神经网络层的DPU
参考图11E,其表示时间步骤=4,已经对以下经处理的数据分组完成处理:α1系列α2系列/>ε1系列/>ε2系列/>μ1系列/> μ2系列/>Ω1系列/>和Ω2系列/>经处理的数据分组通过在其分组符号前使用希腊字符来区分。加法器140将数据经处理的数据分组相加,然后将其发送到激活函数150。
参考图11F,其表示时间步骤=5,数据分组α1系列α2系列/> ε1系列ε2系列/>μ1系列/>μ2系列/>Ω1系列/> 和Ω2系列/>在经加法器140处理后输入到sigmoid函数150、152中。sigmoid函数150、152的输出然后可以发送到发送器块160、162、164、166中的对应的发送器块。如图所示,sigmoid函数150输出到发送器块160,且sigmoid函数152输出到发送器块166。没有为发送器块162和164图示sigmoid函数(以及相关联的卷积和加法器电路)。发送器块160、162、164、166然后可以将数据发送到下一层170、172、174、176的接收器块中的某些连接的接收器块,由此数据如本文所述脉动地脉冲。在sigmoid的输出之后,在到达发送器块160、162、164、166之前,可以从存储器读取地址。
与常规的神经网络处理相比,本文描述的脉动神经网络引擎具有许多优点。可以对脉动神经网络引擎进行编程,以使得用于处理的所有权重都可以从总线编程到DPU中,为处理各种神经网络架构的芯片架构提供了灵活性。作为非限制性实施例,高级微控制器总线可以用于向每个DPU发送权重。图示和描述的脉动设计可以允许整个神经网络的流水线操作,也就是说,无需像现有处理器中一样,在完成对第一层的节点的处理之后,在将这些值取回到相同的工作者中以处理下一层的节点之前,将激活值推入到存储器中,就可以进行节点的连续计算。脉动神经网络引擎可以是可扩展的,因此可以增加神经网络中每层的节点的数量或层的数量,而不必重新创建相应的专用新芯片架构。如本文所示和所述,脉动神经网络引擎允许数据分组传输,其中对不同分组的处理在不同时间发生,但是由于DPU的配置,处理可以正确地定时。
图11G绘示了根据示例实施例的使用所公开的脉动神经网络引擎以脉动性质处理数据分组的过程1200的流程图。在框1202,数据(例如,卷积处理电路的输出,包括任何激活函数,或从相邻的发送器块脉动地脉冲)可以在分配给神经网络的第一层的DPU的发送器块处接收。该步骤的示例在图11A的time=0显示,其中发送器块110、112、114、116从其相应的处理块接收数据。从框1202,过程1200前进到框1204以在脉动神经网络引擎上的同一布置(例如列)的相邻DPU之间进行连接,且过程1200前进到框1206以在相邻布置(例如列)的DPU之间进行层间连接。
在框1204,数据可以脉动地脉冲到第一层的至少一个其他发送器块。该步骤的示例在图11B的time=1显示,其中来自发送器块110、112、114、116的数据被分布到发送器块110、112、114、116之间的其他块。例如,来自发送器块110的数据被发送到第一层的另一发送器块,例如发送器块112。在一些实施例中,数据的传输是通过发送器块之间、接收器块之间以及发送器块与接收器块之间的接线完成的。来自第一层的发送器块的数据可以包括其地址的标记。例如,从发送器块110发送的数据可以包括与发送器块110相关联的地址标记。这允许从第一层接收数据的第二层标识数据从哪里来。这样的标记有利地允许DPU标识它们是否需要处理给定的传入数据分组,为它们需要处理的不同数据分组标识合适的权重,并进行数据分组的指定处理而无论接收它们的顺序如何。第二层的接收器块读取嵌入在从第一层的发送器块接收到的数据中的起源地址。尽管被描述为第一层和第二层,但是应当理解,该术语并不将所描述的技术限于神经网络的实际的第一和第二层,而是限于任何两个连续的层。
数据可以从第一层的第一发送器块跨越到第二层的第一接收器块。在一些实施例(例如,图4C)中,数据可以经由附加连接在第一和第二层之间传递,例如使用第一层的第二发送器块到第二层的第二接收器块。该步骤的示例在图11B的time=1显示,其中来自发送器块112的数据被发送到接收器块124,且来自发送器块114的数据被发送到接收器块122。在一些实施例中,可以实现更多或更少的交叉数据传输以将数据从一个层传输到另一层。交叉的数量可以在不同的实施方式中变化(参见例如图4A-4C),根据需要来平衡增加处理速度(例如,更多的交叉允许每个脉动脉冲传输更多的数据分组)和增加计算复杂度(例如,每个脉动脉冲发送更多的数据分组会需要每个DPU中附加的计算电路)的冲突利益。例如,更多的交叉可用于有益地更快地将数据从层移到层,但可能会占用裸芯上更多的空间。在一些实施例中,从层到层的数据传输可以包括交叉的组合并且有益地将输出保存到存储器、缓冲器和/或诸如此类。在一些实施例中,节点的数量不是偶数。标记信息可以包括无效指示,以指示不要使用节点之一,以便从交叉获得偶数个节点。
在框1206,数据可以分布到第二层的接收器块。该步骤的示例在图11B的time=1显示,其中来自发送器块110、112、114、116的数据被分布到接收器块120、122、124、126。例如,来自发送器块110的数据被发送到第二层的接收器块,例如接收器块120。在一些实施例中,在框1206从发送器块110发送到当前层的接收器块的数据和在框1204发送到前一层的另一发送器块的数据是相同的。应当理解,取决于它们相对于交叉连接的定位,一些DPU可以发送单个脉动脉冲的两个数据分组到相同层(例如,脉动阵列的相同布置,比如列)的相邻DPU,而其他DPU可以发送一个数据分组到相同层的相邻DPU并发送一个数据分组到下一层的连接的DPU。例如,布置中的DPU可以经由发送器和接收器块脉动地脉冲数据到布置中的相邻的处理单元,且相邻的布置可以通过一个或多个交叉连接来连接。
在框1208,来自第一层的其他发送器块的数据可以发送到第二层的接收器块。该步骤的示例在图11C的time=2显示,其中来自发送器块110、112、114、116的数据被分布到接收器块120、122、124、126。例如,来自发送器块110的数据被发送到接收器块120。
从框1208或1206,过程1200可以移动到框1210。在框1210,来自第二层的接收器块的数据可以发送到该DPU的处理电路,例如上文关于图5所述的反馈卷积电路。该步骤的示例在图11C的time=2显示,其中在接收器块120接收的两个数据分组被输入到反馈卷积引擎130、132中,且在接收器块126接收的两个数据分组被输入到反馈卷积引擎134、136中。如本文所述,脉动神经网络引擎使用脉动脉冲在DPU之间传递数据。因此,在框1210对在框1206接收的数据进行的数据卷积处理的时间可以与在框1210对在框1208接收的数据的进行数据卷积处理的时间不同。此外,有利的是,可以将数据从一层传输到另一层,而无需写入或读取缓冲区、存储器和/或诸如此类。因此,可以以减少的传输时间来进行从一个层到另一层的数据传输。尽管过程1200的各个步骤被描述为由脉动神经网络引擎进行,但是在替代实施例中,这些步骤可以由用于脉动神经网络引擎的另一合适的控制处理器来进行。
图11H绘示了根据示例实施例的用于在所公开的脉动神经网络引擎中进行基于反馈的卷积处理的过程1250的流程图。过程1250可以在过程1200的框1210之后开始。由于使用数据起源标记,过程1250可以有利地将通过训练另一个神经网络而标识出的权重,潜在地应用在与脉动神经网络引擎不同的硬件上。例如,可以使用标识数据起源的标记信息将另一个神经网络的优化权重应用于当前神经网络。可以在训练其他神经网络时确定权重,然后将其导入到由脉动神经网络引擎处理的神经网络中。导入权重时,可以基于配对来应用权重,该配对是基于数据来源的数据地址和该数据的对应的权重。当数据从层发送到层时,标记信息可以包含在数据中。脉动神经网络引擎的裸芯上的DPU可以具有关于其在裸芯上的位置的信息(例如,存储其ID的存储器)。因此,可以将神经网络的节点分配给裸芯上的不同DPU,同时仍然保持根据其原始配置处理数据的能力。
在框1252,可以从DPU的接收器块在卷积引擎处接收第一数据。该步骤的示例在图11C中的time=2显示,其中来自接收器块GPU 120的数据被发送到卷积引擎130。从框1252,对于刚接收到的数据,过程1250过渡到框1254,对于将反馈到卷积引擎中的任何先前处理的数据,过渡到框1258。
在框1254,可以将接收的数据乘以权重,权重可以使用数据的原始标记来标识。该步骤的示例在图11C中的time=2显示,其中来自接收器块122的数据被发送到卷积引擎130。数据/>被乘以权重ε1。
在框1256,乘以权重的数据被发送到加法器。该步骤的示例在图11C中的time=2显示,其中乘以权重ε1的数据被发送到加法器140。在一些实施例中,权重可以本地存储和/或从外部存储器取回。
在框1258,接收的数据被反馈到卷积引擎130。例如,在用于分析图像的卷积神经网络中,可以将不同的滤波器应用于输入值以标识图像中的不同类型的特征。这些滤波器通常跨越多个相邻值的阵列,例如3x3或5x5区域。由此,可能需要从前一层的多个DPU输出的值以进行给定卷积。为此,接收的数据可以有益地反馈到卷积引擎中以进行进一步的卷积处理。
过程1250可以从框1256和1258中的一个或两个前进到框1260。在框1260,加法器140确定是否已经在加法器140处累加了所有指定用于在该特定DPU进行处理的数据,例如通过将在加法器处累加的数据的标记与指定标记的列表进行比较。如果是,则在框1262,在加法器140处累加的数据被相加,加法器140的输出被发送到sigmoid函数150以进行sigmoid计算(或另一合适的激活函数)。激活输出被发送到发送器块,在发送器块处,标记信息在数据脉动地脉冲到其他DPU之前被添加。尽管过程1250的各个步骤被描述为由脉动神经网络引擎进行,但是在替代实施例中,这些步骤可以由用于脉动神经网络引擎的另一合适的控制处理器来进行。
所描述的脉动流引擎系统可以根据需要添加到数据存储装置和/或存储器装置,例如,硬盘驱动器、固态驱动器、固态非易失性存储器、易失性存储器和存储级存储器,以允许脉动流引擎访问来自所附存储器的数据。
可以创建在脉动流引擎和存储器之间提供的连接,以允许将所需量的数据提供给脉动流引擎。
参考图12,示出了脉动流引擎(“SFE”)核心1800。SFE核心1800设置有激活输入1802,且输入1802被处理以提供激活输出1804。核心1800包括如上所述的一个或多个脉动神经网络引擎。例如,核心1900可以由硅制成,并且可以提供附加电路以将核心能力支持和扩展到更大数量的N个处理节点。
如由标识核心1900的DPU之间的互连的箭头所指示的,布线布局遵循蛇形配置以有效地利用硅区域。激活输入可以进入特定的访问点并脉动脉冲到其他目标脉动元件以实现分辨率和处理节点数量的可扩展性。激活输出可以通过脉动脉冲离开特定的处理节点,以实现分辨率和处理节点数量的可扩展性。权重输入可以从预训练的网络提供,因为它们可以特定于每个处理节点 即不在处理节点之间共享。取决于实施方式,可以在相邻的DPU之间共享乘法和加法电路。
图13绘示了处于推断操作模式的脉动流引擎。包括一个或多个脉动神经网络引擎的脉动流引擎核心1900连接到输入存储器布置1902。输入存储器布置1902可以从连接的处理器和/或联网的远程装置接收输入1904(例如,输入图像数据或其他输入数据)。(多个)权重存储器堆1906可以向脉动流引擎核心1900内的各个DPU提供权重,例如通过将这样的权重提供给DPU内的本地存储器,或通过在计算期间根据需要由DPU访问。系统控件1908向输入存储器1902和(多个)权重存储器堆1906以及激活存储器堆1910提供输入。激活存储器堆1910也连接到输入存储器1902。
系统控件1908可以是有限状态机或处理器,例如,ARM处理器、RISC-V处理器或适于指令集架构(“ISA”)的另一控制器。ARM处理器是基于Advanced RISC Machines(因此,“ARM”)开发的精简指令集计算(“RISC”)架构的CPU系列之一。RISC-V(发音为"risk-five")是基于已建立的RISC原则的开放式ISA。
进一步参考图14,输入存储器1902允许主机处理器(未示出)提供输入到深度神经网络,以及提供网络的权重(例如,训练期间先前设定的权重)。主机处理器发送将由系统控制处理器处理的命令和数据。权重存储器堆1906和激活存储器堆1910扩展了SFE核心1900的能力,以对具有较大数量的处理节点和较大数量的层的深度神经网络进行建模。系统控件1908使用SFE核心1900来通过大量的神经网络层进行激活信号的计算。通过正确选择权重和激活存储器堆,系统控件1908可以将深度神经网络计算扩展到除脉动流引擎核心1900中物理可用的DPU之外的每层的大量处理节点。
参照图15,核心1900设置有另一组连接,用于偏差输出2000和偏差输入2002。这些连接允许通过核心1900处理偏差。偏差输出2000和偏差输入2002可以使用核心1900支持后向传播来训练神经网络权重。
参考图16,在输入存储器1902与例如激活存储器堆1910之间提供了附加的一组连接。在激活和停用存储器1910与脉动流引擎核心1900之间提供附加的连接。在脉动流引擎核心1900和输入存储器1902之间提供另一连接。这些连接允许处理往返于各个组件的数据,以允许偏差穿过通过整个系统,例如在后向传播期间。
输入存储器1902允许主机处理器通知输入和权重以在深层神经网络的每个层中进行卷积。主机处理器可以取回权重并在脉动流引擎的DPU之间分布这些权重。在非限制性实施例中,系统控件1908可以是有限状态机(FSM)或合适的处理器,例如ARM或RISC-V处理器。主机处理器可以发送由系统控制处理器处理的命令和数据。
脉动流引擎系统可以设置在单核心布置中,或可以布置在其他配置中。这些系统还可以用于不同的布置,例如图16中,在磁盘布置中,在图17中,在独立的固态驱动器中,在图18中,在可以通过例如卡接口连接的固态驱动器中,或如图19中所示,在存储级存储布置中。
图20绘示了多核心SFE。在图20的实施例中,单个系统控件管理四个SFE核心。其他实施例可以具有更多或更少数量的核心。系统控件可以管理SFE核心,以便并行运行不同的学习和推断系统。
在一些实施例中,给定的神经网络中可能存在太多的层,以至于该网络的所有计算不能在单个脉动神经网络引擎裸芯上在一次通过中进行。例如,某些神经网络可能包含1000个层或更多。如本文所述,DPU可以在裸芯上布置为布置(例如列和行),沿着某一列的DPU全部被分配来进行相同神经网络层的节点的计算。因此,当神经网络层的数量超过裸芯的列数时,则可以认为神经网络太大而无法在裸芯上进行处理。在一些实施例中,可以利用反馈回路来在裸芯上对层重新目的化(repurpose)以克服该挑战。
图21示出了用于对裸芯的处理单元的DPU布置(例如布置为处理单元的线性并行列)重新目的化的过程2100的流程图,以适应具有超过裸芯的列数的数目的层的大型神经网络。在框2102,输入/输出存储器和选择模块1902(称为“模块1902”)可以标识神经网络的层数。例如,神经网络可以具有节点的1000个层。尽管过程2100的各个步骤被描述为由模块1902进行,但是在替代实施例中,这些步骤可以由用于脉动神经网络引擎的另一合适的控制处理器来进行。
在框2104,模块1902可以标识可以通过裸芯的列在一次通过中处理的层的最大数量。例如,裸芯可以包括DPU的100个列,其提供足够的资源以进行100个层的计算。
在框2106,模块1902可以将裸芯配置为进行神经网络的第一组层的计算,第一组组中的层数对应于裸芯上的DPU的列数。例如,模块1902可以分配神经网络的第一100个层的节点的DPU标识,其中第一列的DPU分配为进行第一层的节点的计算,第二列的DPU分配为进行第二层的节点的计算,以此类推,直到第100列的DPU分配为进行第100层的节点的计算。
在框2108,模块1902可以确定是否已进行了神经网络的所有层的计算。一旦确定框2108确定已进行了神经网络的所有层的计算,过程2100过渡到框2114,在框2114,神经网络的最终输出被保存到存储器。然而,如果模块1902确定没有进行所有的层计算,则过程2100过渡到框2110。
在框2110,最后的经处理的层的激活输出可以保存到存储器中(例如,激活存储器堆1910)。在框2112,模块1902可以将裸芯重新配置为进行下一组层的计算。继续以上示例,示例裸芯上的DPU的100个列将被重新配置为使得第一列的DPU分配为进行第101个层的节点的计算,第二列的DPU分配为进行第102个层的节点的计算,以此类推,直到第100个列的DPU分配为进行第200个层的节点的计算。
接下来,在框2114,模块1902可以从存储器1910取回保存的激活输出并将这些激活输出输入到第一列的DPU中。这些值将传播通过DPU,从而计算下一组层101-200的计算。重复框2108-2110,直到进行所有的1000个层。然后在框2114,裸芯输出第1000个层的最终激活输出作为神经网络的输出。有利地,通过使用所公开的具有控制器和外部存储器的反馈回路,裸芯可以进行具有超过裸芯的资源的容量的大量的层的神经网络的计算。
在一些实施例中,例如在图20的多裸芯实施方式中,这样的大型神经网络可以跨越多个裸芯实现。例如,第一裸芯可以用于多个层的第一子组的计算,第二裸芯可以用于多个层的第二子组的计算。这可以使用两个、三个、四个或更多个裸芯完成(根据可用的和需要)。第一裸芯上的DPU的最终列的激活输出可以保存到存储器并提供给第二裸芯上的第一列的DPU,使得第二裸芯可以进行层的第二子组的计算。如果神经网络的层数超过裸芯的组合容量,则多裸芯分布式处理可以与图21的反馈回路相结合。
图22示出了实现脉动神经网络引擎的多个裸芯的流程图。过程2200可以开始于框2202,在框2202,脉动神经网络引擎可以接收要使用多裸芯脉动神经网络引擎系统处理的神经网络的参数,这些参数指示神经网络的层数。在框2204,脉动神经网络引擎可以访问关于每个裸芯的容量的信息。在框2206,脉动神经网络引擎可以确定层数超过任一裸芯的容量。在一些实施例中,该步骤是可选的。例如,脉动神经网络引擎可以使用多个裸芯,而无论层数是否超过任一和/或一个或多个裸芯的容量。
在框2208,脉动神经网络引擎可以分配第一裸芯的DPU以进行层的第一子组的处理,且在框2210,脉动神经网络引擎可以分配第二裸芯的DPU以进行层的第二子组的处理。在框2212,脉动神经网络引擎可以向第一裸芯的第一布置(例如列)提供初始输入值。在框2214,脉动神经网络引擎可以前向传播值通过第一裸芯。
在框2216,脉动神经网络引擎可以将第一裸芯的最后布置(例如列)的激活输出保存到存储器,且在框2218,脉动神经网络引擎可以将保存的激活输出传递至第二裸芯的第一列。在一些实施例中,脉动神经网络引擎可以将激活输出直接从第一裸芯的最后的列传递至第二裸芯的第一列。在一些实施例中,脉动神经网络引擎可以在裸芯之间存储和/或处理数据。
在框2220,脉动神经网络引擎可以前向传播值通过第二裸芯。在框2222,脉动神经网络引擎可以保存第二裸芯的最终激活输出作为神经网络输出。尽管过程1250的各个步骤被描述为由脉动神经网络引擎进行,但是在替代实施例中,这些步骤可以由用于脉动神经网络引擎的另一合适的控制处理器来进行。
图23示出了实现脉动神经网络引擎的多个裸芯的流程图。过程可以开始于框2302,在框2302,脉动神经网络引擎可以分配第一裸芯的DPU以进行层的第一子组的处理,且在框2304,脉动神经网络引擎可以分配第二裸芯的DPU以进行层的第二子组的处理。
在框2306,脉动神经网络引擎可以向第一裸芯的第一列提供初始输入值,且可以前向传播值通过第一裸芯。
在框2308,脉动神经网络引擎可以将第一裸芯的最后列的激活输出传递至第二裸芯的第一列,且在框2310,脉动神经网络引擎可以前向传播值通过第二裸芯。在一些实施例中,脉动神经网络引擎可以将激活输出直接从第一裸芯的最后的列传递至第二裸芯的第一列,和/或在它们之间执行功能,例如存储和/或处理数据。
在框2312,如果神经网络的所有层都被处理,则在框231,脉动神经网络引擎可以保存第二裸芯的最终激活输出作为神经网络输出。
在框2312,如果没有处理神经网络的所有层,则可以实现反馈回路以对第一和第二裸芯重新目的化。例如,在框2316,脉动神经网络引擎可以分配第一裸芯的DPU以进行层的第三子组的处理,且在框2318,脉动神经网络引擎可以分配第二裸芯的DPU以进行层的第四子组的处理。因此,反馈可以用于对第一和第二裸芯重新目的化以执行神经网络的附加层。
在框2320,脉动神经网络引擎可以将第二裸芯的最后列的激活输出传递至第一裸芯的第一列,且可以前向传播值通过第一裸芯。在一些实施例中,第一和第二裸芯重新配置为执行神经网络的层的第三和第四子组。脉动神经网络引擎可以将激活输出保存到存储器中,且当重新配置第一裸芯时将它们传递回第一裸芯。
在框2322,脉动神经网络引擎可以将第一裸芯的最后列的激活输出传递至第二裸芯的第一列,且在框2324,脉动神经网络引擎可以前向传播值通过第二裸芯。
在框2314,脉动神经网络引擎可以保存第二裸芯的最终激活输出作为神经网络输出。
在一个非限制性实施例中,公开了用于处理的布置。在该非限制性实施例中,公开了一种脉动流引擎,其包括:具有多个节点的网络,多个节点配置为接受数据分组、在前向传播中处理数据分组并提供输出,且其中多个节点配置为至少两个层且其中网络在脉动过程中沿着网络发送数据分组;至少一个输入存储器布置,配置为向具有多个节点的网络发送数据分组;至少一个权重存储器堆,连接到脉动流引擎;激活存储器堆,连接到输入存储器布置;以及系统控件,连接到输入存储器布置、激活存储器堆和至少一个权重存储器堆,系统控件配置为发送数据到输入存储器、权重存储器堆和激活存储器堆中的每一个。
在另一非限制性实施例中,公开了一种布置,其中每个节点还包括加法器布置和配置为产生用于激活人工神经元的功能的布置。
在另一非限制性实施例中,布置设置为其中函数是sigmoid函数。
在另一非限制性实施例中,布置设置为,其中每个节点还配置为计算加权和以用于卷积计算。
在另一非限制性实施例中,布置设置为,其中多个节点配置为进行每个节点内的计算和节点之间的传输。
在另一非限制性实施例中,布置还包括用于多个节点中的每个节点以创建数据分组的标记的布置。
在另一非限制性实施例中,布置设置为,其中每个节点配置为进行数据分组的顺时针和逆时针卷积。
在另一非限制性实施例中,布置设置为,其中每个节点配置有至少两个指针,其中至少两个指针配置为选择权重以应用于节点的计算。
在另一非限制性实施例中,布置设置为,其中脉动过程包括数据分组在脉冲期间从第一节点到第二节点的传输,且其中用于每个处理节点的权重通过非脉动电路带到节点。
在另一非限制性实施例中,布置设置为,其中脉冲由计算机时钟脉冲限定。
在另一非限制性实施例中,描述了一种布置,其中输入存储器连接到激活存储器,且其中激活存储器堆被连接以将后向传播输入到脉动流引擎中。
在另一非限制性实施例中,描述了一种计算机处理方法,包括:在输入存储器布置处接收输入,从输入存储器布置发送至少一个数据分组到脉动流引擎,在脉动流引擎中在神经网络的处理节点处接收数据分组,在处理节点处进行数据分组的计算以创建经处理的数据分组,将标记附加到经处理的数据分组,标记指示关于数据分组的信息(作为源处理节点的标识)和神经网络的处理节点处的控制位(用于指示接收节点的处理节点需要对数据分组做什么,数据是有效还是无效),在神经网络的脉动脉冲期间将经处理的数据分组从处理节点发送到接收节点,在接收节点处接收经处理的数据分组,对经处理的数据分组进行顺时针卷积和对经处理的数据分组进行逆时针卷积,以及根据经处理的数据分组的顺时针卷积和逆时针卷积的结果进行加法函数。
在另一非限制性实施例中,方法还包括根据顺时针卷积和逆时针卷积的结果进行非线性函数(如tanh、ReLU和sigmoid中的一个)。
在另一非限制性实施例中,方法还进行为,其中使用应用于经处理的数据分组的至少两个权重指针进行顺时针卷积和逆时针卷积。
在另一非限制性实施例中,方法可以进行为,其中至少两个权重施加到顺时针卷积和逆时针卷积。
在另一实施例中,方法可以进行为,其中当到达限定值时,进行的sigmoid函数反映神经网络中的人工神经元的状态。
在另一实施例中,方法还可以包括在处理节点本地存储数据分组的计算。
在另一非限制性实施例中,方法可以进行为,其中方法的每个步骤在脉动脉冲中进行。
在另一非限制性实施例中,方法可以进行为,其中脉动脉冲是通过顺时针和逆时针卷积之一的最长计算时间测量的。
在另一非限制性实施例中,公开了一种用于计算机处理的布置,包括:用于在存储器处接收输入的构件,用于从输入存储器布置向脉动流引擎发送至少一个数据分组的构件,用于在处理节点处接收数据分组并进行数据分组的计算以创建经处理的数据分组的构件,用于将标记附加到经处理的数据分组的构件,标记指示神经网络的处理节点处的处理,用于在神经网络的脉动脉冲期间发送经处理的数据分组的构件,用于在接收节点处接收经处理的数据分组的构件,用于对经处理的数据分组进行顺时针卷积和对经处理的数据分组进行逆时针卷积的构件,以及对经处理的数据分组的顺时针卷积和逆时针卷积的结果进行加法函数的构件。
在另一非限制性实施例中,布置还可以包括,用于进行顺时针卷积和逆时针卷积的结果的sigmoid函数的构件。
在另一非限制性实施例中,公开了一种包括脉动流引擎的布置,该脉动流引擎包括:具有多个节点的网络,多个节点配置为接受数据分组、在前向传播中处理数据分组并提供输出,且其中多个节点配置为至少两个层且其中网络在脉动过程中沿着网络发送数据分组;至少一个输入存储器布置,配置为向具有多个节点的网络发送数据分组;至少一个权重存储器堆,连接到脉动流引擎;激活存储器堆,连接到输入存储器布置;以及系统控件,连接到输入存储器布置、激活存储器堆和至少一个权重存储器堆,系统控件配置为发送数据到输入存储器、权重存储器堆和激活存储器堆中的每一个,以及连接到脉动流引擎的存储器装置。
在另一非限制性实施例中,公开了一种布置,其中存储器装置是硬盘驱动器。
在另一非限制性实施例中,公开了一种布置,其中存储器装置是固态硬盘。
在另一非限制性实施例中,公开了一种布置,其中存储器装置是存储级存储器。
在另一非限制性实施例中,公开了一种布置,其包括脉动流引擎,脉动流引擎包括具有多个节点的网络;以及附接到脉动流引擎的至少一个存储器布置。
在另一非限制性实施例中,公开了一种布置,其中至少一个存储器布置是硬盘驱动器、存储级存储器和固态驱动器中的至少一个。
尽管本文已经描述了实施例,但是受益于本公开的本领域的技术人员将理解,可设想不背离本申请的发明范围的其他实施例。因此,本权利要求或任何随后的相关权利要求的范围不应受到本文所述实施例的描述的不当限制。
Claims (17)
1.一种根据神经网络脉动地处理数据的装置,所述装置包括:
第一处理单元的第一布置,包含至少第一处理单元、第二处理单元、第三处理单元和第四处理单元,其中所述第一处理单元和所述第二处理单元连接以彼此脉动地脉冲数据,且其中所述第三处理单元和所述第四处理单元连接以彼此脉动地脉冲数据;
第二处理单元的第二布置,包含至少第五处理单元、第六处理单元、第七处理单元和第八处理单元,其中所述第五处理单元和所述第六处理单元连接以彼此脉动地脉冲数据,且其中所述第七处理单元和所述第八处理单元连接以彼此脉动地脉冲数据;
所述第二处理单元和所述第七处理单元之间的第一互连,其中所述第二处理单元配置为沿着所述第一互连向所述第七处理单元脉动地脉冲数据;以及
所述第三处理单元和所述第六处理单元之间的第二互连,其中所述第三处理单元配置为沿着所述第二互连向所述第六处理单元脉动地脉冲数据;
其中所述第一互连和所述第二互连形成第一对互连,其中若干对互连将所述第一处理单元的第一布置连接到所述第二处理单元的第二布置;
其中所述第一处理单元和所述第二处理单元中的每一个包括若干卷积引擎,所述卷积引擎的数量等于所述若干对互连的数量。
2.如权利要求1所述的装置,还包括第二对互连,所述第二对互连包含所述第一布置中的最顶部的处理单元与所述第二布置中的最顶部的处理单元之间的第三互连,和所述第一布置中的最底部的处理单元与所述第二布置中的最底部的处理单元之间的第四互连。
3.如权利要求2所述的装置,其中,在每个脉动脉冲,所述第一处理单元和所述第二处理单元配置为将两个数据各自脉动地脉冲到所述第一处理单元和所述第二处理单元中的不同的一个。
4.如权利要求1至3中任一项所述的装置,其中所述装置还包含脉动处理器芯片,且其中所述第一处理单元的第一布置和所述第二处理单元的第二布置包括嵌入所述脉动处理器芯片的电路。
5.如权利要求1至3中任一项所述的装置,其中所述第二处理单元包含输出脉动元件,所述输出脉动元件配置为用标识符来标记由所述第二处理单元生成的激活输出,其中所述标识符指示所述第二处理单元的地址。
6.如权利要求5所述的装置,其中包含所述标记的所述激活输出被脉动地脉冲到所述第七处理单元的输入脉动元件。
7.如权利要求6所述的装置,其中所述第七处理单元配置为:
接收所述激活输出并进行处理以生成附加的激活输出,并且
使用所述标识符来标识权重以用于处理所述激活输出。
8.如权利要求7所述的装置,其中所述权重被本地存储在所述第七处理单元处。
9.如权利要求7所述的装置,其中从所述第七处理单元外部的存储器取回所述权重。
10.如权利要求1至3中任一项所述的装置,其中所述第一处理单元的至少一个子组被分配为进行所述神经网络的第一层的计算,且其中所述第二处理单元的至少一个子组被分配为进行所述神经网络的第二层的计算。
11.如权利要求1至3中任一项所述的装置,其中所述第一处理单元包含配置为接收数据的输入脉动元件、配置为对所述接收的数据进行处理以生成第一激活输出的第一处理电路、第一输出脉动元件、以及配置为用所述第一处理单元的地址标记所述第一激活输出的数据标记器。
12.一种根据至少包括第一层和第二层的神经网络脉动地处理数据的方法,所述方法包括:
在第一脉动时钟周期期间,通过沿第一布置来布置的至少第一处理单元、第二处理单元、第三处理单元和第四处理单元和沿第二布置来布置的至少第五处理单元、第六处理单元、第七处理单元和第八处理单元进行数据的第一组脉动脉冲,所述第一组脉动脉冲包括:
从所述第一布置的第一处理单元向所述第一布置的第二处理单元脉动地脉冲数据;
从所述第一布置的第三处理单元向所述第一布置的第四处理单元脉动地脉冲数据;
从所述第二布置的第五处理单元向所述第二布置的第六处理单元脉动地脉冲数据;
从所述第二布置的第七处理单元向所述第二布置的第八处理单元脉动地脉冲数据;以及
从所述第一布置的第二处理单元向所述第二布置的第七处理单元脉动地脉冲数据;
其中所述第二处理单元配置为沿着所述第一布置和所述第二布置之间的第一互连向所述第七处理单元脉动地脉冲数据,且其中所述第三处理单元配置为沿着所述第一布置和所述第二布置之间的第二互连向所述第六处理单元脉动地脉冲数据;
所述方法还包括,在所述第一脉动时钟周期期间,进行第二组脉动脉冲;
其中所述第一组脉动脉冲在第一方向上行进通过所述第一布置和所述第二布置,且其中所述第二组脉动脉冲在第二方向上行进通过所述第一布置和所述第二布置,其中所述第一方向和所述第二方向相反。
13.如权利要求12所述的方法,其中,在所述第一脉动时钟周期期间进行第二组脉动脉冲包含:
从所述第一布置的第二处理单元向所述第一布置的第一处理单元脉动地脉冲数据;
从所述第一布置的第三处理单元向所述第二布置的第六单元脉动地脉冲数据;
从所述第一布置的第四处理单元向所述第一布置的第三处理单元脉动地脉冲数据;
从所述第二布置的第六处理单元向所述第二布置的第五处理单元脉动地脉冲数据;以及
从所述第二布置的第八处理单元向所述第二布置的第七处理单元脉动地脉冲数据。
14.如权利要求12所述的方法,还包括,在第二脉动时钟周期期间,进行第二组脉动脉冲,包括:
从所述第一布置的第二处理单元向所述第二布置的第七处理单元脉动地脉冲在所述第一脉动时钟周期期间从所述第一处理单元接收的数据;以及
从所述第一布置的第三处理单元向所述第二布置的第六处理单元脉动地脉冲在所述第一脉动时钟周期期间从所述第四处理单元接收的数据。
15.如权利要求14所述的方法,还包括,在所述第二脉动时钟周期期间经由所述第七处理单元,处理在所述第一脉动时钟周期期间从所述第二处理单元接收的数据,根据所述神经网络的第二层的节点的计算进行所述处理。
16.如权利要求15所述的方法,还包括,在第三脉动时钟周期期间经由所述第七处理单元,处理在所述第二脉动时钟周期期间从所述第二处理单元接收的数据,根据所述神经网络的第二层的节点的计算进行所述处理。
17.如权利要求12所述的方法,还包括,使用从所述第二处理单元接收的数据的标记来标识权重,以用于处理从所述第二处理单元接收的数据,所述标记标识所述数据源于所述第二处理单元。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862628076P | 2018-02-08 | 2018-02-08 | |
US201862627957P | 2018-02-08 | 2018-02-08 | |
US62/628,076 | 2018-02-08 | ||
US62/627,957 | 2018-02-08 | ||
US15/981,679 US11741346B2 (en) | 2018-02-08 | 2018-05-16 | Systolic neural network engine with crossover connection optimization |
US15/981,679 | 2018-05-16 | ||
PCT/US2018/066917 WO2019156748A1 (en) | 2018-02-08 | 2018-12-20 | Systolic neural network engine with crossover connection optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111164617A CN111164617A (zh) | 2020-05-15 |
CN111164617B true CN111164617B (zh) | 2023-11-28 |
Family
ID=67475597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063946.9A Active CN111164617B (zh) | 2018-02-08 | 2018-12-20 | 具有交叉连接优化的脉动神经网络引擎 |
Country Status (4)
Country | Link |
---|---|
US (6) | US11164074B2 (zh) |
EP (2) | EP3669303A4 (zh) |
CN (1) | CN111164617B (zh) |
WO (2) | WO2019156746A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
US10380997B1 (en) | 2018-07-27 | 2019-08-13 | Deepgram, Inc. | Deep learning internal state index-based search and classification |
JP6702389B2 (ja) * | 2018-10-09 | 2020-06-03 | トヨタ自動車株式会社 | 車両用駆動装置の制御装置、車載電子制御ユニット、学習済みモデル、機械学習システム、車両用駆動装置の制御方法、電子制御ユニットの製造方法及び出力パラメータ算出装置 |
US11605001B2 (en) * | 2018-11-14 | 2023-03-14 | Nvidia Corporation | Weight demodulation for a generative neural network |
US11620521B2 (en) | 2018-11-14 | 2023-04-04 | Nvidia Corporation | Smoothing regularization for a generative neural network |
US11995533B1 (en) * | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
US20200183837A1 (en) * | 2018-12-07 | 2020-06-11 | Samsung Electronics Co., Ltd. | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
US10929058B2 (en) | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
US11157692B2 (en) * | 2019-03-29 | 2021-10-26 | Western Digital Technologies, Inc. | Neural networks using data processing units |
US11379555B2 (en) * | 2019-06-28 | 2022-07-05 | Amazon Technologies, Inc. | Dilated convolution using systolic array |
CN110555522B (zh) * | 2019-09-23 | 2021-05-14 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110705703B (zh) * | 2019-10-16 | 2022-05-27 | 北京航空航天大学 | 基于脉动阵列的稀疏神经网络处理器 |
US11625453B1 (en) * | 2019-12-12 | 2023-04-11 | Amazon Technologies, Inc. | Using shared data bus to support systolic array tiling |
CN111126587B (zh) * | 2019-12-30 | 2021-02-02 | 上海安路信息科技有限公司 | 交并比电路 |
DE102021105291A1 (de) * | 2020-03-16 | 2021-09-16 | Nvidia Corporation | Gewichtsdemodulation für ein erzeugendes neuronales netz |
US11175844B1 (en) * | 2020-05-13 | 2021-11-16 | International Business Machines Corporation | Optimal placement of data structures in a hybrid memory based inference computing platform |
KR102506794B1 (ko) * | 2020-07-17 | 2023-03-06 | 고려대학교 산학협력단 | 심층 신경망 학습 가속 장치 및 그 동작 방법 |
WO2022140163A1 (en) * | 2020-12-21 | 2022-06-30 | Cryptography Research, Inc. | Protection of neural networks by obfuscation of neural network operations and architecture |
US11789857B2 (en) * | 2021-08-11 | 2023-10-17 | International Business Machines Corporation | Data transfer with continuous weighted PPM duration signal |
US11861486B2 (en) * | 2021-11-29 | 2024-01-02 | Deepx Co., Ltd. | Neural processing unit for binarized neural network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659781A (en) * | 1994-06-29 | 1997-08-19 | Larson; Noble G. | Bidirectional systolic ring network |
US6363369B1 (en) * | 1997-06-11 | 2002-03-26 | University Of Southern California | Dynamic synapse for signal processing in neural networks |
CN106841170A (zh) * | 2016-12-05 | 2017-06-13 | 西北大学 | 一种基于小波神经网络算法结合libs技术的煤灰种类识别方法 |
CN107003989A (zh) * | 2014-12-19 | 2017-08-01 | 英特尔公司 | 用于人工神经网络中的分布式与协作计算的方法和装置 |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3602186A (en) | 1970-08-06 | 1971-08-31 | Charles H Popenoe | Opti-mechanical stress-strain indicator |
KR790000473B1 (en) | 1972-02-16 | 1979-05-20 | Gyrfalcon Inc | Opti-mechanical stress-strain indicator |
JP2703010B2 (ja) * | 1988-12-23 | 1998-01-26 | 株式会社日立製作所 | ニユーラルネツト信号処理プロセツサ |
US5138695A (en) * | 1989-10-10 | 1992-08-11 | Hnc, Inc. | Systolic array image processing system |
WO1991018349A1 (en) | 1990-05-22 | 1991-11-28 | International Business Machines Corporation | Scalable flow virtual learning neurocomputer |
US5337395A (en) | 1991-04-08 | 1994-08-09 | International Business Machines Corporation | SPIN: a sequential pipeline neurocomputer |
US5243688A (en) | 1990-05-22 | 1993-09-07 | International Business Machines Corporation | Virtual neurocomputer architectures for neural networks |
US5208900A (en) * | 1990-10-22 | 1993-05-04 | Motorola, Inc. | Digital neural network computation ring |
US5226092A (en) | 1991-06-28 | 1993-07-06 | Digital Equipment Corporation | Method and apparatus for learning in a neural network |
WO1993008538A1 (en) | 1991-10-17 | 1993-04-29 | Kawasaki Steel Corporation | Processor for neural network |
US5627943A (en) * | 1993-02-17 | 1997-05-06 | Kawasaki Steel Corporation | Neural network processor including systolic array of two-dimensional layers |
US5799134A (en) * | 1995-03-13 | 1998-08-25 | Industrial Technology Research Institute | One dimensional systolic array architecture for neural network |
US5812993A (en) * | 1996-03-07 | 1998-09-22 | Technion Research And Development Foundation Ltd. | Digital hardware architecture for realizing neural network |
JP4208485B2 (ja) | 2001-05-31 | 2009-01-14 | キヤノン株式会社 | パルス信号処理回路、並列処理回路、パターン認識装置、及び画像入力装置 |
US7489834B2 (en) | 2003-01-17 | 2009-02-10 | Parimics, Inc. | Method and apparatus for image processing |
US7774313B1 (en) | 2005-11-29 | 2010-08-10 | Symantec Corporation | Policy enforcement in continuous data protection backup systems |
TWI468020B (zh) | 2009-02-19 | 2015-01-01 | Sony Corp | Image processing apparatus and method |
US8442927B2 (en) | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US8392683B1 (en) | 2009-11-30 | 2013-03-05 | Micron Technology, Inc. | Dynamic range unlock or lock memory device and method to operate the same |
WO2011078812A1 (en) | 2009-12-22 | 2011-06-30 | Bazlamacci Cuneyt F | Systolic array architecture for fast ip lookup |
JP2014142852A (ja) | 2013-01-25 | 2014-08-07 | Fujitsu Ltd | ストレージシステムおよび制御装置 |
US8824603B1 (en) | 2013-03-01 | 2014-09-02 | Futurewei Technologies, Inc. | Bi-directional ring-bus architecture for CORDIC-based matrix inversion |
US9152870B2 (en) | 2013-03-15 | 2015-10-06 | Sri International | Computer vision as a service |
US20140289445A1 (en) * | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
JP6042274B2 (ja) | 2013-06-28 | 2016-12-14 | 株式会社デンソーアイティーラボラトリ | ニューラルネットワーク最適化方法、ニューラルネットワーク最適化装置及びプログラム |
US9390368B2 (en) | 2013-10-21 | 2016-07-12 | International Business Machines Corporation | Coupling parallel event-driven computation with serial computation |
US9978014B2 (en) | 2013-12-18 | 2018-05-22 | Intel Corporation | Reconfigurable processing unit |
US9613001B2 (en) | 2013-12-20 | 2017-04-04 | Intel Corporation | Processing device for performing convolution operations |
US20160210550A1 (en) | 2015-01-20 | 2016-07-21 | Nomizo, Inc. | Cloud-based neural networks |
US20160217174A1 (en) | 2015-01-27 | 2016-07-28 | Kabushiki Kaisha Toshiba | Database system |
US10438117B1 (en) | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US9805303B2 (en) | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10083395B2 (en) | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US10114958B2 (en) | 2015-06-16 | 2018-10-30 | Microsoft Technology Licensing, Llc | Protected regions |
JP6387913B2 (ja) | 2015-07-08 | 2018-09-12 | 株式会社デンソー | 演算処理装置 |
US20170091615A1 (en) | 2015-09-28 | 2017-03-30 | Siemens Aktiengesellschaft | System and method for predicting power plant operational parameters utilizing artificial neural network deep learning methodologies |
US10445650B2 (en) | 2015-11-23 | 2019-10-15 | Microsoft Technology Licensing, Llc | Training and operating multi-layer computational models |
US9665799B1 (en) | 2016-01-29 | 2017-05-30 | Fotonation Limited | Convolutional neural network |
GB201718756D0 (en) | 2017-11-13 | 2017-12-27 | Cambridge Bio-Augmentation Systems Ltd | Neural interface |
CN105868786B (zh) | 2016-04-01 | 2019-01-04 | 山东正晨科技股份有限公司 | 一种基于自编码预训练深度神经网络的车标识别方法 |
US10817802B2 (en) | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
CN109154990B (zh) | 2016-06-03 | 2023-10-03 | 英特尔公司 | 卷积神经网络中的查找卷积层 |
US10839292B2 (en) | 2016-06-29 | 2020-11-17 | International Business Machines Corporation | Accelerated neural network training using a pipelined resistive processing unit architecture |
JP6708044B2 (ja) | 2016-07-28 | 2020-06-10 | 富士通株式会社 | 画像認識装置、画像認識プログラム、画像認識方法および認識装置 |
US9646243B1 (en) | 2016-09-12 | 2017-05-09 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
US9715656B1 (en) | 2016-09-12 | 2017-07-25 | International Business Machines Corporation | Killing asymmetric resistive processing units for neural network training |
US10083171B1 (en) | 2017-08-03 | 2018-09-25 | Gyrfalcon Technology Inc. | Natural language processing using a CNN based integrated circuit |
US10043095B2 (en) | 2016-10-10 | 2018-08-07 | Gyrfalcon Technology, Inc. | Data structure for CNN based digital integrated circuit for extracting features out of an input image |
US10102453B1 (en) | 2017-08-03 | 2018-10-16 | Gyrfalcon Technology Inc. | Natural language processing via a two-dimensional symbol having multiple ideograms contained therein |
US10339445B2 (en) | 2016-10-10 | 2019-07-02 | Gyrfalcon Technology Inc. | Implementation of ResNet in a CNN based digital integrated circuit |
US10366302B2 (en) | 2016-10-10 | 2019-07-30 | Gyrfalcon Technology Inc. | Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor |
US10387740B2 (en) | 2016-10-10 | 2019-08-20 | Gyrfalcon Technology Inc. | Object detection and recognition apparatus based on CNN based integrated circuits |
US10402628B2 (en) | 2016-10-10 | 2019-09-03 | Gyrfalcon Technology Inc. | Image classification systems based on CNN based IC and light-weight classifier |
US10360470B2 (en) | 2016-10-10 | 2019-07-23 | Gyrfalcon Technology Inc. | Implementation of MobileNet in a CNN based digital integrated circuit |
US9940534B1 (en) | 2016-10-10 | 2018-04-10 | Gyrfalcon Technology, Inc. | Digital integrated circuit for extracting features out of an input image based on cellular neural networks |
US20180157940A1 (en) | 2016-10-10 | 2018-06-07 | Gyrfalcon Technology Inc. | Convolution Layers Used Directly For Feature Extraction With A CNN Based Integrated Circuit |
US10733505B2 (en) | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
US10528321B2 (en) | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
US10037490B2 (en) | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
US10359953B2 (en) | 2016-12-16 | 2019-07-23 | Western Digital Technologies, Inc. | Method and apparatus for offloading data processing to hybrid storage devices |
US10922607B2 (en) | 2016-12-30 | 2021-02-16 | Intel Corporation | Event driven and time hopping neural network |
US10521488B1 (en) | 2016-12-30 | 2019-12-31 | X Development Llc | Dynamic partitioning |
US20180189229A1 (en) | 2017-01-04 | 2018-07-05 | Stmicroelectronics S.R.L. | Deep convolutional network heterogeneous architecture |
US10664450B2 (en) | 2017-03-06 | 2020-05-26 | Vmware, Inc. | Decoupling the commit and replay of metadata updates in a clustered file system |
US10909447B2 (en) | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
US10552733B2 (en) | 2017-04-03 | 2020-02-04 | Gyrfalcon Technology Inc. | Memory subsystem in CNN based digital IC for artificial intelligence |
US10296824B2 (en) | 2017-04-03 | 2019-05-21 | Gyrfalcon Technology Inc. | Fabrication methods of memory subsystem used in CNN based digital IC for AI |
US10546234B2 (en) | 2017-04-03 | 2020-01-28 | Gyrfalcon Technology Inc. | Buffer memory architecture for a CNN based processing unit and creation methods thereof |
US10331999B2 (en) | 2017-04-03 | 2019-06-25 | Gyrfalcon Technology Inc. | Memory subsystem in CNN based digital IC for artificial intelligence |
US10331368B2 (en) | 2017-04-03 | 2019-06-25 | Gyrfalcon Technology Inc. | MLC based magnetic random access memory used in CNN based digital IC for AI |
US10534996B2 (en) | 2017-04-03 | 2020-01-14 | Gyrfalcon Technology Inc. | Memory subsystem in CNN based digital IC for artificial intelligence |
US10331367B2 (en) | 2017-04-03 | 2019-06-25 | Gyrfalcon Technology Inc. | Embedded memory subsystems for a CNN based processing unit and methods of making |
US10585621B2 (en) | 2017-04-21 | 2020-03-10 | Intel Corporation | Statically-schedulable feed and drain structure for systolic array architecture |
US10230045B2 (en) | 2017-04-21 | 2019-03-12 | Gyrfalcon Technology Inc. | Process of fabricating embedded spin transfer torque memory for cellular neural network based processing unit |
US10824938B2 (en) | 2017-04-24 | 2020-11-03 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
US10838910B2 (en) | 2017-04-27 | 2020-11-17 | Falcon Computing | Systems and methods for systolic array design from a high-level program |
BR112019022916A2 (pt) | 2017-05-17 | 2020-05-26 | Google Llc | Unidade de multiplicação de matrizes de baixa latência |
US10019668B1 (en) | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
KR102008287B1 (ko) * | 2017-05-23 | 2019-08-07 | 고려대학교 산학협력단 | 양방향 선입 선출 메모리와 이를 이용하는 컨볼루션 연산 처리 장치 |
US9928460B1 (en) * | 2017-06-16 | 2018-03-27 | Google Llc | Neural network accelerator tile architecture with three-dimensional stacking |
US10790828B1 (en) * | 2017-07-21 | 2020-09-29 | X Development Llc | Application specific integrated circuit accelerators |
US20190042918A1 (en) | 2017-08-01 | 2019-02-07 | Wave Computing, Inc. | Remote usage of machine learned layers by a second machine learning construct |
US10552251B2 (en) | 2017-09-06 | 2020-02-04 | Western Digital Technologies, Inc. | Storage of neural networks |
WO2019075267A1 (en) | 2017-10-11 | 2019-04-18 | Google Llc | ARTIFICIAL NEURON NETWORK AUTO-SYNCHRONIZATION ACTIVATION LAYERS |
US20190114548A1 (en) | 2017-10-17 | 2019-04-18 | Xilinx, Inc. | Static block scheduling in massively parallel software defined hardware systems |
US11386644B2 (en) | 2017-10-17 | 2022-07-12 | Xilinx, Inc. | Image preprocessing for generalized image processing |
US10360214B2 (en) | 2017-10-19 | 2019-07-23 | Pure Storage, Inc. | Ensuring reproducibility in an artificial intelligence infrastructure |
US10936942B2 (en) | 2017-11-21 | 2021-03-02 | Google Llc | Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies |
US10846621B2 (en) | 2017-12-12 | 2020-11-24 | Amazon Technologies, Inc. | Fast context switching for computational networks |
US10685446B2 (en) | 2018-01-12 | 2020-06-16 | Intel Corporation | Method and system of recurrent semantic segmentation for image processing |
US10459876B2 (en) | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
US10963394B2 (en) | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
US10459849B1 (en) | 2018-08-31 | 2019-10-29 | Sas Institute Inc. | Scheduling operations in an access-controlled region of memory |
US20200127685A1 (en) | 2018-10-19 | 2020-04-23 | Nyquist Semiconductor Limited | Systems and methods for a hybrid non-volatile storage system |
US11562214B2 (en) | 2019-03-14 | 2023-01-24 | Baidu Usa Llc | Methods for improving AI engine MAC utilization |
-
2018
- 2018-05-16 US US15/981,735 patent/US11164074B2/en active Active
- 2018-05-16 US US15/981,679 patent/US11741346B2/en active Active
- 2018-05-16 US US15/981,719 patent/US11164073B2/en active Active
- 2018-05-16 US US15/981,624 patent/US11551064B2/en active Active
- 2018-05-16 US US15/981,711 patent/US11164072B2/en active Active
- 2018-05-16 US US15/981,664 patent/US11494620B2/en active Active
- 2018-12-19 WO PCT/US2018/066593 patent/WO2019156746A1/en unknown
- 2018-12-19 EP EP18904729.3A patent/EP3669303A4/en active Pending
- 2018-12-20 WO PCT/US2018/066917 patent/WO2019156748A1/en unknown
- 2018-12-20 EP EP18905604.7A patent/EP3669304B1/en active Active
- 2018-12-20 CN CN201880063946.9A patent/CN111164617B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659781A (en) * | 1994-06-29 | 1997-08-19 | Larson; Noble G. | Bidirectional systolic ring network |
US6363369B1 (en) * | 1997-06-11 | 2002-03-26 | University Of Southern California | Dynamic synapse for signal processing in neural networks |
CN107003989A (zh) * | 2014-12-19 | 2017-08-01 | 英特尔公司 | 用于人工神经网络中的分布式与协作计算的方法和装置 |
CN106841170A (zh) * | 2016-12-05 | 2017-06-13 | 西北大学 | 一种基于小波神经网络算法结合libs技术的煤灰种类识别方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190244077A1 (en) | 2019-08-08 |
US11164074B2 (en) | 2021-11-02 |
US20190244081A1 (en) | 2019-08-08 |
WO2019156748A1 (en) | 2019-08-15 |
US20190244082A1 (en) | 2019-08-08 |
US11164073B2 (en) | 2021-11-02 |
EP3669304B1 (en) | 2023-12-13 |
US11494620B2 (en) | 2022-11-08 |
EP3669303A4 (en) | 2020-09-09 |
EP3669304A1 (en) | 2020-06-24 |
EP3669304A4 (en) | 2020-09-09 |
US11551064B2 (en) | 2023-01-10 |
CN111164617A (zh) | 2020-05-15 |
US11741346B2 (en) | 2023-08-29 |
WO2019156746A1 (en) | 2019-08-15 |
CN111164616A (zh) | 2020-05-15 |
US20190244106A1 (en) | 2019-08-08 |
US20190244105A1 (en) | 2019-08-08 |
EP3669303A1 (en) | 2020-06-24 |
US11164072B2 (en) | 2021-11-02 |
US20190244083A1 (en) | 2019-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111164617B (zh) | 具有交叉连接优化的脉动神经网络引擎 | |
US11451229B1 (en) | Application specific integrated circuit accelerators | |
CN109242094B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
US10564929B2 (en) | Communication between dataflow processing units and memories | |
US10790828B1 (en) | Application specific integrated circuit accelerators | |
US20240104012A1 (en) | Topological scheduling | |
US20230153587A1 (en) | Stacked-Die Neural Network with Integrated High-Bandwidth Memory | |
CN111164616B (zh) | 能够后向传播的脉动神经网络引擎的装置和方法 | |
WO2021154732A1 (en) | Shared scratchpad memory with parallel load-store | |
WO2021035015A1 (en) | Initializing on-chip operations | |
US20220326988A1 (en) | Explicit scheduling of on-chip operations | |
Yu et al. | Optimizing data intensive window-based image processing on reconfigurable hardware boards | |
CN115803811A (zh) | 用于存储器处理单元架构的层间通信技术 | |
US20230385230A1 (en) | High performance softmax for large models | |
US20240037063A1 (en) | Routing Method Based On A Sorted Operation Unit Graph For An Iterative Placement And Routing On A Reconfigurable Processor | |
JP2022545222A (ja) | 複数のプロセッサを有するコンピュータにおける通信 | |
Dong | A study on hardware design for high performance artificial neural network by using FPGA and NoC |
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 |