一种平铺加速器资源调度方法及系统与流程
未命名
09-23
阅读:83
评论:0
1.本发明所属领域是资源调度技术领域,具体涉及一种平铺加速器资源调度方法与系统。
背景技术:
2.现有技术已经通过创建了广泛的深度神经网络(dnn)来解决许多领域的现实问题,例如图像识别、对象检测和自然语言处理。随着对更高精度和更好的复杂场景适应性的追求,深度神经网络越来越深,结构也越来越复杂。
3.在这种趋势下,许多规模从几十平方毫米到甚至整个晶圆的大型加速器被开发出来,以加速这种日益复杂的dnn的推理周期。考虑到单个大型hw-tile的利用率和能效较低,这些大型加速器主要采用平铺架构,其中每个hw-tile包括一个处理元件(pe)阵列和一个全局缓冲区,并通过片上网络(noc)互连。
4.然而,平铺架构本身并不能轻易保证高利用率和能效。如何有效地将海量计算和存储资源转化为实际性能仍然是一个悬而未决的挑战。解决这一挑战的关键在于调度,调度可分为层内调度和层间调度。
5.层内调度研究如何将单个层映射到一个或多个hw-tile。它的空间已被许多表示法描述,并通过各种方法进行了探索。
6.层间调度研究如何在加速器上调度dnn中所有层的计算顺序和分配资源,这也显着影响加速器的能效和性能。例如,fused-layer为不同的层分配不同的计算资源,并以层流水线(lp)的方式编排层,与逐层计算的基本版本的层顺序(ls)模式相比,dram访问减少了95%逐层计算。而且,加速器规模越大,层间调度的影响越大。例如,七巧板提出了优化的lp和ls技术,在32
×
32-tile加速器上实现了67%的节能,而在4
×
4-tile加速器上节能不到20%。
7.尽管层间调度在保持平铺加速器的高利用率和能效方面发挥着越来越重要的作用,但其研究存在重大缺陷:大多数工作继续优化现有的启发式算法模式、lp和ls,但没有提出新的模式,更不用说清楚和系统地定义平铺加速器上的层间调度空间。缺乏对层间调度空间的明确定义极大地限制了优化平铺加速器的性能和能效的机会。此外,缺乏系统的定义阻碍了人们理解不同的层间调度选择如何影响不同的硬件行为以及这些行为如何进一步影响加速器的能效和性能。
8.随着dnn加速器规模的不断扩大,研究dnn中各层计算资源分配和各层计算顺序的层间调度对保持dnn推理加速器的高利用率和能效发挥着越来越重要的作用。然而,目前的层间调度主要是基于一些启发式模式进行的。层间调度的空间尚未明确定义,导致优化机会显着受限,并且缺乏对不同层间调度选择及其后果的理解。
技术实现要素:
9.为了解决现有技术中存在的问题,本发明提供了一种平铺加速器资源调度方法及
系统。本方法可以同时实现性能提升1.78倍,能效成本降低13.2%。
10.为达到上述目的,本发明采用以下技术方案予以实现:
11.第一方面,本发明提供一种平铺加速器资源调度方法,包括:
12.接收dnn相关任务的任务请求、dnn工作负载和硬件参数;
13.响应任务请求,基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应的资源分配方案、hw-tiles之间以及hw-tiles和dram之间的数据流;所述层内调度将每一层映射到分配的hw-tile组上;
14.调度结果经过翻译生成加速器芯片指令。
15.作为本发明进一步改进,所述资源分配树表示法有三种类型的nodes:leaf、s cut和t cut;
16.每一个leaf位于资源分配树的末端,表示单层的计算;
17.每一个cut节点位于资源分配树的非末端,表示一层或几层的计算;
18.s cut和t cut具有两个层次的表示意义;从父节点来看,代表其子节点包含的所有层的处理;从子节点的角度来看,子节点的计算空间资源以及计算时间资源由父节点进行分配;其中s cut负责计算资源的空间分配,每个s cut的子节点分配到不同的计算资源,tcut负责计算资源的计算时间分配,其不同的子节点使用同一计算资源的不同时间段;
19.每一个资源分配树都代表一个层间调度方案,以层次化的方式对其进行分析,最终解析为具体的每个层的资源分配方案和hw-tile之间以及hw-tile与dram之间的数据流。
20.作为本发明进一步改进,所述每个node拥有一个或几个层,表示一层或几层的计算顺序;
21.每个node拥有一组hw-tiles,称为hw-tile组,用于计算node的工作负载;hw-tile组中hw-tile的数量称为hw-tile组大小;
22.每个节点都有批大小,是节点对其总批数进行拆分之后每次处理的样本数;
23.每个node包含依赖信息,记录其包含的层在dnn中依赖关系。
24.作为本发明进一步改进,所述将dnn调度到目标平铺加速器上,通过优化算法探索层间调度空间,基于穷举搜索的方法探索层内调度空间;所述优化算法包括随机搜索、模拟退火或基因算法,每一次迭代需要对树进行操作变化。
25.作为本发明进一步改进,所述每一次迭代需要对树进行操作变化采用算子包括:
26.op1:随机选择两个相邻的leaves,然后交换;
27.op2:随机选择一个leaf并将其移动到另一个共享相同上一级节点或上上级节点的cut。
28.作为本发明进一步改进,所述每一次迭代需要对树进行操作变化采用算子包括:
29.op3:随机选择一个cut,然后随机选择一组连续的子批次构成一个新的cut;
30.op4:随机选择一个非根cut并将其删除,然后将其子节点cut放入其上一级cut;
31.作为本发明进一步改进,所述每一次迭代需要对树进行操作变化采用算子包括:
32.op5:随机选择一个cut并随机增加其子批次编号;
33.op6:随机选择一个cut并随机减少其子批次编号。
34.第二方面,本发明提供一种平铺加速器资源调度系统,包括:
35.接收模块,用于接收dnn相关任务的任务请求、dnn工作负载和硬件参数;
36.调度模块,用于响应任务请求,基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应的资源分配方案、hw-tiles之间以及hw-tiles和dram之间的数据流;所述层内调度将每一层映射到分配的hw-tile组上;
37.发送模块,用于调度结果经过翻译生成加速器芯片指令。
38.第三方面,本发明提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述平铺加速器资源调度方法的步骤。
39.第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述平铺加速器资源调度方法的步骤。
40.与现有技术相比,本发明具有以下有益效果:
41.本发明在平铺加速器资源调度中,首先提出了一种统一和系统的表示法,即资源分配树表示法,该方法给出表示不同的层间调度方案并定义层间调度的整体空间。基于该资源分配树表示法,随后深入分析了不同的层间调度选择如何逐步影响加速器的性能和能效。此外,本发明实施例展示了如何在本发明实施例的表示法中表示现有模式并分析它们的特征,与最先进的(sota)开源七巧板框架相比,应用在set时,平均可以同时实现性能提升1.78倍,能效成本降低13.2%。
附图说明
42.图1为本发明一种平铺加速器资源调度方法流程图;
43.图2为绘制了不同表示法定义的层内调度空间之间的包含关系示意图;左:从dnn图到加速器的部署流程。右:在平铺加速器上调度dnn的两个空间,包括未定义的层间调度空间和明确定义的层内调度空间;
44.图3为资源分配树的依赖关系图,(a)示例的资源分配树。(b)左侧资源分配树的自上而下的层次分析流程。最下面的是左边资源分配树对应的s-tgraph。为简单起见,资源分配树的依赖关系仅绘制在该图中;
45.图4为具体ofmap分配策略示意图;
46.图5为用资源分配树表示法表示lp和ls示意图。dnn拓扑与图3中的相同。如果节点的深度(到根节点的距离)为n,则该节点称为“深度n节点”。“最大深度”是指资源分配树中节点的最大深度;
47.图6为不同切割和dnn拓扑背后的权衡示意图。第一行显示了一个id附加示例。ls方案中的深度一割(如果有的话)应该是t割;
48.图7为两种方案的实际比较示意图:一种在本发明实施例的资源分配树定义的空间内探索(缩写为set方案),另一种通过类类七巧板策略探索,主要属于lp模式(缩写为lp)方案)。两个资源分配树的实际执行图都是由16-tile加速器的周期精确模拟器绘制的。其
中,(a)inception-resnet-v1的两个块,(b)lp方案的资源分配树;(c)set方案的资源分配树瓷砖id时间(周期);(d)lp方案执行图;tileid时间(周期);(e)set方案执行图;
49.图8为set调度框架概述。实线箭头表示sa迭代循环,虚线箭头表示从每个引擎对评估器的本地调用;
50.图9为sa运营商示意图,两种节点分别代表未更改和更改的节点;
51.图10为lp、ls和set与不同批次大小(bs)、工作负载和硬件平台的比较。每行采用相同的平台,每列采用相同的工作负载;
52.图11:与七巧板的比较示意图;
53.图12为set改进的方差示意图;sa算法在每个设置上评估10次,每次评估的edp及其平均值绘制在上面。y轴是归一化的edp,其中七巧板的edp被归一化为1;
54.图13为调度空间描述示意图;每个彩色点代表云平台下的一棵资源分配树,批次大小为8。(a)随机资源分配树和sa搜索路径上资源分配树的平均树深。深度是所有leaves的深度的平均值。(b)随机资源分配树的dram访问和片上网络跳数。(c)dram时间(在第6.1(2)节中定义)与随机资源分配树的总延迟的比例。所有“随机”数字都显示了同一组方案,但表现出不同的特征;
55.图14为本发明提供的平铺加速器资源调度系统示意图;
56.图15为本发明提供的一种电子设备示意图。
具体实施方式
57.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
58.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
59.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
60.术语解释:
61.hw-tiles:计算核心/chiplet;
62.fmap:feature map特征图;
63.ofmaps:output feature map输出特征图;
64.ifmaps:input feature maps输入特征图;
65.sa:simulated annealing模拟退火。
66.如图1所示,本发明提供一种平铺加速器资源调度方法,包括:
67.s100,接收dnn相关任务的任务请求、dnn工作负载和硬件参数;
68.s200,响应任务请求,基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应
的资源分配方案、hw-tiles之间以及hw-tiles和dram之间的数据流;所述层内调度将每一层映射到分配的hw-tile组上;
69.s300,调度结果经过翻译生成加速器芯片指令。
70.其中,图2为硬件模板示意图;硬件资源参数包括:hw-tile的数量,片上网络的长宽,以用来进行具体hw-tile的分配;以及hw-tile的计算单元(pe)数量,以用来计算处理各层的时间。
71.其中,层间调度采用资源分配树描述每一层内每个样本的空间和时间资源的分配,确定hw-tiles的数量及其每一层内每个样本的使用持续时间。
72.本发明实施例引入了统一和系统的资源分配树表示法来描述层间调度的空间,用于在具有各种体系结构的平铺加速器上推理具有各种结构的dnn。
73.基于dnn工作负载和硬件参数产生最终的调度策略;树是一个数据结构,应该是依赖这个数据结构的表达能力,对优化空间进行搜索。确定每一层的时间上的计算顺序和空间上的计算资源分配。
74.该表示法包括temporal cut和spatial cut,前者为其每个子节点分配相同的hw-tile组和不同的计算时间间隔,后者为其每个子节点分配不同的hw-tile组。每个资源分配树都是cuts和leaf节点(dnn的层)的分层组织。然后,本发明实施例详细说明了如何将树结构解析为相应的资源分配方案以及hw-tiles之间的数据流。
75.资源分配树表示法有三种类型的nodes:leaf、s cut和t cut;
76.每一个leaf位于资源分配树的末端,表示单层的计算;
77.每一个cut节点位于资源分配树的非末端,表示一层或几层的计算;
78.cut(包含s cut和t cut)具有两个层次的表示意义;从上一级节点(父节点)来看,代表其子节点包含的所有层的处理;从子节点的角度来看,子节点的计算资源以及计算时间资源由父节点进行分配;其中s(spatial)cut负责计算资源的空间分配,即每个s cut的子节点分配到不同的计算资源,t(temporal)cut负责计算资源的计算时间分配,其不同的子节点使用同一计算资源的不同时间段。
79.每一个资源分配树都代表一个层间调度方案,以层次化的方式对其进行分析,最终解析为具体的每个层的资源分配方案和hw-tile之间以及hw-tile与dram之间的数据流。
80.每个node的基本属性为:
81.每个node拥有一个或几个层,表示一层或几层的计算顺序
82.每个node拥有一组hw-tiles,称为hw-tile组,用于计算node的工作负载;hw-tile组中hw-tile的数量称为hw-tile组大小;
83.每个节点都有批大小,是节点对其总批数进行拆分之后每次处理的样本数(即每个节点计算每个层或层组的粒度);
84.每个node包含依赖信息,记录其包含的层在dnn中依赖关系。
85.其中,基于资源分配树表示法,本发明实施例彻底分析了不同的层间调度选择如何影响硬件行为以及这些行为如何影响加速器性能和能效。此外,本发明实施例在本发明实施例的表示法中表示现有的ls和lp模式并分析它们的特征。
86.为了彻底探索各种平铺加速器和工作负载的层间调度空间,本发明实施例开发了一个端到端和高度可移植的调度框架set。结合以上内容,本发明实施例开发了一个端到端
且高度可移植的调度框架set,以自动探索平铺加速器的整个dnn调度空间。为了有效地探索巨大的新定义的层间调度空间,本发明实施例为set配备了基于模拟退火的算法,该算法具有6个专门设计的运算符。set只需稍作修改即可移植到各种平铺加速器上,具有良好的可移植性。本发明实施例已经为本发明实施例的测试芯片开发了一个端到端的set部署流程。
87.以下结合具体实施例对本发明进行详细说明。
88.2.1平铺加速器
[0089]“平铺加速器”(也称为“空间加速器”spatial accelerators)在dnn加速中非常流行。工业界和学术界开发了许多平铺dnn加速器。基于这些现有的平铺加速器,本发明实施例旨在抽象出一个基本的硬件要求(或硬件模板)来支持本发明实施例的层间调度研究,正如在层内调度中所做的那样。
[0090]
在深入研究层间调度的硬件需求之前,本发明实施例可以先抽象出层间调度与层内调度相比的不同硬件行为。这些行为包括:
[0091]
(1)在不同的hw-tile上并行执行不同的层,这需要对每个hw-tile进行独立控制,并且需要有效支持对dram的并发访问;
[0092]
(2)hw-tiles或hw-tile与dram之间的生产者-消费者数据通信,需要灵活的片上网络和对缓冲区并发访问的高效支持。
[0093]
虽然大多数现有的平铺加速器都有效地支持了上述层间调度行为,但它们的架构细节,如控制逻辑、片上网络架构等,因设计目标和考虑不同而有所不同。尽管如此,从层间调度的角度来看,本发明实施例可以清楚地识别出这些加速器的共同特征。基于这些共同的特征,本发明实施例给出了本公开提到的平铺加速器的定义,这也是本发明实施例表示法的首要硬件需求,如下:
[0094]
·
平铺加速器的基本组件包括片上网络、一些hw-tiles、dramphy和控制器,以及其它输入输出设备(图2(b))。片上网络应该能够连接hw-tile、dram和其它组件。此外,每个hw-tile都可以通过片上网络访问其它hw-tile的任意全局缓冲区或加速器的dram。
[0095]
·
hw-tile的基本组件包括统一缓冲区、片上网络路由器和pe。hw-tile可以在不同的时间分配给不同的层,但不能同时计算多个层的工作负载。值得一提的是,hw-tile并不等同于本发明实施例定义中的核心。任何满足上述定义的计算单元,例如封装中的simba chiplet,都可以被视为hw-tile。
[0096]
总之,本发明实施例的资源分配树表示法适用于满足上述基本要求的所有平铺加速器,无需指定分片内或片上网络架构,这就是set可移植性的来源。
[0097]
2.2平铺加速器的调度
[0098]
调度对于在具有高利用率和能效的加速器上部署dnn起着至关重要的作用。本发明实施例将dnn调度分为层间调度和层内调度,它们自上而下的关系。当本发明实施例将dnn调度到目标平铺加速器上时,层间调度首先决定每一层的计算顺序和分配资源,然后层内调度决定如何将层映射到分配的hw-tile组上。
[0099]
具体而言,层内调度研究如何在空间上映射并行计算单元上的层,将工作负载平铺成小块以适应每层内存的容量,并控制每个小工作负载的计算顺序。在早期,提出了许多启发式层内调度模式,例如输出平稳(os)模式,权重平稳(ws)模式、输入固定(is)模式和行
固定(rs)模式。本发明实施例称这个阶段为“启发式时期”。随着研究者认识的深入,层内调度进入“自动化时期”。在此期间,提出了各种表示法,例如以计算为中心的表示法、以数据为中心的表示法和以关系为中心的表示法,以指定层内调度的整体空间并做彻底探索(图2(c))。
[0100]
在层间调度中,主要存在两种启发式模式,层顺序和层流水线。ls使用所有计算资源逐层处理每一层,而lp将不同组的hw-tile分配给不同的层,并以流水线方式编排这些层。现有方法要么优化ls或lp本身,要么针对各种应用程序或硬件优化它们。然而,如果本发明实施例将层间调度的发展与层内调度进行比较,本发明实施例认为层间调度仍处于“启发式时期”。层间调度的空间尚未明确定义、深入探索或完全理解。这种情况促使本发明实施例提出一种表示法来指定层间调度的空间,然后利用该表示法彻底探索空间并分析不同层间调度选择的影响。
[0101]
3.1资源分配树表示法
[0102]
如图3(a)所示,本发明实施例开发了一个统一的表示法,资源分配树来描述层间调度方案。在本公开中,本发明实施例提供资源分配树中组件的定义和属性,以演示如何从任意资源分配树生成其相应的层间调度方案。本发明实施例的set框架能生成不同资源分配树的方法。
[0103]
3.1.1资源分配树表示法的总体介绍如下:
[0104]
资源分配树表示法的中心主题围绕着资源分配。本发明实施例确定了两种资源类型:空间资源,即总计算资源,以及时间资源,即计算资源的使用持续时间。本发明实施例的资源分配树表示法是一种结构化和递归表示法,用于描述每一层内每个样本的空间和时间资源的分配,即确定hw-tiles的数量及其每一层内每个样本的使用持续时间。
[0105]
在本公开中,空间计算资源分配的粒度是在hw-tiles级别定义的(如图2左下角所示),包括所有缓冲区和其中的pe阵列。但是,一般来说,粒度可以更粗也可以更细,这取决于计算资源是否可以独立控制来计算不同的层。例如,在本公开中,pe阵列不能被独立控制,必须协同工作来计算分配给每个hw-tile的同一层的分区工作负载,这也是当今众多平铺加速器采用的控制粒度。但是,如果可以独立控制hw-tile中的每个pe来计算不同的层,则可以将本发明实施例的资源分配树的分配粒度调整到pe级别。
[0106]
为了更好地理解资源分配树所代表的方案,本发明实施例还引入了时空图(s-tgraph)来直观地展示两种资源的分配情况。s-t图用于解释这项工作中的资源分配树示例,对于本发明实施例的set框架不是必需的。图3(b)的底部图说明了对应于图3(a)的s-t图。两个轴对应于资源类型:x轴是时间线,y轴是加速器上的hw-tiles。每个矩形对应于具有特定批次样本的层的处理。矩形的高度表示哪些hw-tiles处理该层,宽度是处理的时间段。每个矩形都标有其对应的图层和批次样本。例如,“l1[0,1]”表示层l1的处理,样本为0到1,批次大小为2。
[0107]
3.1.2节点的基本属性和编码信息。本发明实施例首先给出资源分配树的表示法定义,然后解释定义中的术语和规则。
[0108]
将l表示为dnn模型中的层集,hwt表示加速器上的hw-tiles集,b
tot
表示一批工作负载中的样本数(也表示为总批次大小)。资源分配树r是一组节点:r={n1,n2,...,nm},其中每个节点ni的形式为:
[0109]
ni=(typei,ci,li,tgi,bi,sbi,fromi,toi);
[0110]
其中,typei∈{leaf,scut,tcut},
ꢀꢀ
(1)
[0111]
是树结构中ni的子集,(2)
[0112][0113]bi
,sbi∈z
+
,bi%sbi=0,
ꢀꢀ
(4)
[0114][0115][0116]
(l
→
l
′
意味着l
′
需要l的ofmaps)
[0117]
当typei=leaf时:|li|=1,sbi=1
ꢀꢀ
(7)
[0118]
当typei≠leaf时:
[0119][0120]
当
[0121]
如果nr是树的根,lr=l,tgr=hwt,br=b
tot
。
[0122]
如typei中的编码,资源分配树有三种类型的nodes:leaf、s cut和t cut,后两者统称为cuts(式(1))。一个leaf(图3(a)中的非灰色矩形)表示单层(公式(7)中li中的层)的处理,该层被标记在leaf上(例如图3(a)中粉红色矩形上的l1)。leaf的数量等于dnn中的层数。cut在资源分配树中用灰色矩形表示(例如,图3(a)中的t1、s1、t2),具有两个级别的表示。从它的上一级节点来看,它代表了它下面的所有层的处理(公式(8)中的li),它们被标记在cut node的第二行。比如从t1的角度来看,s1代表了对l1、l2、l3的处理。从它的子级的角度,说明了时空资源为他们分配的情况。例如,从t2和l3的角度来看,s1代表了它们的空间hw-tile分配方案。
[0123]
每个node拥有一组hw-tiles,称为hw-tile组(式(3)中的),负责计算node的工作负载。本发明实施例将hw-tile组中hw-tile的数量称为hw-tile组大小。例如,在图3中,l1的hw-tile组包含hw-tile{1,2},大小为2,而s1的hw-tile组包含hw-tile{1,2,3}大小为3。本发明实施例用于确定hw-tile组的大小和物理位置的策略在后面详细说明。
[0124]
具体是从根节点开始,展开为矩形,每个矩形对应于具有特定批次样本的层的处理。
[0125]
每个节点都有自己的批次大小(公式(4)中的bi),这是节点每次处理的样本数(由图3(b)中的一个彩色矩形表示)。对于图中的每个leaf,其批次大小在括号中标记(例如,在图3中l1和l4的批次大小为2和4)。对于每个cut,一个批次被分成一个或几个子批次,其大小为其每个子批次的批次大小。(见公式(8)中的bj)所有图中每个cut中的批次大小bi和子批次的个数sbi以(bi/sbi)的形式标注。一个leaf node不需要划分子批次,所以它的子批次个数sbi=1。(公式(7))
[0126]
每个node还包含依赖信息(公式(5),(6)),如果dnn中存在依赖关系l
→
l
′
,并且l
∈li,l
′
∈lj,那么本发明实施例在资源分配树中构造依赖关系ni→
nj。节点ni将被记录在中,节点nj将被记录在toi中。依赖关系可以分为dnn中的原始依赖关系和推导的依赖关系(均在图3(a)中标记)。例如,在图3(a)中,没有从l1或l2到l3的依赖关系,因此没有从t2到l3的依赖关系。然而,由于依赖关系l1
→
l4存在,推导出的依赖关系t2
→
l4也存在。对于有效的资源分配树,本发明实施例要求leaves之间的所有依赖关系都是从左到右(即leaves在dnn中形成拓扑顺序)以确保数据的消费者在生产者之后处理。请注意,此要求保证所有依赖关系,无论是原始的还是推导的,都是从左到右的。
[0127]
3.1.3s(空间上)cut和t(时间上)cut的属性。在本发明实施例将介绍s和t cut如何为每个子批次分配空间和时间资源。
[0128]
s cut为每个子批次分配不同的hw-tile组(公式(9),(10))。
[0129]
主要原理为先分配资源,决定计算顺序,确定计算的数据。
[0130]
在s cut中,所有子进程并行或经流水线处理,由它们之间的依赖关系决定。具体来说,每个子批次按顺序处理其子批次,如果子批次b对子批次a有依赖性,则子批次b必须在至少一个子批次之后开始以获得子批次a的输出特征图(ofmaps)。
[0131]
例如,在图5lp中,l1和l2上面的s cut有两个批次大小为2的子批次,因此l1和l2必须在不同的hw-tile组上顺序处理大小为2的两个批次,并且由于有从l1到l2的依赖关系(如图3(a)所示),l2从l1的第二批开始;而在图3中,从t2到l3没有依赖关系,因此两个节点可以并行启动(参见图3(b)中的第三张图)。
[0132]
t cut为每个子批次分配相同hw-tile的不同使用持续时间(公式(9))。t cut的每个子节点都以子批次为单位顺序处理(串行处理)。具体来说,第一个子批次由cut的children按照从左到右的顺序处理,然后处理第二个子批次,然后是第三个,
…
,直到处理完最后一个。
[0133]
例如,图3(b)中的底部图说明了cutt2的子批处理:处理l1的第一个子批,然后处理l2的第一个子批,然后处理l1和l2的第二个子批。
[0134]
简而言之,s/t cut为其子节点分配空间/时间资源。
[0135]
目前,资源分配树表示法和以下的set框架专注于dnn推理场景。鉴于训练过程也可以被视为具有一些特定运算符和限制的图,资源分配树表示法也有可能用于训练场景。将来,本发明实施例会将把本发明实施例的表示法和框架扩展到dnn训练场景。
[0136]
3.2空间大小分析
[0137]
本发明实施例的层间调度空间由满足上述定义的所有资源分配树组成。空间的大小是巨大的:对于n层dnn,如果本发明实施例只考虑树结构和两种cut类型,则已经有个候选类型;为了计算空间的总大小,本发明实施例需要乘以dnn网络的拓扑阶数,并考虑每个cut的不同子批次大小,进一步增加整个空间大小。
[0138]
3.3资源分配树分析
[0139]
在本公开中,本发明实施例将详细说明如何将资源分配树解析为每一层的资源分配方案以及加速器组件之间的数据流。值得一提的是,资源分配树表示法与本公开介绍的策略无关。资源分配树是一种通用的表示法,允许替换缓冲区管理、数据流管理和核心分配策略以适应各种场景。
[0140]
3.3.1数据流。本发明实施例在这里将数据流定义为加速器组件之间每一层的输入特征图(ifmaps)、权重和ofmaps的流动。
[0141]
对于特征图(fmap),如果依赖关系存在于根t cut的不同子级下的两层之间,则相应的fmap将被发送到dram。否则,有两种情况:(1)如果前一层的ofmaps立即被后一层消费,它们将通过片上网络直接发送到消费hw-tiles。(2)如果前一层的ofmaps没有立即被后一层消费,则将其发送到dram进行临时缓冲。对于图3中的示例,l1的ofmaps将立即被l2消耗。因此l1的ofmaps可以直接发送到l2的hw-tile组。由于s1cut和l4是根tcut的不同子级,因此s1cut下层的ofmaps将首先发送到dram。然后l4将从dram加载这些图。具体ofmap分配策略可以参照图4。
[0142]
对于权重,如果根节点是t cut,则每个子节点下的所有层的权重将从dram加载,并为每个子节点批次固定在芯片上。如果根节点是s cut,所有权重将始终固定在芯片上。
[0143]
3.3.2 hw-tiles分配。如上所述,hw-tiles分配仅在每个s cut发生,因为t cut的每个子级都使用t cut的所有hw-tiles。具体来说,s cut的资源分配是决定s cut的每个子节点应该拥有多少和哪些计算资源的过程,下面将对此进行介绍。掌握单个s cut的资源分配策略后,可以递归分析每个资源分配树的资源分配情况。
[0144]
为了均衡每个子批次的处理时间并减少气泡开销,最直接的方法是使分配给每个子批次的hw-tiles数量与子批次的总操作数(ops)成正比,即属于它的所有层中的操作数的总和。然而,本发明实施例观察到使用总操作数来表示处理时间是不准确的,因为有两个问题:(1)由于hw-tile微架构的固有特征,不同类型或形状的层对同一hw-tile可能具有不同的利用率,即使他们有相同数量的操作。例如,如果本发明实施例在simba tile上安排res net-50中的第一层,本发明实施例只能在一个向量中使用8个mac中的3个,并且利用率上限为37.5%。(2)当层在s cut中具有依赖性时,它们对应的样本批次不能同时开始,从而产生填充和排空开销(参见图5lp中的l1和l2)。理想情况下,利用率的减少是b/(b+s),其中b是子批次的数量,s是第一个和最后一个子批次之间的开始时间差。例如,图5lp中s cut的b/(b+s)等于2/(2+1)。
[0145]
为了解决这两个问题,本发明实施例为每个节点引入了一个属性“标准化处理时间”(npt)。一层(leaf节点)的npt是通过在hw-tile上用一个样本模拟该层来计算的。对于一个t cut,本发明实施例只需要将它的子批次的npt相加就可以得到它的npt。对于s cut,总和除以上一段问题(2)中定义的b/(b+s),得到该cut的npt。那么本发明实施例可以自下而上的方式递归定义每个node的npt。剩下的问题是:如何将s cut的hw-tile组划分为其子组的子组,以便这些子组的大小与子组的ntp成正比?由于每个子组的大小必须是整数,在大多数情况下,不能严格按比例划分,导致不同子组之间的不平衡,从而产生气泡并降低利用率。本发明实施例将在下文中将此缺陷称为“气泡开销”。这个问题的严重性随着层数和多样性的增加而增加,甚至会导致利用率下降几十个百分点。因此,本发明实施例提出了一种最优的hw-tile分配算法来尽可能地缓解这个问题,并正式证明了该算法的最优性。
[0146]
在确定了每个hw-tile组中的hw-tile数量之后,本发明实施例还需要确定该hw-tile组对应于哪些物理hw-tile。首先,每个hw-tile都应该附有一个id用于分配。id-附加策略可以根据加速器的特性任意替换,比如片上网络拓扑。对于实验中使用的默认网格片上网络,本发明实施例采用修改后的基于条带的id附加策略,如七巧板,以确保与其进行公
平比较。例如,蓝色的hw-tiles将按照从左到右和自下而上的顺序分配1到8的id(图6中的第一行)。然后,每个s cut的子级将按左右顺序获取cut拥有的物理hw-tiles。对于图3中的示例,s1cut拥有id为1到3的hw-tiles。t1cut和l3将分别获取id为1和2以及id为3的hw-tiles。
[0147]
3.4lp和ls的表示对比
[0148]
在本公开中,本发明实施例首先展示如何使用本发明实施例的资源分配树表示法来表示现有的lp和ls模式(图5),然后分析它们的特征。
[0149]
由于片上缓冲区容量和hw-tile数量的限制,现有工作优化的当前lp和ls倾向于将dnn分成多个段并一一处理。因此,在资源分配树表示法中,他们方案的根cut是tcut,每个子级对应一个段。对于每个段,lp为不同的层分配不同的hw-tile组,因此lp方案中的depth-one cuts,如果有的话,应该是s cuts。相比之下,ls处理具有所有hw-tiles的段中的每一层,并通过片上缓冲区切换具有依赖性的层的fmap,而无需访问dram。
[0150]
因此,ls方案中的深度一割(如果有的话)应该是t割。从上面的分析,lp和ls模式的调度空间可以计算为o(2n)1,大约是本发明实施例定义的空间的然而,大多数现有工作只涉及ls或lp调度空间的一小部分,这进一步显示了探索本发明实施例定义的广泛调度空间的巨大潜力。
[0151]
3.5权衡分析
[0152]
在本公开中,本发明实施例借助资源分配树表示法揭示了不同层间调度选择背后的复杂权衡。可以通过分析一个简单的例子来研究基本的权衡,其中两个相同的卷积层和批次大小为2的工作负载被安排映射到具有网状片上网络的16-tile加速器上(大多数以下分析对片上网络拓扑不敏感)。下面的分析适用于大多数类型的层,例如全连接层、一般的矩阵到矩阵乘法等等。理论上可以类似地分析其它类型的层。更复杂的树结构背后的权衡可以看作是这些基本权衡的层次组合。
[0153]
如图6所示,当比较1与2和3与4时,可以分析s和t cuts带来的权衡。从上面的分析,lp和ls模式的调度空间可以计算为o(2n)1,大约是定义的空间的然而,大多数现有工作只涉及ls或lp调度空间的一小部分,这进一步显示了探索定义的广泛调度空间的巨大潜力。如图6第二列所示,每一层的hw-tile组大小在s cut下比在t cut下的对应物要少,这是一个核心的贡献因素。层的较小hw-tile组带来以下好处:(1)更少的数据重复:将层划分为任何维度的多个hw-tile需要复制部分数据。因此,较小的hw-tile组意味着较少的数据重复。例如,如果本发明实施例将输出通道维度划分为8个hw-tile,则每个hw-tile需要个权重和整个ifmap。当hw-tile组大小缩放到16时,系统会为该层缓存一份权重和16份ifmaps;(2)更大的tile内探索空间:每一层都需要先划分,然后通过intra-tile调度进行优化。因此,较小的hw-tile组意味着每个hw-tile的工作负载更大,从而促进了intra-tile调度以利用并行计算资源和数据局部性。根据以上分析,较小的hw-tile组由于(1)减少了片上网络通信成本,由于(1)减少了dram访问时间,并由于(2)提高了tile内利用率和数据再利用。
[0154]
s cut也有一些缺点:(1)填充和排空开销:当层共享顺序依赖时,一些资源在填充
和排空期间会空闲,这可以通过比较图6的第一行和第三行的子图来观察。(2)气泡开销。这些缺陷可能会恶化性能。t cut和s cut的优缺点在很大程度上是互补的。(3)可能的数据获取开销:如果较小的hw-tile组不能再缓冲层的所有数据,它必须额外从dram中获取数据,从而导致dram访问和片上网络通信成本增加。
[0155]
通过比较1和3,2和4,可以分析子批次带来的权衡。较小的子批次大小带来以下好处:(1)较少的填充和排空开销:当层具有顺序依赖性并被s cut切割时,较小的子批次大小可以减少填充和排空的开销;(2)更少的片上缓冲区使用:更小的子批次大小意味着每个hw-tile组需要缓冲更少的ifmaps,这也会带来与更小的hwtile组的第二个好处相同的好处。较小的子批次大小也会影响层内调度效果:较小的子批次大小意味着层内调度的探索空间较小,这可能会降低层内调度方案的利用率和能效。
[0156]
应用实例
[0157]
在这个案例研究中,本发明实施例使用本发明实施例的循环精确模拟器来显示在本发明实施例的资源分配树定义的空间内探索的方案(缩写为set方案)与sota七巧板like策略探索的方案之间的实际比较,其主要属于图7中的lp模式(简称lp方案)。工作负载、批次大小和硬件平台分别是两个inception-resnet-v1块2和一个16-tile加速器。本发明实施例利用这个案例研究生动地展示了结合s和t切割的巧妙组合的资源分配树方案如何优于lp方案。
[0158]
在图7中,本发明实施例展示了方案的资源分配树及其对应的加速器上所有hw-tile的执行图。一旦所有必需的数据可用,每个hw-tile都可以启动计算,而无需与处理同一层的其它hw-tiles同步。因此,计算同一层的不同hw-tiles可能会在不同的时间开始或结束它们的计算。图7中的空白区域表示各个hw-tile的空闲状态。
[0159]
总体而言,set方案比lp方案节省了41.1%的延迟和31.5%的能效。特别是,dram访问和片上网络通信成本分别降低了61.1%和35.3%,这有助于降低大部分能效成本。通过比较图7(d)和图7(e),可以直观地观察到set方案的工作负载执行更加紧凑且紧密对齐。下面,本发明实施例将首先分析lp方案相对稀疏的工作负载执行背后的原因,然后继续讨论set方案如何有效缓解这些问题。
[0160]
对于lp方案:确保分配到多个层的hw-tiles按比例分布以保持合理的气泡开销是一项具有挑战性的任务。因此,我们观察到lp方案很难同时在s切割下放置超过四层,如图7(b)所示。这种限制极大地限制了可能的生产者-消费者再利用机会,从而导致更多的dram访问。此外,管线中各层之间的依赖关系会引入大量的填充和排空开销。因此,填充和排空开销(例如,在大约0-7000个周期和45000-65000个周期的间隔期间的空白区域)以及增加的dram和片上网络带宽压力(例如,在大约35000-45000个周期的间隔期间的空白区域)有助于lp方案中的稀疏工作负载执行,如图7(d)所示。
[0161]
对于set方案:如图7(c)和(e)所示,具有共享依赖关系的层往往在相同的t cut下,因此利用相同的计算集群进行计算(例如、l5
→
l7、l8
→
l9l11
→
l14、l13
→
l15)。因此,来自生产者层的ofmaps可以快速地在本地传输到消费者层,从而降低片上网络通信成本。此外,及时消耗这些ofmaps提高了缓冲区的使用效率。同时,如图7(e)所示,表现出平行关系的层倾向于参与不同的集群(例如,l5和l6、l10和l12、l11和l13以及l14和l15),利用较小集群的优势,而不产生填充和排空费用。此外,s cut和t cut的策略组合使得更容易平衡
s cut的子级的hw-tile分配,从而显着减轻与s cut相关的气泡成本。例如在图7(c)中,如果我们将l10~l15置于s
1 cut(标记为红色)下,气泡成本将非常巨大。然而,如图7中(c)和(e)所示,通过组合多个s和t cut,我们可以在不影响并行机会和生产者-消费者的情况下,在s
1 cut的子级之间的hw-tile分配中取得良好的平衡再利用机会
[0162]
简而言之,set方案可以通过巧妙的方式组合s cut和t cut的优点。
[0163]
如图8所示,set是一个端到端的dnn调度框架。set输入:(1)由pytorch等高级框架生成的nn模型描述文件;(2)硬件配置(片上网络、dram、hw-tile等);(3)框架设置(优化目标和约束、超参数等)。调度完成后,set输出:(1)能效成本和性能报告;(2)详细的调度方案(3)说明(可选)。
[0164]
set的优化目标可以设置为energyn×
delaym,其中n和m可以设置为任意数字,代表对功耗和性能的不同关注程度。这里的能效和延迟是一批样本的总能效成本和延迟。因此,对于以延迟为中心和以吞吐量为中心的场景,可以分别使用小批量和大批量来测试set的有效性。
[0165]
整个调度过程可以分为探索阶段和后处理阶段两个阶段。探索阶段探索在目标平铺加速器上部署目标dnn的广阔调度空间。然后将结果发送到ir和指令生成的后处理阶段。
[0166]
在探索阶段,通过模拟退火(sa)算法探索层间调度空间,通过基于穷举搜索的方法探索层内调度空间。
[0167]
具体来说,model parser引擎首先解析dnn的描述文件,抽象出dnn的图拓扑信息和dnn中各层的信息进行探索。
[0168]
sa中的初始资源分配树是通过将所有leafs按拓扑顺序放在根t cut下生成的。在调度l层网络时,sa算法进行n=βl迭代,其中β是超参数。在迭代n中,温度为其中t0是初始温度,α是冷却速度。设计保证最终温度tn为0。在每次迭代中,sa控制器将随机选择一个操作(图9)并使用该操作将原始资源分配树更改为新的资源分配树。然后将新的资源分配树发送给资源分配树分析器,用于分析数据流和每一层的hw-tile分配方案。每个层的类型和维度信息及其分配的hw-tile组将被发送到层内调度引擎。然后,层内调度引擎将通过搜索所有分区、平铺和循环顺序候选来探索层内调度空间(图8中的虚线箭头)。最后,层内调度引擎探索出的最优解连同资源分配树分析器分析的信息将被发送给评估器进行整体评估,其结果将发送给sa控制器。如果新成本c
′
高于之前资源分配树的成本c,方案将以概率被接受,其中tn是当前迭代的温度;否则修改后的资源分配树将始终被接受。
[0169]
鉴于资源分配树分析器已介绍,下面只介绍sa运算符和层内调度引擎。
[0170]
4.2.1sa运营商。开发了六个运算符来在每次迭代中更改资源分配树。有了这些算子,这个空间中的任意两棵树都可以在有限步骤内相互转化,这是确保模拟退火能够找到接近最优方案的重要性质。
[0171]
想要探索层间优化空间就需要对树进行变化,这些算子就很重要,具体的优化算法可以是随机搜索、模拟退火、基因算法等,本发明实施例以模拟退火为例,但不作为限定,不限制优化算法,但是需要依靠这些算子进行变化均可以实现本发明的方法均可。
[0172]
如图9所示,op1-op2是一组对树的变换操作,每次迭代随机选择一个进行变化。变换操作的算子介绍如下:
[0173]
op1:随机选择两个相邻的leaves,然后交换。此操作要求两层没有直接或传递依赖性。这里的邻接是指按顺序遍历中所有层的顺序邻接。
[0174]
op2:随机选择一个leaf并将其移动到另一个共享相同上一级节点或上上级节点的cut。
[0175]
op3:随机选择一个cut,然后随机选择一组连续的子批次构成一个新的cut。cut的属性是随机生成的。
[0176]
op4:随机选择一个非根cut并将其删除,然后将其子节点cut放入其上一级cut。
[0177]
op5和op 6:随机选择一个cut并随机增加/减少其子批次编号。结果,它的子批次的批次大小将以相同的比例减少/增加。
[0178]
这六个运算符确保新生成的资源分配树不会违反引入的依赖限制。
[0179]
4.2.2层内调度引擎。由于现有工作已经很好地研究了层内调度,在这部分采用经典策略。首先,采用灵活的分区策略来探索如何将每一层划分为更小的工作负载,并将它们分配到相应hw-tile组中的每个hw-tile。其次,对于每个分区方案,采用基于搜索的tile内数据流探索策略来探索循环顺序和tiling大小。
[0180]
采用评价器进行评估
[0181]
默认的评价器基本上基于具有网状片上网络和nvdla风格的hw-tiles的可扩展架构模板,这也是本发明实施例下面提到的测试芯片的架构。评估器可以使用不同生成的调度方案来估算在不同配置的平铺加速器上部署不同dnn的成本。
[0182]
具体来说,基于层间调度方案,评估器可以分析所有hw-tile的工作负载分布以及hw-tile之间或hw-tile与dram之间的数据依赖关系。然后,它可以计算出片上网络每条链路上的数据传输量和dram的访问模式。基于层内调度方案,其可以计算出各级缓冲区的访问次数和每个hw-tile中不同精度的mac的操作次数。根据分析结果,通过快速模拟器评估延迟;总能效成本e
tot
的计算公式为
[0183][0184]edj
表示每次读取或写入dram的能效成本。a
di
,j表示第i个dram的读写次数。e
hop
表示将一小段数据从一个路由器传输到其相邻路由器的每跳能效成本。nk表示通过第k个链接的flits的数量。e
tl
表示第lth hw-tile的能耗,包括各缓冲区的访问能耗,不同精度的mac,以及tile内通信。
[0185]
正在设计一个4-tile测试芯片来验证本发明实施例的可扩展架构、硬件系统设计和编译流程,为设计更大规模的加速器做准备。基于这个测试芯片,本发明实施例还开发了一个可扩展的周期精确模拟器。由于周期精确模拟器比探索阶段使用的快速模拟器慢得多,因此不能用于探索广阔的调度空间。本发明实施例使用这个周期精确的模拟器来展示介绍的实际调度示例。
[0186]
后处理阶段和set可移植性具体说明如下:
[0187]
资源分配树表示法可应用于具有满足基本要求的不同体系结构的平铺加速器。因此,set也被设计成高度可移植的,以充分利用表示法的普遍性潜力。
[0188]
将set移植到新的平铺加速器时,应替换评估器和指令生成器。评估器只需要满足调度引擎的调用接口,给出方案的评估结果即可。此外,为了降低指令生成器的更换难度,本发明实施例开发了ir生成引擎。该引擎首先解析探索的方案并进行一些分析,然后为每个hw-tile生成一个工作负载列表。列表的每一项记录:(1)工作负载的属性,如数据维度、层信息、缓冲区需求等;(2)数据来源和目的地;(3)tile内计算信息。settile内优化工具允许用户探索经典架构,例如nvdla-stylehw-tile和eyeriss-stylehw-tile。如果用户想要定制一个新的hw-tile架构,则tile内调度引擎,即层内调度引擎的一部分,也需要替换。为本发明实施例的测试芯片和未来更大规模的加速器开发了基于set的整个部署流程。
[0189]
基于上述介绍和说明,现在对本发明实施例公开的方法进行评价,具体方法如下:
[0190]
5.1.1硬件配置。为了彻底测试set的效果,本发明实施例在评估中考虑了两个硬件平台:一个16-tile(4
×
4)边缘平台和一个144-tile(12
×
12)云或自动驱动平台。边缘和云平台的优化目标分别是e2d和ed2,以分别显示他们对功率和性能的优先关注。两个实验平台均采用台积电12nm工艺,运行频率为1ghz。两个平台共享相同的nvdla风格的hw-tile,具有1024个int8mac和1mb全局缓冲区。每个平台的默认总dram带宽设置为每1tops0.5gb/s。
[0191]
用于能效成本评估的不同操作的单位能效成本在介绍如下。网状片上网络跳跃和8位mac估计为0.7pj/bit和0.018pj/op。从数据表中提取的dram能效成本为7.5pj/bit。对于不同容量的寄存器文件和sram缓冲区,本发明实施例使用内存编译器生成它们的模块并直接获取它们的每次访问能效成本。
[0192]
5.1.2工作负载。为了彻底测试set效果并分析不同跨层调度方案背后的权衡,本发明实施例将批次大小从1扩展到64,涵盖延迟敏感场景到以吞吐量为中心的场景。在本发明实施例的实验中,resnet-50、googlenet、inception-resnet-v1、pnasnet[36]和transformer作为工作负载。
[0193]
5.1.3基线。本发明实施例选择sota开源七巧板调度框架作为本发明实施例的第一个基线。对于层间调度,七巧板首先采用动态规划(dp)算法将dnn切割成lp模式下的段。在整个实验过程中,七巧板中的所有优化选项都已打开,并且两个框架的所有硬件配置都保持不变(本发明实施例在评估器中实现了eyeriss风格的hw-tile)。
[0194]
5.1.4sa超参数。对于4.2节中提到的sa超参数,本发明实施例在后面的实验中设置t0=0.07,α=8,β=100。增加sa算法的t0和β将产生更好的资源分配树,但代价是搜索时间更长。因此可以根据具体场景的时间预算来确定超参数。
[0195]
为了更好地研究每个单独模式的优缺点,本发明实施例使用set分别探索ls和lp并将它们设置为另一个基线。与此类基线的比较可以更好地证明探索整个层间调度空间的好处,并提供对ls、lp和新定义的层间调度空间的广泛见解。
[0196]
5.2与七巧板的比较
[0197]
由于七巧板不支持inception-res net、pnas net和transformer,因此将对其余工作负载进行比较。此外,七巧板不支持e2d和ed2优化目标。因此本发明实施例选择edp作为两个平台比较的优化目标。
[0198]
5.2.1验证。为了保证两个框架之间层间优化效果比较的公平性,本发明实施例首先通过分别处理dnn的每一层来测试两个框架的层内调度引擎和评估器。结果表明,对于所有工作负载和批次大小,edp的平均误差为3%。考虑到set相对于七巧板的改进,本发明实
施例认为这个错误是可以接受的。
[0199]
5.2.2结果。图11显示了七巧板和set之间的整体比较。平均而言,在所有平台、批次大小和工作负载中,与七巧板相比,set同时实现性能提升1.78倍和能效成本降低13.2%,总edp降低了51.2%。下面一步一步对比两个框架。在层内调度方面,这两个框架中层内调度引擎的可比效果已在第5.2.1节中进行了演示。对于层间调度,set使用sa算法探索具有o(9.899n)方案(在第3.2节中已计算)的空间,而七巧板使用dp算法穷举探索作为ls空间子集的空间和lp模式,这些模式包含的方案要少得多(o(2n),在第3.4节中已计算)。由于dp算法能够详尽地探索空间,因此在相同空间中dp算法比sa更有可能产生更好的解决方案。上述分析和比较表明:(1)本发明实施例的资源分配树表示法所描绘的更大的调度空间,包含更高效的调度方案,是实现性能和能效增益的决定性因素;(2)尽管这个极大的空间不再允许set使用dp等穷举搜索算法,但本发明实施例专门设计的sa算法仍然可以保证对空间的有效探索并产生好的解决方案。
[0200]
这也是lp在googlenet和inception-resnet上比并行层数更少的resnet表现更好的原因。尽管pnasnet和transformer也有许多并行层,但由于s cut的另一个主要缺点,气泡开销,lp在它们上的表现不佳。它们的层更小且更多样化,因此即使使用本发明实施例的优化分配算法3.3.2,lp也很难为一大组层找到均衡的hw-tile分配方案。因此,流水线长度受到很大限制,片上缓冲区不能得到很好的利用,性能和能效变差。随着hw-tiles数量的增加,可以大大缓解这个问题的严重性,这体现在lp在云平台上的性能优于边缘平台。以上分析也是lp随着批次大小的增加在边缘端平台调度pnasnet和transformer时表现比ls差的原因。
[0201]
5.3.3ls分析。观察到ls在云平台上的表现比边缘平台差很多,这是因为ls的缺点,(这也是lp的优点)在云平台上更严重。如图10所示,使用云平台中的所有hw-tile来计算每一层会导致显着的片上网络通信和dram访问开销,从而降低性能和能效。而且每层的并行维度也有限,导致ls难以使用云平台上的大量并行资源,性能进一步恶化。
[0202]
在这个案例研究中,本发明实施例使用set框架来分析整个调度空间的结构。如图13所示,本发明实施例从调度空间中随机选择方案,并使用set来评估几个指标,包括树深度、dram访问、片上网络跳数和dram时间比例。为了比较,本发明实施例还在图13(a)的右侧绘制了本发明实施例的sa算法的搜索路径。从图中,本发明实施例做出以下观察:
[0203]
(1)如图13(a)所示,具有更深资源分配树的方案往往能耗更少,但具有更大方差和更小延迟下限。原因如下:
[0204]
由于不同方案之间的tile内能效非常接近(如图10所示),总能效的变化由dram访问和片上网络跳数的成本决定。更深的资源分配树可以在其结构中捕获更多的片上再利用,显着减少dram访问时间和片上网络跳数(见图13(a)和(b)),从而减少很多能效。
[0205]
然而,方案的延迟不仅受dram和片上网络带宽的限制,而且还受到介绍的s cuts中的填充和排空以及气泡开销的影响。虽然更深的树可以降低dram和片上网络带宽压力,但随机使用s cuts会增加在方案中引入更多填充和排空成本和气泡的风险。因此,与具有较浅资源分配树的方案相比,只有能够很好地平衡工作负载的深资源分配树才能同时具有更少的dram和片上网络使用、更少的填充和排空开销以及气泡,并获得更少的延迟。如图13的右侧所示,本发明实施例的sa成功地找到了延迟低得多的更深的资源分配树,证明了本
发明实施例的sa算法的有效性。
[0206]
(2)在resnet-50和transformer-large中,图中都存在一个“dram边界”,其中所有的点都在这个边界之上(见图13中的虚线)。这标志着dram带宽的界限。为了证明这一点,本发明实施例引入了每个方案的“dram时间”,它是通过将总dram访问除以dram带宽计算得出的。这是dram的理想总存取时间。如图13(c)所示,本发明实施例研究了“dram时间”在每个方案的总延迟中所占的比例。接近1的比例意味着dram带宽在大部分时间都被充分利用,并且该方案接近dram边界。从图13(c)可以看出,靠近虚线的点的dram时间比例最大,范围从0.8到0.98。这标志着虚线正上方的方案充分利用了dram,其延迟不能再往下走并通过这条线,这就是所谓“dram边界”的意思。
[0207]
现有关于平铺加速器层间调度的工作主要集中在优化ls和lp模式,这是本发明实施例定义的空间的一小部分。对于ls,高效调度和nasa研究了如何将dnn图切割成段以充分利用片上缓冲区并减少dram访问时间。对于lp,tangram(七巧板)和atomic(shixuan zheng,xianjue zhang,leibo liu,shaojun wei,and shouyi yin.2022.atomic dataflow based graph-level workload orchestration for scalable dnn accelerators.in ieee international symposium on high-performance computer architecture,hpca2022,seoul,south korea)采用不同的方法来实现更细粒度的层管线,优化lp的填充和排出开销。事实上,这些针对ls或lp的特定优化大多与set兼容,可以用来优化s cut或t cut的属性,进一步提升set效果。然而,这些工作没有明确定义层间调度空间,极大地限制了优化机会,阻碍了对层间调度选择和相应后果的理解。
[0208]
综上所述,本发明提出的一种通用表示法来定义平铺加速器上层间调度的问题和探索空间。具体来说,这项工作首先提出了一种通用表示法资源分配树,然后深入研究将表示法与硬件行为联系起来,并分析了不同调度选择背后的复杂权衡。基于上述空间定义,本发明实施例开发了一个端到端且高度可移植的框架set,以探索平铺加速器的整个调度空间。本发明实施例对不同的dnn、批次大小和加速器规模进行了大量实验。结果表明set比sota七巧板调度框架和现有模式实现了显着的能效和性能改进。
[0209]
如图14所示,本发明提供一种平铺加速器资源调度系统,主要包括:
[0210]
接收模块,用于接收dnn相关任务的任务请求、dnn工作负载和硬件参数;
[0211]
调度模块,用于响应任务请求,基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应的资源分配方案、hw-tiles之间以及hw-tiles和dram之间的数据流;所述层内调度将每一层映射到分配的hw-tile组上;
[0212]
发送模块,用于调度结果经过翻译生成加速器芯片指令。
[0213]
如图15所示,本发明第三方面是提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述计及多互动功能时延特性的平铺加速器资源调度方法的步骤。
[0214]
本发明第四方面是提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述计及多互动功能时延特性的平铺加速器资源调度方法的步骤。
[0215]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0216]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0217]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0218]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0219]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
技术特征:
1.一种平铺加速器资源调度方法,其特征在于,包括:接收dnn相关任务的任务请求、dnn工作负载和硬件参数;响应任务请求,基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应的资源分配方案、hw-tiles之间以及hw-tiles和dram之间的数据流;所述层内调度将每一层映射到分配的hw-tile组上;调度结果经过翻译生成加速器芯片指令。2.根据权利要求1所述的一种平铺加速器资源调度方法,其特征在于,所述资源分配树表示法有三种类型的nodes:leaf、s cut和t cut;每一个leaf位于资源分配树的末端,表示单层的计算;每一个cut节点位于资源分配树的非末端,表示一层或几层的计算;s cut和t cut具有两个层次的表示意义;从父节点来看,代表其子节点包含的所有层的处理;从子节点的角度来看,子节点的计算空间资源以及计算时间资源由父节点进行分配;其中,s cut负责计算资源的空间分配,每个s cut的子节点分配到不同的计算资源,tcut负责计算资源的计算时间分配,其不同的子节点使用同一计算资源的不同时间段;每一个资源分配树都代表一个层间调度方案,以层次化的方式对其进行分析,最终解析为具体的每个层的资源分配方案和hw-tile之间以及hw-tile与dram之间的数据流。3.根据权利要求2所述的一种平铺加速器资源调度方法,其特征在于,所述每个node拥有一个或几个层,表示一层或几层的计算顺序;每个node拥有一组hw-tiles,为hw-tile组,用于计算node的工作负载;hw-tile组中hw-tile的数量为hw-tile组大小;每个节点都有批大小,是节点对总批数进行拆分之后每次处理的样本数;每个node包含依赖信息,记录包含的层在dnn中依赖关系。4.根据权利要求2所述的一种平铺加速器资源调度方法,其特征在于,所述基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,通过优化算法探索层间调度空间,基于穷举搜索的方法探索层内调度空间;所述优化算法包括随机搜索、模拟退火或基因算法,每一次迭代需要对树进行操作变化。5.根据权利要求4所述的一种平铺加速器资源调度方法,其特征在于,所述每一次迭代需要对树进行操作变化采用算子包括:op1:随机选择两个相邻的leaves,然后交换;op2:随机选择一个leaf并将其移动到另一个共享相同上一级节点或上上级节点的cut。6.根据权利要求4所述的一种平铺加速器资源调度方法,其特征在于,所述每一次迭代需要对树进行操作变化采用算子包括:op3:随机选择一个cut,然后随机选择一组连续的子批次构成一个新的cut;op4:随机选择一个非根cut并将其删除,然后将其子节点cut放入其上一级cut。7.根据权利要求4所述的一种平铺加速器资源调度方法,其特征在于,所述每一次迭代需要对树进行操作变化采用算子包括:
op5:随机选择一个cut并随机增加其子批次编号;op6:随机选择一个cut并随机减少其子批次编号。8.一种平铺加速器资源调度系统,其特征在于,包括:接收模块,用于接收dnn相关任务的任务请求、dnn工作负载和硬件参数;调度模块,用于响应任务请求,基于硬件参数对dnn工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应的资源分配方案、hw-tiles之间以及hw-tiles和dram之间的数据流;所述层内调度将每一层映射到分配的hw-tile组上;发送模块,用于调度结果经过翻译生成加速器芯片指令。9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1-7任一项所述平铺加速器资源调度方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述平铺加速器资源调度方法的步骤。
技术总结
本发明提供一种平铺加速器资源调度方法及系统,属于资源调度技术领域,包括:接收DNN相关任务的任务请求、DNN工作负载和硬件参数;响应任务请求,基于硬件参数对DNN工作负载在目标平铺加速器上进行调度,调度流程分为自上而下的层间调度和层内调度;所述层间调度采用基于资源分配树表示法的调度方法,确定每一层的计算顺序和分配资源,将计算顺序和分配资源解析为相应的资源分配方案、HW-tiles之间以及HW-tiles和DRAM之间的数据流;所述层内调度将每一层映射到分配的HW-tile组上;调度结果经过翻译生成加速器芯片指令。本发明可以同时实现性能提升1.78倍,能效成本降低13.2%。能效成本降低13.2%。能效成本降低13.2%。
技术研发人员:魏宇辰 蔡经纬 彭森 吴作同
受保护的技术使用者:交叉信息核心技术研究院(西安)有限公司
技术研发日:2023.06.09
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/