【翻译论文】Understanding Reuse, Performance, and Hardware Cost of DNN......

在这里插入图片描述

摘要

DNN加速器用于利用重用和执行转移的数据分区和调度策略称为数据流,它直接影响DNN加速器的性能和能效。加速器微体系结构规定了可用于在DNN中执行层的数据流。为层选择数据流可能会对利用率和能源效率产生很大影响,但对数据流的选择和后果以及帮助建筑师探索协同优化设计空间的工具和方法缺乏了解。
在这项工作中,我们首先引入一组以数据为中心的指令,以编译器友好的形式简洁地指定DNN数据流空间。然后,我们将展示如何分析这些指令,以推断各种形式的重用,并使用硬件功能利用它们。我们将该分析编入分析成本模型MAESTRO(通过时空重用和占用对加速器效率进行建模),该模型估计数据流的各种成本效益权衡,包括DNN模型和硬件配置的执行时间和能源效率。我们演示了如何使用MAESTRO来推动硬件设计空间探索实验,该实验在4800米的设计中进行搜索,以平均每秒0.17米的速度确定250万个有效设计,包括帕累托最优通过和能量优化设计点。

1 介绍

深度神经网络(DNN)正在云端和物联网平台上以越来越大的规模部署,以解决图像识别中的复杂回归和分类问题,语音识别,语言翻译,以及更多领域,精确度接近甚至超过人类。在运行DNN时,严格的延迟、吞吐量和能量限制导致硬件加速器的急剧增加。
DNN加速器通过利用数百个处理单元(PE)的并行性实现高性能,并通过最大限度地提高PEs和片上草稿行中的数据重用实现高能效。对于特定的DNN工作负载和硬件加速器,实现的利用率和数据重用直接取决于(1)我们如何安排DNN计算(例如,循环变换的选择)和(2)我们如何在PEs之间映射计算。这两个组件在加速器文献中统称为数据流。已经证明,移动数据的能量成本超过了计算成本[11, 17]因此,理解和优化数据流是DNN加速器设计的关键组成部分,因为它直接决定了数据如何在乘法器(L0)本地缓冲区(L1)和全局缓冲区层次结构(L2及以上之间传输。
DNN加速器的性能和能效取决于(1)目标DNN模型及其层类型/维度,(2)数据流,以及(3)可用硬件资源及其连接性。这三个维度紧密耦合,在这些维度上优化DNN加速器是一项具有挑战性的任务。例如,利用输入通道并行性的数据流[1]在卷积神经网络(CNN)中,在具有少量通道的层上可能无法实现高利用率。或者,需要比网络芯片(NoC)提供更多传输带宽的数据流可能会导致硬件利用率不足。在这种情况下,增加L1草稿行大小可能会允许同样的数据流需要更少的数据带宽,但这种更大的L1可能会增加面积和能耗。因此,共同优化硬件微体系结构及其支持的数据流是任何加速器设计的主要优化目标之一。这仍然是一个开放的挑战,从最近不断提出的新数据流和微体系结构的数量可以看出。
遗憾的是,这些建议并没有在足够详尽的层面上涵盖完整的数据流空间,相比之下,最近关于汇编的提议[10, 33]和分析工具[30]对于DNN,分析DNN工作负载到给定体系结构的大量软件映射,但软件映射和硬件数据流之间的关系尚未阐明,而且这些黑盒工具无法为架构师提供关于数据流选择的后果及其对重用的影响的智识直觉。事实上,“数据流”这个术语在架构和分析提案中的使用方式不一致。因此,架构师对数据流以及数据流和微架构选择之间复杂的相互作用留下了一组不完整和非结构化的直觉。
在本文中,我们试图通过提供一套关于数据流选择的选择和后果及其与微体系结构替代方案的相互作用的完整见解,以及一种定量推理的结构化机制,来纠正这种情况。为此,我们作出以下具体贡献。

首先,我们引入以数据为中心的表示法来表示各种加速器数据流,其中数据映射和重用是一流的实体,这与先前提案使用的以计算为中心的表示法不同,该表示法从循环嵌套表示中推断数据重用。这些以数据为中心的指令可以在密集和稀疏DNN层 (如卷积、lstm和完全连接层) 的任意PEs层次上表达广泛的数据重用 (跨越空间、时间和时空)。我们相信我们的以数据为中心的表示法可以补充常用的loopnest表示法,即,我们的表示法可以看作是可以从高级loopnest表示法中提取或直接指定的中间表示 (IR)。
其次,我们展示了如何使用这些以数据为中心的指令以结构化方式推理重用。我们展示了每个指令之间的关系、指令公开的算法重用的特定形式,以及使用硬件功能利用该重用以提高效率的潜在方法。该分析涵盖了任何数据流可以利用重用的全部方式
第三,我们引入了一个名为 MAESTRO(通过时空重用和占用建模加速器效率)的分析成本模型,它以编程方式实现了上述分析。 MAESTRO 将 1) 具有一组层的 DNN 模型作为输入,2) 使用我们提出的指令指定的每一层的数据流描述,以及 3) 硬件配置。基于这些输入,MAESTRO 输出端到端执行时间、能量(包括所有计算、缓冲和互连活动)、NoC 成本等的估计值。我们提出的方法中的一个关键挑战是提供一种既有效又足够精确的成本估算,以有效地支持设计空间探索。我们展示了 MAESTRO 的抽象硬件模型和分析模型,其精度在实际开源 RTL [24] 的 90-95% 范围内,同时速度提高了 1029-4116 倍(运行 MAESTRO 需要 10 毫秒,而在工作站上进行等效 RTL 模拟需要 7.2-28.8 小时) Xeon E52699 处理器和 64GB 内存)。
最后,我们 演示了加速器设计人员如何使用 MAESTRO 成本模型来确定具有给定面积能量或吞吐量预算的加速器的帕累托最优参数。对于 VGG16 [42] CONV 层 11 中类似 NVDLA [1] 的数据流(表 3 中的 KC 分区),我们看到能量优化与吞吐量优化设计点之间的功耗差异高达 2.16 倍。能量优化设计采用了 10.6 倍以上的 SRAM 和吞吐量优化设计的 80% 的 PE。这导致能量延迟产品提高了 65%,吞吐量提高了 62%。这些数字的范围是这个问题对加速器架构师的重要性的一个具体例子。

2 背景

为了理解各种计算卷积方法的成本效益权衡,我们在DNN加速器的背景下讨论了与数据重用和数据流相关的核心概念。

2.1 DNN中的张量

我们给出了一个多通道二维卷积的例子 图1 这涉及跨越三种数据结构的七个数据维度:输入/输出激活和权重张量。虽然我们的方法可以应用于各种DNN层——CONV2D、全连接(FC)、LSTM、可分离卷积等,但本文重点介绍了CONV2D及其变体,因为卷积神经网络(CNN)非常流行,而CONV2D占CNN总计算量的90%以上[11, 14].
图1

DNN中的张量是以复杂的方式使用七个维度来处理的。例如,可以使用输入行/列和过滤器行/列索引(即卷积循环嵌套的以输入为中心的视图)来推导输出的行/列索引。此外,输入通道索引c同时出现在滤波器和输入激活中,输出通道k同时出现在滤波器和输出激活中。当索引被修改时,数据空间中的位置发生变化,我们将这些维度称为与这些索引耦合的维度。因为这些在特定的数据访问模式下,我们可以转换循环嵌套,使其中一个数据结构在一定的空间或时间范围内保持静止(即,在本地缓冲区中保持不变),这可以显著减少DNN加速器中的全局/本地缓冲区访问计数,并通过保持本地线路不变来降低能耗。

2.2 DNN加速器

DNN加速器是专门的体系结构,用于以高吞吐量和能效运行DNN应用程序。如中所述图形 2 , 大多数DNN加速器使用数百个处理元素(PE)来利用DNN应用程序中固有的并行性。PEs通常包括草稿行存储器(L1)和执行乘法累加操作(MAC)的ALU。为了减少能耗和耗时的DRAM访问,大多数DNN加速器还包括一个共享草稿行缓冲区(L2),该缓冲区足够大,可以存放数据,为所有PE提供数据。共享L2缓冲区和PEs与片上网络(NoC)互连。我们的方法支持NoC模块中广泛的互连设计。例如,脉动阵列可以表示为2D阵列,提供向东和向南的单向链接。根据选择的硬件参数,我们的方法可以支持架构设计,可以有效地执行广泛的DNN操作,包括卷积,因为它不仅可以利用并行性,还可以通过缓冲区和转发/多播NOC实现数据重用。
图2

2.3 数据重用分类法

我们观察到,数据重用源于DNN加速器在时间和空间上的两种行为——多播(输入张量)和缩减(输出张量)。
多播空间多播仅从缓冲区读取数据点一次,通过导线在空间上复制数据点,并将数据点传送到多个空间目的地(即PEs),这减少了昂贵的远程缓冲区访问并节省了能源。同样,时态多播也只从大型远程缓冲区读取一次数据点,通过较小的本地缓冲区临时复制数据点,并在同一个PE将数据点传送到多个时态目的地(即不同的时间实例),这也减少了昂贵的远程缓冲区访问并节省了能源。
减少。空间减少累加来自多个空间源的部分输出,并通过多个计算单元(例如,加法器树或归约和转发)在空间上累加它们。在不同的时间源(即,在不同的时间源上计算出的部分和)进行部分减少通过累加寄存器或缓冲器(例如TPU中的累加缓冲器)临时累加[19]).

图3

2.4 数据流定义和示例

为了利用这些机会,加速器必须安排操作,以便PEs以协调的方式通过数据张量进行,这可以被视为应用于卷积的转换(例如,排序和平铺)图1,以及将数据分区到PEs。在之前的工作中,此类计划被称为数据流[11],它根据张量将数据流分类,张量的变化频率最小,例如权重平稳、输出平稳和输入平稳。
图3显示了在四个PEs上运行的权重固定数据流示例。我们可以观察到W1是跨时间的多播(时间多播),I1是跨PEs的多播(空间多播)P3_1是跨空间和时间减少的。也就是说,示例加速器在时间上重用W1,在空间上重用I1和P3_1。请注意,“权重固定”这个名称传达了直觉和调度策略的高级特征,但详细的洞察和分析需要更精确的描述。
陈等人[12]通过另外指定仅在具体界限上不同的两个计划应被视为同一数据流的实例或映射,来完善数据流的定义。这是一个重要的区别,因为它允许加速器系列被分类在一起,即使它们具有不同的缓冲区大小——即,移动芯片和数据中心芯片可能使用相同的遍历顺序,尽管它们的大小存在很大差异。为简洁起见,在本工作的其余部分中,我们不区分具有完全指定或部分未指定具体边界的调度,而是将它们都称为数据流。

2.5 数据流的现有表达式

为了传达特定体系结构的调度决策,数据流被表示为循环嵌套,这种语法类似于简单的命令式编程语言,具有明确的并行性,如Eyeriss v2所示[12]我们将循环嵌套表示法称为以计算为中心的表示法,因为数据移动是由程序员指定的循环顺序和显式并行性隐含的。循环顺序决定了计算的日程安排(或顺序),循环的显式注释为并行捕获并行,循环顺序、平铺和并行的组合实现了数据重用。因此,建筑师们开始探索包含这三个方面的优化环巢;循环顺序、并行性和平铺。例如,Eyeriss v2[12]在22维循环嵌套中描述其数据流。
以计算为中心的表示法,包括多面体模型,对于编译器估计重用、指导并行性和局部性的最佳循环转换,有很大帮助[8, 32, 36, 37, 39, 40, 45].这些工作提供了足够精确的成本估算,可以在编译器中驱动串联循环转换。然而,它们不能精确地模拟数据重用,因此,高精度地计算吞吐量和能源效率对这些工作来说是一个挑战。鲍等[7]开发了一个分析模型,用于精确估计一类仿射程序的缓存行为(从而计算重用),这些仿射程序可以在编译时由多面体模型精确分析。然而,他们在多面体模型中使用重量级线性代数框架来计算重用,因此在真正的大型应用程序中使用这些技术是不切实际的。此外,对于基于多面体的框架来说,计算由涉及非仿射表达式或复杂下标的数组下标引起的重用是非常具有挑战性的,例如在跨步卷积中常见的模运算。
此外,尽管过去有大量的编译器工作对顺序程序执行重用分析[7, 8, 32, 36,37, 39, 40, 45],它们缺乏显式并行分析循环嵌套的能力,而DNN数据流通常包含多个级别的并行。此外,这些过去的作品没有考虑空间重用(它不涉及基于缓存的体系结构中的空间局部性,而是通过线或跨PES的数据重用),它利用加速器的多播和还原支持,这起到了加速作用。在估算空间DNN加速器的总体吞吐量和能效方面发挥关键作用。
这些限制和挑战促使我们探索数据流的另一种中间表示(IR),一种以数据为中心的表示,其中数据移动和组织是一流的实体。由于数据移动在以数据为中心的表示中是明确的,因此我们的分析模型变得更简单、相对更快,因为不需要利用重量级线性代数框架来精确估计数据移动/重用行为。

3 描述数据流

我们以数据为中心的表示由四个关键指令组成:1)空间地图、2)时间地图、3)数据移动顺序和4)集群。我们简要解释了使用1D卷积的所有关键指令(如所示)图4(a) )作为教学示例,然后讨论支持跨空间、时间和时空的广泛数据重用的各种硬件实现选择。
图4

3.1 以数据为中心的表示

我们将加速器设计的数据流定义为包括两个主要方面:(1)跨时间的DNN计算时间表(例如,循环转换的选择),以利用广泛的重用;(2)跨PEs的DNN计算映射以实现并行性。该表示基于四个关键组件,我们将在下面简要讨论前三个组件。第四个组成部分,集群,将在 3.2.
(1) 空间映射(大小、偏移量)α指定了一个数据结构的维度α(例如,R、X)在PEs之间的分布,其中大小是指维度α中映射到每个PE的索引数量,偏移量描述了α的起始索引在连续PE之间的移动。
(2) 时间映射(大小、偏移量)α指定了数据结构的维度α在PE中跨时间步的分布,并且映射的维度索引块在PE中跨时间步是相同的。大小是指维度α中映射到每个PE的索引数,以及偏移量描述了在PE中,α的起始指数在连续时间步之间的变化
(3) 数据移动顺序:数据流规范中的空间和时间映射序列决定了数据移动的顺序,即数据映射到PEs的时间变化。

我们使用图形 4(a)中的1D卷积示例演示了各种数据流提供的重用机会。我们首先通过中的循环嵌套表示为这个程序创建一个唯一的数据流图形4(b),假设加速器具有两级层次结构(PE+L1本地暂存器缓冲区的L0寄存器)。红色框中包含的两个循环表示PEs上的映射,其相应的以数据为中心的表示形式如下所示图形 4(c)和(d)。
从中可以看出图形4(e),与输出(维度X’)相对应的数据元素在空间上分布在三个PE上,即每个PE接收两个输出元素的不同块。这种特殊的数据分布可以通过我们的spatial map指令捕获,其大小和偏移参数为2,从而生成SpatialMap(2,2)X’,其中X’是输出数据结构的第一维度。此外,与权重(维度S)对应的数据元素在多个PE之间复制,即每个PE接收一个在第一次迭代中使用三个权重元素的相同块,在下一次迭代中使用不同的权重元素块。这个特定的复制和时间分布可以通过我们的时间映射指令捕获,其大小和偏移量参数为3,从而得到时间映射(3,3)S,其中S是权重数据结构的第一维度。将其放在一起,X’上的空间映射和S’上的时间映射捕获了与循环嵌套版本中的两个循环相对应的PEs和时间上的数据映射和移动行为,这两个指令包含在中的红色框中图形4(c)。每个以数据为中心的表示都是对唯一数据流的完整描述。

3.2 数据流游乐场

我们在中讨论的简单1D卷积的基础上构建了六个示例数据流图4(d) 演示对数据流的微小更改如何公开各种形式的空间和时间重用。图形 5 说明了这六个示例数据流,其中包括一个基本数据流图形5(A)及其变体。我们修改了指令顺序空间/时间映射维度 , 映射大小和PE聚类,并讨论了它们对数据重用的影响。
图5

指令命令指令顺序的改变可能会导致完全不同的时间重用(或静态行为)。例如,图形5(A)中映射的指令序列表示,在研究下一组X’索引之前,应先研究S的所有数据索引。这种顺序导致对S的所有索引在时间上重用对应于X’索引(即部分和)的数据值。因此,这种数据流非正式地称为输出平稳,并在多个并行输出之间进行分区。图形5(B)显示了改变指令顺序的影响。这导致了一个权重平稳的数据流,因为PEs可以在进入下一个S索引块之前,暂时重用对应于S索引的所有X’索引的权重值。同样地,图形5(C)和(D)显示了S而不是X’上的空间分布,以及数据移动顺序对导致不同数据流变化的时间重用的影响。这说明了为什么不应将非正式的数据流名称作为其行为的完整而精确的规范。
空间和时间映射的维度在里面图形5(A)指令SpatialMap(1,1)X’(其中X’指的是输出数据结构的第一维度),在空间上将块大小为1(大小参数)的X’维度的索引分布在偏移量为1(偏移参数)的PEs上。这意味着每个PE在输出数据空间的不同列上工作。如果PE的数量不足以覆盖映射维度的所有索引,则映射将在同一组PE上随时间折叠。此外,如果偏移值小于大小值,则连续PE之间的索引将重叠,这在描述输入激活维度X和Y上的映射时很有用,因为它们的迭代空间是倾斜的。
类似地,TemporalMap(1,1)S(其中S指第一个维度过滤权重数据结构的维数),在偏移量为1的时间步长上分布块大小为1的S维索引。这意味着每个PE在权重数据空间的同一列上工作。由于所有PE都获得了与时间映射维度对应的相同数据索引,这为空间重用创造了机会,即在一个时间步长内跨PE多播相同的数据值。
映射大小在所有来自图形5A-D,权重和输出的映射大小(第一个参数)为一,导致权重的完全时间重用,但输出的时间重用(例如映射B和D)或反之亦然(例如映射A和C)。在任何映射中都不存在输入的时间重用。增加空间或时间地图的地图大小有助于提供部分时间重用的机会,这可以捕获CNN层中输入的卷积重用。例如,与图形5(E)中的S维度对应的空间地图有助于利用输入数据跨时间步的部分时间重用。
PE聚类用于多维空间分布。从中可以看出图形5(A-E),与外部位置的地图相关的数据映射在对内部位置的地图进行全面探索后得到更新。这种固有的假设可能会限制某些数据流行为,人们可能会对同时利用多个数据维度的空间分布感兴趣。
为了解决这个问题,我们引入了另一个名为Cluster的指令,以支持多个数据维度的同时空间分布。cluster指令对size参数的多个PE或嵌套子集群(当一个数据流有多个集群指令时)进行逻辑分组。例如,集群(3)位于图形 5(F)将可用的PE分成三组,形成三个PE的两个集群。
CLUSTER指令上面指定的所有映射指令都会在CLUSTER指令创建的逻辑集群之间执行映射。CLUSTER指令下面指定的所有映射指令都会在CLUSTER指令创建的逻辑集群内的PEs或更低级别的逻辑集群之间执行映射。也就是说,集群指令上面的所有映射指令都可以看到逻辑集群,而集群指令下面的映射指令可以看到每个逻辑集群的内部。通过这种机制,可以指定具有多个并行维度的复杂数据流,这些维度由多SPATIALMAP指令(每个集群级别一个)表示。这方面的一个例子可以在图形 5(F),其中X’维在集群中空间分布,S维在集群中空间分布(译者:???) 集群指令使我们能够表示现有的真实世界加速器数据流,例如Eyeris[11]因为它同时涉及R和Y维度的空间分布,以及NVDLA[1]这涉及到K和C维度的空间分布。cluster指令的另一个优点是,它将多个PE分组的概念可以表示加速器(如SIMD单元)中的粗粒度PE[43] 还有矩阵张量加速器,比如GPU张量核
总之,我们讨论了五种转换,它们可以捕获所有数据流的可能方面:调度、平铺和映射。如图所示图5以数据为中心的指令可以简洁地表示所有这些方面。我们设想,以数据为中心的表示可以从数据流的循环嵌套版本(带有仿射约束)自动生成,也可以手动编写。

3.3 重用对硬件的影响

如上所述,基于数据流,出现了各种数据重用机会。表1 总结了此类机会如何出现在集群内的空间映射维度(特征列)和最内部的时间映射维度(特征列)之间的关系中。例如,如果输出通道(K)是空间映射的,则解耦的数据结构“输入特征映射”不会随空间而改变。也就是说,所有PE接收相同的输入特征映射,这意味着一个完整的空间重用机会(广播)。在同一个例子中,当最内部的时间映射维度是输入通道(C)时,输入通道每次迭代都会改变,这就提供了输出的时间缩减机会。
表1

尽管数据流提供了时间或空间数据重用机会,但实际利用这些现象需要适当的硬件支持表2总结了四种重用类别以及相应的硬件实现来支持它们。如表所示,重用可以是空间的,也可以是时间的。根据数据结构,通信类型可以是多播(输入张量)或缩减(输出张量)。多播是一种通信类型,它通过空间(同一时间不同的PE)或时间(不同时间相同的PE)向多个目标传送相同的数据。因此,多播是一对多通信类型,它需要一个扇出的片上网络结构,如总线或树,或者一个“固定”缓冲区来保存数据并将其传送到未来。相比之下,减少是多对一通信类型,适用于部分和以生成最终输出。减少也可以是空间或时间的。支持空间归约是一种归约树或归约前向链,如脉动阵列。读-修改-写缓冲区可以支持时间缩减。
表2

总之,不同的数据流(通过我们的指令表示)暴露了不同形式的重用:空间重用和时间重用,用于多播和精简,这反过来又可以有多个硬件实现。以这种结构化的方式揭示了潜在的微体系结构解决方案。到目前为止,讨论集中在一个简单的一维卷积上,它本身暴露了许多可能的数据流和重用机会。我们将其扩展到一个完整的卷积循环,并分析特定数据流中的重用机会。

3.4 扩展示例:行固定数据流

图形 6 给出了一个示例行静态数据流两个单位时间步骤的详细映射和重用模式[11]超过六个PE加速器。加速器有两个PE簇,每个簇中有三个PE。我们使用之前在示例层图1中使用的相同例子层。图形6(a)和(b)是以计算和数据为中心的行静态数据流表示图形6(c)显示了映射如何跨空间(PE簇)和时间移动图形 6(d)显示了两个时间步和两个簇(即时间和空间)中每个张量的实际坐标。每个彩色的盒子表示复制的数据点,这意味着重用机会。根据复制的数据点,我们可以推断PE阵列上的数据重用,如图形6(d)中的数据重用行所示。映射在里面图形 6(d)表明,同一组输入激活值在同一时间步长内以倾斜方式在两个集群之间复制,这意味着在示例PE阵列的对角线方向上存在空间重用机会。同样地,图形 6(d)表明同一组权重值在同一PE内的两个时间步内复制,这意味着时间重用机会和单位时间步粒度的权重固定式数据流。请注意,数据流在粗粒度时间步中仍然是行平稳的,尽管它在我们在图6(a) 和(b)中定义的单位时间步中是权重平稳的。最后图6(d) 显示了每个PE集群中PE上的同一组输出激活,这意味着每个集群中的所有PE合作生成一组输出激活数据。也就是说,PE集群中的每个PE为相同的输出激活生成不同的部分和,并且它们需要在每个PE集群中的PE之间累积,以生成最终的输出激活值。
基于实例分析图6,我们观察到,数据重用模式与原始工作完全匹配[11]:水平方向重复使用过滤器权重,垂直方向重复使用输出(部分和累积),对角线方向重复使用输入激活。
总之,重用机会基于跨时间或空间的复制数据(PEs),这分别意味着时间和空间重用机会。本节中的示例表明,需要一种快速、准确的定量方法来计算复杂数据流的重用。
图6

4 定量数据流分析

在本节中,我们将介绍在目标DNN模型和硬件配置上定量估计数据流的运行时和能量效率的方法。基于该方法,我们实现了一个分析框架MAESTRO,它由五个引擎组成:张量、集群、重用、性能分析和成本分析。图7提供五个引擎的高级概述。出于空间的考虑,我们只讨论没有边缘案例处理、多层和多个集群级别的高级算法。有关详细信息,我们将在我们的开源存储库中展示它们[2].
图7

4.1 预备发动机

张量分析。如中所述图7,张量分析引擎根据指定的层操作识别每个张量的尺寸耦合。例如,深度卷积,输出激活不与输出通道维度耦合,而是与输入通道维度耦合。注意,深度方向的卷积可以通过这种方式理解,也可以通过消除输入通道维数(C)来理解。我们之所以选择这种惯例,是因为它符合MAESTRO以投入为中心的成本模型。MAESTRO允许用户指定具有任意维度耦合的张量,这种耦合关系被输入到其他引擎,这为MAESTRO提供了通用性。
聚类分析。PE集群是指一组并行处理一个或多个数据维度的PE,由cluster指令指定。图7(b) 描述聚类分析(CLA)引擎中的分析。CLA引擎分析数据流指令中写入的给定数据流描述,以确定子集群的数量,提取集群数据流指令和数据维度,并为每个集群级别增加给定的数据流描述,以查找缺少的指令、步幅处理等。
**重用分析。**图7(b) 包括对数据重用分析(RA)引擎中的分析的高级描述。RA engine识别跨相邻时间步的时间和空间重用量,这是与最内部的非时间/空间展开映射指令相对应的数据迭代。

4.2 性能分析

图形 7 (a) 介绍性能和成本分析引擎的高级概述,以及图形 8 显示了性能分析(PA)引擎的高级算法。PA引擎利用RA引擎中计算的重用信息,根据数据维度和数据流计算所有可能情况的运行时。计算出的运行时间乘以每个案例的发生次数,并累加以计算总运行时间。DNN加速器的运行时间包括每个PE中的通信延迟(L2到L1、L1到L2、本地转发)和计算延迟,这与加速器的硬件参数直接相关。PA引擎在计算直接影响运行时的未完成延迟(通信/计算延迟的最坏情况延迟)时考虑双缓冲。
为了估计通信延迟,MAESTRO依赖其基于管道模型的分析片上网络(NoC)模型,该模型与其他分析模型类似[30]管道模型利用管道宽度(带宽)和长度(平均延迟)两个参数来估计通过NoC的通信延迟。由于许多分组交换NOC具有类似的行为,该模型结合了流水线效应。带宽和平均延迟的各种组合能够以合理的精度模拟NoC结构。例如,Eyeris[11]具有两级分层总线,带有输入、权重和输出张量的专用通道。因此,3倍的带宽可以很好地模拟顶级NoC。平均延迟取决于实现细节;用户应根据实施细节选择适当的值(例如,使用入口/出口缓冲区,每个缓冲区增加一个周期延迟)。对于更复杂的NoC架构,考虑到从全局缓冲区到所有PE的统一通信,用户应该选择二等分带宽和平均延迟。例如,一个注入点位于其中一个角的N N 2D网状网络,平分带宽为N,平均延迟为N。假设用户可以访问NoC实现信息,当NoC是总线或交叉开关时,NoC模型是精确的。
图8

4.3 成本分析

图形 8 描述成本分析(CA)引擎如何计算缓冲区访问的数量,并估计每个张量的缓冲区大小需求,同时考虑在RA引擎和数据迭代情况下计算的数据重用。利用访问计数和MAC操作信息的数量,MAESTRO计算能源成本。MAESTRO包括一个基于这些活动计数和仙人掌的能量模型[29]模拟,可由基于此类活动计数的任何其他能量模型代替(例如Accelergy[47]).

4.4 复杂数据流分析

多聚类分析。多集群案例可以拆分为单集群案例,数据维度大小设置为上层集群中相应映射指令的映射大小。一个集群级别的突出延迟将成为上一个集群级别的计算延迟。为了处理影响所有较低集群级别的各种边缘情况,MAESTRO递归地执行性能和成本分析,如中所示图7。在递归分析中,基本情况是最内部的集群,其子集群是实际的PEs。虽然MAESTRO执行递归,但复杂性并不高,因为PE集群级别的数量通常为两到三个。请注意,每个集群级别的每个边缘情况也需要递归处理。然而,在大多数情况下,我们观察到集群级别的边缘案例数量不到20个,这仍然是一个可处理的规模。
其他DNN。虽然为了简单起见,我们使用了密集卷积作为示例,但MAESTRO可以基于以数据为中心的方法的通用性,对各种层(LSTM隐藏层、池、完全连接、转置卷积等)进行建模。我们以数据为中心的方法支持以两个输入张量和一个输出张量的循环嵌套表示的所有操作,其中所有张量索引仅在仿射函数的一个或两个数据维中耦合。MAESTRO还可以为任何受支持的数据流建模均匀分布的稀疏性。支持更复杂的统计稀疏分布是未来的工作。

4.5 模型验证

我们用两台加速器(MAERI)的RTL模拟验证了MAESTRO的性能模型[24]还有Eyeris[13]分别运行VGG16和AlexNet时1. 图形 9 结果表明,MAESTRO估计的运行时间与周期精确RTL模拟和报告的处理延迟的绝对误差在3.9%以内[13] 平均而言。

5 案例研究

表4 总结了最先进的DNN模型中常用的DNN运算符的功能[6, 18, 28, 34, 35]早期和晚期地层分别指浅沟道高分辨率活化层和浅沟道高分辨率活化层。我们将它们标记为早期层和晚期层,因为这样的层在分类网络中出现较早和较晚[18, 28, 35, 42].我们比较输入通道的数量和输入激活高度来识别它们2.
通过MAESTRO,我们对各种数据流应用于中列出的不同DNN操作时的成本和收益进行了更深入的案例研究表4。我们评估了表3中列出的五种不同的数据流样式,在里面第5.1节以及每个数据流对不同DNN运算符的偏好。对于能量估算,我们将活动计数与仙人掌 [29]的基本能量值相乘模拟(28nm、2KB L1暂存器和1MB共享L2缓冲区)。我们还展示了早期层(宽而浅)和后期层(窄而深)的独特设计空间,以展示不同DNN运营商风格和数据流在不同领域的显著不同的硬件偏好部分 5.2.
表3表4

5.1 案例研究一:数据流权衡

图10显示了DNN运算符对中列出的五种最先进的DNN模型中每个数据流的运行时和能量的粒度估计第五节。请注意,这应该被视为数据流的比较,而不是实际设计的比较,其中可能包含几个低级实现差异,例如逻辑/内存块的自定义实现、处理技术等。我们观察到,KC-P数据流风格的数据流提供了总体较低的运行时间和能量。然而,VGG16的能源效率(图- 第10章(b) )比YR-P(Eyeriss)更糟[11]样式)数据流,并且运行时比YX-P(十点脑)差[15]样式)UNet中的数据流(图形 10 (e) )。这是基于不同的偏好指向每个DNN操作员的数据流。YX-P为分段网络(如UNet)提供了较短的运行时间,该网络具有广泛的激活(例如,输入层中的572x572),并通过放大卷积(例如,转置卷积)在最后恢复原始激活维度。这种对YX-P风格的偏好主要基于其并行化策略:它在激活时利用行和列维度的并行性。VGG16中YR-P数据流的能效基于其早期层中的高重用系数(每次获取的本地访问数),如图中的红色条所示图 11 (a) 和(b)(注意对数刻度)。YR-P数据流有5.8倍 在早期层中,分别有15.17个更高的激活和过滤器重用因子。然而,在后期层中,YR-P和KC-P数据流的重用因子几乎相似(差异<11%),因此在这些情况下,KC-P数据流提供了与YR-P类似的能效。这也可以在中的晚层(蓝色)条中观察到图10最下面一行的图。
虽然KC-P和YX-P数据流提供了较低的运行时间(图10) ,它具有很高的NoC成本,如中所示的高带宽要求图11(c) 突出显示。根据运营商类型,一些数据流需要比其他数据流更高的NoC带宽。例如,YX-P需要高带宽进行逐点卷积,因为它的1x1内核没有卷积重用(即滑动窗口中重叠的激活数据点),而YX-P经过优化,可以通过空间重用利用卷积重用。
不同DNN运营商对数据流的不同偏好促使我们为每种DNN运营商类型采用最佳数据流。我们将这种方法称为自适应数据流,并在图形 10 (f) ,以DNN运算符粒度跨整个模型的平均案例分析。通过采用自适应方法,我们可以观察到潜在的37%的运行时间和10%的能量减少。Flexflow等灵活的加速器可以利用这种优化机会[25]还有MAERI[24]或者通过异构加速器,在单个DNN加速器芯片中使用具有各种数据流样式的多个子加速器。
图10
图11图12

5.2 案例研究二:硬件设计参数和实现分析

使用MAESTRO,我们实现了一个硬件设计空间探索(DSE)工具,该工具搜索四个硬件参数(PEs的数量、L1缓冲区大小、L2缓冲区大小和NoC带宽),在给定的硬件区域和功率约束下,针对能效、吞吐量或能量延迟积(EDP)进行优化。DSE工具接收与MAESTRO相同的输入集,具有硬件面积/功率限制,以及与目标技术合成的构建块的面积/功率。考虑到构建模块的成本,我们在RTL中实现了浮点/定点乘法器和加法器、总线、总线仲裁器和全局/局部草稿行,并使用28nm技术进行了合成。对于总线和仲裁器成本,我们使用回归将成本拟合到线性和二次模型中,因为总线成本线性增加,仲裁器成本二次增加(例如矩阵仲裁器)。
DSE工具扫描在每个参数和搜索粒度范围内指定的目标设计空间。然而,它通过检查硬件参数内环中所有可能设计点的最小面积和功率,在每次硬件参数迭代时跳过设计空间。这种优化允许它跳过不同粒度的无效设计点,从而减少大量无用的搜索,这导致有效的DSE速率从每秒3.3K到0.46M个设计,如中所示图13(c) 。图13(c) 显示了设计空间中四次DSE运行的统计数据。我们在一台运行Linux Mint 19操作系统的i7-8700k CPU和32GB内存的机器上运行DSE。我们同时在机器上运行四组DSE,所有这些都在24分钟内终止,平均有效DSE速率为每秒0.17M设计。
在这里插入图片描述

***设计空间分析:***使用DSE工具,我们探索KC-P和YR-P数据流加速器的设计空间。我们将面积和功率限制设置为16mm2和450mW,这是Eyeris报告的芯片面积和功率[13].我们绘制了我们探索的整个设计空间图形 13.
加速器能否达到峰值吞吐量不仅取决于PEs的数量,还取决于NoC带宽。特别是,尽管加速器有足够数量的PE来利用数据流允许的最大并行度,但如果NoC没有提供足够的带宽,加速器在NoC中会遇到通信瓶颈。此类设计点可在中的区域吞吐量图中观察到图形 13 (a) 。YR-P数据流需要较低的NoC带宽,如所示图形 11 (c) 因此,它不会显示与KC-P数据流相同的行为。然而,随着更严格的面积和功率限制,YR-P数据流将显示相同的行为。在DSE运行期间,MAESTRO会报告每个数据流的缓冲区需求,DSE工具会放置MAESTRO报告的确切缓冲区数量。与直觉相反,较大的缓冲区大小并不总是提供高吞吐量,如中的缓冲区吞吐量图所示图13(在第二列中绘制)。关于每个缓冲区大小的吞吐量的最佳点位于缓冲区吞吐量图的左上角区域。这些点的存在表明数据流的平铺策略(我们的指令中的映射大小
表示)显著影响缓冲区使用的效率。
我们还观察了硬件支持对每个数据重用的影响,如中所述桌子 2. 桌子 5 显示了在第1行显示的VGG16-conv2层上KC-P数据流的设计空间中发现的此类设计点图形 13 (a) 。第一个设计点是吞吐量优化设计,在第一行以星形表示图13。当带宽变小时,吞吐量显著下降,但能量保持不变。然而,如第三和第四个设计点所示,缺乏空间多播或减少支持导致了大约47%的能量增加。
我们观察到,吞吐量优化设计的PEs和缓冲区大小适中,这意味着硬件资源不仅需要分配给PEs,还需要分配给NoC和缓冲区,以实现高PE利用率。同样,我们观察到缓冲区的数量并不会直接增加吞吐量和能源效率。这些结果表明,所有组件都是相互交织的,它们需要很好地平衡,才能获得高效的加速器。
在这里插入图片描述

6 相关作品

硬件DSE和数据流优化:数据流优化是许多最近的DNN加速器(如Eyeriss)的关键优化目标之一[11],Flexflow[25],SCNN[31],以及NVDLA[1]C脑[43],Flexflow[25]分析了三种数据流的成本效益权衡,并探讨了基于这种权衡的自适应数据流的机会。马等人[26]还构建了一个聚焦于三环变换的FPGA卷积分析模型;交换、展开和平铺。虽然他们的分析模型提供了一个直观的权衡数据流,该模型专注于他们提出的一个数据流风格,不考虑区域空间重用,DNN加速器中的时空重用机会,也不考虑通信延迟在NoC,它可以占主导地位的数据流与大瓦片大小。此外,目标数据流针对HLS流进行了优化,并且需要使用带有HLS合成指令的复杂带注释的循环嵌套进行表达。咖啡因[48]提出了一种全自动FPGA流程,包括基于pragma的程序注释、数据流优化框架,以及基于循环平铺和展开定义的分析模型的FPGA DSE。然而,由于循环顺序固定,数据流搜索空间有限;三种预设称为直接、输入专业和权重映射。
过去的工作与以数据为中心的方法有关:有一些工作与探索以数据为中心的方法有关[21– 23],这种方法的原因是数据通过内存层次结构流动,而不是以控制结构为中心的分析,用于本地化增强转换,如多级数据阻塞[22]和数据破坏[21].但是,上述以数据为中心的方法是在推动多级缓存优化的背景下探索的,但没有精确估计输入内核的能量或吞吐量。我们将在中讨论编译器中循环嵌套表示法和重用分析的相关工作部分 2.5.

7 讨论和今后的工作

这项工作的动机是观察到,共同优化DNN加速器微体系结构及其内部数据流对于加速器设计者实现更高的性能和能源效率至关重要。在这项工作中,我们引入了以数据为中心的指令
以紧凑的形式指定DNN数据流,并了解数据重用机会。我们还提出了一个名为MAESTRO的分析模型来估计数据流的执行时间、能源效率和硬件成本。我们评估了与MAERI和Eyeriss加速器相关的分析模型,发现我们的模型与周期精确模拟和报告的运行时间高度一致,这表明了分析模型的可靠性。我们提供了关于五种最先进的DNN模型中数据流选择的成本和收益的案例研究,重点是其中的常见DNN运营商,展示了对数据流和硬件的不同偏好,这激发了自适应数据流加速器和异构加速器。最后,我们还演示了MAESTRO在早期和晚期两个数据流的设计空间探索中的使用,显示了每一层的硬件偏好显著不同。我们基于MAESTRO的DSE工具实现了基于优化的快速DSE,跳过无效设计,这导致了每秒0.17M的高平均DSE率。
在未来,我们计划利用MAESTRO实现一个数据流自动调优器,在指定的DNN模型和硬件配置上找到最优的数据流。有了最优的数据流,我们计划扩展我们的基础设施,自动生成RTL,促进端到端DNN加速流。

以上翻译于百度,有写地方翻译不准勉强看看吧

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值