一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于神经处理器的多模平面引擎的制作方法

2022-07-17 00:55:37 来源:中国专利 TAG:

用于神经处理器的多模平面引擎


背景技术:
1.技术领域
1.本公开涉及一种用于执行与神经网络相关的操作的电路,并且更具体地涉及包括多个神经引擎电路和一个或多个多模平面引擎电路的神经处理器。
2.2.相关技术描述
3.人工神经网络(ann)是使用连接节点的集合来处理输入数据的计算系统或模型。ann通常被组织成层,其中不同的层对其输入执行不同类型的转换。ann的扩展或变体诸如卷积神经网络(cnn)、递归神经网络(rnn)和深度信念网络(dbn)已受到大量关注。这些计算系统或模型通常涉及广泛的计算操作,包括相乘和累加。例如,cnn是一类主要使用输入数据和内核数据之间的卷积的机器学习技术,卷积可分解为相乘和累加操作。
4.根据输入数据的类型和待执行的操作,这些机器学习系统或模型可被不同地配置。此类变化的配置将包括例如预处理操作、输入数据中的通道数量、待使用的内核数据、待应用于卷积结果的非线性函数以及各种后处理操作的应用。使用中央处理单元(cpu)及其主存储器来实例化和执行各种配置的机器学习系统或模型相对容易,因为此类系统或模型仅通过更新代码即可实例化。然而,仅依赖于cpu进行这些机器学习系统或模型的各种操作将消耗中央处理单元(cpu)的大量带宽以及增加总体功率消耗。


技术实现要素:

5.实施方案涉及一种神经处理器,该神经处理器包括多个神经引擎电路和能以多种模式操作并且耦接到该多个神经引擎电路的平面引擎电路。该神经引擎电路中的至少一个神经引擎电路执行第一输入数据与一个或多个内核的卷积操作以生成第一输出。该平面引擎电路从对应于第一输出或对应于神经处理器的输入数据的版本的第二输入数据生成第二输出。该神经处理器的输入数据可以是从神经处理器外部的源接收的数据,或者先前循环中神经引擎电路或平面引擎电路的输出。在池化模式下,平面引擎电路缩减第二输入数据的版本的空间尺寸。在逐元素模式下,平面引擎电路对第二输入数据执行逐元素操作。在缩减模式下,平面引擎电路缩减张量的秩。
附图说明
6.图1是根据实施方案的电子设备的高级图。
7.图2是示出根据一个实施方案的电子设备中的部件的框图。
8.图3是示出根据一个实施方案的神经处理器电路的框图。
9.图4是根据一个实施方案的神经处理器电路中的神经引擎的框图。
10.图5是示出根据一个实施方案的用于在神经处理器电路处处理输入数据的回路的概念图。
11.图6a、图6b和图6c是根据一个实施方案的分别例示池化操作、逐元素操作和缩减
操作的概念图。
12.图7是根据一个实施方案的例示神经处理器操作方法的流程图。
13.仅仅出于示例目的,附图描绘以及详细说明描述各种非限定性实施方案。
具体实施方式
14.现在将详细地参考实施方案,这些实施方案的示例在附图中示出。下面的详细描述中示出许多具体细节,以便提供对各种所描述的实施方案的充分理解。然而,可以在没有这些具体细节的情况下实施所述实施方案。在其他情况下,没有详细地描述众所周知的方法、过程、部件、电路和网络,从而不会不必要地使实施方案的各个方面晦涩难懂。
15.本公开的实施方案涉及一种神经处理器,该神经处理器包括在执行不同类型的计算方面高效的多个神经引擎电路和一个或多个平面引擎电路。神经引擎电路可对于执行计算量大的操作是高效的(例如,卷积操作),而平面引擎电路可对于执行计算量小但涉及更高数据输入/输出速度的操作是高效的。神经引擎电路可以多种模式操作,该多种模式包括池化模式、逐元素模式、和缩减模式,在池化模式下,平面引擎电路缩减第二输入数据的版本的空间尺寸,在逐元素模式下,平面引擎电路对第二输入数据执行逐元素操作,在缩减模式下,平面引擎电路缩减张量的秩。平面引擎电路和神经引擎电路可并行执行不同的计算,并且由此加速神经处理器的操作。
16.示例性电子设备
17.本文描述了电子设备、此类设备的用户界面和使用此类设备的相关过程的实施方案。在一些实施方案中,该设备为还包含其他功能诸如个人数字助理(pda)和/或音乐播放器功能的便携式通信设备,诸如移动电话。便携式多功能设备的示例性实施方案包括但不限于来自apple inc.(cupertino,california)的设备、ipod设备、apple设备和设备。可选地使用其他便携式电子设备,诸如可穿戴设备、膝上型电脑或平板计算机。在一些实施方案中,该设备不是便携式通信设备,而是台式计算机或不是为便携式使用而设计的其他计算设备。在一些实施方案中,所公开的电子设备可包括触敏表面(例如,触摸屏显示器和/或触摸板)。下文结合图1描述的示例电子设备(例如,设备100)可包括用于接收用户输入的触敏表面。电子设备还可包括一个或多个其他物理用户接口设备,诸如物理键盘、鼠标和/或操纵杆。
18.图1是根据一个实施方案的电子设备100的高级图。设备100可包括一个或多个物理按钮,诸如“home”按钮或菜单按钮104。菜单按钮104例如用于导航到在设备100上执行的一组应用程序中的任何应用程序。在一些实施方案中,菜单按钮104包括识别菜单按钮104上的指纹的指纹传感器。指纹传感器能够被用来确定菜单按钮104上的手指是否具有与为解锁设备100存储的指纹匹配的指纹。另选地,在一些实施方案中,菜单按钮104被实现为触摸屏上显示的图形用户界面(gui)中的软键。
19.在一些实施方案中,设备100包括触摸屏150、菜单按钮104、用于使设备开/关机和用于锁定设备的下压按钮106、音量调节按钮108、订户身份模块(sim)卡槽110、耳麦插孔112和对接/充电外部端口124。下压按钮106可被用于通过压下该按钮并将该按钮保持在压下状态达预定义的时间间隔来对设备进行开关机;通过压下该按钮并在该预定义的时间间隔过去之前释放该按钮来锁定设备;和/或对设备进行解锁或发起解锁过程。在另选的实施
方案中,设备100还通过麦克风113接受用于激活或去激活某些功能的语音输入。设备100包括各种部件,包括但不限于存储器(可包括一个或多个计算机可读存储介质)、存储器控制器、一个或多个中央处理单元(cpu)、外围设备接口、rf电路、音频电路、扬声器111、麦克风113、输入/输出(i/o)子系统和其他输入或控制设备。设备100可包括一个或多个图像传感器164、一个或多个接近传感器166,以及一个或多个加速度计168。设备100可包括多于一种类型的图像传感器164。每种类型可包括多于一个图像传感器164。例如,一种类型的图像传感器164可以是相机,并且另一类型的图像传感器164可以是用于由存储在设备100中的一个或多个机器学习模型执行的面部识别的红外传感器。设备100可包括图1中未示出的部件,诸如环境光传感器、点投影仪和用于支持面部识别的泛光照明器。
20.设备100仅是电子设备的一个示例,并且设备100可具有比上文列出的更多或更少的部件,其中一些部件可组合成一个部件或具有不同的配置或布置。以上列出的设备100的各种部件体现为硬件、软件、固件或其组合,包括一个或多个信号处理和/或专用集成电路(asic)。
21.图2是示出根据一个实施方案的设备100中的部件的框图。设备100可执行各种操作,包括实施一个或多个机器学习模型。出于此目的和其他目的,设备100可包括图像传感器202、片上系统(soc)部件204、系统存储器230、永久存储器(例如,闪存)228、运动传感器234和显示器216,以及其他部件。图2中所示的部件仅为例示性的。例如,设备100可包括图2中未示出的其他部件(诸如扬声器或麦克风)。另外,一些部件(诸如运动传感器234)可从设备100中省略。
22.图像传感器202是用于捕获图像数据的部件,并且可实现为例如互补金属氧化物半导体(cmos)有源像素传感器、相机、摄像机或其他设备。图像传感器202生成原始图像数据,其被发送到soc部件204以进行进一步处理。在一些实施方案中,由soc部件204处理的图像数据显示在显示器216上,存储在系统存储器230、永久存储器228中,或经由网络连接发送到远程计算设备。由图像传感器202生成的原始图像数据可以是bayer色彩内核阵列(cfa)图案。
23.运动传感器234是用于感测设备100的运动的部件或一组部件。运动传感器234可生成指示设备100的取向和/或加速度的传感器信号。传感器信号被发送到soc部件204以用于各种操作,诸如打开设备100或旋转显示器216上显示的图像。
24.显示器216是用于显示由soc部件204生成的图像的部件。显示器216可包括例如液晶显示器(lcd)设备或有机发光二极管(oled)设备。基于从soc部件204接收的数据,显示器116可显示各种图像,诸如菜单、所选择的操作参数、由图像传感器202捕获并由soc部件204处理的图像,和/或从设备100的用户界面接收的其他信息(未示出)。
25.系统存储器230是用于存储由soc部件204执行的指令以及用于存储由soc部件204处理的数据的部件。系统存储器230可体现为任何类型的存储器,包括例如动态随机存取存储器(dram)、同步dram(sdram)、双倍数据速率(ddr、ddr2、ddr3等)rambus dram(rdram)、静态ram(sram)或其组合。
26.永久存储器228是用于以非易失性方式存储数据的部件。即使电力不可用,永久存储器228也保留数据。永久存储器228可体现为只读存储器(rom)、闪存或其他非易失性随机存取存储器设备。永久存储器228存储设备100的操作系统和各种软件应用程序。永久存储
器228也可存储一个或多个机器学习模型,诸如回归模型、随机森林模型、支持向量机(svm)诸如内核svm、以及人工神经网络(ann)诸如卷积网络网络(cnn)、递归网络网络(rnn)、自编码器、和长短期记忆(lstm)。机器学习模型可以是与神经处理器电路218和设备100的各种软件应用程序或传感器一起工作的独立模型。机器学习模型也可以是软件应用程序的一部分。机器学习模型可执行各种任务,诸如面部识别、图像分类、对象、概念和信息分类、语音识别、机器翻译、声音识别、语音命令识别、文本识别、文本和上下文分析、其它自然语言处理、预测和建议。
27.存储在设备100中的各种机器学习模型可被完全训练、未经训练、或部分训练以允许设备100加强或继续在设备100被使用时训练机器学习模型。机器学习模型的操作包括在训练模型以及利用模型确定运行时间结果的各种计算。例如,在一种情况下,设备100捕获用户的面部图像并使用该图像继续改善用于锁定或解锁设备100的机器学习模型。
28.soc部件204体现为一个或多个集成电路(ic)芯片并执行各种数据处理过程。soc部件204可包括除了别的子部件之外的图像信号处理器(isp)206、中央处理器单元(cpu)208、网络接口210、传感器接口212、显示控制器214、神经处理器电路218、图形处理器(gpu)220、存储器控制器222、视频编码器224、存储控制器226和连接这些子组件的总线232。soc部件204可包括比图2中所示的子部件更多或更少的子部件。
29.isp 206是执行图像处理流水线的各级的电路。在一些实施方案中,isp 206可从图像传感器202接收原始图像数据,并且将原始图像数据处理成soc部件204的其他子部件或设备100的部件可用的形式。isp 206可执行各种图像操纵操作,诸如图像平移操作、水平和竖直缩放、色彩空间转换和/或图像稳定变换。
30.cpu 208可使用任何合适的指令集架构来实现,并且可被配置为执行在该指令集架构中定义的指令。cpu 208可以是使用各种指令集架构(isa)中的任一者的通用或嵌入式处理器,诸如x86、powerpc、sparc、risc、arm或mips isa,或任何其他合适的isa。尽管图2中示出了单个cpu,但是soc部件204可包括多个cpu。在多处理器系统中,每个cpu可共同实现相同的isa,但不是必需的。
31.图形处理单元(gpu)220是用于执行图形数据的图形处理电路。例如,gpu 220可渲染要显示到帧缓冲器中的对象(例如,包括整个帧的像素数据的帧缓冲器)。gpu 220可包括一个或多个图形处理器,该图形处理器可执行图形软件以执行部分或全部的图形操作或某些图形操作的硬件加速。
32.神经处理器电路218是基于包括相乘、相加和累加的计算来执行各种机器学习操作的电路。此类计算可被布置为例如执行各种类型的张量乘积,诸如张量积和输入数据和内核数据的卷积。神经处理器电路218是可配置电路,该可配置电路以快速且高功效的方式执行这些操作,同时缓解了cpu 208与神经网络操作相关联的资源密集型操作。神经处理器电路218可从传感器接口212、图像信号处理器206、永久存储器228、系统存储器230或其他源诸如网络接口210或gpu 220接收输入数据。神经处理器电路218的输出可被提供给设备100的各个部件诸如图像信号处理器206、系统存储器230或cpu 208用于各种操作。神经处理器电路218的结构和操作在下文中参考图3详细描述。
33.网络接口210是支持经由一个或多个网络(例如,载体或代理设备)在设备100和其他设备之间交换数据的子部件。例如,视频或其他图像数据可经由网络接口210从其他设备
接收并且被存储在系统存储器230中以用于后续处理(例如,经由到图像信号处理器206的后端接口)和显示。网络可包括但不限于局域网(lan)(例如,以太网或公司网络)和广域网(wan)。经由网络接口210接收的图像数据可由isp 206进行图像处理过程。
34.传感器接口212是用于与运动传感器234交接的电路。传感器接口212从运动传感器234接收传感器信息并且处理传感器信息以确定设备100的取向或移动。
35.显示控制器214是用于发送要在显示器216上显示的图像数据的电路。显示控制器214从isp 206、cpu 208、图形处理器或系统存储器230接收图像数据,并将图像数据处理成适用于在显示器216上显示的格式。
36.存储器控制器222为用于与系统存储器230通信的电路。存储器控制器222可从系统存储器230读取数据以供isp 206、cpu 208、gpu 220或soc部件204的其他子部件处理。存储器控制器222还可将数据写入从soc部件204的各种子部件接收的系统存储器230。
37.视频编码器224是硬件、软件、固件或其组合,用于将视频数据编码成适于存储在永久存储器128中的格式,或者用于将数据传递到网络接口210以通过网络传输到另一设备。
38.在一些实施方案中,soc部件204的一个或多个子部件或这些子部件的一些功能可由在神经处理器电路218、isp 206、cpu 208或gpu 220上执行的软件部件来执行。此类软件部件可存储在系统存储器230、永久存储器228或经由网络接口210与设备100通信的另一设备中。
39.示例神经处理器电路
40.神经处理器电路218是对神经处理器电路218的输入数据执行机器学习操作的可编程电路。机器学习操作可包括用于训练机器学习模型以及用于基于经训练的机器学习模型执行推断或预测的不同计算。
41.以cnn为机器学习模型的示例,cnn的训练可包括正向传播和反向传播。神经网络可包括输入层、输出层、和一个或多个中间层,该中间层可被称为隐藏层。每个层可包括一个或多个节点,该一个或多个节点可完全或部分地连接到相邻层中的其它节点。在正向传播中,神经网络基于前一层的输出在正向方向上执行计算。节点的操作可由一个或多个函数限定。限定节点的操作的函数可包括各种计算操作,诸如利用一个或多个内核的数据卷积、层的池化、张量乘积等。函数还可包括调节节点的输出的权重的激活函数。不同层中的节点可与不同函数相关联。例如,cnn可包括与池化层混合、并且之后跟着一个或多个完全连接的层的一个或多个卷积层。
42.机器学习模型中的函数中的每一者(包括内核)可与在训练期间能调节的不同系数相关联。另外,神经网络中的一些节点各自也可与决定正向传播中节点的输出的权重的激活函数相关联。常见的激活函数可包括阶跃函数、线性函数、s形函数、双曲正切函数(tanh)、和整流线性单元函数(relu)。在一批训练样本数据在正向传播中通过神经网络之后,可将结果与训练样本的训练标签进行比较以计算网络的损失函数,其表示网络的性能。进而,神经网络通过使用坐标下降诸如随机坐标下降(sgd)调节各个函数中的系数以改善损失函数的值来执行反向传播。
43.在训练中,设备100可使用神经处理器电路218执行正向传播和反向传播中的所有或一些操作。多轮正向传播和反向传播可由神经处理器电路218单独地或与其它处理器诸
如cpu 208、gpu 220和isp 206协调地执行。训练可在损失函数不再改善(例如,机器学习模型已收敛)时或在特定训练样本的预定轮数之后完成。当使用设备100时,设备100可继续收集用于神经网络的附加训练样本。
44.为了预测或推断,设备100可接收一个或多个输入样本。神经处理器电路218可取输入样本执行正向传播以确定一个或多个结果。输入样本可以是图像、语音、文本文件、传感器数据或其它数据。
45.机器学习中的数据和函数(例如,输入数据、内核、函数、层输出、梯度数据)可被保存并由一个或多个张量表示。与机器学习模型的训练和运行时间有关的常见操作可包括张量积、张量转置、张量逐元素操作、卷积、激活函数的应用、自动微分以确定张量中的值的梯度、统计和聚合(例如,平均、方差、标准偏差)、张量秩和尺寸操纵等。
46.虽然作为示例讨论了神经网络的训练和运行时间,但是神经处理器电路218也可用于其它类型的机器学习模型的操作,诸如内核svm。
47.参见图3,示例性神经处理器电路218除了别的部件之外可包括神经任务管理器310、多个神经引擎314a至314n(在下文中统称为“多个神经引擎314”并且还单独地称为“神经引擎314”)、内核直接存储器存取(dma)324、数据处理器电路318、数据处理器dma 320、和平面引擎340。神经处理器电路218可包括更少的部件或者图3中未示出的附加部件。
48.神经引擎314中的每一个神经引擎并行地执行机器学习的计算操作。根据操作负荷,整组神经引擎314可正在操作,或者仅神经引擎314的子集可正在操作,而其余神经引擎314被置于功率节省模式以节省功率。神经引擎314中的每一个神经引擎包括用于存储一个或多个内核、用于执行相乘累加操作以及用于后处理以生成输出数据328的部件,如下文参考图4详细描述。神经引擎314可专门执行计算量大的操作,诸如卷积操作和张量积操作。卷积操作可包括不同种类的卷积,诸如交叉通道卷积(累加来自不同通道的值的卷积)、逐通信卷积、和转置卷积。
49.平面引擎340可专门执行更简单的计算操作,其速度可主要取决于数据传输的输入和输出(i/o)速度而不是平面引擎340内的计算速度。那些计算操作可被称为i/o约束的计算。相比之下,神经引擎314可聚焦于复杂的计算,其速度可主要取决于每个神经引擎314内的计算速度。例如,平面引擎340对于执行单个通道内的操作是高效的,而神经引擎314对于执行可能涉及数据重度累加的跨多个通道的操作是高效的。使用神经引擎314计算i/o约束的计算不可能在速度和功率消耗两个方面都是高效的。在一个实施方案中,输入数据可以是秩大于三(例如,具有三个或更多个维度)的张量。张量中的一组维度(两个或更多个)可被称为平面,而另一维度可被称为通道。神经引擎314可利用内核将张量中平面的数据卷积,并跨不同通道累加不同平面卷积的结果。另一方面,平面引擎340可专用于平面内的操作。
50.平面引擎340的电路可被编程用于多种模式下的一种模式下的操作,包括池化模式、逐元素模式和缩减模式。在池化模式下,平面引擎340缩减输入数据的空间尺寸。在逐元素模式下,平面引擎340生成从一个或多个输入的逐元素操作导出的输出。在缩减模式下,平面引擎340缩减张量的秩。例如,可将秩5张量缩减到秩2张量,或者可将秩3张量缩减到秩0张量(例如,标量)。下面参考图5进一步详细地论述平面引擎340的操作。
51.神经任务管理器310管理神经处理器电路218的总体操作。神经任务管理器310可
从由cpu 208执行的编译器接收任务列表,将任务存储在其任务队列中,选择待执行的任务,并且向神经处理器电路218的其他部件发送任务命令以用于执行所选择的任务。数据可与指示要对数据执行的操作的类型的任务命令相关联。神经处理器电路218的数据包括从另一源诸如系统存储器230传输的输入数据、以及由神经处理器电路218在先前操作循环中生成的数据。每个数据集可与指定要对数据执行的操作的类型的任务命令相关联。神经任务管理器310还可以在检测到事件诸如从cpu 208接收指令时执行任务的切换。在一个或多个实施方案中,神经任务管理器310将光栅器信息发送给神经处理器电路218的部件以使这些部件中的每一者能够跟踪、检索或处理输入数据和内核数据的适当部分。例如,神经任务管理器310可包括存储关于数据集的尺寸和秩的信息以供神经处理器电路218处理的寄存器。尽管在图3中神经任务管理器310被示出为神经处理器电路218的一部分,但是神经任务管理器310可以是神经处理器电路218外部的部件。
52.内核dma 324是从源(例如,系统存储器230)获取内核数据并将内核数据326a至326n发送到神经引擎314中的每一个神经引擎的读取电路。内核数据表示可从中提取内核元素的信息。在一个实施方案中,内核数据可以是在神经引擎314中的每一个神经引擎处解压缩的压缩格式。尽管在一些情况下提供给神经引擎314中的每一个神经引擎的内核数据可相同,但是在大多数情况下提供给神经引擎314中的每一个神经引擎的内核数据是不同的。在一个实施方案中,内核dma 324的直接存储器访问性质可允许内核dma 324直接从源获取和写入数据,而没有cpu 208参与。
53.数据处理器电路318管理神经处理器电路218的数据流量和任务绩效。数据处理器电路318可包括流控制电路332和缓冲器334。缓冲器334是临时存储装置,用于存储与神经处理器电路218和平面引擎340的操作相关联的数据,诸如从系统存储器230传输的输入数据(例如,来自机器学习模型的数据)和在神经处理器电路218或平面引擎340内生成的其它数据。存储在数据处理器电路318中的数据可包括不同子集,所述不同子集被发送给各个下游部件,诸如神经引擎314和平面引擎340。
54.在一个实施方案中,缓冲器334被实施为可被神经引擎314和平面引擎340访问的非暂态存储器。缓冲器334可存储用于馈送到对应神经引擎314a至314n或平面引擎340的输入数据322a至322n、以及用于反馈到一个或多个神经引擎314或平面引擎340中、或发送给目标电路(例如,系统存储器230)的来自神经引擎314a至314n或平面引擎340中每一者的输出数据328a至328n。缓冲器334还可存储平面引擎340的输入数据342和输出数据344,并且允许神经引擎314与平面引擎340之间的数据交换。例如,神经引擎314的一个或多个输出数据328a至328n用作对平面引擎340的输入342。同样,平面引擎340的输出344可用作神经引擎314的输入数据322a至322n。神经引擎314或平面引擎340的输入可以是存储在缓冲器334中的任何数据。例如,在各个操作循环中,引擎之一从中获取以作为输入的源数据集可以是不同的。引擎的输入可以是先前循环中同一引擎的输出、不同引擎的输出、或存储在缓冲器334中的任何其它合适的源数据集。此外,缓冲器334中的数据集可被划分并发送给不同的引擎,以用于下一操作循环中的不同操作。缓冲器334中的两个数据集也可联合以用于下一操作。
55.数据处理器电路318的流控制电路332可控制神经引擎314与平面引擎340之间的数据交换。数据处理器电路318与神经处理器电路218的其他部件的操作被协调使得存储在
数据处理器电路318中的输入数据和中间数据可跨神经引擎314和平面引擎340处的多个操作被重复使用,从而减少往返于系统存储器230的数据传输。流控制电路332可执行以下操作中的一者或多者:(i)监视正被神经引擎314和平面引擎340处理的数据的尺寸和秩(例如,数据可以是一个或多个张量),(ii)基于与不同数据子集相关联的任务命令确定哪些数据子集被传输给神经引擎314或平面引擎340,(iii)确定数据被传输给神经引擎314和平面引擎340的方式(例如,数据处理器电路318可在广播模式下操作,其中相同的数据被馈送到神经引擎314的多个输入通道,使得多个或所有神经引擎314接收相同的数据,或者可在单播模式下操作,其中不同的神经引擎314接收不同的数据),和(iv)传输配置命令给平面引擎340以指示平面引擎340对其自己编程以用于在多个操作模式之一中操作。
56.存储在缓冲器334中的神经处理器电路218的数据可以是图像数据、取向梯度(hog)数据的柱状图、音频数据、元数据、神经引擎314的前一循环的输出数据328、以及从soc部件204的其他部件接收的其他经处理的数据等等的一部分。
57.数据处理器dma 320包括从源(例如,系统存储器230)接收输入数据的片段以用于存储在缓冲器334中的读取电路以及将数据从缓冲器334转发到目标部件(例如,系统存储器)的写入电路。在一个实施方案中,数据处理器dma 320的直接存储器访问性质可允许数据处理器dma 320直接从源(例如,系统存储器230)获取和写入数据。而没有cpu 208参与。缓冲器334可以是在cpu 208不参与的情况下存储设备100的机器学习模型的数据的直接存储器访问缓冲器。
58.示例神经引擎架构
59.图4是根据一个实施方案的神经引擎314的框图。神经引擎314执行各种操作以促进机器学习,诸如卷积、张量积,并且其它操作可涉及大的计算量。为此,神经引擎314接收输入数据322,基于所存储的内核数据对输入数据322执行相乘累加操作(例如,卷积操作),对相乘累加操作的结果执行进一步后处理操作,并且生成输出数据328。神经引擎314的输入数据322和/或输出数据328可以是单个通道的或跨多个通道。
60.神经引擎314可除了别的部件之外包括输入缓冲电路402、计算核416、神经引擎(ne)控件418、内核提取电路432、累加器414和输出电路424。神经引擎314可包括比图4中所示更少的部件或包括图4中未示出的另外的部件。
61.输入缓冲电路402是当神经处理器电路218的数据的子集被从源接收时存储该数据子集的电路。源可以是数据处理器电路318、平面引擎340或另一合适的部件。输入缓冲电路402发送用于当前任务或处理回路的数据的适当片段408给计算核416以用于处理。输入缓冲电路402可包括移位器410,该移位器对输入缓冲电路402的读取位置进行移位以改变发送给计算核416的数据的片段408。通过经由移位改变提供给计算核416的输入数据的片段,神经引擎314可基于较少数量的读取操作针对输入数据的不同片段执行相乘累加。在一个或多个实施方案中,神经处理器电路218的数据包括差异卷积组和/或输入通道的数据。
62.内核提取电路432是从内核dma 324接收内核数据326并提取内核系数422的电路。在一个实施方案中,内核提取电路432参考查找表(lut)并使用掩模来基于lut从压缩内核数据326重建内核。该掩模指示重建内核中待用零填补的位置以及待用数字填充的剩余位置。将重建内核的内核系数422发送到计算核416以填充计算核416的乘加(mad)电路中的寄存器。在其他实施方案中,内核提取电路432接收未压缩格式的内核数据,并且在不参考lut
或使用掩模的情况下确定内核系数。
63.计算核416是执行计算操作的可编程电路。为此,计算核416可包括mad电路mad0至madn以及后处理器428。mad电路mad0至madn中的每一者可将输入值存储在输入数据的片段408中并且将对应内核系数存储在内核系数422中。在mad电路中的每一个mad电路中将输入值和对应内核系数相乘以生成经处理的值412。
64.累加器414是从mad电路接收和存储经处理的值412的存储器电路。存储在累加器414中的经处理的值可作为反馈信息419被发送回以在mad电路处进行进一步相乘和相加操作,或者被发送到后处理器428以进行后处理。累加器414与mad电路组合形成了相乘累加器(mac)404。在一个或多个实施方案中,累加器414可具有子单元,其中每个子单元将数据发送到神经引擎314的不同部件。例如,在处理周期期间,存储在累加器414的第一子单元中的数据被发送到mac电路,同时存储在累加器414的第二子单元中的数据被发送到后处理器428。
65.后处理器428是对从累加器414接收的值412执行进一步处理的电路。后处理器428可执行操作,包括但不限于应用线性函数(例如,整流线性单元(relu))、归一化互相关性(ncc)、将对8位数据执行神经操作的结果合并成16位数据以及局部响应归一化(lrn)。此类操作的结果作为经处理的值417从后处理器428输出到输出电路424。在一些实施方案中,绕过后处理器428处的处理。例如,累加器414中的数据可直接发送给输出电路414以用于由神经处理器电路218的其它部件访问。
66.ne控件418基于神经处理器电路218的操作模式和参数来控制神经引擎314的其他部件的操作。根据不同的操作模式(例如,组卷积模式或非组卷积模式)或参数(例如,输入通道的数量和输出通道的数量),神经引擎314可以不同的顺序对不同的输入数据进行操作,将不同的值从累加器414返回到mac电路,并且在后处理器428处执行不同类型的后处理操作。为了配置神经引擎314的部件以期望的方式操作,ne控件418发送可被包括在信息419中的任务命令给神经引擎314的部件。ne控件418可包括光栅器430,该光栅器跟踪在神经引擎314处处理的当前任务或处理回路。
67.输入数据通常被分成更小的数据片,用于在多个神经引擎314或者神经引擎314和平面引擎340处进行并行处理。用于卷积操作的一组数据可被称为卷积组,其可分成多个较小单元。较小单元(片段)的层级结构可以是卷积组、切片、区块、工作单元、输出通道组、输入通道(cin)、用于输入步幅的子cin等。例如,卷积组可被分成若干切片;切片可分成若干区块;区块可分成若干工作单元;等等。在神经引擎314的上下文中,工作单元可以是输入数据的片段,诸如由平面引擎340处理的数据或神经引擎314的先前循环处理的数据,其具有生成在计算核416的单个循环期间适合神经引擎314的累加器414的输出值的尺寸。在一种情况下,每个工作单元的尺寸是256字节。在此类实施方案中,例如,工作单元可被成形为16
×
16、32
×
8、64
×
4、128
×
2或256
×
1数据集中的一者。在平面引擎340的上下文中,工作单元可以是(i)输入数据的片段,(ii)来自神经引擎314的数据或(iii)来自平面引擎340的先前循环的数据,其可在平面引擎340处同时处理。
68.光栅器430可执行与将输入数据分为较小单元(片段)相关联的操作,并通过mac 404和累加器414调控较小单元的处理。光栅器430保持跟踪输入/输出数据的片段的尺寸和秩(例如,组、工作单元、输入通道、输出通道)并且指示神经处理器电路218的部件用于正确
处理输入数据的片段。例如,光栅器430在输入缓冲电路402中操作移位器410以将输入数据的正确片段408转发给mac 404并将完成的输出数据328发送给数据缓冲器334。神经处理器电路218的其它部件(例如,内核dma 324、缓冲器dma 320、数据缓冲器334、平面引擎340)也可具有其对应的光栅器,用于监视输入数据的划分以及不同部件中输入数据的各个片段的并行计算。
69.输出电路424从后处理器428接收经处理的值417,并且与数据处理器电路318交接以将经处理的值417存储在数据处理器电路318中。为此,输出电路424可以与在后处理器428中处理经处理的值417的顺序或格式不同的顺序或格式作为输出数据328发出。
70.神经引擎314中的部件可在配置周期期间由ne控件418和神经任务管理器310配置。为此,神经任务管理器310在配置周期期间将配置信息发送到神经引擎314。可配置参数和模式可包括但不限于输入数据元素和内核元素之间的映射、输入通道的数量、输出通道的数量、输出步幅的执行以及在后处理器428处启用/选择后处理操作。
71.示例性平面引擎
72.图5是根据一个实施方案的平面引擎340的框图。平面引擎340是与所述多个神经引擎314分开的电路并且可被编程为以不同的操作模式执行。例如,平面引擎340可在池化模式、缩减模式、增益偏置模式、和逐元素模式下操作,池化模式缩减数据的空间尺寸,缩减模式缩减张量的秩,增益偏置模式提供偏置和按缩放因子的缩放的单程加法,并且逐元素模式包括逐元素操作。为此,平面引擎340除了其他部件之外可包括第一格式转换器502、第一滤波器506(在本文中也称为“多模水平滤波器506”)、行缓冲器510、第二滤波器514(在本文中也称为“多模竖直滤波器514”)、后处理器518、第二格式转换器522和平面引擎(pe)控件530(包括光栅器540)。平面引擎340可包括更少的部件或可包括图5中未示出的其它部件。平面引擎340中的每个部件可被实施成电路或与固件或软件组合的电路。
73.可从保存在数据处理器电路318中的一个或多个源数据集获取平面引擎340的输入数据342。如果平面引擎340要处理的数据集大于平面引擎340能同时处理的数据的工作单元,则可将此类数据集分段成多个工作单元以用于作为输入数据342读取到平面引擎340。取决于平面引擎340的模式,输入数据342可包括来自一个或多个源数据集的数据。本文描述的源数据集是指保存在神经处理器电路218中用于处理的不同数据。神经处理器电路218的不同部件可生成或传输保存在数据处理器电路318中的数据。例如,神经引擎314、平面引擎340(其在先前操作循环中生成了数据)和系统存储器230可生成或传输保存在数据处理器电路318的不同存储器位置中的不同数据集。各个源数据集可表示不同的张量。在平面引擎340的操作循环中,不同的源数据集可被一起获取作为输入数据342。例如,在涉及两个不同张量相加以导出所得张量的逐元素模式下,输入数据342可包括来自两个不同源数据集的数据,每个源数据集提供单独的张量。在其它模式下,单个源数据集可提供输入数据342。例如,在池化模式下,可从单个源数据集获取输入数据342。
74.第一格式转换器502是对一种格式(例如,用于存储在缓冲器334中的格式)的输入数据342执行一个或多个格式转换到另一形式以用于在平面引擎340的后续部件中处理的电路。此类格式转换可包括以下等等:将relu函数应用于输入数据342的一个或多个值、将输入数据342的一个或多个值转换为其绝对值、对包括在源中的张量转置、对输入数据342的一个或多个值应用增益、偏置输入数据342的一个或多个值、归一化或解除归一化输入数
据342的一个或多个值、将浮点数转换为带符号或无符号的数(或反之亦然)、对数量子化、和改变张量的尺寸,诸如通过在一个或多个维度中广播张量的值以扩展张量的秩。到平面引擎340的转换后的输入数据342和未转换的输入数据342在本文中统称为“输入数据的版本”。
75.第一滤波器506是在一个方向上执行过滤操作的电路。为此目的,第一滤波器506除了其他部件之外可包括加法器、比较器和乘法器。第一滤波器506执行的过滤可以是例如平均、选择最大值或选择最小值。当平均时,加法器用于加和输入数据342的值,并且加权因子可利用乘法器应用于所述加和以获得平均值作为所得值。当选择最大值和最小值时,可使用比较器代替加法器和乘法器以选择值。
76.行缓冲器510是用于存储结果的存储器电路,诸如从第一滤波器506或第二滤波器514获得的一个或多个中间数据。行缓冲器510可存储不同行的值并且允许从第二滤波器514或其它下游部件访问以获取中间数据来用于进一步处理。在一些模式下,绕过行缓冲器510。行缓冲器510也可包括逻辑电路用于除仅存储中间数据以外执行附加操作。例如,行缓冲器510包括加法器电路512,加法器电路与存储器部件组合使得行缓冲器510能够充当累加器,累加器聚合从第一滤波器506或第二滤波器514的结果生成的数据以单独存储不缩减的维度的聚合数据。
77.类似于第一滤波器506,第二滤波器514执行过滤操作,但在与第一滤波器506不同的方向上执行过滤操作。为此目的,第二滤波器514除了其他部件之外可包括加法器、比较器和乘法器。在池化模式下,第一滤波器506在第一维度中执行过滤操作,而第二滤波器514在第二维度中执行过滤操作。在其它模式下,第一滤波器506和第二滤波器514可不同地操作。在缩减模式下,例如,第二滤波器514执行逐元素操作,而第一滤波器506充当缩减树用于聚合数据值。
78.后处理器518是执行从其他上游部件获取的值的进一步处理的电路。后处理器518可包括对于执行利用通用计算电路执行可能低效的某些类型的数学计算高效的专用电路。后处理器518执行的操作除了其他之外可包括在缩减模式下执行平方根操作和值的倒数。后处理器518可在其它操作模式下被绕过。
79.第二格式转换器522是将平面引擎340中先前部件的结果从一种格式转换为用于输出数据344的另一格式的电路。此类格式转换可包括以下等等:将relu函数应用于结果、对所得张量转置、归一化或解除归一化结果的一个或多个值、以及其它数字格式转换。输出数据344可作为神经处理器电路218的输出或作为对神经处理器电路218的其它部件(例如,神经引擎314)的输入被存储在数据处理器电路318中。
80.pe控件530是基于平面引擎340的操作模式控制平面引擎340中其他部件的操作的电路。根据不同操作模式,pe控件530对与平面引擎340中的不同部件相关联的寄存器编程,使得经编程的部件以某种方式操作。部件或平面引擎340中部件之间的连接的流水线也可被重新配置。在池化模式下,例如,被第一滤波器506处理的数据可被存储在行缓冲器510中,然后被第二滤波器514读取以用于进一步过滤。然而,在缩减模式下,数据由第二滤波器514处理,在第一滤波器506处缩减,然后在被编程为累加器的行缓冲器510中累加。在逐元素模式下,可绕过行缓冲器510。
81.pe控件530还包括光栅器540,其跟踪在平面引擎340处处理的当前任务或处理回
路。光栅器540是跟踪输入数据的单元或片段和/或用于处理平面引擎340中的输入数据的回路的电路。光栅器540可控制每个操作循环中向平面引擎340的片段获取,并且可监视由平面引擎340处理的每个片段的尺寸和秩。例如,数据集的较小片段可按光栅器次序被获取作为输入数据342以用于在平面引擎340处处理,直到源数据集的所有片段被处理。在获取片段时,光栅器540监视数据集中片段的坐标。与数据集如何被分段到输入数据328中以用于在神经引擎314处处理相比,数据集被分段到输入数据342中以用于在平面引擎340处处理的方式可以是不同的。
82.用于在平面引擎340处处理的数据集可大于可在单个操作循环中处理的平面引擎340的容量。在这种情况下,平面引擎340获取数据集的不同片段作为多个操作循环中的输入数据342。所获取的片段可与先前获取的片段和/或将获取的下一片段部分地重叠。在一个实施方案中,重叠数据的部分仅被获取一次并且被重复使用以降低平面引擎340在获取数据中的时间和功率消耗成本。
83.图6a、图6b和图6c是根据实施方案的例示平面引擎340的不同示例模式的操作的概念图。仅出于说明目的示出了两个维度的5x5输入数据342(例如,秩2张量)。输入数据342可具有任何合适的尺寸和秩。输入数据342可以是保存在数据处理器电路318的缓冲器334中的数据。例如,在一些情况下,作为输入数据342被获取的保存在缓冲器334中的数据是神经引擎314的输出。在其它情况下,作为输入数据342被获取的保存在缓冲器334中的数据可以是先前循环中平面引擎340的输出。在另外的情况下,被获取的保存在缓冲器334中的数据可以是从系统存储器230接收的数据的片段。
84.示例性池化模式
85.在图6a所示的池化操作中,平面引擎340缩减输入数据342的空间尺寸以生成输出。池化操作可取决于滤波器尺寸、步幅因子、和过滤操作的类型。滤波器尺寸确定在池化操作中应用的滤波器的尺寸。图6a例示了滤波器610,其尺寸为3
×
3,但是可使用其它尺寸诸如5
×
5、7
×
7和9
×
9的滤波器。图6a还例示了步幅因子2,其导致滤波器610的中心在水平和竖直两个方向上跳过一个像素。基于步幅因子为2的3
×
3滤波器,5
×
5输入数据的空间尺寸将被缩减到2
×
2输出数据,因为滤波器610的中心将仅涵盖5
×
5输入数据中的四个像素。
86.平面引擎340在池化模式下执行的过滤类型可包括平均、选择最大值、和选择最小值。在平均中,滤波器所涵盖的像素的值将被平均。第一滤波器电路506和第二滤波器电路514包括加法器和乘法器以执行平均操作。在一个实施方案中,滤波器所涵盖的像素值(或水平或竖直子集)可首先通过加法器相加,然后利用乘法器应用缩减因子以实现平均。缩减因子可对应于滤波器的尺寸。例如,对于3
×
3滤波器,每个维度的缩减因子可以是1/3。
87.在用于选择最大值或最小值的操作中,可绕过第一滤波器电路506和第二滤波器电路514中的加法器和乘法器。相反,第一滤波器电路506和第二滤波器电路514中的比较器用于选择滤波器所涵盖的输入数据的值中的最大值或最小值。
88.为了减少重复计算的数量,对输入数据的版本的过滤操作可由第一滤波器506和第二滤波器514分开执行。利用图6a作为示例,可首先水平地应用1
×
3尺寸的第一滤波器以缩减第一维度并生成中间数据。例如,在应用水平滤波器之后,中间数据的尺寸可以是5
×
2。然后将中间数据存储在行缓冲器510中以用于发送给竖直滤波器514。接下来,第二滤波器514应用尺寸为3
×
1的竖直滤波器,以进一步缩减中间数据的第二维度。第二滤波器514
可包括一个或多个乘法器,用于在执行平均时将权重因子应用于所计算值。虽然使用术语“水平”和“竖直”,但是第一维度和第二维度可分别表示数据集中的两个不同维度中的任一个,诸如张量。
89.在池化模式下,可绕过后处理器518。第二格式转换器522可执行如上文参考图5所描述的一个或多个格式转换。
90.示例性逐元素模式
91.在图6b所示的逐元素模式下,第一滤波器506和第二滤波器514中的一者或两者可用于执行一个或多个逐元素操作,而行缓冲器510和后处理器518可被绕过。在逐元素模式下,平面引擎340执行输入数据的逐元素操作。
92.如果逐元素模式下的输入数据342是从单个源数据集接收的,则该操作被称为一元操作。例如,平面引擎340可从数据处理器电路318获取单个张量的仅片段。在示例性一元操作中,输入数据342中的每个值可被平方以生成输出。如果输入数据342是从两个源数据集接收的(例如,从存储在数据处理器电路318中的两个数据集),则用于组合这两个源数据集的操作被称为二元操作。如果两个张量相加,则相加操作是二元操作,因为输入数据342包括代表这两个张量的来自两个源数据集的值。在一个实施方案中,平面引擎340可在一个操作循环中支持多达三元操作。
93.在逐元素模式下,第一格式转换器502可执行各种任务,包括但不限于对一个或多个输入张量转置(例如,宽度到通道转置)、广播输入张量的值以扩展输入张量的尺寸和秩、以及对输入数据342执行其它格式转换。对输入张量转置可以是有利的,除了其他原因之外还因为其允许每通道增益或偏置以向量格式存储。这在用于逐元素操作的硬件占地面积、带宽和操作性能方面可能更有效。可执行广播值,以通过在一个或多个维度上复制张量的值来扩展一个或多个维度中的输入数据342的尺寸。例如,第一格式转换器502可复制列向量的数据值(一个维度中尺寸等于1的向量)以将该尺寸扩展到另一尺寸。当输入数据342包括来自两个源的两个张量时,可广播张量中一者或两者的值,使得这两个张量的尺寸和秩匹配以用于下游逐元素操作。
94.第一滤波器506和第二滤波器514中的一者或两者可被重新配置以执行逐元素操作。在包括两个源的二元操作中,这两个源的数据值可首先交织(例如,a1、b1、a2、b2等等,其中ai和bi分别是来自这两个源的数据值)。如图6b所示,第一源的值620与第二源的对应值630组合以生成值640。第一滤波器506和第二滤波器514逐个元素地执行此类操作。
95.平面引擎340可支持不同类型的逐元素操作,包括但不限于相加、相减、逐元素最大值(例如,比较值620和630)、逐元素最小值、逐元素相乘、和逐元素加和然后平方。滤波器506和514的加法器可设置为彼此并行操作,其中来自两个源的数据值被交织并通过加法器以生成逐元素结果。如果逐元素操作是逐元素相乘、逐元素最大值或逐元素最小值,则滤波器506和514中的乘法器或数字比较器可被设置为对经交织的数据值进行逐元素操作。在二元逐元素模式下,组合两个张量以生成输出张量作为输出344的版本。
96.逐元素模式下第二格式转换器522的功能和操作与池化模式下的那些基本上相同,不同的是转置可在第二格式转换器522处应用于输出344。第二格式转换器522处的转置可以与第一格式转换器502处的转置操作相关也可以不与第一格式转换器502处的转置操作相关。例如,在一种情况下,对于经转置的张量可在第二格式转换器522处对输出344应用
逆转置,但在另一情况下,可在第二格式转换器522处应用与张量在第一格式转换器502处如何被转置不相关的转置。同样,即使在第一格式转换器502处没有应用转置,也可在第二格式转换器522处对输出344应用转置。
97.示例性三元模式
98.三元模式是在操作循环中对三个源张量执行逐元素操作的特定类型的逐元素操作。三元模式可用于在操作循环中执行逐元素每通道增益偏置操作。在三元模式下,从数据处理器电路318获取三个源数据集。要增益和偏置的张量是第一源数据集。用于增益的缩放因子是第二源数据集。偏置值是第三源数据集。在获取源数据集时,平面引擎340获取作为第一张量的第一源数据集,作为输入数据342的一部分。平面引擎340获取一起作为第二张量的第二源数据集和第三源数据集,作为输入数据342的另一部分。例如,第二源的值和第三源的值可被布置在第二张量的维度(例如,未使用维度)中。可从值在该维度中的索引位置标识该值是来自第二源还是第三源。
99.在三元模式下,第一格式转换器502可执行上文参考逐元素模式讨论的各种格式转换任务。在三元模式下,第一滤波器506和第二滤波器514也可以类似于上文参考逐元素模式描述的过程的方式执行逐元素操作,不同的是每个滤波器可针对不同的数值集执行逐元素操作。例如,第一滤波器506可在存储在输入数据342中的第一张量与输入数据342中被存储作为第二张量的第一部分的偏置值集合之间执行逐元素操作。第二滤波器514可在存储在输入数据342中的第一张量与输入数据342中被存储作为第二张量的第二部分的缩放因子集合之间执行逐元素操作。
100.示例性缩减模式
101.在图6c所示的缩减模式下,平面引擎340可执行缩减张量的秩的缩减操作。在处理之后,平面引擎340提供表示经缩减的张量的输出。例如,在一种情况下,秩5张量可缩减到秩2张量。在另一情况下,秩3张量可缩减到秩1张量(例如,向量)。平面引擎340可支持不同类型的缩减,包括平均、全局最大值(例如,张量中的最高值)和全局最小值。
102.在缩减模式下,平面引擎340聚合需要缩减的维度中的值以生成聚合值,同时维持不需要缩减的维度的尺寸,所述聚合值可以是标量值。在此上下文中,标量值可涵盖标量(例如,秩0张量)和在所有维度中具有尺寸1的张量。为了便于参考,要缩减的维度可被称为宽度和高度,而不要缩减的维度可被称为通道。然而,维度的名称仅用于示例。在各种缩减操作中,要缩减的维度可以不同,并且要缩减的维度的数量也可以不同(例如,在一种情况下,1维度缩减,而两个维度的尺寸被维持)。而且,在一些情况下,可缩减张量的所有维度。
103.在缩减模式下,要缩减的张量可以比工作单元大,工作单元对应于平面引擎340在操作循环中的容量。平面引擎340在多个操作循环中执行缩减操作,并且存储对应于行缓冲器510中不同通道位置的中间值。在缩减模式下,平面引擎340可被编程为具有第二滤波器514、第一滤波器506、行缓冲器510和后处理器518的序列。对于操作循环,第二滤波器514可执行逐元素操作以至少调节作为输入342获取的工作单元中的值的子集。值的该子集可对应于工作单元中的宽度和高度的值。对于每个操作循环,第一滤波器506作为缩减树操作,缩减树将该子集中的值缩减到聚合值。平面引擎340可包括寄存器(例如,被定位成第一滤波器506的一部分)用于累加对应于同一通道的不同工作单元的聚合值以生成单个聚合值。行缓冲器510包括存储器位置用于分开存储不同通道的聚合值,因为通道维度不被缩减。例
如,在图6c中,因为有三个通道,所以三个单独的聚合值存储在行缓冲器510中。
104.在一个实施方案中,缩减模式下第一格式转换器502的操作和函数类似于上文参考池化模式描述的操作和函数,不同的是,缩减模式下的第一格式转换器502可从第二源数据集获取数据。来自第二源的数据可在第一滤波器506处在逐元素模式下使用,诸如用于相减。
105.为了执行某些类型的缩减,诸如确定方差或标准偏差,第一滤波器506或第二滤波器514中的一者可以与逐元素模式下相同的方式操作。在一个实施方案中,这两个滤波器506和514中的一者可包括附加乘法器电路,用于在池化模式下执行平均。具有附加乘法器电路的滤波器可用于逐元素操作。例如,在一个实施方案中,第二滤波器514可用于执行逐元素操作。如果缩减涉及减法(例如,在确定方差或标准偏差中),则对应于减法的二元逐元素操作可由第二滤波器514执行。对于其它类型的缩减,对输入数据的值不执行逐元素操作,并且可绕过第二滤波器514。
106.第一滤波器506用作缩减树以聚合输入数据342的版本中的值以将这些值缩减到单个值。在一个实施方案中,使用第一滤波器506而不是第二滤波器514作为缩减树可缩减需要连接到行缓冲器510的路径的数量,因为行缓冲器510也被编程为在池化模式下从第一滤波器506接收值。然而,在另一实施方案中,缩减模式下第一滤波器506和第二滤波器514的角色可互换。缩减树可包括多个计算单元层,所述多个计算单元层逐渐聚合输入数据342中的值或从输入数据342导出的值。根据缩减操作的类型,可使用第一滤波器506中的不同计算单元。例如,如果缩减操作是确定张量中的值的平均值、方差或标准偏差,则加法器可以是所使用的计算单元。如果缩减操作是确定最大值或最小值,则比较器可以是所使用的计算单元。缩减树的输入层可包括最多数量的计算单元,并且每个后续层中计算单元的数量逐渐减小。例如,如果每个工作单元包括64个数据值,则输入层可包括32个计算单元,第二层可包括一半计算单元(例如,16个单元),第三层可具有进一步减少数量的计算单元(例如,8个单元),等等。缩减树继续聚合值直到输出层处的单个计算单元,以计算单个值。
107.在缩减模式下,行缓冲器510在第一滤波器506和第二滤波器514的下游。为此目的,行缓冲器510可包括加法器512。在一些情况下,要缩减的张量可包括存储在缓冲器334中的多个源数据集。例如,张量可足够大,使得张量在缓冲器334中被分段成多个源数据集。源数据集也可称为“贴片”。每个贴片包括多个通道,并且贴片的单个通道中的数据子集包括多个工作单元。由于跨不同通道的值不进一步缩减,因此行缓冲器510利用加法器512累加行缓冲器510的不同存储器位置中的每通道聚合值。例如,如果张量具有n个通道,则n个存储器位置用于存储所述n个通道的缩减值。通道的值可跨不同的贴片存储,行缓冲器510累加其存储器位置中不同贴片中的值。经缩减的张量可以是维持通道的尺寸的向量。例如,在图6c中,包括宽度和高度的每个平面被缩减到单个值,但是跨不同通道的值被分开处理。
108.在缩减中,后处理器518可执行利用一般计算电路执行可能效率低下的某些数学计算。此类操作可涉及确定值的平方根。为此目的,后处理器518可包括计算浮点数的平方根的电路。后处理器518还可包括对比输出344的格式更高精度的格式的数执行倒置的电路。在另一示例中,后处理器518可包括缩放累加值以生成平均值的乘法器。后处理器518可包括用于执行与缩减操作相关联的各种操作的其它电路。
109.缩减模式下的第二格式转换器522的操作和函数类似于上文参考池化模式描述的
操作和函数,不同的是聚合值可沿一个或多个维度重复并且所生成的经缩减张量可被整形。例如,经缩减的张量可被整形为具有另一尺寸或秩的另一张量。输出344可以是标量值、经缩减的张量或经整形的经缩减张量。
110.操作神经处理器的示例性过程
111.图7是根据实施方案描绘操作神经处理器电路218的示例性过程的流程图。数据处理器电路318传输710第一输入数据给神经引擎电路314中的至少一者。第一输入数据可包括多个信道中的值。第一输入数据可以是源自被实例化并存储在系统存储器230中的机器学习模型的神经处理器电路218的输入。第一输入数据也可以是先前操作循环中神经引擎314或平面引擎340的输出。
112.在神经引擎电路314处对第一输入数据与一个或多个内核执行720卷积操作,以生成第一输出。在一些情况下,相同的第一输入数据可被传输给多于一个神经引擎电路314。在其它情况下,每个神经引擎电路314接收不同的第一输入数据。对于各个神经引擎电路314,该内核可以相同或不同。
113.第二输入数据从数据处理器电路318发送730给平面引擎电路340。作为响应,平面引擎电路340从第二输入数据生成740第二输出。平面引擎电路340的输入数据可对应于来自神经引擎电路314的第一输出或对神经处理器电路218的输入数据的经处理版本。
114.生成740平面引擎电路340的输入数据的过程可基于平面引擎电路340的操作模式而不同。在池化模式下,平面引擎电路340缩减740a输入数据的版本的空间尺寸。例如,平面引擎电路340包括第一滤波器电路、第二滤波器电路和行缓冲器电路。利用第一滤波器电路,平面引擎电路340在第一维度中缩减输入数据的尺寸以生成中间数据。中间数据可存储在行缓冲器电路处以用于发送给第二滤波器电路。利用第二滤波器电路,平面引擎电路340在第二维度中缩减中间数据的尺寸以生成输出。
115.在逐元素模式下,平面引擎电路340对平面引擎电路340的输入数据执行740b逐元素操作。例如,至少第一滤波器电路或第二滤波器电路执行逐元素操作。平面引擎电路可以其它模式执行,诸如缩减模式。在缩减模式下,平面引擎缩减张量的秩。
116.图7中所示的示例性过程仅仅是操作神经处理器电路218的过程之一。神经处理器电路218中的引擎可以任何顺序操作。例如,在另一过程中,数据集可在被神经引擎电路314处理之前首先被平面引擎电路340处理。在又一过程中,数据集可由相同类型的引擎重复处理。
117.虽然已经说明和描述了具体的实施方案和应用,但是应当理解,本发明不限于本文所公开的精确构造和部件以及,并且在不脱离本公开的实质和范围的情况下,可对本文所公开的方法和装置的布置、操作和细节进行对本领域的技术人员将显而易见的各种修改、改变和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献