CN111465943A - 芯片上计算网络 - Google Patents
芯片上计算网络 Download PDFInfo
- Publication number
- CN111465943A CN111465943A CN201880080107.8A CN201880080107A CN111465943A CN 111465943 A CN111465943 A CN 111465943A CN 201880080107 A CN201880080107 A CN 201880080107A CN 111465943 A CN111465943 A CN 111465943A
- Authority
- CN
- China
- Prior art keywords
- neural network
- memory
- weight values
- array
- memory banks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 claims abstract description 574
- 230000015654 memory Effects 0.000 claims abstract description 486
- 238000012545 processing Methods 0.000 claims abstract description 457
- 238000000034 method Methods 0.000 claims abstract description 70
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 description 40
- 230000008569 process Effects 0.000 description 37
- 230000004913 activation Effects 0.000 description 29
- 238000001994 activation Methods 0.000 description 29
- 238000012549 training Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 15
- 210000002569 neuron Anatomy 0.000 description 13
- 230000001537 neural effect Effects 0.000 description 12
- 210000004556 brain Anatomy 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 10
- 230000003863 physical function Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 239000004744 fabric Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 210000000225 synapse Anatomy 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 210000003050 axon Anatomy 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 210000001787 dendrite Anatomy 0.000 description 4
- 238000012886 linear function Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000007596 consolidation process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241001465754 Metazoa Species 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000013529 biological neural network Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization 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/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
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
提供用于神经网络处理的系统、方法和集成电路。在各种实施方案中,用于神经网络处理的集成电路可包含存储用于神经网络的权重值的多个存储器组。所述存储器组可与处理引擎的阵列在同一芯片上。在接收输入数据后,所述电路可被配置成使用一组权重值来执行针对所述神经网络限定的任务。执行所述任务可包含从所述存储器组读取权重值,将所述权重值输入到处理引擎的所述阵列中及使用处理引擎的所述阵列计算结果,其中所述结果对应于执行所述任务的结果。
Description
背景技术
神经网络尝试使用电脑技术复制由构成动物大脑的生物神经网络执行的逻辑推理。神经网络从人脑的操作机制获得灵感。在神经网络中,神经元由节点表示,且突触由节点之间的加权连接表示。权重可反映对输入的不同响应。神经网络可以层布置,其中待分析的输入数据被提供到输入层,且每一层的输出将输入提供到下一层。最后一个层可输出结果。可通过训练确定权重值,在此期间具有已知结果的输入数据被提供到神经网络。
神经网络可使用中央处理单元(CPU)实施以执行计算。然而,CPU倾向于针对顺序计算而不是并行计算进行优化,因此响应时间很短。图形处理单元(GPU)针对并行计算进行优化,但不必将来自一个计算单元的结果直接提供到另一计算单元。常常,所述结果必须首先写入到存储器。尽管GPU的响应时间优于CPU的响应时间,但GPU仍然肯在响应时间上滞后。
专用神经网络处理器包含针对并行、链式计算进行优化的计算阵列。在神经网络处理器中,计算单元可将结果直接输出到另一计算单元中,而不需要将结果写入到存储器。当确实需要将所述结果写入到存储器时,例如以通过阵列开始新的计算周期,所述结果可存储于计算阵列本地的存储器中。对于相同的输入数据,神经网络处理器的性能因此可优于CPU和GPU两者的性能。
附图说明
将参考附图描述各种实例,其中:
图1说明用于神经网络的视觉模型的实例;
图2A说明用于神经网络的包含前馈权重和递归权重的模型的实例;
图2B说明用于神经网络的包含不同连接类型的模型的实例;
图3A说明2维卷积的模型的实例;
图3B说明用于卷积神经网络的模型的实例;
图4说明将用于神经网络的权重值存储在芯片上存储器中而非存储在芯片外存储器中的效应的实例;
图5说明可用于执行神经网络的神经网络处理引擎的实例;
图6A到6B说明可用于执行神经网络的神经处理引擎的实例;
图7A到7C说明可用于执行神经网络的神经网络处理引擎的实例;
图8说明具有多个神经网络处理引擎的神经网络处理器的实例;
图9说明配置成用于将神经网络的权重存储于两个神经网络处理引擎的存储器子系统中的神经网络处理器的实例;
图10说明配置成用于将神经网络的权重存储于两个神经网络处理引擎的存储器子系统中的神经网络处理器的实例;
图11说明用于将用于神经网络的所有权重存储在芯片上的另一解决方案;
图12说明可在神经网络处理器执行神经网络时由神经网络处理器执行的过程的实例;
图13说明可在神经网络处理器执行神经网络时由神经网络处理器执行的过程的实例;
图14说明可由包含神经网络处理器的计算系统执行的过程的实例;且
图15说明其中可使用上文所论述的各种实例的网络。
具体实施方式
在以下描述中,将描述各种实例实施方案。出于解释的目的,阐述具体配置和细节以便提供对实例的透彻理解。然而,所属领域的技术人员还应清楚,可在无所述具体细节的情况下实践实例。此外,可省略或简化众所周知的特征以便不混淆所描述的实例。
人工神经网络尝试使用电脑技术复制由构成动物大脑的生物神经网络执行的逻辑推理。人工神经网络(其在本文中将被称作神经网络)为人工智能(AI)领域的一部分,所述领域是研究和工程领域,旨在构建能够以与人类相同的方式做出决策的智能机器。神经网络属于被称作机器学习的人工智能的子领域。机器学习是赋予计算机学习能力而无需明确地编程的研究领域。实施机器学习算法的程序能够学习执行任务,而程序不需要包含考虑每一种可能性的代码及描述所有可能行为的代码。
在理解了这些操作的程度上,神经网络从人脑的操作机制中获得灵感。根据各种大脑模型,大脑的主要计算元素是神经元。神经元与许多元素连接在一起,其中进入神经元的元素被称为树突,且离开神经元的元素被称为轴突。神经元通过树突接受信号,对信号执行计算,并在轴突上输出信号。输入及输出信号被称作激活。一个神经元的轴突可分支并连接到多个神经元的树突。轴突及树突的分支之间的连接被称作突触。
突触可缩放穿过突触的信号。缩放因子被称作权重,并且被认为是大脑能够学习以下内容的方式:产生于对输入的不同响应的不同权重。学习可改变权重,但神经元和突触的组织无需改变以获得学习。大脑的静态结构因此可用作用于程序的模型,且所述权重可反映所述程序已学会执行的任务。
神经网络基于神经元的计算涉及输入值的加权和的概念进行操作。这些加权和对应于由突触执行的值缩放及神经元中的那些值的组合。在神经元中对组合输入执行功能操作。在大脑模型中,所述操作呈现为非线性函数,其使得神经元仅在输入超过某一阈值时生成输出。因此,以此类推,神经网络的节点可将非线性函数应用于输入到节点中的值的加权和。
图1说明用于神经网络的视觉模型100的实例。在此实例中,模型100包含输入层104、常常被称作隐藏层106的中间层及输出层108。每一层包含一定数目的节点102。在此实例中,输入层104的节点102连接到隐藏层106的每一节点102。将被称作大脑模型中的突触的连接被称作权重110。同样在此实例中,隐藏层106的每一节点102与输出层的每一节点102具有连接或权重110。输入层104可接收输入并可将输入传播到隐藏层106。神经网络实施方案可包含多个隐藏层。由隐藏层106(或多个隐藏层)计算的加权和被传播到输出层108,所述输出层可将最终输出呈现给用户。与大脑模型一致,节点102的输出可被称作激活。
可在实例模型100中的每一层处进行的计算的实例如下:
在以上等式中,Wij是权重,xi是输入激活,yj是输出激活,f()是非线性函数,且b是偏置项。各种非线性函数可用于达成不同目的。
模型100可被称作有向加权图。在有向图中,到节点或来自节点的每一连接指示方向(例如,进入节点或远离节点的方向)。在加权图中,每一连接可具有权重。为易于理解和调试,用于开发神经网络的工具可将神经网络可视化为有向加权图。在一些状况下,这些工具还可用于训练神经网络并输出所训练的权重值。执行神经网络接着是使用权重对输入数据进行计算的问题。
具有多于三个层(例如,多于一个隐藏层)的神经网络有时被称作深度神经网络。举例来说,深度神经网络可具有五个到多于一千个层。
与较简单的网络相比,具有许多层的神经网络可能够学习更复杂且更抽象的高级特征。作为实例,可教导神经网络辨识图像。在此实例中,图像的像素可馈送到神经网络的输入层中,且第一层的输出可指示图像中的例如线及边缘的低等级特征的存在。在后续层处,这些特征可组合以测量更高级特征的可能存在:所述线可组合成形状,其可进一步组合成形状集合。给定所有此信息,神经网络可输出高级特征表示具体目标或场景的机率。举例来说,神经网络可输出图像是含有猫还是不含有猫。
神经网络的学习阶段被称作训练神经网络。在训练期间,教导神经网络执行任务。在学习任务时,确定用于权重(以及有可能偏置)的值。用于神经网络的基础程序(例如,节点到层中的组织,每一层的节点之间的连接,以及由每一节点执行的计算)不需要在训练期间改变。一旦被训练,那么神经网络可通过使用在训练期间确定的权重值计算结果来执行任务。举例来说,神经网络可输出图像含有具体对象的机率、音频序列含有具体词语的机率、对象周围的图像中的限界框,或应采取的提议的措施。运行用于神经网络的程序被称作推断。
存在可训练权重的多个方式。一个方法被称作监督学习。在监督学习中,标记所有的训练样本,使得将每一训练样本输入到神经网络中会产生已知结果。另一方法被称作无监督学习,其中不标记训练样本并且训练旨在数据中找到结构或在数据中找到丛集。半监督学习介于监督学习与无监督学习之间。在半监督学习中,标记训练数据的子集。未标记数据可用于限定集群边界并且标记的数据可用于标记所述丛集。
神经网络已经用于多种应用程序,包括例如用于图像和视频、语音及语言、药品、游戏以及机器人技术的领域中。在图像和视频中,神经网络已经用于图像分类、对象本地化及检测、图像分割以及动作辨识。在语音和语言中,神经网络已经用于语音辨识、机器翻译、自然语言处理及音频生成。在医学领域中,神经网络已经用于基因组学及医学成像中。在游戏中,神经网络已经用于播放视频及桌面游戏,包含具有大量的可能移动的游戏,例如围棋。在机器人技术中,神经网络已经用于机器人的运动规划、视觉导航、控制稳定化,以及用于自主车辆的驾驶策略。
开发出了不同种类的神经网络。神经网络的各种实例可划分成两个形式:前馈及递归。图2A说明用于神经网络的模型210的实例,所述模型包含输入层204与隐藏层206之间的前馈权重212及输出层208处的递归权重214。在前馈神经网络中,计算是对前一层的输出进行的一连串操作,其中最终层生成神经网络的输出。在图2A中所说明的实例中,前馈通过隐藏层206说明,所述隐藏层的节点202仅操作输入层204中的节点202的输出。前馈神经网络不具有存储器并且用于给定输入的输出可一直相同,无论给到神经网络的任何先前输入如何。多层感知机(MLP)是一种类型的神经网络,其仅具有前馈权重。
相比而言,递归神经网络具有内部存储器,其可允许依赖性影响输出。在递归神经网络中,一些中间操作结合稍后输入的处理可生成存储在内部且可用作对其它操作的输入的值。在图2A的实例中,递归通过输出层208说明,其中输出层208的节点202的输出连接回到输出层208的节点202的输入。这些环回连接可被称为递归权重214。长期短期记忆(LSTM)是频繁使用的递归神经网络变型。
图2B说明用于神经网络的包含不同连接类型的模型220的实例。在此实例模型220中,输入层204及隐藏层206为完全连接222层。在完全连接层中,所有的输出激活由经加权输入激活构成(例如,输入层204中的所有节点202的输出连接到隐藏层206的所有输入)。完全连接层可需要大量存储及计算。多层感知机神经网络为一种类型的完全连接的神经网络。
在一些应用中,例如可通过将用于这些连接的权重设置为零来去除激活之间的一些连接,而不影响输出的准确度。结果是稀疏连接的224层,在图2B中通过隐藏层206与输出层208之间的权重来说明。合并是可实现稀疏连接224层的方法的另一实例。在合并中,可例如通过找到最大值、最小值、平均值或中位值来组合节点的集群的输出。
操作神经网络的效率可以若干不同方式得以进一步改进。举例来说,可通过使输出随着输入的固定大小的窗口而变来限制促成输出的权重的数目。当权重的相同集合用于计算每一输出时,可获得甚至更高的效率。相同权重值的重复使用被称作权重共享,且可明显地降低用于权重的存储要求。
通过将在每个节点处执行的计算构造为卷积,可实现神经网络层中的窗口化和权重共享。图3A说明应用于图像处理的2维卷积的模型310的实例。在此实例模型中,滤波器平面304是以具有高度R及宽度S的矩阵布置的一组权重。滤波器平面304可使用例如逐个元素乘法312而应用于输入图像,其数据可被称作输入特征图306。滤波器平面304的高度R及宽度S均小于输入特征图306的高度H及宽度W,因此将滤波器平面304应用于输入特征图306会引起计算输入激活316的较小邻域(例如,超过邻域的权重可被设定为零)。输入激活316可使用例如部分和累加314来组合以在输出特征图308中产生输出激活318。输出特征图308表示输入特征图306的较高层级抽象,并且具有高度E及宽度F。在此模型310中,可针对每一输出共用权重的相同集合(例如,滤波器空间是不变的)。
图3B说明用于卷积神经网络的应用于图像处理的模型320的实例。卷积神经网络可包含多个卷积层。在卷积神经网络中,每一层可生成输入数据(即,输入特征图326)的连续较高层级抽象。卷积神经网络可通过使用深度层次结构来实现非常好的性能。
如由图3B的实例说明,卷积神经网络中的每一卷积层由高维卷积构成。在此模型320中,层的输入激活336被结构化为2维输入特征图326的集合,所述2维输入特征图中的每一个被称作信道C。每一信道与来自滤波器的堆叠324的具体2维滤波器进行卷积,所述堆叠具有用于每一信道的滤波器。滤波器的堆叠324可被称作单个3维滤波器。每一点的卷积的结果在所有信道上求和以产生共同形成输出特征图328的一个信道M的输出激活338。对应于输出信道的数目的额外3维滤波器M可用于在相同输入上生成额外输出信道。为了改进滤波器权重的重新使用,在所说明实例中标记为1到N的多个输入特征图326可被批次处理。
卷积神经网络可包含在五个与多于一千个之间的层。在一些实例中,出于分类目的,可在卷积层之后应用例如在一个与三个之间的较小数目的完全连接层。完全连接层还可将滤波器应用于输入特征图,但滤波器与输入特征图为相同大小。完全连接层因此不具有共享卷积层的属性的权重。
训练神经网络可在线进行,即,当神经网络在操作中并且可用于用户时。然而,更经常地,训练离线及在神经网络投入运行之前进行。训练样本集可相当大,且因此训练可能需要若干小时或若干天。离线训练可能也产生更准确的结果。
一旦被训练,神经网络包含在训练期间确定的权重和描述将在网络的每一层或节点处执行的计算的指令集。在一些实例中,权重的数目可为约5百万到1亿。在一些实例中,权重值可使用32位数来表示,在此状况下,5百万到1亿个权重可能需要存储约20兆字节(MB)到400MB。在一些实例中,权重的数目可少至150万。
如由上文所论述的模型说明,神经网络的操作(例如,进行推断)涉及提取输入数据或输入激活、针对层中的每一节点并行地执行相乘及累加操作以及提供输出激活。通过响应时间测量的神经网络的最佳性能可在硬件架构能够进行高度并行化的计算时实现。还可被称作通用处理单元的中央处理单元(CPU)可具有多个核(例如,2个到64或更多个核)并且可通过使用多个执行线程来增加并行度。然而,CPU核倾向于针对顺序处理进行优化。举例来说,核的计算引擎(例如,算术逻辑单元(ALU))从存储器获得运算元并将结果写入到存储器,使得顺序计算需要存储器操作。在此实例中,每一存储器操作可需要CPU的控制逻辑的管理。为此且出于其它原因,当针对神经网络执行推断时,CPU因此倾向于具有缓慢的响应时间。
相比于CPU,图形处理单元(GPU)通过具有数千个较小及高效核而实现并行度,所述核针对进行并行计算而被配置。GPU因此相比于CPU可在执行神经网络时实现好得多的性能。然而,个别GPU计算引擎本质上仍可主要为依序的,使得将一个引擎的输出提供给另一计算引擎的输入需要存储器操作。
当执行神经网络时,CPU和GPU均可能遇到的性能瓶颈在于访问存储器。相乘及累加操作可需要三次存储器读取,分别用于提取权重值、图激活及部分和,以及存储已更新部分和的存储器。在最坏状况下,所有存储器事务都将转移到芯片外存储器,即,与处理器位于不同裸片上及不同封装中的存储器。可被称作处理器存储器或主存储器的此存储器可专用于处理器,以用于临时存储处理器主动对其进行操作的数据。由于具有高容量及低成本,因此动态随机存取存储器(DRAM)或DRAM变型频繁用于处理器存储器。然而,从处理器存储器进行读取及写入到处理器存储器要比计算引擎的操作慢许多数量级。神经网络的速度因此可受芯片外存储器时延限制。
当执行神经网络时,专用神经网络处理器相比于CPU和GPU两者可实现较佳性能。神经网络处理器可采用空间架构,其中计算引擎形成处理链条并且可将数据从一个计算引擎直接传递到另一计算引擎。此可明显地缩减存储器事务的数目。在一些实例中,神经网络处理器还可包含芯片上缓冲器,其可存储从处理器存储器读取的值并可将值分配到处理器中的多个计算引擎。所述计算引擎可进一步包含用于存储中间结果的小的局部寄存器组(例如,小存储器)。具有芯片上存储器层级可通过缩减存储器时延来改进神经网络的操作效率。
然而,当将神经网络的权重值存储在芯片外时,神经网络处理器可能会限制存储器带宽。神经网络处理器的计算矩阵可执行计算的速度可快速地超过可从存储器读取权重值和激活的速率。举例来说,计算矩阵可每个时钟周期执行10,000个相乘和累加操作,因此每个周期需要30,000个输入值。处理器存储器总线的时钟速度可以在例如数千兆赫(MHz)的范围内,而处理器的时钟速度可在多个千兆赫(GHz)中。神经网络处理器的计算速率因此可快速地超过处理器存储器供应数据的能力。
权重值的重新使用是可规避存储器带宽限制的一种方式。重新使用在卷积神经网络中是常见的,其中例如权重值平均可重复使用1300次。如在下文进一步所论述,神经网络及权重值的频繁的重新使用可能避免存储器带宽限制,并且反而可受处理器的计算速度限制。
在长期短期记忆神经网络及多层感知机神经网络中,权重值的重新使用因子要低得多,例如平均为两倍。
用于增加权重值重新使用的一个解决方案是分批处理。分批处理涉及一次将输入数据的多于一个集合输入到神经网络中。输入数据的集合无需为相关的。在分批处理的情况下,当神经网络具备例如输入数据的十个集合时,每一权重可在从存储器被读取一次之后重复使用二十次(例如,输入数据的每个集合两次)。
然而,数学模型表明需要较高重新使用因子以使神经网络处理器实现最大可能的性能。举例来说,一些实例表明需要约1000的重新使用因子。当分批处理时,有可能一次收集例如输入数据的50到60个集合,但收集输入数据的500个集合可能导致其它问题。举例来说,神经网络的用户预期当请求例如机器翻译或图像识别时的立即响应。当在系统开始计算结果之前神经网络处理系统等待500个请求时,响应时间可受到不利影响。
在各种实施方案中,神经网络处理系统可降低存储器带宽限制并且可通过将用于神经网络的权重存储在芯片上存储器中来接近最佳效率。芯片上意谓存储器与计算矩阵在同一裸片上和/或在相同封装(例如,用于裸片的物理壳体)中。神经网络处理器可具有用于存储中间结果的芯片上存储器。在各种实施方案中,处理器的存储器子系统可被设计成使得芯片上存储器可存储中间结果和权重值两者。神经网络处理器仍可受内存限制,但有可能读取芯片上存储器的速度要比芯片外存储器快例如十或五十倍。按此量缩减存储器延迟可使得神经网络的操作能够接近处理器的计算速度限制。
在一些状况下,尤其对于小神经网络,用于神经网络的所有权重值有可能存储在芯片上存储器中。然而,使用单个整体存储器仍可导致存储器延迟,因为单个存储器可仅具有例如读取及写入信道的一个或两个集合,使得一次可仅读取一个或两个值。在各种实施方案中,神经网络处理器而非一个较大存储器可配备有多个存储器组,其可各自个别地可访问。通过可独立地访问,有可能同时读取多于一个存储器组。
在神经网络处理引擎中,计算矩阵可实施为处理引擎的阵列。神经网络处理引擎可进一步包含处理引擎的阵列本地的存储器组的集合,其中本地可意谓物理上接近处理引擎的阵列和/或可由处理引擎的阵列直接访问。如上文所提及,本地存储器组可由神经网络处理引擎用于存储中间结果。在一些状况下,尤其当神经网络较小时,用于神经网络的所有权重值还可存储于神经网络处理引擎的存储器组中。在这些状况下,处理引擎的阵列有可能在每一时钟周期中维持全部利用率。
在一些实例中,并非用于神经网络的所有权重值都可适合神经网络处理引擎的存储器组。举例来说,存储器组可具有用于权重值的一半的足够空间,其中需要任何剩余的空间以用于存储在处理输入数据的集合的过程期间计算的中间结果。然而,中间结果的大小可在计算结果的过程内减小。另外,一旦被使用,那么可不再需要一些权重值。因此,在一些实施方案中,随着计算进行并且存储器空间变得可用,神经网络处理引擎可将额外权重加载到可用空间中。在一些状况下,所述权重可来自芯片外存储器。在一些状况下,所述权重可来自芯片上存储器,例如另一神经网络处理引擎的存储器组。
在一些实施方案中,神经网络处理器可运用多个神经网络处理引擎来构建,所述多个神经网络处理引擎各自具有处理引擎及本地存储器组的独立阵列。在这些实施方案中,每一神经网络处理引擎可执行神经网络,使得多个神经网络可同时运行。在一些实施方案中,用于一个神经网络的权重值可存储于两个或多于两个神经网络处理引擎的存储器组中,其中一个神经网络处理引擎表示为用于处理神经网络的引擎。当指定的神经网络处理引擎需要运用另一神经网络处理引擎存储的权重时,所述权重可从另一神经网络处理的存储器组读取并且经加载到指定神经网络处理引擎的存储器组中。另一神经网络处理引擎可将其自身的存储器组中任何剩余的可用空间用于其它操作。
在一些实施方案中,代替将权重从一个神经网络处理器移动到另一神经网络处理器,可移动所述计算。举例来说,中间结果(例如,来自层的输出激活)及状态(例如,所计算的最后一个层)可从一个神经网络处理引擎被复制到第二神经网络处理引擎,其中第二神经网络处理引擎在其存储器组中具有继续计算所需要的权重值的下一集合。第二神经网络处理引擎可恢复计算,并且有可能将计算交给又另一个神经网络处理引擎。
在一些实施方案中,进行中的计算从一个神经网络处理引擎到另一神经网络处理引擎的传送可包含在个别神经网络处理器之间进行传送。在这些实施方案中,个别神经网络处理器可在不同裸片上和/或在不同封装中。同样在此实例中,神经网络处理器可使用主机总线或处理器总线进行通信。当神经网络处理引擎在同一裸片上时,复制中间结果及状态可将计算从一个神经网络处理器移动到另一神经网络处理器。
在各种实施方案中,将权重从一个神经网络处理引擎复制到另一神经网络处理引擎、在神经网络处理引擎之间和/或在物理神经网络处理器芯片之间移动进行中的计算可以各种组合来使用,其中目标为在芯片上存储尽可能多的用于神经网络的权重值。通过在芯片上具有权重值,计算可仅受相对较短的芯片上存储器时延限制,而非受相对较长芯片外存储器时延限制。因此,可使神经网络的操作高效得多。
图4说明将用于神经网络的权重值存储在芯片上存储器中而非存储在芯片外存储器中的效应的实例。图4中所说明的图400说明所谓的车顶线模型的应用。车顶线模型是可用于提供计算系统的性能的估计的性能模型。车顶线模型可捕获固有的硬件限制及优化的可能益处。在图4的实例中,车顶线模型用于就从存储器读取的每个权重的操作而言,说明神经网络处理器的性能。竖直轴线说明每秒可进行的万亿操作(teraop)的数目。水平轴线说明每个权重值执行的操作或计算的数目。每个权重值执行的操作的数目可通过权重的固有重新使用(例如,神经网络的结构引起权重重新使用)或通过分批处理,即,同时或以管线化方式将多个数据集输入到神经网络中,而增加。
在图4的实例中,在图400上标绘的实线410说明将权重值存储在芯片外存储器中的神经网络处理系统的性能的实例。在此系统中,权重值存储在处理器存储器中并且神经网络处理器通过主机总线或处理器总线读取权重值。通过将权重值存储在单独的存储器中,每当从存储器读取权重值时,神经网络处理系统必须引起延迟。
在实线410的较陡部分402中,每秒可进行的teraop的数目针对每个权重值进行的操作的数目大约线性地增加。在实线410的较陡部分402中,为了使每秒teraop的数目增加,必须增加任何给定权重的重新使用。相反地,在实线410的较陡部分402中,在给定的重新使用值下,每秒的teraop的数目受可从芯片外存储器读取权重值的速度约束。因此,在实线410的较陡部分402中,神经网络处理系统被认为内存受约束。
在实线410的平坦部分404中,每秒teraop的数目已达到最大值(在所说明的实例中,每秒约124个teraop)。在实线410的平坦部分404中,增加权重值的重新使用不会增加每秒teraop的数目,因为系统已达到硬件的最大计算速度。在实线410的平坦部分404中,所述系统被认为是受计算约束的。
车顶线模型因此说明,对于神经网络处理系统,可以实现硬件所能提供的最大性能。但如图400中所说明,对于具有存储在与处理器分离的芯片中的权重的系统,需要每一权重值的大量重新使用(在所说明的实例中约1600)。如先前所论述,卷积神经网络可具有高权重重新使用率,但许多其它神经网络,例如多层感知机及递归神经网络具有极低权重重新使用。针对这些类型的神经网络分批处理输入数据集可增加重新使用,但分批处理1100输入数据集(假设用于每一权重值的固有重新使用为二)可具有其它不利影响,例如用户提供输入数据的延迟响应时间。
图4的实例中的虚线420说明应用于神经网络处理系统的车顶线模型,其中权重值存储在芯片上。在此状况下,在系统接收输入数据之前并且有可能始终在系统操作期间,权重值存储于神经网络处理器的存储器中。将权重值存储在芯片上意谓明显地降低从存储器读取权重值的延迟。如由虚线420的较陡部分412说明,仅约100的重新使用(如由此实例提供)可解决存储器时延。因此,对于所有神经网络类型,神经网络处理系统大部分时间可在虚线420的平坦部分414中操作。
在各种实施方案中,神经网络处理器可被架构以支持将权重值存储在处理器上。图5说明可用于执行神经网络的神经网络处理引擎502的实例。在各种实施方案中,实例神经网络处理引擎502是可包含在神经网络处理器中的集成电路。神经网络处理器是可具有其它组件的集成电路,所述其它组件包含额外神经网络处理引擎502。在各种实施方案中,神经网络处理引擎502可包含存储器子系统504及处理引擎阵列510。当在操作中时(例如,当计算一组输入数据550的结果时),处理引擎阵列510可从存储器子系统504读取权重506及状态508值。处理引擎阵列510可将计算结果输出到结果缓冲器512。在一些状况下,在将结果写入到存储器子系统504之前,实例神经网络处理引擎502可使用激活516块对计算结果执行激活函数和/或使用合并518块对计算结果执行合并。
在此实例中,权重506为用于神经网络的权重值。在各种实施方案中,权重506为训练后权重,其意谓先前确定用于权重506的值。在此实例中,状态508可包含当计算开始时的输入数据550以及反映进行中的计算的值。举例来说,状态508可包含处理引擎阵列510确定的部分和、正在对其进行操作的神经网络的当前层和/或用于处理引擎阵列510的指令,其中所述指令可与具体层相关联。权重506和状态508可从存储器子系统504读取以用于通过处理引擎阵列510进行操作。
在各种实施方案中,存储器子系统504可包含多个存储器组514。在这些实施方案中,每一存储器组514可独立地访问,其意谓一个存储器组的读取不取决于另一存储器组的读取。类似地,写入到一个存储器组不影响或限制写入到不同存储器组。在一些状况下,可对每一存储器组进行同时读取及写入。各种技术可用于具有可独立访问的存储器组514。举例来说,每一存储器组可具有至少一个读取信道并且可具有至少一个单独的写入信道(在一些状况下,存储器组可具有组合的读取及写入信道)。在这些实例中,存储器子系统504可准许同时访问多个存储器组的读取或写入信道。作为另一实例,存储器子系统504可包含仲裁逻辑使得例如多个存储器组514的输出之间的仲裁可使得准予多于一个存储器组的输出。在这些和其它实例中,尽管总体通过存储器子系统504管理,但可独立于任何其它存储器组来操作每一存储器组。
使存储器组514可独立地访问可增加神经处理引擎502的效率。举例来说,权重506及状态508可被同时读取并提供到处理引擎阵列510的每一行,使得可在一个周期中激活整个处理引擎阵列510。作为另一实例,权重506及状态508可被同时读取,使得中间结果被写入到存储器子系统504。相比而言,单个存储器虽然仍然能够比芯片外存储器更快地向处理引擎阵列510提供权重506和状态508,但是可能一次能够服务一个读取或写入。在单个存储器的情况下,例如,可能需要多个时钟周期以在可开始处理引擎阵列510之前读取用于处理引擎阵列510的每一行的权重。
在各种实施方案中,存储器子系统504可被配置成同时服务多个客户端,其包含处理引擎阵列510、激活516块、合并518块及通过芯片互连件520访问存储器子系统504的任何外部客户端。在一些实施方案中,能够服务多个客户端可意谓存储器子系统504至少具有与客户端一样多的存储器组。在一些状况下,每一行的处理引擎阵列510可算作单独的读取客户端。在这些状况下,权重506和状态508可被单独地存储,且因此需要两次读取,或可在一起被级联并存储,因此需要一次读取。在一些状况下,每一列的处理引擎阵列510可输出中间值,使得每一列可算作单独的写入客户端。在一些状况下,来自处理引擎阵列510的输出可被写入到存储器组514中,所述存储器组随后可向处理引擎阵列510提供输入数据。举例来说,存储器组514可使用静态随机存取存储器(SRAM)来实施。
在各种实施方案中,存储器子系统504可包含控制逻辑。举例来说,控制逻辑可视需要记录存储器组514中的每一个的地址空间,识别存储器组514以从其读取或写入到其,和/或在存储器组514之间移动数据。在一些实施方案中,存储器子系统504可包含多路复用器,其用于选择哪一存储器组将输出到具体客户端和/或哪一存储器组从具体客户端接收输入。在这些实施方案中,控制逻辑可生成用于多路复用器的选择信号,其可使得存储器组514中的一些或全部能够服务每一客户端。在一些实施方案中,存储器组514可硬连线到具体客户端。举例来说,一组存储器组514可被硬连线以将权重506和状态508提供到若干行的处理引擎阵列510。在这些实例中,控制逻辑可在存储器组514之间移动数据,例如以将中间结果从中间结果被写入到的存储器组514移动到将从其读取中间结果以用于下一轮计算的存储器组514。
处理引擎阵列510是神经处理引擎502的计算矩阵。举例来说,处理引擎阵列510可执行并行集成、卷积、相关性和/或矩阵乘法等等。处理引擎阵列510包含以行及列布置的多个处理引擎511,使得由一个处理引擎511输出的结果可直接输入到另一处理引擎511中。不在处理引擎阵列510的外部边缘上的处理引擎511因此可从其它处理引擎511而非从存储器子系统504接收数据以进行操作。
在各种实例中,处理引擎阵列510使用脉动执行,其中数据从不同方向以规律时间间隔到达每一处理引擎511。在一些实例中,输入数据可从左边流入处理引擎阵列510中且权重值可在顶部处加载。在一些实例中,权重和输入数据可从左边流动,且部分和可从顶部流动到底部。在这些和其它实例中,相乘和累加操作作为对角波前移动通过处理引擎阵列510,其中数据在阵列上向右和向下移动。控制信号可与权重506同时在左边输入,并且可连同计算流过并且向下流动。
在各种实施方案中,处理引擎阵列510中的列的数目确定处理引擎阵列510的计算容量,且行的数目确定用于实现处理引擎阵列510的最大利用率的所需存储器带宽。处理引擎阵列510可具有例如64列和256行,或某一其它数目的列和行。
在图5中说明处理引擎511的实例。如由此实例说明,处理引擎511可包含乘法器-累加器电路。来自左边的输入可包含例如输入数据i和权重值w,其中输入数据是取自一组输入数据的值且权重值来自将神经网络的一个层连接到下一层的一组权重值。举例来说,一组输入数据可为提交以用于识别或对象辨识的图像、提供以用于语音辨识的音频片段、用于自然语言处理或机器翻译的文本的字符串,或需要分析以确定下一移动的游戏的当前状态等等。在一些实例中,输入数据和权重值输出到右边,以用于输入到下一处理引擎511。
在所说明的实例中,来自上方的输入可包含部分和p_in,其从另一处理引擎511或从前一轮计算通过处理引擎阵列510提供。当开始用于输入数据的新集合的计算时,处理引擎阵列510的顶部行可接收用于p_in的固定值,例如零。如由此实例所说明,i和w在一起相乘,且结果与p_in进行求和以产生新的部分和p_out,其可输入到另一处理引擎511中。处理引擎511的各种其它实施方案是可能的。
来自处理引擎阵列510中的最后一行的输出可暂时存储在结果缓冲器512中。所述结果可为中间结果,其可被写入到存储器组514以提供到处理引擎阵列510以用于额外计算。或者,所述结果可为最终结果,其一旦被写入到存储器组514,即可通过芯片互连件520从存储器子系统504被读取,以由系统输出。
在一些实施方案中,神经处理引擎502包含激活516块。在这些实施方案中,激活516块可将来自处理引擎阵列510的结果组合成一个或多个输出激活。举例来说,对于卷积神经网络,来自多个信道的卷积可进行求和以产生用于单个信道的输出激活。在其它实例中,可需要累加来自处理引擎阵列510中的一个或多个列的结果以产生用于神经网络中的单个节点的输出激活。在一些实施方案中,可绕过激活516块。
在一些实施方案中,神经处理引擎502可包含合并518块。合并是组合来自神经网络层的节点的集群的输出。组合的输出可提供到下一层。组合可包含例如计算从节点的集群的输出确定的最大值、最小值、平均值、中位值或某一其它值。在各种实施方案中,可视需要针对任何具体神经网络选择性地激活合并518。
输入数据550可通过芯片互连件520到达。芯片互连件520可将神经处理引擎502连接到神经网络处理器的其它组件,例如直接存储器存取(DMA)引擎,其可从输入/输出(I/O)装置、存储驱动器或网络接口获得输入数据550。输入数据550可例如为一维数据,例如字符串或数值序列,或可为二维数据,例如用于图像和频率的像素值的阵列及用于音频信号的随时间推移的幅值。在一些实例中,输入数据550可为三维的,例如对于自动驾驶汽车所使用的情形信息可为这种状况。在一些实施方案中,存储器子系统604可包含用于输入数据550的单独的缓冲器。在一些实施方案中,输入数据550可连同权重506存储于存储器组514中。
在各种实施方案中,存储于存储器子系统504中的权重506可通过训练神经网络以执行一个或多个任务来确定。输入数据550可包含指示待执行的任务(例如,图像处理、语音辨识、机器翻译等)的指令。在各种实施方案中,神经处理引擎502被配置成用于进行推断(例如,执行任务),而非用于训练神经网络。在一些实施方案中,神经处理引擎502可用于训练,但可能在软件的辅助下更新存储的权重506。
在各种实施方案中,存储器子系统504可包含足够内存以存储中间结果及用于神经网络的所有权重值两者。存储器子系统504应至少具有存储器子系统504中的足够内存以存储中间结果,但在许多状况下,存储器子系统504可包含比所需多得多的存储器组514以仅存储中间结果。此额外空间可用于存储用于神经网络的所有权重值。举例来说,神经网络可具有150万个权重,其在所述权重各自由32个位表示时可需要约6MB的内存。中间结果至多可需要例如10MB的存储空间。20MB的芯片上存储器是合理的大小,且在先前实例中,可容易地容纳权重值、中间结果及神经处理引擎502在操作期间可能需要的任何其它数据。
在一些状况下,并非所有的用于神经网络的权重可适合神经处理引擎的存储器。在这些状况下,权重中的一些可存储在神经处理引擎的存储器中,并且剩余的权重可在计算过程期间加载。图6A到6B说明可用于执行神经网络的神经处理引擎602的实例。在各种实施方案中,神经网络处理引擎602可包含存储器子系统604和处理引擎阵列610。当在操作中时(例如当计算用于一组输入数据650的结果时),处理引擎阵列610可从存储器子系统604读取权重606和状态608值,其中状态608值可首先包含输入数据650。尽管此处未说明,但处理引擎阵列610可包含处理引擎的阵列,所述处理引擎中的每一个可执行例如相乘和累加操作。处理引擎阵列610可将计算结果输出到结果缓冲器612。在一些状况下,在将结果写入到存储器子系统604之前,实例神经网络处理引擎602可使用激活616块对计算结果执行激活函数和/或使用合并618块对计算结果执行合并。
在操作中,神经网络处理引擎602从存储器子系统604中的存储器组614读取权重606和状态608,并且将权重606和状态608输入到处理引擎阵列610中。处理引擎阵列610可将中间结果输出到结果缓冲器612,中间结果可从所述结果缓冲器写入到存储器子系统604。当多个中间结果组合成一个输出激活时,可选择性地启用激活616块。当节点的集群的输出组合成一个输出时,还可选择性地激活合并618块。读取权重606和状态608及计算结果的额外循环可进行,直到到达神经网络中的最后一层且处理引擎阵列610输出最终结果为止。
在各种实施方案中,可首先预留一组存储器组614以用于存储中间结果(例如,状态608值)。举例来说,如图6A中所说明,可预留存储器组614中的一半以用于存储即时结果。在此实例中,权重606可存储在剩余的存储器组614中。可在神经网络处理引擎602接收任何输入数据650之前存储权重606,使得一旦接收输入数据650权重606即就绪。在其它实例中,可在用于状态608的存储装置与用于权重606的存储装置之间以不同比例划分存储器组614。在一些实施方案中,可在用于状态608的存储装置与用于权重606的存储装置之间划分个别存储器组614。
在图6A的实例中,存储于存储器组614中的权重606非用于神经网络的所有权重。剩余的权重存储在额外存储器中,所述额外存储器定位于神经网络处理引擎602外部。额外存储器630可在芯片上,例如在芯片上高速缓冲存储器中。替代地或另外,额外存储器630可在芯片外,例如在处理器存储器中。如上文所论述,权重606对应于神经网络层。在各种实施方案中,权重606可根据层进行划分,使得在接收输入数据650之前用于第一n层的权重606存储于存储器子系统604中,且用于剩余的m层的权重606存储在额外存储器630中。
一旦神经网络处理引擎602开始处理输入数据650,那么需要存储状态608值的内存量可减少。另外,对于一些神经网络,一些权重606一旦被使用便可能不再需要。举例来说,如上文所论述,如上文所论述,前馈权重可仅使用一次,以计算用于层的输入值。因为一些权重一旦被使用那么在处理一组输入数据650的过程内可能不再需要,所以用于存储那些权重的存储器可重新设置。
先前用于存储不再需要的状态608值和权重606的存储器组614中的空间可被重新设置以存储额外权重606值。如由图6B所说明,随着计算进行,可指定更多的存储器组614以用于存储权重606。
举例来说,在每一时钟周期上,可从各种存储器组614读出一组权重606且可将中间结果存储为状态608值。存储器子系统604使用控制逻辑可记录由尚未被使用的权重606使用的内存和当前由状态608值占据的空间量。替代地或另外,软件可管理空间在存储器子系统604中的分配。因为需要较少存储器空间来存储状态608,所以存储器子系统604(或软件)可确定分配较多存储器空间来存储权重606。另外,在各个时间,存储器子系统604可通过芯片互连件620发送请求以从额外存储器630读取较多权重。在处理一组输入数据的过程内,神经网络处理引擎602可逐步地将用于神经网络的所有权重606移动到存储器组614中。
在一些实施方案中,随着接近完成处理一组输入数据,仍需要的权重606的数目可能变得越来越小。随着剩余的权重606的数目减小,可使将内存指派给权重606或状态608反转,使得逐步留出较多内存以用于存储状态608。在计算结束时,存储器可如图6A中所说明被再次划分。
如上文所提及,在一些实施方案中,权重606一旦被使用则可从存储器子系统604被删除,因为这些权重606所占据的存储器可被用于存储仍需要的权重606。在这些实施方案中,随着处理一组输入数据结束,来自初始层的权重606可被重新加载到存储器子系统604中。一旦完成处理输入数据,那么神经网络处理引擎602因此可准备好处理下一输入数据。
当目前不存在于存储器子系统604中的权重606在处理器存储器中时,从处理器存储器读取权重606可使处理引擎阵列610停顿,同时等待加载权重606。在各种实施方案中,一种用于避免由从处理器存储器进行读取引起的停顿的技术为在需要权重606之前将读取事务很好地排队到处理器存储器。另一技术为将权重606预提取到芯片上高速缓冲存储器中。另一技术为使用另一神经网络处理引擎的存储器,如下文进一步所论述。在各种实施方案中,这些和其它技术可组合以适合给定系统的要求。
在各种实施方案中,在计算过程内可用在神经网络处理引擎的存储器子系统中的空间可用于存储另一神经网络的权重。此第二神经网络可能已被训练执行与神经网络最初被加载到神经网络处理引擎中不同的任务。通过将存储在神经网络处理引擎中的权重从第一神经网络的权重切换到第二神经网络的权重,神经网络处理引擎可依序执行不同任务。
将神经网络处理引擎配置成在不同神经网络之间切换并且依序执行不同任务可适用于某些情形中。举例来说,来自单个用户的输入可需要多个操作,例如机器翻译之后的自然语言理解。虽然神经网络可能够执行复杂任务,例如自然语言理解,但一个神经网络可能不能够进行自然语言理解以及机器翻译两者。因此,一个神经网络可频繁地用于执行自然语言理解,而另一神经网络可用于执行机器翻译。
为了优化神经网络处理器产生用于不同(有可能不相关)任务的结果的速度,神经网络处理器可被配置成执行快速的上下文切换。如应用于神经网络处理系统的上下文描述一个神经网络,其包含用于神经网络的权重及被执行以执行神经网络被训练所针对的任务的计算。上下文切换可涉及对神经网络处理引擎进行再编程以在被配置成执行第一神经网络之后执行第二神经网络。对神经网络处理引擎进行再编程可包含将用于第二神经网络的权重加载到神经网络处理引擎的存储器中。
当神经网络处理引擎在使用第一神经网络完成计算后立即准备好执行第二神经网络时,可进行快速上下文切换。举例来说,立即可意谓在一个或若干时钟周期内。在各种实施方案中,随着用于第一神经网络的计算进行并且神经网络处理器的存储器中的存储器空间变得可用,用于第二神经网络的权重可存储在可用空间中。一旦完成第一计算,那么用于第二神经网络的权重中的一些或全部存在存储器中,并且可开始使用这些权重的计算。
图7A到7C说明可用于执行神经网络的神经网络处理引擎702的实例。在各种实施方案中,神经网络处理引擎702可包含存储器子系统704及处理引擎阵列710。当在操作中时(例如,当计算用于一组输入数据的结果时),处理引擎阵列710可从存储器子系统704读取权重706和状态708值,其中状态708值可首先包含输入数据。尽管此处未说明,但处理引擎阵列710可包含处理引擎的阵列,所述处理引擎中的每一个可执行例如相乘和累加操作。处理引擎阵列710可将计算结果输出到结果缓冲器712。在一些状况下,在将结果写入到存储器子系统704之前,实例神经网络处理引擎702可使用激活716块对计算结果执行激活函数和/或使用合并718块对计算结果执行合并。
在操作中,神经网络处理引擎702从存储器子系统704中的存储器组714读取权重706和状态708,并将权重706和状态708输入到处理引擎阵列710中。处理引擎阵列710可将中间结果输出到结果缓冲器712,中间结果可从所述结果缓冲器写入到存储器子系统704。当多个中间结果组合成一个输出激活时,可选择性地启用激活716块。当节点的集群的输出组合成一个输出时,还可选择性地激活合并718块。当既不启用激活716也不启用合并718时,来自处理引擎阵列710的结果可从结果缓冲器直接移动到存储器子系统704。读取权重706和状态708及计算结果的额外循环可进行,直到到达神经网络中的最后一层且处理引擎阵列710输出最终结果为止。在一些状况下,可在最终结果被写入到存储器子系统704之前通过激活716和/或合并718块对所述最终结果进行操作。
如图7A中所说明,在各种实施方案中,存储器组714的一部分可用于存储权重706值,且不同部分可用于存储状态708值。在这些实施方案中,在神经网络处理引擎702接收任何输入数据之前,用于神经网络的权重706值可存储在针对权重706留出的存储器组714的部分中。在一些状况下,存储于存储器组714中的权重706可包含用于神经网络的所有权重。在一些状况下,所存储权重706可包含比用于神经网络的所有权重少的权重,其中当计算在进行中时从额外存储器730读取剩余的权重(如上文所论述)。同样在这些实施方案中,在计算的过程期间,中间结果(例如,状态708值)可存储在被预留用于存储状态708值的存储器组714的部分中。用于存储权重706的存储器组714的部分、用于存储状态708的部分及任何未使用的部分大体不重叠。
在图7A的实例中,当接收第一输入数据750时存储于存储器子系统704中的权重706为用于第一神经网络的权重706。第一神经网络可表示用于神经网络处理引擎702的第一上下文,所述第一神经网络包含权重706、第一神经网络被训练执行的任务(在以下实例中被称为第一任务)以及用于处理引擎阵列710、激活716块和/或合并718块的可能指令。当第一输入数据750由神经网络处理引擎702接收时,将对第一输入数据750执行第一任务。
如上文所论述,随着用于执行第一任务的计算进行,存储器子系统704中的空间可变得可用或可被视为未使用的。举例来说,随着存储中间结果所需的内存量变得较小,用于存储状态708值的存储器组714的部分可变得较小。在一些实例中,存储器子系统704中的逻辑可确定存储中间结果所需的内存量。在一些实例中,软件可确定存储中间结果所需的内存量,且可相应地缩减用于存储状态708值的存储器组714的部分。作为另一实例,由于已使用的权重706值被标记为不再需要,因此用于存储用于第一神经网络的权重706的存储器组714的部分可变得较小。在一些实例中,存储器子系统704中的逻辑可将所使用权重的地址位置标记为可用的。在一些实例中,软件可记录仍需要的权重值及已经被使用并不再需要的权重值。
在各种实施方案中,因为存储器子系统704中的空间变得未使用或可用,如图7B中所说明,所以用于第二神经网络的权重707值可存储在可用空间中。在图7B中所说明的实例中,先前用于存储用于第一神经网络的权重706的若干存储器组714及先前用于存储状态708值的若干存储器组714已经被重新设置以存储用于第二神经网络的权重707值。第二神经网络可能已被训练执行下文被称作第二任务的任务,所述第二任务可不同于第一任务。权重707、第二任务以及用于处理引擎阵列710、激活716块和/或合并718块的可能命令可被视为用于神经网络处理引擎702的第二上下文。可通过芯片互连件720从额外存储器730读取权重707,所述额外存储器可为芯片上高速缓冲存储器、处理器存储器和/或另一神经网络处理引擎702的存储器。
在各种实施方案中,存储用于第二神经网络的权重707可在计算用于第一输入数据750的结果期间进行。即,随着用于第一输入数据750的结果的计算进行并且存储器组714中的空间变得可用,神经网络处理引擎702可开始将用于第二神经网络的权重707加载到未使用空间中。存储用于第二神经网络的权重707可与通过神经网络处理引擎702接收将对其执行第二任务的第二输入数据751同时起开始。在一些状况下,当神经网络处理引擎702正在计算用于第一输入数据750的结果时,接收第二输入数据751。在一些状况下,可在接收第二输入数据751之前或之后开始存储用于第二神经网络的权重707。在一些实例中,接收第二输入数据751触发加载用于第二神经网络的权重707。在一些实例中,接收第二输入数据751触发用于第二输入数据751的结果的计算。
在一些状况下,仅用于存储用于第一神经网络的权重706的存储器组714被重新设置以存储用于第二神经网络的权重707。在这些状况下,用于存储状态708的存储器组714的部分一直可用于存储中间结果。
在一些状况下,重新设置存储器组714可包含在存储器组714之间移动数据。举例来说,随着用于存储状态708的存储器组714的部分变得较小,尚未使用的权重706可移动到此部分中。在此实例中,先前由用于第一神经网络的权重706占据的存储器组714的部分可逐步地变得由用于第二神经网络的权重707占据,使得一旦完成上下文切换,存储器的分配对于第一神经网络为相同的。
在各种实施方案中,一旦神经网络处理引擎702完成计算用于第一输入数据750的结果,那么神经网络处理引擎702可准备好执行用于第二输入数据751的计算。在图7C中所说明的实例中,神经网络处理引擎702已完成从第一神经网络到第二神经网络的上下文切换。如在此实例中所说明,用于第二神经网络的权重707已经加载到存储器子系统704中,且神经网络处理引擎702准备好开始计算用于第二输入数据751的结果。
在各种实施方案中,神经网络处理引擎702可在完成计算第一输入数据750的一个或两个周期内开始计算用于第二输入数据751的结果。在一些实施方案中,在用于第一输入数据750的结果是完整的之前,神经网络处理引擎702可开始计算用于第二输入数据751的结果。举例来说,当用于计算用于第二输入数据751的结果的状态708和权重707被输入到处理引擎阵列710中时,用于第一输入数据750的计算的最终周期可仍通过处理引擎阵列710进行。在此实例中,用于第一输入数据750和第二输入数据751的计算可同时存在于处理引擎阵列710中。
在一些状况下,现在存储于存储器子系统704中的权重707包含用于第二神经网络的所有权重。在一些状况下,权重707非用于第二神经网络的所有权重,且可从额外存储器730读取任何剩余的权重,因为存储器组714中的空间变得可用。
在一些状况下,在图7C中所说明的实例中,存储器子系统704中仍可存在与第一上下文相关的一些数据。举例来说,用于第一神经网络的一些权重706值,例如最后一个使用的权重值,可仍在存储器组714中。在此实例中,一旦用于第二输入数据751的计算开始,便可覆盖这些权重706。作为另一实例,用于第一输入数据750的计算的最终结果仍可在存储器组714中,等待通过芯片互连件720被读出。最终结果可在正在进行用于第二输入数据751的计算时保留在存储器子系统704中,或可在开始用于第二输入数据751的计算之前被读出。
当神经网络处理引擎702使用用于第一神经网络的权重706值计算结果时加载用于第二神经网络的权重707值使得神经网络处理引擎702能够在第一神经网络与第二神经网络之间执行快速的上下文切换。快速的上下文切换可使得神经网络处理引擎702能够增加吞吐量并且较快地产生结果。
用于增加神经网络处理器的吞吐量的另一技术为将神经网络处理器配备有可并行地操作的多个神经网络处理引擎。举例来说,神经网络处理器可同时在不同神经网络处理引擎上执行多个可能不同的神经网络。作为另一实例,神经网络处理器可批量处理更多的输入数据集合,因此提高权重值的重新使用率。
图8说明具有多个神经网络处理引擎802a到802n的神经网络处理器800的实例。神经网络处理引擎802a到802n中的每一个可包含存储器子系统及处理引擎阵列,且可执行神经网络执行神经网络被编程所针对的任务所需的计算。在所说明的实例中,神经网络处理器800包含n个神经网络处理引擎802a到802n。
实例神经网络处理器800进一步包含用于与处理器存储器通信的使用DRAM 830实施于此实例中的DRAM控制器842a到842k。在所说明的实例中,神经网络处理器800包含k个DRAM控制器842a到842k,其中的每一个可能够与一组独立的DRAM组通信。在其它实例中,其它类型的RAM技术可用于处理器存储器。DRAM控制器842a到842k还可被称作存储器控制器。
实例神经网络处理器800进一步包含外围组件互连(PCI)控制器844a到844p以用于与系统中的PCI装置832通信。在此实例中,PCI是用于实施处理器总线的总线协议。处理器总线可将神经网络处理器800连接到PCI装置832,例如I/O装置、存储器控制器、存储装置和/或网络接口卡等等。在此实例中,神经网络处理器800包含p个PCI控制器844a到844p,其中的每一个可包含单独的根联合体并且可与PCI装置832的单独集合通信。在其它实例中,其它标准化总线协定,例如超路径互连(UPI)可用于主机总线。在其它实例中,可使用专有总线协议。
实例神经网络处理器800进一步包含DMA引擎846a到846d,其可在神经网络处理引擎802a到802n、DRAM控制器842a到842k与PCI控制器844a到844p之间移动数据。在所说明的实例中,神经网络处理器800包含d个DMA引擎846a到846d。在一些实施方案中,DMA引擎846a到846d可被指派特定任务,例如将数据从DRAM控制器842a移动到神经网络处理引擎802a到802n或在PCI控制器844a到844p与神经网络处理引擎802a到802n之间移动数据。在一些实施方案中,至少一个DMA引擎846a到846d可专用于每一神经网络处理引擎802a到802n。在一些实施方案中,DMA引擎846a到846d可被视为集区而非专用于功能或组件,使得每当需要移动数据时,即使用可用的DMA引擎846a到846d。
在实例神经网络处理器800中,各种组件可通过芯片互连件820进行通信。芯片互连件820主要包含用于在神经网络处理器800的组件之间路由数据的布线。在一些状况下,芯片互连件820可包含最小逻辑量,例如用以控制数据的方向的多路复用器、用于处置时钟域交叉的触发器和定时逻辑。
图9说明神经网络处理器900的实例,其已经配置以使神经网络的权重906存储于两个神经网络处理引擎902a到902b的存储器子系统中。神经网络处理器900可类似于图8中所说明的神经网络处理器800。如图9中所说明,每一神经网络处理引擎902a到902n包含存储器子系统904a到904n及处理引擎阵列910a到910n。在各种实施方案中,存储器子系统904a到904n中的每一个可存储用于神经网络的权重,使得神经网络处理引擎902a到902n中的每一个可独立地执行神经网络。
在一些状况下,神经网络处理引擎902a到902n中的一个,例如第二神经网络处理引擎902b,可不需要神经网络处理引擎902b的存储器子系统904b中的所有空间。举例来说,神经网络处理引擎902b可需要小于存储器子系统904b中的全部空间的空间来存储用于神经网络的权重。或者,作为另一实例,神经网络处理引擎902b可能已被指定为仅或主要从DRAM 930获得权重值(例如,神经网络处理引擎902b正在执行的神经网络具有较高程度的权重重新使用)。
在各种实施方案中,第二神经网络处理引擎902b中的可用存储器可用于存储用于正由第一神经网络处理引擎902a执行的神经网络的权重906。用于神经网络的权重906可能例如太多而不能完全存储在第一神经网络处理引擎902a的存储器子系统904a中。如先前所提及,不适合第一神经网络处理引擎902a的权重906可存储在DRAM 930中。然而,将这些权重存储在第二神经网络处理引擎902b的可用空间中可有效得多,这是由于将权重906从一个神经网络处理引擎902b复制到另一神经网络处理引擎902a可比从DRAM 930读取权重906进行地快得多。
如上文所论述,当第一神经网络处理引擎902a在处理一组输入数据时,权重906可从第二神经网络处理引擎902b被复制到第一神经网络处理引擎902a。在一些状况下,已使用且不再需要的权重906可从第一神经网络处理引擎902a移动到第二神经网络处理引擎902b,直到完成处理输入数据为止。在各种实施方案中,DMA引擎946a到946d可在神经网络处理引擎902a到902n之间复制或移动数据,使得神经网络处理引擎902a到902n无需花费时间来执行针对神经网络的计算。
第二神经网络处理引擎902b的存储器子系统904b中的不用于存储用于第一神经网络处理引擎902a的权重906的任何空间可由神经网络处理引擎902b用于执行其自身的计算。
在一些实施方案中,代替在神经网络处理引擎1002a到1002n之间移动权重,反而可移动进行中的计算。图10说明神经网络处理器1000的实例,其中所述神经网络处理器已经配置为将神经网络的权重1006存储在两个神经网络处理引擎1002a到1002b的存储器子系统中。神经网络处理器1000可类似于图8中所说明的神经网络处理器。如在图9的实例中,在图10的实例中,用于神经网络的权重1006存储于两个神经网络处理引擎1002a到1002b的存储器子系统1004a到1004b中,有可能因为将所有权重1006存储在芯片上所需的内存量大于任何一个神经网络处理引擎1002a到1002n的内存量。
如先前所提及,权重1006可与特定神经网络层相关联。因此,用于第一组层的权重1006可存储在第一神经网络处理引擎1002a中,且用于剩余的层的权重1006可存储在神经网络处理引擎1002b中。
在各种实施方案中,当接收用于与权重1006相关联的神经网络的输入数据时,输入数据可被提供到第一神经网络处理引擎1002a,这是由于第一神经网络处理引擎1002a具有用于初始神经网络层的权重。第一神经网络处理引擎1002a可进行到处理输入数据、从存储器子系统1004a读取权重1006、运用处理引擎阵列1010a计算中间结果及将中间结果写入回到存储器子系统1004a。
一旦第一神经网络处理引擎1002a已针对第一神经网络处理引擎1002a具有权重所针对的每一层执行计算,那么第一神经网络处理引擎1002a可使进行中的计算移动到第二神经网络处理引擎1002b。移动进行中的计算可包含移动状态1008值。状态1008可包含例如一组中间结果。在一些实例中,状态1008可进一步包含经处理的最后一个层的识别、用于处理引擎阵列1010b的控制输入、用于激活函数的状态值和/或用于合并函数的状态值等等。在各种实施方案中,可涉及DMA引擎1046a到1046d以将状态1008值从第一神经网络处理引擎1002a复制到第二神经网络处理引擎1002b。
在各种实施方案中,一旦状态1008已经被复制到第二神经网络处理引擎1002b,那么神经网络处理引擎1002b可接收信号以恢复进行中的计算。所述信号可采用以下形式,例如:中断、到第二神经网络处理引擎1002b中的寄存器的写入,或通过控制总线在神经网络处理引擎1002a到1002n之间发送的指令以及其它实例。在一些状况下,第二神经网络处理引擎1002b可自动开始计算。举例来说,中间结果可以与输入数据相同的方式输入,因此在第二神经网络处理引擎1002b中激活原本针对输入数据激活的相同机制。
在各种实施方案中,恢复进行中的计算可包含将权重1006连同来自第一神经网络处理引擎1002a的中间结果从中间层输入到处理引擎阵列1010b中。在各种实施方案中,神经网络处理引擎1002b不需要用于恢复进行中的计算的任何特殊或不同行为,因为神经网络处理引擎1002b可将进行中的计算视为新的计算的开始,或因为神经网络处理引擎1002b可准确地获取第一神经网络处理引擎1002a中断的位置。
在图9和10的实例中,为用于神经网络的所有权重无法保持在处理引擎阵列的本地存储器中时提供解决方案。尽管可在神经网络处理引擎之间移动数据时引发一些时延,但此时延相较于当从芯片外存储器读取权重时引发的时延将仍相当小。
图11说明用于当所有权重无法存储在单个处理引擎阵列本地时将用于神经网络的所有权重存储在芯片上的另一解决方案。图11说明包含两个神经网络处理器1101a到1101b的神经网络处理系统1100的实例。在此实例中,每一神经网络处理器1101a到1101b是单独的芯片,其具有单独的裸片并且以不同封装被围封。神经网络处理器1101a到1101b可使用主机总线或处理器总线与彼此及与神经网络处理系统1100中的其它组件通信。处理器总线可使用例如基于PCI的协议来实施。
在各种实施方案中,神经网络处理器1101a到1101b中的每一个包含至少一个并且有可能更多的神经网络处理引擎1102a到1102b。如上文所论述,神经网络处理引擎1102a到1102b中的每一个可包含处理引擎阵列1010a到1010b及存储器子系统1104a到1104b。
为了在神经网络处理引擎1102a到1102b与每一神经网络处理器1101a到1101b中的其它组件之间进行通信,神经网络处理器1101a到1101b可包含芯片互连件1020a到1020b。芯片互连件1020a到1020b可主要包含用于在神经网络处理器1101a到1101b的组件之间路由信号的布线以及有可能一些定时逻辑。
神经网络处理器1101a到1101b的其它组件可包含用于与处理器总线通信的PCI控制器1144a到1144b。在各种实施方案中,神经网络处理器1101a到1101b可包含未说明的组件,例如DRAM及DMA控制器。
在图11的实例中,用于神经网络的权重1106可一分为二,其中两部分的大小相同或大小不同。对应于初始神经网络层的第一组权重1106可加载到第一神经网络处理器1101a中的神经网络处理引擎1102a的存储器子系统1104a中。第二组权重1106可加载到第二神经网络处理器1101b中的神经网络处理引擎1102b的存储器子系统1104b中。在此配置中,当接收用于神经网络的输入数据时,输入数据可被提供到第一神经网络处理器1101a中的神经网络处理引擎1102a。神经网络处理引擎1102a可针对输入数据继续进行计算。
一旦神经网络处理引擎1102a针对神经网络处理引擎1102a具有权重1106所针对的层中的每一个执行计算,那么神经网络处理引擎1102a可使进行中的计算传送到第二神经网络处理器1101b中的神经网络处理引擎1102b。举例来说,神经网络处理引擎1102a可指示DMA引擎将计算的状态1108复制到PCI控制器1144a,其中状态1108可包含中间结果等等。在此实例中,PCI控制器1144a可生成到第二神经网络处理器1101b的一个或多个写入,其中所述写入包含状态1108值。在一些实施方案中,第一神经网络处理器1101a可直接写入到神经网络处理引擎1102b的存储器子系统1104b中。在一些实施方案中,状态1108数据通过第二神经网络处理器1101b中的PCI控制器1144b被高速缓存。在这些实施方案中,DMA引擎例如可将状态1108数据从PCI控制器1144b移动到神经网络处理引擎1102b。
一旦状态1108已经加载到第二神经网络处理器1101b中的神经网络处理引擎1102b的存储器子系统1104b中,那么神经网络处理引擎1102b可恢复进行中的计算。在一些实例中,第一神经网络处理器1101a通过生成对第二神经网络处理器1101b的中断或通过将值写入到第二神经网络处理器1101b中的寄存器而触发第二神经网络处理引擎1102b。一旦神经网络处理引擎1102b计算了最终结果,那么第二神经网络处理器1101b可输出结果。
在图11的实例中,用于神经网络的所有权重1106存储在处理引擎阵列1010a到1010b本地,使得神经网络处理器1101a到1101b可避免必须读取处理器存储器以获得权重1106。一些延迟是在神经网络处理器1101a到1101b之间传送状态1108时被引发的,但所述延迟仍可比由对处理器存储器的多个读取引起的延迟小得多。
在各种实施方案中,图10和图11中所说明的实例可以各种方式组合。举例来说,处理一组输入数据可在一个神经网络处理引擎中开始,并且可被传送到相同神经网络处理器中的第二神经网络处理引擎。进行中的计算接着可从第二神经网络处理引擎传送到第三神经网络处理引擎,其中第三神经网络处理引擎是在不同的神经网络处理器中。各种配置是可能的以使得能够将用于神经网络的所有权重存储在芯片上,并且最小化或消除对处理器存储器的读取。
图12说明可在神经网络处理器执行神经网络时由神经网络处理器执行的过程1200的实例。
在步骤1202处,过程1200包含将一组权重值存储在神经网络处理电路的多个存储器组中,其中神经网络处理电路包含与多个存储器组在同一裸片上的处理引擎的阵列,且其中在接收输入数据之前存储所述一组权重值。在各种实施方案中,神经网络处理电路是神经网络处理器的一部分。在一些实例中,设定的权重值包含用于神经网络的所有权重值。
在步骤1204处,过程1200包含接收输入数据。在各种实例中,输入数据可以是图像、音频信号、文本的字符串、一连串数字或某一其它输入。
在步骤1206处,过程1200包含使用所述一组权重值以执行针对神经网络规定的任务。举例来说,所述任务可包含图像识别、语音辨识、自然语言处理、游戏等。权重值先前可通过训练来确定,其中例如输出结果为已知的输入数据被输入到神经网络中。
步骤1206可包含用于执行任务的其它步骤。在步骤1208处,执行任务包含从多个存储器组读取权重值。在一些实例中,读取权重值包含同时从来自多个存储器组的第一存储器组读取第一权重值及从来自多个存储器组的第二存储器组读取第二权重值。
在步骤1210处,执行任务可进一步包含将权重值及输入数据输入到处理引擎的阵列中。在一些实例中,处理引擎的阵列是脉动阵列。在一些实例中,步骤1210可进一步包含使用处理引擎的阵列来确定中间结果及将中间结果存储在来自多个存储器组的存储器组中。在一些实例中,可在读取额外权重值的同时写入中间结果。
在步骤1212处,执行所述任务可进一步包含使用处理引擎的阵列计算结果,其中所述结果对应于执行任务的结果。
在一些实施方案中,存储在步骤1202中的所述一组权重值包含用于神经网络的所有权重值的第一部分。在这些实施方案中,过程1200可进一步包含确定多个存储器组具有可用空间。可用空间可来自需要较少存储器空间的中间结果和/或来自不再需要的权重值。过程1200可进一步包含读取用于神经网络的所有权重值的第二部分,其中所述第二部分是从额外存储器读取。在一些实例中,额外存储器可与同一裸片上的处理引擎的第二阵列相关联。在一些实例中,额外存储器可在芯片外。过程1200可进一步包含将所述第二部分写入到可用空间。权重的第二部分可接着用于继续执行任务。
图13说明可在神经网络处理器执行神经网络时由神经网络处理器执行的过程1300的实例。
在步骤1302处,过程1300包含将第一组权重值存储在神经网络处理系统的第一组存储器组中。
在步骤1304处,过程1300包含将第二组权重值存储在神经网络处理系统的第二组存储器组中,其中第一组权重值及第二组权重值包括神经网络的所有权重值,且其中在输入数据由神经网络处理系统接收之前存储第一组权重值和第二组权重值。
在步骤1306处,过程1300包含接收输入数据。在各种实例中,输入数据可以是图像、音频信号、文本的字符串、一连串数字或某一其它输入。
在步骤1308处,过程1300包含执行针对神经网络规定的任务。在各种实例中,所述任务与输入数据的类型(例如用于输入图像的图像辨识、用于音频信号的语音辨识等等)相关。
步骤1308可包含用于执行所述任务的其它步骤。在步骤1310处,执行所述任务包含使用处理引擎的第一阵列计算中间结果,其中处理引擎的第一阵列与第一组存储器组在同一第一裸片上,且其中处理引擎的第一阵列使用第一组权重值及输入数据来计算中间结果。计算中间结果可包含从第一组存储器组同时读取两个或多于两个权重值。在一些实例中,所述中间结果反映神经网络的一个或多个初始层的输出。
在步骤1312处,执行所述任务进一步包含将中间结果和状态从第一组存储器组复制到第二组存储器组,其中所述状态描述由处理引擎的第一阵列完成的任务的阶段。在一些实例中,当准备好复制中间结果和状态时,处理的第一阵列已完成对输入数据的操作,并且可开始对新的输入数据的操作。
在步骤1314处,执行所述任务进一步包含使用处理引擎的第二阵列计算最终结果,其中处理引擎的第二阵列与第二组存储器组在同一第二裸片上,其中处理引擎的第二阵列使用第二组权重值、中间结果和状态来计算最终结果,且其中所述最终结果对应于执行任务的结果。计算所述最终结果可包含从第二组存储器组同时读取两个或多于两个权重值。在一些实例中,所述最终结果反映神经网络的一个或多个最终层的输出。
在一些实例中,含有第一组存储器组和处理引擎的第一阵列的第一裸片及含有第二组存储器组和处理引擎的第二阵列的第二裸片为同一裸片的部分。所述裸片可用于神经网络处理器,其中神经网络处理器包含多于一个神经网络处理引擎(例如,其中神经网络处理引擎包含一组存储器组和处理引擎的阵列)。在一些实例中,神经网络处理器可包含内部通信结构,可通过所述内部通信结构复制中间结果和状态。
在一些实例中,第一裸片和第二裸片各自为不同神经网络处理器的一部分,并且因此驻留在不同封装中。在这些实例中,主机总线可使得两个神经网络处理器能够互相通信,包含将中间结果和状态从一个神经网络处理器复制到另一神经网络处理器。
如在步骤1304中所提及,第一组权重值和第二组权重值可为用于神经网络的所有权重值。此可意谓不从处理器存储器读取任何权重值。处理器存储器与第一裸片或第二裸片在不同封装中,并且因此可具有明显的读取延迟。
图14说明可由包含神经网络处理器的计算系统执行的过程1400的实例。
在步骤1402处,过程1400包含存储用于第一神经网络的第一组权重值,其中第一神经网络被配置成执行第一任务,且其中第一组权重值存储在神经网络处理器中的存储器的第一部分中。第一组权重值和第一任务可被视为第一上下文。
在步骤1404处,过程1400包含接收与第一任务相关联的第一输入数据,其中在存储第一组权重值之后接收第一输入数据。第一任务将使用第一输入数据作为输入来执行。在各种实施方案中,在接收任何输入数据之前将第一组权重值存储于存储器中。
在步骤1406处,过程1400包含使用神经网络处理器来计算第一结果,其中计算第一结果包含使用第一组权重值和第一输入数据,其中第一结果对应于执行第一任务的结果,且其中在计算第一结果期间,中间结果存储在存储器的第二部分中。存储器的第一部分和第二部分大体不重叠。
在步骤1408处,过程1400包含在计算第一结果期间识别存储器的第三部分,其中第三部分包含存储器中的未使用空间。未使用空间可包含先前是但不再是第一部分(例如,用于存储第一组权重值的部分)的一部分的空间和/或先前是但不再是第二部分(例如,用于存储中间结果的部分)的一部分的空间。第三部分大体不与第一部分或第二部分重叠。
在步骤1410处,过程1400包含将第二组权重值存储在第三部分中,其中第二组权重值是用于第二神经网络,其中第二神经网络被配置成执行第二任务。在一些状况下,第二任务不同于第一任务。可在完成计算第一结果之前存储第二组权重值。
在步骤1412处,过程1400包含接收与第二任务相关联的第二输入数据。所述第二任务将使用第二输入数据作为输入来执行。
在步骤1414处,过程1400包含使用神经网络处理器来计算第二结果,其中计算第二结果包含使用权重值的第二组权重和第二输入数据,其中在完成计算第一结果后,计算第二结果,且其中第二结果对应于执行第二任务的结果。
在一些实施方案中,过程1400可进一步包含缩减存储器的第一部分的大小,其中大小的缩减对应于来自第一组权重值的完成计算第一结果所不需要的权重值。不需要的权重值可包含已经使用的权重值。缩减第一部分的大小可包含将第一部分的部分指定为未使用的,并将未使用的部分视为不再是第一部分的一部分。
在一些实施方案中,过程1400可进一步包含缩减存储器的第二部分的大小,其中所述大小对应于存储中间结果所需要的内存量。内存量可在计算第一结果的过程内减少。缩减第二部分的大小可包含将第二部分的部分指定为不再是第二部分的一部分。
在一些实施方案中,第一组权重值包含不到用于第一神经网络的所有权重值。在这些实施方案中,过程1400可进一步包含从计算系统的第二存储器读取用于第一神经网络的额外的一组权重值。第二存储器可以是芯片外处理器存储器、芯片上高速缓冲存储器和/或第二神经网络处理器的存储器。过程1400可进一步包含将额外的一组权重值存储在存储器的第一部分中,其中在存储第二组权重值之前存储额外的一组权重值。
图15说明其中可使用上文所论述的各种实例的网络1500。图15的实例网络1500包含各种不同类型的网络装置,例如包括网络装置、交换机和路由器的节点。在某些实例中,网络1500可基于具有点对点链路的切换架构。如图15中所说明,网络1500包含多个交换机1104a到1104d,其可布置成网络。在一些状况下,交换机布置成多层网络,例如Clos网络。在局域网(LAN)段之间筛选和转发包的网络装置可被称作交换机。交换机通常在数据链路层(层2)处操作,且有时在开放系统互连(OSI)参考模型的网络层(层3)处操作,并且可支持若干包协议。交换机1104a到1104d可连接到多个节点1102a到1102h,并在任何两个节点之间提供多个路径。
网络1500还可包含用于与其它网络1508(例如其它子网、LAN、广域网(WAN)或互联网)连接的一个或多个网络装置,并且可被称作路由器1506。路由器使用报头和转发表来确定转发包的最佳路径,并使用例如因特网控制消息协议(ICMP)的协议彼此通信并配置任何两个装置之间的最佳路由。
在一些实例中,网络1500可包含许多不同类型的网络中的任一种或组合,例如电缆网络、因特网、无线网络、蜂窝网络和其它专用和/或公用网络。互连交换机1104a到1104d和路由器1506(如果存在的话)可被称作交换机结构、结构、网络结构或简称为网络。在计算机网络的上下文中,术语“结构”和“网络”在本文中可互换使用。
节点1102a到1102h可以是表示用户装置、服务提供商计算机或第三方计算机的主机系统、处理器节点、存储子系统和I/O机箱的任何组合。
用户装置可包含访问应用程序1532(例如网络浏览器或移动装置应用程序)的计算装置。在一些方面中,应用程序1532可由计算资源服务或服务提供商托管、管理和/或提供。应用程序1532可允许用户与服务提供商计算机交互以例如访问网络内容(例如,网页、音乐、视频等)。用户装置可以是计算装置,例如移动电话、智能电话、个人数字助理(PDA)、笔记本电脑、上网本计算机、台式计算机、精简客户端装置、平板计算机、电子图书(电子书)阅读器、游戏控制台等。在一些实例中,用户装置可通过其它网络1508与服务提供商计算机通信。另外,用户装置可以是由服务提供商计算机管理、控制的分布式系统的部分,或另外是服务提供商计算机的一部分(例如,与服务提供商计算机集成的控制台装置)。
图15的节点1102a到1102h还可表示一个或多个服务提供商计算机。一个或多个服务提供商计算机可提供本机应用程序,其被配置成在用户可与其交互的用户装置上运行。服务提供商计算机可在一些实例中提供计算资源,例如但不限于客户端实体、低时延数据存储、持久的数据存储、数据访问、管理、虚拟化、基于云的软件解决方案、电子内容性能管理等等。服务提供商计算机还可操作以向用户提供网页寄存、数据库化、计算机应用程序开发和/或实施平台、前述内容的组合等。在一些实施例中,服务提供商计算机可被提供为实施于托管计算环境中的一个或多个虚拟机。托管计算环境可包含一个或多个快速提供和释放的计算资源。这些计算资源可包含计算、网络连接和/或存储装置。托管计算环境也可被称作云端计算环境。服务提供商计算机可包含可能以集群布置、布置为服务器集群、或彼此不相关联的个别服务器的一个或多个服务器,并且可托管应用程序1532和/或基于云的软件服务。这些服务器可被配置为集成的分布式计算环境的部分。在一些方面中,服务提供商计算机可另外或替代地包含计算装置,例如移动电话、智能电话、个人数字助理(PDA)、笔记本电脑、台式计算机、上网本计算机、服务器计算机、精简客户端装置、平板计算机、游戏控制台等等。在一些情况下,服务提供商计算机可与一个或多个第三方计算机通信。
在一个实例配置中,节点1102a到1102h可包含至少一个存储器1518和一个或多个处理单元(或处理器1520)。处理器1520可以硬件、计算机可执行指令、固件或其组合来实施。处理器1520的计算机可执行指令或固件实施方案可包含以任何合适的编程语言编写的用于执行所描述的各种功能的计算机可执行或机器可执行指令。
在一些情况下,硬件处理器1520可以是单核处理器或多核处理器。多核处理器可包含同一处理器内的多个处理单元。在一些实施例中,多核处理器可共享某些资源,例如总线和第二级或第三级高速缓冲存储器。在一些情况下,单核或多核处理器中的每个核心还可包含多个执行逻辑处理器(或执行线程)。在此类核心(例如,具有多个逻辑处理器的核心)中,也可共享执行管线的若干阶段以及较低级别的高速缓冲存储器。
存储器1518可存储可在处理器1520上加载和执行的程序指令,以及在执行这些程序期间产生的数据。取决于节点1102a到1102h的配置和类型,存储器1518可以是易失性的(例如RAM和/或非易失性的(例如ROM、快闪存储器等)。存储器1518可包含操作系统1528、一个或多个数据存储区1530、一个或多个应用程序1532、一个或多个驱动程序1534,和/或用于实施本文中所公开的特征的服务。
操作系统1528可支持节点1102a到1102h基本功能,例如调度任务、执行应用程序,和/或控制器外围装置。在一些实施方案中,服务提供商计算机可托管一个或多个虚拟机。在这些实施方案中,每一虚拟机可被配置成执行其自身的操作系统。操作系统的实例包含Unix、Linux、Windows、Mac OS、iOS、Android等等。操作系统1528也可以是专有操作系统。
数据存储区1530可包含由操作系统1528、应用程序1532或驱动程序1534使用和/或操作的永久性或暂时性数据。此类数据的实例包含网页、视频数据、音频数据、图像、用户数据等。在一些实施方案中,数据存储区1530中的信息可通过网络1508提供到节点1102a到1102h。在一些状况下,数据存储区1530可另外或替代地包含存储的应用程序和/或驱动程序。替代地或另外,数据存储区1530可存储标准和/或专有软件库,和/或标准和/或专有应用程序用户接口(API)库。存储在数据存储区1530中的信息可以是机器可读目标代码、源码、解译代码或中间代码。
驱动程序1534包含可提供节点中的组件之间的通信的程序。举例来说,一些驱动程序1534可提供操作系统1528与额外存储装置1522、网络装置1524和/或I/O装置1526之间的通信。替代地或另外,一些驱动程序1534可提供应用程序1532与操作系统1528、和/或应用程序1532及可由服务提供商计算机访问的外围装置之间的通信。在许多状况下,驱动程序1534可包含提供易于理解的功能性的驱动程序(例如,打印机驱动程序、显示器驱动程序、硬盘驱动程序、固态装置驱动程序)。在其它状况下,驱动程序1534可提供专有或专用功能性。
服务提供商计算机或服务器还可包含额外存储装置1522,其可包含可移动的存储装置和/或不可移动的存储装置。额外的存储装置1522可包含磁性存储装置、光盘、固态磁盘、快闪存储器和/或磁带存储装置。额外的存储装置1522可与节点1102a到1102h容纳在相同的机箱中,或可在外部壳体中。存储器1518和/或额外的存储装置1522以及其相关联的计算机可读媒体可为计算装置提供计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。在一些实施方案中,存储器1518可包含多种不同类型的存储器,例如SRAM、DRAM或ROM。
可移动和不可移动的存储器1518和额外的存储装置1522是计算机可读存储媒体的实例。举例来说,计算机可读存储媒体可包含以用于存储信息的方法或技术实施的易失性或非易失性、可移动或不可移动的媒体,所述信息包含例如计算机可读指令、数据结构、程序模块或其它数据。存储器1518和额外存储装置1522是计算机存储媒体的实例。可存在于节点1102a到1102h中的额外类型的计算机存储媒体可包含但不限于PRAM、SRAM、DRAM、RAM、ROM、EEPROM、快闪存储器或其它存储器技术、CD-ROM、DVD或其它光学存储装置、盒式磁带、磁带、磁盘存储装置或其它磁性存储装置、固态驱动器或一些其它媒体,其可用于存储所要信息并可由节点1102a到1102h访问。计算机可读媒体还包含任何上述媒体类型的组合,包含一个媒体类型的多个单元。
替代地或另外,计算机可读通信媒体可包含计算机可读指令、程序模块或在数据信号(例如载波或其它传输)内传输的其它数据。然而,如本文中所使用,计算机可读存储媒体不包含计算机可读通信媒体。
节点1102a到1102h还可包含I/O装置1526,例如键盘、鼠标、笔、语音输入装置、触摸输入装置、显示器、扬声器、打印机等等。节点1102a到1102h还可包含一个或多个通信信道1536。通信信道1536可提供媒体,节点1102a到1102h的各种组件可通过所述媒体通信。通信信道1536可呈总线、环、交换结构或网络的形式。
节点1102a到1102h还可含有允许节点1102a到1102h与存储的数据库、另一计算装置或服务器、用户终端和/或网络1500上的其它装置通信的网络装置1524。
在一些实施方案中,网络装置1524是外围装置,例如基于PCI的装置。在这些实施方案中,网络装置1524包含用于与主机装置通信的PCI接口。术语“PCI”或“基于PCI”可用于描述PCI系列总线协议中的任何协议,包含原始PCI标准、PCI-X、加速图形端口(AGP)和高速PCI(PCIe)或基于本文中所论述的PCI协议的任何其它改进或衍生协议。基于PCI的协议是用于将例如本地外围装置的装置连接到主机装置的标准总线协议。标准总线协议是一种数据传送协议,其规范已由各个制造商定义好并采纳。制造商确保兼容装置与实施总线协议的计算系统兼容,反之亦然。如本文中所使用,基于PCI的装置还包含使用高速非易失性存储器(NVMe)通信的装置。NVMe是用于访问使用PCIe附接到计算系统的非易失性存储装置的装置接口规范。举例来说,总线接口模块可实施NVMe,并且网络装置1524可使用PCIe接口连接到计算系统。
基于PCI的装置可包含一个或多个功能。“功能”描述可由网络装置1524提供的操作。功能的实例包含大容量存储控制器、网络控制器、显示控制器、存储器控制器、串行总线控制器、无线控制器以及加密和解密控制器等。在一些状况下,基于PCI的装置可包含多于一个功能。举例来说,基于PCI的装置可提供大容量存储控制器和网络适配器。作为另一实例,基于PCI的装置可提供两个存储控制器以控制两个不同的存储资源。在一些实施方案中,基于PCI的装置可具有多达八个功能。
在一些实施方案中,网络装置1524可包含单根I/O虚拟化(SR-IOV)。SR-IOV是基于PCI的装置中可包含的扩展能力。SR-IOV允许物理资源(例如,单个网络接口控制器)表现为多个资源(例如,六十四个网络接口控制器)。因此,提供某一功能性的基于PCI的装置(例如,网络接口控制器)对于利用基于PCI的装置的装置可呈现为提供相同功能性的多个装置。具有SR-IOV能力的存储适配器装置的功能可分类为物理功能(PF)或虚拟功能(VF)。物理功能是装置的可被发现、管理和操控的全功能功能。物理功能具有可用于配置或控制存储适配器装置的配置资源。物理功能包含与非虚拟化装置所具有相同的配置地址空间和存储器地址空间。物理功能可具有与其相关联的数个虚拟功能。虚拟功能类似于物理功能,但为通常可能缺少配置资源且通常由其基础物理功能的配置来控制的轻量级功能。可将物理功能和/或虚拟功能中的每一个分配到在主机装置上运行的相应执行线程(例如虚拟机)。
作为一组能力的一部分,在各种实例中,节点1102a到1102h中的一个或多个可包含神经网络处理引擎和/或神经网络处理器,上文所论述其各种实例。在这些实例中,如此配备的节点1102a到1102h可针对机器学习及神经网络处理任务进行优化。
本文中所描述的模块可以是软件模块、硬件模块或其合适的组合。如果模块是软件模块,那么模块可体现在非暂时性计算机可读媒体上,并且由本文中所描述的计算机系统中的任一个中的处理器处理。应注意,所描述的过程和架构可在任何用户交互之前实时或以异步模式执行。可按图15中推荐的方式来配置模块,和/或本文中所描述的功能可由作为单独模块存在的一个或多个模块提供,和/或本文中所描述的模块功能可分散在多个模块上。
因此,应在说明性意义上而非限制性意义上看待本说明书及图式。然而,显而易见的是,在不脱离权利要求书中所阐述的本公开的更广泛精神和范围的情况下,可对其进行各种修改和改变。
所公开的技术的实例实施例可由以下条项描述:
1.一种用于神经网络处理的集成电路,其包括:
多个存储器组,其存储用于神经网络的一组权重值,所述一组权重值包含用于所述神经网络的所有权重值,其中所述一组权重值是先前使用具有已知结果的输入数据确定的,且其中来自所述多个存储器组的每一组可独立地访问;及
处理引擎的第一阵列,每一处理引擎包含乘法器-累加器电路,其中处理引擎的所述第一阵列与所述多个存储器组在同一裸片上;
其中,在接收输入数据后,所述集成电路被配置成使用所述一组权重值以执行所述神经网络被训练执行的任务,其中所述任务由具有所述已知结果的所述输入数据限定,且其中执行所述任务包含:
从所述多个存储器组读取权重值;
将所述权重值和所述输入数据输入到处理引擎的所述第一阵列中,其中处理引擎的所述第一阵列中的每一处理引擎使用来自所述权重值的权重值和来自所述输入数据的输入值计算加权和;及
计算结果,其中计算所述结果包含累加来自处理引擎的所述第一阵列的输出,且其中所述结果对应于执行所述任务的结果。
2.根据条项1所述的集成电路,其进一步包括:
处理引擎的第二阵列,其中第一组存储器组被配置成供处理引擎的所述第一阵列使用,其中第二组存储器组被配置成供处理引擎的所述第二阵列使用,且其中所述一组权重值存储在所述第一组存储器组和所述第二组存储器组中。
3.根据任一前述条项所述的集成电路,其进一步包括:
存储器控制器,其使得能够与芯片外存储器进行通信;
总线接口控制器,其使得能够与托管总线进行通信;
管理控制器,其被配置成在所述集成电路分组件之间移动数据;及
通信结构,其使得能够在所述多个存储器组、所述存储器控制器、所述总线接口控制器与所述管理控制器之间进行通信。
4.一种集成电路,其包括:
处理引擎的第一阵列;及
多个存储器组,其存储用于神经网络的一组权重值,其中来自所述多个存储器组的每一组可独立地访问,且其中所述多个存储器组和处理引擎的所述第一阵列在同一裸片上;
其中在接收输入数据后,所述集成电路被配置成使用所述一组权重值以执行针对所述神经网络限定的任务,且其中执行所述任务包含:
从所述多个存储器组读取权重值;
将所述权重值和所述输入数据输入到处理引擎的所述第一阵列中;及
使用处理引擎的所述第一阵列计算结果,其中所述结果对应于执行所述任务的结果。
5.根据条项4所述的集成电路,其中执行所述任务进一步包含:
从来自所述多个存储器组的不同存储器组同时读取两个或多于两个值。
6.根据条项5所述的集成电路,其中所述两个或多于两个值包含权重值、输入值或中间结果。
7.根据条项4到6中任一项所述的集成电路,其中执行所述任务进一步包含:
将第一值从所述多个存储器组写入到第一存储器组,及
从来自所述多个存储器组的第二存储器组读取第二值,其中读取所述第二值的同时写入所述第一值。
8.根据条项7所述的集成电路,其中所述第一值和所述第二值包含权重值及输入值或中间结果。
9.根据条项4到8中任一项所述的集成电路,其中所述一组权重值包含用于所述神经网络的所有权重值。
10.根据条项4到9中任一项所述的集成电路,其进一步包括:
处理引擎的第二阵列,其中来自所述多个存储器组的第一组存储器组被配置成供处理引擎的所述第一阵列使用,其中来自所述多个存储器组的第二组存储器组被配置成供处理引擎的所述第二阵列使用,其中所述第一组存储器组和所述第二组存储器组各自包含所述一组权重值的一部分,且其中执行所述任务进一步包含:
通过处理引擎的所述第一阵列计算中间结果,其中处理引擎的所述第一阵列使用来自所述第一组存储器组的权重值计算所述中间结果;及
通过处理引擎的所述第一阵列从所述第二组存储器组读取额外权重值,其中处理引擎的所述第一阵列使用所述中间结果和所述额外权重值来计算所述结果。
11.根据条项10所述的集成电路,其中所述一组权重值占据不到全部的所述第二组存储器组,其中处理引擎的所述第二阵列使用所述第二组存储器组的未由所述一组权重值占据的一部分来执行计算。
12.根据条项10所述的集成电路,其中存储在所述第一组存储器组和所述第二组存储器组中的所述一组权重值的所述部分包含用于所述神经网络的所有权重值。
13.根据条项4到12中任一项所述的集成电路,其中所述多个存储器组的第一部分被预留用于存储用于计算所述结果的中间结果,且其中所述一组权重值包含不到用于所述神经网络的所有权重值。
14.根据条项13所述的集成电路,其中执行所述任务进一步包含:
确定用于存储所述中间结果所需的内存量已减少;
从另一存储器读取额外的一组权重值;及
将所述额外的一组权重值存储在所述多个存储器组的所述第一部分中,且其中所述额外的一组权重值在需要计算所述结果之前被存储。
15.根据条项4到14中任一项所述的集成电路,其中处理引擎的所述第一阵列包含一组处理引擎,其中来自所述一组处理引擎的每一处理引擎将结果直接输出到来自所述一组处理引擎的另一处理引擎中。
16.根据条项4到15中任一项所述的集成电路,其中来自处理引擎的所述第一阵列的每一处理引擎包含乘法器-累加器电路。
17.根据条项4到16中任一项所述的集成电路,其中所述神经网络包含从有向加权图导出的多个权重值及用于针对所述有向加权图中的每一节点执行的计算的指令集,且其中所述多个权重值先前通过使用已知输入数据执行所述任务确定。
18.一种方法,其包括:
将一组权重值存储在神经网络处理电路的多个存储器组中,其中所述神经网络处理电路包含与所述多个存储器组在同一裸片上的处理引擎的阵列,且其中在接收输入数据之前存储所述一组权重值;
接收输入数据;
使用所述一组权重值以执行针对神经网络限定的任务,且其中执行所述任务包含:
从所述多个存储器组读取权重值;
将所述权重值和所述输入数据输入到处理引擎的所述阵列中;及
使用处理引擎的所述阵列计算结果,其中所述结果对应于执行所述任务的结果。
19.根据条项18所述的方法,其中所述一组权重值包含用于所述神经网络的所有权重值。
20.根据条项18或19所述的方法,其中所述一组权重值包含用于所述神经网络的所有权重值的第一部分,且进一步包括:
确定所述多个存储器组具有可用空间;
读取用于所述神经网络的所有权重值的第二部分,其中所述第二部分是从额外存储器读取;及
将所述第二部分写入到所述可用空间。
21.根据条项18到20中任一项所述的方法,其中所述额外存储器与在同一裸片上的处理引擎的第二阵列相关联。
22.根据条项18到21中任一项所述的方法,其中所述额外存储器是在芯片外。
23.根据条项18到22中任一项所述的方法,其中读取所述权重值包含同时从来自所述多个存储器组的第一存储器组读取第一权重值和从来自所述多个存储器组的第二存储器组读取第二权重值。
24.根据条项18到23中任一项所述的方法,其进一步包括:
使用处理引擎的所述阵列确定中间结果;及
将所述中间结果存储在来自所述多个存储器组的存储器组中,其中读取所述权重值的同时存储所述中间结果。
25.一种神经网络处理系统,其包括:
处理引擎的第一阵列,每一处理引擎包含乘法器-累加器电路;
第一组存储器组,其存储第一组权重值,其中所述第一组权重值先前使用具有已知结果的输入数据来确定,其中来自所述第一组存储器组的每一组可独立地访问,且其中处理引擎的所述第一阵列和所述第一组存储器组在同一第一裸片上;
处理引擎的第二阵列,每一处理引擎包含乘法器-累加器电路;及
第二组存储器组,其存储第二组权重值,其中所述第二组权重值先前使用具有所述已知结果的所述输入数据来确定,其中来自所述第二组存储器组的每一组可独立地访问,其中处理引擎的所述第二阵列和所述第二组存储器组在同一第二裸片上,其中所述第一组权重值和所述第二组权重值包括神经网络的所有权重值,且其中在输入数据由所述神经网络处理系统接收之前存储所述第一组权重值和所述第二组权重值;
其中,在接收输入数据后,所述神经网络处理系统被配置成执行所述神经网络被训练执行的任务,其中所述任务由具有所述已知结果的所述输入数据限定,且其中执行所述任务包含:
使用处理引擎的所述第一阵列计算中间结果,其中处理引擎的所述第一阵列中的每一处理引擎使用来自所述第一组权重值的权重值和来自所述输入数据的输入值计算加权和;
将所述中间结果和状态从所述第一组存储器组复制到所述第二组存储器组,其中所述状态描述由处理引擎的所述第一阵列完成的所述任务的阶段;及
使用处理引擎的所述第二阵列计算最终结果,其中处理引擎的所述第二阵列使用所述状态来确定所述任务的所述状态,其中处理引擎的所述第二阵列中的每一处理引擎使用来自所述第二组权重值的权重值及来自所述中间结果的值来计算加权和,且其中所述最终结果对应于执行所述任务的结果。
26.根据条项25所述的神经网络处理系统,其中所述第一裸片和所述第二裸片是同一裸片的部分,其中所述裸片包含通信结构和直接存储器访问控制器,且其中所述直接存储器访问控制器通过所述通信结构复制所述中间结果和所述状态。
27.根据条项25或26所述的神经网络处理系统,其中所述第一裸片在第一封装中,且所述第二裸片在第二封装中,且所述神经网络处理系统进一步包括:
总线,其耦合到所述第一裸片和所述第二裸片,其中所述中间结果和所述状态通过所述总线来复制。
28.一种神经网络处理系统,其包括:
处理引擎的第一阵列;
第一组存储器组,其存储第一组权重值,其中处理引擎的所述第一阵列和所述第一组存储器组在同一第一裸片上;
处理引擎的第二阵列;及
第二组存储器组,其存储第二组权重值,其中处理引擎的所述第二阵列和所述第二组存储器组在同一第二裸片上,其中所述第一组权重值和所述第二组权重值包括神经网络的所有权重值,且其中在输入数据由所述神经网络处理系统接收之前存储所述第一组权重值和所述第二组权重值;
其中,在接收输入数据后,所述神经网络处理系统被配置成执行针对所述神经网络限定的任务,且其中执行所述任务包含:
使用处理引擎的所述第一阵列计算中间结果,其中处理引擎的所述第一阵列使用所述第一组权重值和所述输入数据来计算所述中间结果;
将所述中间结果和状态从所述第一组存储器组复制到所述第二组存储器组,其中所述状态描述由处理引擎的所述第一阵列完成的所述任务的阶段;及
使用处理引擎的所述第二阵列计算最终结果,其中处理引擎的所述第二阵列使用所述第二组权重值、所述中间结果及所述状态来计算所述最终结果,且其中所述最终结果对应于执行所述任务的结果。
29.根据条项28所述的神经网络处理系统,其中所述第一裸片和所述第二裸片是同一裸片的部分。
30.根据条项28或29所述的神经网络处理系统,其中所述第一裸片和所述第二裸片是不同裸片。
31.根据条项30所述的神经网络处理系统,其进一步包括:
总线,其中所述第一裸片和所述第二裸片各自耦合到所述总线,且其中所述中间结果和所述状态通过所述总线来复制。
32.根据条项28到31中任一项所述的神经网络处理系统,其中执行所述任务进一步包含:
从来自所述第一组存储器组或所述第二组存储器组的不同存储器组同时读取两个或多于两个值。
33.根据条项32所述的神经网络处理系统,其中所述两个或多于两个值包含权重值、输入值或中间结果。
34.根据条项28到33中任一项所述的神经网络处理系统,其中执行所述任务进一步包含:
将第一值写入到来自所述第一组存储器组或所述第二组存储器组的第一存储器组;及
从来自所述第一组存储器组或所述第二组存储器组的第二存储器组读取第二值,其中在读取所述第二值的同时写入所述第一值。
35.根据条项34所述的神经网络处理系统,其中所述第一值或所述第二值包含权重值、输入值或中间结果。
36.根据条项28到35中任一项所述的神经网络处理系统,其中在执行所述任务期间,未从处理器存储器读取任何权重值,其中所述处理器存储器在与所述第一裸片或所述第二裸片不同的裸片上。
37.根据条项28到36中任一项所述的神经网络处理系统,其中来自处理引擎的所述第一阵列及处理引擎的所述第二阵列的每一处理引擎包含乘法器-累加器电路。
38.根据条项28到37中任一项所述的神经网络处理系统,其中所述神经网络包含从有向加权图导出的多个权重值及用于针对所述有向加权图中的每一节点执行的计算的指令集,且其中所述多个权重值先前通过使用已知输入数据执行所述任务而确定。
39.一种用于神经网络处理的方法,其包括:
将第一组权重值存储在神经网络处理系统的第一组存储器组中;
将第二组权重值存储在所述神经网络处理系统的第二组存储器组中,其中所述第一组权重值和所述第二组权重值包括神经网络的所有权重值,且其中在输入数据由所述神经网络处理系统接收之前存储所述第一组权重值和所述第二组权重值;
接收输入数据;
执行针对所述神经网络限定的任务,其中执行所述任务包含:
使用处理引擎的第一阵列计算中间结果,其中处理引擎的所述第一阵列与所述第一组存储器组在同一第一裸片上,且其中处理引擎的所述第一阵列使用所述第一组权重值和所述输入数据来计算所述中间结果;
将所述中间结果和状态从所述第一组存储器组复制到所述第二组存储器组,其中所述状态描述由处理引擎的所述第一阵列完成的所述任务的阶段;及
使用处理引擎的第二阵列计算最终结果,其中处理引擎的所述第二阵列与所述第二组存储器组在同一第二裸片上,其中处理引擎的所述第二阵列使用所述第二组权重值、所述中间结果及所述状态来计算所述最终结果,且其中所述最终结果对应于执行所述任务的结果。
40.根据条项39所述的方法,其中所述第一裸片和所述第二裸片是同一裸片的部分。
41.根据条项39所述的方法,其中所述第一裸片和所述第二裸片在不同封装中。
42.根据条项39到41中任一项所述的方法,其中未从处理器存储器读取任何权重值,其中所述处理器存储器与所述第一裸片或所述第二裸片在不同封装中。
43.根据条项39到42中任一项所述的方法,其进一步包括:
从所述第一组存储器组同时读取两个或多于两个值;及
从所述第二组存储器组同时读取两个或多于两个值。
44.根据条项39到43中任一项所述的方法,其进一步包括:
从所述第一组存储器组读取第一值,同时将第二值写入到所述第一组存储器组;及
从所述第二组存储器组读取第三值,同时将第四值写入到所述第二组存储器组。
45.一种用于神经网络处理的集成电路,其包括:
处理引擎的阵列;及
多个存储器组,其存储用于第一神经网络的第一组权重值,其中所述第一神经网络被配置成执行第一任务,其中所述第一组权重值先前通过使用具有已知结果的输入数据执行所述第一任务而确定,其中来自所述多个存储器组的每一组可独立地访问,且其中所述多个存储器组和处理引擎的所述阵列在同一裸片上;
其中所述集成电路被配置成:
接收与所述第一任务相关联的第一输入数据,其中所述第一输入数据存储在所述多个存储器组中;
使用所述第一组权重值和所述第一输入数据计算第一结果,其中所述第一结果使用处理引擎的所述阵列计算,且其中所述第一结果对应于执行所述第一任务的结果;
在计算所述第一结果期间确定所述多个存储器组具有可用空间;
将第二组权重值存储在所述可用空间中,其中所述第二组权重值是用于第二神经网络,其中所述第二神经网络被配置成执行第二任务,其中所述第二任务不同于所述第一任务,且其中存储所述第二组权重值使所述集成电路准备好在所述集成电路完成了对所述第一输入数据执行所述第一任务之前执行所述第二任务;
接收与第二任务相关联的第二输入数据,其中所述第二输入数据存储在所述多个存储器组中;及
使用所述第二组权重和所述第二输入数据计算第二结果,其中所述第二结果使用处理引擎的所述阵列计算,其中计算所述第二结果在完成计算所述第一结果后进行,且其中所述第二结果对应于执行所述第二任务的结果。
46.根据条项45所述的集成电路,其中确定所述多个存储器组具有可用空间包含:
确定存储用于计算所述第一结果的中间结果所需的空间量;及
确定所述空间量已减少。
47.根据条项45或46所述的集成电路,其中确定所述多个存储器组具有可用空间包含:
识别已经用于计算所述第一结果的一个或多个权重值;及
将由所述一个或多个权重值占据的空间标记为可用的。
48.根据条项45到47中任一项所述的集成电路,其中所述第一组权重值和所述第一任务与第一上下文相关联。
49.根据条项45到48中任一项所述的集成电路,其中所述第二组权重值和所述第二任务包括第二上下文。
50.一种集成电路,其包括:
处理引擎的阵列;及
多个存储器组,其存储用于第一神经网络的第一组权重值,其中所述第一神经网络被配置成执行第一任务,其中来自所述多个存储器组的每一组可独立地访问,且其中所述多个存储器组和处理引擎的所述阵列在同一裸片上;
其中所述集成电路被配置成:
接收与所述第一任务相关联的第一输入数据;
使用所述第一组权重值和所述第一输入数据计算第一结果,其中所述第一结果使用处理引擎的所述阵列计算,且其中所述第一结果对应于执行所述第一任务的结果;
将第二组权重值存储在所述多个存储器组中,其中所述第二组权重值是用于第二神经网络,其中所述第二神经网络被配置成执行第二任务,且其中存储所述第二组权重值在计算所述第一结果期间进行;
接收与所述第二任务相关联的第二输入数据;及
使用所述第二组权重值和所述第二输入数据计算第二结果,其中所述第二结果使用处理引擎的所述阵列计算,其中计算所述第二结果在完成计算所述第一结果后进行,且其中所述第二结果对应于执行所述第二任务的结果。
51.根据条项50所述的集成电路,其中在接收所述第一输入数据之前,所述第一组权重值存储在所述多个存储器组中。
52.根据条项50或51所述的集成电路,其中所述第一组权重值包含用于所述第一神经网络的所有权重值。
53.根据条项50到52中任一项所述的集成电路,其中,在完成计算所述第二结果之前,用于所述第二神经网络的所有权重值存储在所述多个存储器组中。
54.根据条项50到53中任一项所述的集成电路,其被进一步配置成:
存储用于所述第二神经网络的额外的一组权重值,其中在计算所述第二结果期间存储所述额外的一组权重值。
55.根据条项50到54中任一项所述的集成电路,其被进一步配置成:
确定所述多个存储器组中存储用于计算所述第一结果的中间结果所需的空间量;
确定所述空间量在计算所述第一结果期间已缩减;及
使用所述多个存储器组中不再用于存储所述中间结果的空间来存储所述第二组权重值。
56.根据条项50到55中任一项所述的集成电路,其被进一步配置成:
从所述第一组权重值识别完成计算所述第一结果所不需要的一个或多个权重值;及
使用所述多个存储器组中由所述一个或多个权重值占据的空间以存储所述第二组权重值。
57.根据条项50到56中任一项所述的集成电路,其被进一步配置成:
从来自所述多个存储器组的不同存储器组同时读取两个或多于两个值。
58.根据条项50到57中任一项所述的集成电路,其中所述两个或多于两个值包含权重值、输入值,或中间结果。
59.根据条项50到58中任一项所述的集成电路,其被进一步配置成:
将第一值从所述多个存储器组写入到第一存储器组;及
从来自所述多个存储器组的第二存储器组读取第二值,其中读取所述第二值的同时写入所述第一值。
60.根据条项59所述的集成电路,其中所述第一值或所述第二值包含权重值、输入值,或中间结果。
61.根据条项50到60中任一项所述的集成电路,其中处理引擎的所述阵列包含一组处理引擎,其中来自所述一组处理引擎的每一处理引擎将结果直接输出到来自所述一组处理引擎的另一处理引擎中。
62.根据条项50到61中任一项所述的集成电路,其中来自处理引擎的所述阵列的每一处理引擎包含乘法器-累加器电路。
63.根据条项50到62中任一项所述的集成电路,其中每一神经网络包含从相应有向加权图导出的相应多个权重值及用于针对所述有向加权图中的每一节点执行的计算的相应指令集,且其中所述多个权重值先前通过使用已知输入数据执行相应任务而确定。
64.一种计算机实施的方法,其包括:
通过包含神经网络处理器的计算系统存储用于第一神经网络的第一组权重值,其中所述第一神经网络被配置成执行第一任务,且其中所述第一组权重值存储在所述神经网络处理器中的存储器的第一部分中;
接收与所述第一任务相关联的第一输入数据,其中在存储所述第一组权重值之后接收所述第一输入数据;
使用所述神经网络处理器计算第一结果,其中计算所述第一结果包含使用所述第一组权重值和所述第一输入数据,其中所述第一结果对应于执行所述第一任务的结果,且其中,在计算所述第一结果期间,中间结果存储在所述存储器的第二部分中;
在计算所述第一结果期间识别所述存储器的第三部分,其中所述第三部分包含所述存储器中的未使用空间;
将第二组权重值存储在所述第三部分中,其中所述第二组权重值是用于第二神经网络,其中所述第二神经网络被配置成执行第二任务;
接收与所述第二任务相关联的第二输入数据;及
使用所述神经网络处理器计算第二结果,其中计算所述第二结果包含使用所述第二组权重和所述第二输入数据,其中计算所述第二结果在完成计算所述第一结果后进行,且其中所述第二结果对应于执行所述第二任务的结果。
65.根据条项64所述的计算机实施的方法,其进一步包括:
缩减所述存储器的所述第一部分的大小,其中所述大小的缩减对应于来自所述第一组权重值的完成计算所述第一结果所不需要的权重值。
66.根据条项64或65所述的计算机实施的方法,其进一步包括:
缩减所述存储器的所述第二部分的大小,其中所述大小对应于存储所述中间结果所需的内存量。
67.根据条项64到66中任一项所述的计算机实施的方法,其中所述第一部分、所述第二部分和所述第三部分不重叠。
68.根据条项64到67中任一项所述的计算机实施的方法,其中所述第一组权重值包含不到用于所述第一神经网络的所有权重值,且所述计算机实施的方法进一步包括:
从所述计算系统的第二存储器读取用于所述第一神经网络的额外的一组权重值;及
将所述额外的一组权重值存储在所述存储器的第一部分中,其中在存储所述第二组权重值之前存储所述额外的一组权重值。
其它变化在本公开的精神内。因此,虽然所公开的技术可接受各种修改和替代构造,但其某些所说明实施例已在图式中展示且已在上文详细描述。然而,应理解,无意将本公开限于所公开的具体形式,相反,意在涵盖落入所附权利要求书中所限定的本公开的精神和范围内的所有修改、替代构造和等效物。
除非本文中另有说明或与上下文明显矛盾,否则在描述所公开实施例的上下文中(尤其在所附权利要求书的上下文中)使用术语“一”和“所述”以及类似指示物应理解为涵盖单数以及复数。除非另外指出,否则术语“包括”、“具有”、“包含”及“含有”应被理解为开放式术语(即,意谓“包含但不限于”)。术语“连接”应理解为部分或全部地包含在内、附接到或接合在一起,即使是在存在中间物的情况下也是如此。除非本文中另有说明,否则本文中对值范围的叙述仅旨在用作单独提及落入所述范围内的每个单独值的简写方法,并且每个单独的值并入本说明书中,如同其在本文中单独引用一样。除非本文另外指出或与上下文另外明显矛盾,否则本文描述的所有方法都可以任何合适的次序执行。除非另外声明,否则本文中提供的任何和所有实例或示范性语言(例如,“例如”)的使用仅旨在更好地说明本公开的实施例,而不对本公开的范围构成限制。本说明书中的任何语言都不应理解为指示任何未请求保护的要素对于实践本公开是必需的。
除非另有具体陈述,否则例如词组“X、Y或Z中的至少一个”等分离性语言在如所使用的上下文内意欲理解为一般呈现项目、术语等可为X、Y或Z,或其任何组合(例如X、Y和/或Z)。因此,此类分离性语言一般无意且不应暗示某些实施例要求X中的至少一个、Y中的至少一个,或Z中的至少一个各自都存在。
本文中描述本公开的各种实施例,包含本发明人已知的用于执行本公开的最佳模式。在阅读前面的描述后,那些实施例的变化对于所属领域的技术人员而言可变得显而易见。本发明人期望所属领域的技术人员在适当时使用此类变化,并且本发明人打算以与本文中具体描述的方式不同的方式来实践本公开。因此,本公开包含适用法律所允许的在此随附的权利要求书中所述的主题的所有修改和等效物。此外,除非本文中另外指示或另外明显与内容相矛盾,否则本公开涵盖上文所描述的要素以其所有可能变化形式的任何组合。
Claims (15)
1.一种集成电路,其包括:
处理引擎的第一阵列;及
多个存储器组,其存储用于神经网络的一组权重值,其中来自所述多个存储器组的每一组能独立地访问,且其中所述多个存储器组和处理引擎的所述第一阵列在同一裸片上;
其中在接收输入数据后,所述集成电路被配置成使用所述一组权重值以执行针对所述神经网络限定的任务,且其中执行所述任务包含:
从所述多个存储器组读取权重值;
将所述权重值和所述输入数据输入到处理引擎的所述第一阵列中;及
使用处理引擎的所述第一阵列计算结果,其中所述结果对应于执行所述任务的结果。
2.根据权利要求1所述的集成电路,其中执行所述任务进一步包含:
从来自所述多个存储器组的不同存储器组同时读取两个或多于两个值。
3.根据权利要求2所述的集成电路,其中所述两个或多于两个值包含权重值、输入值,或中间结果。
4.根据任一前述权利要求所述的集成电路,其中执行所述任务进一步包含:
将第一值从所述多个存储器组写入到第一存储器组,及
从来自所述多个存储器组的第二存储器组读取第二值,其中在读取所述第二值的同时写入所述第一值。
5.根据权利要求4所述的集成电路,其中所述第一值和所述第二值包含权重值及输入值或中间结果。
6.根据任一前述权利要求所述的集成电路,其中所述一组权重值包含用于所述神经网络的所有权重值。
7.根据任一前述权利要求所述的集成电路,其进一步包括:
处理引擎的第二阵列,其中来自所述多个存储器组的第一组存储器组被配置成供处理引擎的所述第一阵列使用,其中来自所述多个存储器组的第二组存储器组被配置成供处理引擎的所述第二阵列使用,其中所述第一组存储器组和所述第二组存储器组各自包含所述一组权重值的一部分,且其中执行所述任务进一步包含:
通过处理引擎的所述第一阵列计算中间结果,其中处理引擎的所述第一阵列使用来自所述第一组存储器组的权重值计算所述中间结果;及
通过处理引擎的所述第一阵列从所述第二组存储器组读取额外权重值,其中处理引擎的所述第一阵列使用所述中间结果和所述额外权重值来计算所述结果。
8.根据权利要求7所述的集成电路,其中所述一组权重值占据不到全部的所述第二组存储器组,其中处理引擎的所述第二阵列使用所述第二组存储器组的未由所述一组权重值占据的一部分来执行计算。
9.根据权利要求7所述的集成电路,其中所述一组权重值的存储在所述第一组存储器组和所述第二组存储器组中的所述部分包含用于所述神经网络的所有权重值。
10.根据任一前述权利要求所述的集成电路,其中所述多个存储器组的第一部分被预留以用于存储用于计算所述结果的中间结果,且其中所述一组权重值包含不到用于所述神经网络的所有权重值。
11.根据权利要求10所述的集成电路,其中执行所述任务进一步包含:
确定用于存储所述中间结果所需的内存量已减少;
从另一存储器读取额外的一组权重值;及
将所述额外的一组权重值存储在所述多个存储器组的所述第一部分中,且其中所述额外的一组权重值在需要计算所述结果之前被存储。
12.根据任一前述权利要求所述的集成电路,其中处理引擎的所述第一阵列包含一组处理引擎,其中来自所述一组处理引擎的每一处理引擎将结果直接输出到来自所述一组处理引擎的另一处理引擎中。
13.根据任一前述权利要求所述的集成电路,其中来自处理引擎的所述第一阵列的每一处理引擎包含乘法器-累加器电路。
14.根据任一前述权利要求所述的集成电路,其中所述神经网络包含从有向加权图导出的多个权重值和用于针对所述有向加权图中的每一节点执行的计算的指令集,且其中所述多个权重值先前通过使用已知输入数据执行所述任务而确定。
15.一种方法,其包括:
将一组权重值存储在神经网络处理电路的多个存储器组中,其中所述神经网络处理电路包含与所述多个存储器组在同一裸片上的处理引擎的阵列,且其中在接收输入数据之前存储所述一组权重值;
接收输入数据;
使用所述一组权重值以执行针对神经网络限定的任务,且其中执行所述任务包含:
从所述多个存储器组读取权重值;
将所述权重值和所述输入数据输入到处理引擎的所述阵列中;及
使用处理引擎的所述阵列计算结果,其中所述结果对应于执行所述任务的结果。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/839,017 US20190180183A1 (en) | 2017-12-12 | 2017-12-12 | On-chip computational network |
US15/839,017 | 2017-12-12 | ||
US15/839,301 US10803379B2 (en) | 2017-12-12 | 2017-12-12 | Multi-memory on-chip computational network |
US15/839,301 | 2017-12-12 | ||
US15/839,157 | 2017-12-12 | ||
US15/839,157 US10846621B2 (en) | 2017-12-12 | 2017-12-12 | Fast context switching for computational networks |
PCT/US2018/064777 WO2019118363A1 (en) | 2017-12-12 | 2018-12-10 | On-chip computational network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111465943A true CN111465943A (zh) | 2020-07-28 |
CN111465943B CN111465943B (zh) | 2023-10-31 |
Family
ID=65139093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880080107.8A Active CN111465943B (zh) | 2017-12-12 | 2018-12-10 | 一种集成电路和用于神经网络处理的方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3724822A1 (zh) |
JP (2) | JP7179853B2 (zh) |
CN (1) | CN111465943B (zh) |
WO (1) | WO2019118363A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111886605A (zh) * | 2018-03-22 | 2020-11-03 | 亚马逊技术股份有限公司 | 针对多个输入数据集的处理 |
CN111915001A (zh) * | 2020-08-18 | 2020-11-10 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
CN113379047A (zh) * | 2021-05-25 | 2021-09-10 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
CN115640494A (zh) * | 2022-12-14 | 2023-01-24 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200117449A1 (en) * | 2018-10-12 | 2020-04-16 | Micron Technology, Inc. | Accelerated Access to Computations Results Generated from Data Stored in Memory Devices |
US11157213B2 (en) | 2018-10-12 | 2021-10-26 | Micron Technology, Inc. | Parallel memory access and computation in memory devices |
US11461622B2 (en) * | 2019-06-28 | 2022-10-04 | Amazon Technologies, Inc. | Dynamic code loading for multiple executions on a sequential processor |
EP4318254A1 (en) * | 2022-08-05 | 2024-02-07 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Semiconductor device system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
CN106462803A (zh) * | 2014-10-16 | 2017-02-22 | 谷歌公司 | 增强具有外部存储器的神经网络 |
US20170061326A1 (en) * | 2015-08-25 | 2017-03-02 | Qualcomm Incorporated | Method for improving performance of a trained machine learning model |
US20170286825A1 (en) * | 2016-03-31 | 2017-10-05 | International Business Machines Corporation | Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency |
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107454965A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 神经网络处理器中的批处理 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3353786B2 (ja) * | 1990-01-24 | 2002-12-03 | 株式会社日立製作所 | 情報処理装置 |
JP2002049405A (ja) | 2001-06-01 | 2002-02-15 | Hitachi Ltd | 分散制御装置、システム及びコントローラ |
JP4293151B2 (ja) | 2005-03-30 | 2009-07-08 | 日本ビクター株式会社 | 映像符号化方法及び映像記録装置 |
CN102947818B (zh) | 2010-05-19 | 2015-07-22 | 加利福尼亚大学董事会 | 神经处理单元 |
JP6045159B2 (ja) * | 2012-02-28 | 2016-12-14 | 三菱重工業株式会社 | 操作習熟度評価システム |
JP2015215837A (ja) | 2014-05-13 | 2015-12-03 | 株式会社デンソー | 演算処理装置 |
-
2018
- 2018-12-10 CN CN201880080107.8A patent/CN111465943B/zh active Active
- 2018-12-10 JP JP2020531932A patent/JP7179853B2/ja active Active
- 2018-12-10 WO PCT/US2018/064777 patent/WO2019118363A1/en unknown
- 2018-12-10 EP EP18836949.0A patent/EP3724822A1/en active Pending
-
2022
- 2022-08-01 JP JP2022123015A patent/JP7451614B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462803A (zh) * | 2014-10-16 | 2017-02-22 | 谷歌公司 | 增强具有外部存储器的神经网络 |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107454965A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 神经网络处理器中的批处理 |
US20170061326A1 (en) * | 2015-08-25 | 2017-03-02 | Qualcomm Incorporated | Method for improving performance of a trained machine learning model |
US20170286825A1 (en) * | 2016-03-31 | 2017-10-05 | International Business Machines Corporation | Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency |
Non-Patent Citations (3)
Title |
---|
FELIPE GALINDO SANCHEZ等: "Energy proportional streaming spiking neural network in a reconfigurable system", 《MICROPROCESSORS AND MICROSYSTEMS》, vol. 53, pages 57 - 67, XP085168409, DOI: 10.1016/j.micpro.2017.06.018 * |
NORMAN P. JOUPPI等: "In-Datacenter Performance Analysis of a Tensor Processing Unit", pages 1 - 12 * |
叶勇等: "非易失性突触存储阵列及神经元电路的设计", 《微电子学与计算机》, vol. 34, no. 11, pages 1 - 5 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111886605A (zh) * | 2018-03-22 | 2020-11-03 | 亚马逊技术股份有限公司 | 针对多个输入数据集的处理 |
CN111915001A (zh) * | 2020-08-18 | 2020-11-10 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
WO2022037257A1 (zh) * | 2020-08-18 | 2022-02-24 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
CN111915001B (zh) * | 2020-08-18 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
CN113379047A (zh) * | 2021-05-25 | 2021-09-10 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
CN113379047B (zh) * | 2021-05-25 | 2024-04-05 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
CN115640494A (zh) * | 2022-12-14 | 2023-01-24 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3724822A1 (en) | 2020-10-21 |
JP7451614B2 (ja) | 2024-03-18 |
JP2022169552A (ja) | 2022-11-09 |
WO2019118363A1 (en) | 2019-06-20 |
CN111465943B (zh) | 2023-10-31 |
JP2021506032A (ja) | 2021-02-18 |
JP7179853B2 (ja) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741345B2 (en) | Multi-memory on-chip computational network | |
US10846621B2 (en) | Fast context switching for computational networks | |
US20190180183A1 (en) | On-chip computational network | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
US11294599B1 (en) | Registers for restricted memory | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CN111008040B (zh) | 缓存装置及缓存方法、计算装置及计算方法 | |
CN113469355B (zh) | 分布式系统中的多模型训练管道 | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
US11521007B2 (en) | Accelerator resource utilization by neural networks | |
JP2023519565A (ja) | 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け | |
US11494321B1 (en) | State buffer memloc reshaping | |
US11308396B2 (en) | Neural network layer-by-layer debugging | |
JP2022137247A (ja) | 複数の入力データセットのための処理 | |
US11567778B2 (en) | Neural network operation reordering for parallel execution | |
US11461662B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
JP2023519564A (ja) | 機械学習ジョブ中にメモリ圧縮転送を改善するための類似性に基づく特徴の並べ替え | |
CN114118348A (zh) | 加速器、操作加速器的方法以及包括加速器的电子装置 | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
US11868875B1 (en) | Data selection circuit | |
Teboulbi et al. | Fpga-based SoC design for real-time facial point detection using deep convolutional neural networks with dynamic partial reconfiguration |
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 |