CN112204579A - 运行时可重新配置的神经网络处理器核 - Google Patents
运行时可重新配置的神经网络处理器核 Download PDFInfo
- Publication number
- CN112204579A CN112204579A CN201980036708.3A CN201980036708A CN112204579A CN 112204579 A CN112204579 A CN 112204579A CN 201980036708 A CN201980036708 A CN 201980036708A CN 112204579 A CN112204579 A CN 112204579A
- Authority
- CN
- China
- Prior art keywords
- vector
- activation
- memory
- neural
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 35
- 239000013598 vector Substances 0.000 claims abstract description 115
- 230000004913 activation Effects 0.000 claims abstract description 88
- 230000006870 function Effects 0.000 claims abstract description 48
- 239000011159 matrix material Substances 0.000 claims abstract description 42
- 230000001537 neural effect Effects 0.000 claims abstract description 38
- 229940050561 matrix product Drugs 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims 4
- 238000009825 accumulation Methods 0.000 claims 2
- 230000003213 activating effect Effects 0.000 claims 1
- 238000001994 activation Methods 0.000 description 58
- 238000012545 processing Methods 0.000 description 17
- 210000002569 neuron Anatomy 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 230000003287 optical effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000003062 neural network model Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 101100033688 Bacillus subtilis (strain 168) resB gene Proteins 0.000 description 1
- 101100033689 Bacillus subtilis (strain 168) resC gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 101150085636 resD gene Proteins 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
提供了硬件神经网络处理器。神经核包括权重存储器、激活存储器、向量‑矩阵乘法器和向量处理器。向量‑矩阵乘法器适于接收来自权重存储器的权重矩阵,接收来自激活存储器的激活向量,计算权重矩阵与激活向量的向量‑矩阵乘积。向量处理器适于从一个或多个向量源接收一个或多个输入向量,并且对一个或多个输入向量执行一个或多个向量函数以产生输出向量。在一些实施例中,可编程控制器适于配置和操作神经核。
Description
技术领域
本公开的实施例涉及硬件神经网络处理器,尤其涉及运行时可重新配置的神经网络处理器核。
发明内容
根据本公开的实施例,提供了神经核。神经核包括权重存储器、激活存储器、向量-矩阵乘法器和向量处理器。向量-矩阵乘法器适于接收来自权重存储器的权重矩阵,接收来自激活存储器的激活向量,计算权重矩阵与激活向量的向量-矩阵乘积。向量处理器适于从一个或多个向量源接收一个或多个输入向量,并对一个或多个输入向量执行一个或多个向量函数以产生输出向量。在一些实施例中,可编程控制器适于配置和操作神经核。
附图说明
现在将参考附图仅通过举例来描述本发明的实施例,在附图中:
图1示出根据本公开的实施例的神经核。
图2示出根据本公开的实施例的推断处理单元所执行的逻辑操作。
图3示出根据本公开的实施例的神经核和相关联的网络。
图4A-B是根据本发明的实施例的示范性空间和过滤器内循环的核时序图。
图5是根据本公开的实施例的向量单元的详细视图。
图6示出根据本公开的实施例的用于配置神经核的方法。
图7示出根据本公开的实施例的用于配置神经核的方法。
图8描绘根据本公开的实施例的计算节点。
具体实施方式
人工神经元是数学函数,其输出是其输入的线性组合的非线性函数。如果一个神经元的输出是另一个神经元的输入,则连接两个神经元。权重是对一个神经元的输出与另一神经元的输入之间的连接强度进行编码的标量值。
神经元通过将非线性激活函数应用于其输入的加权和来计算其输出(称为激活)。加权和是通过将每个输入与对应的权重相乘并且累加乘积来计算的中间结果。部分和是输入的子集的加权和。所有输入的加权和可以通过累加一个或多个部分和来分阶段计算。
神经网络是一个或多个神经元的集合。神经网络通常被分成被称为层的神经元组。层是一个或多个神经元的集合,其全部从相同的层接收输入并且全部将输出发送到相同的层,并且通常执行类似的功能。输入层是从神经网络外部的源接收输入的层。输出层是将输出发送到神经网络之外的目标的层。所有其他层都是中间处理层。多层神经网络是具有多于一个层的神经网络。深度神经网络是具有许多层的多层神经网络。
张量是数值的多维阵列。张量块是张量中的元素的连续子阵列。
每个神经网络层与参数张量V、权重张量W、输入数据张量X、输出数据张量Y和中间数据张量Z相关联。参数张量包含控制层中的神经元激活函数的所有参数。权重张量包含将输入连接到该层的所有权重。输入数据张量包含该层用作输入的所有数据。输出数据张量包含该层作为输出计算的所有数据。中间数据张量包含该层作为中间计算产生的任何数据,诸如部分和。
层的数据张量(输入、输出和中间)可以是3维的,其中前两个维可被解释为编码空间位置,而第三维可被解释为编码不同特征。例如,当数据张量表示彩色图像时,前两个维编码图像内的垂直和水平坐标,第三维编码每个位置处的颜色。输入数据张量X的每个元素可以通过单独的权重连接到每个神经元,因此权重张量W通常具有6个维度,将输入数据张量的3个维度(输入行a、输入列b、输入特征c)与输出数据张量的3个维度(输出行i、输出列j、输出特征k)级联。中间数据张量Z具有与输出数据张量Y相同的形状。参数张量V将3个输出数据张量维度与索引激活函数σ的参数的附加维度o级联。
层的输出数据张量Y的元素可以如等式1中那样计算,其中神经元激活函数σ由激活函数参数的向量V[i,j,k,:]配置,并且加权和可以如等式2中那样计算。
Y[i,j,k]=σ(V[i,j,k,:];Z[i,j,k])等式1
为了简化符号,等式2中的加权和可以被称为输出,其等效于使用线性激活函数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k],同时应理解,当使用不同的激活函数时,相同的语句适用而不失一般性。
在不同实施例中,如上所述的输出数据张量的计算被分解成更小的问题。然后可以在一个或多个神经核上或者在常规多核系统的一个或多个核上并行地求解每个问题。
现在参照图1,描绘了根据本公开的实施例的神经核。神经核100是可拼接的计算单元,其计算输出张量的一个块。神经核100具有M个输入和N个输出。在各种实施例中,M=N。为了计算输出张量块,神经核将M×1的输入张量块101与M×N的权重张量块102相乘,并将乘积累加到存储在1×N的中间张量块103中的加权和中。O×N的参数张量块包含O个参数,其指定被应用到中间张量块103以产生1×N的输出张量块105的N个神经元激活函数中的每一个。
可以在神经核阵列中平铺多个神经核。在一些实施例中,阵列是二维的。
神经网络模型是一组常数,其共同地指定由神经网络执行的整个计算,包括神经元之间的连接的图以及每个神经元的权重和激活函数参数。训练是修改神经网络模型以执行期望功能的过程。推断是在不修改神经网络模型的情况下将神经网络应用于输入以产生输出的过程。
推断处理单元是执行神经网络推断的一类处理器。神经推断芯片是推断处理单元的特定物理实例。
图2在较高级别示出了由推断处理单元执行的逻辑操作。在201,将输入激活(X)分配给核。在202,将层指令分配给核。在203,将层权重(W)和/或参数分配给核。在204,读取矩阵权重(W)。在205,读取激活向量(X)。在206,计算向量-矩阵乘积(Z=XTW)。在207,读取和/或选择部分和向量(Zsrc)。在208,计算向量-向量函数Ztgt=f(Zsrc)。在209,写入和/或更新部分和向量(Ztgt)。在210,计算激活函数(Y=f(Z))。在211,写入激活向量(Y→X)。在212,在核之间重新分配层激活(X)。在213,从核收集输出激活(X)。
如图所示,在所有输入帧上重复步骤201…213。在神经网络的所有层上重复步骤202…212。在所有层输出上重复步骤204…211。在所有层输入上重复步骤204…209。
现在参见图3,示出了根据本公开的实施例的示范性神经核和相关联的网络。可以如参见图1所描述的那样实施的核301通过网络302…304与另外的核互连。在该实施例中,网络302负责分配权重和/或指令,网络303负责分配部分和,而网络304负责分配激活。然而,应当理解,本公开的不同实施例可组合这些网络,或进一步将它们分离成多个附加网络。
参见图3,在步骤201,输入激活(X)从核外通过激活网络304到激活存储器305而被分配到核301。在步骤202,层指令从核外通过权重/指令网络302到指令存储器306而被分配到核301。在步骤203,层权重(W)和/或参数从核外通过权重/指令网络302到权重存储器307和/或参数存储器308被分配到核301。
在步骤204,由向量矩阵乘法(VMM)单元309从权重存储器307读取权重矩阵(W)。在步骤205,由向量矩阵乘法(VMM)单元309从激活存储器305中读取激活向量(V)。然后,在步骤306,向量矩阵乘法(VMM)单元309计算向量-矩阵乘积Z=XTW并将结果提供给向量-向量单元310。在步骤207,向量-向量单元310从部分和存储器311读取附加的部分和,并通过部分和网络303从核外接收附加的部分和。在步骤208,由向量-向量单元310从这些源部分和来计算向量-向量操作。例如,可以将各个部分和依次求和。在步骤209,将得到的目标部分和写入部分和存储器311,通过部分和网络303发送到核外,和/或反馈,以便由向量-向量单元310进一步处理。
在步骤210,来自向量-向量单元310的部分和结果,在对于给定层的输入的所有计算完成之后,被提供给激活单元312以用于计算输出激活。在步骤211,将激活向量(Y)写到激活存储器305。在步骤212,将层激活(包括写到激活存储器的结果)通过激活网络304从激活存储器305跨核重新分配。在接收时,它们被写入每个接收核的本地激活存储器。在完成对给定帧的处理后,从激活存储器305读取输出激活并通过网络304将其发送到核外。
参见图4A-B,提供用于示范性空间内循环和过滤器内循环的核时序图。在401,激活存储器被预加载了激活X。在402,加载微代码指令。在403,加载权重张量W。在404-5,读取激活块和权重块。在406,计算部分和块。在407-9,传送、存储和/或累加部分和块。在410,计算激活函数。在411,将激活写回到激活存储器。应当理解,这些时序图中的步骤对应于参照图2所描述的步骤。在描绘空间内循环的图4A中,针对每个权重块W0…W1加载激活块X0…X3,从而允许计算部分和块Z00…Z03,Z10…Z13。在描绘过滤器内循环的图4B中,针对每个激活块X0…X1加载权重块W0…W3,从而允许计算部分和块Z00…Z30,Z01…Z31。
因此,在操作中,核控制微引擎(例如,313)协调核的数据移动和计算。微引擎发出读取激活存储器地址操作以将输入激活块加载到向量-矩阵乘法单元中。微引擎发出读取权重存储器地址操作以将权重块加载到向量-矩阵乘法单元中。微引擎向向量-矩阵乘法单元发出计算操作,使得向量-矩阵乘法单元计算阵列计算部分和块。
微引擎发出部分和读/写存储器地址操作、向量计算操作或部分和通信操作中的一项或多项,以便进行以下各项中的一项或多项:从部分和源读取部分和数据;使用部分和算术单元进行计算;或将部分和数据写到部分和目标。将部分和数据写到部分和目标可以包括通过部分和网络接口在核外部进行通信或者将部分和数据发送到激活算术单元。
微引擎发出激活计算操作,使得激活算术单元计算输出激活块。微引擎发出写入激活存储器地址,输出激活块通过激活存储器接口被写到激活存储器。
相应地,为给定的核定义各种源、目标、地址类型、计算类型和控制组件。
向量-向量单元310的源包括向量矩阵乘法(VMM)单元309、激活存储器305、来自参数存储器308的常数、部分和存储器311、来自先前周期的部分和结果(TGT部分和);以及部分和网络303。
向量-向量单元310的目标包括部分和存储器311、后续周期的部分和结果(SRC部分和)、激活单元312和部分和网络303。
因而,给定的指令可以从激活存储器305读取或写入、从权重存储器307读取、或者从部分和存储器311读取或写入。由核执行的计算操作包括由VMM单元309进行的向量矩阵乘法、由向量单元310进行的向量(部分和)操作、以及由激活单元312进行的激活函数。
控制操作包括程序计数器以及循环和/或序列计数器。
因此,步骤204…211可以被映射到如下操作。在步骤204、205、207、209、211中,发出存储器操作以从权重存储器中的地址读取权重、从参数存储器中的地址读取参数、从激活存储器中的地址读取激活、以及对部分和存储器中的地址的读取/写入部分和。在步骤206、208、210,发布计算操作以执行向量矩阵乘法、向量-向量操作和激活函数。在步骤207、209处,发出通信操作以便选择向量-向量操作数,在部分和网络上路由消息,以及选择部分和目标。通过指定程序计数器、循环计数器和序列计数器的控制操作来控制层输出上的循环(在步骤204…211)和层输入上的循环(在步骤204…209)。
参见图5,提供了根据本公开的实施例的向量单元切片的详细视图。向量单元有很多向量单元切片,以并行地对向量的所有元素进行操作,因此这里只示出一个切片。在一些实施例中,向量单元的所有切片并行地同时对其相应向量元素执行相同操作。源501对应于以上所述的源。具体地,在读取地址W_RD处访问权重存储器307且在读取地址act_RD处访问激活存储器305,以提供向量-矩阵乘法的输入,向量-矩阵乘法的结果进而充当向量-向量单元的源。在读取地址NRN_RD处访问参数存储器308以便向向量-向量单元提供参数。在读取地址P0_RD和P1_RD处访问部分和存储器311以为向量-向量单元检索部分和操作数。片上网络303用于向向量-向量单元提供部分和输入。如图所示,从四个基本方向(北、南、东和西)接收输入。然而,将领会,根据本公开的各种网络配置都可被用于允许从任意核接收输入。
操作502包括计算操作(COMPUTE_OP)和旁路操作(BYPASS_OP)。计算操作将源501映射到计算功能单元503、504(A和B)并指定要由计算功能单元执行的计算。旁路操作(BYPASS_OP)将源501映射到旁路功能单元505、506(C和D)。计算或旁路的结果构成中间源507。
中间源507上的操作508包括输出目标操作(OUT_TGT_OP)和激活输出目标操作(ACT_TGT_OP)。输出目标操作将中间源507映射到输出目标509。激活输出目标操作将中间源507映射到激活输出目标510并指定要由激活函数单元执行的计算。
激活函数的结果在写入地址act_WR处被写到激活存储器305。部分和在写入地址P0_WR和P1_WR处被写到部分和存储器311。网络输出是通过网络303发送的。如图所示,输出被发送到四个基本方向,即北、南、东和西。然而,将领会,根据本公开的各种网络配置可被用于允许向任意核发送输出。
将理解,给定核可包括多个功能单元。因而,为描述简洁起见,图5描绘了向量-向量单元的一个切片。
参见表1,提供了示例性部分和数据操作格式。在表1中,旁路操作包括对应于上述单独的旁路505、506的BYPASS_C_OP和BYPASS_D_OP。目标输出操作包括OUT_TGT_OP、COND_TGT_OP和ACT_TGT_OP。计算操作遵循ACT_TGT_OP。
表1
表2列出了上述实施例中的源。
表2
表3列出了上述实施例中的中间源。
名称 | 描述 |
resA | 结果A |
resB | 结果B |
resC | 结果C |
resD | 结果D |
Zv | 零向量 |
表3
表4列出上述实施例中的输出目标。
名称 | 描述 |
Po0 | 部分和存储器,写端口0 |
Po1 | 部分和内存,写端口1 |
No | 片上网络北输出端口 |
So | 片上网络南输出端口 |
Eo | 片上网络东输出端口 |
Wo | 片上网络西输出端口 |
表4
表5列出了在上述实施例中的激活目标。
名称 | 描述 |
Ao | 输出激活函数 |
表5
表6列出了上述实施例中的向量计算操作。
名称 | 索引 | 描述 |
VADD_A | 7 | ResA=SRC_A0+(SRC_A1+SRC_A2) |
VADD_B | 8 | ResB=(SRC_B0+SRC_B1)+SRC_B2 |
VSUB_B | 9 | ResB=(SRC_B0-SRC_B1)+SRC_B2 |
VMAC_B | 10 | ResB=(SRC_B0[32b]*SRC_B1[8b])+SRC_B2 |
VCMP_B | 11 | ResB=GT(SRC_B0,SRC_B1)+SRC_B2 |
VMAX_B | 12 | ResB=MAX(SRC_B0,SRC_B1)+SRC_B2 |
VABS_B | 13 | ResB=ABS(SRC_B0)+SRC_B2 |
VLIM_B | 14 | ResB=(IMM_4b_1<<4)+IMM_4b_0+SRC_B2 |
VNOT_B | 15 | ResB=(~SRC_B0)+SRC_B2 |
VAND_B | 16 | ResB=(SRC_B0&SRC_B1)+SRC_B2 |
VOR_B | 17 | ResB=(SRC_B0|SRC_B1)+SRC_B2 |
VXOR_B | 18 | ResB=(SRC_B0^SRC_B1)+SRC_B2 |
表6
参考表7,提供根据本公开的不同实施例的神经核的各种可重新配置元素的小结。
表7
参考图6,图示了根据本公开的实施例的用于操作神经核的方法。在601,从权重存储器接收权重矩阵。在602,从激活存储器接收激活向量。在603,计算出权重矩阵和激活向量的向量-矩阵乘积。在604,对向量-矩阵乘积执行一个或多个向量函数以产生输出向量。在605,将激活函数应用于输出向量以确定结果。在606,将结果提供给激活存储器。
参见图7,示出了根据本公开的实施例的用于配置神经核的方法。在701,可编程控制器将多个向量源中的一个或多个映射到向量处理器。在702,可编程控制器将向量处理器映射到多个向量目标中的一个或多个。在703,可编程控制器指令向量处理器对来自多个源中的一个或多个的输入执行向量函数并向多个向量目标中的一个或多个提供结果。
因而,本公开提供了运行时可重新配置的神经网络处理器核。这样的核通过可编程控制器可重新配置的。在一些实施例中,重新配置是与流水线中的计算一起并发地执行的。
现在参见图8,示出了计算节点的实例的示意图。计算节点10仅是合适的计算节点的一个实例,并且不旨在对本文所述的实施例的使用范围或功能提出任何限制。无论如何,计算节点10能够被实施和/或执行上文阐述的功能中的任一者。
在计算节点10中存在计算机系统/服务器12,其可与许多其他通用或专用计算系统环境或配置一起操作。可以适合于与计算机系统/服务器12-起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品,网络PC、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实现,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机系统存储介质两者中。
如图8所示,计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28、以及将包括系统存储器28的不同系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任一种总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、外围组件互连(PCI)总线、快速外围组件互连(PCIe)和高级微控制器总线架构(AMBA)。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器12访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)30和/或高速缓存32。计算机系统/服务器12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过举例的方式,可以提供存储系统34用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,可以提供用于读写可移动非易失性磁盘(例如,“软盘”)的磁盘驱动器以及用于读写诸如CD-ROM、DVD-ROM或其他光学介质之类的可移动非易失性光盘的光盘驱动器。在这样的实例中,每一个都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括具有一组(例如,至少一个)程序模块的至少一个程序产品,这些程序模块被配置用于执行本公开的实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以通过示例而非限制的方式存储在存储器28中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一者或其某一组合可包含联网环境的实施例。程序模块42通常执行如本文所述的实施例的功能和/或方法。
计算机系统/服务器12也可以与诸如键盘、定点设备、显示器24之类的一个或多个外部设备14进行通信;与使得用户能够与计算机系统/服务器12交互的一个或多个设备进行通信;和/或与使计算机系统/服务器12能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以通过输入/输出(I/O)接口22发生。再者,计算机系统/服务器12可以通过网络适配器20与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)之类的一个或多个网络通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。
在不同实施例中,一个或多个推断处理单元(未示出)耦合到总线18。在这样的实施例中,IPU可以通过总线18从存储器28接收数据或向存储器28写入数据。同样,IPU可以如本文所描述的那样通过总线18与其他组件交互。
本公开可以体现为系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),所述计算机可读程序指令用于致使处理器执行本发明的方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或通过网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本公开的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言(包括面向对象的Smalltalk、C++等编程语言)和及常规的过程式编程语言(如“C”编程语言)或类似的编程语言的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本公开的方面。
本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图图示了根据本公开的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
已经出于说明的目的给出了本公开的不同实施例的描述,但是这些描述并不旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语是为了最好地解释实施例的原理、实际应用或对市场上存在的技术的技术性改进,或使得本领域普通技术人员能够理解本文所公开的实施例。
Claims (23)
1.一种神经核,包括:
权重存储器;
激活存储器;
向量-矩阵乘法器,其适于接收来自权重存储器的权重矩阵,接收来自激活存储器的激活向量,计算权重矩阵与激活向量的向量-矩阵乘积;
向量处理器,其适于从一个或多个向量源接收一个或多个输入向量,并且对一个或多个输入向量执行一个或多个向量函数以产生输出向量。
2.如权利要求1所述的神经核,进一步包括:
可编程控制器,其适于配置和操作神经核。
3.如权利要求1所述的神经核,进一步包括:
多个向量源;
多个向量目标;
可编程控制器,可操作地耦合到向量处理器,该控制器适于:
将该多个源中的一个或多个映射到向量处理器,
将向量处理器映射到该多个向量目标中的一个或多个,
指示向量处理器对来自该多个源中的一个或多个源的输入执行向量函数并且向该多个向量目标中的一个或多个提供结果。
4.如权利要求1所述的神经核,进一步包括:
激活单元,可操作地耦合到向量处理器并且适于:
将激活函数应用于来自向量处理器的结果。
5.如权利要求3所述的神经核,其中,向量源包括部分和存储器、网络、向量-矩阵乘法器、寄存器、或参数存储器。
6.如权利要求3所述的神经核,其中,向量目标包括激活存储器、部分和存储器、寄存器或网络。
7.如权利要求3所述的神经核,其中,向量处理器适于将一个或多个常数应用于结果。
8.如权利要求3所述的神经核,被配置用于累加部分和。
9.如权利要求3所述的神经核,其中:
控制器进一步适于指示向量-矩阵乘法器从权重存储器中读取权重矩阵,从激活存储器中读取激活向量,计算权重矩阵与激活向量的向量-矩阵乘积。
10.如权利要求4所述的神经核,其中,激活函数是可配置的。
11.如权利要求10所述的神经核,其中:
可编程控制器进一步适于指示所述激活单元计算所述激活函数并将结果提供给所述激活存储器。
12.如权利要求9所述的神经核,其中:
权重矩阵是神经网络权重矩阵的子阵列;
激活向量是神经网络激活向量的子阵列。
13.如权利要求12所述的神经核,其中,提供权重矩阵和激活向量的向量-矩阵乘积以供累加,所述累加产生神经网络权重矩阵与神经网络激活向量的向量-矩阵乘积。
14.如权利要求1所述的神经核,被配置用于计算具有输入、参数和输出的神经网络函数。
15.如权利要求14所述的神经核,其中,权重矩阵和/或激活向量具有可配置的大小。
16.如权利要求14所述的神经核,其中,神经网络输入、参数和/或输出具有可配置的大小。
17.如权利要求14所述的神经核,其中,神经网络函数是可配置的。
18.如权利要求1所述的神经核,被配置用于结合通过网络互连的多个附加神经核来计算神经网络函数。
19.如权利要求1所述的神经核,被配置用于计算神经网络函数的一部分。
20.如权利要求19所述的神经核,其中,神经网络函数的所述部分是可配置的。
21.一种方法,包括:
从权重存储器接收权重矩阵;
从激活存储器接收激活向量;
计算权重矩阵与激活向量的向量-矩阵乘积;
对向量-矩阵乘积执行一个或多个向量函数以产生输出向量;
将激活函数应用于输出向量以确定结果;
将结果提供给激活存储器。
22.如权利要求21所述的方法,其中,权重矩阵是神经网络权重矩阵的子阵列,并且激活向量是神经网络激活向量的子阵列,所述方法还包括:
将结果与附加结果累加以产生神经网络权重矩阵和神经网络激活向量的向量-矩阵乘积。
23.一种方法,包括:
由可编程控制器将多个向量源中的一个或多个映射到向量处理器;
由可编程控制器将向量处理器映射到多个向量目标中的一个或多个;
由可编程控制器指示向量处理器对来自该多个源中的一个或多个的输入执行向量函数并向该多个向量目标中的一个或多个提供结果。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/012,475 | 2018-06-19 | ||
US16/012,475 US11501140B2 (en) | 2018-06-19 | 2018-06-19 | Runtime reconfigurable neural network processor core |
PCT/IB2019/054954 WO2019243962A1 (en) | 2018-06-19 | 2019-06-13 | Runtime reconfigurable neural network processor core |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112204579A true CN112204579A (zh) | 2021-01-08 |
Family
ID=68840309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980036708.3A Pending CN112204579A (zh) | 2018-06-19 | 2019-06-13 | 运行时可重新配置的神经网络处理器核 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11501140B2 (zh) |
JP (1) | JP7241771B2 (zh) |
CN (1) | CN112204579A (zh) |
GB (1) | GB2587175A (zh) |
WO (1) | WO2019243962A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024055872A1 (en) * | 2022-09-14 | 2024-03-21 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018176000A1 (en) | 2017-03-23 | 2018-09-27 | DeepScale, Inc. | Data synthesis for autonomous control systems |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US11501140B2 (en) * | 2018-06-19 | 2022-11-15 | International Business Machines Corporation | Runtime reconfigurable neural network processor core |
US11215999B2 (en) | 2018-06-20 | 2022-01-04 | Tesla, Inc. | Data pipeline and deep learning system for autonomous driving |
US11361457B2 (en) | 2018-07-20 | 2022-06-14 | Tesla, Inc. | Annotation cross-labeling for autonomous control systems |
US11636333B2 (en) | 2018-07-26 | 2023-04-25 | Tesla, Inc. | Optimizing neural network structures for embedded systems |
US11562231B2 (en) | 2018-09-03 | 2023-01-24 | Tesla, Inc. | Neural networks for embedded devices |
WO2020077117A1 (en) | 2018-10-11 | 2020-04-16 | Tesla, Inc. | Systems and methods for training machine models with augmented data |
US11196678B2 (en) | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
US11816585B2 (en) | 2018-12-03 | 2023-11-14 | Tesla, Inc. | Machine learning models operating at different frequencies for autonomous vehicles |
US11537811B2 (en) | 2018-12-04 | 2022-12-27 | Tesla, Inc. | Enhanced object detection for autonomous vehicles based on field view |
US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
US11150664B2 (en) | 2019-02-01 | 2021-10-19 | Tesla, Inc. | Predicting three-dimensional features for autonomous driving |
US10997461B2 (en) | 2019-02-01 | 2021-05-04 | Tesla, Inc. | Generating ground truth for machine learning from time series elements |
US11567514B2 (en) | 2019-02-11 | 2023-01-31 | Tesla, Inc. | Autonomous and user controlled vehicle summon to a target |
US10956755B2 (en) | 2019-02-19 | 2021-03-23 | Tesla, Inc. | Estimating object properties using visual image data |
CN111967572A (zh) * | 2020-07-10 | 2020-11-20 | 逢亿科技(上海)有限公司 | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 |
WO2022226721A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 一种矩阵乘法器及矩阵乘法器的控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170316312A1 (en) * | 2016-05-02 | 2017-11-02 | Cavium, Inc. | Systems and methods for deep learning processor |
CN107533667A (zh) * | 2015-05-21 | 2018-01-02 | 谷歌公司 | 神经网络处理器中的向量计算单元 |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
JP2018060268A (ja) * | 2016-10-03 | 2018-04-12 | 株式会社日立製作所 | 認識装置および学習システム |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
KR0138859B1 (ko) * | 1994-12-06 | 1998-06-15 | 양승택 | 다중 명령어 다중 데이타형 신경망 전용 디지탈 어레이 프로세서 및 이를 이용해 구성된 시스템 |
JP2000322400A (ja) | 1999-05-10 | 2000-11-24 | Fuji Xerox Co Ltd | 情報処理装置 |
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
JP5104052B2 (ja) | 2007-06-14 | 2012-12-19 | ソニー株式会社 | 抵抗素子、ニューロン素子、及びニューラルネットワーク情報処理装置 |
EP2631872A4 (en) | 2010-10-18 | 2015-10-28 | Univ Osaka | CHARACTER EXTRACTION DEVICE, CHARACTER EXTRACTION METHOD AND PROGRAM THEREFOR |
US8868477B2 (en) | 2012-03-29 | 2014-10-21 | International Business Machines Coproration | Multi-compartment neurons with neural cores |
US9159020B2 (en) | 2012-09-14 | 2015-10-13 | International Business Machines Corporation | Multiplexing physical neurons to optimize power and area |
CN106575379B (zh) | 2014-09-09 | 2019-07-23 | 英特尔公司 | 用于神经网络的改进的定点整型实现方式 |
US10353860B2 (en) | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
US11501140B2 (en) * | 2018-06-19 | 2022-11-15 | International Business Machines Corporation | Runtime reconfigurable neural network processor core |
-
2018
- 2018-06-19 US US16/012,475 patent/US11501140B2/en active Active
-
2019
- 2019-06-13 CN CN201980036708.3A patent/CN112204579A/zh active Pending
- 2019-06-13 JP JP2020560976A patent/JP7241771B2/ja active Active
- 2019-06-13 GB GB2100512.9A patent/GB2587175A/en not_active Withdrawn
- 2019-06-13 WO PCT/IB2019/054954 patent/WO2019243962A1/en active Application Filing
-
2022
- 2022-10-13 US US18/046,301 patent/US12056598B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107533667A (zh) * | 2015-05-21 | 2018-01-02 | 谷歌公司 | 神经网络处理器中的向量计算单元 |
US20170316312A1 (en) * | 2016-05-02 | 2017-11-02 | Cavium, Inc. | Systems and methods for deep learning processor |
JP2018060268A (ja) * | 2016-10-03 | 2018-04-12 | 株式会社日立製作所 | 認識装置および学習システム |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024055872A1 (en) * | 2022-09-14 | 2024-03-21 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
US12020001B2 (en) | 2022-09-14 | 2024-06-25 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
Also Published As
Publication number | Publication date |
---|---|
US11501140B2 (en) | 2022-11-15 |
US20190385048A1 (en) | 2019-12-19 |
GB2587175A (en) | 2021-03-17 |
JP7241771B2 (ja) | 2023-03-17 |
JP2021527864A (ja) | 2021-10-14 |
WO2019243962A1 (en) | 2019-12-26 |
GB202100512D0 (en) | 2021-03-03 |
US20230062217A1 (en) | 2023-03-02 |
US12056598B2 (en) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112204579A (zh) | 运行时可重新配置的神经网络处理器核 | |
WO2019239254A1 (en) | Parallel computational architecture with reconfigurable core-level and vector-level parallelism | |
EP3788556A1 (en) | Neural hardware accelerator for parallel and distributed tensor computations | |
US11263011B2 (en) | Compound instruction set architecture for a neural inference chip | |
US20200117988A1 (en) | Networks for distributing parameters and data to neural network compute cores | |
JP7332247B2 (ja) | ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ | |
US20210209450A1 (en) | Compressed weight distribution in networks of neural processors | |
CN112041810A (zh) | 经由并行和片上存储器进行时间、空间和能量高效神经推断 | |
WO2021073918A1 (en) | Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine | |
CN116348885A (zh) | 用于可部署推理系统的存储器映射的神经网络加速器 | |
JP7426980B2 (ja) | 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 | |
US20230195836A1 (en) | One-dimensional computational unit for an integrated circuit | |
AU2020395435B2 (en) | Flexible precision neural inference processing units | |
JP7549430B2 (ja) | メモリ要素のグリッドからのニューラル・ネットワーク重み分散 | |
JP2022068117A (ja) | チップ及び方法(入れ子ループの定数時間プログラム制御をサポートするチップ) | |
JP2022091126A (ja) | ニューラル推論チップ、少なくとも1つのニューラル推論コアを備える集積回路およびコンピュータ実装方法(有効なニューラルネットワーク活性化関数のvlsi実装のための効率的な方法) |
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 |