CN116341630A - 神经网络处理 - Google Patents
神经网络处理 Download PDFInfo
- Publication number
- CN116341630A CN116341630A CN202211491403.1A CN202211491403A CN116341630A CN 116341630 A CN116341630 A CN 116341630A CN 202211491403 A CN202211491403 A CN 202211491403A CN 116341630 A CN116341630 A CN 116341630A
- Authority
- CN
- China
- Prior art keywords
- neural network
- blocks
- block
- format
- processing
- 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 420
- 238000012545 processing Methods 0.000 title claims description 315
- 238000000034 method Methods 0.000 claims abstract description 193
- 238000012549 training Methods 0.000 claims abstract description 95
- 230000006870 function Effects 0.000 claims description 113
- 230000004913 activation Effects 0.000 claims description 83
- 230000008569 process Effects 0.000 claims description 71
- 238000011176 pooling Methods 0.000 claims description 12
- 238000009825 accumulation Methods 0.000 claims 1
- 239000010410 layer Substances 0.000 description 173
- 230000015654 memory Effects 0.000 description 31
- 238000005516 engineering process Methods 0.000 description 21
- 230000001537 neural effect Effects 0.000 description 15
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 11
- 230000008901 benefit Effects 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000010606 normalization Methods 0.000 description 7
- 238000003062 neural network model Methods 0.000 description 6
- 108010003272 Hyaluronate lyase Proteins 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000001131 transforming effect Effects 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/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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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
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)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
公开了一种新颖神经网络架构和用于由此架构生成基于神经网络的模型的方法。用于训练目的的神经网络的第一版本包括呈第一格式的一个或多个块,该一个或多个块然后能够被替换为呈第二格式的对应块以供执行。能够因此提供包括神经网络的第二版本的可执行模型,该神经网络的第二版本包括呈第二格式的一个或多个块。然后,这允许以第一例如扩展格式执行训练,但然后提供第二例如缩减格式模型以供执行。
Description
背景技术
本文所述技术涉及神经网络,并且具体地涉及可以(针对其大小)提供相对较高准确率并且可以更有效地(例如,并且在一个实施方案中)在诸如神经处理单元(NPU)的硬件加速器上执行的神经网络。
神经网络可用于过程诸如机器学习、计算机视觉和自然语言处理操作。神经网络可对合适的输入数据(例如,图像或声音数据)进行操作以最终提供期望的输出(例如,对图像中的对象或声音片段中的语音的识别,或者从输入数据推断出的其他有用输出)。此过程可以包括“推断”或“分类”过程,但是根据需要存在可以执行以执行不同操作的各种类型的网络。
神经网络通常将根据操作者的网络来处理输入数据(例如,图像或声音数据),每个操作者执行特定操作。通常将顺序地执行这些操作以产生期望的输出数据(例如,基于图像或声音数据的分类)。每个操作可被称为神经网络处理的“层”。
因此,神经网络处理可包括处理“层”序列,使得来自每个层的输出用作下一处理层的输入。图1示出了从初始输入层101到最终输出层107的神经网络处理层的示例性序列,在这些层之间是包括各种卷积层(C层)102、103、104和全连接层(FC层)105、106的层。
输入层101可被配置为接收输入数据(例如,图像或声音数据),并且以合适的形式(例如,作为数据元阵列,或者称为“特征图”)提供该输入数据以供后续神经网络层使用。特征图通常将包括数据元的三维阵列,每个数据元具有与其相关联的数据。特征图可具有宽度(W)、高度(H)和深度(C),其中宽度(W)和高度(H)可分别被定义为宽度方向和高度方向上的数据元的数量,并且深度(C)可对应于数据通道的数量。例如,就包括图像的输入数据而言,由输入层提供的阵列的宽度和高度可分别对应于沿该图像的宽度方向和高度方向的数据位置的数值(例如,像素),而通道可包括该图像的RGB通道。
在输入层之后,可存在神经网络处理的一个或多个其他层(例如,包括卷积层、全连接层、池化层、反卷积层或可存在的神经网络处理的任何其他层)。
通常,神经网络处理层将处理输入特征图(IFM)以便生成对应的输出特征图(OFM)(例如,在卷积层、反卷积层或池化层的情况下),或输出值(例如,在全连接层的情况下的概率)。由神经网络处理层生成的输出可以被用作序列中下一神经网络处理层的输入,以此类推。这在图2中示出。
由每个神经网络处理层执行的运算可包括操纵输入(特征图)以提供输出(特征图)的任何合适的运算。该操作可能需要可特定于神经网络处理的特定层的过程参数(例如,过滤器或“内核”的权重)。因此,如图2所示,可从工作存储器(例如,缓冲器)201读取合适的过程参数(例如,权重和偏置),以便执行每个神经网络处理层。
参考图1,序列中的最终神经网络处理层可包括输出层107。输出层可以处理输入特征图以生成有用的输出数据(例如,推断或分类结果,或图像处理的情况下的输出图像等)。
通常,可以将对应于由神经网络处理层生成的输出特征映射的数据写入合适的工作存储器(例如,缓冲器)202,如图2所示。然后,下一个神经网络处理层可以读取来自缓冲器202的数据以用作所述下一个神经网络处理层的输入特征图。
从概念上讲,当描述神经网络时,多个处理运算(例如,层)通常被分组在一起作为“块”。因此,神经网络块可以表示单个层,或更通常表示多个层的序列。这种对块的抽象可以促进网络的更紧凑的表示(例如,在软件代码中),因为可以根据此类块而不是根据各个层来考虑神经网络。
虽然图1示出了具有某种处理层布置的特定卷积神经网络的示例,但是应当理解,神经网络可以具有各种其他层布置和/或网络架构(例如,神经网络可以使用递归而不是卷积神经网络架构)。
一般来说,神经网络处理涉及执行各种张量算术运算。例如,当将过滤器应用于输入数据阵列时,处理可以包括根据“乘积累加”(MAC)运算执行加权求和。
此处理可以根据需要由各种处理元件执行。例如,图形处理器(图形处理单元,GPU)通常调整用途以用于神经网络处理。还可以使用通用处理器(诸如中央处理单元(CPU))来执行神经网络处理。然而,为了促进神经网络处理,在一些数据处理系统中,如图3所示,提供专用神经处理单元(NPU)306作为硬件加速器,该专用神经处理单元可操作以根据需要并且在需要时,例如响应于在主机处理器(例如,中央处理单元(CPU))305上执行的应用程序需要神经网络处理而执行此类神经网络处理。
例如,NPU 306可以沿着与其他硬件加速器(诸如图形处理器(图形处理单元,GPU)304)相同的互连线(总线)307提供,使得主处理器(CPU)305可操作以请求NPU 306例如以与主处理器305能够请求图形处理器304执行图形处理操作类似的方式相应地执行神经网络处理运算的集合。因此,NPU 306是专用硬件单元,用于根据主处理器(CPU)305的请求执行神经网络处理运算。
因此,神经处理单元(NPU)可以(并且通常确实)包括硬件(例如,包括处理电路),该硬件被构造成用于更有效地执行特定类型的神经网络处理运算。例如,NPU 306可以包括被配置为执行MAC运算的多个乘积累加电路306A(或者称为乘积累加器或“MAC单元”)。NPU306可以被优化用于执行在处理神经网络时通常使用的某些类型的运算,例如,使得当执行这些类型的运算时存在更高的MAC单元利用率。
因此,提供NPU的益处是,然后可以例如与使用另一处理器(例如,CPU)以通用方式执行计算相比,以更优化的方式执行至少这些类型的运算。这也释放了其他部件(例如,主机处理器(CPU))以根据需要执行其他处理任务,这可以提高整体处理效率。这对于CPU资源可能有限的资源受限设备(诸如移动设备)可能特别重要。
为了使用神经网络来执行期望的神经网络处理工作(其可以例如是如上文所提及的推断或分类任务),有必要‘训练’神经网络以便针对神经网络处理任务相应地确定和/或更新神经网络参数(例如,权重)。此训练过程通常涉及使用训练数据集,该训练数据集可以例如包括一组适当标记的输入-输出对(至少在将以受监督方式执行训练的情况下,但是其他(例如,无监督)布置也是可能的)。然后,训练过程涉及使用优化算法来探索神经网络参数空间,以确定在训练数据集上产生期望的准确率性能的一组神经网络参数(权重),例如该一组神经网络参数将训练数据集中的一组输入特征最佳地映射到对应输出。一旦训练过程完成,并且由此确定在训练数据集上给出足够良好准确率性能的一组神经网络参数(权重),则可以提供经过训练的神经网络(即,神经网络本身和已经由训练过程确定的神经网络参数(权重))以供作为可执行模型输出。
因此,包括经过训练的神经网络的可执行模型可以根据需要并且在需要时由合适的处理器执行,以便执行神经网络处理任务(已经针对该神经网络处理任务训练了神经网络)。
例如,当期望针对特定输入(例如,要分类的图像等)执行神经网络处理时,可执行模型可以被提供适当的输入,然后相应地执行模型(经过训练的神经网络)以对输入执行期望的神经网络处理以给出对应输出。
如上所述,存在不同神经网络架构的各种示例。对于移动和其他资源受限环境特别有效的卷积神经网络的一个示例是所谓的“MobileNetV2”架构,如描述于Sandler等人‘MobileNetV2:Inverted Residuals and Linear Bottlenecks”;IEEE计算机视觉和模式识别会议论文集,2018年。MobileNetV2架构特别适用于图像分类,诸如用于计算机视觉应用。
MobileNetV2模型结构是基于“反转瓶颈”(“IBN”)块的序列,每个块包括一组反转瓶颈卷积运算,该一组反转瓶颈卷积运算用于将到块的输入扩展到更高维度以进行处理,然后缩减到较低维度以供输出。在本文中将被称为“传统”反转瓶颈(IBN)块的这些块表示如下表1中所示的特定运算序列(转载自Sandler等人):
表1:从k到k’个通道的反转瓶颈变换,步长为s,并且扩展因子为t。
因此,MobileNetV2中使用的传统反转瓶颈(IBN)块将大小为h×w、内核大小为k的数组作为输入,然后执行反转瓶颈卷积运算的特定序列,包括首先通过执行1×1卷积(扩展)将输入特征扩展到更高维度,然后在更高维度空间中执行3×3深度可分离卷积,然后通过执行另一个1×1卷积(缩减)将特征缩减回到较低维表示。
为了提供期望的非线性,还在IBN块内应用各种激活函数。因此,表1中所示的MobileNetV2 IBN块包括在第一次扩展和深度可分离卷积之后应用整流线性单元(ReLU)激活函数(特别是ReLU6激活函数,它是修改后的ReLU,其激活被限制为最大大小6)。然而,也可以根据需要应用其他非线性激活函数。
图4示意性地示出了MobileNetV2模型的整体结构。如图4所示,MobileNetV2模型包括具有32个过滤器的初始全卷积层401,然后是一系列上述类型的IBN块402(通常具有越来越多的过滤器)。在网络的最终几层中,执行另一扩展运算403以将特征扩展到更高维度,然后是池化层404以及全连接层405,该全连接层在更高维度中处理特征并且提供用于给出最终分类结果406的输出特征集。图4更详细地示出了单个IBN块402的结构,以及网络的最终层的细节。
如上所述,MobileNetV2架构特别适合于移动和其他资源受限应用程序,因为它可以使用相对紧凑的网络提供更高的分类准确率。这主要是由于使用了IBN块,因为这些块显著减少了实现期望准确率所需的处理运算和存储器的数量。具体地说,执行定义反转瓶颈的扩展/缩减运算的1×1卷积和在反转瓶颈内执行的3×3深度可分离卷积都可以使用诸如CPU的通用处理器有效地执行,例如使用标准运算,并且需要相对较少的模型参数和MAC运算。
由于这些原因,MobileNetV2网络和使用类似IBN块的其他网络架构越来越多地用作分类或推断过程的模型(尤其是移动设备)的基础。例如,尽管这些IBN块是MobileNetV2的特定特征,但是还存在使用类似IBN块(诸如MobileNetV3、EfficientNets等)并且已经被用作用于与MobileNetV2类似的神经网络处理应用程序的模型的基础的其他神经网络架构。
尽管通过使用移动设备CPU执行基于MobileNetV2的模型已经取得了成功,但是申请人已经发现,在诸如神经处理单元(NPU)的现有硬件加速器上有效地运行此类网络可能存在困难,导致当尝试将MobileNetV2(以及类似的)神经网络处理卸载到NPU时,通过使用此类神经网络提供的益处被削减。
因此,申请人相信,神经网络的处理仍有改进的余地。
具体地说,申请人相信,仍然存在改进的神经网络架构的余地,该架构可以更有效地执行,同时仍然提供期望的准确率。
附图说明
将仅以举例的方式参考附图来描述本文所述技术的实施方案,其中:
图1示出了包括输入层和输出层的神经网络处理层的示例性序列,在这些层之间是包括各种卷积层(C层)和全连接层(FC层)的神经网络层;
图2示出了一系列神经网络处理层,其中来自神经网络处理层的输出特征图可被写入合适的缓冲器,然后用作该系列中下一层的输入特征图,并且其中每个神经网络处理层可使用从合适的缓冲器读取的处理参数(例如,权重);
图3示意性地示出了可在其中实现本文所述技术的实施方案的示例性数据处理系统;
图4示意性地示出了根据MobileNetV2架构的卷积神经网络的示例;
图5示出了根据实施方案的可以在神经网络内使用的块的示例;
图6示出了根据实施方案的可以在神经网络内使用的块的另一示例;
图7示出了根据实施方案的神经网络内的最终层的示例;
图8示意性地示出了根据实施方案的神经网络的总体训练和执行;
图9示出了根据实施方案的神经网络的构造;
图10示出了根据实施方案的可用于构建神经网络的示例性块;
图11示出了根据实施方案的神经网络的示例;并且
图12示意性地示出了根据实施方案的神经网络的构造。
具体实施方式
本文所述技术的第一主要实施方案包括一种生成能够由处理器执行以执行神经网络处理的模型的方法,所述方法包括:
提供神经网络,所述神经网络包括多个层,所述多个层一起被布置成处理到所述神经网络的输入以生成相应输出,其中所述神经网络包括多个块,每个块包括所述神经网络的一个或多个层,并且每个块被配置为执行相应的处理运算序列;
训练所述神经网络执行神经网络处理任务,其中训练所述神经网络包括训练所述神经网络的第一版本,所述神经网络的所述第一版本包括呈第一格式的一个或多个块,其中所述第一格式中的每个块包括相应的处理运算序列;
在训练所述神经网络的所述第一版本之后:将经过训练的神经网络中的第一格式块中的一个或多个第一格式块替换为呈第二不同(缩减)格式的对应块以生成所述神经网络的第二版本以供执行,所述神经网络的所述第二版本因此包括呈所述第二格式的相应的一个或多个块,其中呈所述第二格式的所述块在被执行时复制用于经过训练的神经网络中的对应的第一格式块的所述处理运算序列的结果;以及
提供包括所述神经网络的所述第二版本的可执行模型以供输出,所述第二版本包括呈所述第二格式的所述一个或多个块。
本文所述技术大体上涉及神经网络,并且具体地涉及可以由期望的处理元件更有效地执行的改进的基于神经网络的模型。例如,在一些实施方案中,本文所述技术提供了可以在诸如神经处理单元(NPU)的受限硬件单元上更有效地执行的基于神经网络的模型。然而,应当理解,本文所述技术通常可以用于优化任何期望处理元件的神经网络执行。
在本文所述技术中,训练神经网络以执行神经网络处理任务,并且基于经过训练的神经网络生成可执行模型,然后可以根据需要由处理器执行所述模型以执行神经网络处理任务。
因此,提供了用于训练的神经网络,然后合适地训练神经网络以执行期望的神经网络处理(例如,推断或分类)任务。训练过程可以并且在一个实施方案中确实涉及确定神经网络的参数(权重),例如,将输入特征最佳地映射到对应的期望输出以例如以用于训练神经网络的正常方式执行神经网络处理任务。
在对神经网络进行适当训练并由此为处理层中的每个处理层确定合适的参数(权重)之后,经过训练的神经网络(即神经网络本身以及由训练过程确定的神经网络参数(权重))然后可以作为可执行模型提供以供输出(以供执行),然后可以根据需要执行神经网络处理任务(针对该神经网络处理任务训练了神经网络)。
包括神经网络和其相关联的训练参数(权重)的可执行模型因此可以被提供给合适的处理器以供执行,然后由处理器相应地执行,以便根据需要执行神经网络处理。例如,当希望对给定的输入(或一组输入特征)执行神经网络处理任务时,输入(特征)可以(并且被)作为输入提供给模型,然后相应地执行模型以执行神经网络处理以将输入(特征)处理成相应的输出(例如,该输出可以包括推断/分类结果或一组输出特征,这取决于所讨论的神经网络和神经网络处理任务)。
然而,根据本文所述技术,在神经网络已经被适当地训练之后,而不是简单地‘按原样’使用(执行)经过训练的神经网络(即,以训练神经网络的第一格式),神经网络的经过训练的版本中的处理块中的至少一些处理块在要执行的神经网络的版本中被替换为对应的不同格式块以供执行(例如,并且在一个实施方案中),以促进更有效的执行。
因此,在本文所述技术中,用于训练过程的神经网络的版本包括多个块,如下文将进一步解释的,该块可以分析地从块包括第一(多个)处理运算的相应序列的第一(例如,‘完整’)格式变换成第二不同(例如,并且在一个实施方案中,‘缩减’)格式以供执行。块的第二(缩减)格式版本因此包括相应的第二处理运算序列,该第二处理运算序列在被执行时以第一格式复制相应的完整处理运算序列的结果,但是在一个实施方案中可以更有效地执行(例如,与块的第一格式版本相比)。
举例来说,并且在一些实施方案中,包括经过训练的神经网络的可执行模型被设计为(并且在一个实施方案中)在专用神经网络处理硬件加速器(诸如NPU)上执行,该硬件加速器(NPU)被配置为最佳地执行某些类型的处理运算,例如,神经网络处理通常需要的处理运算(例如,并且在一个实施方案中,是某些类型的“常规”(例如,常规3×3)卷积运算)。
因此,在实施方案中,将模型提供给神经网络处理硬件加速器(例如,NPU)以供执行(并且当期望执行推断或分类任务时由硬件加速器相应地执行)。
在实施方案中,块的第二(缩减)格式版本因此包括硬件加速器被配置为执行的(或该)类型的一个或多个运算的集合,使得硬件加速器可操作以用更有效或优化的方式执行包括块的模型,例如,用比使用(执行)呈第一非缩减格式的块时更高的硬件处理电路的利用率(例如,NPU的MAC单元的更高的利用率)。
因此,在实施方案中,模型被设计成在神经网络处理硬件加速器上执行,硬件加速器被配置为更(或最)有效地执行某些类型的运算,并且块的第二(缩减)格式版本包括硬件加速器被配置为更(或最)有效地执行的类型的运算的集合。
(尽管在特定实施方案中,神经网络的经过训练的版本中的块中的至少一些块在神经网络的执行版本中被替换为更容易使用硬件加速器(诸如NPU)执行的块,如上文所描述,并且因此本文所述技术将主要在这种布置的上下文中进行描述,但是应当理解,出于其他原因,还可能存在其他情况,其中将呈第一格式的神经网络处理块替换为呈另一种不同格式的块以供执行可能是有益的。也就是说,使用不同版本的神经网络进行训练和执行的想法可以在优化模型的整体训练和执行方面提供各种益处,该益处不限于(仅)改进硬件(NPU)执行。对应地,虽然在一些实施方案中,神经网络的执行版本被设计成(并且被)由硬件加速器(诸如NPU)执行,但是应当理解,神经网络的执行可以由任何合适的处理器(诸如图形处理器(图形处理单元,GPU)、中央处理器(中央处理单元,CPU)等)执行,并且本文所述技术的神经网络仍然可以在改进的执行方面在所述上下文中提供益处。)
受制于呈第一(完整)格式的块能够以上述方式变换成呈第二(缩减)格式的块以供执行,在呈第二格式的块适当地复制呈第一(完整)格式的块的处理结果的情况下,呈第一(完整)格式的块也在它们可以包括哪些处理运算方面受到较少的约束,例如,因为训练过程通常将预先(和离线)执行,并且因此可以使用任何合适和期望的处理器来执行。因此,呈第一(完整)格式的处理块内的运算序列可以包括更复杂(和更多数量)的处理运算,例如,可能效率较低的处理运算,而没有显著的惩罚。
然后,第二(缩减)格式的块复制针对呈第一格式的块定义的完整运算序列的结果,但是在一个实施方案中包括可以由硬件加速器更有效地执行的处理运算。例如,在呈第一(完整)格式的块中包括的完整运算序列被配置为取一组k个输入特征,并且然后执行处理运算序列以将该一组k个输入特征处理为一组k’个输出特征的情况下,块的第二(缩减)格式版本将类似地被配置为将一组k个输入特征处理为一组k’个输出特征,但是是通过应用复制完整处理运算序列的结果的不同(缩减)运算序列,例如,如下面将进一步解释的。
例如,神经网络的经过训练的版本中的第一(完整)处理运算序列可以涉及执行张量乘法或卷积的第一(完整)集合,其中张量值基于由训练过程确定的神经网络参数(权重)来设置。在第二(缩减)格式中,张量乘法或卷积的第一(完整)集合可以被分析地折叠成张量乘法或卷积的第二(缩减)集合,例如,并且在一个实施方案中,折叠成单个张量乘法。因此,可以通过适当地合并或折叠第一(完整)张量乘法或卷积序列中的张量来确定第二(缩减)张量乘法或卷积(或它们的集合)的张量值(即,表示用于呈第二格式的块的神经网络参数(权重)的张量值)。
因此,在实施方案中,针对呈第一格式的块定义的第一复数个处理运算的集合(用于训练)在块的第二格式版本中被替换为第二复数个处理运算的对应集合,其中与块的第一格式版本相比,块的第二格式版本中的处理运算的数量减少了。也就是说,在一个实施方案中,块的第二格式版本包括比块的第一格式版本更少的处理运算。在一个实施方案中,将块的第一格式版本中的复数个处理运算的序列缩减为用于块的第二格式版本的单个处理运算(以供执行)。
因此,本文所述技术中的神经网络可以使用针对呈第一格式的块定义的完整运算序列,使用呈第一(完整)格式的块来训练(并且已被训练)。这意味着模型(神经网络)可以被训练到更高程度的准确率(例如,与使用缩减格式块训练神经网络的版本相比)。
然而,在神经网络已经被适当地训练并且经过训练的神经网络将被输出以作为可执行模型(其随后可以根据需要被执行以执行神经网络处理任务)的一部分执行之后,经过训练的神经网络的版本中的第一(完整)格式块中的至少一些第一(完整)格式块在神经网络的版本中由对应的呈第二(缩减)格式的块替换以供执行。
以这种方式,通过以其‘完整’或扩展格式(第一格式)训练神经网络,但是然后将神经网络中的块中的一些块替换为相应的‘缩减’格式块以供执行,申请人已经发现,可以使用可以更有效地执行的神经网络模型来实现更高准确率性能,而不会显著增加神经网络的大小。
具体地说,申请人已经发现,通过以其完整格式训练根据本文所述技术的神经网络,可以实现更高的神经网络处理准确率(例如,更高的分类或推断准确率)(例如,与以缩减格式训练模型相比),并且进一步可以将神经网络的完整格式版本替换为缩减格式版本以供执行,而不损失准确率。
也就是说,申请人已经发现,通过使用可以在执行时被替换为对应的呈第二(缩减)格式的块的适当构造的可变换或‘可缩减’块来训练神经网络,即使在执行时将该块替换为相应的缩减格式块以供执行,也可以在训练过程中保持期望的准确率。
换句话说,在用于训练和执行过程的神经网络(模型)中使用呈不同格式的块允许更优化的整体模型生成,例如,并且在一个实施方案中,使用更完整的模型执行训练以提供期望的准确率,但是然后提供模型的‘缩减’格式(更简单)版本以供输出(以供执行),以允许更有效的执行(例如,与执行包括(所有)呈第一(完整)格式的块的模型相比)。
例如,如上所述,本文所述技术的基于神经网络的模型可以(并且在一个实施方案中)被优化用于由神经网络处理硬件加速器(诸如NPU)执行。
NPU通常(并且在一个实施方案中)被配置为执行在神经网络处理期间通常遇到的某些类型的运算。因此,神经处理单元(NPU)可以(并且在一个实施方案中确实)包括硬件(例如,包括处理电路),该硬件被构造成用于更有效地执行特定类型的神经网络处理运算。例如,NPU可以例如并且在一个实施方案中确实包括一个或多个(并且在一个实施方案中包括多个)乘积累加电路(或者称为乘积累加器或“MAC单元”),该乘积累加电路被配置为当将过滤器应用于输入数据阵列时根据“乘积累加”(MAC)运算执行加权求和。
在一个实施方案中,NPU被优化用于执行某些类型的运算,例如,在处理神经网络时通常使用的运算。例如,NPU可以被配置和优化为更(最)有效地执行“常规”(例如,常规3×3)卷积。因此,NPU能够以NPU的处理电路(例如,MAC单元)的更高利用率非常有效地执行这些处理运算。
然而,申请人已经认识到,当尝试处理其他算子时,NPU的利用率通常可能显著降低。
特别地,申请人已经发现,当执行表征MobileNetV2模型的传统反转瓶颈块(IBN)时,NPU利用率相对较差。
这意味着即使IBN块的使用可以帮助减少模型内的处理运算的总数(与不使用反转瓶颈的其他网络相比),并且这些IBN块通常可以在通用处理器(例如,使用CPU)上有效地处理,从而尝试在现有NPU上执行这些IBN块通常可能引入显著的性能夹点,因此首先削减了使用IBN块的益处。
申请人已经发现,MobileNetV2模型中的最终层存在类似的执行问题,其具有大的计算成本,并且需要显著的带宽,并且因此可能难以执行,特别是使用受限NPU(但也通常使用受限NPU)。
因此,本文所述技术认识到,能够提供与MobileNetV2类似的基于神经网络的模型将是有益的,例如,该模型能够实现与MobileNetV2类似的准确率,但是可以以更有效的方式执行,例如并且在一个实施方案中,通过神经网络处理硬件加速器(例如,NPU)执行,并且在一个实施方案中,以硬件加速器(NPU)处理电路的更好利用率执行。
为了解决这个问题,如上所述,本文所述技术因此提出了一种新的神经网络架构,其是基于多个新颖的神经网络处理块,该神经网络处理块可以从用于训练目的以实现期望的准确率的第一(完整)格式变换成缩减格式以供执行,例如以实现更有效的执行。
根据本文所述技术的神经网络,至少在其‘完整’版本(将被训练的版本)中,因此可以例如并且在一个实施方案中确实包括多个不同的‘可缩减’块,该块以第一(完整)格式用于训练过程,但是然后该块可以替换(并且被替换)为块的适当缩减格式版本以供执行。
(当然,如果需要的话,在神经网络中也可以有其他不可缩减块。在这方面,当决定在神经网络内包括哪些块的布置时,各种布置将是可能的,如下面将进一步解释的。)
因此,本文所述技术的一个方面是可以以上述方式分析地变换的新颖类型的神经网络处理块的构造。
例如,在一个实施方案中,整个神经网络结构在设计上类似于MobileNetV2(如上所述,其是基于IBN块序列),但是在一个实施方案中,MobileNetV2模型中的至少一些IBN块被替换为‘可缩减’反转瓶颈块,该反转瓶颈块可以从用于训练并且包括‘反转瓶颈’运算序列的第一(完整)格式变换成第二(缩减)格式以供执行。因此,根据第一(完整)格式的实施方案的反转瓶颈块执行与MobileNetV2中的IBN块类似的卷积运算集合,包括‘反转瓶颈’处理,但是以这样的方式构造:由反转瓶颈块表示的卷积运算序列可以在输出模型(即,在执行时使用的模型)中被替换为可以更有效地处理的类型的一个或多个“常规”卷积运算(例如,常规3×3卷积)的(缩减)集合。
此外,这种替换以这样的方式进行,该方式使得模型仍然保持适当的高准确率,并且不会显著增加模型的大小。
具体地说,根据实施方案,被提供用于训练的神经网络包括一个或多个(并且在一个实施方案中,包括多个)‘可缩减’反转瓶颈块,该反转瓶颈块在第一(完整)格式中包括(反转瓶颈)卷积运算的集合,该卷积运算包括将一组k个特征扩展到更高维度(例如,并且在一个实施方案中,通过应用1×1卷积)的扩展运算、更高维度中的深度可分离卷积,以及将特征从更高维度缩减到k’个特征的输出集合(例如,并且在一个实施方案中,通过应用另一个1×1卷积)。
应当理解,在一个实施方案中,本文所述技术的可缩减反转瓶颈块执行与MobileNetV2架构内的IBN块类似(相同)的(反转瓶颈)卷积运算序列。
(因此,在实施方案中,整个神经网络在形式上类似于MobileNetV2模型,但是MobileNetV2模型中的至少一些传统IBN块被替换为本文所述技术的‘可缩减’反转瓶颈块。)
然而,与传统IBN块相反,根据本文所述技术的实施方案的‘可缩减’反转瓶颈块以这样的方式构造,该方式使得块可以从其包括上述完整的卷积运算序列的第一(完整)格式被分析地折叠成包括一组常规(例如,常规3×3)卷积的块的缩减格式版本,缩减格式块因此被更好地优化以供执行。
具体来说,为了便于将反转瓶颈块从第一(完整)格式变换成使用一个或多个常规卷积运算的集合复制完整运算序列的结果的块的缩减格式版本,包括在反转瓶颈块中的卷积集合(即,扩展、深度可分离卷积和包括块的‘反转瓶颈’部分的缩减运算)在实施方案中被包括作为(严格)线性运算序列的一部分。因此,在一个实施方案中,要在块内应用的任何非线性运算(诸如非线性激活函数(例如,ReLU激活函数))在反转瓶颈块内的(反转瓶颈)卷积运算序列之外应用,并且与反转瓶颈块内的(反转瓶颈)卷积运算序列分开应用。在一个实施方案中,在(反转瓶颈)卷积运算之前立即应用非线性激活函数。
也就是说,与传统IBN块相比,例如在MobileNetV2中使用的传统IBN块,其中在初始扩展到更高维度之后和在深度可分离卷积之后,在反转瓶颈内应用ReLU激活函数,与本文所述技术的反转瓶颈块相关联的非线性激活(例如,ReLU)函数被放置在反转瓶颈卷积运算序列之外,特别地使得在第一(完整)格式中,其中在特征被扩展到更高维度并在被缩减回到较低维度之前在更高维度中处理,在扩展到更高维度之前的实施方案之外应用非线性激活函数。
这意味着本文所述技术的反转瓶颈块可以以传统IBN块不可能的方式分析地折叠。例如,ReLU激活函数是分段函数,如果输入为正,则该分段函数将直接输出输入,否则,该分段函数将输出零。因此,在传统IBN块中,在每次卷积运算之后,在反转瓶颈内应用这种非线性。
然而,本申请人已经认识到,至少在一些情况下,这种非线性可以移动到反转瓶颈卷积序列之外(同时仍然保持足够的准确率),并且进一步地,通过将非线性激活函数移动到包括反转瓶颈的卷积运算序列之外,然后可以将反转瓶颈块内的反转瓶颈卷积运算序列变换成例如硬件加速器(NPU)被优化以执行的类型的“常规”卷积运算的集合,例如常规3×3卷积,在执行时不损失准确率。
通过包括卷积集合(其包括块的反转瓶颈部分)作为线性运算序列的一部分,因此可以分析地将包括反转瓶颈卷积的集合的线性运算序列折叠(例如,合并)成复制完整运算序列的结果的一组一个或多个常规卷积。
因此,解析变换有效地将处理运算的第一(完整)序列合并或折叠成处理运算的缩减集合。对应地,用于第一格式块中的处理运算(层)的神经网络参数(权重)可以以类似的方式合并或折叠,以将由用于第一格式块中的处理运算(层)的训练过程确定的神经网络参数(权重)适当地变换成用于第二格式块的一组神经网络参数(权重)。例如,处理运算通常涉及矩阵乘法,其中矩阵值表示要应用的神经网络参数(权重)。因此,解析变换可以特别是通过将一些处理运算(矩阵)合并在一起来有效地将第一矩阵乘法序列中的矩阵替换为表示不同处理运算(例如,表示常规3×3卷积)的矩阵的不同集合,如下面将进一步描述的。这可以由于处理运算的线性而完成。
相反,在传统的MobileNetV2 IBN块中,因为非线性ReLU激活函数在反转瓶颈运算内应用,使得非线性在反转瓶颈运算序列内应用,所以定义反转瓶颈的卷积序列不能以这种方式分析地变换。
因此,如上所述,然后可以(并且)使用第一(完整)格式的可缩减反转瓶颈块(即,使用由块表示的完整运算序列)来训练本文所述技术的神经网络,包括以下步骤:将输入特征扩展到更高维度,在更高维度中执行深度可分离卷积,然后将特征缩减到较低维度以供输出。
因此,一个(和每个)‘可缩减’反转瓶颈块可以以第一(完整)格式执行处理运算序列,该处理运算将一组k个输入特征处理成相应的一组k’个输出特征(其中k可以等于或可以不等于k’),但是其中存在多个中间层,该中间层将特征扩展到更高维度,并在此更高维度中处理特征。然后可以使用呈此第一(完整)格式的块来训练神经网络以实现期望的准确率。例如,将特征扩展到更高维度以及在更高维度中处理特征可以提供更高的准确率。
另一方面,如上所述,由于扩展到更高维度,因此该反转瓶颈卷积运算序列在硬件处理电路中(例如在NPU中)执行可能是低效的。
因此,根据本文所述技术,在被提供以供输出(以供执行)的模型的版本中,反转瓶颈块可以被(并且反转瓶颈块中的至少一些反转瓶颈块被)替换为块的对应缩减格式版本,该块的对应缩减格式版本类似地将一组k个输入特征处理成相应的一组k’个输出特征,但是使用一个或多个“常规”卷积运算(例如,常规3×3卷积)的集合,该卷积运算的类型可以比在硬件中更有效地执行,即,不将特征扩展到不同的维度。
也就是说,一旦使用呈第一(完整)格式的块针对期望的神经网络处理任务适当地训练了神经网络,而不是简单地部署神经网络的训练版本以供执行,则将‘可缩减’反转瓶颈块中的一个或多个反转瓶颈块(或全部)替换为块的对应缩减格式版本以供执行。然后可以根据需要执行包括神经网络的缩减格式版本的模型,以便执行神经网络处理任务。
因此,当执行模型时,在缩减格式反转瓶颈块的位置处,在一个实施方案中,执行将包括执行一组常规(例如,常规3×3)卷积(在一个实施方案中,执行该一组常规卷积以及一个或多个非线性激活函数(例如,ReLU函数),该非线性激活函数与常规卷积分开应用,例如紧接在常规卷积之前)。
因此,在神经网络的缩减格式版本(执行格式)中,在一个实施方案中,在缩减格式反转瓶颈块的位置处执行的运算包括应用一个或多个非线性激活(例如,ReLU)函数,然后执行一组一个或多个常规(例如,常规3×3)卷积。
因此,在实施方案中,神经网络包括一个或多个反转瓶颈块,该一个或多个反转瓶颈块在第一(完整)格式中被配置为执行卷积运算序列,该卷积运算取一组k个输入特征、将该一组k个输入特征扩展到更高维度、在更高维度中执行深度可分离卷积,然后将特征从更高维度缩减到一组k’个输出特征,并且反转瓶颈块可以从第一格式变换成缩减格式块以供执行,反转瓶颈块的第二(缩减)格式版本包括一个或多个常规卷积运算的集合,该常规卷积运算将一组k个输入特征处理成一组k’个输出特征,而不将特征扩展到更高维度。
在实施方案中,(在两种格式中)可缩减反转瓶颈块还包括单独应用并且在卷积运算序列之外应用的非线性激活函数。
在实施方案中,非线性激活函数是ReLU函数。然而,也可以根据需要(以两种格式)应用其他(非线性)激活函数以提供非线性。可以用于提供期望的非线性的合适的激活函数的一些其他非限制性示例包括高斯误差线性单元(GELU)或“Swish”函数。此类激活函数可以应用于反转瓶颈块内的任何合适的位置,只要该块仍然可以以上述方式从其第一(完整)格式适当地变换为第二(缩减)格式(例如,只要在要从第一格式分析地折叠到第二格式的运算之外应用任何非线性)即可。
在实施方案中,还执行一个或多个批归一化运算。这些通常可以应用于块内的任何合适的位置,例如,因为批归一化是线性函数。可以根据需要应用任何其他合适的函数或运算。
然后,所有这些的效果是提供用于执行的神经网络的更执行友好的版本,例如,并且在一个实施方案中,其可以在硬件中更有效地执行。例如,如上所述,在一个实施方案中,该模型由诸如NPU的硬件加速器执行,该硬件加速器可以可操作并被配置为以硬件加速器的处理电路的更高的效率和利用率来执行某些类型的“常规”(例如,常规3×3)卷积运算,但是当尝试在反转瓶颈块中执行完整的运算序列时,可能具有相对较差的性能。
在实施方案中,然后将来自(可缩减)反转瓶颈块的输出特征提供给神经网络中的下一个层或块。
在一些实施方案中,输出特征直接作为输入提供到神经网络中的下一个层或块。在其他实施方案中,(可缩减)反转瓶颈块中的至少一些反转瓶颈块包括‘残差’块,其中输出特征与输入特征组合(例如,添加到输入特征),并且然后将组合的‘残差’提供给神经网络中的下一个层或块。
在非残差块的情况下,其中将块的输出直接作为输出提供给下一层(不与块的输入组合)可以具有上述形式,并且可以分析地变换成单个常规(例如,常规3×3)卷积。
然而,在残差块的情况下,可以将可缩减反转瓶颈块变换成一组两个常规(例如,常规3×3)卷积,在一个实施方案中,激活函数(例如,ReLU)应用于卷积集合之间。在这种情况下,在第一(完整)格式中,反转瓶颈块可以相应地包括第一激活函数(例如,ReLU)、运算的第一反转瓶颈序列(包括扩展、深度可分离卷积、缩减);第二激活函数(例如,ReLU)和运算的第二反转瓶颈序列(包括扩展、深度可分离卷积、缩减)。在训练时间,神经网络可以因此完全训练。然而,在执行时间,这缩减到一对常规卷积,每个常规卷积具有相关联的激活函数(ReLU)。
就这一点而言,各种布置将是可能的。
本文所述技术的‘可缩减’反转瓶颈块可以根据需要例如以与MobileNetV2中传统IBN块类似的方式包括在神经网络内的适当位置处。
除了使用可以例如以上述方式缩减以供执行的新的可缩减反转瓶颈块之外,在一个实施方案中,类似的方法也用于神经网络的最终(输出)层。
在这方面,本申请人已经进一步认识到,MobileNetV2中的最后几个(输出)层表示当执行模型时的另一个潜在性能夹点。
例如,在MobileNetV2中,神经网络的最后几层通常包括扩展(1×1卷积),随后是由以下组成的运算序列:批归一化(BN)、ReLU、池化(平均)层和最终的全连接层。在扩展的一组特征上执行全连接层在计算上可能非常昂贵,因为这涉及要执行的更大数量的处理运算,并且申请人已经发现这可能难以有效地进行(无论是使用专用神经网络处理硬件(例如,NPU)还是以其他方式)。
因此,在实施方案中,本文所述技术中的神经网络的输出层包括‘可缩减’输出块,该输出块在其第一(完整)格式中执行与MobileNetV2中的输出层类似的运算,但是可以在执行时以与上面针对反转瓶颈块描述的类似方式被缩减为缩减的、更执行友好的格式。
具体地说,在第一格式中,本文在一个实施方案中所述技术的‘可缩减’输出块包括运算集合,该运算包括(按顺序):非线性激活函数(例如,ReLU);将输入特征扩展到更高维度的扩展运算(在包括1×1卷积的实施方案中);批归一化激活函数;池化(平均)层;以及在更高维度中执行的全连接层。
同样,因为非线性激活(ReLU)函数在卷积(扩展)运算之外并且与卷积(扩展)运算分开应用,所以这意味着卷积运算可以被变换成可以在硬件中更有效地执行的缩减格式。
例如,通过将非线性移动到其他运算之外,则可以分析地将输出块的完整运算序列缩减到可以在硬件中更有效地执行的较小的全连接层中。
在一个实施方案中,这通过将池化运算移动到其他运算之外,然后将扩展运算与最终的全连接层合并来完成。因此,在缩减格式中,实施方案中的输出块包括运算集合,该运算包括(按顺序):应用非线性(例如ReLU)激活函数;执行池化运算;以及然后执行全连接层。
因此,输出块取一组m个特征作为输入并且将其处理成一组m’个输出特征。在第一(完整)格式中,此处理涉及将该一组m个输入特征扩展到更高维度,然后处理更高维度中的特征,包括在更高维度中执行全连接层。然而,在缩减格式中,在较低维度中执行全连接层,使得全连接层取一组m个输入特征并将这些输入特征处理为一组m’个输出特征(直接地,在没有到更高维度的任何中间扩展的情况下)。因此,可以在执行时更有效地执行此较小的全连接层。
因此,在实施方案中,神经网络包括‘可缩减’输出块,该输出块在第一格式中包括运算序列,该运算包括将一组m个输入特征扩展到更高维度,然后在更高维度中执行全连接层运算以提供一组m’个输出特征,该可缩减输出块被替换为缩减格式输出块,该缩减格式输出块包括在神经网络的执行版本中将一组m个输入特征处理为一组m’个输出特征的全连接层运算。
在一个实施方案中,(呈两种格式的)输出块还包括非线性激活函数,例如,并且在一个实施方案中,包括ReLU,该非线性激活函数在块的输入处应用,即在第一(完整)格式的扩展之前和在第二(缩减)格式的全连接层之前应用。
因此,除了包括本文所述技术的‘可缩减’反转瓶颈块中的一个或多个反转瓶颈块(并且在一个实施方案中包括多个反转瓶颈块)之外,本文所述技术的神经网络在一个实施方案中还包括‘可缩减’输出块。
可以设想,根据需要,例如根据神经网络的结构,也可以使用各种其他类型的‘可缩减’块。
神经网络还可以例如取决于神经网络的结构而包括其他类型的非可缩减块。例如,MobileNetV2中的第一处理块包括全卷积层。这也可以在本文所述技术的神经网络中提供。在一些实施方案中,初始全卷积层也可以被替换为可缩减反转瓶颈块。这将产生与全卷积层相同的大小和结构,但可以提高准确率性能。当然,其他布置也是可能的。
与MobileNetV2相比,通过使用可以以本文所述技术的方式缩减的新类型的块,因此可以提供更硬件友好的模型(其可以由专用硬件加速器(例如,NPU)更有效地执行),同时仍然实现更高的准确率,并且不增加神经网络的大小。
因此,一旦模型以其‘完整’格式被训练,则模型以缩减格式被提供以供输出(以供执行),并且随后模型的缩减格式版本被使用(执行)以执行神经网络处理任务。
因此,在实施方案中,在提供模型以供输出之后,方法还包括执行包括经过训练的神经网络的缩减格式版本的模型以执行神经网络处理任务。
受制于本文所述技术的特定要求,本文所述技术的神经网络可以根据需要用于任何合适的神经网络处理。例如,基于神经网络生成的模型可以被配置(训练)以执行任何合适的神经网络处理任务。在实施方案中,神经网络处理可以包括推断或分类任务。
因此,模型可以用于将任何合适的输入特征(其可以例如包括输入图像、音频文件或任何其他合适的数据集)处理成期望的输出(其可以是输出结果,例如推断或分类结果)。
对应地,可以例如基于所讨论的神经网络处理任务使用任何合适的训练数据集来训练神经网络。训练本身可以根据需要例如以已知的方式进行。在一个实施方案中,这使用适当的包括适当的输入/输出特征的训练数据以受监督方式执行,这取决于所讨论的推断或分类任务。
训练通常(在一个实施方案中)提前并“离线”执行,并且可以在任何合适的处理器上执行。
应了解,模型的执行因此可以大体上并且通常在初始模型生成之后的某个时间发生,并且通常在不同的位置(在不同的处理器上)发生。例如,模型将正常情况下(并且在一个实施方案中)离线生成,并且然后提供给数据处理系统以供根据需要并在需要时使用。当执行需要神经网络处理的应用程序时数据处理系统的主机处理器(例如,CPU)可接着触发模型的期望神经网络处理。
在一个实施方案中,这是通过将神经网络处理中的至少一些神经网络处理负载到专用硬件加速器(例如,NPU)来完成的,如将在下文进一步解释的,并且神经网络在一个实施方案中被优化以用于由硬件加速器(例如,NPU)执行。
因此,这表示可以使用硬件加速器(NPU)有效地处理神经网络的显著改进,具有这样做的相关益处。因此,通过在第一位置使用硬件加速器(NPU),并且通过优化神经网络以供硬件加速器(NPU)执行,可以提高总效率。
然而,应当理解,本文所述技术的神经网络不限于在专用硬件加速器(例如,NPU)上执行,并且神经网络处理通常可以在任何合适的处理电路或硬件上执行,诸如图形处理器(图形处理单元,GPU)、中央处理器(中央处理单元,CPU)或它们的某种组合。在这种情况下,本文所述技术仍然可以通过允许块被折叠成更执行友好的格式来提供允许基于可用硬件的更优化的执行的益处。
因此,与现有的神经网络架构相比,本文所述技术的神经网络提供各种益处。
具体地说,如上所述,这的一个方面是构造促进此变换的新类型的块,例如新类型的‘可缩减’反转瓶颈块和‘可缩减’输出块。
因此,本文所述技术的神经网络包括这些类型的可缩减块中的至少一些可缩减块。神经网络通常可以包括这些块的任何合适数量和布置。神经网络还可以包括任何其他合适的和期望的处理块,该处理块可以是可缩减的或不可缩减的,这取决于其目的。
举例来说,在实施方案中,块的总体结构和布置类似于MobileNetV2,例如包括反转瓶颈块序列,但其中传统MobileNetV2 IBN块中的至少一些MobileNetV2 IBN块被替换为本文所述技术的反转瓶颈块,并且输出层被替换为本文所述技术的可缩减输出块。然而当然,其他布置也是可能的。
在一些实施方案中,神经网络还可以包括至少一些传统IBN块(该传统IBN块不以上述方式被缩减或替换)。
也就是说,通常可以存在神经网络内的不同类型的块(包括可缩减反转瓶颈块和传统IBN块)的混合物。同样,在一些实施方案中,‘可缩减’块中的一些块可以以第一(完整)格式保持以供执行。也就是说,在一些情况下,‘可缩减’块可能不被替换为其缩减格式版本(即使在其可能这样做的情况下也是如此)。
因此,被执行的模型的版本可以包括不同类型的块的混合物。可以根据需要确定例如基于期望的性能水平选择在神经网络内的哪些位置处使用哪些块。
举例来说,在神经网络内可能存在一些层,其中实现使用传统IBN块(或者类似地,使用以第一格式保持以供执行的呈第一(完整)格式的可缩减块)可能实现的更高性能是更关键的,使得可以容忍降低的执行效率。然而,神经网络中的其他块对于准确率可能不太重要,使得这些块可以(并且在一个实施方案中)被替换为本文所述技术的新的可缩减反转瓶颈块,以提高执行效率而不显著损失准确率。
例如,已经发现,神经网络中的初始层提供更高的准确率可能更重要,在这种情况下,初始层可以包括呈完整格式的反转瓶颈块(即,呈第一(完整)格式的可缩减块,或传统IBN块)。另一方面,当训练网络时,可以在神经网络的其他层中利用‘可缩减’反转瓶颈块,然后在执行时将其替换,而不降低模型性能。就这一点而言,各种布置当然将是可能的。
存在各种方式来确定应在哪些位置处使用哪些块。例如,这可以手动完成或通过试错的过程来完成。还已知当生成神经网络时采用神经架构搜索(NAS)算法以便优化神经网络结构。现有NAS算法的问题在于,它们通常未被设计成优化神经网络以供特定硬件执行。例如,传统IBN块可以使用通用处理器有效地执行。然而,申请人已经认识到,当使用专用硬件加速器(例如,NPU)执行这些传统IBN块时,可能存在问题。
更一般地说,本申请人认识到,可能的情况是,使用哪种类型的块的最佳选择可以取决于可用的处理资源以及期望的准确率性能。因此,在实施方案中,训练过程可以还包括确定哪些块可以(并且因此应该)被替换为对应的缩减格式块以供执行,并且哪些块不应以这种方式被替换。例如,可能的情况是某些块比其他块对准确率性能更关键,并且对于该某些块,因此可能更适合使用传统IBN块,其中非线性包括在反转瓶颈卷积运算内。另一方面,可能存在线性是可接受的(即,不显著降低准确率)的其他块,并且因此该块可以被替换为本文所述技术的可缩减反转瓶颈块,以便于在可用处理资源上执行。
因此,申请人还开发了一种有效(例如,轻量级、快速)NAS算法,该算法能够确定例如神经网络内的给定反转瓶颈块是应包括传统IBN块还是本文所述技术的可缩减反转瓶颈块。NAS算法在基于包括多个“NAS瓶颈”块的神经网络模型的实施方案中,如下文将解释的。NAS瓶颈块被参数化,使得NAS算法可以确定在神经网络内的给定位置处的给定NAS瓶颈块是传统IBN块(在反转瓶颈内应用非线性)还是本文所述技术的可缩减反转瓶颈块(在反转瓶颈之外应用非线性)是最佳的。因此,在一个实施方案中,NAS瓶颈块具有与MobileNetV2中的传统IBN块类似的结构,除了反转瓶颈内的ReLU激活函数被替换为参数ReLU函数(PReLU)。PReLU函数是将传统ReLU函数一般化为具有负值斜率的激活函数。
例如,如上所述,ReLU激活函数是分段函数,如果输入为正,则该分段函数将直接输出输入,否则,该分段函数将输出零(即,如果y≥0,则f(y)=y;如果y<0,则f(y)=0)。PReLU函数对此进行一般化,使得如果输入为正,则它将直接输出输入,但是如果输入(y)为负,则它将输出具有缩放因子‘a’的输入的缩放版本(即,如果y≥0,则f(y)=y;如果y<0,则f(y)=a.y)。因此,这种PReLU函数的想法是不同的层可能需要不同类型的非线性,并且斜率参数‘a’可以用于将此参数化。
因此,实施方案中的NAS瓶颈块包括以下运算序列:第一PReLU激活函数、1×1卷积(扩展)运算、第二PReLU激活函数、3×3深度可分离卷积、第三PReLU激活函数和1×1卷积(缩减)运算。在一个实施方案中,每个PReLU激活函数也与批归一化函数相关联,该批归一化函数与PReLU函数同时应用。
然而,本申请人已经认识到,通过将IBN块内的ReLU函数替换为此类PReLU函数,然后相应地训练包括这些NAS瓶颈块的神经网络的版本,训练将自动确定缩放因子‘a’的最佳值,并且这可以用于在不同类型的块之间进行选择。
具体地说,在本文所述技术的NAS算法中,PReLU缩放因子‘a’被约束为仅‘0’或‘1’。而且,反转瓶颈块内的两个PReLU激活函数的缩放因子(即,在扩展之后和深度可分离卷积之后)被约束为始终具有相同的值。
然后可以适当地训练包括NAS瓶颈块的神经网络,以便确定应在哪些位置处包括哪些类型的块。
因此,NAS算法可以在包括NAS瓶颈块的神经网络上执行,以确定用于NAS瓶颈块中的每一个NAS瓶颈块的缩放因子的最佳值。以此方式,算法可以在传统IBN块与本文所述技术的可缩减反转瓶颈块之间自动选择。
例如,应当理解,当缩放因子a=0时,这意味着PReLU与传统ReLU激活函数相同。这意味着在反转瓶颈块内部具有非线性是最佳的,并且因此应最佳地使用传统IBN块。
另一方面,当缩放因子a=1时,激活函数在整个输入范围内是严格线性的。因此,这意味着可以容忍将线性引入反转瓶颈块中,这意味着可以使用本文所述技术的可缩减反转瓶颈块。
因此,这些NAS瓶颈块的使用提供了有效的‘一次性’算法,该算法能够在这些不同类型的块之间自动选择作为训练过程的一部分。对于确定可以使用本文所述技术的可缩减反转瓶颈块的任何块,然后该块可以相应地被替换为对应的第二(缩减)格式块以供执行。
此块结构选择在一个实施方案中执行,作为可执行模型的生成的一部分。例如,在一个实施方案中,生成候选神经网络模型,包括一定数量和布置的反转瓶颈块。作为初始训练过程的一部分,然后使用包括NAS瓶颈块的神经网络的版本来执行NAS块结构选择的步骤,以便确定哪个反向瓶颈块应当包括传统IBN块以及哪个反向瓶颈块应当包括本文所述技术的可缩减反向瓶颈块。
因此,在一些实施方案中,在执行NAS块结构选择以确定哪些块应该包括哪种类型的反转瓶颈块之后,由NAS块结构选择所生成的神经网络的版本,即包括本文所述技术的传统IBN块和可缩减反转瓶颈块的所确定的布置,然后经历进一步训练(例如,微调)过程,以确定神经网络的该版本的神经网络参数(权重),其中神经网络的该版本中的可缩减反转瓶颈块中的至少一些反转瓶颈块然后被替换为缩减格式块以供执行。
在这种情况下,初始NAS训练可以简单地确定哪些块应该包括非线性以及哪些块可以是线性的,然后可以在这些位置处设置任何合适的非线性/线性块以定义用于(进一步)训练的神经网络的第一版本。
然而,在其他实施方案中,执行还包括NAS块结构选择过程的单个训练过程。在这种情况下,包括NAS瓶颈块的神经网络的版本可以是如上所述训练的神经网络的第一版本。也就是说,包括NAS瓶颈块的神经网络的版本可以被训练,并且在此训练之后,NAS瓶颈块将被适当地替换为传统IBN块,或者本文所述技术的可缩减反转瓶颈块(其又随后被替换为块的缩减格式版本以供执行)。也就是说,块类型选择可以并入到单个训练步骤中,该训练步骤自动确定在哪些位置处应该包括哪些类型的块,并且还确定块应具有的神经网络参数(权重)。
当训练过程还包括NAS块结构选择过程时,用于训练的神经网络的版本因此在神经网络中的要放置反转瓶颈块的每个位置处包括新类型的“NAS瓶颈块”。因此,块的第一格式版本可以是NAS瓶颈块,并且作为训练过程的结果,呈第一格式的NAS瓶颈块中的至少一些NAS瓶颈块可以被替换为对应的缩减格式块(用于执行),其中NAS训练确定适合这样做。(相反,在一个实施方案中,传统IBN块然后用于NAS训练确定不应该以这种方式缩减的剩余块。)
因此,在实施方案中,第一格式的神经网络包括一个或多个反转瓶颈块,该一个或多个反转瓶颈块包括一组参数化激活函数(例如,参数化整流线性单元(PReLU)激活函数),其中训练包括呈第一格式的块的神经网络的第一版本包括确定用于参数化激活函数的(最佳)参数。用于参数化激活函数的(最佳)参数可以指示块是否可以被替换为对应的呈第二(缩减)格式的块以供执行。然后,训练过程确定可以以这种方式替换哪些块。因此,该方法可以还包括基于所确定的用于参数化激活函数的最佳参数来确定替换哪些呈第一格式的块。在一个实施方案中,确定用于参数化激活函数的最佳参数的训练过程还考虑了模型被设计为执行的硬件。
在一个实施方案中,参数化激活函数包括整流线性单元(PReLU)激活函数,其中在一个实施方案中的参数被约束为指示块可以被替换为块的对应第二格式版本以供执行的第一值,以及指示块不应被替换以供执行的第二值。例如,第一值可以指示线性是可接受的(例如,PReLU参数是‘1’,使得函数是线性的),并且因此可以将本文所述技术的可缩减反转瓶颈用于该块。第二值可以相反地指示该块中期望一些非线性(例如,PReLU参数是‘0’,使得PReLU变为ReLU函数),并且例如,应在该位置使用传统IBN块。
然而,其他布置也是可能的。例如,参数化整流线性单元(PReLU)激活函数可以被约束为指示一种类型的块的单个值,并且如果训练不收敛,则这可以被认为意味着应当使用另一种类型的块。同样,通过NAS块的适当设计,可以使用其他参数化激活函数来实现类似的效果,以确定在何处可能需要或可能不需要线性(例如,在何处线性可以是可接受的,同时仍然实现期望的性能准确率)。
在任一情况下,一旦训练完成,则可以相应地提供包括所选择的块的经过训练的神经网络以用于输出(用于执行),其中在适当时,该块中的一些块被替换为对应的第二(缩减)格式块,如上所述。
当然,用于确定基础神经网络结构的各种其他布置是可能的。
上述说明书主要解释了根据本文所述技术的可执行模型的生成,特别是通过以下两阶段过程:训练呈第一(完整)格式的神经网络,然后将神经网络处理块中的一些神经网络处理块替换为对应的呈第二(缩减)格式的块以供执行。
如上所述,此两阶段过程的结果是生成改进的可执行模型。例如,根据本文所述技术的可执行模型的特征可以在于在一个实施方案中促进硬件(CPU)执行的(常规)卷积运算的特定顺序,以及其大小的相对更高的准确率(例如,与基于类似的(常规)卷积运算的其他神经网络(诸如ResNetV2)相比)。
因此,本文所述技术还扩展到已经以这种方式生成并且包括本文所述技术的新颖神经网络处理块的可执行模型。
因此,本文所述技术的第二主要实施方案包括一种可由处理器执行以执行神经网络处理任务的可执行模型,其中该模型包括:
神经网络,该神经网络包括多个层,所述多个层一起被布置成处理到该神经网络的输入以生成相应输出,其中该神经网络包括多个块,每个块包括所述神经网络的一个或多个层,并且每个块被配置为执行相应的处理运算序列,
其中该神经网络包括一个或多个卷积块,每个卷积块包括至少一个非线性激活函数和一个或多个卷积运算的集合,其中将该至少一个非线性激活函数单独应用于该一个或多个卷积运算的集合;以及
将应用于神经网络处理层的一组神经网络参数。
应当理解,根据这些另外的实施方案执行的模型可以使用上面关于先前实施方案描述的任何或所有特征来生成,至少在它们不相互排斥的程度上。
因此,卷积块对应于呈第二(缩减)格式的本文所述技术的反转瓶颈块。因此,在一个实施方案中,卷积块内的一个或多个卷积运算的集合包括硬件加速器(例如,NPU)被配置为更有效地执行的类型的卷积运算的集合。这可以是(例如,并且在一个实施方案中是)一组“常规”(例如,常规3×3)卷积运算。
此外,实施方案中的一个或多个卷积运算的集合复制相应的反转瓶颈卷积运算序列的结果。通过将非线性激活函数与一个或多个卷积运算的集合分开应用,因此可以从缩减格式变换为完整格式(反之亦然),如上所述。
如上所述,在一个实施方案中,非线性激活函数包括ReLU激活函数。在一个实施方案中,在卷积块中的每个卷积运算之前应用ReLU激活函数。
也可以根据需要应用其他激活函数。例如,在实施方案中,还可以应用一个或多个批归一化激活函数。这些可以在任何位置应用,因为它们是线性的并且不影响第一(完整)格式与第二(缩减)格式之间的变换。
卷积块可以包括非残差块。然而,卷积块中的至少一些卷积块可以包括残差块。如上所述,在残差块的情况下,在一个实施方案中,卷积块包括一组两个常规(例如,常规3×3)卷积,在一个实施方案中,在第一卷积之前应用第一非线性激活函数(例如,ReLU)并且在卷积集合之间应用第二非线性激活函数(例如,ReLU)。
在一个实施方案中,神经网络还包括输出块,该输出块包括全连接层运算,该全连接层运算在神经网络的执行版本中将一组m个输入特征处理为一组m’个输出特征(直接地,在没有到更高维度的任何中间扩展的情况下)。实施方案中的输出块还包括在全连接层之前应用的非线性激活函数,例如,并且在一个实施方案中,包括ReLU。因此,输出块对应于上文以其缩减格式描述的可缩减输出块。
实施方案中的神经网络还在其输入处包括初始全卷积处理层。
在一个实施方案中,神经网络结构与MobileNetV2模型类似地布置(除了MobileNetV2模型中的传统IBN块中的一些传统IBN块被替换为根据本文所述技术的(缩减格式)卷积块,并且最终层被替换为(缩减)输出块)。
因此,在实施方案中,神经网络包括初始全卷积处理层,之后是(缩减格式)卷积块序列,并且然后是最终(缩减)输出块。如上所述,在实施方案中,神经网络可以包括(缩减格式)卷积块和传统IBN块的混合物。例如,已经发现,初始块包括传统IBN块可能是有益的,因为这些块对于实现更高准确率可能更关键。因此,在实施方案中,神经网络可以包括初始全卷积处理层,之后是一个或多个反转瓶颈块的第一序列、一个或多个(缩减格式)卷积块的第二序列,并且然后是最终(缩减)输出块。
块的各种其他布置当然也将是可能的。例如,在一些实施方案中,初始层还可以包括可缩减块,该可缩减块可以以上述类似的方式被替换以供执行。
一旦以这种方式生成可执行模型,则可以根据需要执行模型,例如当期望执行神经网络处理任务时。
模型可以根据需要由任何合适的处理电路执行。例如,在一些实施方案中,模型可以至少部分地由图形处理器(图形处理单元,GPU)执行。在一些实施方案中,模型可以至少部分地由数据处理系统的主要(例如主机)处理器执行,例如中央处理器(中央处理单元,CPU)。神经网络还可以由不同处理器的组合执行。在这方面,应当理解,使用缩减格式块来执行通常提供改进,而不管用于执行的特定处理电路如何,例如通过减少处理运算的数量等来促进执行。
此外,本文所述技术允许神经网络模型被适当地设计用于使用可用处理电路的最佳执行,不管该可用处理电路是何。例如,应当理解,任何特定处理元件都可以被配置为更有效地执行一些处理运算,并且本文所述技术通常允许将呈第一格式的块替换为对应的呈第二(缩减)格式的块以促进改进的执行,但是呈第二格式的块的最佳形式可以取决于期望针对其优化神经网络执行的处理元件而不同。
例如,在一些实施方案中,执行模型以执行神经网络处理任务的步骤至少部分地使用硬件加速器(例如,NPU)来执行,并且在一个实施方案中,缩减格式块相应地被优化以用于由硬件加速器(例如,NPU)执行。
神经网络处理硬件加速器(NPU)通常被配置为以优化方式执行(至少一些类型的)神经网络处理(执行)。在一个实施方案中,硬件加速器(NPU)包括被配置为执行MAC处理运算的多个MAC处理电路。硬件加速器(NPU)可以被(例如,并且在一个实施方案中被)配置为使得当执行常规(例如,常规3×3)卷积时,MAC处理电路被优化。
然而,其他布置将是可能的,并且硬件加速器(NPU)(MAC处理电路)原则上可以被配置为最佳地执行任何合适的和期望的处理运算。在这种情况下,本文所述技术中的缩减格式块可以被适当地设计为包括被设计为执行模型的特定硬件加速器(NPU)被配置为更有效地执行的任何类型的处理运算。
神经网络处理硬件加速器(NPU)应当并且在一个实施方案中确实包括例如适合于执行神经网络处理运算的适当的处理电路、逻辑等。因此,在一个实施方案中,硬件加速器(NPU)尤其包括处理电路,该处理电路被配置为将过滤器应用于输入数据阵列,并且在一个实施方案中使用输入数据和权重数据来执行加权求和。在一个实施方案中,硬件加速器(NPU)包括用于执行加权求和的适当电路。在一个实施方案中,硬件加速器(NPU)被配置为执行加权求和作为乘积累加运算,并且因此处理器包括用于执行乘积累加运算的一个或多个乘积累加电路(或者称为乘积累加器或“MAC单元”)。
在一个实施方案中,硬件加速器(NPU)在并行布置的实施方案中包括多个乘积累加电路(MAC单元)。
在一个实施方案中,神经网络处理硬件加速器(NPU)(相关的处理电路,例如处理器的MAC单元)特别地被配置(构造)为以有效的方式执行特定的、在实施方案中选择的、在实施方案中预定的神经网络处理运算,并且最在实施方案中被配置为以特定的、在实施方案中选择的、在实施方案中预定的方式将过滤器应用于输入数据阵列。
在一个实施方案中,神经网络处理硬件加速器(NPU)(的处理电路)被配置为(被优化以最有效地)根据特定的、在实施方案中选择的、在实施方案中预定的步长(对应于分别在应用过滤器的输入数据阵列的数据位置集合之间的x和y方向上的数据位置的数量)将过滤器应用于输入数据阵列。处理器可以被特别配置为使用任何合适的步长,但是在特定实施方案中配置为使用1×1步长。
神经网络处理硬件加速器(NPU)可以另外根据需要配置,并且可以例如具有硬件加速器(NPU)的通常或期望的特征中的任何特征。
如上所述,本文所述技术的可执行模型在一些实施方案中被设计成(并且最终)在此类硬件加速器(例如,NPU)上执行。因此,在一些实施方案中,模型可以被设计成由此类硬件加速器(NPU)有效地执行。
因此,本文所述技术还扩展到由以上述方式生成的模型的硬件加速器(例如,NPU)执行。
因此,本文所述技术的第三主要实施方案包括一种执行模型以使用包括多个乘积累加电路(MAC单元)的硬件加速器执行神经网络处理任务的方法,该模型包括:
神经网络,该神经网络包括多个层,该多个层一起被布置成处理到该神经网络的输入以生成相应输出,其中该神经网络包括多个块,每个块包括该神经网络的一个或多个层,并且每个块被配置为执行相应的处理运算序列,
其中该神经网络包括一个或多个卷积块,每个卷积块包括至少一个非线性激活函数以及该硬件加速器的乘积累加电路被配置为(最佳地,例如更有效地)执行的类型的一个或多个卷积运算的集合,其中将该至少一个非线性激活函数单独应用于该一个或多个卷积运算的集合;
该方法包括:
执行包括该神经网络的该模型以执行该神经网络处理任务;
其中执行包括该神经网络的该模型以执行该神经网络处理任务包括:使用该硬件加速器的该乘积累加电路来执行该硬件加速器的乘积累加电路被配置为(最佳地,例如更有效地)执行的该类型的该卷积块内的至少该卷积运算的集合。
根据本实施方案的本文所述技术可以具有上述任何任选特征,至少在它们不相互排斥的程度上。
因此,模型可以具有关于第二实施方案描述的模型的任何和全部任选特征。此外,在一个实施方案中,模型根据本文所述技术的第一实施方案的方法生成。
神经网络处理硬件加速器(NPU)可以在主机处理器(CPU)的控制下操作以根据需要并且在主机处理器上执行的应用程序需要时执行神经网络处理。因此,主机处理器可以向神经网络处理硬件加速器(NPU)发出命令以使神经网络处理硬件加速器(NPU)执行神经网络处理。然后,神经网络处理硬件加速器(NPU)可以使用其神经网络的版本(模型)相应地执行神经网络处理。
也就是说,可以提供神经网络处理硬件加速器(NPU)作为整体数据处理系统的一部分。
数据处理系统可被实现为可能需要执行神经网络处理的任何合适电子设备的一部分,例如台式计算机、便携式电子设备(例如平板计算机或移动电话)或其他电子设备。因此,本文所述的技术还扩展到包括本文所述技术的数据处理系统的电子设备(并且数据处理系统以本文所述技术的方式在其上操作)。在一个实施方案中,本发明的数据处理系统可被实现为便携式电子设备(诸如移动电话、平板计算机或其他便携式设备)的一部分。
数据处理系统可包括数据处理系统能够包括的任何所需部件和元件,诸如以下中的一者或多者或全部:显示处理单元(显示处理器)、中央处理单元(CPU)、图形处理单元(GPU)(图形处理器)、视频处理器、数字信号处理器、一个或多个神经网络处理器、显示器和存储器。
这些处理器可被布置在片上系统内。
数据处理系统的存储器可以包括用于存储特别是与神经网络处理有关的数据的存储器。例如,存储器可以存储用于输入数据阵列、输出数据阵列和权重数据阵列的数据。该存储器可包括能够位于芯片上的一个或多个本地存储器。本地存储器可以包括一个或多个高速缓存。
该存储器还可包括主存储器,该主存储器可以是能够位于芯片外的外部存储器。该主(外部)存储器可以是任何合适类型的存储器,诸如SDRAM。
数据处理系统(并且具体地说,数据处理系统的处理器)可操作以在执行神经网络处理时访问存在于本地存储器(高速缓存)中的数据。如果所需的数据尚未存在于本地存储器中,则数据处理系统可操作以请求将从主(外部)存储器传送到本地存储器的数据。数据处理系统可以包括一个或多个电路,用于将数据从主存储器传送到本地存储器(并且用于将数据从本地存储器传送到主存储器),例如,可以与将用于执行神经网络处理的处理器相关联的一个或多个直接存储器访问(DMA)单元。
本文所述技术可用于与任何合适和期望的神经网络结合。在实施方案中,神经网络是卷积神经网络。
待执行的神经网络处理可以包括修改输入数据阵列以生成对应输出数据阵列的任何合适的运算。
待执行的神经网络处理可以是神经网络处理层的一部分(或可以构成神经网络处理层)。神经网络处理层可以是依次执行的复数个神经网络处理层中的一个神经网络处理层。所讨论的神经网络处理层可以包括复数个层的序列中的第一层。替代地,所讨论的神经网络处理层可以包括复数个层的序列中的不是第一层(是中间层)的层。每个神经网络处理层可以处理输入数据阵列(输入特征图)以生成输出数据阵列(输出特征图),其中当要依次一个接一个地执行复数个神经网络处理层时,由层生成的输出数据阵列至少部分地用作序列中的下一层的输入数据阵列。
待执行的神经网络处理可以是神经网络处理层的一部分(或可以构成神经网络处理层),该神经网络处理层是神经网络的卷积层、反卷积层或池化层。
待根据神经网络处理处理的输入数据阵列可以是任何合适的输入数据阵列(输入特征图)。输入数据阵列可以包括(复数个)数据位置的阵列,每个数据位置具有与该阵列相关联的一个或多个数据值。
被处理的输入数据阵列可以包括存储在存储器中并且根据神经网络处理层来处理的整个输入数据阵列(例如,整个输入特征图)。可替代地,正在处理的输入数据阵列可以包括整个输入数据阵列(例如,其存储在存储器中)的(仅)一部分,例如,其中整个输入数据阵列被处理为组成整个输入数据阵列的多个部分(片)。在这种情况下,在一个实施方案中,输入特征地图的每个部分(片)分别以本文所述技术的方式处理。
被处理的输入数据阵列可以包括较大输入数据阵列的区域(较大输入数据阵列对应于例如要由神经网络处理层处理的整个输入特征图),其中所述较大输入数据阵列可以被划分成任何合适数量的区域(片)以供处理器处理。
神经网络处理可以例如依次对对应于较大输入数据阵列的区域的每个输入数据阵列执行处理,从而操作基于片的处理方案(其中每个片对应于较大输入数据阵列的区域)。
因此,被处理的输入数据阵列可以包括用于神经网络处理层的输入特征图(的至少一部分)。
输出数据阵列(其通过神经网络处理从输入数据阵列生成)可以相应地包括用于神经网络处理层的输出特征图(的至少一部分)。输出数据阵列可以包括数据位置的阵列,每个数据位置具有与该阵列相关联的一个或多个数据值。输出数据阵列可以被写入存储器,或者可以例如在处理后续神经网络处理层时直接提供给处理器以用作输入数据阵列。
输入特征图可以对应于由数据处理系统接收的任何合适的数据(或从该数据导出),用于根据神经网络处理进行处理,以便生成有用的输出,例如图像、来自图像信号处理器(ISP)的图像、来自视频数据、声音数据或语音数据或其他输入数据的图像帧。相应地,待由处理器执行的神经网络处理可以有助于识别或分类由数据处理系统(最初)接收的数据内存在的特征,例如输入图像中的对象或输入声音数据中的声音特征。替代地,待由处理器执行的神经网络处理可以有助于训练神经网络。
数据处理系统可包括存储本文所述的数据和/或存储用于执行本文所述的过程的软件的一个或多个存储器(诸如上述存储器),并且/或者与所述一个或多个存储器通信。数据处理系统可包括主机微处理器并且/或者与主机微处理器通信,并且/或者与用于显示与神经网络处理相关联的输出数据的显示器通信。
本文所述技术的数据处理系统可实现为任何合适系统的部分,该系统诸如适当配置的基于微处理器的系统。在一些实施方案中,本文所述的技术在基于计算机和/或微处理器的系统中实现。
本文所述技术的各种功能能够以任何期望且合适的方式执行。例如,本文所述技术的功能可根据需要在硬件或软件中实现。因此,例如,本文所述技术的各种功能元件可包括一个或多个合适的处理器、一个或多个控制器、功能单元、电路、处理逻辑部件、微处理器布置等,这些元件可操作以执行各种功能,诸如能够被编程以按期望方式操作的适当专用硬件元件(处理电路)和/或可编程硬件元件(处理电路)。
此处还应当指出的是,如本领域的技术人员将理解的,本文所述技术的各种功能等可在给定处理器上复制和/或并行执行。同样,如果需要,则各种处理电路可共享处理电路等。
本领域的技术人员还应当理解,本文所述技术的所有所述实施方案均可视情况包括本文所述特征中的任何一个或多个或全部特征。
根据本文所述技术的方法可至少部分地使用软件例如计算机程序来实现。因此,可以看出,当从另外的实施方案来看时,本文所述技术包括:计算机软件,该计算机软件特别适于在安装在数据处理器上时执行本文所述方法;计算机程序元件,该计算机程序元件包括用于当该程序元件在数据处理器上运行时执行本文所述方法的计算机软件代码部分;以及计算机程序,该计算机程序包括适于当该程序在数据处理系统上运行时执行本文所述的一个或多个方法的所有步骤的代码。
本文所述的技术还扩展到包括此类软件的计算机软件载体,该软件在用于操作数据处理系统时使得处理器或系统执行本文所述技术的方法的步骤。此类计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存存储器或磁盘,或者可以是信号,诸如通过导线的电子信号、光信号或无线电信号,诸如到卫星的信号等。
还应当理解,并非本文所述技术的方法的所有步骤都需要由计算机软件执行,因此相对于另一个广泛的实施方案,本文所述技术包括计算机软件和安装在计算机软件载体上的用于执行本文所述方法的步骤中的至少一个步骤的此类软件。
因此,本文所述的技术可适当地体现为与计算机系统一起使用的计算机程序产品。此类具体实施可包括固定在有形非暂态介质上的一系列计算机可读指令,诸如计算机可读介质,例如磁盘、CD ROM、ROM、RAM、闪存存储器或硬盘。其还可包括一系列计算机可读指令,这些计算机可读指令能够经由调制解调器或其他接口设备通过有形介质(包括但不限于光通信线路或模拟通信线路)或者无源地使用无线技术(包括但不限于微波、红外或其他传输技术)传输到计算机系统。该系列计算机可读指令体现了本文先前所述的功能的全部或部分。
本领域的技术人员将会理解,此类计算机可读指令可以多种编程语言编写,以与许多计算机架构或操作系统一起使用。此外,此类指令可使用目前或将来的任何存储器技术(包括但不限于半导体、磁性或光学技术)来存储,或者使用目前或将来的任何通信技术(包括但不限于光学、红外或微波技术)来传输。可以设想的是,此类计算机程序产品可作为带有附随的印刷或电子文档(例如,收缩包装软件)的可移动介质进行分发,可与计算机系统一起预加载在例如系统ROM或固定磁盘上,或者可经由网络(例如,互联网或万维网)从服务器或电子公告板进行分发。
现在将仅以举例的方式并参考附图来描述本文所述技术的多个实施方案,其中:
类似的附图标号用于附图中的类似特征(在适当的情况下)。
图3示出了其中可以采用本文所述技术的示例性片上系统(SoC)数据处理系统300。如图3所示,本实施方案中的数据处理系统300包括呈中央处理单元(CPU)305形式的主机处理器、图形处理器(GPU)304、显示处理器303、神经处理单元(NPU)306和存储器控制器308。如图3所示,这些单元经由互连线307进行通信并且具有对片外存储器309的访问权限。
在此系统中,图形处理器304将例如渲染待显示的帧(图像),显示处理器303然后将提供帧以供输出,例如提供给显示面板以供显示。
对应地,神经处理单元(NPU)306将执行神经网络处理。神经处理单元(NPU)306包括电路(硬件)(例如,诸如乘积累加电路110),该电路被特别配置为以特定预定方式最有效地执行神经网络处理。因此,神经处理单元(NPU)306被设计成以优化方式执行某些类型的神经网络处理运算。
数据处理系统300当然可以包括可能需要的任何其他部件或处理单元。例如,数据处理系统300可以还包括图像信号处理器(ISP)、视频解码器、音频编解码器等,或数据处理系统300可以期望地具有的任何其他部件。传感器可以为系统300提供输入数据(例如来自合适的相机或麦克风或其他传感器设备的视频数据和/或声音数据)。
本实施方案特别涉及神经网络的处理,并且具体地涉及使用专用硬件加速器(例如,图3中所示的神经处理单元(NPU)306)执行的基于神经网络的模型。具体地说,本实施方案呈现了一种改进的神经网络结构,该神经网络结构可以用于生成可由神经处理单元(NPU)306更有效执行的模型。
例如,本实施方案涉及与图4中所示的已知的MobileNetV2架构共享相似性并且在上文描述的神经网络。MobileNetV2结构已经成功地用于大量计算机视觉应用(例如,对象检测、语义分割等)。
MobileNetV2模型中的主要构建块是反向瓶颈(IBN)块402,该反向瓶颈块:(i)使用1×1卷积将输入特征扩展到非常高维空间,(ii)在高维空间中执行3×3深度可分离卷积(DSConv),并且(iii)然后使用另一1×1卷积将这些中间特征投影回低维空间。这在图4中示出。
由于1×1卷积和3×3DSConvs都需要相对较少的乘积累加(MAC)运算和仅少量参数,因此MobileNetV2是产生了现有技术准确率的高度紧凑的卷积神经网络。由于其计算效率,MobileNetV2通常在移动CPU上运行。
然而,本申请人已经发现,当尝试在诸如神经处理单元(NPU)的受限硬件上执行MobileNetV2时,可能是低效的。具体地说,DSConvs在典型NPU上的MAC利用率显著低于常规3×3卷积的MAC利用率。因此,如果模型具有带有与IBN块类似的MAC和参数数量的常规3×3卷积,则由于NPU的高利用率,常规3×3卷积将比IBN块运行得显著更快。
另一方面,用包括常规3×3卷积的模型实现高准确率是困难的,并且通常产生非常大的模型大小和大量MAC。
因此,本实施方案提供了一种新的神经网络架构,该神经网络架构在可能的情况下在执行时使用常规3×3卷积,以促进更有效的执行,但是其中仍然可以训练神经网络以实现与使用MobileNetV2网络实现的准确率相当的更高准确率,而不显著增加模型大小和MAC运算的数量。
为了实现这一点,本实施方案提出了一种新的方法,该方法训练神经网络的第一‘完整’版本,但是该神经网络可以利用小的常规3×3卷积被分析地折叠成非常有效的推理模型。因此,推断时间模型非常适合于硬件加速器,如NPU。然而,通过训练较大的网络,然后将其折叠成更有效的网络,本申请人已经发现,也可以保持更高的准确率。
具体地说,本实施方案提出将图4所示的MobileNetV2模型内的多个块(已经发现该块在由NPU执行时表示性能夹点)替换为可以使用块的更完整格式版本来训练的新类型的‘可缩减’块,然后将该新类型的‘可缩减’块缩减成更硬件有效的格式以供执行。如下文所解释的,存在这一点的许多方面。
反转瓶颈块
首先,本申请人已经认识到,在MobileNetV2中执行IBN块402通常不能充分利用硬件资源,例如在典型NPU中,因此尝试使用典型NPU执行这些块可能是低效的。根据本实施方案,MobileNetV2模型中的IBN块中的大多数IBN块因此被新类型的“可缩减”反转瓶颈块(“RIBN”)替换,如图5(没有残差)和图6(具有残差)所示。
呈其完整格式的“可缩减”反转瓶颈块训练多个线性卷积层,该线性卷积层可以在推断时间被分析地折叠成小的常规3×3卷积。目的是将IBN块替换为RIBN块而不损失显著的准确率,并且不会过度增加模型大小和MAC(因为大的3×3卷积层可以非常快速地增加MAC和参数数量)。
图4中详细示出了MobileNetV2内的IBN块402的结构。如图所示,IBN块402首先将输入特征(从M个通道)扩展到更大数量的中间特征(ExM个通道)。然后,它进行批归一化(BN),这是对中间特征的线性归一化过程。这之后是ReLU,其是非线性激活函数(ReLU(x)=max(0,x))。然后,3×3DSConv进行特征提取,随后是另一轮BN和ReLU。扩展的中间特征最终被投影到少量特征(例如N个通道)。
MobileNetV2网络具有两种类型的IBN块:残差和非残差IBN块。“残差”块是将输入通道添加到给定块的输出的地方。然而,并非所有IBN块都具有残差连接。例如,如果输入和输出图的大小不相等(即,当图的高度和宽度由于卷积步长而不相等时,或者如果输入和输出通道的数量不相等),则不能简单地将输入通道添加到输出,因此不会这样做。在非残差块的情况下,IBN仅包括扩展1×1层、3×3DSConv和投影1×1层。
在本实施方案中,这些块中的至少一些块因此被替换为‘可缩减’反转瓶颈块(“RIBN”),如下面更详细地解释的。
替换1:具有单个RIBN的非残差IBN:
图5示出了将非残差IBN 402替换为单个RIBN 502的过程,该单个RIBN折叠成单个卷积层503以供执行。
如图5所示,为了将IBN块402变换成RIBN块502,将IBN块402中的第一BN+ReLU移动到定义反转瓶颈的卷积运算序列之外,并且移除第二BN+ReLU。然后,在块中的所有卷积之后放置所有BN。这产生图5(中心栏)中所示的扩展的RIBN块502,该扩展的RIBN块在训练过程期间使用。此RIBN块502具有特殊属性,因为在各种卷积之间不存在非线性,并且因为BN也是线性运算,因此所有这些运算都可以在推断时间被分析地折叠成单个小的3×3卷积层503(参见图5,右栏)。
因此,扩展的RIBN块502可以在训练阶段期间在神经网络内使用。然而,一旦训练完成,RIBN块502就可以在推断时间被分析地折叠成单个小的3×3卷积层503,该3×3卷积层(精确地)复制完整扩展的RIBN块502的处理结果。
因此,在推断期间,RIBN块的缩减格式版本503仅包括BN->ReLU->Conv3×3,其中Conv3×3层相对较小(因为其不扩展通道)。因此,由于处理运算序列折叠成单个卷积运算,因此RIBN块的缩减格式版本503将在推断时间比类似大小IBN运行得更快。因此,这提供了更有效的执行。例如,在NPU执行的情况下,可以以比DSConv显著更高的NPU上的常规卷积利用率来执行此缩减格式版本503。
注意,在RIBN块502中,在训练过程期间应用扩展因子E。然而,扩展因子E在推断时间折叠。这也意味着RIBN块502可以在推断时间使用(比传统IBN块)大得多的扩展因子而没有任何惩罚。因此,这可以促进改进的训练过程。
例如,在用于MobileNetV2的IBN中,扩展因子E被设置为6。然而,由于扩展因子E不影响RIBN块502的推断性能,因此可以将该扩展因子设置为大得多的值(例如,E=12)。想法是训练实现高准确率的显著更大的网络,但是在推断时间,折叠成非常有效的硬件感知网络。
替换2:具有在残差块内连接的两个RIBN的残差IBN:
当IBN块具有残差连接时,这意味着其输入通道和输出通道相等(并且它们的高度和宽度也相等)。在这种情况下,本实施方案将IBN中的卷积替换为在ResNetV2残差块603内连接的两个RIBN块。这在图6中示出。
注意,在训练期间,图6中所示的3×3卷积被扩展,如上面的替换1中所述。通常,RIBN在推理时间被折叠成小的常规卷积。此外,在传统残差块中,通道数量跨块内的所有层是相同的。此要求可以被放松以便实现更大的计算效率:可以存在块内的X(X<=M)个中间通道。
因此,在推断时间,基于RIBN的残差块折叠成缩减格式块603,该缩减格式块包括以下运算序列:BN->ReLU->Conv3×3->BN->ReLU->Conv3×3,然后是残差加法运算602。注意,这等效于ResNetV2残差块。
可缩减输出块
本申请人还认识到,MobileNetV2的最终层由于这些层的大小而可以表示另一个性能夹点。因此,在本实施方案中,MobileNetV2的最后两个层被替换为单个小的全连接层(在推断时间)。同样,在训练期间,训练较大层的组合,该组合在推理时间被分析地折叠成单个小层。这在图7中示出。
替换3:将来自MobileNet-V2的最后两个(昂贵)层替换为单个全连接层
MobileNetV2中的最终层非常昂贵,因为它们涉及将信道从320扩展到1280的大的1×1卷积,并且大的全连接层执行1000个类别之间的分类(参见图7,左上栏)。
图7详细示出替换过程。这通过首先将ReLU移动到1×1卷积的前面来完成。这再次导致非线性首先出现,并且使得其余运算是线性的。此块702是随后被训练的块。可以再次利用所有运算的线性来在执行时间以与上面针对前两个替换所述的类似的方式将这些层折叠成单个小的全连接层703。
基本上,BN可以由于其线性而折叠成卷积权重。然后,因为卷积核大小是1×1,因此这可以分析地与平均池化层(其仅平均7×7个通道)和1×1卷积进行交换。这意味着1×1卷积现在等效于全连接层,并且因此两个层可以合并在一起(因为两个矩阵乘法(W320×1280和W1280×1000)的结果可以由单个小得多的矩阵乘法:W320×1000=W320×1280和W1280×1000替换)。
因此,在图7(右上)中示出了在训练期间使用的模型。训练时间模型分析地折叠成显著更小的推断时间全连接层703(图7,左下)。
从以上讨论中应当理解,本实施方案有利地训练神经网络的较大版本,但是然后缩减网络以供执行。图8是示出此整个过程的流程图。
如图8所示,该过程因此包括完全训练神经网络的第一版本以执行期望的神经网络处理任务的第一步骤(步骤800)。然而,一旦训练完成,则将神经网络的第一版本中的至少一些处理块(如上所述)替换为缩减格式块以供执行(步骤801)。
然后提供神经网络的缩减格式版本以供输出(以供执行)(步骤802)。因此生成包括神经网络的缩减格式版本(以及用于神经网络的合适的神经网络参数(权重))的可执行模型。然后可以根据需要执行模型以执行神经网络处理任务(步骤803)。例如,可以训练模型以执行图像分类任务。然后可以根据需要在输入图像上部署和执行经过训练的模型,以便执行分类任务。各种其他布置当然也是可能的。
神经架构搜索算法(NAS)
为了确定可以以这种方式替换哪些块,还提供了一种自动轻量级的硬件感知NAS算法,该算法可以被执行以便确定在模型内放置IBN块的位置以及使用RIBN块的位置。
例如,利用上述替换技术,申请人已经发现,可以设计新的神经网络模型,该神经网络模型可以实现与MobileNetV2类似的准确率,但是可以更有效地(例如,并且尤其)使用诸如NPU的硬件加速器执行。这是因为该模型包括常规3×3卷积层(其在NPU上具有高MAC利用率),并且还消除了MobileNetV2面临的其他性能瓶颈。此外,与使用常规3×3卷积的现有网络(诸如ResNetV2)相比,可以使用更紧凑的网络来实现此准确率。因此,这表示本领域的显著改进。
注意,DSConv层、预训练的MobileNetV2模型和IBN块(和它们的变体)已经大量用作用于各种计算机视觉应用(例如,对象检测、语义分割、深度估计、图像去模糊、姿态估计、视频理解等)的许多其他深度神经网络的基础。因此,提供替换现有MobileNetV2模型中的一些硬件低效率的更优化的网络对于许多应用是有益的。
另一方面,硬件感知NAS技术通过在特定算子空间上执行搜索来自动设计硬件高效网络。这些NAS工作的一个重要限制是它们受到其搜索空间的严重限制。也就是说,如果它们正在搜索未针对给定目标硬件优化,或者针对硬件优化但不能实现高准确率(例如,除非模型大小过度增加,否则不能实现高准确率的传统3×3卷积)的算子空间(例如,用于NPU的DSConv),则NAS将产生次优的神经网络架构。
因此,从NAS的角度来看,上述替换可以用作新颖搜索空间的一部分,以设计更好地优化以供可用处理资源执行的神经网络结构。为此,本申请人还开发了一种新颖NAS算法,其提供了在IBN块与RIBN块之间自动选择的可训练方式。
例如,本申请人已经发现,为了实现更高的准确率性能,MobileNetV2中的IBN块中的一些IBN块比其他IBN块更关键。在这种情况下,期望能够确定何时设计新模型、最佳地放置IBN的位置以及放置RIBN的位置。下面讨论的硬件感知NAS算法允许自动确定这一点,作为一次性训练过程的一部分。
在上述替换中,注意,为了将块从传统IBN转换为新颖RIBN,RELU被四处移动,以便将非线性移动到卷积运算之外。因此,IBN与RIBN之间的主要差异在于IBN在扩展空间(即,具有ExM个通道的层)中具有ReLU非线性,而RIBN仅在卷积层之前具有ReLU并且在扩展空间中是完全线性的。
为了在ReLU(传统IBN)或线性(RIBN)之间进行选择,所提出的NAS算法因此利用称为参数ReLU(PReLU)的另一非线性函数,其表示如下:
这里,‘a’是可以取任何值并且在训练过程期间学习的可训练参数。因此,这可以用于在传统IBN与新颖RIBN块之间进行选择。
可以在IBN与RIBN之间选择的NAS块的结构如图9所示。如图9所示,NAS块包括在块的开始处的PReLU,以及在中间扩展特征处(在第一个1×1和3×3DSConv之后)的两个其他PReLU。因此,如果a=0,则PReLU等效于ReLU函数(y=max(0,x)),并且如果a=1,则PReLU等效于线性线y=x。因此,PReLU可以用于在ReLU与线性线之间进行选择。
基本上,在NAS训练期间,如果参数“a”被约束为变为0或1,并且另外被约束为使得中间扩展特征中的两个PReLU的参数“a”具有相同的值(即,0或1),则此将自动在IBN或RIBN块之间进行选择。因此,图9所示的轻量级NAS方法利用PReLU作为可训练的方式,以一次性在两种块之间直接选择。
具体地说,NAS问题可以公式化如下:
其中,y是数据集的真实标签,f(x)是CNN在输入x上的输出,是指分类问题的交叉熵损失,/>是指示符函数,其仅在(PReLU参数)为0或1时变为0,否则为大值。/>是延迟损失,这是NAS[3]中用于将模型f的延迟保持在某个阈值T内的常见损失函数。此外,W是可训练权重的集合,并且是所有PReLU“a”参数的集合。
指示符函数的目的是将所有“a”参数推向0或1,以便在IBN与RIBN块之间进行选择。注意,在常见NAS框架中使用的延迟损失函数使用可区分的延迟预测器(例如,被训练为预测特定目标硬件上的给定模型的延迟的神经网络)。此延迟损失的目的是引导搜索到硬件感知模型。例如,对于CPU目标,NAS应自动朝向较少MAC的IBN块,而对于NPU,它应将模型推向RIBN块,该RIBN块折叠成小的3×3卷积而不会过度增加MAC和参数数量(从而产生更高的MAC单元利用率)。因此,NAS公式化是“硬件感知的”,因为它利用简单的PReLU参数化将IBN和RIBN(硬件感知模型的主要候选)编码到搜索空间中。此外,该方法是一次性NAS,因为它将直接收敛到在适当位置包括IBN和RIBN两者的模型中。
图9和图10示出了用于在IBN与RIBN块之间进行选择的NAS过程。具体地说,图10示出了可以在IBN或RIBN块之间进行选择的NAS块的形式。NAS块902使用参数ReLU(PReLU)作为激活函数而不是仅线性卷积或ReLU。图10还示出了PReLU激活函数的形状。
在NAS训练期间,PReLU中的参数a被约束为取值0或1。因此,如果a=0,则PReLU变为ReLU函数(y=max(0,x)),并且如果a=1,则PReLU变为线性线y=x。
在后一种情况下,如果卷积之间的PReLU具有a=1,则NAS块可以被折叠成单个3×3卷积层,就像RIBN块一样。实际上,可以强制执行额外的约束条件。例如,如果PReLU中的参数a在中间层中的任一个中间层处(例如,在第一个1×1卷积之后,或在3×3DSConv之后)变为0,则另一者也必须变为0,因此自动选择IBN块。类似地,如果它们中的一者变为1,则两者都必须为1,因此选择RIBN块(如果卷积之间甚至存在单个非线性,则这不起作用)。因此,NAS方法直接在IBN与RIBN块之间进行选择。
因此,NAS训练过程可以被适当地执行,以便确定应在哪些位置处提供哪些类型的块。图11在一个示例中示意性地示出了此的结果,其中发现前两个瓶颈块以及最后两个瓶颈块对于准确率是最关键的,使得NAS过程确定应当在这些位置处使用(具有非线性的)传统IBN块。然而,NAS过程确定其他块可以提供线性,使得可以在这些位置处使用RIBN块。
图12示出了NAS训练过程。NAS过程开始于创建包括NAS块的神经网络(步骤1200)。然后基于PReLU约束条件和期望的硬件约束条件来训练神经网络,如上所述(步骤1201)。然后逐块地解析神经网络(步骤1202),并且只要未到达末尾(步骤1203),就检查PReLU参数a(步骤1204),并且适当地进行块选择。
因此,如果第一PReLU参数是‘1’但是第二和第三PReLU参数是‘0’(即,a=[1,0,0]),则a=0PReLU可以被替换为ReLU,并且可以移除a=1PReLU。然后,所得块等效于传统IBN块(步骤1205)。
另一方面,如果第一PReLU参数是‘0’,但是第二和第三PReLU参数是‘1’(即,a=[0,1,1]),则a=0PReLU可以被替换为ReLU,并且剩余线性卷积可以被折叠成小的k×k卷积(步骤1206)。重复此过程,直到已经处理所有块以给出最终推断网络(步骤1207)。
应当理解,以上示例仅示出根据本文所述技术的实施方案的NAS训练过程的一个示例,并且可以为此目的使用其他合适的参数化。例如,PReLU函数可以被约束为例如a=1,而不是使用被约束为a=0或1的PReLU函数。然后,训练(优化)将尝试迫使所有参数变为‘1’。在这种情况下,如果值中的一些值没有收敛,则这可以指示那些块无法被折叠,即,保持非线性是重要的。在这种情况下,这些块应该例如通过包括如传统IBN块中的ReLU函数(或根据需要的任何其他合适的非线性激活函数)而被适当地设置为包括一些非线性。
因此,本申请人提出了新的神经网络架构,其在实施方案中类似于类似MobileNetV2的网络,但是其中大多数IBN块被替换为新设计的可缩减RIBN块,如上所述。RIBN块训练三个线性卷积层,该线性卷积层可以在推断时被分析地折叠成小的常规3×3卷积,而不会损失准确率,并且不会过度增加模型大小和MAC。本申请人还提出了将MobileNetV2的最后两个层替换为单个小的全连接层的另一种技术。同样,在训练期间,训练两个大层的组合,该组合在推断时被分析地折叠成小层。
此外,本申请人还开发了一种自动轻量级的硬件感知NAS算法,以找到在模型内放置IBN块的位置和使用RIBN块的位置。在一个实施方案中,此算法依赖于PReLU激活函数,以在两种类型的块之间自动选择。
使用这些技术,本申请人已经创建了各种新的神经网络模型,已经发现该新的神经网络模型在典型NPU(例如,诸如Arm Ethos-U55 NPU)上执行时实现相对较高的准确率,同时还改进了执行性能。
上述具体实施方式是为了举例说明和描述的目的而呈现的。其并非旨在穷举或将技术限制为所公开的精确形式。按照上述教导内容,许多修改形式和变型形式是可能的。选择所述实施方案是为了最佳地解释本技术的原理及其实际应用,从而使得本领域的其他技术人员能够最佳地利用各种实施方案中的技术并且具有适合于所设想的特定用途的各种修改。本发明的范围旨在由所附权利要求限定。
Claims (20)
1.一种生成能够由处理器执行以执行神经网络处理的模型的方法,所述方法包括:
提供神经网络,所述神经网络包括多个层,所述多个层一起被布置成处理到所述神经网络的输入以生成相应输出,其中所述神经网络包括多个块,每个块包括所述神经网络的一个或多个层,并且每个块被配置为执行相应的处理运算序列;
训练所述神经网络以执行神经网络处理任务,其中训练所述神经网络包括训练所述神经网络的第一版本,所述神经网络的所述第一版本包括呈第一格式的一个或多个块,其中所述第一格式中的每个块包括相应的处理运算序列;
在训练所述神经网络的所述第一版本之后:将经过训练的神经网络中的第一格式块中的一个或多个第一格式块替换为呈第二不同格式的对应块以生成所述神经网络的第二版本以供执行,所述神经网络的所述第二版本因此包括呈所述第二格式的相应的一个或多个块,其中呈所述第二格式的所述块在被执行时复制用于所述经过训练的神经网络中的对应的第一格式块的所述处理运算序列的结果;以及
提供包括所述神经网络的所述第二版本的可执行模型以供输出,所述神经网络的所述第二版本包括呈所述第二格式的所述一个或多个块。
2.根据权利要求1所述的方法,其中所述模型被设计用于供硬件加速器执行,所述硬件加速器被配置为最佳地执行某些类型的运算,并且其中呈所述第二格式的所述块包括所述硬件加速器被优化以执行的类型的一个或多个运算的相应集合。
3.根据权利要求1或2所述的方法,其中所述神经网络包括呈所述第一格式的一个或多个反转瓶颈块,所述一个或多个反转瓶颈块被配置为执行卷积运算序列,所述卷积运算序列取一组k个输入特征、将所述一组k个输入特征扩展到更高维度、在所述更高维度中执行深度可分离卷积,并且然后将所述特征从所述更高维度缩减到一组k’个输出特征,并且所述一个或多个反转瓶颈块能够被替换为第二缩减格式卷积块以供执行,其中所述块的第二格式版本包括缩减的卷积运算序列,所述缩减的卷积运算序列将一组k个输入特征处理成一组k’个输出特征而不将所述特征扩展到更高维度。
4.根据权利要求3所述的方法,其中所述反转瓶颈块在两种格式中还包括非线性激活函数,所述非线性激活函数单独应用并且在所述反转瓶颈块内的所述卷积运算序列之外应用。
5.根据权利要求4所述的方法,其中所述非线性激活函数包括整流线性单元(ReLU)激活函数。
6.根据权利要求1或2所述的方法,其中呈所述第一格式的所述神经网络包括一个或多个反转瓶颈块,所述一个或多个反转瓶颈块包括一组参数化激活函数,其中训练包括呈所述第一格式的所述块的所述神经网络的所述第一版本包括通过所述训练确定用于所述参数化激活函数的一组参数,其中用于所述参数化激活函数的所述参数指示所述反转瓶颈块是否能够被替换为所述块的对应第二格式版本以供执行;并且其中所述方法还包括基于所确定的用于所述参数化激活函数的参数来确定替换哪些呈所述第一格式的块。
7.根据权利要求6所述的方法,其中所述参数化激活函数是参数化整流线性单元(PReLU)函数,并且其中所述参数被约束为指示所述块能够被替换为所述块的对应第二格式版本以供执行的第一值,以及指示所述块不应被替换以供执行的第二值。
8.根据权利要求1或2所述的方法,其中所述神经网络包括呈所述第一格式的输出块,所述输出块包括运算序列,所述运算序列包括将一组m个输入特征扩展到更高维度、在所述更高维度中执行池化运算,以及然后在所述更高维度中执行全连接层以给出一组m’个输出特征,并且所述输出块由第二缩减格式输出块替换以供执行,所述第二格式输出块包括执行池化运算以及然后执行全连接层,所述全连接层将一组m个输入特征处理成一组m’个输出特征。
9.根据权利要求1或2所述的方法,所述方法还包括:在提供包括所述神经网络的所述第二版本的可执行模型以供输出的步骤之后执行所述模型以执行神经网络处理任务,所述神经网络的所述第二版本包括呈所述第二格式的所述一个或多个块。
10.根据权利要求9所述的方法,其中执行所述模型以执行神经网络处理任务的步骤至少部分地使用硬件加速器来执行,其中所述硬件加速器包括多个乘积累加电路,并且其中所述硬件加速器被配置为与呈所述第一格式的所述块相比,以所述硬件加速器的乘积累加电路的更高利用率执行呈所述第二格式的所述块。
11.一种能够由处理器执行以执行神经网络处理任务的可执行模型,其中所述模型包括:
神经网络,所述神经网络包括多个层,所述多个层一起被布置成处理到所述神经网络的输入以生成相应输出,其中所述神经网络包括多个块,每个块包括所述神经网络的一个或多个层,并且每个块被配置为执行相应的处理运算序列,
其中所述神经网络包括一个或多个卷积块,每个卷积块包括至少一个非线性激活函数和一个或多个卷积运算的集合,其中将所述至少一个非线性激活函数单独应用于所述一个或多个卷积运算的集合;以及
将应用于神经网络处理层的一组神经网络参数。
12.根据权利要求11所述的可执行模型,其中所述模型被设计用于供硬件加速器执行,所述硬件加速器被配置为最佳地执行某些类型的运算,并且其中呈所述第二格式的所述块包括所述硬件加速器被优化以执行的类型的一个或多个运算的相应集合。
13.根据权利要求11或12所述的可执行模型,其中所述非线性激活函数包括整流线性单元(ReLU)激活函数。
14.根据权利要求11或12所述的可执行模型,其中所述神经网络的所述输出包括输出块,所述输出块包括池化运算和全连接层。
15.根据权利要求11或12所述的可执行模型,其中所述神经网络的所述输入包括全卷积层。
16.根据权利要求11或12所述的可执行模型,其中所述神经网络还包括一个或多个反转瓶颈块。
17.一种执行模型以使用包括多个乘积累加电路的硬件加速器执行神经网络处理任务的方法,所述模型包括:
神经网络,所述神经网络包括多个层,所述多个层一起被布置成处理到所述神经网络的输入以生成相应输出,其中所述神经网络包括多个块,每个块包括所述神经网络的一个或多个层,并且每个块被配置为执行相应的处理运算序列,
其中所述神经网络包括一个或多个卷积块,每个卷积块包括至少一个非线性激活函数以及所述硬件加速器的乘积累加电路被配置为执行的类型的一个或多个卷积运算的集合,其中将所述至少一个非线性激活函数单独应用于所述一个或多个卷积运算的集合;
所述方法包括:
执行包括所述神经网络的所述模型以执行所述神经网络处理任务;
其中执行包括所述神经网络的所述模型以执行所述神经网络处理任务包括:使用所述硬件加速器的所述乘积累加电路来执行所述硬件加速器的乘积累加电路被配置为执行的所述类型的所述卷积块内的至少所述卷积运算的集合。
18.根据权利要求17所述的方法,其中所述神经网络的所述输出包括输出块,所述输出块包括池化运算和全连接层。
19.根据权利要求17或18所述的方法,其中所述神经网络的所述输入包括全卷积层。
20.根据权利要求17或18所述的方法,其中操作所述硬件加速器以对在主机处理器上执行的应用程序执行神经网络处理,其中当在所述主机处理器上执行的应用程序需要神经网络处理时,所述主机处理器能够操作以使所述硬件加速器执行所述神经网络处理中的至少一些神经网络处理,所述神经网络处理包括至少所述卷积块内的所述卷积运算的集合的所述执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/559,163 | 2021-12-22 | ||
US17/559,163 US20230196093A1 (en) | 2021-12-22 | 2021-12-22 | Neural network processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116341630A true CN116341630A (zh) | 2023-06-27 |
Family
ID=86768450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211491403.1A Pending CN116341630A (zh) | 2021-12-22 | 2022-11-25 | 神经网络处理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230196093A1 (zh) |
CN (1) | CN116341630A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117152542B (zh) * | 2023-10-30 | 2024-01-30 | 武昌理工学院 | 一种基于轻量化网络的图像分类方法和系统 |
-
2021
- 2021-12-22 US US17/559,163 patent/US20230196093A1/en active Pending
-
2022
- 2022-11-25 CN CN202211491403.1A patent/CN116341630A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230196093A1 (en) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6902611B2 (ja) | 物体検出方法、ニューラルネットワークの訓練方法、装置および電子機器 | |
CN108345890B (zh) | 图像处理方法、装置和相关设备 | |
WO2021208151A1 (zh) | 一种模型压缩方法、图像处理方法以及装置 | |
US11093168B2 (en) | Processing of neural networks on electronic devices | |
CN110443357B (zh) | 卷积神经网络计算优化方法、装置、计算机设备及介质 | |
US11990137B2 (en) | Image retouching method and terminal device | |
JP7165018B2 (ja) | 情報処理装置、情報処理方法 | |
WO2021143207A1 (zh) | 图像处理方法、装置、计算处理设备及介质 | |
WO2023093260A1 (zh) | 指令处理装置、方法、计算机设备及存储介质 | |
CN110782430A (zh) | 一种小目标的检测方法、装置、电子设备及存储介质 | |
CN116863194A (zh) | 一种足溃疡图像分类方法、系统、设备及介质 | |
CN112750139A (zh) | 图像处理方法及装置、计算设备、存储介质 | |
CN116341630A (zh) | 神经网络处理 | |
CN110428422B (zh) | 超像素采样网络 | |
CN118247290A (zh) | 语义-空间融合Transformer的3D全景分割模型的构建方法及应用 | |
CN115170815A (zh) | 视觉任务处理及模型训练的方法、装置、介质 | |
CN112990157B (zh) | 一种基于fpga的图像目标识别加速系统 | |
CN113313162A (zh) | 一种多尺度特征融合目标检测的方法及系统 | |
US11741349B2 (en) | Performing matrix-vector multiply operations for neural networks on electronic devices | |
CN115953651B (zh) | 一种基于跨域设备的模型训练方法、装置、设备及介质 | |
US11288534B2 (en) | Apparatus and method for image processing for machine learning | |
US11132762B2 (en) | Content aware image fitting | |
JP7316130B2 (ja) | 画像処理装置、画像処理装置の制御方法、プログラム | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN116420174A (zh) | 用于卷积神经网络的全尺度卷积 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |