CN110738316B - 基于神经网络的操作方法、装置及电子设备 - Google Patents
基于神经网络的操作方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110738316B CN110738316B CN201810804319.8A CN201810804319A CN110738316B CN 110738316 B CN110738316 B CN 110738316B CN 201810804319 A CN201810804319 A CN 201810804319A CN 110738316 B CN110738316 B CN 110738316B
- Authority
- CN
- China
- Prior art keywords
- neural network
- storage device
- feature map
- data
- convolution kernel
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 288
- 238000000034 method Methods 0.000 title claims abstract description 108
- 238000012545 processing Methods 0.000 claims abstract description 200
- 230000015654 memory Effects 0.000 claims abstract description 126
- 239000000872 buffer Substances 0.000 claims description 234
- 238000004364 calculation method Methods 0.000 claims description 210
- 238000010586 diagram Methods 0.000 claims description 135
- 230000008569 process Effects 0.000 claims description 19
- 238000013136 deep learning model Methods 0.000 claims description 8
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000013139 quantization Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 description 14
- 239000011159 matrix material Substances 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Power Sources (AREA)
Abstract
本申请实施例提供了一种基于神经网络的操作方法、装置及电子设备。该方法包括:确定神经网络处理器的带宽信息;根据所述带宽信息,确定相应的调度策略;根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作。本申请的神经网络处理器通过充分结合带宽的情况来对控制存储器以及处理引擎单元阵列进行调度以执行相应操作,能够提高神经网络处理器的处理速度,降低功耗。
Description
技术领域
本申请涉及神经网络技术领域,具体而言,本申请涉及一种基于神经网络的操作方法、装置及电子设备。
背景技术
深度学习是机器学习领域的重要分支,在近些年来取得了重大突破。采用深度学习算法训练的神经网络模型自提出以来,在图像识别、语音处理、智能机器人等应用领域上取得了令人瞩目的成果。深度学习中最著名的卷积神经网络,使用了局部感受野和权值共享的概念,解决了传统神经网络参数太多,很难训练等问题,大大减少了网络参数的数量。
随着卷积神经网络复杂度的不断提高,卷积神经网络技术在实际应用过程中存在占用资源多、运算速度慢、能量消耗大等问题,因此该技术在嵌入式设备或者低开销数据中心等领域应用时存在严重的能效问题和运算速度瓶颈。采用硬件加速替代传统软件计算的方法成为了提高卷积神经网络计算效率的一种行之有效的方式。主流的硬件加速方式包括通用图形处理器(GPGPU,General Purpose GPU)、专用处理器芯片(ASIC,ApplicationSpecific Integrated Circuit)和现场可编程逻辑阵列(FPGA,Field-ProgrammableGate Array)等。
硬件神经网络处理器可以连接外部存储设备,其中,外部存储设备包括动态随机存储器(DRAM,Dynamic Random Access Memory)、静态随机存储器(SRAM,Static Random-Access Memory)、闪存(Flash Memory)和/或只读存储器(ROM,Read-Only Memory)等。此外,硬件神经网络处理器还可以包括片上缓存器和处理引擎单元(PE,Processing EngineUnit)内部寄存器等存储器,其中,片上缓存器包括静态随机存储器(SRAM)、嵌入式动态随机存储器(eDRAM,embedded dynamic random access memory)、高速缓存器(Cache)和/或便签式存储器(scratchpad memory)等。PE内部寄存器包括寄存器(Register)、触发器(Flip-Flop)、锁存器(Latch)和/或便签式存储器(scratchpad memory)等。这些硬件神经网络处理器相关的三个级别的存储设备中,外部存储设备的读写功耗最大、读写速度最低、存储容量最大,片上缓存器的读写功耗中等、读写速度中等、存储容量中等,PE内部寄存器的读写功耗最小、读写速度最快、存储容量最小。
硬件神经网络处理器的PE只能从内部寄存器或片上缓存器直接读写数据进行计算,而不能直接从外部存储设备读写数据。片上缓存器可以与外部存储设备进行数据交换,PE的内部寄存器也可以与片上缓存器进行数据交换。片上缓存器及PE的内部寄存器由于存储容量较小,在执行大型神经网络计算时,无法同时存储计算所需的全部数据。外部存储设备由于存储容量较大,可以同时存储神经网络计算时所需的全部数据,但由于处理引擎单元不能直接从外部存储设备读写数据,因此外部存储设备需先将计算所需的数据传输到片上缓存器中存储,再由PE进行计算。计算结束后,处理引擎单元先将计算结果存储在内部寄存器或片上缓存器中,再将数据由外部存储设备写入外部存储设备中存储。
考虑到神经网络处理器的外部存储设备、片上缓存器和PE内部寄存器三者之间读写速度、读写功耗以及存储容量的差异。不同的存储器调度方法将极大地影响神经网络处理器执行神经网络计算时的处理速度和功耗等。
现有神经网络处理器在执行神经网络计算时,需大量并且频繁地读写外部存储设备,增加神经网络处理器的功耗,降低处理速度。并且,其存储器调度方法是在软件程序编写或软件程序编译时确定的,方法单一,在软件程序执行期间不会发生任何变化。然而在复杂的电路系统中,外部存储设备的带宽及总线的带宽由多个模块共享,神经网络处理器作为电路系统中的模块,其可用带宽随时间不断发生变化。现有神经网络处理器在可用带宽较大时,无法充分进行利用,处理速度得不到提高;在可用带宽较小时,电路系统无法充分满足神经网络处理器的读写请求,导致处理速度较低,处理延迟较大,功耗较高。
发明内容
本申请提供了一种基于神经网络的操作方法、装置及电子设备,用于优化神经网络处理器的数据存储、交换策略。
第一方面,本申请提供了一种基于神经网络的操作方法,执行所述神经网络的神经网络处理器包括存储器、以及由至少一个处理引擎单元组成的处理引擎单元阵列;所述方法包括:
确定神经网络处理器的带宽信息;
根据所述带宽信息,确定相应的调度策略;
根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作。
第二方面,本申请提供了一种基于神经网络的操作装置,执行所述神经网络的神经网络处理器包括存储器、由至少一个处理引擎单元组成的处理引擎单元阵列;所述操作装置包括:
确定模块,用于确定神经网络处理器的带宽信息;
选择模块,用于根据所述带宽信息,确定相应的调度策略;
调度模块,用于根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作。
第三方面,本申请提供了一种电子设备,该电子设备包括:神经网络处理器和存储设备,存储设备存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由神经网络处理器加载并执行以实现如本申请的第一方面所示的方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机存储介质用于存储计算机指令、程序、代码集或指令集,当其在计算机上运行时,使得计算机执行上述本申请的第一方面所示的方法。
本申请提供的基于神经网络的操作方法、装置及电子设备,采用确定神经网络处理器的带宽信息;根据所述带宽信息,确定相应的调度策略;根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作,神经网络处理器通过充分结合可用带宽的情况来对控制存储器以及处理引擎单元阵列进行调度以执行相应操作,能够提高神经网络处理器的处理速度,降低功耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种神经网络处理器的架构示意图;
图2为本申请实施例提供的一种基于神经网络的操作方法的流程示意图;
图3a为本申请实施例提供的第一种神经网络处理器在电路系统中集成的结构示意图;
图3b为本申请实施例提供的第二种神经网络处理器在电路系统中集成的结构示意图;
图4为本申请实施例提供的预测可用带宽的示意图;
图5为本申请实施例提供的神经网络处理器的结构示意图一;
图6为本申请实施例提供的调度策略选择神经网络的结构示意图一;
图7为本申请实施例提供的调度策略选择神经网络的结构示意图二;
图8为本申请实施例提供的一种输入特征图的示例图;
图9为本申请实施例提供的一种卷积核的示例图;
图10为本申请实施例提供的一种输出特征图的示例图;
图11为本申请实施例提供的特征图划分方式一的示例图;
图12为本申请实施例提供的输出结果一的示例图;
图13为本申请实施例提供的特征图划分方式二的示例图;
图14为本申请实施例提供的卷积核划分方式二的示例图;
图15为本申请实施例提供的输出结果二的示例图;
图16为本申请实施例提供的一种确定调度策略方法的示例图;
图17为本申请实施例提供的另一种确定调度策略方法的示例图;
图18为本申请实施例提供的一组处理引擎单元及通道切换单元的结构示意图;
图19为本申请实施例提供的神经网络处理器的结构示意图二;
图20为本申请实施例提供的一种执行神经网络计算操作的示例图;
图21为本申请实施例提供的神经网络处理器的结构示意图三;
图22为本申请实施例提供的控制处理引擎单元和通道切换单元执行操作的有限状态机的示意图;
图23为本申请实施例提供的控制特征图输入缓存器执行操作的有限状态机的示意图;
图24为本申请实施例提供的控制特征图输出缓存器执行操作的有限状态机的示意图;
图25为本申请实施例提供的一种基于神经网络的操作装置的结构示意图;
图26为本申请实施例提供的调度策略库的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
实施例一
本申请实施例提供了一种神经网络处理器执行操作的方法,如图1所示,执行该神经网络的神经网络处理器包括存储器、以及由至少一个处理引擎单元PE组成的处理引擎单元阵列。
具体地,如图2所示,该方法包括:
步骤S201:确定神经网络处理器的带宽信息。
步骤S202:根据所述带宽信息,确定相应的调度策略。
步骤S203:根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作。
本申请实施例提供的神经网络处理器执行操作的方法中,神经网络处理器通过充分结合带宽的情况来对控制存储器以及处理引擎单元阵列进行调度以执行相应操作,能够提高神经网络处理器的处理速度,降低功耗。
实施例二
本申请实施例在实施例一的基础上,提供了如实施例二所示的一种可能的实现方式,其中,本申请实施例提供的神经网络处理器执行操作的方法,还包括:确定神经网络的计算参数。
其中,神经网络的计算参数,包括但不限于以下至少一项:运算操作类型、运算量化精度、输入特征图参数、卷积核参数及输出特征图参数;
其中,输入特征图参数,包括不限于以下至少一项:输入特征图的宽度、高度、通道数量、批次大小;
卷积核参数,包括不限于以下至少一项:卷积核的宽度、高度、通道数量、个数、卷积横向步长和纵向步长、分组数量、膨胀率;
输出特征图参数包括不限于以下至少一项:输出特征图的宽度、高度、通道数量、批次大小。
那么,在步骤S202中,是根据神经网络的计算参数以及带宽信息,确定相应的调度策略。
其中,带宽信息包括但不限于以下任一种:可用带宽信息、历史使用带宽信息,其中,可用带宽信息用于指示可用带宽,可以是预测出的可用带宽,在本申请中,将用于指示预测出的可用带宽的信息称为预测可用带宽信息。本申请实施例中,带宽信息可以为预测可用带宽信息,包括外部存储设备可用带宽和/或总线可用带宽。
具体而言,在步骤S201中,确定神经网络处理器的外部存储设备可用带宽和/或总线可用带宽,包括:
当神经网络处理器对应的储存设备是共享存储设备时,预测共享存储设备可用带宽和/或总线可用带宽,其中,共享存储设备通过总线和多个功能模块相连接。
当神经网络处理器对应的储存设备是专用存储设备时,获取专用存储设备可用带宽,其中,专用存储设备通过存储器控制器只和神经网络处理器相连接。
作为示例地,如图3a所示的神经网络处理器在电路系统芯片中的一种集成架构中,电路系统芯片包括总线(系统总线)以及多个功能模块,电路系统芯片所在的电路系统还包括外部存储设备。其中,功能模块包括神经网络处理器、主CPU(Central ProcessingUnit,中央处理器)、图形处理器、存储器控制器、闪存控制器、通信调制解调器、数字信号处理器等。系统总线与多个功能模块相连。这种电路系统芯片集成架构中,包括两个外部存储设备,其中外部存储设备1通过存储器控制器与系统总线连接,即外部存储设备1为共享存储设备,通过总线和多个功能模块相连接。外部存储设备2通过存储器控制器仅与神经网络处理器连接,即外部存储设备2为专用存储设备,通过存储器控制器只和神经网络处理器相连接,为神经网络处理器专用。
当电路系统包括至少两个外部存储设备时,神经网络计算时所需的数据有多种存储方式,其中所述神经网络计算时所需的数据,至少包括以下一种:输入特征图和卷积核。
所述神经网络计算时所需的数据的存储方式,包括至少以下一种:
输入特征图和卷积核全部都存储在外部存储设备1;
输入特征图全部存储在外部存储设备1,卷积核全部存储在外部存储设备2;
输入特征图既存储在外部存储设备1,又存储在外部存储设备2,卷积核全部存储在外部存储设备2;
输入特征图全部存储在外部存储设备1,卷积核既存储在外部存储设备1,又存储在外部存储设备2;
输入特征图既存储在外部存储设备1,又存储在外部存储设备2,卷积核既存储在外部存储设备1,又存储在外部存储设备2。
所述数据既存储在外部存储设备1,又存储在外部存储设备2时,可选的,数据的一部分存储在外部存储设备1,数据的另一部分存储在外部存储设备2,外部存储设备1和外部存储设备2所存储的数据没有重复的部分;可选的,数据的一部分存储在外部存储设备1,数据的一部分存储在外部存储设备2,外部存储设备1和外部存储设备2所存储的数据有一部分重复的内容;可选的,数据全部存储在外部存储设备1,数据也全部存储在外部存储设备2,外部存储设备1和外部存储设备2所存储的数据完全相同。
基于这种电路系统芯片集成架构执行步骤S201时,需要预测外部存储设备1可用带宽和/或总线可用带宽,以及获取外部存储设备2可用带宽,这是由于外部存储设备2为神经网络处理器专用,外部存储设备2可用带宽为固定值。
作为示例地,如图3b所示的神经网络处理器在电路系统芯片中的又一种集成架构中,电路系统芯片包括总线(系统总线)以及多个功能模块,电路系统芯片所在的电路系统还包括外部存储设备。其中,功能模块包括神经网络处理器、主CPU、图形处理器、存储器控制器、闪存控制器、通信调制解调器、数字信号处理器等。这种电路系统芯片集成架构中,包括两个外部存储设备和两个系统总线,第一系统总线和第二系统总线连接的功能模块不完全相同,第一系统总线和第二系统总线均与神经网络处理器相连,外部存储设备1通过存储器控制器与第一系统总线连接,外部存储设备2通过存储器控制器与第二系统总线连接,即外部存储设备1和外部存储设备2均为共享存储设备,通过总线和多个功能模块相连接。由于神经网络处理器通过第一系统总线和第二系统总线分别与两个不同的外部存储设备相连,因此可以同时读写两个外部存储设备的数据且不会产生冲突。
该电路系统中,至少两个外部存储设备对神经网络计算时所需的数据的存储方式可参见上述对如图3a所示的电路系统的介绍,在此不再赘述。
基于这种电路系统芯片集成架构执行步骤S201时,需要预测外部存储设备1可用带宽和/或第一总线可用带宽,还要预测外部存储设备2可用带宽和/或第二总线可用带宽。
对于确定神经网络处理器的可用带宽信息的方式,本申请实施例还提供了一种可能的实现方式,即步骤S201包括:
确定系统状态参数;根据系统状态参数,确定预定时刻或预定时间段内的带宽信息。通过该方法,可以预测外部存储设备可用带宽和/或总线可用带宽。
其中,系统状态参数,包括但不限于以下至少一项:外部存储设备总带宽、外部存储设备刷新周期、总线总带宽、总线支持的操作类型、电路系统中各个模块占用的外部存储设备带宽历史数据、外部存储设备空闲带宽历史数据、电路系统中各个模块占用的总线带宽历史数据、总线空闲带宽历史数据。
作为示例地,如图4所示,可以根据电路系统中神经网络处理器的带宽使用率历史数据、通信调制解调器的带宽使用率历史数据、CPU的带宽使用率历史数据、图形处理器的带宽使用率历史数据、相机的带宽使用率历史数据、以及空闲带宽历史数据,来预测预定时刻或预定时间段内的可用带宽信息。
具体而言,可选的预测方法包括但不限于:神经网络算法、滑动窗口算法等。
可以理解,对于如图3a所示的电路系统和如图3b所示的电路系统,在实际应用中,确定出的带宽信息可能不同,也就是说基于不同的带宽信息,确定出的调度策略可能不同,但通过步骤S202确定调度策略的方式是相同的。具体根据带宽信息确定调度策略的方式将在后续实施例中进行介绍。在根据神经网络的计算参数以及预测可用带宽信息确定出相应的调度策略后,在步骤S203中,根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作,具体的调度控制过程将在后续实施例中进行介绍。
本申请实施例中,神经网络处理器可以根据预测可用带宽情况,依据神经网络的计算参数来实时调整存储器以及处理引擎单元阵列的调度策略,提高神经网络处理器的处理效率。
实施例三
本申请实施例在实施例一和实施例二的基础上,提供了如实施例三所示的另一种可能的实现方式,其中,
步骤S201之后,还包括:确定神经网络处理器配置参数。
那么在步骤S202中,根据神经网络的计算参数、带宽信息及神经网络处理器配置参数,确定相应的调度策略。
具体而言,根据神经网络的计算参数及神经网络处理器配置参数,确定所述神经网络处理器可支持的调度策略;依据带宽信息从所述神经网络处理器可支持的调度策略中确定相应的调度策略。
本申请实施例中,神经网络处理器中的存储器可以包括片上缓存器。
片上缓存器用于存储输入特征图、输出特征图和卷积核数据。
可选地,如图5所示,片上缓存器包括以下至少之一:独立的特征图输入缓存器、独立的卷积核缓存器、独立的特征图输出缓存器。
特征图输入缓存器用于单独存储输入特征图数据。
卷积核缓存器用于单独存储卷积核数据。
特征图输出缓存器用于单独存储输出特征图数据。
具体而言,神经网络处理器配置参数,包括但不限于以下至少一项:
特征图输入缓存器容量、特征图输入缓存器带宽、特征图输入缓存器分组数量、卷积核缓存器容量、卷积核缓存器带宽、卷积核缓存器分组数量、特征图输出缓存器容量、特征图输出缓存器带宽、特征图输出缓存器分组数量、外部存储设备容量、外部存储设备带宽、外部存储设备分组数量、通道切换单元容量、通道切换单元带宽、通道切换单元数量、处理引擎单元PE数量、处理引擎单元PE种类、处理引擎单元PE连接方式、处理引擎单元PE计算延迟。
实际应用中,确定出的调度策略包括的划分方式,需满足以下条件:
划分后的输入特征图分块的尺寸小于或等于特征图输入缓存器容量;
划分后的卷积核分块的尺寸小于或等于卷积核缓存器容量;
输出的特征图分块的尺寸小于或等于特征图输出缓存器容量;
计算出的中间计算结果数据分块的尺寸,小于或等于通道切换单元容量的总和;
从外部存储设备读取输入特征图分块的时间与读取卷积核分块的时间的差值属于预定取值范围,目的是平衡输入特征图分块数据的读取时间和卷积核分块数据的读取时间,以提升神经网络处理器的处理速度。本领域技术人员可以根据实际情况对预定取值范围进行设定,本申请实施例对此不作限定。
本申请实施例中,确定出的调度策略包括以下至少一项:输入特征图分块划分的方式、卷积核分块划分的方式、输出特征图分块划分的方式。
其中,输入特征图分块划分的方式,包括以下至少一项:输入特征图分块划分的宽度、高度、通道数量、批次大小、读取地址;
卷积核分块划分的方式,包括以下至少一项:卷积核分块划分的宽度、高度、通道数量、个数、卷积横向步长和纵向步长、分组数量、膨胀率、读取地址;
输出特征图分块划分的方式,包括以下至少一项:输出特征图分块划分的宽度、高度、通道数量、批次大小、写入地址。
在确定出相应的调度策略后,在步骤S203中,根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作,具体的调度控制过程将在后续实施例中进行介绍。
本申请实施例中,基于神经网络处理器配置参数,可以减小神经网络处理器选择调度策略的范围,便于神经网络处理器根据预测的可用带宽情况,依据神经网络的计算参数来实时调整存储器以及处理引擎单元阵列的调度策略,提高神经网络处理器的处理效率。
实施例四
本申请实施例在实施例一至实施例三的基础上,提供了如实施例四所示的一种可能的实现方式,本申请实施例中,带宽信息包括但不限于以下任一种:预测可用带宽信息、历史使用带宽信息。
步骤S202可以但不限于以下任一种方式实现:
(1)根据神经网络的计算参数以及带宽信息,通过预建立的深度学习模型,确定相应的调度策略。
作为示例地,深度学习模型包括至少一个选择神经网络,如图6所示,神经网络包括至少一层输入节点、至少一层输出节点和至少一层隐含节点。
其中,该选择神经网络的输入数据可以包括神经网络的计算参数以及预测可用带宽信息。
或者,该选择神经网络的输入数据可以包括神经网络的计算参数以及历史使用带宽信息。
或者,该选择神经网络的输入数据可以包括神经网络的计算参数以及系统状态参数。
或者,该选择神经网络的输入数据可以包括神经网络的计算参数、预测可用带宽信息以及神经网络处理器配置参数。
或者,该选择神经网络的输入数据可以包括神经网络的计算参数、历史使用带宽信息以及神经网络处理器配置参数。
或者,该选择神经网络的输入数据可以包括神经网络的计算参数、系统状态参数以及神经网络处理器配置参数。
该选择神经网络的输出数据可以包括划分后的输入特征图分块的高度、划分后的输入特征图分块的宽度、划分后的输入特征图分块的通道数目、划分后的卷积核分块的高度、划分后的卷积核的高度、划分后的卷积核的高度等。
进一步地,该选择神经网络的训练方法可以采用误差反向传播算法等。实际应用中,该选择神经网络可以包含长短期记忆(Long Short-Term Memory)网络结构,如图7所示,Xt为上一层神经网络节点输出的数据,ht为输出到下一层神经网络节点的数据,ht-1为上一次神经网络计算该节点输出到下一层神经网络节点的数据,Ct-1为上一次神经网络计算该神经网络节点的节点状态数据,Ct为该神经网络节点的节点状态数据,该选择神经网络中也可以包含循环神经网络、卷积神经网络、全连接神经网络、池化、激活、归一化、自组织映射等常用网络结构。
(2)根据神经网络的计算参数以及预测可用带宽信息,基于预设的调度策略库,确定相应的调度策略。
对于静态神经网络,可以在程序编译或第一次运行时,确定神经网络的计算参数,生成预设的调度策略库。在神经网络处理器执行运算时,根据预测可用带宽信息,确定相应的调度策略。
(3)根据神经网络的计算参数,确定各个调度策略对应的数据存取量,并根据预测可用带宽信息以及确定得到的各个调度策略对应的数据存取量,确定相应的调度策略。
具体而言,确定得到的数据存取量包括以下至少一项:
存储器从外部存储设备读取的特征图输入数据量;
存储器从外部存储设备读取的卷积核数据量;
存储器输出到外部存储设备的特征图输出数据量;
那么,根据预测可用带宽信息以及确定得到的各个调度策略对应的数据存取量,确定相应的调度策略,具体包括:
当预测可用带宽信息小于或等于第一阈值时,将特征图输入数据量小于或等于第二阈值的调度策略,确定为相应的调度策略;
例如,本领域技术人员可以根据实际情况对第二阈值进行设置,以实现将各个调度策略中特征图输入数据量最小的调度策略,确定为相应的调度策略。
因为若片上缓存器从外部存储设备读取的特征图输入数据量足较小,则不会因为外部存储设备可用带宽和/或总线可用带宽较小而造成额外的延迟。
该排序方式适用于预测的外部存储设备可用带宽和/或总线可用带宽较小时,通过选择合适的调度策略,降低神经网络处理器对外部存储设备和/或总线的需求,降低功耗,提高处理速度,减小处理延迟。
当预测可用带宽信息大于或等于第三阈值时,将特征图输入数据量、卷积核数据量的总量或特征图输入数据量、卷积核数据量、特征图输出数据量的总量小于或等于第四阈值的调度策略,确定为相应的调度策略。
例如,本领域技术人员可以根据实际情况对第四阈值进行设置,以实现将各个调度策略中特征图输入数据量、卷积核数据量的总量或特征图输入数据量、卷积核数据量、特征图输出数据量的总量最小的调度策略,确定为相应的调度策略。
实际应用中,本领域技术人员可以根据实际情况对第一阈值和第三阈值进行设置,一般情况下,第三阈值大于或等于第一阈值。
因为若片上缓存器与外部存储设备直接读写的特征图输入数据和卷积核数据总量较小或特征图输入数据、卷积核数据和特征图输出数据总量较小,则可以显著地降低功耗,提高处理速度。
该排序方式适用于预测的外部存储设备可用带宽和/或总线可用带宽较大时,通过选择合适的调度策略,可以充分利用外部存储设备带宽和/或总线带宽,降低功耗,提高处理速度。
本发明实施例即可应用实施例二中如图3a或3b所示的电路系统对神经网络计算时所需的数据在外部存储设备中进行存储。那么,确定各个调度策略对应的数据存取量,就需要包括确定以下至少一项:
存储器从外部存储设备1读取的特征图输入数据量1,从外部存储设备2读取的特征图输入数据量2;
存储器从外部存储设备1读取的卷积核数据量1,从外部存储设备2读取的卷积核数据量2;
对不同的外部存储设备分别预测可用带宽信息,并分别设置相应的阈值。
(4)根据神经网络的计算参数以及预测可用带宽信息,确定各个调度策略对应的耗时,并根据确定得到的各个调度策略对应的耗时,确定相应的调度策略。
实际应用中,可以根据神经网络的计算参数,确定各个调度策略对应的数据存取量;再根据预测可用带宽信息以及确定得到的数据存取量,确定各个调度策略对应的耗时。
具体而言,确定得到的耗时包括以下至少一项:
存储器从外部存储设备读取特征图输入数据的耗时;
存储器从外部存储设备读取卷积核数据的耗时;
存储器将特征图输出数据量输出到外部存储设备的耗时;
那么,根据确定得到的各个调度策略对应的耗时,确定相应的调度策略,包括:
确定各个调度策略对应的读取特征图输入数据的耗时与读取卷积核数据的耗时两项中的较大值;将所述各个调度策略对应的较大值小于或等于第五阈值中数值最小的较大值对应的调度策略,确定为相应的调度策略。
这样,可以选择出从外部存储设备读取数据所需时间最短的调度方案,以提高神经网络处理器的处理速度。
本发明实施例即可应用实施例二中如图3a或3b所示的电路系统对神经网络计算时所需的数据在外部存储设备中进行存储。那么,确定各个调度策略对应的耗时,就需要包括确定以下至少一项:
存储器从外部存储设备1读取特征图输入数据的耗时1,从外部存储设备2读取特征图输入数据的耗时2;
存储器从外部存储设备1读取卷积核数据的耗时1,从外部存储设备2读取卷积核数据的耗时2;
存储器从外部存储设备1读取数据的总耗时,为读取特征图输入数据的耗时1与读取卷积核数据的耗时1之和。
存储器从外部存储设备2读取数据的总耗时,为读取特征图输入数据的耗时2与读取卷积核数据的耗时2之和。
各个调度策略对应耗时,为存储器从外部存储设备1读取数据的总耗时与存储器从外部存储设备2读取数据的总耗时两项中的较大值。
本申请实施例中,确定出的调度策略包括以下至少一项:输入特征图分块划分的方式、卷积核分块划分的方式、输出特征图分块划分的方式。
其中,输入特征图分块划分的方式,包括以下至少一项:输入特征图分块划分的宽度、高度、通道数量、批次大小、读取地址;
卷积核分块划分的方式,包括以下至少一项:卷积核分块划分的宽度、高度、通道数量、个数、卷积横向步长和纵向步长、分组数量、膨胀率、读取地址;
输出特征图分块划分的方式,包括以下至少一项:输出特征图分块划分的宽度、高度、通道数量、批次大小、写入地址。
在确定出相应的调度策略后,在步骤S203中,根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作,具体的调度控制过程将在后续实施例中进行介绍。
本申请实施例中,根据带宽情况来实时确定存储器以及处理引擎单元阵列的调度策略,提高神经网络处理器的处理效率。
实施例五
本申请实施例在实施例一至实施例四的基础上,提供了如实施例五所示的一种可能的实现方式,其中,
为了更清楚地说明上述过程,以图8所示的输入特征图和图9所示的卷积核计算处理过程中确定出的两种调度策略的具体调度过程(参见下述实施例5.1和实施例5.2)为例进行介绍。
其中,实施例5.1所示的调度过程对应的调度策略除了可能通过实施例四中的深度学习模型或者调度策略库确定,还可能根据预测出的可用外部存储设备可用带宽和/或总线可用带宽小于或等于第一阈值而确定的。
而实施例5.2所示的调度过程对应的调度策略除了可能通过实施例四中的深度学习模型或者调度策略库确定,还可能根据预测出的可用外部存储设备可用带宽和/或总线可用带宽大于或等于第三阈值而确定的。
具体而言,如图8所示,输入特征图的行数为7、列数为7、通道数为3、批次大小为1。
如图9所示,单个卷积核的行数为2、列数为2、通道数为3,一组卷积核由6个同样尺寸的卷积核组成,卷积核的横向步长和纵向步长均为1,填充数量为0。
如图10所示,经过计算处理后,输出特征图行数为6、列数为6、通道数为6、批次大小为1。
假设特征图输入缓存器的容量可以存储27个输入特征图元素,卷积核缓存器的容量可以存储12个卷积核元素,特征图输出缓存器的容量可以存储36个输出特征图元素。
那么,根据这些神经网络的计算参数、神经网络处理器配置参数以及预测可用带宽信息,实施例5.1确定出的调度策略中,包括的特征图划分方式如图11所示:将输入特征图分为9部分,根据卷积神经网络的特性,相邻的两部分特征图有部分重复的元素。第1部分输入特征图共27个输入特征图元素,包括第1通道中从x111至x133,高×宽为3×3的矩形区域内的9个元素,第2通道中从x211至x233,高×宽为3×3的矩形区域内的9个元素,第3通道中从x311至x333,高×宽为3×3的矩形区域内的9个元素。第2部分输入特征图包括第1通道中从x113至x135,高×宽为3×3的矩形区域内的9个元素,第2通道中从x213至x235,高×宽为3×3的矩形区域内的9个元素,第3通道中从x313至x335,高×宽为3×3的矩形区域内的9个元素。剩余7分部输入特征图以此类推。
以及,实施例5.1确定出的调度策略中,包括的卷积核划分方式如图9所示:将卷积核分为6部分,第1部分卷积核共12个卷积核元素,包括第1通道中从k1111至k1122,高×宽为2×2的矩形区域内的4个元素,第2通道中从k1211至k1222,高×宽为2×2的矩形区域内的4个元素,第3通道中从k1311至k1322,高×宽为2×2的矩形区域内的4个元素。第2部分卷积核包括第1通道中从k2111至k2122,高×宽为2×2的矩形区域内的4个元素,第2通道中从k2211至k2222,高×宽为2×2的矩形区域内的4个元素,第3通道中从k2311至k2322,高×宽为2×2的矩形区域内的4个元素。剩余4分部卷积核以此类推。
具体而言,步骤S203具体包括以下至少之一:
根据确定出的调度策略包括的与特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备执行相应读取操作;
根据确定出的调度策略包括的与卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备执行相应读取操作;
根据确定出的调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,并控制特征图输出缓存器输出计算结果至外部存储设备。
即根据确定出的这种调度策略,具体调度过程为:
1)基于上述特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备读取第1部分输入特征图。
2)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第1部分卷积核。
3)根据确定出的调度策略,控制处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的27个输入特征图元素与卷积核缓存器中的第1部分卷积核的12个卷积核元素进行卷积计算,得到如图12所示的输出特征图的4个元素,包括第1通道中从y111至y122,高×宽为2×2的矩形区域内的4个元素。
4)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第2部分卷积核。
5)根据确定出的调度策略,处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的27个输入特征图元素与卷积核缓存器中的第2部分卷积核的12个卷积核元素进行卷积计算,得到如图12所示的输出特征图的4个元素,包括第2通道中从y211至y222,高×宽为2×2的矩形区域内的4个元素。
6)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第3部分卷积核。
7)根据确定出的调度策略,处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的27个输入特征图元素与卷积核缓存器中的第3部分卷积核的12个卷积核元素进行卷积计算,得到如图12所示的输出特征图的4个元素,包括第3通道中从y311至y322,高×宽为2×2的矩形区域内的4个元素。
8)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第4部分卷积核。
9)根据确定出的调度策略,处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的27个输入特征图元素与卷积核缓存器中的第4部分卷积核的12个卷积核元素进行卷积计算,得到如图12所示的输出特征图的4个元素,包括第4通道中从y411至y422,高×宽为2×2的矩形区域内的4个元素。
10)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第5部分卷积核。
11)根据确定出的调度策略,处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的27个输入特征图元素与卷积核缓存器中的第5部分卷积核的12个卷积核元素进行卷积计算,得到如图12所示的输出特征图的4个元素,包括第5通道中从y511至y522,高×宽为2×2的矩形区域内的4个元素。
12)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第6部分卷积核。
13)根据确定出的调度策略,处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的27个输入特征图元素与卷积核缓存器中的第6部分卷积核的12个卷积核元素进行卷积计算,得到如图12所示的输出特征图的4个元素,包括第6通道中从y611至y622,高×宽为2×2的矩形区域内的4个元素。
14)根据确定出的调度策略,控制特征图输出缓存器将存储的24个特征图输出元素写回外部存储设备,包括第1通道中从y111至y122,高×宽为2×2的矩形区域内的4个元素,第2通道中从y211至y222,高×宽为2×2的矩形区域内的4个元素,第3通道中从y311至y322,高×宽为2×2的矩形区域内的4个元素,第4通道中从y411至y422,高×宽为2×2的矩形区域内的4个元素,第5通道中从y511至y522,高×宽为2×2的矩形区域内的4个元素,第6通道中从y611至y622,高×宽为2×2的矩形区域内的4个元素。
15)基于上述特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备读取第2部分输入特征图。
16)根据确定出的调度策略,控制卷积核缓存器和处理引擎单元阵列重复执行2)至13)步相应的过程:依次从外部存储设备读取第1部分至第6部分卷积核,与特征图输入缓存器中的元素进行卷积计算,得到24个特征输出图元素包括第1通道中从y113至y124,高×宽为2×2的矩形区域内的4个元素,第2通道中从y213至y224,高×宽为2×2的矩形区域内的4个元素,第3通道中从y313至y324,高×宽为2×2的矩形区域内的4个元素,第4通道中从y413至y424,高×宽为2×2的矩形区域内的4个元素,第5通道中从y513至y524,高×宽为2×2的矩形区域内的4个元素,第6通道中从y613至y624,高×宽为2×2的矩形区域内的4个元素。控制特征图输出缓存器将存储的24个特征图输出元素写回外部存储设备。
17)根据确定出的调度策略,控制特征图输入缓存器、卷积核缓存器、处理引擎单元阵列和特征图输出缓存器重复15)至16)步相应的过程:依次从外部存储设备读取第3部分至第9部分输入特征图,存储在特征图输入缓存器中。依次从外部存储设备读取第1部分至第6部分卷积核,存储在卷积核缓存器中。处理引擎单元阵列将特征图输入缓存器中的元素与卷积核缓存器中的元素进行卷积计算,将计算结果存储在特征图输出缓存器中。控制特征图输出缓存器将存储的特征图输出元素写回外部存储设备。
至此,整个卷积计算过程完成。
实施例5.2中,继续如图5所示,神经网络处理器中的存储器还可以包括与至少一个处理引擎单元PE一一对应连接的通道切换单元;通道切换单元用于存储处理引擎单元阵列进行计算操作的中间计算结果数据。
具体而言,当存储器包括通道切换单元时,根据确定出的调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,包括:
在执行至少两级计算操作时,根据确定出的调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,得到中间计算结果数据,并将中间计算结果数据存储于与控制处理引擎单元相应的通道切换单元;
控制处理引擎单元阵列从所述通道切换单元中获取各级计算操作得到的中间计算结果数据,并依据各级计算操作得到获取到的中间计算结果数据,生成计算结果。
实施例5.2中,根据这些神经网络的计算参数、神经网络处理器配置参数以及预测可用带宽信息,确定出的调度策略中,包括的特征图划分方式如图13所示:将输入特征图分为9部分,根据卷积神经网络的特性,相邻的两部分特征图有部分重复的元素。
第1部分输入特征图共21个输入特征图元素,包括第1通道中从x111至x137,高×宽为3×7的矩形区域内的21个元素。
第2部分输入特征图包括第2通道中从x211至x237,高×宽为3×7的矩形区域内的21个元素。
第3部分输入特征图包括第3通道中从x311至x337,高×宽为3×7的矩形区域内的21个元素。
第4部分输入特征图包括第1通道中从x131至x157,高×宽为3×7的矩形区域内的21个元素。
第5部分输入特征图包括第2通道中从x231至x257,高×宽为3×7的矩形区域内的21个元素。
第6部分输入特征图包括第3通道中从x331至x357,高×宽为3×7的矩形区域内的21个元素。
第7部分输入特征图包括第1通道中从x151至x177,高×宽为3×7的矩形区域内的21个元素。
第8部分输入特征图包括第2通道中从x251至x277,高×宽为3×7的矩形区域内的21个元素。
第9部分输入特征图包括第3通道中从x351至x377,高×宽为3×7的矩形区域内的21个元素。
以及,实施例5.2确定出的调度策略中,包括的卷积核划分方式如图14所示:将卷积核分为6部分。
第1部分卷积核共12个卷积核元素,包括第1个卷积核的第1通道中从k1111至k1122,高×宽为2×2的矩形区域内的4个元素。第2个卷积核的第1通道中从k2111至k2122,高×宽为2×2的矩形区域内的4个元素,第3个卷积核的第1通道中从k3111至k3122,高×宽为2×2的矩形区域内的4个元素。
第2部分卷积核包括第1个卷积核的第2通道中从k1211至k1222,高×宽为2×2的矩形区域内的4个元素,第2个卷积核的第2通道中从k2211至k2222,高×宽为2×2的矩形区域内的4个元素,第3个卷积核的第2通道中从k3211至k3222,高×宽为2×2的矩形区域内的4个元素。
第3部分卷积核包括第1个卷积核的第3通道中从k1311至k1322,高×宽为2×2的矩形区域内的4个元素,第2个卷积核的第3通道中从k2311至k2322,高×宽为2×2的矩形区域内的4个元素,第3个卷积核的第3通道中从k3311至k3322,高×宽为2×2的矩形区域内的4个元素。
剩余3分部卷积核以此类推。
根据确定出的这种调度策略,具体调度过程为:
1)基于上述特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备读取第1部分输入特征图。
2)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第1部分卷积核。
3)根据确定出的调度策略,控制处理引擎单元阵列对特征图输入缓存器中的第1部分输入特征图的21个输入特征图元素与卷积核缓存器中的第1部分卷积核的12个卷积核元素进行卷积计算,得到36个输出特征图元素的中间计算结果,分散存储在通道切换单元中,如图15所示,包括输出特征图第1通道中从y111至y126,高×宽为2×6的矩形区域内的12个第1部分中间计算结果,第2通道中从y211至y226,高×宽为2×6的矩形区域内的12个第1部分中间计算结果,第3通道中从y311至y326,高×宽为2×6的矩形区域内的12个第1部分中间计算结果。
4)基于上述特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备读取第2部分输入特征图。
5)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第2部分卷积核。
6)根据确定出的调度策略,控制处理引擎单元阵列对特征图输入缓存器中的第2部分输入特征图的21个输入特征图元素与卷积核缓存器中的第2部分卷积核的12个卷积核元素进行卷积计算,得到36个输出特征图元素的中间计算结果,分散存储在通道切换单元中,如图15所示,包括输出特征图第1通道中从y111至y126,高×宽为2×6的矩形区域内的12个第2部分中间计算结果,第2通道中从y211至y226,高×宽为2×6的矩形区域内的12个第2部分中间计算结果,第3通道中从y311至y326,高×宽为2×6的矩形区域内的12个第2部分中间计算结果。
7)基于上述特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备读取第3部分输入特征图。
8)基于上述卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备读取第3部分卷积核。
9)根据确定出的调度策略,控制处理引擎单元阵列对特征图输入缓存器中的第3部分输入特征图的21个输入特征图元素与卷积核缓存器中的第3部分卷积核的12个卷积核元素进行卷积计算,并与通道切换单元中存储的第1部分和第2部分中间计算结果相加,得到36个特征图输出数据,存储在特征图输出缓存器中,如图15所示,包括输出特征图第1通道中从y111至y126,高×宽为2×6的矩形区域内的12个元素,第2通道中从y211至y226,高×宽为2×6的矩形区域内的12个元素,第3通道中从y311至y326,高×宽为2×6的矩形区域内的12个元素。
10)根据确定出的调度策略,控制特征图输出缓存器将存储的36个特征图输出元素写回外部存储设备。
11)重复执行1)至10)步相应的过程,控制特征图输入缓存器在依次从外部存储设备读取第4部分至第6部分输入特征图。控制卷积核缓存器依次从外部存储设备读取第1部分至第3部分卷积核。控制处理引擎单元阵列对特征图输入缓存器中的输入特征图元素与卷积核缓存器中的卷积核元素进行卷积计算,并通过通道切换单元读写中间计算结果,最终计算得到36个特征图输出数据,存储在特征图输出缓存器中,如图15所示,包括输出特征图第1通道中从y131至y146,高×宽为2×6的矩形区域内的12个元素,第2通道中从y231至y246,高×宽为2×6的矩形区域内的12个元素,第3通道中从y331至y346,高×宽为2×6的矩形区域内的12个元素。据确定出的调度策略,控制特征图输出缓存器将存储的36个特征图输出元素写回外部存储设备。
12)重复执行1)至10)步相应的过程,控制特征图输入缓存器在依次从外部存储设备读取第7部分至第9部分输入特征图。控制卷积核缓存器依次从外部存储设备读取第1部分至第3部分卷积核。控制处理引擎单元阵列对特征图输入缓存器中的输入特征图元素与卷积核缓存器中的卷积核元素进行卷积计算,并通过通道切换单元读写中间计算结果,最终计算得到36个特征图输出数据,存储在特征图输出缓存器中,如图15所示,包括输出特征图第1通道中从y151至y166,高×宽为2×6的矩形区域内的12个元素,第2通道中从y251至y266,高×宽为2×6的矩形区域内的12个元素,第3通道中从y351至y366,高×宽为2×6的矩形区域内的12个元素。据确定出的调度策略,控制特征图输出缓存器将存储的36个特征图输出元素写回外部存储设备。
至此,输入特征图与第1个至第3个卷积核的计算完成。
13)重复执行1)至12)步相应的过程,将输入特征图与第4个至第6个卷积核进行计算,得到第4通道至第6通道输出特征图数据,包括输出特征图第4通道中从y411至y466,高×宽为6×6的矩形区域内的36个元素,第5通道中从y511至y566,高×宽为6×6的矩形区域内的36个元素,第6通道中从y611至y666,高×宽为6×6的矩形区域内的36个元素,并写回外部存储设备。
至此,整个卷积计算过程完成。
其中,实施例5.1所示的整个卷积计算过程中,特征图输入缓存器依次从外部存储设备读取第1部分至第9部分特征图输入,每次读取27个元素,共计243个元素。卷积核缓存器依次从外部存储设备读取第1部分至第6部分卷积核数据,共读取9遍,每遍读取72个元素,共计648个元素。特征图输出缓存器向外部存储设备写入特征图输出数据,共计216个元素。
实施例5.2所示的整个卷积计算过程中,特征图输入缓存器依次从外部存储设备读取第1至第9部分特征图输入,共读取2遍,每遍读取189个元素,共计378个元素。卷积核缓存器依次从外部存储设备读取第1个至第3个卷积核和第4至第6个卷积核数据,共读取3遍,每遍读取72个元素,共计216个元素。特征图输出缓存器向外部存储设备写入特征图输出数据,共计216个元素。
可以看到,实施例5.1所示的调度过程中,特征图输入缓存器从外部存储设备读取的特征图输入数据量较小,应用于带宽较小的情况下,不会因为外部存储设备可用带宽和/或总线可用带宽较小而造成额外的延迟。
而实施例5.2所示的调度策略中,特征图输入缓存器、和卷积核缓存器或特征图输入缓存器、卷积核缓存器和特征图输出缓存器与外部存储设备直接读写的特征图输入数据和卷积核数据总量较小或特征图输入数据、卷积核数据和特征图输出数据总量较小,应用于带宽较大的情况下,可以显著地降低功耗,提高处理速度。
实施例六
本申请实施例在实施例一至实施例五任一实施例的基础上,以实施例六为例,对实施例四中的根据确定得到的各个调度策略对应的耗时来确定调度策略的方式进行介绍。下面的描述中,1k=1024,1M=1024k,1G=1024M。
作为示例地,输入特征图行数为128、列数为128、通道数为512、批次大小为1。单个卷积核的行数为3、列数为3、通道数为512,一组卷积核由1024个同样尺寸的卷积核组成。卷积核的横向步长和纵向步长均为1,填充数量为2。输出特征图行数为128、列数为128、通道数为1024、批次大小为1。特征图输入缓存器的容量可以存储128k个输入特征图元素。卷积核缓存器的容量可以存储64k个卷积核元素。假设输入特征图、卷积核、输出特征图每个元素大小为2字节。
结合实施例四,步骤S202中,可以根据神经网络的计算参数,确定各个调度策略对应的数据存取量,具体地,
第一种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,包括从第1通道至第512通道,高×宽为16×16的矩形区域内的元素。根据该调度策略,需要依次读取第1个至第1024个卷积核,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据1遍,共计8M个元素,容量16M字节。卷积核缓存器从外部存储设备读取卷积核数据64遍,共计288M个元素,容量576M字节。
第二种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括256个通道、高×宽为16×32的矩形区域内的元素。将每个卷积核分为2部分,每部分包含256个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据2遍,共计16M个元素,容量32M字节。卷积核缓存器从外部存储设备读取卷积核数据32遍,共计144M个元素,容量288M字节。
第三种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括171个通道、高×宽为16×48的矩形区域内的元素。将每个卷积核分为3部分,每部分包含171个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据3遍,共计24M个元素,容量48M字节。卷积核缓存器从外部存储设备读取卷积核数据24遍,共计108M个元素,容量216M字节。
第四种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括128个通道、高×宽为16×64的矩形区域内的元素。将每个卷积核分为4部分,每部分包含128个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据4遍,共计32M个元素,容量64M字节。卷积核缓存器从外部存储设备读取卷积核数据16遍,共计72M个元素,容量144M字节。
第五种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括86个通道、高×宽为32×48的矩形区域内的元素。将每个卷积核分为6部分,每部分包含86个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据6遍,共计48M个元素,容量96M字节。卷积核缓存器从外部存储设备读取卷积核数据12遍,共计54M个元素,容量108M字节。
第六种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括64个通道、高×宽为16×128的矩形区域内的元素。将每个卷积核分为8部分,每部分包含64个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据8遍,共计64M个元素,容量128M字节。卷积核缓存器从外部存储设备读取卷积核数据8遍,共计36M个元素,容量72M字节。
第七种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括43个通道、高×宽为48×64的矩形区域内的元素。将每个卷积核分为12部分,每部分包含43个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据12遍,共计96M个元素,容量192M字节。卷积核缓存器从外部存储设备读取卷积核数据6遍,共计27M个元素,容量54M字节。
第八种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括32个通道、高×宽为32×128的矩形区域内的元素。将每个卷积核分为16部分,每部分包含32个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据16遍,共计128M个元素,容量256M字节。卷积核缓存器从外部存储设备读取卷积核数据4遍,共计18M个元素,容量36M字节。
第九种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括22个通道、高×宽为48×128的矩形区域内的元素。将每个卷积核分为24部分,每部分包含22个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据24遍,共计192M个元素,容量384M字节。卷积核缓存器从外部存储设备读取卷积核数据3遍,共计13.5M个元素,容量27M字节。
第十种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括16个通道、高×宽为64×128的矩形区域内的元素。将每个卷积核分为32部分,每部分包含16个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据32遍,共计256M个元素,容量512M字节。卷积核缓存器从外部存储设备读取卷积核数据2遍,共计9M个元素,容量18M字节。
第十一种调度策略,将输入特征图分为64部分,每部分包含128k个输入特征图元素,每部分包括8个通道、高×宽为128×128的矩形区域内的元素。将每个卷积核分为64部分,每部分包含8个通道。根据该调度策略,需要依次读取第1个至第1024个卷积核的每一部分,与输入特征图进行卷积计算,特征图输出缓存器中得到输出特征图数据,并写回外部存储设备中,如此重复读取输入特征图的每一部分,完成整个卷积计算。因此,这种调度策略中,特征图输入缓存器从外部存储设备读取输入特征图数据64遍,共计512M个元素,容量1024M字节。卷积核缓存器从外部存储设备读取卷积核数据1遍,共计4.5M个元素,容量9M字节。
结合实施例四,步骤S202中,可以根据预测可用带宽信息以及确定得到的数据存取量,确定各个调度策略对应的耗时,其中,对于本申请实施例采用的步骤S201中确定带宽信息的具体方式可参见实施例二,在此不再赘述。具体地,
例如,输入特征图数据读取可用带宽为10.5GB/s,卷积核数据读取可用带宽为10.5GB/s,则如图16所示,根据预测可用带宽信息和上述第一种至第十一种调度策略对应的数据存取量,读取输入特征图数据所需时间分别为1.52ms、3.05ms、4.57ms、6.10ms、9.14ms、12.19ms、18.29ms、24.38ms、36.57ms、48.76ms、97.52ms。读取卷积核数据所需时间分别为54.86ms、27.43ms、20.57ms、13.71ms、10.29ms、6.86ms、5.14ms、3.43ms、2.57ms、1.71ms、0.86ms。
步骤S202中,确定各个调度策略对应的读取特征图输入数据的耗时与读取卷积核数据的耗时两项中的较大值,则上述第一种至第十一种调度策略对应的较大值分别为54.86ms、27.43ms、20.57ms、13.71ms、10.29ms、12.19ms、18.29ms、24.38ms、36.57ms、48.76ms、97.52ms。
本申请实施例中,步骤S202中,可以选择各个调度策略对应的较大值中耗时最小的调度策略,即上述第五种调度策略。
又例如,如果输入特征图数据读取可用带宽为6.0GB/s,卷积核数据读取可用带宽为10.5GB/s,则如图17所示,根据预测可用带宽信息和上述第一种至第十一种调度策略对应的数据存取量,读取输入特征图数据所需时间分别为2.67ms、5.33ms、8.00ms、10.67ms、16.00ms、21.33ms、32.00ms、42.67ms、64.00ms、85.33ms、170.67ms。读取卷积核数据所需时间分别为54.86ms、27.43ms、20.57ms、13.71ms、10.29ms、6.86ms、5.14ms、3.43ms、2.57ms、1.71ms、0.86ms。
步骤S202中,确定各个调度策略对应的读取特征图输入数据的耗时与读取卷积核数据的耗时两项中的较大值,则上述第一种至第十一种调度策略对应的较大值分别为54.86ms、27.43ms、20.57ms、13.71ms、16.00ms、21.33ms、32.00ms、42.67ms、64.00ms、85.33ms、170.67ms。
本申请实施例中,步骤S202中,可以选择各个调度策略对应的较大值中耗时最小的调度策略,即上述第四种调度策略。
另一种可行的方式中,结合实施例四,步骤S202中,对于静态神经网络,可以在程序编译或第一次运行时,确定神经网络的计算参数,生成预设的调度策略库。在神经网络处理器执行运算时,根据预测可用带宽信息,确定相应的调度策略,具体的,
例如,根据神经网络的计算参数生成预设的调度策略库如图26所示,可以包括以下信息:
输入特征图数据读取可用带宽低于0.58GB/s时,第一种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于0.58GB/s,低于1.75GB/s时,第二种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于1.75GB/s,低于3.11GB/s时,第三种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于3.11GB/s,低于7.00GB/s时,第四种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于7.00GB/s,低于12.44GB/s时,第五种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于12.44GB/s,低于28.00GB/s时,第六种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于28.00GB/s,低于49.78GB/s时,第七种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于49.78GB/s,低于112.00GB/s时,第八种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于112.00GB/s,低于199.11GB/s时,第九种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于199.11GB/s,低于597.33GB/s时,第十种调度策略为优选策略;
输入特征图数据读取可用带宽高于或等于597.33GB/s时,第十一种调度策略为优选策略;
因此,当输入特征图数据读取可用带宽为10.5GB/s,根据调度策略库,属于7.00GB/s至12.44GB/s范围内,应选择第五种调度策略;
当输入特征图数据读取可用带宽为6.0GB/s,根据调度策略库,属于3.11GB/s至7.00GB/s范围内,应选择第四种调度策略。
随后,在步骤S203中,根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作。
具体调度过程可参见实施例五的示例进行适度调整,在此不再赘述。
神经网络处理器根据选择出的调度策略来对控制存储器以及处理引擎单元阵列进行调度以执行相应操作,能够有效提高神经网络处理器的处理速度。
实施例七
本申请实施例在实施例一至实施例六任一实施例的基础上,提供了基于通道切换单元的可能的实现方式,其中,如图5所示:
神经网络处理器包括存储器、以及由至少一个处理引擎单元PE组成的处理引擎单元阵列;神经网络处理器中的存储器可以包括与至少一个处理引擎单元PE一一对应连接的通道切换单元,在步骤S203中,根据确定出的调度策略,控制处理引擎单元阵列将进行计算操作的得到的中间计算结果数据存储至通道切换单元;和/或根据确定出调度策略,控制处理引擎单元阵列从所述通道切换单元中获取存储的中间计算结果数据,以使得控制处理引擎单元阵列生成计算结果。其中,对于本申请实施例采用的步骤S201中确定带宽信息的方式以及步骤S202中根据带宽信息确定调度策略的方式可参见上述实施例,在此不再赘述。
本申请实施例中,处理引擎单元PE和通道切换单元可以是相互独立的单元,或者通道切换单元也可以是处理引擎单元PE的一部分,当通道切换单元是处理引擎单元PE的一部分时,处理引擎单元PE包括通道切换单元和计算单元。其中,处理引擎单元PE对应的通道切换单元为计算单元提供计算数据,并存储计算中间结果数据。
其中,每组通道切换单元与处理引擎单元PE的结构框图如图18所示,每组通道切换单元与处理引擎单元PE包括:处理引擎单元PE、通道切换单元、和通道切换单元控制器。
具体地,通道切换单元包括计算中间结果寄存器,该中间结果寄存器既可存储处理引擎单元PE输出的中间计算结果数据,也可以将存储的中间计算结果数据输入到处理引擎单元PE参与运算。通道切换单元和处理引擎单元PE在通道切换单元控制器的控制下执行神经网络的计算操作。
实际应用中,通道切换单元可以应用在多种类型的处理引擎单元阵列所处的神经网络处理器架构中,作为示例地:
(1)如图5所示的神经网络处理器架构,处理引擎单元阵列中处理引擎单元PEx,y从PEx+1,y和/或PEx,y+1获取数据,处理引擎单元PEx,y为处理引擎单元阵列n*m中的任一处理引擎单元,n、m、x和y为正整数,1≤x≤n,1≤y≤m。神经网络处理器中的存储器可以包括与至少一个处理引擎单元PE一一对应连接的通道切换单元,通道切换单元用于存储处理引擎单元阵列进行计算操作的中间计算结果数据。
通道切换单元在这种神经网络处理器架构中的应用参见上述实施例,在此不再赘述。
(2)如图19所示的神经网络处理器架构,处理引擎单元阵列中处理引擎单元PEx,y从PEx+1,y、PEx,y-1、PEx+1,y-1的至少一项中获取数据,处理引擎单元PEx,y为处理引擎单元阵列n*m中的任一处理引擎单元,n、m、x和y为正整数,1≤x≤n,1≤y≤m。神经网络处理器中的存储器可以包括与至少一个处理引擎单元PE一一对应连接的通道切换单元,通道切换单元用于存储处理引擎单元阵列进行计算操作的中间计算结果数据。
通道切换单元在这种神经网络处理器架构中的应用参见上述实施例,在此不再赘述。此外,这种神经网络处理器架构还可以应用于更多场景,例如采用行固定的方式执行神经网络计算:
如图20所示,第一列和最后一行的处理引擎单元从特征图输入缓存器读取输入特征图数据,每个处理引擎单元固定读取1行输入特征图数据,每个处理引擎单元在每个时钟周期读取1个输入特征图数据。
其中,第一列处理引擎单元从同一时刻开始读取输入特征图数据,最后一行处理引擎单元,每个处理引擎单元比其左侧相邻的处理引擎单元晚一个时钟周期开始读取输入特征图数据。非第一列或最后一行的处理引擎单元,从其左下侧相邻的处理引擎单元读取输入特征图数据,每个时钟周期读取1个输入特征图数据。
第一列的处理引擎单元从卷积核缓存器读取卷积核数据,每个处理引擎单元固定读取1行卷积核数据,每个处理引擎单元在每个时钟周期读取1个卷积核数据。
其中,第一列处理引擎单元从同一时刻开始读取卷积核数据。非第一列的处理引擎单元,从其左侧相邻的处理引擎单元读取卷积核数据,每个时钟周期读取1个卷积核数据。
第一行的处理引擎单元向特征图输出缓存器写入输出特征图数据,每个处理引擎单元固定写入1行输出特征图数据,每个处理引擎单元在每个时钟周期写入1个输出特征图数据。
其中,第一行处理引擎单元,每个处理引擎单元比其左侧相邻的处理引擎单元晚一个时钟周期开始写入输出特征图数据。非第一行的处理引擎单元,向其上侧相邻的处理引擎单元对应连接的通道切换单元写入输出特征图的中间计算结果数据,每个时钟周期写入1个输出特征图的中间计算结果数据。
可选地,神经网络处理器可以包括多个处理引擎单元阵列,每个处理引擎单元阵列都具有上述处理引擎单元阵列相同的结构,配合执行神经网络计算操作。
本申请实施例中,神经网络处理器执行神经网络计算操作,具有更低的功率,适合于对增加电池使用时间有较高要求的移动设备。
(3)如图21所示的神经网络处理器架构,处理引擎单元阵列包括采用一维方式排列的多个处理引擎单元,处理引擎单元包括至少两个乘法器以及至少一个两输入的加法树。神经网络处理器中的存储器可以包括与至少一个处理引擎单元PE一一对应连接的通道切换单元,通道切换单元用于存储处理引擎单元阵列进行计算操作的中间计算结果数据。
通道切换单元在这种神经网络处理器架构中的应用参见上述实施例,在此不再赘述。
本申请实施例中,神经网络处理器可以采用更灵活的方式执行神经网络计算,可以用于神经网络训练和推理,具有高的性能,适合于对性能有较高要求的服务器或云计算使用。
本领域技术人员应能理解上述神经网络处理器架构仅为举例,基于这些范例进行的适当变化也可适用于本申请,故也应包含在本申请保护范围以内。
实施例八
本申请实施例在实施例一至实施例七任一实施例的基础上,还可以包括实施例八所示的方法,其中,
步骤S203中,根据确定出的调度策略,控制存储器以及处理引擎单元PE阵列执行相应操作,可选的控制方法包括有限状态机、动态编译或微指令等方法。下面将以有限状态机为例介绍一种可能的实现方式。
其中,继续如图1所示,执行该神经网络的神经网络处理器还包括主控制器、直接内存存取控制器、控制和状态寄存器。
可选地,神经网络处理器还可以包括子控制器,与处理引擎单元相连,用于对主控制器的指令进行解析并控制其所属的处理引擎单元与存储器执行相应的指令。
如图22所示,为本申请实施例中控制处理引擎单元和通道切换单元执行操作的方法示例。整体流程为:
主控制器:
空闲状态时,主控制器收到卷积操作信号之后则进入卷积操作状态,并向子控制器发出开始信号;
卷积操作状态时,主控制器收到子控制器发出的完成信号,则返回空闲状态;主控制器若没收到子控制器发出的完成信号,则保持卷积操作状态;
池化操作状态时,主控制器的进入和返回条件与卷积操作状态类似。具体地,由子控制器控制神经网络处理器完成池化操作。其中池化操作为人工神经网络专用操作,即在输入特征图数据中,在一定尺寸的窗口范围内,选取窗口内数据的最大值或计算窗口内数据的平均值;计算完成后,移动窗口的位置,并重复进行计算,直至输入特征图数据全部处理完成。
全连接操作状态时,主控制器的进入和返回条件与卷积操作状态类似。具体地,由子控制器控制神经网络处理器完成全连接操作。其中全连接操作为人工神经网络专用操作,即每个输出特征图数据由所有输入特征图数据与一组权重数据加权求和得到,其中每个输出特征图数据均对应一组不同的权重数据。
算数逻辑操作状态时,主控制器的进入和返回条件与卷积操作状态类似。具体地,由子控制器控制神经网络处理器完成算数逻辑操作。其中算数逻辑操作为人工神经网络专用操作,即每个输入特征图数据与一个相同的数据进行相同的算数逻辑操作。其中算术操作为加、减、乘、除等操作中的一种或几种,逻辑操作为与、或、非、异或、等于、不等于、大于、小于等操作中的一种或几种。
乘法操作状态时,主控制器的进入和返回条件与卷积操作状态类似。具体地,由子控制器控制神经网络处理器完成乘法操作。其中乘法操作为人工神经网络专用操作,即每个输入特征图数据与另一组大小尺寸相同的矩阵数据进行乘法预算,包括每个输入特征图数据与自身相乘的平方操作。
矩阵操作状态时,主控制器的进入和返回条件与卷积操作状态类似。具体地,由子控制器控制神经网络处理器完成矩阵操作。其中矩阵操作为人工神经网络专用操作,即每个输入特征图数据矩阵与另一个数据矩阵进行矩阵运算。其中矩阵预算为矩阵相加、矩阵相减、矩阵相乘等操作中的一种或几种。
其他操作状态时,主控制器的进入和返回条件与卷积操作状态类似。具体地,由子控制器控制神经网络处理器完成其他操作。其中其他操作为人工神经网络专用操作,即每个输入特征图数据进行激活、三角函数、双曲函数、开方、幂指数、对数等操作中的一种或几种。
子控制器:
空闲状态时,子控制器收到开始信号之后则进入初始状态;
初始状态时,子控制器收到上一块计算中间结果读取信号之后则进入通道切换单元读取计算中间结果状态;或者,子控制器收到新输入特征图块信号之后则进入处理引擎单元计算状态;
通道切换单元读取计算结果中间结果状态时,子控制器收到开始计算信号之后,则进入处理引擎单元计算状态;
处理引擎单元计算状态时,子控制器收到计算信号之后,则保持处理引擎单元计算状态;或者,子控制器收到下一个通道信号之后,则进入下一个通道状态;或者,子控制器收到完成信号之后,则进入结束状态;
下一个通道状态时,子控制器收到计算信号之后,则返回处理引擎单元计算状态;或者,子控制器收到存储计算中间结果信号之后,则进入通道切换单元存储计算中间结果状态;或者,子控制器收到完成信号之后,则进入结束状态;
通道切换单元存储计算中间结果状态时,子控制器收到下一个通道计算信号之后,则进入处理引擎单元计算状态;子控制器收到完成信号之后,则进入结束状态;
结束状态时,子控制器向上层主控制器返回计算完成信号。
其中,本申请的核心就在初始状态时,子控制器收到上一块计算中间结果读取信号之后,可以进入通道切换单元读取中间计算结果状态;在下一个通道状态时,子控制器收到存储计算中间结果信号之后,可以进入通道切换单元存储计算中间结果状态;在通道切换单元读取中间计算结果状态时,子控制器收到开始计算信号之后,则进入处理引擎单元计算状态;在通道切换单元存储计算中间结果状态时,子控制器收到下一个通道计算信号之后,则进入处理引擎单元计算状态;或者,子控制器收到完成信号之后,则进入结束状态。
如图23所示,为本申请实施例中控制特征图输入缓存器执行操作的方法示例。此外,控制卷积核缓存器执行操作的方法与该方法示例类似,在此不再单独介绍。整体流程为:
主控制器:
空闲状态时,主控制器收到开始信号之后则进入初始状态;
初始状态时,主控制器收到装载信号之后则进入读取输入特征图状态,并向子控制器发出开始信号;
读取输入特征图状态时,主控制器收到子控制器发出的完成信号,则进入下一块输入特征图状态;主控制器若没收到子控制器发出的完成信号,则保持读取输入特征图状态;
下一块输入特征图状态时,主控制器收到特征图输入缓存器满的信号,则进入等待状态;或者,主控制器收到完成信号,则进入结束状态;或者,主控制器收到读取输入特征图信号,则进入读取输入特征图状态;
等待状态时,主控制器收到特征图输入缓存器非满的信号,则进入读取输入特征图状态;主控制器没收到特征图输入缓存器非满的信号,则保持等待状态;
结束状态时,主控制器返回空闲状态。
子控制器:
空闲状态时,子控制器收到开始信号之后则进入初始状态;
初始状态时,子控制器收到装载信号之后则进入数据读取状态;
数据读取状态时,子控制器收到下一行信号之后,则进入下一行状态;或者,子控制器收到下一个通道信号之后,则进入下一个通道状态;或者,子控制器收到下一个输入特征图信号之后,则进入下一个输入特征图状态;或者,子控制器收到完成信号之后,则进入结束状态;或者,子控制器收到数据读取信号之后,则保持数据读取状态;
下一行状态时,子控制器收到数据读取信号之后,则进入数据读取状态;
下一个通道状态时,子控制器收到数据读取信号之后,则进入数据读取状态;
下一个输入特征图状态时,子控制器收到数据读取信号之后,则进入数据读取状态;
结束状态时,子控制器向上层主控制器返回计算完成信号。
其中,本申请的核心就在数据读取状态时,子控制器分别收到下一行、下一个通道、下一个输入特征图信号之后,可以分别进入下一行、下一个通道、下一个输入特征图状态;当下一行、下一个通道、下一个输入特征图状态时,子控制器将设定新的片外存储器读取地址、字长、步长和片上特征图输入缓存器的存储地址、字长、步长等参数,子控制器收到数据读取信号之后,则返回数据读取状态。
如图24所示,为本申请实施例中控制特征图输出缓存器执行操作的方法示例。整体流程为:
主控制器:
空闲状态时,主控制器收到开始信号之后则进入初始状态;
初始状态时,主控制器收到存储信号之后则进入存储输出特征图状态,并向子控制器发出开始信号;
存储输出特征图状态时,主控制器收到子控制器发出的完成信号,则进入下一块输出特征图状态;主控制器若没收到子控制器发出的完成信号,则保持存储输出特征图状态;
下一块输出特征图状态时,主控制器收到特征图输出缓存器空的信号,则进入等待状态;或者,主控制器收到完成信号,则进入结束状态;或者,主控制器收到存储输出特征图信号,则进入存储输出特征图状态;
等待状态时,主控制器收到特征图输出缓存器非空的信号,则进入存储输出特征图状态;主控制器没收到特征图输出缓存器非空的信号,则保持等待状态;
结束状态时,主控制器返回空闲状态。
子控制器:
空闲状态时,子控制器收到开始信号之后则进入初始状态;
初始状态时,子控制器收到存储信号之后则进入数据存储状态;
数据存储状态时,子控制器收到下一行信号之后,则进入下一行状态;或者,子控制器收到下一个通道信号之后,则进入下一个通道状态;或者,子控制器收到下一个输出特征图信号之后,则进入下一个输出特征图状态;或者,子控制器收到完成信号之后,则进入结束状态;或者,子控制器收到数据存储信号之后,则保持数据存储状态;
下一行状态时,子控制器收到数据存储信号之后,则进入数据存储状态;
下一个通道状态时,子控制器收到数据存储信号之后,则进入数据存储状态;
下一个输出特征图状态时,子控制器收到数据存储信号之后,则进入数据存储状态;
结束状态时,子控制器向上层主控制器返回计算完成信号。
其中,本申请的核心就在数据存储状态时,子控制器分别收到下一行、下一个通道、下一个输出特征图信号之后,可以分别进入下一行、下一个通道、下一个输出特征图状态;当下一行、下一个通道、下一个输出特征图状态时,子控制器将设定新的片外存储器存储地址、字长、步长和片上特征图输出缓存器的读取地址、字长、步长等参数,子控制器收到数据存储信号之后,则返回数据存储状态。
实施例九
本申请实施例提供了另一种可能的实现方式,在实施例一至实施例八任一实施例的基础上,还包括实施例九所示的方法,其中,
如图5所示,神经网络处理器中包括存储器调度器,可选地,该存储器调度器基于人工智能技术,可以实现上述实施例一至实施例九所示的操作。
步骤S201中,存储器调度器确定神经网络的计算参数,并且,存储器调度器根据实施例二所示的方法预测神经网络处理器的带宽信息。
可选地,存储器调度器还可以确定神经网络处理器配置参数。
步骤S202中,存储器调度器根据神经网络的计算参数以及带宽信息,确定相应的调度策略。
可选地,存储器调度器根据神经网络的计算参数、带宽信息及神经网络处理器配置参数,确定相应的调度策略。
可选地,存储器调度器通过实施例四所示的方法确定相应的调度策略,其中,预建立的深度学习模型和/或预设的调度策略库以及相关的确定调度策略的方法都包含在存储器调度器中,以便智能地实时调整调度策略。
本申请实施例中,存储器调度器确定出调度策略后,通过实施例八所示的主控制器和子控制器载入所述调度策略,确定控制有限状态机中的参数。
步骤S203中,存储器调度器根据确定出的调度策略,控制存储器以及处理引擎单元阵列执行相应操作。
具体地,特征图输入缓存器在存储器调度器的控制下,从外部存储设备读写输入特征图数据。
卷积核缓存器在存储器调度器的控制下,从外部存储设备读写卷积核数据。
通道切换单元在存储器调度器的控制下读写计算操作的中间计算结果数据中间计算结果数据。存储器调度器将控制信号发送给通道切换单元的控制器,对其进行控制。
处理引擎单元阵列在存储器调度器的控制下,对特征图输入缓存器中存储的输入特征图元素、卷积核缓存器中存储的卷积核数据、通道切换单元中存储的中间计算结果数据执行计算操作。
特征图输出缓存器在存储器调度器的控制下,将存储的输出特征图元素写回外部存储设备。
本申请实施例提供的神经网络处理器执行操作的方法,通过存储器调度器可以实现灵活的存储器调度策略,用以解决在外部存储设备可用带宽和/或总线可用带宽变化时,如何实时优化外部存储设备与片上缓存器之间的数据交换策略,包括数据读写时刻、读写次数和/或读写数据量,重复利用外部存储设备可用带宽和/或总线可用带宽,减少外部存储设备的读写时间,提高处理速度,降低功耗。
实施例十
本申请实施例提供了一种基于神经网络的操作装置,执行所述神经网络的神经网络处理器包括存储器、由至少一个处理引擎单元组成的处理引擎单元阵列;如图25所示,该操作装置250可以包括:确定模块2501、选择模块2502以及调度模块2503,其中,
确定模块2501,用于确定神经网络处理器的带宽信息;
选择模块2502,用于根据所述带宽信息,确定相应的调度策略;
调度模块2503,用于根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作。
可选地,确定模块2501还用于确定神经网络的计算参数;
选择模块2502具体用于根据神经网络的计算参数以及带宽信息,确定相应的调度策略。可选地,选择模块2502具体用于以下任一项:
根据神经网络的计算参数以及带宽信息,通过预建立的深度学习模型,确定相应的调度策略;
根据神经网络的计算参数以及带宽信息,基于预设的调度策略库,确定相应的调度策略;
根据神经网络的计算参数,确定各个调度策略对应的数据存取量,并根据带宽信息以及确定得到的各个调度策略对应的数据存取量,确定相应的调度策略;
根据神经网络的计算参数以及带宽信息,确定各个调度策略对应的耗时,并根据确定得到的各个调度策略对应的耗时,确定相应的调度策略。
其中,选择模块2502确定得到的数据存取量包括以下至少一项:
存储器从外部存储设备读取的特征图输入数据量;
存储器从外部存储设备读取的卷积核数据量;
存储器输出到外部存储设备的特征图输出数据量;
进一步地,选择模块2502具体用于当带宽信息小于或等于第一阈值时,将特征图输入数据量小于或等于第二阈值的调度策略,确定为相应的调度策略;以及当带宽信息大于或等于第三阈值时,将特征图输入数据量、卷积核数据量的总量或特征图输入数据量、卷积核数据量、特征图输出数据量的总量小于或等于第四阈值的调度策略,确定为相应的调度策略。
可选地,选择模块2502具体用于根据神经网络的计算参数,确定各个调度策略对应的数据存取量;以及,根据带宽信息以及确定得到的数据存取量,确定各个调度策略对应的耗时。
其中,选择模块2502确定得到的耗时包括以下至少一项:
存储器从外部存储设备读取特征图输入数据的耗时;
存储器从外部存储设备读取卷积核数据的耗时;
存储器将特征图输出数据量输出到外部存储设备的耗时;
进一步地,选择模块2502具体用于确定各个调度策略对应的读取特征图输入数据的耗时与读取卷积核数据的耗时两项中的较大值;以及,将各个调度策略对应的较大值中数值最小的较大值对应的调度策略,确定为相应的调度策略。
可选地,存储器包括片上缓存器;片上缓存器包括以下至少之一:特征图输入缓存器、卷积核缓存器、特征图输出缓存器;
调度模块2503具体用于以下至少之一:
根据确定出的调度策略包括的与特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备执行相应读取操作;
根据确定出的调度策略包括的与卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备执行相应读取操作;
根据确定出的调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,并控制特征图输出缓存器输出计算结果至外部存储设备。
可选地,存储器还包括与至少一个处理引擎单元一一对应连接的通道切换单元;调度模块2503具体用于根据所述调度策略,控制处理引擎单元阵列将计算得到的中间计算结果数据存储至通道切换单元;和/或根据所述调度策略,控制处理引擎单元阵列从所述通道切换单元中获取存储的中间计算结果数据,以使得控制处理引擎单元阵列生成计算结果。
可选地,当存储器包括通道切换单元时,调度模块2503具体用于在执行至少两级计算操作时,根据确定出的调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,得到中间计算结果数据,并将中间计算结果数据存储于与控制处理引擎单元相应的通道切换单元;以及,控制处理引擎单元阵列从所述通道切换单元中获取各级计算操作得到的中间计算结果数据,并依据获取到的中间计算结果数据,生成计算结果。
可选地,选择模块2502具体用于根据神经网络的计算参数、带宽信息及神经网络处理器配置参数,确定相应的调度策略。
可选地,确定模块2501具体用于根据神经网络的计算参数及神经网络处理器配置参数,确定所述神经网络处理器可支持的调度策略;以及依据带宽信息从所述神经网络处理器可支持的调度策略中确定相应的调度策略。
其中,带宽信息包括外部存储设备可用带宽和/或总线可用带宽;
确定模块2501具体用于确定系统状态参数;以及,根据系统状态参数,确定预定时刻或预定时间段内的带宽信息。
可选地,确定模块2501具体用于当神经网络处理器对应的储存设备是共享存储设备时,预测共享存储设备可用带宽和/或总线可用带宽,其中,共享存储设备通过总线和多个功能模块相连接;以及,当神经网络处理器对应的储存设备是专用存储设备时,获取专用存储设备可用带宽,其中,专用存储设备通过控制器只和神经网络处理器相连接。
本申请实施例所提供的基于神经网络的操作装置,可以为神经网络处理器、神经网络处理器上的特定硬件或者基于神经网络处理器运行的软件或固件等,也可以为神经网络处理器所在的芯片、神经网络处理器所在的芯片上的特定硬件或者基于该芯片运行的软件或固件等,也可以为神经网络处理器所在的芯片之外的另一个芯片、该另一个芯片上的特定硬件或者该另一个芯片运行的软件或固件等,还可以是神经网络处理器所在电子设备,例如,手机、AR设备、VR设备、或MR设备等。优选地,该操作装置为实施例九所示的存储器调度器,或者为支持该存储器调度器执行的特定硬件、软件或固件等。其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,设备实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。
本申请实施例提供的神经网络处理器,通过充分结合带宽的情况来对控制存储器以及处理引擎单元阵列进行调度以执行相应操作,能够提高神经网络处理器的处理速度,降低功耗。
实施例十一
本申请实施例还提供了一种电子设备,包括:神经网络处理器和存储设备,存储设备存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集由神经网络处理器加载并执行以实现实施例一至实施例十所示的方法。
需要说明的是,实际应用中,该电子设备的结构并不构成对本申请实施例的限定。
其中,神经网络处理器可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。神经网络处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
存储设备可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
本申请实施例还提供了一种计算机可读存储介质,该计算机存储介质用于存储计算机指令、程序、代码集或指令集,当其在计算机上运行时,使得计算机可以执行实施例一至实施例十所示的方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (34)
1.一种基于神经网络的操作方法,其特征在于,执行所述神经网络的神经网络处理器包括存储器、以及由至少一个处理引擎单元组成的处理引擎单元阵列;所述方法包括:
确定神经网络处理器和外部存储设备之间的带宽信息;
根据所述带宽信息,确定相应的调度策略;
根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作;
其中,所述存储器包括片上缓存器;所述片上缓存器包括以下至少之一:特征图输入缓存器、卷积核缓存器、特征图输出缓存器;
所述根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作,包括以下至少之一:
根据所述调度策略包括的与特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备执行相应读取操作;
根据所述调度策略包括的与卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备执行相应读取操作;
根据所述调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,并控制特征图输出缓存器输出计算结果至外部存储设备。
2.根据权利要求1所述的操作方法,其特征在于,还包括:
确定神经网络的计算参数;
所述根据所述带宽信息,确定相应的调度策略,包括:
根据神经网络的计算参数以及带宽信息,确定相应的调度策略。
3.根据权利要求2所述的操作方法,其特征在于,所述根据神经网络的计算参数以及带宽信息,确定相应的调度策略,包括以下任一项:
根据神经网络的计算参数以及带宽信息,通过预建立的深度学习模型,确定相应的调度策略;
根据神经网络的计算参数以及带宽信息,基于预设的调度策略库,确定相应的调度策略;
根据神经网络的计算参数,确定各个调度策略对应的数据存取量,并根据带宽信息以及确定得到的各个调度策略对应的数据存取量,确定相应的调度策略;
根据神经网络的计算参数以及带宽信息,确定各个调度策略对应的耗时,并根据确定得到的各个调度策略对应的耗时,确定相应的调度策略。
4.根据权利要求3所述的操作方法,其特征在于,所述确定得到的数据存取量包括以下至少一项:
存储器从外部存储设备读取的特征图输入数据量;
存储器从外部存储设备读取的卷积核数据量;
存储器输出到外部存储设备的特征图输出数据量;
所述根据带宽信息以及确定得到的各个调度策略对应的数据存取量,确定相应的调度策略,包括:
当带宽信息小于或等于第一阈值时,将特征图输入数据量小于或等于第二阈值的调度策略,确定为相应的调度策略;
当带宽信息大于或等于第三阈值时,将特征图输入数据量和卷积核数据量的总量或特征图输入数据量、卷积核数据量和特征图输出数据量的总量小于或等于第四阈值的调度策略,确定为相应的调度策略。
5.根据权利要求3所述的操作方法,其特征在于,根据神经网络的计算参数以及带宽信息,确定各个调度策略对应的耗时,包括:
根据神经网络的计算参数,确定各个调度策略对应的数据存取量;
根据带宽信息以及确定得到的数据存取量,确定各个调度策略对应的耗时。
6.根据权利要求3所述的操作方法,其特征在于,所述确定得到的耗时包括以下至少一项:
存储器从外部存储设备读取特征图输入数据的耗时;
存储器从外部存储设备读取卷积核数据的耗时;
存储器将特征图输出数据量输出到外部存储设备的耗时;
所述根据确定得到的各个调度策略对应的耗时,确定相应的调度策略,包括:
确定各个调度策略对应的读取特征图输入数据的耗时与读取卷积核数据的耗时两项中的较大值;
将各个调度策略对应的较大值中数值最小的较大值对应的调度策略,确定为相应的调度策略。
7.根据权利要求2所述的操作方法,其特征在于,神经网络的计算参数,包括以下至少一项:运算操作类型、运算量化精度、输入特征图参数、卷积核参数及输出特征图参数;
其中,输入特征图参数,包括以下至少一项:输入特征图的宽度、高度、通道数量、批次大小;
卷积核参数,包括以下至少一项:卷积核的宽度、高度、通道数量、个数、卷积横向步长和纵向步长、分组数量、膨胀率;
输出特征图参数,包括以下至少一项:输出特征图的宽度、高度、通道数量、批次大小。
8.根据权利要求1-7任一项所述的操作方法,其特征在于,所述存储器还包括与所述至少一个处理引擎单元一一对应连接的通道切换单元;所述根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作,包括:
根据所述调度策略,控制处理引擎单元阵列将计算得到的中间计算结果数据存储至通道切换单元;和/或
根据所述调度策略,控制处理引擎单元阵列从所述通道切换单元中获取存储的中间计算结果数据,以使得控制处理引擎单元阵列生成计算结果。
9.根据权利要求1-7任一项所述的操作方法,其特征在于,当所述存储器包括通道切换单元时,所述根据所述调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,包括:
在执行至少两级计算操作时,根据所述调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,得到中间计算结果数据,并将中间计算结果数据存储于与控制处理引擎单元相应的通道切换单元;
控制处理引擎单元阵列从所述通道切换单元中获取各级计算操作得到的中间计算结果数据,并依据获取到的中间计算结果数据,生成计算结果。
10.根据权利要求2-7任一项所述的操作方法,其特征在于,所述根据神经网络的计算参数以及带宽信息,确定相应的调度策略,包括:
根据神经网络的计算参数、带宽信息及神经网络处理器配置参数,确定相应的调度策略。
11.根据权利要求10所述的操作方法,其特征在于,根据神经网络的计算参数、带宽信息及神经网络处理器配置参数,确定相应的调度策略,包括:
根据神经网络的计算参数及神经网络处理器配置参数,确定所述神经网络处理器可支持的调度策略;
依据带宽信息从所述神经网络处理器可支持的调度策略中确定相应的调度策略。
12.根据权利要求10所述的操作方法,其特征在于,所述神经网络处理器配置参数,包括以下至少一项:
特征图输入缓存器容量、特征图输入缓存器带宽、特征图输入缓存器分组数量、卷积核缓存器容量、卷积核缓存器带宽、卷积核缓存器分组数量、特征图输出缓存器容量、特征图输出缓存器带宽、特征图输出缓存器分组数量、外部存储设备容量、外部存储设备带宽、外部存储设备分组数量、通道切换单元容量、通道切换单元带宽、通道切换单元数量、处理引擎单元数量、处理引擎单元种类、处理引擎单元连接方式、处理引擎单元计算延迟。
13.根据权利要求12所述的操作方法,其特征在于,确定出的调度策略包括的划分方式,满足以下条件:
划分后的输入特征图分块的尺寸小于或等于特征图输入缓存器容量;
划分后的卷积核分块的尺寸小于或等于卷积核缓存器容量;
输出的特征图分块的尺寸小于或等于特征图输出缓存器容量;
计算出的中间计算结果数据分块的尺寸,小于或等于通道切换单元容量的总和;
从外部存储设备读取输入特征图分块的时间与读取卷积核分块的时间的差值属于预定取值范围。
14.根据权利要求1-7任一项所述的操作方法,其特征在于,所述带宽信息包括外部存储设备可用带宽和/或总线可用带宽;
所述确定神经网络处理器和外部存储设备之间的带宽信息,包括:
确定系统状态参数;
根据系统状态参数,确定预定时刻或预定时间段内的带宽信息。
15.根据权利要求14所述的操作方法,其特征在于,所述系统状态参数,包括以下至少一项:
外部存储设备总带宽、外部存储设备刷新周期、总线总带宽、总线支持的操作类型、电路系统中各个模块占用的外部存储设备带宽历史数据、外部存储设备空闲带宽历史数据、电路系统中各个模块占用的总线带宽历史数据、总线空闲带宽历史数据。
16.根据权利要求14所述的操作方法,其特征在于,确定神经网络处理器的外部存储设备可用带宽和/或总线可用带宽,包括:
当神经网络处理器对应的储存设备是共享存储设备时,预测共享存储设备可用带宽和/或总线可用带宽,其中,所述共享存储设备通过总线和多个功能模块相连接;
当神经网络处理器对应的储存设备是专用存储设备时,获取专用存储设备可用带宽,其中,所述专用存储设备通过存储器控制器和神经网络处理器相连接。
17.一种基于神经网络的操作装置,其特征在于,执行所述神经网络的神经网络处理器包括存储器、由至少一个处理引擎单元组成的处理引擎单元阵列;所述操作装置包括:
确定模块,用于确定神经网络处理器和外部存储设备之间的带宽信息;
选择模块,用于根据所述带宽信息,确定相应的调度策略;
调度模块,用于根据所述调度策略,控制存储器以及处理引擎单元阵列执行相应操作;
所述存储器包括片上缓存器;所述片上缓存器包括以下至少之一:特征图输入缓存器、卷积核缓存器、特征图输出缓存器;
所述调度模块具体用于以下至少之一:
根据所述调度策略包括的与特征图划分方式对应的特征图读取方式,控制特征图输入缓存器从外部存储设备执行相应读取操作;
根据所述调度策略包括的与卷积核划分方式对应的卷积核读取方式,控制卷积核缓存器从外部存储设备执行相应读取操作;
根据所述调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,并控制特征图输出缓存器输出计算结果至外部存储设备。
18.根据权利要求17所述的操作装置,其特征在于,所述确定模块还用于确定神经网络的计算参数;
所述选择模块具体用于根据神经网络的计算参数以及带宽信息,确定相应的调度策略。
19.根据权利要求18所述的操作装置,其特征在于,所述选择模块具体用于以下任一项:
根据神经网络的计算参数以及带宽信息,通过预建立的深度学习模型,确定相应的调度策略;
根据神经网络的计算参数以及带宽信息,基于预设的调度策略库,确定相应的调度策略;
根据神经网络的计算参数,确定各个调度策略对应的数据存取量,并根据带宽信息以及确定得到的各个调度策略对应的数据存取量,确定相应的调度策略;
根据神经网络的计算参数以及带宽信息,确定各个调度策略对应的耗时,并根据确定得到的各个调度策略对应的耗时,确定相应的调度策略。
20.根据权利要求19所述的操作装置,其特征在于,所述选择模块确定得到的数据存取量包括以下至少一项:
存储器从外部存储设备读取的特征图输入数据量;
存储器从外部存储设备读取的卷积核数据量;
存储器输出到外部存储设备的特征图输出数据量;
所述选择模块具体用于当带宽信息小于或等于第一阈值时,将特征图输入数据量小于或等于第二阈值的调度策略,确定为相应的调度策略;以及当带宽信息大于或等于第三阈值时,将特征图输入数据量、卷积核数据量的总量或特征图输入数据量、卷积核数据量、特征图输出数据量的总量小于或等于第四阈值的调度策略,确定为相应的调度策略。
21.根据权利要求19所述的操作装置,其特征在于,所述选择模块具体用于根据神经网络的计算参数,确定各个调度策略对应的数据存取量;以及,根据带宽信息以及确定得到的数据存取量,确定各个调度策略对应的耗时。
22.根据权利要求19所述的操作装置,其特征在于,所述选择模块确定得到的耗时包括以下至少一项:
存储器从外部存储设备读取特征图输入数据的耗时;
存储器从外部存储设备读取卷积核数据的耗时;
存储器将特征图输出数据量输出到外部存储设备的耗时;
所述选择模块具体用于确定各个调度策略对应的读取特征图输入数据的耗时与读取卷积核数据的耗时两项中的较大值;以及,将各个调度策略对应的较大值中数值最小的较大值对应的调度策略,确定为相应的调度策略。
23.根据权利要求18任一项所述的操作装置,其特征在于,神经网络的计算参数,包括以下至少一项:运算操作类型、运算量化精度、输入特征图参数、卷积核参数及输出特征图参数;
其中,输入特征图参数,包括以下至少一项:输入特征图的宽度、高度、通道数量、批次大小;
卷积核参数,包括以下至少一项:卷积核的宽度、高度、通道数量、个数、卷积横向步长和纵向步长、分组数量、膨胀率;
输出特征图参数,包括以下至少一项:输出特征图的宽度、高度、通道数量、批次大小。
24.根据权利要求17-23任一项所述的操作装置,其特征在于,所述存储器还包括与所述至少一个处理引擎单元一一对应连接的通道切换单元;
所述调度模块具体用于根据所述调度策略,控制处理引擎单元阵列将计算得到的中间计算结果数据存储至通道切换单元;和/或根据所述调度策略,控制处理引擎单元阵列从所述通道切换单元中获取存储的中间计算结果数据,以使得控制处理引擎单元阵列生成计算结果。
25.根据权利要求17-23任一项所述的操作装置,其特征在于,当所述存储器包括通道切换单元时,所述调度模块具体用于在执行至少两级计算操作时,根据所述调度策略,控制处理引擎单元阵列根据特征图输入缓存器及卷积核缓存器读取到的数据进行计算操作,得到中间计算结果数据,并将中间计算结果数据存储于与控制处理引擎单元相应的通道切换单元;以及,控制处理引擎单元阵列从所述通道切换单元中获取各级计算操作得到的中间计算结果数据,并依据获取到的中间计算结果数据,生成计算结果。
26.根据权利要求18-23任一项所述的操作装置,其特征在于,所述选择模块具体用于根据神经网络的计算参数、带宽信息及神经网络处理器配置参数,确定相应的调度策略。
27.根据权利要求26所述的操作装置,其特征在于,所述确定模块具体用于根据神经网络的计算参数及神经网络处理器配置参数,确定所述神经网络处理器可支持的调度策略;以及依据带宽信息从所述神经网络处理器可支持的调度策略中确定相应的调度策略。
28.根据权利要求26所述的操作装置,其特征在于,所述神经网络处理器配置参数,包括以下至少一项:
特征图输入缓存器容量、特征图输入缓存器带宽、特征图输入缓存器分组数量、卷积核缓存器容量、卷积核缓存器带宽、卷积核缓存器分组数量、特征图输出缓存器容量、特征图输出缓存器带宽、特征图输出缓存器分组数量、外部存储设备容量、外部存储设备带宽、外部存储设备分组数量、通道切换单元容量、通道切换单元带宽、通道切换单元数量、处理引擎单元数量、处理引擎单元种类、处理引擎单元连接方式、处理引擎单元计算延迟。
29.根据权利要求28所述的操作装置,其特征在于,确定出的调度策略包括的划分方式,满足以下条件:
划分后的输入特征图分块的尺寸小于或等于特征图输入缓存器容量;
划分后的卷积核分块的尺寸小于或等于卷积核缓存器容量;
输出的特征图分块的尺寸小于或等于特征图输出缓存器容量;
计算出的中间计算结果数据分块的尺寸,小于或等于通道切换单元容量的总和;
从外部存储设备读取输入特征图分块的时间与读取卷积核分块的时间的差值属于预定取值范围。
30.根据权利要求17-23任一项所述的操作装置,其特征在于,所述带宽信息包括外部存储设备可用带宽和/或总线可用带宽;
所述确定模块具体用于确定系统状态参数;以及,根据系统状态参数,确定预定时刻或预定时间段内的带宽信息。
31.根据权利要求30所述的操作装置,其特征在于,所述系统状态参数,包括以下至少一项:
外部存储设备总带宽、外部存储设备刷新周期、总线总带宽、总线支持的操作类型、电路系统中各个模块占用的外部存储设备带宽历史数据、外部存储设备空闲带宽历史数据、电路系统中各个模块占用的总线带宽历史数据、总线空闲带宽历史数据。
32.根据权利要求30所述的操作装置,其特征在于,所述确定模块具体用于当神经网络处理器对应的储存设备是共享存储设备时,预测共享存储设备可用带宽和/或总线可用带宽,其中,所述共享存储设备通过总线和多个功能模块相连接;以及,当神经网络处理器对应的储存设备是专用存储设备时,获取专用存储设备可用带宽,其中,所述专用存储设备通过控制器和神经网络处理器相连接。
33.一种电子设备,其特征在于,包括:神经网络处理器和存储设备,所述存储设备存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述神经网络处理器加载并执行以实现上述权利要求1至16中任一项所述的操作方法。
34.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机指令、程序、代码集或指令集,当其在计算机上运行时,使得计算机执行上述权利要求1至16中任一项所述的操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810804319.8A CN110738316B (zh) | 2018-07-20 | 2018-07-20 | 基于神经网络的操作方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810804319.8A CN110738316B (zh) | 2018-07-20 | 2018-07-20 | 基于神经网络的操作方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110738316A CN110738316A (zh) | 2020-01-31 |
CN110738316B true CN110738316B (zh) | 2024-05-14 |
Family
ID=69234741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810804319.8A Active CN110738316B (zh) | 2018-07-20 | 2018-07-20 | 基于神经网络的操作方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110738316B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723900B (zh) * | 2019-03-18 | 2023-10-20 | 北京灵汐科技有限公司 | 一种基于众核处理器的神经网络的映射方法及计算设备 |
CN113495669B (zh) * | 2020-03-19 | 2023-07-18 | 华为技术有限公司 | 一种解压装置、加速器、和用于解压装置的方法 |
CN111443917B (zh) * | 2020-03-26 | 2023-12-22 | 上海寒武纪信息科技有限公司 | 神经网络运行优化方法、装置及相关产品 |
CN111915017B (zh) * | 2020-07-29 | 2023-11-24 | 北京灵汐科技有限公司 | 一种校准方法、装置、终端设备及存储介质 |
CN112016665B (zh) * | 2020-10-20 | 2021-04-06 | 深圳云天励飞技术股份有限公司 | 计算神经网络在处理器上运行时间的方法及装置 |
CN113379047B (zh) * | 2021-05-25 | 2024-04-05 | 北京微芯智通科技合伙企业(有限合伙) | 一种实现卷积神经网络处理的系统及方法 |
CN113378863B (zh) * | 2021-07-09 | 2023-12-19 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN113378862B (zh) * | 2021-07-09 | 2023-12-19 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN114546908A (zh) * | 2022-02-22 | 2022-05-27 | 杭州中天微系统有限公司 | 总线带宽自适应单元、方法及芯片 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524175A (en) * | 1992-10-29 | 1996-06-04 | Hitachi, Ltd. | Neuro-computer system for executing a plurality of controlling algorithms |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN107070709A (zh) * | 2017-03-31 | 2017-08-18 | 上海交通大学 | 一种基于底层numa感知的nfv实现方法 |
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108241484A (zh) * | 2016-12-26 | 2018-07-03 | 上海寒武纪信息科技有限公司 | 基于高带宽存储器的神经网络计算装置和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
-
2018
- 2018-07-20 CN CN201810804319.8A patent/CN110738316B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524175A (en) * | 1992-10-29 | 1996-06-04 | Hitachi, Ltd. | Neuro-computer system for executing a plurality of controlling algorithms |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN108241484A (zh) * | 2016-12-26 | 2018-07-03 | 上海寒武纪信息科技有限公司 | 基于高带宽存储器的神经网络计算装置和方法 |
CN107070709A (zh) * | 2017-03-31 | 2017-08-18 | 上海交通大学 | 一种基于底层numa感知的nfv实现方法 |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
Non-Patent Citations (2)
Title |
---|
Energy-efficient scheduling method with cross-loop model for resource-limited CNN accelerator designs;K. Yang等;2017 IEEE International Symposium on Circuits and Systems (ISCAS);第1-4页 * |
Thinker:可重构混合神经网络计算芯片;尹首一等;人工智能;第2018年卷(第2期);第34-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110738316A (zh) | 2020-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110738316B (zh) | 基于神经网络的操作方法、装置及电子设备 | |
JP7025441B2 (ja) | ニューラルネットワーク処理のスケジューリング | |
Yin et al. | A high energy efficient reconfigurable hybrid neural network processor for deep learning applications | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN106228238B (zh) | 现场可编程门阵列平台上加速深度学习算法的方法和系统 | |
CN107203807B (zh) | 神经网络加速器的片上缓存带宽均衡方法、系统及其装置 | |
JP7078758B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
WO2017173754A1 (zh) | 片上重复寻址的方法及装置 | |
CN113220630A (zh) | 一种硬件加速器的可重构阵列优化方法及自动调优方法 | |
CN114005458A (zh) | 基于流水线架构的语音降噪方法、系统及存储介质 | |
WO2021244045A1 (zh) | 一种神经网络的数据处理方法及装置 | |
CN113127407A (zh) | 基于nvm进行ai计算的芯片架构 | |
Shang et al. | LACS: A high-computational-efficiency accelerator for CNNs | |
CN111783984A (zh) | 一种神经网络运算方法、装置、设备及存储介质 | |
CN112988082B (zh) | 基于nvm进行ai计算的芯片系统及其运行方法 | |
CN113312285B (zh) | 一种卷积神经网络加速器及其工作方法 | |
CN113407258A (zh) | 一种存算一体架构的自适应资源配置布局布线方法及系统 | |
CN113052291A (zh) | 数据处理方法和装置 | |
Struharik et al. | Stick buffer cache v2: Improved input feature map cache for reducing off-chip memory traffic in CNN accelerators | |
CN214846708U (zh) | 基于nvm进行ai计算的芯片架构 | |
CN113869507B (zh) | 一种基于脉动阵列的神经网络加速器卷积计算装置与方法 | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
RamaDevi et al. | Machine learning techniques for the energy and performance improvement in Network-on-Chip (NoC) | |
CN114936636A (zh) | 一种基于fpga的通用型轻量级卷积神经网络加速方法 |
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 |