CN118159986A - 基于硬件加速器优化组卷积的神经网络模型 - Google Patents

基于硬件加速器优化组卷积的神经网络模型 Download PDF

Info

Publication number
CN118159986A
CN118159986A CN202180103114.7A CN202180103114A CN118159986A CN 118159986 A CN118159986 A CN 118159986A CN 202180103114 A CN202180103114 A CN 202180103114A CN 118159986 A CN118159986 A CN 118159986A
Authority
CN
China
Prior art keywords
input
partition
convolution
feature map
group
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
Application number
CN202180103114.7A
Other languages
English (en)
Inventor
贝尔金·阿金
苏约格·古普塔
高操
周平
加布里尔·明策尔·本德
刘寒骁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN118159986A publication Critical patent/CN118159986A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

描述了用于使用实现具有组卷积层的卷积神经网络的集成电路来处理输入图像的方法、系统和装置,包括计算机可读介质。该处理包括确定沿着输入特征图的通道维度的分区到电路的计算单元中的乘法累加单体(MAC)的映射,并将组卷积应用于输入特征图。对于每个分区,应用组卷积包括:基于映射将组卷积层的权重提供给MAC的子集;经由电路的输入总线将特征图的输入提供给子集中的每个MAC;以及在子集中的每个MAC处使用输入和组卷积层的权重来计算乘积。基于乘积的累加,为组卷积层生成输出特征图。

Description

基于硬件加速器优化组卷积的神经网络模型
技术领域
本说明书总体上涉及使用硬件集成电路来执行卷积神经网络的组卷积。
背景技术
神经网络是采用一层或多层节点来为接收到的输入生成输出——例如,分类——的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。一些神经网络可以是被配置用于图像处理的卷积神经网络或被配置用于语音和语言处理的递归神经网络(RNN)。不同类型的神经网络架构可以用于执行与分类或图案辨识、涉及数据建模的预测和信息聚类相关的各种任务。
神经网络层可以具有对应的参数或权重集合。权重用于通过神经网络层处理输入(例如,批量输入),以生成用于计算神经网络推理的层的对应输出。批量输入和核集合可以表示为输入和权重的张量,即多维数组。硬件加速器是用于实现神经网络的专用集成电路。该电路包括具有与张量的元素相对应的位置的存储器,该张量可以使用电路的控制逻辑来遍历或访问。
发明内容
本说明书描述了用于在硬件神经网络加速器上高效地实现组卷积的技术。组卷积通过沿着输入矩阵的通道维度对它们进行分组来卷积它们的输入特征图,其中表示组卷积的每个输入组与对应的输出组相关联。具体地,基于这些技术,当使用在诸如平板电脑或智能电话的示例计算设备上实现的机器学习模型的卷积神经网络(CNN)处理输入图像时,可以充分利用组卷积来实现某些硬件和计算效率。
使用实现具有组卷积层的卷积神经网络的硬件集成电路来处理输入图像。该处理包括确定沿着输入特征图的通道维度的分区到集成电路的计算单元中的乘法累加单体的映射,并将组卷积应用于输入特征图。对于每个分区,应用组卷积包括:基于映射将组卷积层的权重提供给MAC的子集;经由电路的输入总线将特征图的输入提供给子集中的每个MAC;以及在子集中的每个MAC处,使用输入和组卷积层的对应权重来计算乘积。基于乘积的累加,为组卷积层生成输出特征图。
本说明书中描述的主题的一个方面可以体现在一种用于使用被配置为实现包括多个神经网络层的卷积神经网络的硬件集成电路来处理输入图像的方法中。神经网络层包括组卷积层。该方法包括识别控制参数,该控制参数定义沿着输入特征图的通道维度的多个分区;确定分区到在集成电路的计算单元中的乘法累加单体(MAC)的映射;以及对于组卷积层,将组卷积应用于输入特征图。
该应用包括针对分区中的每个分区:基于所确定的映射,将用于组卷积层的权重提供给多个MAC的子集;经由集成电路的输入总线,将输入特征图的相应输入提供给子集中的每个MAC;以及在子集中的每个MAC处,使用相应输入和用于组卷积层的对应权重来计算乘积。该方法包括基于乘积的累加来生成用于组卷积层的输出特征图。
这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。例如,在一些实施方式中,确定分区到乘法累加单体的映射包括:基于每个分区中的通道的数量来确定映射。在一些实施方式中,多个分区中的每个分区包括与分区的相应大小相对应的相应数目的输入通道。
生成输出特征图包括:基于每个分区的相应大小来生成输出特征图。在一些实施方式中,生成输出特征图包括:使用MAC的子集来计算多个乘积;以及从多个乘积生成乘积的累加。该方法可以包括:访问描述计算单元的硬件配置的信息;以及基于计算单元的硬件配置来确定每个分区的相应大小。
在一些实施方式中,输入总线包括广播功能,并且该方法进一步包括:经由输入总线并且针对每个分区,将输入特征图的多个输入广播到集成电路的计算单元。所述方法还可以包括:经由所述输入总线并且针对所述输入特征图的第一分区,将所述第一分区的第一输入广播给所述子集中的每个MAC;其中,广播的所述第一输入在针对所述组卷积层的计算期间被重复使用。在一些实施方式中,输入特征图的第一分区对应于输出特征图的第一分区;并且第一输入已经重复使用输出特征图的第一分区的输出。
该方面和其他方面的其他实施方式包括被配置为执行在计算机存储设备上编码的方法的动作的对应系统、装置和计算机程序。一个或多个计算机的系统可以借助于安装在系统上的、在操作中使系统执行动作的软件、固件、硬件或它们的组合来如此配置。一个或多个计算机程序可以借助于具有在由数据处理装置执行时使得装置执行动作的指令而被如此配置。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。描述了用于充分利用专用集成电路的示例硬件架构来实现卷积神经网络的执行的改进的技术,该卷积神经网络包括组卷积层,即,与逐深度卷积或全卷积相反的执行组卷积的层。
硬件架构包括特定类型的存储器布局、广播输入总线和乘法累加单体的配置,其可以实现具有相对于常规架构改进的计算效率和硬件利用率的组卷积。输入总线耦合到乘法累加单体,并且被配置为跨一些(或全部)乘法累加单体广播输入。广播函数允许对在计算用于对应组卷积的输出通道时重复使用的输入的计算进行并行化。
该架构可以用于优化各种类型的基于组卷积的神经网络的执行,并且允许将更宽范围的组卷积概念应用于各种计算机视觉任务。例如,编译器或相关控制逻辑可以用于确定组卷积运算到电路的计算单元中的乘法累加单体的最优映射。
可以确定映射以优化计算操作的不同方面,诸如最大化计算单元的整体利用率、最小化操作的整体时延或两者。特定映射的优点可以是最小化获取给定计算的新参数或附加参数所需的片外通信的量。确定映射的示例设备(例如,主机)可以相对于集成电路在芯片外。在一些实施方式中,编译器以及其他相关控制逻辑可以体现在示例设备中。
在附图和下面的描述中阐述了本说明书中描述的主题的一个或多个实施方式的细节。根据说明书、附图和权利要求,主题的其他潜在特征、方面和优点将变得显而易见。
附图说明
图1是用于对图像执行组卷积的示例计算系统的框图。
图2是示出用于组卷积的示例分组的框图。
图3示出了机器学习模型关于不同卷积运算的示例属性。
图4是示出与卷积神经网络的不同层块相对应的操作的框图。
图5是可以在图1的示例计算系统中使用的卷积神经网络模型的示例架构。
图6示出了用于执行卷积神经网络的计算的硬件集成电路的示例硬件计算图块。
图7A是示出分区到乘法累加单体的子集的示例映射的框图。
图7B是示出将相应输入提供给硬件计算图块的乘法累加单体的示例输入总线的框图。
图8是指示完全、逐深度和组卷积的某些属性的示例框图。
图9是用于使用硬件集成电路来应用组卷积的示例过程。
各个附图中相同的附图标记和标记表示相同的元件。
具体实施方式
图1是用于对输入图像执行组卷积的示例计算系统100的框图。系统100通常包括示例卷积神经网络102,其被配置为处理图像104,即,处理图像的像素的强度值。卷积神经网络102包括基于多个卷积神经网络层108的示例神经网络架构。在图1的示例中,卷积神经网络102包括多个卷积神经网络层108。例如,卷积神经网络102包括N个(或组)层,其中N是大于1的整数。
不同类型的CNN架构106可以用于执行各种机器学习任务。例如,机器学习任务可以是计算机视觉任务(也称为“图像处理任务”)。换句话说,神经网络可以被配置为接收输入图像并处理输入图像以生成输入图像的网络输出,即,执行某种图像处理任务。在本说明书中,处理输入图像是指使用神经网络来处理图像的像素的强度值。例如,任务可以是图像分类,并且由神经网络为给定图像生成的输出可以是对象类别集合中的每个对象类别的分数,其中每个分数表示图像包含属于该类别的对象的图像的估计可能性。
作为另一示例,任务可以是图像嵌入生成,并且由神经网络生成的输出可以是输入图像的数字嵌入。作为又一示例,任务可以是对象检测,并且由神经网络生成的输出可以识别输入图像中的位置,例如,图像内的边界框或其他几何区域,在该位置处描绘了特定类型的对象。作为又一示例,任务可以是图像分割,并且由神经网络生成的输出可以针对输入图像的每个像素定义该像素属于多个类别中的哪个类别。然而,更一般地,任务可以是各种任务中的任何任务,包括处理除了图像之外的输入的任务。
一些图像处理任务可以与对象检测、数据分类、图案辨识或图像辨识以及涉及数据建模和信息聚类的计算预测相关。例如,任务可以涉及对象检测,其中CNN处理图像以检测特定对象,并且在检测到对象时生成识别对象的输出。另一任务可以涉及数据/图像分类,其中CNN处理图像以确定图像的分类并基于图像的内容生成图像的特定分类输出。另一任务可以涉及图案辨识,其中CNN处理图像以识别或辨识图像中的特定图案并且基于图像的内容生成指示所辨识图案的输出。另一任务可以涉及一般图像辨识,其中CNN处理图像以识别或辨识图像的各种元素,并且基于图像的内容来生成指示所辨识的元素的输出。
在一些实施方式中,卷积神经网络102在示例移动设备110处实现或可由示例移动设备110访问。移动设备110可以是智能电话、平板电脑、电子笔记本、膝上型电脑、游戏控制台或相关的便携式计算设备。在一些其他实施方式中,卷积神经网络102被集成在示例基于云的系统——诸如服务器库、服务器组或多处理器系统——中或可由其访问。
卷积神经网络102可以使用一个或多个机器学习硬件加速器112来实现。每个硬件加速器112对应于一个或多个专用硬件集成电路114。通常,电路114是执行神经网络计算的硬件电路(例如,专用硬件电路)。例如,电路114中的一些(或全部)可以是专用硬件电路,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单核神经网络处理器或多核神经网络处理器。电路114还可以是专用图形处理单元(GPU)。
硬件电路114可操作以加速神经网络工作负载的计算。在一些实施方式中,硬件电路114包括控制逻辑,其可以用硬件、软件或两者来实现。控制逻辑用于发出用于神经网络计算的指令,包括获得和路由用于计算的数据。电路114可以包括用于存储神经网络的每个层的输入、输入激活、输出、输出激活和参数的存储器。在一些实施方式中,电路114包括专用存储器、共享存储器或两者。例如,电路114可以包括用于存储输入、输入激活、输出或输出激活的输入/激活存储器,以及用于存储每个神经网络层的相应参数集的参数存储器。
电路114可以包括计算单元,诸如硬件矩阵单元、计算图块的布置或这些的组合。计算单元用于执行神经网络计算以通过神经网络的层来处理输入。在一些实施方式中,矩阵单元或单独计算图块中的每一个包括计算单体——诸如执行乘法和累加运算的乘法累加单体——的一个或多个阵列。例如,每个单元可以执行输入和权重值的乘法以生成乘积,并且在多个时钟周期上执行乘积的累加(例如,加法运算)。
电路114实现全卷积、逐深度卷积和组卷积,以针对输入矩阵的通道维度的给定深度针对输入矩阵的对应部分对权重的不同滤波器进行卷积。例如,移动设备110使用卷积神经网络102和模型的CNN层108来为接收到的输入104生成图像处理输出120,例如辨识或检测输出。例如,输入104可以是膝上型计算机122的图像,并且移动设备110使用卷积神经网络102来处理图像并检测或辨识图像包括膝上型计算机的描绘。
图2是包括输入数据集202和用于使用来自输入数据集的输入来执行组卷积的示例分组203的表示的框图。在一些实施方式中,输入数据集202是输入的多维矩阵结构或从输入的多维矩阵结构导出。例如,矩阵结构可以是包括Zin个通道的输入张量,Zin个通道中的每个通道具有空间维度X乘Y。矩阵结构(或张量)可以表示输入集合、激活输入集合或权重输入集合。在一些情况下,用于激活输入集合的矩阵结构在本说明书中被称为输入特征图,并且用于权重输入集合的矩阵结构被称为核矩阵结构。
在图2的示例中,输入数据集202是具有三个维度的矩阵结构:两个(X,Y)空间维度和一个(Z)通道维度。关于空间维度,在一些实施方式中,这些维度与激活输入集合的空间或位置相对应。例如,如果卷积神经网络102正在处理具有两个维度的图像104,则矩阵结构可以具有两个空间维度,其对应于图像的空间坐标,即X、Y坐标。关于通道维度,该维度与来自输入(例如,激活输入)的特征相对应。参考Z、Zin或通道维度来描述通道维度,其中“通道”可以与图像的颜色通道相对应。
系统100被配置为例如参考输入数据集202的通道维度的深度水平来确定组卷积的划分。每个输入通道可以具有对应的深度水平。例如,图2的矩阵结构具有沿着Zin维度延伸的深度水平。作为说明,如果示例矩阵结构202表示作为激活输入集合发送到卷积神经网络层的3×3×3图像,则图像(3×3)的X和Y维度可以是空间维度,并且Z维度(3)可以是与R、G和B值相对应的通道维度。
如上所述,系统100可以确定沿着示例输入特征图的通道维度的组卷积的划分。例如,系统100可以确定输入组210-1沿通道维度的第一分区和输入组210-2沿通道维度的第二分区。在一些实施方式中,系统100确定沿着通道维度的n个分组210-n,其中n是大于或等于1的整数。在输入特征图202表示作为激活输入集合发送的3×3×3图像的示例中,定义用于组卷积的输入组210-1的第一分区可以对应于9个‘1’激活输入的特征,例如红色值,定义用于组卷积的输入组210-2的第二分区可以对应于9个‘2’激活输入的特征,例如绿色值,并且定义用于组卷积的输入组210-3的第三分区可以对应于9个‘3’激活输入的特征,例如蓝色值。
如上所论述,组卷积通过沿着输入矩阵的通道维度对它们进行分组来卷积它们的输入特征图,其中表示组卷积的每个输入组210-n与对应的输出组220-n相关联。卷积神经网络102采用一个或多个卷积神经网络层108来为接收到的输入202生成输出206,例如分类。例如,每个卷积神经网络层具有相关联的核204集合。核204可以根据组卷积的配置来划分,使得每个输入组210-n与对应的核/权重矩阵卷积以生成卷积输出220-n。在图2的示例中,输入组210-1与对应的核矩阵212卷积以生成卷积输出220-1,而输入组210-2与对应的核矩阵214卷积以生成卷积输出220-2。
系统100被配置为动态地确定控制参数g的值,其中g是大于1的整数。系统100还被配置为通过计算Zin/g来确定组大小,其中Zin是沿着输入张量的通道维度的输入通道的数量,并且g是由控制参数定义的组的数量。控制参数g用于定义组卷积(例如,划分)的数量。在一些实例中,g的值可以在系统100处被动态地确定或在系统100处针对给定操作来被预定义。例如,定义组卷积的数量的控制参数g可以由系统100的编译器预定义(和/或嵌入)或在运行时被动态地确定。
在一些实施方式中,系统100基于所请求的特定类型的机器学习任务来定义组卷积(例如,划分)的数量,并且相应地为该任务设置控制参数g的值。在一些其他实施方式中,系统100基于以下各项来定义组卷积(例如,划分)的数量:i)要处理的机器学习任务的类型;ii)卷积神经网络的神经架构;iii)计算环境;iv)性能目标;或v)这些的组合。示例计算环境可以包括基于云的计算环境或移动设备计算环境。性能目标可以包括速度、时延、硬件利用率、模型准确度、参数大小或这些的组合。
组卷积可以被描述为卷积的广义形式。在一些实施方式中,系统100通过向控制参数指派特定值来初始化控制参数g。控制参数g的初始化或指派值可以用于控制组卷积的划分。例如,如果系统100确定需要使用整个通道维度的数据的卷积运算(例如,全卷积),则系统100将控制参数的值设置为g=1,并且使用矩阵结构202的相关数据触发和/或执行全卷积。
相关地,系统100可以确定较大的神经网络计算中的给定步骤需要逐深度可分离卷积的分组。例如,如果系统100确定需要使用通道维度的一部分的数据的两个或更多个逐深度可分离卷积,则系统100将控制参数设置为期望值(例如,g=4),并且使用矩阵结构202中的数据的相关部分来触发和/或执行两个或更多个(例如,四个)逐深度可分离卷积。在一些实施方式中,顺序地、并发地或组合地执行针对两个或更多个组卷积的计算。例如,可以顺序地或并行地执行两个或更多个逐深度可分离卷积中的每一个的相应计算集合中的一些(或全部)。
如上所述,本文档中描述的组/分组卷积技术至少对示例ML加速器的硬件资源的利用率度量和计算效率提供更细粒度的控制。在一些实施方式中,这些组卷积技术提供用于影响和控制示例机器学习模型的某些属性或性能度量的通用(versatile)块或控制旋钮。例如,控制参数g在1与通道数量(z)之间的值的选择提供了全卷积和逐深度可分离卷积的两个示例约束之间的连续体。这在下面更详细地解释。
图3示出了机器学习模型的示例属性。通常,属性对应于使用上述卷积神经网络102执行的不同卷积运算。例如,属性302示出了用于执行全卷积的运算的参数数目和乘法累加单体(MAC),属性304示出了用于执行逐深度卷积的运算的参数数目和乘法累加单体,并且属性306示出了用于执行组卷积的运算的参数数目和乘法累加单体。
可以确定和/或调整控制参数g和组卷积的配置,以控制用于给定任务的参数(例如,可训练参数)数量以及用于执行任务的操作的乘法累加单体的数目。机器学习模型的这些示例属性302、304、306中的每一个可以对模型的不同性能度量具有对应的影响或作用。例如,可训练参数的数目和/或乘法累加单体(或操作)的数目的增加或减少将对机器学习模型的准确度、速度和/或时延具有对应的影响。在另一示例中,相对于全卷积,逐深度卷积的使用可以是轻量级和低成本(即,资源不那么密集)的选项,但是在ML加速器的集成电路处执行逐深度卷积通常导致电路的硬件资源的不良利用。
例如,当执行逐深度(或逐深度可分离)卷积时,包括数十或数百个硬件乘法累加单体的电路114的标准硬件阵列可以在给定计算周期内经历那些硬件单体的3%利用率,同时经历最小或低时延。因此,使用逐深度卷积可能是快速的,但由于其低硬件利用率也是低效的。相反,当执行全卷积时,电路114的硬件阵列可以经历大体上更高的利用率(例如,73%),使得大多数阵列的乘法累加单体用于给定的计算周期。当与逐深度卷积相比时,当执行全卷积时该更高的利用率通常以大体上更高的计算时延为代价。
如上所述,本文档中描述的组卷积技术提供了对示例ML硬件加速器的硬件资源的利用率度量和计算效率的更细粒度的控制。控制参数g在1与通道数量(z)之间的值的选择提供了全卷积(308)和逐深度可分离卷积(310)的两个示例约束之间的连续体。系统100可以参考通道维度的深度水平来确定组卷积的划分,如图2的示例所示。控制参数g用于定义组卷积(例如,划分)的数量。
图3的示例图312示出了用于选择g在2与沿着全卷积(308)和逐深度卷积(310)之间的连续体的通道数量(z)之间的不同值(324)的示例参数数目320和MAC数目322。在该示例中,zin维度为256。曲线图312示出了可训练参数的数目和乘法累加单体(或运算)的数目相对于组卷积的值(g)的对应增加的减少的示例。
如上所论述,电路114可以包括具有与张量的元素相对应的位置的存储器,该张量可以使用电路的控制逻辑来遍历或访问以计算层——诸如组卷积层——的输出。从存储器获取的元素(例如,输入或激活)必须对于计算层的多个输出是有用的。权重(即,参数)的数量也可以与分组的大小按比例缩放。在一些实施方式中,参数从存储器的传输可能成为增加计算的时延的瓶颈。当确定优选的神经网络架构时,搜索数据或模拟的示例集合可以指示关于参数传输时间的瓶颈。然后可以定义使用所公开的组卷积概念和基于组卷积的神经块来减少参数的数量并改进或加速机器学习任务的计算时间的架构。
图4是示出过程块410、过程块420和过程块430的示例的框图。过程块410、420、430中的每一个包括一个或多个层块。通常,过程块410、420、430中的每一个可以由卷积神经网络的不同层块表示。在图4的示例中,过程块410、420和430中的每一个可以是针对给定卷积运算执行的运算的子集。使用卷积神经网络102执行卷积运算,卷积神经网络102可以在上述示例硬件集成电路114上实现。
神经网络块可以描述单个层或包括多个层的神经网络的组件。广泛用于示例计算机视觉模型——诸如移动视觉模型——中的常见块是倒置瓶颈(IBN)层块402(“IBN层402”)。通常,IBN块可以是以某种方式组合卷积层数量的较大神经架构的宏块。包括IBN层的多个类型的层(或块)用作构建块以形成示例分类或对象检测网络。
IBN层402可以包括逐点卷积(404)、K×K逐深度卷积(405)和最终逐点卷积(406)。逐点卷积对通道维度进行扩展,并且该逐点卷积的示例在图4中示出为“1×1卷积(扩展)”。K×K逐深度卷积核应用于逐点卷积后通道维度的扩展深度。最终逐点卷积(406)将扩展的通道维度投影回更小的值。该最终逐点卷积的示例在图4中示出为“1×1卷积(投影)”。
诸如在IBN层块402中使用K×K逐深度卷积是相当常见的。这是因为,在扩展之后,在大的或扩展的通道维度上计算全卷积在处理和计算资源方面是非常昂贵的。在一些实施方式中,逐点卷积(404)和K×K逐深度卷积(405)被表示融合IBN层407的K×K全卷积(融合-扩展)过程块替换。通常,融合IBN层407将扩展和逐深度卷积运算合并到单个全卷积神经块中。
全卷积可能涉及大量参数/权重,并且需要集成电路的相当大百分比的硬件计算资源。如上所指示,这样的资源的示例可以是电路114的硬件计算阵列(例如,脉动阵列)的乘法累加单体、集成电路114的向量单元或两者。相比之下,使用所公开的神经块替代方案——诸如下面描述的块414、416、422、432——实现的所公开的组卷积技术提供了一种改进的方法,以增加输入通道(例如,大的输入通道)集合的可训练参数的数目,从而改进模型准确度,但是相对于非组卷积替代方案以更低的计算成本。
现在参考过程块410,示出了分组IBN渐进式投影(或渐进式扩展)块,其中上述K×K逐深度卷积(405)被K×K组卷积(414)或(416)替换。过程块410可以具有实现K×K组卷积(414)以执行通道维度的渐进式投影的第一示例或实现K×K组卷积(416)以执行通道维度的渐进式扩展的第二示例。
在过程块410的第一示例中,系统100可以通过将1×1卷积(扩展)(404)应用于输入特征图来从输入特征图(例如,输入438)生成扩展特征图。输入特征图可以是具有c1个通道的h×w特征图。该扩展特征图可以是具有c2个通道的h×w特征图,其中c2大于c1。在一些实施方式中,1×1卷积具有比输入滤波器更大数量的输出滤波器。将K×K组卷积(414)应用于扩展特征图,以执行通道维度的渐进式投影。例如,卷积神经网络102可以使用在卷积神经网络102的组卷积层处实现的组卷积来对扩展特征图执行渐进式投影。分组IBN渐进式投影可以为专用于投影和主K×K卷积算子的折衷参数提供灵活性。
在过程块410的该第一示例中,最终逐点卷积(406)将扩展的通道维度投影回更小的值。因此,在1×1投影(406)将通道大小降低到最终值之前,与组卷积相关联的K×K核可以执行通道大小的初始减小。每个加法块418是可选的残差(或跳过)连接,其可以用于将示例卷积输出436与馈送到给定过程块(例如,410)的输入438相加。示例总和440被传递作为在对应过程块处执行的操作的输出。
在过程块410的第二示例中,系统100可以通过将1×1卷积(扩展)(404)应用于输入特征图来从输入特征图(例如,输入438)生成初始扩展特征图。该初始扩展特征图可以是具有c2个通道的h×w特征图,其中c2大于c1。系统100通过将K×K组卷积(416)应用于初始扩展特征图来从初始扩展特征图生成扩展特征图。例如,卷积神经网络102可以使用在卷积神经网络102的组卷积层处实现的组卷积从初始扩展特征图生成扩展特征图。扩展特征图可以是具有c3个通道的h×w特征图,其中c3大于c2。该分组IBN渐进式扩展操作可以为专用于扩展和主K×K卷积运算符的折衷参数提供灵活性。分组IBN渐进式扩展可以保持扩展层的一部分不融合,并且允许在主K×K卷积之前跨组的逐通道卷积。过程块410的最终逐点卷积(406)将扩展的通道维度投影回更小的值。
现在参考过程块420,该过程块是融合分组的IBN块,其中上述1×1卷积(扩展)(404)和K×K逐深度卷积(405)被替换为K×K组卷积(422)。该K×K组卷积(422)包括“融合-扩展”指定,至少因为它允许替换逐点(404)+逐深度(405)对并经由K×K组卷积(422)融合那些操作的各方面以扩展通道维度。因此,在过程块420处,系统100可以通过将K×K组卷积(422)应用于输入特征图来从示例输入特征图(例如,输入438)生成扩展特征图。示例输入特征图可以是具有c1个通道的h×w特征图。扩展特征图可以是具有c2个通道的h×w特征图,其中c2大于c1。过程块420的最终逐点卷积(406)将扩展的通道维度投影回更小的值。如上所述,对应的总和440被传递作为在过程块420处执行的特定操作的输出。
在一些实施方式中,融合组卷积块422提供融合IBN层407的替代方案,其允许沿着通道维度的更有效处理。例如,可以在计算机视觉模型的稍后阶段实现这些效率。在一些情况下,这些后续阶段和与沿着通道维度的卷积相关联的数据分辨率何时相当大相对应。当使用特定类型的专用集成电路执行过程块420——包括其组卷积运算——时,可以特别优化由融合组卷积提供的处理速度的增加。例如,专用集成电路可以是包括广播输入总线的神经网络处理器,该广播输入总线将来自存储器的层输入广播到电路的一个或多个计算单体,如下文参考图6所述。
融合组卷积块422能够需要相对于分组IBN层414略高的参数计数。在全卷积和逐深度可分离卷积的两个约束之间的连续体上,融合组IBN 422在连续体上较高。例如,融合分组IBN层422可以更接近于沿着从逐深度卷积到全连续体的连续体的全卷积。
现在参考过程块430,该过程块是分组IBN块,其中上述K×K逐深度卷积(405)被替换为K×K组卷积(432)。如上所述,系统100将1×1卷积(404)应用于输入438以生成扩展特征图。在卷积神经网络102的组卷积层处应用K×K组卷积(432)。K×K组卷积(432)可以具有相同总数的输入滤波器和输出滤波器。类似于其他过程块,过程块430的最终逐点卷积(406)将扩展的通道维度投影回更小的值,并且对应的总和440被传递作为在过程块430处执行的特定操作的输出。
在过程块430处执行的卷积运算能够涉及相对于基线IBN层的较小扩展比。这些较小的膨胀比可以导致减少的参数计数。为了恢复参数计数,过程块430(以及其他过程块)的卷积运算可以使用充分利用跨通道信息的K×K核的组卷积。K×K组卷积(432)可以与包括沿着输入通道维度的卷积的其他块类型交错。此交错图案可以减轻跨组输入通道卷积的缺乏。
通常,过程块410、430的相应架构用K×K组卷积替换K×K逐深度卷积。用K×K组卷积替换K×K逐深度卷积的至少一个优点是,相对于全卷积,K×K组卷积产生具有减少的时延的更多可训练参数。来自使用K×K组卷积的附加可训练参数有助于增加模型准确度。当与逐深度卷积相比时,该增加的准确度可以仅通过时延的轻微或最小增加来实现。
用组卷积替换逐深度卷积可以特定于特定类型的硬件加速器的卷积运算,诸如被配置用于移动设备或边缘计算应用的张量处理单元(TPU)。在一些实施方式中,相对于K×K逐深度卷积,K×K组卷积可以被配置为实现关于集成电路114的硬件布局的更高效的硬件映射。例如,在输入到输出通道方面不是1对1关系,而是组卷积可以充分利用块概念来沿着组内的输入通道执行卷积。这提供了允许沿着输入通道使用更多信息的算法益处,这改进了计算机视觉网络的一个或多个层处的表示容量。
随着针对某些机器学习任务的计算前进到CNN的较深层,通道维度可以变得更大。在尝试实现某些性能改进——诸如输出准确度或计算/处理速度——时,使用融合IBN层块——诸如上文所描述的融合IBN层407——探索现有方法。然而,由于在输入通道(zin)的较大相应维度上执行全卷积的成本,融合IBN层的使用变得不切实际,这导致较慢的计算速度。
相对于先前方法,过程块410、420和430的相应组卷积提供神经块替代方案,其可以各自改进模型性能,同时最小化某些处理惩罚。例如,融合分组IBN块422可用于实现性能改进,而无需与常规IBN层或融合IBN层相关联的时延或扩展/大数据集处理惩罚。通常,组卷积块414、416、422、432中的每一个是可以包括一个或多个组卷积层的神经网络块。此外,组卷积块414、416、422、432中的每一个可以与沿着输入通道维度实现卷积的其他层或块类型交错。图5示出了交错神经块的示例。
交错图案可以减轻跨组输入通道卷积的缺乏。例如,虽然组卷积使用跨通道信息,但是这样的信息仅限于组,并且当使用组时,通常需要混洗操作来沿着通道维度混合信息。交错图案还避免使用这些附加混洗运算符(例如,ShuffleNet)。与框410和430非常类似,融合组卷积运算——例如,经由框422——可以相对于基线IBN生成更多的可训练参数,并且与某些类型的张量形状的基线IBN和融合IBN层相比,允许处理速度的增加(例如,运行更快)。
在一些实施方式中,逐深度卷积将输入通道和输出通道限制为相同的大小,然而组卷积可以实现不同的大小。例如,在1×1投影将通道大小降低到最终值之前,K×K组卷积(414)核可以执行通道大小的初始减小。这里的一个假设是,如果组卷积将通道减少到最终通道维度,从而消除1×1投影,则由于每组的小通道深度(zo),性能可能低于最优(例如,劣化)。但是,如果组卷积经由允许实现渐进式扩展的集成电路配置是本机支持的,则可以减轻这一点。例如,电路配置可以包括允许将输入传递到集成电路的不同MAC的输入总线。下面参考图6至图9更详细地描述这一点。
系统100可操作以从多个不同类型的组卷积块中进行选择。例如,除了上述组卷积块414、416、422、432之外,系统100还可以从实现K×K组卷积的融合投影分组卷积块中进行选择。融合投影分组卷积将逐点投影融合到K×K主卷积中(代替融合逐点扩展)。取决于张量形状,融合投影分组IBN可以提供更多可训练参数,同时与融合IBN相比实现类似处理效率。融合投影分组IBN保持投影层的一部分不融合,并且允许在主K×K卷积之后跨组的逐通道卷积。
图5是可以在图1的示例计算系统中使用的机器学习模型102的卷积神经网络的示例架构500。神经架构500可以实现卷积运算的多个相应集合以获得示例输入图像的不同表征。在一些实施方式中,系统100可操作以从上文参考图4的示例描述的分组和非分组IBN选项策略性地选择和放置各种IBN层/块选项。在一些实施方式中,系统100可操作用于以堆叠、连接或组合的配置选择和布置操作(即,将它们布置和组合在一起)以形成示例架构500,其可以用于实现大规模计算机视觉网络/模型。
在图5的示例中,架构500包括层块序列,其中序列中的层块的第一子集中的每个层块被配置为执行用于处理输入图像的操作。更具体地,架构500包括层块的第一子集502、层块的第二子集504和层块的第三子集506。在一些实施方式中,层块502、504、506的至少一个子集可以包括两个或更多个不同类型的神经块的交替序列。例如,层块502的子集可以具有包括融合IBN层及融合组IBN层的交替序列。
融合-IBN层可以表示第一单独神经块512,诸如融合-IBN层407(如上所述),其将扩展和逐深度卷积运算合并为单个全卷积神经块,而融合组IBN层可以表示第二单独神经块514,诸如融合组IBN 422,其允许替换逐点(404)+逐深度(405)对并经由K×K组卷积(422)融合那些运算的各方面以扩展通道维度。如上所论述,此块可提供融合IBN层407的替代方案,其允许沿着通道维度的更有效处理。
更具体地,第一神经块512可以是非分组的IBN块,而第二神经块514可以是分组的IBN块。第一神经块512和第二神经块514中的每一个包括一个或多个卷积神经网络层。因此,层块502可以包括分组和非分组IBN层的交替序列。例如,层块的交替序列可以具有与非组卷积层块交错的组卷积层块。
图6示出了用于执行卷积神经网络的计算的示例硬件计算图块600(“计算图块600”)。多个计算图块600可以被布置或配置为形成专用处理器,诸如神经网络处理器、专用集成电路或硬件加速器。在一些实施方式中,计算图块600是在硬件集成电路114处包括的多个计算图块中的一个,如上所述。
每个计算图块600被配置为独立地执行多层神经网络的一个或多个层所需的计算(例如,神经网络计算)。例如,计算图块600被配置为基于从计算图块600的存储器(下面描述)本地获得的数据和指令来执行多个计算线程。在一些情况下,经由硬件集成电路114的通信/数据总线602在计算图块600处接收数据和指令。例如,数据总线602可以被耦合到计算图块600中的每一个以在不同计算图块600之间路由数据和计算指令。因此,对于给定的计算图块600,可以在计算图块600处从图块外部的源接收数据和指令。源可以是另一计算图块600、硬件电路114的较高水平的控制器、硬件电路114外部的主机设备或这些的组合。
计算图块600接收可以包括用于执行神经网络计算的指令和操作数的数据604集合。如下所述,数据604可以是用于执行组卷积运算的指令和操作数。计算图块600响应于分析数据604而使用其本地控制逻辑(例如,控制器)来识别指令和操作数。控制逻辑基于一个或多个指令生成用于处理操作数的控制信号。例如,控制逻辑使用指令的一个或多个操作码来生成用于计算图块600的对应组件的相应控制信号。组件协作以基于控制信号来执行组卷积运算。
在图6的示例中,本地控制逻辑至少由张量控制单元606(“张量控制606”)和存储器访问控制单元608(“DMA控制608”)表示。张量控制606包括张量遍历单元(TTU)626。通常,张量控制606使用TTU 626来管理用于神经网络计算的张量遍历操作。这在下面更详细地描述。DMA控制608管理将用于给定计算的操作数写入/存储到在计算图块600处包括的本地存储器的存储器位置。DMA控制608还管理从本地存储器的存储器位置读取/获得用于给定计算的操作数。在一些实施方式中,DMA控制608与TTU 626协作地执行其存储器访问操作。在一些其他实施方式中,DMA控制608包括其自己的专用TTU,用于独立于与TTU 626的协作来执行其存储器访问操作。
每个计算图块600包括用于将输入存储到神经网络层并用于存储该层的权重的存储器。输入和权重与经由通信总线602到达计算图块600的操作数(或数据)相对应。在图6的示例中,存储器包括将输入存储到神经网络层的第一存储器610和存储神经网络层的权重的第二存储器612。第一存储器可以是存储、读取或以其他方式管理例如8位组块(chunk)中的数据的窄存储器,而第二存储器可以是存储、读取或以其他方式管理例如32位组块中的数据的宽存储器。第一存储器和第二存储器中的每一个可以存储、读取和管理具有更多或更少位的数据。在一些实施方式中,第一存储器610和第二存储器612中的每一个是计算图块600的较大本地存储器的子部分。在一些其他实施方式中,第一存储器610和第二存储器612中的每一个是计算图块600的不同的本地存储器单元。
每个计算图块600包括相应的计算单元614,该计算单元614被配置为使用与传递到计算图块160的输入和权重值相对应的操作数来执行算术运算,诸如加法和乘法。计算单元614中的每一个可以包括多个算术块。在图6的示例中,算术块各自被标识为“cell#_”。每个算术块(或单体)包括乘法累加单体616和求和寄存器618。乘法累加单体616被配置为使用输入和权重来执行算术运算(例如,乘法)。
例如,算术运算包括将从窄存储器610获得的输入或激活与从宽存储器612获得的权重相乘以产生一个或多个累加值集合。每个计算图块600包括相应的输入总线617,其允许向计算单元614的不同块或乘法累加单体616广播、传递或以其他方式提供输入。在一些实施方式中,输入总线617是将组卷积层的输入从窄存储器广播给一个或多个乘法累加单体的广播输入总线。求和寄存器618用于存储可以被分组以形成累加输出值620的集合的部分和。
每个计算图块600包括输出总线622和耦合到输出总线622的激活单元626。计算图块600可以可选地包括耦合到输出总线622的一个或多个寄存器624。在一些实施方式中,一个或多个寄存器624中的每一个是用于将神经网络层的输出值620(例如,累加值或部分和)移位到激活单元626的单独移位寄存器。激活单元626可操作以将非线性激活函数应用于输出值620。激活单元626可操作以基于应用于输出620的激活函数来生成用于该层的输出激活集合。
激活单元626耦合到第一存储器610,并且被配置为将输出激活传递到窄存储器610以存储在存储器中。输出激活对应于神经网络层的层输出。例如,输出激活集合可以是将组卷积应用于输入特征图以生成输出特征图的组卷积层的输出(或输出的一部分)。因此,输出激活可以对应于输出特征图。在一些实施方式中,激活单元626可操作以将多个部分和或累加值聚合成值向量。
每个计算图块600可以包括可选组卷积控制635,其可操作以管理和实现计算图块处的组卷积层的操作。例如,计算图块600可以通过将组卷积应用于沿着输入特征图的通道维度的一个或多个输入分组来接收通过组卷积层处理输入集合的指令。一个或多个输入分组的单独输入可以跨存储器610的各个位置以及跨不同的计算图块600存储。每个存储器位置由相应的地址标识。存储相应组卷积输入的单独存储器位置(或其相应地址)可以对应于输入张量的元素,诸如多维输入张量或存储在第一存储器610处的输入特征图。
组卷积控制635可以获得或确定要广播到一个或多个乘法累加单体616的对应组卷积输入的存储器地址。在一些实施方式中,组卷积控制635与DMA控制608进行数据通信,并且与DMA控制608交互以发出用于访问对应组卷积输入的存储器位置的地址。在一些其他实施方式中,组卷积控制635直接与第一存储器610通信以访问对应组卷积输入的存储器地址。组卷积控制635可以执行类似的操作以访问存储在第二存储器612处的参数张量的权重,并且使得权重被传递到或加载在对应的乘法累加单体处。下面参考图8更详细地描述组卷积控制635。
每个计算图块600被配置为执行一个或多个计算线程。在一些实施方式中,硬件电路114使用计算图块600中的一些(或全部)并行地执行多个计算线程。计算线程可以在多个时钟周期内执行,并且用于处理到神经网络层的输入以生成神经网络层的输出。例如,计算线程的相应子集可以被分配给一个或多个计算图块600以执行用于将组卷积应用于示例输入特征图的组卷积层的循环嵌套。这在下面更详细地描述。图6包括指示计算图块600中的不同组件的相应属性的参考图630。为了清楚起见,示出了参考图630,但参考图630不包括在计算图块600中。属性包括特定组件是单元、存储设备、运算符、控制设备还是数据路径。
图7A是示出分区到乘法累加单体616的子集的示例映射的框图。图7B是示出示例输入总线617的框图,该示例输入总线617将相应输入提供给硬件计算图块600的乘法累加单体616。
首先参考图7A,如上所述,可以在计算图块600处从图块外部的源接收数据和指令。源可以是另一计算图块600、硬件电路114的较高水平的控制器、硬件电路114外部的主机设备或这些的组合。基于正在执行的组卷积运算的类型,系统100可以从控制参数g的不同预定义值中进行选择,控制参数g表示多个组卷积(例如,分区)。例如,系统100可以为给定神经网络架构的不同组卷积神经块选择g的特定值。在一些实施方式中,针对给定操作在外部主机处预定义g的值,并将其传递给硬件电路114的控制器。
在一些实施方式中,较高水平的控制器基于控制参数g识别沿着输入特征图的通道维度(例如,Zin)的一个或多个分区。系统100可以基于一个或多个分区沿着通道维度形成一个或多个分组。在图7的示例中,沿着示例输入张量或输入特征图的Zin形成输入通道的相应分组。每个相应的分组可以被映射到对应的乘法累加单体616-1、616-2、616-3、616-4,如下所述。此外,输入通道的每个分组包括相应的大小。更具体地,每个分组包括与分组的相应大小相对应的输入通道的相应数量。例如,如图7A的图示中所指示,分组或分区的大小参数S可以由Zin/g定义,其中Zin是沿着输入张量的通道维度的输入通道的数量,并且g是由上述控制参数定义的组的数量。
系统100可操作以确定分组到计算单元614中的乘法累加单体616的映射700。例如,可以在计算图块600处本地地或使用集成电路114的更高水平的控制器来确定映射。在一些实施方式中,主机设备确定映射,生成映射指令,并将映射指令传递到更高水平的控制器,更高水平的控制器又将指令传递到计算图块600。例如,集成电路114可以包括用于接收从外部主机设备传递到较高水平的控制器的数据或指令的主机接口块。
在一些实施方式中,系统100(例如,主机或集成电路的控制器)基于每个分区中的通道的数量来确定映射。例如,主机设备或更高水平的控制器可以访问描述集成电路114的硬件配置的信息,包括每个计算图块600中的计算单元614的配置。基于这些硬件配置,系统100可以参考计算单元614处的乘法累加单体的数目或布局来确定每个分组的相应大小。例如,系统100可以确定分组和相应输入到乘法累加单体616的最优映射,从而最大化计算单元614的整体利用率。这在下面更详细地描述。
现在参考图7B,示出了示例架构,其中耦合到窄存储器610的输入总线617将输入/激活广播给一个或多个乘法累加单体616。输入可以一次一个地移位或发送到输入总线617,以供对应的乘法累加单体616接收。
在一些实施方式中,输入总线617是广播输入总线,其将从窄存储器610获得的组卷积层输入广播到乘法累加单体616中的一个或多个。例如,输入总线617可以将相应输入传递(或广播)到集成电路114的不同乘法累加单体616-1、616-2、616-3、616-n。因此,输入总线617包括广播功能,该广播功能允许集成电路114基于上面讨论的确定的映射,沿着输入特征图的Zin维度将每个分组的多个输入广播给对应的乘法累加单体616。
在一些实施方式中,在单体616的子集中的一些(或所有)乘法累加单体616之间共享相同的输入。输入总线617的宽度必须足够宽以将广播的输入供应给计算单元614的给定子集的对应数量的乘法累加单体616。例如,关于输入总线617的结构,如果计算单元614中的乘法累加单体616的数量为四并且输入(或激活)的数据分辨率/宽度为8位,则输入总线617可以被配置为每个周期提供多达四个输入激活。在该示例中,每个乘法累加单体616可以接收广播的四个激活中的单个激活。
系统100可以经由输入总线617将用于输入特征图的第一分组(沿着Zin)的相应第一输入(“0”)广播给乘法累加单体616的子集中的每个乘法累加单体616-1、616-2、616-3、616-n。同样,系统100可以经由输入总线617将用于输入特征图的第二分组(沿着Zin)的相应第二输入(“1”)广播给乘法累加单体616的子集中的每个乘法累加单体616-1、616-2、616-3、616-n。在针对组卷积层的计算期间重复使用广播的第一输入和第二输入。例如,每个输入702(“0”)、704(“1”)、706(“2”)、708(“3”)可以与沿着激活张量的通道维度的不同分组相对应。
在一些实施方式中,每个输入702、704、706、708可以跨每个乘法累加单体被广播和重复使用,以并行化组卷积层的计算。例如,为了执行组卷积的一部分,重复使用的输入与从宽存储器612的存储器位置获取的不同的单独权重值相乘,并路由到乘法累加单体616的相应权重寄存器。下面参考图8更详细地描述该重复使用属性。以该方式并行化每个Zin分组的计算使得电路114能够最大化其计算单元614以及单元中的对应乘法累加单体616的利用率。更具体地,至少允许跨电路114的乘法累加单体616的输入广播的用于执行组卷积的电路架构可以实现超过用于执行组卷积的常规电路架构的利用率和效率水平。
此外,基于组卷积的神经块的至少一个益处是它们允许改变操作强度。例如,可以调整操作强度以控制在乘法累加单体616处执行的操作量以及所获取的每个权重的单元的总体利用率。这允许系统100优化参数带宽。在一些情况下,用于边缘推断计算的应用可能具有有限的存储器带宽。组卷积可以用于最大化总计算时间并且最小化(或避免)对从存储器获取新权重的无关存储器操作的需要。
图8是指示全卷积、深度卷积和组卷积的某些属性的示例框图800。更具体地,框图800指示在全卷积运算(802)、逐深度卷积运算(804)和组卷积运算(806)期间处理的输入的相应重复使用属性。在图8的示例中,参考块802(全卷积)和块806(组卷积)示出了重复使用。例如,第一块802指示每个输入812被重复使用以计算用于全卷积的每个输出通道813,而第二块804指示每个输入814仅被使用一次来计算用于逐深度卷积的对应输出通道815。
第三框806指示当计算给定组卷积的对应输出通道817、818时,输入可以具有重复使用的度量。例如,在框806处,当计算对应的输出通道817、818时,每个输入816具有特定的重复使用因子(例如,2)。组卷积层的输入的重复使用因子对应于要在该层处理的分组的大小。在一些情况下,重复使用来自输入通道的每个元素来计算属于其组的输出通道。鉴于此,重复使用因子将基于组大小来确定。
在一些实施方式中,在计算图块600处接收的指令中的第一操作码指定控制参数g的值,以指示输入张量的组卷积输入的分区和后续分组,并且指令中的第二操作码指定大小参数的值,以指示分组中的输入的重复使用因子。每个计算图块600还可以使用其本地组卷积控制635来基于计算图块600的硬件配置、要在计算图块600处执行的组卷积或两者来确定大小参数。
电路114可以在计算单元614中具有32或64个乘法累加单体。组卷积控制635可以识别指定计算图块600处的组卷积运算的指令中的一个或多个操作码。例如,组卷积控制635可以确定组卷积是K×K组卷积(416)以执行通道维度的渐进式扩展。组卷积控制635可以确定在分组IBN渐进式扩展神经块416的一个或多个组卷积层处应用该特定类型的卷积运算。
在一些实施方式中,系统100可以选择特定于特定类型的卷积运算的控制参数g的预定义值。例如,对于给定的组卷积神经块412、416、422或432,系统100可以从预定控制值g中选择与每个神经块相关联的不同组卷积运算。从控制值定义组卷积运算的分组。在一些实施方式中,给定计算图块600的组卷积控制635确定分组到图块处的乘法累加单体616的本地映射700。对于每个分组,组卷积控制635可以识别用于处理操作的组卷积输入816的神经块416的组卷积层,并且根据分组和操作设置大小参数S。
如上所提及,每个分组包括与分组的相应大小相对应的输入通道的相应数目,使得分组的大小参数S可以由Zin/g定义。每个分组表示组卷积并且与输出组220-n的对应通道相关联。每个分组可以包括从输入特征图导出的相应输入。在图8的示例中,每个输入816可以来自沿着输入张量的通道维度的不同分组。在一些实施方式中,组卷积控制635分析指令的一个或多个操作码,并且基于操作码确定计算图块600将应用K×K组卷积(416)以执行通道维度的渐进式扩展,这涉及增加通道维度的数量。
组卷积控制635针对组卷积的不同方面确定大小参数S,并且可以取决于K×K组卷积(416)的进展来调整分组的本地映射。在一些实施方式中,该渐进式扩展操作被静态地表达为神经网络的一部分。例如,为了实现e的总输出通道扩展,K×K组卷积(416)可以将输出通道扩展因子g_e。如上所述,扩展之后可以是具有扩展e/g_e的1×1逐点卷积,使得总扩展为g_e*e/g_e=e。
现在将描述涉及用于组卷积的计算的示例操作。
再次参考64个乘法累加单体的示例,组卷积控制635可以从宽存储器612获取组卷积层的64个不同权重值。例如,组卷积控制635可以基于硬件配置(例如,单元的数目)、组卷积层的类型或两者来获取64个不同的权重值。组卷积控制635还可以从存储器610获取对应的输入816。所获取的输入应当具有跨乘法累加单体616的重复使用。在一些实施方式中,所获取的输入已经具有跨所有64个乘法累加单体的重复使用。在一些其他实施方式中,所获取的输入已经具有跨64个乘法累加单体的子集的重复使用。通常,组内的每个输入具有对同一组中的输出的重复使用的度量。
在该示例中,输入816可以选自具有输入深度64的输入特征图,使得输入深度对应于乘法累加单体的数量。计算图块600可以使用其64个单体来计算1000个输出。组卷积控制635可以将组大小设置为64,使得对于获取和广播一个输入值816的每个周期,计算图块600可以使用该输入816来计算1000个输出中的64个输出。因此,如果组大小足够大,则给定的计算图块600可以实现其输入总线的100%利用。这是因为获取1个输入值的每个周期导致所有由64个单元使用。
因此,计算图块600可以基于乘法累加单体的数目来定义组大小,并且取决于组卷积的某些特性,实现乘法累加单体的完全利用而不引起全卷积的处理惩罚。在涉及单个输入通道的示例中,如果组大小=2,则这意味着计算图块600将卷积两个通道元素(例如,两个输入816)。因此,计算图块600将基于组大小来卷积许多通道元素。对于全卷积,组大小等于整个输入通道大小。
如果存在1000个输入通道,则对于全卷积,系统100卷积整个1000个输入通道以计算一个输出通道,其中这里的输出是值或激活的通道。对于逐深度卷积,系统100仅计算一个输入通道以计算一个输出通道。在该示例中,如果组大小为1,则这是逐深度卷积。如果组大小为2,则计算一个输出通道需要卷积2个输入通道。如果组大小为4,则计算一个输出通道需要卷积4个输入通道。
图9是用于通过使用硬件集成电路应用组卷积来处理示例图像的示例过程900的流程图。硬件集成电路被配置为实现包括多个神经网络层的CNN,其中多个层包括组卷积层。示例图像可以是上述图像102或各种其他类型的数字图像和相关图形数据。在一些实施方式中,过程900是用于加速神经网络计算的技术的一部分,相对于其他数据处理技术,该技术还允许改进图像处理输出的准确度。
过程900可以使用上述系统100来实现或执行。因此,过程900的描述可以参考系统100的上述计算资源。过程900的步骤或动作可以通过编程的固件或软件指令来实现,该固件或软件指令可由本文档中描述的设备和资源的一个或多个处理器执行。在一些实施方式中,过程900的步骤对应于用于使用硬件集成电路执行计算以生成卷积神经网络层——例如,组卷积层——的输出的方法。集成电路可以是被配置为实现CNN的专用神经网络处理器或硬件机器学习加速器。
再次参考过程900,系统100识别与输入特征图相关联的控制参数(902)。例如,识别控制参数,该控制参数定义沿着输入特征图的通道维度的两个或更多个分区。系统100确定两个或更多个分区的映射(904)。更具体地,系统100确定分区到硬件集成电路的计算单元中的乘法累加单体的映射。
对于组卷积层,系统100使用硬件集成电路将组卷积应用于输入特征图(906)。对于两个或更多个分区中的每个分区,对组卷积层应用组卷积包括:将组卷积层的权重提供给乘法累加单体的子集(908)。例如,系统100基于所确定的映射向乘法累加单体的子集提供权重。从计算图块600的示例宽存储器提供权重。
系统100将输入特征图的输入提供给乘法累加单体的子集(910)。例如,经由集成电路的输入总线将输入特征图的相应输入提供给子集中的每个乘法累加单体。更具体地,每个硬件计算图块600包括用于将一个或多个输入广播到给定乘法累加单体的相应输入总线。
系统100使用相应输入和组卷积层的对应权重来计算乘积(912)。例如,通过使用乘法累加单体的乘法电路在子集中的每个乘法累加单体处将相应输入和对应权重相乘来计算乘积。
系统100生成用于组卷积层的输出特征图(914)。例如,基于在乘法累加单体子集中的每个乘法累加单体616处计算的多个相应乘积的累加来生成组卷积层的输出特征图。在计算图块600内针对组卷积层执行的计算过程包括存储在输入张量的相应元素处的数据值(例如,输入或激活)与存储在参数张量的相应元素处的数据值(例如,权重)的乘法。例如,计算包括在一个或多个周期上将输入或激活值与权重值相乘以生成多个乘积(例如,部分和),然后在多个周期上执行那些乘积的累加。在一些实施方式中,生成输出特征图包括基于输入通道的每个分组(或分区)的相应大小来生成输出特征图。
在本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形地体现的计算机软件或固件中、在计算机硬件中——包括在本说明书中公开的结构及其结构等同物——或在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,编码在有形非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。
可替代地或附加地,程序指令可以被编码在人工生成的传播信号——例如,机器生成的电信号、光信号或电磁信号——上,该传播信号被生成以编码用于传输到合适的接收器装置以供数据处理装置执行的信息。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行访问存储器设备或它们中的一个或多个的组合。
术语“计算系统”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、或声明性或过程语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合于在计算环境中使用的其他单元。
计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中,例如存储一个或多个模块、子程序或代码部分的文件。可以部署计算机程序以在位于一个站点或跨多个站点分布并通过通信网络互连的一个计算机或多个计算机上执行。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPGPU(通用图形处理单元)。
例如,适合于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的一些元件是用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备——例如,磁盘、磁光盘或光盘——接收数据或向其传送数据或两者。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入于另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)快闪驱动器,仅举几例。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备——例如,LCD(液晶显示器)监视器——以及用户可以通过其向计算机提供输入的键盘和定点设备——例如,鼠标或轨迹球——的计算机上实现。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户的客户端设备上的web浏览器接收到的请求而向web浏览器发送网页。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与本说明书中描述的主题的实现进行交互,或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信——例如,通信网络——互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系通过在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体实现细节,但是这些不应当被解释为对任何发明或可以要求保护的内容的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。在本说明书中在分开的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分开地或以任何合适的子组合在多个实施例中实现。此外,尽管上面可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,来自要求保护的组合的一个或多个特征可以从组合中去除,并且要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定次序描绘了操作,但是这不应当被理解为要求以所示的特定次序或以顺序次序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或被封装到多个软件产品中。
已经描述了主题的特定实施例。其他实施例在所附权利要求书的范围内。例如,权利要求中记载的动作可以以不同的次序执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定次序或顺序次序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

Claims (20)

1.一种用于使用硬件集成电路处理输入图像的方法,所述硬件集成电路被配置为实现包括多个神经网络层的卷积神经网络,所述多个神经网络层包括组卷积层,所述方法包括:
识别定义沿着输入特征图的通道维度的多个分区的控制参数;
确定所述多个分区到所述集成电路的计算单元中的多个乘法累加单体(MAC)的映射;
针对所述组卷积层,将组卷积应用于所述输入特征图,包括针对所述多个分区中的每个分区:
基于所确定的映射,将所述组卷积层的权重提供给所述多个MAC的子集;
经由所述集成电路的输入总线将所述输入特征图的相应输入提供给所述子集中的每个MAC;以及
在所述子集中的每个MAC处,使用所述相应输入和所述组卷积层的对应权重来计算乘积;以及
基于乘积的累加生成针对所述组卷积层的输出特征图。
2.根据权利要求1所述的方法,其中,确定所述多个分区到所述多个乘法累加单体的映射包括:
基于所述多个分区中的每个分区中的通道的数量来确定所述映射。
3.根据权利要求2所述的方法,其中:
所述多个分区中的每个分区包括与所述分区的相应大小相对应的相应数目的输入通道。
4.根据权利要求3所述的方法,其中,生成所述输出特征图包括:
基于每个分区的所述相应大小生成所述输出特征图。
5.根据权利要求3所述的方法,进一步包括:
访问描述所述计算单元的硬件配置的信息;以及
基于所述计算单元的所述硬件配置来确定每个分区的所述相应大小。
6.根据权利要求1所述的方法,其中,所述输入总线包括广播功能,并且所述方法进一步包括:
经由所述输入总线并且针对每个分区将所述输入特征图的多个输入广播到所述集成电路的所述计算单元。
7.根据权利要求6所述的方法,进一步包括:
经由所述输入总线并且针对所述输入特征图的第一分区,将所述第一分区的第一输入广播给所述子集中的每个MAC;
其中,所广播的所述第一输入在针对所述组卷积层的计算期间被重复使用。
8.根据权利要求6所述的方法,其中:
所述输入特征图的所述第一分区对应于所述输出特征图的第一分区;以及
所述第一输入在所述输出特征图的所述第一分区的输出上具有重复使用。
9.根据权利要求1所述的方法,其中,生成所述输出特征图包括:
使用所述多个MAC的所述子集来计算多个乘积;以及
从所述多个乘积生成所述乘积的累加。
10.一种用于处理输入图像的系统,所述系统包括:
处理器;
硬件集成电路,所述硬件集成电路被配置为实现包括多个神经网络层的卷积神经网络,所述多个神经网络层包括组卷积层;以及
存储指令的非暂时性机器可读存储设备,所述指令能被所述处理器执行以引起操作的执行,所述操作包括:
识别定义沿着输入特征图的通道维度的多个分区的控制参数;
确定所述多个分区到所述集成电路的计算单元中的多个乘法累加单体(MAC)的映射;
针对所述组卷积层,将组卷积应用于所述输入特征图,包括针对所述多个分区中的每个分区:
基于所确定的映射,将所述组卷积层的权重提供给所述多个MAC的子集;
经由所述集成电路的输入总线将所述输入特征图的相应输入提供给所述子集中的每个MAC;以及
在所述子集中的每个MAC处,使用所述相应输入和所述组卷积层的对应权重来计算乘积;以及
基于乘积的累加生成针对所述组卷积层的输出特征图。
11.根据权利要求10所述的系统,其中,确定所述多个分区到所述多个乘法累加单体的映射包括:
基于所述多个分区中的每个分区中的通道的数量来确定所述映射。
12.根据权利要求11所述的系统,其中:
所述多个分区中的每个分区包括与所述分区的相应大小相对应的相应数目的输入通道。
13.根据权利要求12所述的系统,其中,生成所述输出特征图包括:
基于每个分区的所述相应大小生成所述输出特征图。
14.根据权利要求12所述的系统,其中,所述操作进一步包括:
访问描述所述计算单元的硬件配置的信息;以及
基于所述计算单元的所述硬件配置来确定每个分区的所述相应大小。
15.根据权利要求10所述的系统,其中,所述输入总线包括广播功能,并且所述操作进一步包括:
经由所述输入总线并且针对每个分区将所述输入特征图的多个输入广播给所述集成电路的所述计算单元。
16.根据权利要求15所述的系统,其中,所述操作进一步包括:
经由所述输入总线并且针对所述输入特征图的第一分区,将所述第一分区的第一输入广播给所述子集中的每个MAC;
其中,所广播的所述第一输入在针对所述组卷积层的计算期间被重复使用。
17.根据权利要求15所述的系统,其中:
所述输入特征图的所述第一分区对应于所述输出特征图的第一分区;以及
所述第一输入在所述输出特征图的所述第一分区的输出上具有重复使用。
18.根据权利要求1所述的方法,其中,生成所述输出特征图包括:
使用所述多个MAC的所述子集来计算多个乘积;以及
从所述多个乘积生成所述乘积的累加。
19.一种存储用于使用硬件集成电路处理输入图像的指令的非暂时性机器可读存储设备,所述硬件集成电路被配置为实现包括多个神经网络层的卷积神经网络,所述多个神经网络层包括组卷积层,所述指令能被处理器执行以引起操作的执行,所述操作包括:
识别定义沿着输入特征图的通道维度的多个分区的控制参数;
确定所述多个分区到所述集成电路的计算单元中的多个乘法累加单体(MAC)的映射;
针对所述组卷积层,将组卷积应用于所述输入特征图,包括针对所述多个分区中的每个分区:
基于所确定的映射,将所述组卷积层的权重提供给所述多个MAC的子集;
经由所述集成电路的输入总线将所述输入特征图的相应输入提供给所述子集中的每个MAC;以及
在所述子集中的每个MAC处,使用所述相应输入和所述组卷积层的对应权重来计算乘积;以及
基于乘积的累加来生成针对所述组卷积层的输出特征图。
20.根据权利要求19所述的非暂时性机器可读存储设备,其中:
所述多个分区中的每个分区包括与所述分区的相应大小相对应的相应数目的输入通道。
CN202180103114.7A 2021-10-08 2021-10-08 基于硬件加速器优化组卷积的神经网络模型 Pending CN118159986A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/054148 WO2023059335A1 (en) 2021-10-08 2021-10-08 Hardware accelerator optimized group convolution based neural network models

Publications (1)

Publication Number Publication Date
CN118159986A true CN118159986A (zh) 2024-06-07

Family

ID=78483565

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180103114.7A Pending CN118159986A (zh) 2021-10-08 2021-10-08 基于硬件加速器优化组卷积的神经网络模型

Country Status (4)

Country Link
KR (1) KR20240063137A (zh)
CN (1) CN118159986A (zh)
TW (1) TW202316321A (zh)
WO (1) WO2023059335A1 (zh)

Also Published As

Publication number Publication date
TW202316321A (zh) 2023-04-16
WO2023059335A1 (en) 2023-04-13
KR20240063137A (ko) 2024-05-09

Similar Documents

Publication Publication Date Title
KR102525080B1 (ko) 신경 네트워크 명령어 세트 아키텍처
Moolchandani et al. Accelerating CNN inference on ASICs: A survey
CN107454966B (zh) 用于神经网络处理器的预取权重
EP3298547B1 (en) Batch processing in a neural network processor
TWI825596B (zh) 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置
JP2022095817A (ja) ベクトル縮小プロセッサ
TW201830297A (zh) 用於類神經網路計算的旋轉資料
US20210049231A1 (en) Multiple Output Fusion For Operations Performed In A Multi-Dimensional Array of Processing Units
CN114026569A (zh) 使用脉动阵列的扩张卷积
TW202127326A (zh) 用於加速神經網路計算的硬體電路
JP2023519565A (ja) 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け
TW202125341A (zh) 使用神經網路加速器處理順序輸入
CN111448545B (zh) 并行处理设备和进行并行多值归约的方法
KR20220161339A (ko) 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬
CN118159986A (zh) 基于硬件加速器优化组卷积的神经网络模型
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
Erdem et al. Runtime design space exploration and mapping of dcnns for the ultra-low-power orlando soc
CN118265984A (zh) 用于实现组卷积的神经网络架构
EP4384940A1 (en) Neural network architecture for implementing group convolutions
TWI844116B (zh) 在機器學習硬體加速器處利用資料稀疏性
TW202414200A (zh) 減少硬體加速器中之記憶體庫衝突
US11972349B1 (en) Flexible compute array utilization in a tensor processor
US11934876B1 (en) Compiler-driven storage allocation of runtime values
US12008469B1 (en) Acceleration of neural networks with stacks of convolutional layers
WO2024058810A1 (en) Reducing memory bank conflicts in a hardware accelerator

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination