CN117355843A - 生成和全局调谐应用特定的机器学习加速器 - Google Patents
生成和全局调谐应用特定的机器学习加速器 Download PDFInfo
- Publication number
- CN117355843A CN117355843A CN202180097806.5A CN202180097806A CN117355843A CN 117355843 A CN117355843 A CN 117355843A CN 202180097806 A CN202180097806 A CN 202180097806A CN 117355843 A CN117355843 A CN 117355843A
- Authority
- CN
- China
- Prior art keywords
- architecture
- hardware
- neural network
- accelerator
- application
- 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
- 238000010801 machine learning Methods 0.000 title claims abstract description 129
- 238000013528 artificial neural network Methods 0.000 claims abstract description 117
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000004364 calculation method Methods 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 62
- 238000013507 mapping Methods 0.000 claims description 42
- 238000002922 simulated annealing Methods 0.000 claims description 9
- 238000013461 design Methods 0.000 abstract description 86
- 238000005457 optimization Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 20
- 230000001537 neural effect Effects 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 12
- 239000013598 vector Substances 0.000 description 12
- 230000000694 effects Effects 0.000 description 11
- 230000000750 progressive effect Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000013139 quantization Methods 0.000 description 5
- 238000003786 synthesis reaction Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 239000003638 chemical reducing agent Substances 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000000178 monomer Substances 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
Abstract
描述了用于全局调谐和生成ML硬件加速器的方法、系统和装置,包括计算机可读介质。设计系统选择表示基线处理器配置的架构。系统的ML成本模型至少通过对架构如何执行包括多个层的神经网络的计算进行建模来生成关于架构的性能数据。当架构实现神经网络并且为目标应用执行机器学习计算时,基于性能数据,动态调谐架构以满足性能目标。响应于动态调谐架构,系统生成ML加速器的配置,该配置指定用于实现神经网络多层中每一层的定制硬件配置。
Description
技术领域
本说明书一般涉及用于执行机器学习计算的集成电路。
背景技术
神经网络是机器学习模型,其采用一层或多层节点来生成用于接收的输入的输出,例如分类。一些神经网络除了输出层之外还包括一个或多个隐藏层。一些神经网络可以是被配置用于图像处理的卷积神经网络(CNN)或被配置用于语音和语言处理的循环神经网络(RNN)。不同类型的神经网络架构可用于执行与分类或模式识别、涉及数据建模的预测以及信息聚类相关的各种任务。
神经网络层可以具有对应的参数或权重的集合。权重用于通过神经网络层处理输入(例如,批量输入)以生成该层的对应输出以用于计算神经网络推断。批量输入和核集合可以被表示为一个张量,即输入和权重的多维阵列。硬件加速器是用于实现神经网络的专用集成电路。该电路包括具有与可以使用电路的控制逻辑来遍历或访问的张量的元素相对应的位置的存储器。
设计专用硬件加速器是工作密集并且耗时的。例如,设计过程通常需要数月的努力,并且可能包括多次设计迭代。此外,为了满足应用特定的性能和功率目标,设计过程需要一种将目标应用映射到底层硬件的策略。虽然神经网络的计算图是静态的,但映射工作可能涉及影响电路实际性能的多个设计参数。此外,由于不同设置的巨大规模以及不同参数之间的相互关系,对设计空间的手动探索通常是令人望而却步的。
发明内容
本说明书描述了用于全局调谐数据处理架构并且基于调谐后的架构自动生成应用特定的机器学习(ML)加速器的技术。该架构可以是基于应用级目标集合选择的候选架构。示例应用级目标可以包括处理器利用率、功耗、数据吞吐量和时延。在某些情况下,目标表示用户期望的示例ML加速器的性能属性。一些(或全部)目标可以作为示例硬件加速器设计系统的用户输入来接收。设计系统还可以独立于用户输入来确定一个或多个目标。
系统使用应用级目标(例如,一个或多个输入)来全局调谐和动态优化候选架构。例如,可以对架构进行调谐和优化以运行特定类型的神经网络,以便实现诸如功耗和处理器利用率等领域的效率。加速器设计系统使用特定于架构的成本模型来调谐架构的各个方面。成本模型的输出用于定义加速器的最终配置。在优化和调谐之后,系统自动生成包括各种架构特征——包括调度/映射选项——的硬件配置,用于生成被优化以在硬件中实现指定神经网络的应用特定(ML)加速器。
本说明书中描述的主题的一个方面可以体现在一种用于生成专用机器学习(ML)加速器的计算机实现的方法中。该方法包括选择表示基线处理器配置的架构,以及至少通过对架构如何执行包括多个层的第一神经网络的计算进行建模,由ML成本模型生成关于该架构的性能数据。该方法包括当架构实现第一神经网络并且针对目标应用执行机器学习计算时,基于性能数据来动态地调谐架构以满足性能目标。该方法还包括响应于动态地调谐架构而生成ML加速器的配置。该配置指定用于实现第一神经网络的多个层中的每一层的定制硬件配置。
这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。例如,在一些实施方式中,该方法进一步包括基于定制硬件配置来生成应用特定的硬件ML加速器。附加地,当神经网络用于执行针对目标应用的计算时,可以优化应用特定的硬件ML加速器以实现神经网络的不同层中的每一层。
性能目标包括多个离散目标并且生成应用特定的ML加速器包括:生成应用特定的硬件ML加速器,其被配置为当应用特定的硬件ML加速器执行针对目标应用的计算时满足多个离散目标中的每个离散目标。在一些实施方式中,生成性能数据包括:由ML成本模型对用于执行第一神经网络的多个层中的每一层的架构的使用进行建模;以及响应于对用于执行每一层的架构的使用进行建模,由ML成本模型生成用于多个层中的每一层的架构的性能参数。
性能参数可以与多个离散目标中的每个离散目标相对应;并且所述多个离散目标包括以下各项中的至少一个:阈值处理时延、阈值功耗、阈值数据吞吐量和阈值处理器利用率。在一些实施方式中,动态地调谐架构包括:确定输入张量的计算的映射,其使得应用特定的硬件ML加速器利用硬件ML加速器的硬件计算单元的阈值百分比;并且基于确定的映射来动态地调谐架构。
动态地调谐架构可以包括:基于由全局调谐器的多个ML成本模型中的每一个执行的操作来动态地调谐架构;以及基于由全局调谐器的随机调谐器或模拟退火调谐器中的至少一个执行的操作来动态地调谐架构。在一些实施方式中,架构表示集成电路的一个或多个硬件块,并且动态地调谐架构包括:当架构实现第一神经网络来执行针对目标应用的计算时,动态地调谐架构以满足一个或多个硬件块中的每一个的相应的性能目标。
硬件ML加速器的配置指定第一神经网络的定制软件配置;以及生成应用特定的硬件ML加速器包括:基于定制硬件配置和定制软件配置来生成应用特定的硬件ML加速器。在一些实施方式中,ML成本模型是包括一个或多个单独的分析模型的架构感知成本模型;并且该架构感知成本模型被配置为基于使用架构处理的数据的确定性数据流来估计架构的性能。
这个和其他方面的其他实施方式包括被配置为执行在计算机存储设备上编码的方法的动作的对应系统、装置和计算机程序。一个或多个计算机的系统可以借助于安装在系统上的软件、固件、硬件或它们的组合来如此配置,其在操作中使得系统执行动作。一个或多个计算机程序可以凭借具有当由数据处理装置执行时使得该装置执行动作的指令来如此配置。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。
所公开的技术提供了一种框架,该框架可用于加速用于定义优化的硬件和软件配置的架构探索过程,包括用于在硬件电路上实现神经网络的操作的高效调度/映射。基于此过程,硬件设计系统可以自动生成输出配置,该配置为给定的PPA(性能、功率、面积)约束集合定义系统方面优化的硬件映射。PPA约束可以是至少与处理器利用率、功耗、时延、块大小和/或数据吞吐量相关的硬件加速器性能阈值。
设计系统可以识别具有固定层数的示例网络模型,并且确定所识别的硬件架构(例如,脉动阵列、计算区块(tile)等)的最优属性,包括其微架构的属性,诸如块连接、硬件布局或存储器。除了这些优化的硬件属性之外,设计系统还确定了逐层处理的高效调度和数据分配,以便可以生成应用特定的ML加速器,以满足(或超过)用户或系统定义的针对层特定处理的要求,同时还消耗最少量的功率和电路面积。
本说明书中描述的主题的一个或多个实施方式的细节在附图和下面的描述中阐述。本主题的其他潜在特征、方面和优点将从说明书、附图和权利要求中变得显而易见。
附图说明
图1是用于生成和全局调谐机器学习加速器的示例计算系统的框图。
图2是示出用于全局调谐应用特定的机器学习加速器的示例系统的框图。
图3示出了用于调谐多层神经网络的示例框架。
图4是用于调谐和优化多层神经网络的图执行调度的示例过程的流程图。
图5是用于生成和全局调谐机器学习加速器的示例过程的流程图。
图6是使用图1的系统生成的示例应用特定的硬件加速器的框图。
图7示出了输入张量、权重张量和输出张量的示例。
各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
图1是示例硬件加速器设计系统100(“系统100”)的框图。一般而言,系统100可以包括处理器(例如,中央处理单元(CPU)、图形处理单元(GPU)、专用处理器等)、存储器和/或数据存储设备,它们共同形成用于执行全局调谐和生成定制硬件机器学习加速器的功能的处理资源。
如下所述,使用一个或多个输入目标102,系统100被配置为开发并输出用于生成示例硬件加速器的设计配置。硬件加速器可以实现为专用或应用特定的硬件电路,该硬件电路被优化以执行特定类型的机器学习任务。例如,应用特定的电路可以是被配置为实现或运行多层神经网络的机器学习(ML)硬件加速器。
更具体地,应用特定的电路可以根据不同的应用目标——诸如由用户指定的一个或多个输入——来唯一地调谐和/或优化。例如,当实现特定类型的神经网络(例如,多层CNN)时,可以优化应用特定的ML电路的候选数据处理架构,以实现(或超过)与处理器利用率、功耗、数据吞吐量和/或时延相关的阈值性能目标。
如本文档中所使用的,数据处理“架构”可以指硬件电路架构、软件/神经架构或两者。以该方式,调谐和优化架构可以包括调谐硬件架构的属性以及调谐神经架构的属性,使得所得到的架构被优化(例如,完全优化)以根据可以由系统100接收或确定的每个不同的应用目标执行给定机器学习任务。
系统100包括用于构造和管理设计空间104的控制逻辑。设计空间104可以基于在系统100处执行的硬件设备和软件例程的组合来构造。例如,控制逻辑可以被实现为执行编程指令以管理各种设计空间操作的系统控制器或主机设备。设计空间104的操作可以涉及处理调谐候选架构所需的多个设计项目或参数。
一般而言,系统100使用控制逻辑来管理设计空间104的活动和操作。除了优化给定ML任务的架构之外,在一些实施方式中,系统100的控制逻辑本身可以基于ML模型。例如,可以训练ML模型来处理基于输入目标集合调谐候选架构所必需的设计输入和控制参数。在一些实施方式中,控制逻辑执行或应用示例优化算法,该算法根据输入目标集合以及由示例成本模型执行的操作(如下所述)来调谐候选架构。
至少从系统100的架构储存库106中选择候选架构。系统100可以至少基于输入对象102从架构储存库106中识别或选择候选架构。架构储存库106包括描述用于生成应用特定的硬件ML加速器的多种不同硬件架构的信息。
例如,经由架构储存库106访问的第一硬件架构可以定义脉动阵列架构,而经由架构储存库106访问的第二不同的硬件架构可以基于计算区块(tile)的布置来定义硬件架构。类似地,经由架构储存库106访问的第三架构可以基于形成不同向量处理单元(VPU)的紧密耦合的数据处理通道的相应集合来定义硬件架构,而经由架构储存库106访问的第四架构可以定义硬件架构,该硬件架构包括至少两个向量处理器核心,它们与大型共享暂存存储器和矩阵计算单元交互。
选择用于优化和调谐的候选架构可以是例如从架构储存库106获得的硬件电路架构和神经架构的组合。神经架构可以从包括多种不同类型的神经网络图的网络图模块108获得。例如,系统100可以基于输入目标102、集成电路(IC)的示例硬件布局以及示例神经网络图来选择候选架构。
在一些实施方式中,系统100基于一个或多个输入目标102来选择候选架构,所述一个或多个输入目标102使系统偏向于为给定神经网络架构选择特定硬件架构。例如,系统100可以基于一个或多个硬件变量来选择候选架构。硬件变量可以表示限制架构选择的控制参数,并且使得设计空间104例如针对从图模块108获得的给定神经架构从存储库106选择特定类型的硬件架构。
系统100包括优化和调谐模块112,其与一个或多个成本模型交互以全局调谐示例数据处理架构。例如,系统100包括架构感知成本模型114,其可以包括一个或多个单独的数据模型114。在一些情况下,这些单独的数据模型中的每一个是被配置为执行基于ML的分析以用于基于输入目标集合来调谐候选架构的相应成本模型114。架构感知成本模型114基于使用架构处理的数据的确定性数据流来估计候选架构的性能。
在一些实施方式中,系统100包括基于两种类型的成本模型——分析成本模型或基于ML的成本模型——中的一个的相应成本模型114。两个模型都可以接收相同的输入并产生相同的输出,如下面描述的优化循环中所讨论的。一般来说,这两种成本模型之间的区别在于每个模型内部如何预测其成本。分析成本模型和基于ML的成本模型之间存在各种差异。
例如,分析成本模型可以是基于屋顶线的模型,其基于硬件映射参数和神经网络图的集合来考虑各种“天花板”。分析成本模型不需要训练数据。利用给定的输入,分析成本模型使用“内部逻辑”来推导瓶颈并输出成本。在内部,用于实现分析成本模型的一个或多个硬件块可以被配置为共享“成本模块”。共享的成本模块可操作来产生在给定硬件映射参数和要在硬件块上运行的神经网络计算的情况下的成本。在一些情况下,分析成本模型可为具有确定性数据流的应用产出特别准确的成本输出。
基于ML的成本模型需要标记数据来训练可以至少预测时延和吞吐量的机器学习模型。例如,可以训练机器学习模型来预测不同应用级目标的成本值,包括PPA约束中的一项或多项。基于ML的成本模型可以使用监督学习和多级感知器(perceptron)来实现。在一些实施方式中,基于ML的成本模型的训练数据是通过高级综合和RTL模拟获得的。为了克服输入的离散性质,基于ML的成本模型的输入可以被转换为使用诸如随机梯度下降的标准技术学习的嵌入。在一些情况下,基于ML的成本模型是离线训练的。在优化循环(如下所述)期间使用经过训练的基于ML的成本模型来动态地优化候选架构。
优化和调谐模块112和成本模型集合114中的每一个可以用作设计空间104的扩展。在一些实施方式中,优化和调谐模块112和成本模型集合114表示全局调谐器,该全局调谐器调谐候选架构的硬件块和神经网络两者的属性。设计空间104的控制逻辑可以用于控制或管理全局调谐器的操作。例如,全局调谐器可以与设计空间104的不同方面(例如,变量和约束)交互,以基于使用控制逻辑生成的控制信号来调谐候选架构。下面参考图2更详细地描述这一点。
优化和调谐模块112包括示例调谐器116和示例调度器/映射器118。在一些实施方式中,调谐器116和调度器/映射器118交互以执行模块112的示例调谐和优化任务(下面所描述)。如上所述,数据处理架构可以是例如从架构储存库106获得的硬件电路架构和从神经网络图模块108获得的神经架构的组合。硬件架构可以包括多个单独的硬件块,每个硬件块都包括硬件功能,诸如脉动阵列单体(cell)、向量处理器通道或单独的计算区块。
调谐器116和调度器/映射器118协作以:i)配置神经网络层到一个或多个硬件块的候选映射,以及ii)对于该候选映射,基于一个或多个应用目标102来调谐每个硬件块的相应微架构。以该方式,优化和调谐模块112被配置为调谐每个硬件块的相应微架构,使得给定硬件块被优化以执行神经网络的一层或多层。
为了实现期望的性能目标,优化和调谐模块112可以与架构感知成本模型114交互以通过配置候选映射和调谐每个硬件块的微架构的过程进行迭代。该调谐迭代可以涉及例如经由可选数据路径120从优化和调谐模块112到设计空间104的信号通信。所述通信可以是为了获得用于基于例如由成本模型114生成的性能估计来增强候选架构的硬件块的新的输入、变量、约束或架构特征。系统100可以包括表示迭代过程的调谐循环122。
系统100基于设计空间104、优化和调谐模块112以及架构件成本模型114的处理操作来生成示例输出配置130。如下所述,系统100可以基于输出配置130来自动生成应用特定的ML硬件加速器(例如,集成电路)。
图2是示出包括全局调谐器202的示例系统200的框图。在一些情况下,系统200被包括在系统100内作为具有可由一个或多个处理设备执行的编程指令的软件/计算模块或硬件电路的子系统。
系统200的操作提供全局调谐框架,用于自动生成定制的应用特定的IC来执行诸如目标应用的训练和推断的学习任务。在一些实施方式中,目标应用(或设备)是具有固定硬件配置的定制硬件加速器。在一些其他实施方式中,目标应用是与图像分类、对象检测、自主车辆导航、图形处理或科学计算相关的工作负载类型。
全局调谐器202被配置为根据不同的应用目标102全局地调谐/优化候选架构,以生成应用特定的ML硬件加速器。全局调谐器202包括设计空间构建器204,其基于一个或多个调谐器变量和约束210构造设计空间104。设计空间构建器204与全局调谐器202的设计空间探索器212和一个或多个成本模型214进行通信。成本模型214与上述架构感知成本模型114的各个模型相对应。
基于模块108的解析的神经网络图,设计空间构建器204和设计空间探索器212可以交互以实现用于选择神经网络架构(“神经架构”)的神经架构搜索(NAS)系统,该神经网络架构针对目标应用表现最优。NAS可以采用各种搜索技术,诸如基于强化学习、进化搜索、可微搜索(differentiable search)等的技术。设计空间构建器204和设计空间探索器212可以采用类似的方法来探索可以针对目标应用被有效地调谐和优化的不同硬件架构。
设计空间构建器204和设计空间探索器212基于一个或多个调谐器变量和约束210来实现NAS和硬件架构搜索技术。调谐器变量和约束210包括各种展开因子、最大映射器输入/输出数据宽度、或最大缩减器输入/输出数据宽度。如上所述,神经网络层可以具有对应的核集合(例如,权重/参数)。核可以是具有4个维度的卷积核:C-输入通道;K-输出通道;R-核高度;和S-核宽度。示例卷积运算可以表达为使用四个维度参数(C、K、R、S)的嵌套循环。核集合被表示为多维张量,并且嵌套循环可用于遍历张量的不同维度。在该场境下,展开因子与嵌套循环中的每个嵌套循环的展开相对应。全局调谐器202支持所有展开因子的嵌套循环的展开,并且可以关于这些因子调谐候选架构。
映射器和缩减器输入/输出数据宽度影响如何将大张量缩减为映射到给定计算区块或单体(cell)的较小片段(piece)。例如,输入张量和输出张量可能非常大,并且这些张量不是一次性产生的。为了减少处理这些张量的硬件加速器的面积和功率,系统100可以利用张量分块(tiling)将输入张量和输出张量分解成多个更小的片段。例如,系统100可以基于映射约束将大输入张量分解(或缩减)成更小的片段。映射约束可以与诸如功率、面积、时延和/或吞吐量的目标相关联。全局调谐器202可以使用这些目标来确定候选架构的计算区块集合的配置和大小。全局调谐器202可以将输入张量的不同片段的计算映射到计算区块集合中的给定区块。
最大映射器输入/输出数据宽度和最大缩减器输入/输出数据宽度是直接影响候选架构的数据吞吐量的约束。调谐器变量和约束210可以包括与探索用于生成被定制为运行目标应用的给定神经网络的硬件ML加速器的候选架构有关的其他项。在一些实施方式中,较小的区块大小需要较长的数据传输时间,因此总体芯片性能也可以在这里发挥作用。所有这些不同的调谐器变量和约束210可以导致不同的硬件设计,并对性能、功率和面积产生影响。因此,全局调谐器202根据这些变量/约束形成设计空间,并通过选择用于定制硬件和神经架构的最优参数来在性能、功率和面积之间取得平衡。
全局调谐器202可以至少基于由每个单独的ML成本模型214执行的操作动态地调谐候选架构。在一些实施方式中,全局调谐器202基于由以下中的至少一个执行的操作动态地调谐候选架构:i)随机搜索调谐器;ii)模拟退火调谐器;或iii)渐进式调谐器。随机搜索调谐器、模拟退火调谐器和渐进式调谐器中的每一个与上述调谐器116相对应。对于块分区模型,全局调谐器202实现与模拟退火调谐器相关联的特定调谐轨迹。随机调谐器、模拟退火调谐器和渐进式调谐器中的每一个可以以软件、硬件或两者来实现。与这些调谐器中的每一个相关联的功能性可以集成在调谐器116中,调谐器116在全局调谐器202中实现。
全局调谐器202使用随机搜索调谐器对搜索空间进行随机采样以获得试验配置,诸如候选架构的基线处理器配置。在试验配置/架构上运行目标应用的成本是通过查询ML成本模型214的性能和功率成本模型来获得的。
模拟退火可以被实现为全局调谐器202中的调谐器,并且是用于逼近给定函数的全局最优值的概率技术。在每一步中,该调谐器都会考虑当前硬件设计点d的相邻硬件设计点d',并且概率性地决定是将当前设计点移向设计点d'还是保持在设计点d。创建温度变量来控制接受概率。模拟退火调谐器被配置为重复这些步骤,直到其概率结果指示到达目标应用的最优设计点。例如,超过阈值分数的概率分数可以指示特定设计点相对于给定的约束集合针对目标应用表现最优。
相邻硬件设计点可以是随机生成的。在一些实施方式中,相邻硬件设计点具有与当前硬件设计点相似或非常相似的硬件参数选择(例如,展开、分块、映射或调度)。参数选择的相似性可以由两个设计点之间的硬件参数选择的重叠量(或百分比)来表征。在一些其他实施方式中,相邻硬件设计点可以具有与当前硬件设计点相同的硬件参数选择中的一个或多个。
全局调谐器202使用渐进式调谐器来实现诸如NAS的设计空间的示例设计空间的渐进式搜索方法。该渐进式搜索方法可用于减少调谐候选架构的设计空间探索时间。在一些实施方式中,全局调谐器202执行渐进式搜索方法来探索设计空间,作为设计和调谐ML硬件以满足(或超过)某些吞吐量要求——诸如输入到集成电路的机器学习块的固定数据速率——的步骤。渐进式搜索方法可以至少包括以下步骤:i)将基线设计初始化为所有神经网络层的最小设计,以及ii)查询成本模型214以识别具有低于数据速率要求的数据吞吐量的瓶颈层。如果成本模型214没有识别或指示瓶颈和/或全局调谐器202确定没有神经网络层作为瓶颈操作,则搜索方法的执行结束。
渐进式搜索方法可以进一步包括以下步骤:iii)参照瓶颈详尽地探索搜索空间以确定通过满足(或超过)吞吐量要求来最小化瓶颈、同时在总体模型性能上具有最低成本的设计配置;以及iv)使用在步骤iii)中确定的设计配置作为新的基线设计,然后返回到步骤ii)。在一些实施方式中,基线设计是基线处理器配置,其包括用于运行给定神经网络的所有层的最小硬件(和神经)架构/设计参数。详尽地探索搜索空间包括:通过使用每个设计配置实现多层神经网络来迭代地探索不同的设计配置,评估每个设计配置的相应数据吞吐量,以及计算不同设计配置中的每个设计配置的相应成本值。
在图2的示例中,输入目标102可以是用户定义的、系统定义的或两者。例如,输入目标102可以作为用户配置文件或作为系统生成的输入文件来接收。配置或输入文件可以指定例如从PPA约束集合导出的各种应用级目标102。例如,输入文件可以包括应用级目标集合,诸如处理器利用率、功耗、数据吞吐量、硬件块大小和/或时延。输入文件还包括每个应用级目标的相应硬件加速器性能阈值。
在一些实施方式中,输入文件包括指示目标应用需要多个向量操作的目标102。基于该指示,控制逻辑可以触发设计空间104的硬件变量110被设置为向量参数(vector_ctrl)。设计空间104可以使用vector_ctrl参数来将候选架构的选择约束为例如包括形成紧密耦合的VPU的多个向量处理通道的架构。
在图2的示例中,一些(或全部)成本模型214执行基于ML的分析以调谐候选架构。根据输入目标102的集合,全局调谐器202基于一个或多个优化算法来调谐候选架构的硬件和神经架构。例如,全局调谐器使用成本模型214来对候选架构的使用进行建模,以参考神经网络的某个(些)硬件块来执行多层神经网络的每一层。响应于对用于执行每一层的架构的使用进行建模,ML成本模型214生成描述架构如何针对每一层执行的性能参数。
在一些实施方式中,优化算法用于实现成本模型交互循环,例如优化循环。例如,优化器或全局调谐器202(例如,模拟退火、渐进、随机等)可以生成硬件映射参数集合,诸如PE的数量、脉动阵列维度等。硬件映射参数连同包含层依赖性和量化方案(例如,固定的)的神经网络图被发送到成本模型214。成本模型214基于输入产生成本,诸如时延、吞吐量和功率。成本模型的成本输出可以作为优化循环中的步骤反馈给优化器。优化器可以处理成本输出并确定下一个要探索的硬件映射策略。全局调谐器202可以迭代该优化循环,直到满足收敛条件或者完全探索搜索空间。
在一些实施方式中,全局调谐器202的第一成本模型214用于计算关于候选架构的硬件属性的性能估计/参数,而第二成本模型214用于计算关于在候选架构上实现的神经网络的性能估计/参数。第一和第二成本模型214可以相同或不同。成本模型214可以使用单个优化算法来计算用于调谐架构和优化候选架构的性能的性能估计。在一些其他实施方式中,成本模型214使用不同的优化算法来计算用于优化架构性能的各个方面的性能估计。
全局调谐器202可以至少使用设计空间构建器204、设计空间探索器212和成本模型214来针对所探索的各种硬件和神经网络架构实现不同的设计空间和优化策略。例如,在候选架构的每个硬件块内,全局调谐器202探索专门针对一层的不同实施方式,诸如层特定的分块和脉动阵列维度的调谐。全局调谐器202可以探索层变换以增加并行化。例如,全局调谐器202可以将密集/1×1卷积变换为n×n卷积以增加跨一个或多个硬件块的计算单元的吞吐量和/或利用率。
在一些实施方式中,基于其优化算法,成本模型214根据密集卷积被指配给包括若干计算单元的硬件块的单个计算单元的指示来计算利用率估计。全局调谐器202可以将利用率估计与由应用目标102(或约束210)指定的利用率阈值进行比较。全局调谐器202确定计算的利用率估计是否低于阈值。响应于确定计算的利用率估计低于阈值,全局调谐器202可以将密集/1×1卷积变换为n×n卷积,以增加跨给定硬件块的计算单元的利用率。利用估计是由成本模型214生成的性能参数(或估计)。
对于处理引擎的多维阵列(例如,单体、区块或处理通道),全局调谐器202可以确定实现期望性能目标所需的最优大小/面积和预期功率密度。全局调谐器202可以基于所确定的大小来改变每个阵列维度中的处理引擎(PE)的数量。系统100、200被配置为使得神经网络的一层的一个或多个深度硬件定制不会阻碍或不利地影响神经网络的其他层的有效运行或操作。
全局调谐器202响应于对候选架构的调谐而生成输出配置230。输出配置230用于自动生成应用特定的ML加速器。输出配置230可以表示ML模型(或算法)和对应的架构配置。系统200使用示例代码生成模块240将表示输出配置230的数据转化成高级综合(HLS)代码。例如,代码生成模块240可以使用高级综合语言(HLS)创建用于硬件加速器的ML算法的固件实施方式。
一般而言,全局调谐器202用于生成针对目标应用完全定制的一个或多个应用特定的ML加速器。例如,定制可以包括诸如针对一个或多个神经网络层特制的异构量化和微架构的项目。在一些实施方式中,全局调谐器202和系统200用于至少通过识别最优硬件参数来生成定制架构,所述最优硬件参数诸如用于针对PPA约束集合(例如,目标102)优化总体架构的微架构、空间映射和时间映射。
硬件特征可以在芯片上或芯片内分离。优化架构的空间映射涉及用于运行不同神经网络操作的硬件块在芯片或集成处理器块内空间地分离。例如,可以通过使用专用硬件块的特定布置来执行神经网络中的专用操作来针对空间映射优化候选架构。该映射允许针对特定算法或计算模式特制硬件块。
相对于其他设计,具有优化的空间映射的架构可以提供性能和能量效率的改进。至少可以通过特制用于实现特定算法或计算模式的专用硬件块的布置来实现改进。在一些实施方式中,一个或多个专用硬件块被配置为处理固定维度张量、支持固定量化方案并且特制用于特定神经网络层。
优化架构的时间映射(307)涉及在神经网络中的不同操作当中时间共享的硬件块。例如,可以通过重用相同的硬件块来执行神经网络中的各种不同操作来针对时间映射优化候选架构。该方式在给定硬件块的使用上更加通用,可以改进硬件的可编程性。此外,该方式可以为应用开发者提供在硬件上运行的神经网络方面更大的灵活性。在一些示例中,优化的时间映射提供同一硬件块中的不同层的时间共享以及对多种量化方案的支持。
定制可以产生与未针对目标应用定制的其他处理设备相比消耗显著更少的功率和面积的应用特定的ML加速器。
图3图示了用于调谐多层神经网络的示例框架300。使用该框架系统100可以迭代地将神经网络图中的计算节点映射到给定硬件块中的微架构(或处理引擎)的不同特征。例如,框架300可以在全局调谐器202或优化和调谐模块112处实现以确定并建立神经网络图的各个计算节点之间的依赖性。例如,当ML成本模型214通过候选架构对神经网络的每一层的执行进行建模时,可以确定依赖性。ML成本模型214生成性能参数,其提供候选架构在执行神经网络的每一层时如何执行的评估。
在图3的示例中,神经网络302包括五层(L1-L5),其中第一层是L1,第二层是L2,等等。这五层可能具有到候选架构的不同硬件特征(例如,处理引擎)的初始映射。例如,五层中的每一层可被映射到不同的脉动阵列的单体、不同的脉动阵列块、计算区块的不同乘法累加单体(MAC)或不同的计算区块。在一些实施方式中,脉动阵列的各个单元和计算区块的各个MAC表示候选架构的微架构的各方面。
成本模型214可以针对执行神经网络302的候选架构来计算性能估计。性能估计包括指示用于处理给定层的持续时间、总体处理时延和PE利用率的参数。成本模型214处理持续时间以生成针对定时约束集合而优化的神经架构调度304。基于性能估计,全局调谐器202可以确定计算层L1+L2+L5所需的时间与计算层L3+L4所需的时间大致相同。
基于该确定,全局调谐器202可以重新映射层L1、L2和L5以重用相同的硬件特征B1,而可以重新映射层L3和L4以重用相同的硬件特征B2(306)。在一些示例中,B1和B2是相应的处理引擎308、310,诸如计算区块或脉动阵列、MAC、脉动阵列单体、或者甚至VPU的向量处理通道的算术逻辑单元(ALU)。全局调谐器202可以执行重新映射作为调谐操作的一部分,以减少处理时延并优化候选架构以根据目标102中指定的时延要求来执行神经网络模型。
对于给定的神经网络,每一层可能需要不同的计算周期。例如,在空间重新映射之后,由于计算不平衡,一些PE可能比其他PE经历更多的空闲时间。这可以称为负载不平衡。系统100可以通过充分利用至少允许PE以时间方式跨不同层重用的调谐和优化机制来解决或克服负载不平衡。例如,调谐器116和调度器/映射器118可以检测负载不平衡并调整候选架构的属性以均匀地平衡每个PE中的计算周期。
如上所述,神经网络302的五层可以具有初始映射,其中每一层被映射到候选架构的不同硬件特征(例如,处理引擎)。该初始映射的性能估计可以包括利用率参数,该利用率参数指示层可以被映射到的每个处理引擎处的总体计算能力的低利用率。基于这些估计和参数,全局调谐器202还可以执行重新映射以增加处理利用率,例如通过重新映射层L1、L2和L5以重用相同的处理引擎B1,以及重新映射层L3和L4以重用相同的处理引擎B2。可以执行该重新映射以增加B1和B2中的每一个处的总体利用率并优化候选架构以根据目标102中指定的利用率(和时延)要求来执行神经网络模型。
全局调谐器202可以调谐候选架构以将其他操作重新分配给任何剩余的PE(例如,B3、B4、B5)。在一些情况下,全局调谐器202利用设计空间探索器212来增强候选架构的硬件布局,以减少PE的数量(例如,从五个减少到两个)。在一些其他情况下,全局调谐器202利用设计空间探索器212来重新配置PE以增加跨至少B1和B2的并行量。全局调谐器202可以确定在重新映射之后需要剩余的PE(例如,B3、B4、B5)来处理较小的数据集。基于该确定,全局调谐器202可以例如调整这些PE的微架构的计算与存储器比率以优化PE的大小和利用率以供处理较小的数据集。
框架300可以与示例算法或计算序列相对应,其采用神经网络图以及应用级目标(例如,推断时间、吞吐量、功率等)以及适用的硬件约束110、210作为输入。全局调谐器202可以使用框架300作为在各种架构旋钮上执行每层空间映射探索的基础。框架300可以支持多种架构旋钮,这样的架构旋钮可以包括:i)设计风格,诸如脉动阵列或完全展开设计;ii)多个映射器(例如,脉动阵列聚类);iii)每个聚类有多个脉动阵列;iv)输入和输出分块;以及v)密集层的硬件维度变换。
为实现给定约束210的优化而进行的每个重新映射或调谐可以触发关于另一约束对候选架构的对应调谐。例如,针对给定定时或时延约束进行优化的关于B1和B2的重新映射可能需要增加PE的吞吐量要求。因此,经常需要改进各种架构旋钮以满足新的(或其他现有的)要求。在一些实施方式中,系统100通过其对候选架构的调谐进行迭代,以至少平衡时延、定时和利用率之间的相互作用,从而针对这些约束中的每一个优化候选架构。在一些其他实施方式中,系统100平衡若干约束、变量和目标之间的相互作用。
架构旋钮中的每一个可以对端到端应用性能产生积极或消极的影响。此外,架构旋钮中的每一个还可以影响其他层映射中的架构旋钮的效果。因此,至少基于其控制逻辑的机器学习方面和架构感知成本模型114,系统100被配置为提供正在评估的候选架构的整体视图以准确地预测这些正面和负面影响。
候选架构可以包括多个处理引擎,并且一个或多个层可以基于预定义的合并规则(例如,conv2d+BN+活性值合并;conv2d+maxpooling合并)被映射到分离的处理引擎。合并规则可以被预定义,例如,作为网络图模块108中的指令或编码规则。在一些实施方式中,如果满足以下条件,则合并两个或更多个图节点(或层):可以与前一层的计算一致地执行下一层的计算(例如,conv2d(+BN)+活性值)。作为示例,批量标准化(BN)层的计算可以与2D卷积层的计算合并。此外,对于作为输入提供给后续层的每一层输出,如果后续层的输入和计算量具有阈值大小并且具有特定的空间和时间局部性,则该后续层可以与生成层输出的前一层合并。这种情况的一个示例可以与2D卷积层的层输出相对应,该层输出被提供为池化层的输入(例如,conv2d+池化)。
在一些实施方式中,为了调谐候选架构,全局调谐器202执行相应层到对应PE的初始映射并且生成初始映射的性能估计。基于初始映射的性能估计,全局调谐器202可以迭代地将不同的层组合映射到PE以调谐初始映射。全局调谐器202生成每个迭代的性能估计并识别性能估计与目标102的PPA约束集合一致的映射。
当调谐候选架构时,全局调谐器202使用一个或多个成本模型214来通过不同的映射进行迭代并且针对每个映射计算性能参数。根据性能参数,系统100识别对于给定的PPA约束210集合最优执行的计算映射。在一些实施方式中,系统100可以利用指定了在处理通道内操作的节点序列的时间映射来迭代地将不同向量运算的计算节点映射到在VPU中的向量处理通道的子集。
在一些实施方式中,框架300使用架构感知的分析成本模型114来预测每个试验(硬件/神经配置)的由于以下导致的成本:(1)每个试验的周期精确模拟是耗时的并且通常有数百万到数十亿个独特的设计点需要评估;(2)由于神经网络的计算是计算密集型的,并且可以用嵌套循环来表达,因此可以构造高保真度的分析模型。优化和调谐模块112对搜索空间进行采样,在成本模型114中查询每个设计点的成本,并遵循特定的探索轨迹来搜索设计空间104。实现每个设计点的成本和设计空间104的探索轨迹以至少通过调谐架构来优化候选架构以最小化每个设计点的处理成本。在一些情况下,探索轨迹对于调谐器116采用的不同调谐器算法是不同的。
图4是与多层神经网络的图执行调度相关的示例过程400的流程图。如上所述,全局调谐器202生成用于自动生成应用特定的ML加速器的输出配置230。系统200使用示例代码生成模块240将表示输出配置230的数据转化成HLS代码。
神经网络图402是用于定制的应用特定的ML加速器并且指示神经网络层集合的示例分配或映射。在图4的示例中,第一神经网络层L1可以基于特定的硬件配置404a和软件配置404b被映射到给定的PE,而第二不同的神经网络层L2可以基于特定的硬件配置406a和软件配置406b被映射到给定的PE。在一些实施方式中,L1和L2可以被映射到相同的PE或不同的PE。
图5是示出用于生成和全局调谐应用特定的机器学习加速器的示例过程500的流程图。过程500可以使用上述系统100来实现或执行。过程500的描述可以参考系统100的上述计算资源。过程500的步骤或动作可以由编程固件或软件指令来实现,这些编程固件或软件指令可由本文档中描述的设备和资源的一个或多个处理器执行。
现在参考过程500,系统100选择架构(502)。例如,系统100的控制器可以选择表示基线处理器配置的候选架构。候选架构可以包括硬件架构和与神经网络图相对应的神经架构。在一些实施方式中,基于由设计空间构建器204和设计空间探索器212针对架构储存库104的硬件布局和网络图模块108的神经架构执行的搜索操作来识别和选择架构。
系统200可以基于一个或多个调谐器变量或PPA约束210来实现NAS和硬件架构搜索技术。PPA约束可以是定义硬件加速器的性能要求的用户指定的目标102。例如,要求可以是处理器利用率、功耗、处理时延和数据吞吐量的阈值。在一些实施方式中,选择架构包括获得指定性能目标的输入标准并识别用于实现专用处理器的多个候选架构。例如,用于管理设计空间104——包括设计空间构建器204和探索器212——的控制逻辑可以基于输入标准从多个候选架构中选择候选架构。
系统100生成关于架构的性能数据(504)。例如,ML成本模型214至少通过对架构如何执行包括多个神经网络层的第一神经网络的计算进行建模来生成关于候选架构的性能数据。在一些实施方式中,神经网络是已知的神经网络,诸如多层ResNet-50,其是50层深的卷积神经网络。
系统100基于性能数据动态地调谐架构(506)。例如,基于性能数据,优化和调谐模块112动态地调谐候选架构以满足一个或多个性能目标。更具体地,优化和调谐模块112与架构感知成本模型114交互以对候选架构的对神经网络的每一层的执行进行建模。例如,ML成本模型214生成性能参数,其提供候选架构在执行神经网络的每一层时如何执行的评估。
系统100使用调谐循环122以基于性能参数来评估、调谐和优化第一神经网络的架构的实施方式。在一些实施方式中,系统100使用全局调谐(例如,经由全局调谐器202)来发现系统方面优化的每操作映射,以用于目标硬件平台上的高效神经网络执行。在一些其他实施方式中,系统100使用全局调谐来发现优化的图执行调度,只要允许,诸如跨多个层的处理引擎(PE)重用。这在上面参考图3进行了描述。
例如,全局调谐器202被配置为通过将两个或更多个层(例如,L1、L2、L5)重新映射到计算区块或MAC的相同子集来调谐候选架构,以针对目标应用优化选择的神经架构。所述架构可以针对诸如训练/推断设备或图像分类工作负载的示例应用进行优化。系统100的控制逻辑可以使用时钟信号的定时来在适当的时间向优化和调谐模块112以及架构感知成本模型114中的每一个发送指令和控制信号,以生成用于完成重新映射的性能数据。优化和调谐模块112被配置为执行应用特定的调谐和优化,以生成加速ML工作负载的集成电路的硬件布局。优化和调谐模块112(和成本模型114)可以并入全局调谐器202的一些(或全部)功能性,使得由全局调谐器202执行的操作的描述转化为优化和调谐模块112的操作。
系统100响应于动态地调谐架构而生成ML加速器的配置(508)。在一些实施方式中,步骤506的调谐和优化体现在输出配置230中,输出配置230允许生成具有逐层定制的硬件架构的专用集成电路。相对于基于单个通用硬件块的现有方式,定制的这一方面可以使硬件ML加速器电路实现能源效率的数量级改进。
例如,在候选架构的优化和调谐之后,系统100生成兼容的硬件配置230,其包括各种架构特征和调度/映射策略,使得其至少可以由代码生成模块240使用来生成应用特定的ML加速器。系统200使用代码生成模块240将表示配置230的数据转化成高级综合(HLS)代码。代码生成模块240可以使用高级综合语言(HLS)创建用于硬件加速器的ML算法的固件实施方式。然后,系统100可以基于固件实施方式和HLS操作来生成应用特定的硬件ML加速器(510)。
图6是示例应用特定的硬件ML加速器600的框图。硬件加速器600是使用本文档中公开的技术生成的,至少包括系统100和200的示例操作。使用代码生成器240,系统100被配置为生成应用特定的ML加速器600的硬件布局,其指定硬件电路的相应部分,每个部分可以被定制以运行神经网络的特定层。
硬件加速器600可以使用分离的硬件块603a、603b、603c、603d、603e、603f以流式传输和流水线方式执行一层或多层(例如,如果它们共享公共特性)。每个硬件块603专门针对那些层(例如,量化、层特定分块、脉动阵列维度等)特制,以实现例如跨硬件加速器600的低功率和高利用率。在一些实施方式中,每个硬件块103具有与神经网络的特定层的关联或映射以及硬件块103与神经网络的层(例如,上面讨论的L1、L2、L3、L4或L5)的关联部分地基于与该神经网络层相关的功能和优化工作。
数据流指示601a、601b、601c、601d、601e、601f提供了在硬件块603之间传送神经网络的数据的示例序列。在一些实施方式中,这些数据流指示601a、601b、601c、601d、601e、601f例如是基于全局调谐器202的优化和调谐操作预先配置的通信序列。所传送的神经网络数据可以包括计算结果数据,诸如特定硬件块603处的计算单元的输出、神经网络输入/活性值、参数权重数据以及其他神经网络参数相关数据。
每个硬件块603可以包括针对目标应用定制的微架构。全局调谐器202被配置为在其全局调谐操作中优化跨不同硬件块的通信,以在系统级平衡架构的设计。这样的优化包括用于数据传输中的速率匹配的接口分块、用于计算中的速率匹配的计算块的数量(例如,输入通道阻塞)、缓冲器大小等。例如,硬件块603a可以包括:管芯间输入块606a、609b,管芯间输出块611a、611b,以及主机接口单元613,而硬件块603b包括管芯间输入块621a、621b、管芯间输出块623a、623b以及主机接口单元614。
加速器600的定制配置可以包括神经网络的第一层被映射到硬件块603a和神经网络的最后层被映射到硬件块603d。全局调谐器202可以配置该架构以并入例如硬件块603a、603d之间的反馈层,以平衡用于高效神经网络执行的每操作空间映射与PPA约束210的大小/面积约束之间的相互作用。例如,硬件加速器600被配置为使用最少量的硬件来高效地执行神经网络计算,同时仍然能够基于应用特定的要求来匹配吞吐量/时延。
图7示出了包括输入张量704、权重张量706的变体以及输出张量708的张量或多维矩阵700的示例。张量700是使用诸如加速器600的ML硬件加速器被处理或生成的示例机器学习数据结构。例如,系统100可用于调谐和优化用于处理至少张量704和706的候选架构,并且自动生成被配置为实现接收和处理与这些张量相关的数据的神经网络的定制硬件ML加速器600。
张量700中的每一个包括与用于在神经网络的给定层处执行的计算的数据值相对应的元素。计算可以包括在一个或多个时钟循周期上将输入/活性值张量704与参数/权重张量706相乘,以产生可以作为输入提供给另一神经网络层的输出,诸如活性值/输出值。在图7的示例中,输出集合中的每个输出可以与输出张量708的相应元素相对应。在一些示例中,输入张量704是活性值张量。将活性值张量704与对应的权重张量706相乘包括将来自张量704的元素的活性值与来自张量706的元素的权重相乘以产生部分和。
在一些实施方式中,ML加速器600的硬件块603是对向量进行操作的相应处理器核心,向量可以包括沿某个多维张量的相同(或不同)维度的多个离散元素。多个元素中的每一个可以使用X,Y坐标(2D)或使用X,Y,Z坐标(3D)来表示,其取决于张量的维数。ML加速器600的硬件布局可以被优化以根据给定的PPA约束集合来计算多个部分和。部分和与将批量输入与对应权重值相乘而生成的乘积相对应。
输入权重乘法可以被写为每个权重元素乘以输入体(volume)的离散输入——诸如输入张量704的行或切片——的乘积和。该行或切片可以表示给定维度,诸如输入张量704的第一维度710或输入张量704的第二不同维度715。这些维度可以跨硬件块603映射到各种向量处理单元,使得ML加速器600根据给定的输入目标集合102,以阻碍负载不平衡并在每个硬件块603处实现阈值处理利用率的方式例行地执行其计算。
在一些实施方式中,示例计算集可以用于计算卷积神经网络层的输出。CNN层的计算可以涉及在3D输入张量704和至少一个3D滤波器(权重张量706)之间执行2D空间卷积。例如,将一个3D滤波器706与3D输入张量704进行卷积可以产生2D空间平面720或725。计算可以涉及计算输入体的特定维度的点积之和。例如,空间平面720可以包括从沿维度710的输入计算的乘积和的输出值,而空间平面725可以包括从沿维度715的输入计算的乘积和的输出值。可以使用硬件块603来执行用于生成空间平面720和725中的每一个中的输出值的乘积和的计算,该硬件块603是使用本文档中描述的技术来生成和调谐的。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路系统、有形体现的计算机软件或固件、计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即在有形非暂时性程序载体上编码的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。
可替代地或附加地,程序指令可以被编码在人工生成的传播信号——例如机器生成的电、光或电磁信号上,其被生成以对信息进行编码以传输到合适的接收器装置以便由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备、或者它们中的一个或多个的组合。
术语“计算系统”涵盖用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机、或者多个处理器或计算机。该装置可以包括专用逻辑电路系统,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合。
计算机程序(也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言来编写,包括编译或解释性语言,或声明性或过程性语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。
计算机程序可以但不一定与文件系统中的文件相对应。程序可以被存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本、专用于所讨论的程序的单个文件中、或多个协调文件——例如存储一个或多个模块、子程序或部分代码的文件中。计算机程序可以被部署为在一个计算机或多个计算机上执行,这些计算机位于一个站点或跨多个站点分布并通过通信网络互连。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机来执行,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程还可以由专用逻辑电路系统来执行,并且装置也可以被实现为专用逻辑电路系统,例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPGPU(通用图形处理单元)。
举例来说,适合于执行计算机程序的计算机包括可以基于通用或专用微处理器或两者、或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的一些元件是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括或可操作地耦合以从一个或多个用于存储数据的大容量存储设备接收数据或向其传输数据,或两者,例如磁盘、磁光盘或光盘。然而,计算机不需要有这样的设备。此外,计算机可以被嵌入到另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内置硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路系统补充或并入专用逻辑电路系统中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有:用于向用户显示信息的显示设备,例如LCD(液晶显示器)监视器,和键盘以及指点设备,例如鼠标或轨迹球,用户可以通过该指点设备向计算机提供输入。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;以及来自用户的输入可以以任何形式接收,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档以及从用户使用的设备接收文档来与用户交互;例如,响应于从Web浏览器接收到的请求,通过将网页发送到用户客户端设备上的Web浏览器。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括:后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过其与本说明书中描述的主题的实施方式进行交互;或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过例如通信网络的任何形式或介质的数字数据通信互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。
虽然本说明书包含许多具体的实施细节,但是这些不应被解释为对任何发明的范围或可要求保护的范围的限制,而是对可能特定于特定发明的特定实施例的特征的描述。在本说明书中在分离的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分离地或以任何合适的子组合来实现。此外,虽然上面可能将特征描述为在某些组合中起作用,并且甚至最初如此要求保护,但在一些情况下,可以从该组合中删除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定次序描绘了操作,但这不应被理解为要求以所示的特定次序或连续的次序来执行这样的操作,或者执行所有所示的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或打包成多个软件产品。
已经描述了主题的具体实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的次序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定次序或连续次序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
Claims (20)
1.一种用于生成应用特定的机器学习(ML)加速器的计算机实现的方法,所述方法包括:
选择表示基线处理器配置的架构;
至少通过对所述架构如何执行包括多个层的第一神经网络的计算进行建模,由ML成本模型生成关于所述架构的性能数据;
当所述架构实现所述第一神经网络并且针对目标应用执行机器学习计算时,基于所述性能数据来动态地调谐所述架构以满足性能目标;
响应于动态地调谐所述架构,生成ML加速器的配置,所述配置指定用于实现所述第一神经网络的所述多个层中的每一层的定制硬件配置。
2.根据权利要求1所述的方法,进一步包括:
基于所述定制硬件配置来生成应用特定的硬件ML加速器,
其中,当所述神经网络用于执行针对所述目标应用的计算时,所述应用特定的硬件ML加速器被优化以实现所述神经网络的不同层中的每一层。
3.根据权利要求2所述的方法,其中,所述性能目标包括多个离散目标并且生成所述应用特定的ML加速器包括:
生成应用特定的硬件ML加速器,所述应用特定的硬件ML加速器被配置为当所述应用特定的硬件ML加速器执行针对所述目标应用的计算时满足所述多个离散目标中的每个离散目标。
4.根据权利要求3所述的方法,其中,生成所述性能数据包括:
由所述ML成本模型对用于执行所述第一神经网络的所述多个层中的每一层的所述架构的使用进行建模;以及
响应于对用于执行每一层的所述架构的使用进行建模,由所述ML成本模型生成用于所述多个层中的每一层的所述架构的性能参数。
5.根据权利要求4所述的方法,其中:
所述性能参数与所述多个离散目标中的每个离散目标相对应;以及
所述多个离散目标包括以下中的至少一个:阈值处理时延、阈值功耗、阈值数据吞吐量和阈值处理器利用率。
6.根据权利要求2所述的方法,其中,动态地调谐所述架构包括:
确定输入张量的计算的映射,所述计算的映射使得所述应用特定的硬件ML加速器利用所述硬件ML加速器的硬件计算单元的阈值百分比;以及
基于所确定的映射来动态地调谐所述架构。
7.根据权利要求6所述的方法,其中,动态地调谐所述架构包括:
基于由全局调谐器的多个ML成本模型中的每一个执行的操作来动态地调谐所述架构;以及
基于由所述全局调谐器的随机调谐器或模拟退火调谐器中的至少一个执行的操作来动态地调谐所述架构。
8.根据权利要求6所述的方法,其中,所述架构表示集成电路的一个或多个硬件块,并且动态地调谐所述架构包括:
当所述架构实现所述第一神经网络来执行针对所述目标应用的计算时,动态地调谐所述架构以满足所述一个或多个硬件块中的每一个的相应的性能目标。
9.根据权利要求6所述的方法,其中:
所述硬件ML加速器的所述配置指定所述第一神经网络的定制软件配置;以及
生成所述应用特定的硬件ML加速器包括:基于所述定制硬件配置和所述定制软件配置来生成所述应用特定的硬件ML加速器。
10.根据权利要求6所述的方法,其中:
所述ML成本模型是包括一个或多个单独的分析模型的架构感知成本模型;并且
所述架构感知成本模型被配置为基于使用所述架构处理的数据的确定性数据流来估计所述架构的性能。
11.一种系统,包括处理设备和存储用于生成应用特定的机器学习(ML)加速器的指令的非暂时性机器可读存储设备,所述指令能够由所述处理设备执行以使得执行包括以下的操作:
选择表示基线处理器配置的架构;
至少通过对所述架构如何执行包括多个层的第一神经网络的计算进行建模,由ML成本模型生成关于所述架构的性能数据;
当所述架构实现所述第一神经网络并且针对目标应用执行机器学习计算时,基于所述性能数据来动态地调谐所述架构以满足性能目标;
响应于动态地调谐所述架构,生成ML加速器的配置,所述配置指定用于实现所述第一神经网络的所述多个层中的每一层的定制硬件配置。
12.根据权利要求11所述的系统,进一步包括:
基于所述定制硬件配置来生成应用特定的硬件ML加速器,
其中,当所述神经网络用于执行针对所述目标应用的计算时,所述应用特定的硬件ML加速器被优化以实现所述神经网络的不同层中的每一层。
13.根据权利要求12所述的系统,其中,所述性能目标包括多个离散目标并且生成所述应用特定的ML加速器包括:
生成应用特定的硬件ML加速器,所述应用特定的硬件ML加速器被配置为当所述应用特定的硬件ML加速器执行针对所述目标应用的计算时满足所述多个离散目标中的每个离散目标。
14.根据权利要求13所述的系统,其中,生成所述性能数据包括:
由所述ML成本模型对用于执行所述第一神经网络的所述多个层中的每一层的所述架构的使用进行建模;以及
响应于对用于执行每一层的所述架构的使用进行建模,由所述ML成本模型生成用于所述多个层中的每一层的所述架构的性能参数。
15.根据权利要求14所述的系统,其中:
所述性能参数与所述多个离散目标中的每个离散目标相对应;以及
所述多个离散目标包括以下中的至少一个:阈值处理时延、阈值功耗、阈值数据吞吐量和阈值处理器利用率。
16.根据权利要求12所述的系统,其中,动态地调谐所述架构包括:
确定输入张量的计算的映射,所述计算的映射使得所述应用特定的硬件ML加速器利用所述硬件ML加速器的硬件计算单元的阈值百分比;以及
基于所确定的映射来动态地调谐所述架构。
17.根据权利要求16所述的系统,其中,动态地调谐所述架构包括:
基于由全局调谐器的多个ML成本模型中的每一个执行的操作来动态地调谐所述架构;以及
基于由所述全局调谐器的随机调谐器或模拟退火调谐器中的至少一个执行的操作来动态地调谐所述架构。
18.根据权利要求16所述的系统,其中,所述架构表示集成电路的一个或多个硬件块,并且动态地调谐所述架构包括:
当所述架构实现所述第一神经网络来执行针对所述目标应用的计算时,动态地调谐所述架构以满足所述一个或多个硬件块中的每一个的相应的性能目标。
19.根据权利要求16所述的系统,其中:
所述ML成本模型是包括一个或多个单独的分析模型的架构感知成本模型;并且
所述架构感知成本模型被配置为基于使用所述架构处理的数据的确定性数据流来估计所述架构的性能。
20.一种非暂时性机器可读存储设备,存储用于生成应用特定的机器学习(ML)加速器的指令,所述指令能够由所述处理设备执行以使得执行包括以下的操作:
选择表示基线处理器配置的架构;
至少通过对所述架构如何执行包括多个层的第一神经网络的计算进行建模,由ML成本模型生成关于所述架构的性能数据;
当所述架构实现所述第一神经网络并且针对目标应用执行机器学习计算时,基于所述性能数据来动态地调谐所述架构以满足性能目标;
响应于动态地调谐所述架构,生成ML加速器的配置,所述配置指定用于实现所述第一神经网络的所述多个层中的每一层的定制硬件配置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2021/030416 WO2022235251A1 (en) | 2021-05-03 | 2021-05-03 | Generating and globally tuning application-specific machine learning accelerators |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117355843A true CN117355843A (zh) | 2024-01-05 |
Family
ID=76270031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180097806.5A Pending CN117355843A (zh) | 2021-05-03 | 2021-05-03 | 生成和全局调谐应用特定的机器学习加速器 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP4315173A1 (zh) |
JP (1) | JP2024517833A (zh) |
KR (1) | KR20230170757A (zh) |
CN (1) | CN117355843A (zh) |
TW (1) | TW202244792A (zh) |
WO (1) | WO2022235251A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116451757B (zh) * | 2023-06-19 | 2023-09-08 | 山东浪潮科学研究院有限公司 | 一种神经网络模型的异构加速方法、装置、设备及介质 |
CN116501504B (zh) * | 2023-06-27 | 2023-09-12 | 上海燧原科技有限公司 | 数据流的时空映射方法、装置、电子设备及存储介质 |
CN116980423B (zh) * | 2023-09-21 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 模型调度方法、装置、计算系统、设备及可读存储介质 |
-
2021
- 2021-05-03 KR KR1020237039235A patent/KR20230170757A/ko unknown
- 2021-05-03 WO PCT/US2021/030416 patent/WO2022235251A1/en active Application Filing
- 2021-05-03 EP EP21729985.8A patent/EP4315173A1/en active Pending
- 2021-05-03 CN CN202180097806.5A patent/CN117355843A/zh active Pending
- 2021-05-03 JP JP2023568049A patent/JP2024517833A/ja active Pending
-
2022
- 2022-02-11 TW TW111104992A patent/TW202244792A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
JP2024517833A (ja) | 2024-04-23 |
TW202244792A (zh) | 2022-11-16 |
KR20230170757A (ko) | 2023-12-19 |
WO2022235251A1 (en) | 2022-11-10 |
EP4315173A1 (en) | 2024-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Akhlaghi et al. | Snapea: Predictive early activation for reducing computation in deep convolutional neural networks | |
US11782926B2 (en) | Automated provisioning for database performance | |
WO2021057713A1 (zh) | 用多核处理器实现神经网络模型拆分方法及相关产品 | |
Ma et al. | An automatic RTL compiler for high-throughput FPGA implementation of diverse deep convolutional neural networks | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
CN117355843A (zh) | 生成和全局调谐应用特定的机器学习加速器 | |
US11392829B1 (en) | Managing data sparsity for neural networks | |
JP2023522567A (ja) | ニューラルネットワークを使った集積回路配置の生成 | |
US11842178B2 (en) | Compiler-level general matrix multiplication configuration optimization | |
CN115543639B (zh) | 分布式执行深度学习任务的优化方法和分布式系统 | |
Kim et al. | Full stack optimization of transformer inference: a survey | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
CN114127741A (zh) | 用于人工智能建模的动态多层执行 | |
CN114127702A (zh) | 在存储器受限设备上执行大型人工智能模型 | |
Hadjis et al. | Tensorflow to cloud FPGAs: Tradeoffs for accelerating deep neural networks | |
US20230401092A1 (en) | Runtime task scheduling using imitation learning for heterogeneous many-core systems | |
Reggiani et al. | Pareto optimal design space exploration for accelerated CNN on FPGA | |
Fasfous et al. | Anaconga: Analytical hw-cnn co-design using nested genetic algorithms | |
KR20210073242A (ko) | 모델 최적화 방법 및 장치 및 모델 최적화 장치를 포함한 가속기 시스템 | |
Jain et al. | Enabling real-time object detection on low cost FPGAs | |
Sohrabizadeh et al. | StreamGCN: Accelerating graph convolutional networks with streaming processing | |
US11704562B1 (en) | Architecture for virtual instructions | |
US20220083844A1 (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 | |
Mulder et al. | Fast optimisation of convolutional neural network inference using system performance models |
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 |