当前位置: 首页 > 专利查询>辉达公司专利>正文

用于神经网络的块之间的重叠数据的存储器管理制造技术

技术编号:37039840 阅读:14 留言:0更新日期:2023-03-29 19:19
描述了用于提供重叠数据缓冲器以存储神经网络的链接层的通路之间的块部分的技术。一个加速器电路包括一个或更多个处理单元以在多通路中执行对应于链接层的指令。在第一通路中,一个或更多个处理单元从主缓冲器接收输入特征图的第一输入块,并对第一输入块执行第一操作以获得第一输出块。处理单元将第一输出块存储在主缓冲器中,并将第一输出块的一部分识别为对应于输入特征图的块之间的重叠数据。处理单元将该部分存储在辅助缓冲器中。在第二通路中,处理单元检索该部分以避免获取重叠的部分并再次计算重叠数据。分并再次计算重叠数据。分并再次计算重叠数据。

【技术实现步骤摘要】
【国外来华专利技术】用于神经网络的块之间的重叠数据的存储器管理


[0001]至少一个实施例涉及用于执行和促进人工智能的处理资源。例如,至少一个实施例涉及用于链接神经网络层中的块之间的重叠数据的辅助缓冲器。

技术介绍

[0002]在许多情况下,深度学习推理的大部分计算工作都基于数学运算,这些运算通常可以分为四个部分:卷积、激活、池化和归一化。这些运算有一些共同的特点,使它们特别适合硬件实现:它们的存储器访问模式是可预测的并且易于并行化。
附图说明
[0003]图1是根据至少一些实施例的具有用于在由固定功能电路执行的链接层之间平铺的重叠数据缓冲器的加速器核心的框图;
[0004]图2A是图示根据至少一种实现方式的持久权重选项的图;
[0005]图2B是图示根据至少一种实现方式的持久特征选项的图;
[0006]图3是图示根据至少一些实施例的具有两个链接硬件层的加速器电路的图,该加速器电路在重叠数据的两个通路之间使用辅助缓冲器;
[0007]图4是图示根据至少一些实施例的具有四个链接硬件层的加速器电路的图,该加速器电路在三个通路之间使用重叠数据缓冲器;
[0008]图5是图示根据至少一些实施例的使用硬件指令在通路之间存储和获取块中的重叠数据的两个卷积层的图;
[0009]图6是根据至少一些实施例的识别输出块的一部分并将其存储在辅助缓冲器中的方法的流程图;
[0010]图7是根据至少一些实施例的深度学习加速器(DLA)系统的框图;以及
[0011]图8是根据至少一些实施例的DLA系统的框图。
具体实施方式
[0012]如上所述,深度学习推理基于非常适合硬件实现的操作。深度学习加速器(DLA)电路,例如深度学习加速器(NVDLA),可用于通过提供加速核心深度学习运算的构建块来满足推理的计算需求。深度学习加速器可用于加速不同的神经网络,例如卷积神经网络(CNN)、循环神经网络(RNN)、全连接神经网络等。这些神经网络可能具有非常不同的结构,可能不遵循任何预定义的网络结构,并且正在定期引入新的神经网络。
[0013]目前,DLA电路对这些神经网络中的不同类型的层使用固定功能引擎(本文也称为固定功能单元或固定功能电路或计算单元),例如用于卷积、激活函数、池化、批量归一化等的固定功能引擎。每一层可以是一个固定功能引擎执行操作的基本硬件指令,每一层通过存储器接口与另一层通信。例如,第一层可以由接收输入张量的第一固定功能引擎执行,对输入张量执行操作以生成输出张量,并将输出张量存储在系统存储器中,例如耦合到加速
器的动态随机存取存储器(DRAM)。第二层可以由第二固定功能引擎执行,该第二固定功能引擎从存储器中接收来自第一层的输出张量作为第二输入张量,对第二输入张量执行操作以生成第二输出张量,并将第二输出张量存储在DRAM中。每次通信都会在存储器接口中引入一个张量读取操作和一个张量写入操作。
[0014]链接是一种利用加速器内部存储器的机制,例如内部静态随机存取存储器(SRAM)。在链接中,中间张量由当前层写入内部SRAM,随后的层从内部SRAM获取数据。使用链接方法可以减少存储器接口流量,从而提高性能和电源效率。在最好的情况下,网络的所有层都可以链接起来,为第一层的第一输入和最后一层的输出留下外部存储器访问。编译器可以使用链接算法来确定如何链接各层以利用内部SRAM。链接算法考虑以下项目:持久权重或持久特征选项、何时终止链接、卷积缓冲器分配和特征交叉(例如,链接加批处理、链接加权重预取等)。
[0015]为了避免处理单元和存储器带宽之间的不平衡,可以使用使数据驻留在加速器的内部SRAM中。当输入特征数据太大而不适合内部SRAM时,平铺(tiling)是一种流行的技术。例如,每一层可以被划分为对应于N个通路(pass)的N个块(tile)。一个通路被定义为一组通过SRAM进行通信的硬件层,如果一个链被分成N个块,那么该链块包含N个通路。例如,假设一组链接的硬件层(硬件层指令)被划分为N个块。在这种情况下,这组链接的硬件层(硬件层指令)有N个通路,并且每个硬件层与其他硬件层以链接的方式执行N次。应该注意,从算法的角度来看,神经网络可以用一组层(在本文中称为“原始层”)来指定,例如偏差和批量归一化。那些原始层可以被编译或转换成另一组层(在本文中称为“硬件层”),其中每个硬件层用作调度要在加速器电路上执行的基本元素。原始层和硬件层之间的映射可以是m:n,其中m是原始层数,n是硬件层数。例如,神经网络中的原始层偏差、批量归一化和局部响应归一化(LRN),例如整流线性单元(ReLU),可以编译到一个硬件层中。在这种情况下,m:n是3:1。每个硬件层都可以由一个基本硬件指令来表示,以供固定功能引擎之一执行操作,并且每个层通过存储器接口与另一层通信。例如,第一层可以由接收输入张量的第一固定功能引擎执行,对输入张量执行操作以生成输出张量,并将输出张量存储在系统存储器中,例如耦合到加速器的动态随机存取存储器(DRAM)。第二层可以由第二固定功能引擎执行,该第二固定功能引擎从存储器中接收来自第一层的输出张量作为第二输入张量,对第二输入张量执行操作以生成第二输出张量,并将第二输出张量存储在DRAM中。每次通信都会在存储器接口中引入一个张量读取操作和一个张量写入操作。
[0016]卷积和池化是神经网络中常见的算子。这些算子涉及一个窗口中的一组输入像素以获得一个输出像素。如果使用平铺,则每个块之间存在重叠数据。重叠数据称为晕圈(halo)。对于单层操作,为每个块获取晕圈,因此会消耗额外的带宽。如上所述,当多个层链接在一起时,传统方法会重新计算每个块的晕圈,从而浪费计算资源。传统方法通常要么过度获取晕圈以处理单层晕圈,要么过度计算以处理多层晕圈。
[0017]本公开的方面和实施例通过提供例如重叠数据缓冲器来存储神经网络的链接层的通路之间的块的部分来解决这些挑战和其他挑战。一个加速器电路包括至少一个处理单元,用于在多通路中执行对应于链接层的指令。在第一通路中,至少一个处理单元从主缓冲器接收输入特征图的第一输入块并且对第一输入块执行第一操作以获得第一输出块。处理单元将第一输出块存储在主缓冲器中并且将第一输出块的一部分识别为对应于输入特征
图的块之间的重叠数据。处理单元将该部分存储在辅助缓冲器中。在第二通路中,处理单元检索该部分以避免获取重叠部分并再次计算重叠数据(晕圈)。使用本文描述的实施例,当多个层链接在一起时,晕圈在通路之间被存储在辅助缓冲器中,从而减少了重新获取晕圈的额外带宽的消耗并减少了重新计算晕圈的计算资源的消耗。通路之间所需的缓冲大小是预先确定的,可以在离线编译期间确定。例如,编译器可以保留一个小的SRAM区域(本文也称为辅助缓冲器、用户定义缓冲器(UBUF)和重叠数据缓冲器)。编译器可以在一通路中创建指令以将晕圈输出到保留的SRAM,并在随后的通路中创建指令以从保留的SRAM获取晕圈到张量数据SRAM。在至少一个实施例中,步幅被仔细地编程以避免污染有效的张量数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种加速器电路,包括:主缓冲器;辅助缓冲器;存储器接口,用于耦合到外部存储器设备;以及一个或更多个处理单元,耦合到所述主缓冲器、所述辅助缓冲器和所述存储器接口,其中所述一个或更多个处理单元用于在对应于多个块的多个通路中执行对应于神经网络的多个链接层的指令,其中所述指令在由所述一个或更多个处理单元在第一通路中执行时,使所述一个或更多个处理单元:从所述主缓冲器接收输入特征图的第一输入块,其中所述输入特征图的大小超过所述主缓冲器的存储容量,其中所述输入特征图至少包括所述第一输入块和第二输入块;对所述第一输入块执行第一操作以获得第一输出块;将所述第一输出块存储在所述主缓冲器中;将所述第一输出块的一部分识别为对应于所述第一输入块与所述第二输入块之间的重叠数据;以及将所述第一输出块的所述部分存储在所述辅助缓冲器中。2.根据权利要求1所述的加速器电路,其中,当所述指令在所述第一通路之后的第二通路中由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元进一步:从所述主缓冲器接收所述第二输入块的一部分;对所述第二输入块的所述部分执行所述第一操作以获得第二输出块的部分;从所述辅助缓冲器中检索所述第一输出块的所述部分;以及将所述第一输出块的所述部分作为所述第二输出块的一部分存储在所述主缓冲器中。3.根据权利要求2所述的加速器电路,其中,所述指令在由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元进一步:在所述第一通路中,从所述主缓冲器检索所述第一输出块,对所述第一输出块执行第二操作以获得第三输出块,以及将所述第三输出块存储在所述主缓冲器中;以及在所述第二通路中,从所述主缓冲器中检索所述第二输出块;对所述第二输出块执行所述第二操作以获得第四输出块;以及将所述第四输出块存储在所述主缓冲器中。4.根据权利要求3所述的加速器电路,其中,所述一个或更多个处理单元包括:第一固定功能引擎,用于处理所述多个链接层中的第一层类型,其中所述第一固定功能引擎用于接收所述第一输入块,对所述第一输入块执行所述第一操作,存储所述第一输出块,接收所述第二输入块的所述部分,对所述第二输入块的所述部分执行所述第一操作,检索所述第一输出块的所述部分,以及存储所述第二输出块;以及第二固定功能引擎,用于处理所述多个链接层的第二层类型,其中所述第二固定功能引擎用于检索所述第一输出块,对所述第一输出块执行所述第二操作,存储所述第三输出块,检索所述第二输出块,对所述第二输出块执行所述第二操作,以及存储所述第四输出
块。5.根据权利要求3所述的加速器电路,其中,所述一个或更多个处理单元包括:第一固定功能引擎,用于处理所述多个链接层中的第一层类型,其中所述第一固定功能引擎用于接收所述第一输入块,对所述第一输入块执行所述第一操作,存储所述第一输出块,接收所述第二输入块的所述部分,对所述第二输入块的所述部分执行所述第一操作,检索所述第一输出块的所述部分,存储所述第二输出块,检索所述第一输出块,对所述第一输出块执行所述第二操作,存储所述第三输出块,检索所述第二输出块,对所述第二输出块执行所述第二操作,以及存储所述第四输出块。6.根据权利要求2所述的加速器电路,其中,所述指令在所述第二通路中由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元进一步:将所述第二输出块的部分识别为对应于所述第一输入块与所述第三输入块之间的重叠数据;以及将所述第二输出块的所述部分存储在所述辅助缓冲器中。7.根据权利要求6所述的加速器电路,其中,所述输入特征图包括所述第一输入块、所述第二输入块和第三输入块,其中所述指令在所述第二通路之后的第三通路中由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元进一步:从所述主缓冲器接收所述第三输入块的部分;对所述第三输入块的所述部分执行所述第一操作以获得第三输出块的部分;从所述辅助缓冲器中检索所述第二输出块的所述部分;以及将所述第二输出块的所述部分作为所述第三输出块的一部分存储在所述主缓冲器中。8.根据权利要求1所述的加速器电路,还包括内部存储器设备,所述内部存储器设备包括所述主缓冲器和所述辅助缓冲器,其中所述主缓冲器是所述内部存储器设备的被保留为第一级(L1)存储器的第一区域,其中所述辅助缓冲器是所述内部存储器设备的被保留为第二级(L2)存储器的第二区域,并且其中所述外部存储器设备被保留为第三级(L3)存储器。9.根据权利要求1所述的加速器电路,其中,所述一个或更多个处理单元包括卷积引擎或池化引擎中的至少一种。10.深度学习加速器DLA核心,包括:寄存器文件,用于存储与包括多个层的神经网络的至少一部分相关联的配置信息;存储器接口,用于耦合到外部存储器设备;卷积缓冲器,其中所述卷积缓冲器包括保留区...

【专利技术属性】
技术研发人员:张益林周焱凡启飞
申请(专利权)人:辉达公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1