掌桥专利:专业的专利平台
掌桥专利
首页

运行时可重新配置的神经网络处理器核

文献发布时间:2023-06-19 09:29:07


运行时可重新配置的神经网络处理器核

技术领域

本公开的实施例涉及硬件神经网络处理器,尤其涉及运行时可重新配置的神经网络处理器核。

发明内容

根据本公开的实施例,提供了神经核。神经核包括权重存储器、激活存储器、向量-矩阵乘法器和向量处理器。向量-矩阵乘法器适于接收来自权重存储器的权重矩阵,接收来自激活存储器的激活向量,计算权重矩阵与激活向量的向量-矩阵乘积。向量处理器适于从一个或多个向量源接收一个或多个输入向量,并对一个或多个输入向量执行一个或多个向量函数以产生输出向量。在一些实施例中,可编程控制器适于配置和操作神经核。

附图说明

现在将参考附图仅通过举例来描述本发明的实施例,在附图中:

图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=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=X

在步骤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中,针对每个权重块W

因此,在操作中,核控制微引擎(例如,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列出了上述实施例中的中间源。

表3

表4列出上述实施例中的输出目标。

表4

表5列出了在上述实施例中的激活目标。

表5

表6列出了上述实施例中的向量计算操作。

表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))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本公开的方面。

本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。

计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图图示了根据本公开的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。

已经出于说明的目的给出了本公开的不同实施例的描述,但是这些描述并不旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语是为了最好地解释实施例的原理、实际应用或对市场上存在的技术的技术性改进,或使得本领域普通技术人员能够理解本文所公开的实施例。

技术分类

06120112181623