硬件加速器架构的离线优化

1727066858957.jpg

机器学习 (ML) 的进步通常伴随着硬件和计算系统的进步。例如,基于 ML 的方法在解决视觉和语言中的各种问题方面的增长导致了特定于应用程序的硬件加速器(例如,Google TPU和Edge TPU)的发展。虽然很有前景,但针对目标应用程序定制加速器的标准设计 程序需要手动设计一个相当准确的硬件模拟器,然后执行许多耗时的模拟以优化所需的目标(例如,在运行特定应用程序时优化低功耗或延迟)。这涉及在各种设计约束下确定计算和内存资源总量与通信带宽之间的适当平衡,例如满足芯片面积使用和峰值功率的上限要求。然而,设计满足这些设计约束的加速器通常会导致不可行的 设计。为了应对这些挑战,我们问:“是否有可能在大量现有加速器数据上训练一个富有表现力的深度神经网络模型,然后使用学习到的模型来构建未来几代专用加速器,从而无需进行计算成本高昂的硬件模拟? ”

在ICLR 2022接受的 “数据驱动的硬件加速器架构离线优化”中,我们介绍了 PRIME,这是一种基于数据驱动优化的加速器架构方法,它仅利用现有的记录数据(例如,传统加速器设计工作中剩余的数据),包括加速器设计及其相应的性能指标(例如,延迟、功率等)来架构硬件加速器,而无需任何进一步的硬件模拟。这减轻了运行耗时的模拟的需要,并能够重用过去实验的数据,即使目标应用程序集发生变化(例如,用于视觉、语言或其他目标的 ML 模型),甚至可以以零样本方式重用与训练集相关的未见但相关的应用程序。PRIME 可以根据先前模拟的数据、实际制造的加速器的数据库以及不可行或失败的加速器设计1的数据库进行训练。这种针对单应用程序和多应用程序量身定制的加速器架构方法可将最先进的模拟驱动方法的性能提高约 1.2 倍至 1.5 倍,同时将所需的总模拟时间分别大幅缩短 93% 和 99%。PRIME 还在零样本设置中为未见过的应用程序构建了有效的加速器,其性能比基于模拟的方法高出 1.26 倍。

PRIME 使用记录的加速器数据(包括可行和不可行加速器)来训练保守模型,该模型用于在满足设计约束的同时设计加速器。PRIME 设计的加速器的延迟最多可减少 1.5 倍,同时将所需的硬件模拟时间减少多达 99%。

构建加速器的 PRIME 方法

将先前设计的加速器数据库用于硬件设计的最简单方法可能是使用监督机器学习来训练一个预测模型,该模型可以预测给定加速器的性能目标作为输入。然后,人们可以通过根据输入加速器设计优化该学习模型的性能输出来设计新的加速器。这种方法称为基于模型的优化。然而,这种简单的方法有一个关键的局限性:它假设预测模型可以准确预测我们在优化过程中可能遇到的每个加速器的成本!众所周知,大多数通过监督学习训练的预测模型都会错误分类对抗性样本,从而“欺骗”学习模型预测错误的值。同样,事实表明,即使优化监督模型的输出也会发现在学习模型2下看起来很有希望但在基本事实目标下表现糟糕的 对抗性 例子。

为了解决这一限制,PRIME 学习了一种稳健的预测模型,该模型不易被对抗性示例(我们将很快描述)所欺骗,否则在优化过程中会发现这些示例。然后,可以使用任何标准优化器简单地优化此模型来构建模拟器。更重要的是,与之前的方法不同,PRIME 还可以利用现有的不可行加速器数据库来学习不该设计什么。这是通过在学习模型的监督训练中添加额外的损失项来实现的,这些损失项专门惩罚学习模型在训练期间在不可行加速器设计和对抗性示例上的值。这种方法类似于一种对抗性训练。

原则上,数据驱动方法的核心优势之一是,它应该能够学习高度表达和通用的优化目标模型,这些模型可以推广到目标应用程序,同时也可能对设计人员从未尝试优化加速器的新的未见过的应用程序有效。为了训练 PRIME 使其推广到未见过的应用程序,我们修改了学习到的模型,使其以上下文向量为条件,该上下文向量标识了我们希望加速的特定神经网络应用程序(正如我们在下面的实验中讨论的那样,我们选择使用目标应用程序的高级特征:例如前馈层的数量、卷积层的数量、总参数等作为上下文),并在加速器数据上为设计人员迄今为止见过的所有应用程序训练一个单一的大型模型。正如我们将在下面的结果中讨论的那样,PRIME 的这种上下文修改使其能够以零样本方式优化多个同时应用程序和新的未见过应用程序的加速器。

PRIME 的表现是否优于定制加速器?

我们在各种实际加速器设计任务中对 PRIME 进行了评估。我们首先将 PRIME 针对九个应用程序设计的优化加速器设计与手动优化的EdgeTPU 设计进行比较。EdgeTPU 加速器主要针对运行图像分类应用程序进行优化,特别是MobileNetV2、MobileNetV3和MobileNetEdge。我们的目标是检查 PRIME 是否可以设计一种加速器,使其延迟低于基线 EdgeTPU 加速器3,同时将芯片面积限制在 27 平方毫米(EdgeTPU 加速器的默认设置)以下。如下所示,我们发现 PRIME 比 EdgeTPU 将延迟提高了 2.69 倍(在 t-RNN Enc 中最高提高了 11.84 倍),同时将芯片面积使用量减少了 1.50 倍(在 MobileNetV3 中最高降低了 2.28 倍),尽管它从未接受过减少芯片面积的训练!即使在针对定制设计的 EdgeTPU 加速器进行了优化的 MobileNet 图像分类模型上,PRIME 也能将延迟降低 1.85 倍。

比较 PRIME 和EdgeTPU针对单模型专业化建议的加速器设计的延迟(越低越好) 。

与针对单模型专业化的基准EdgeTPU设计相比,芯片面积(越低越好)减少。

设计用于新型和多种应用的加速器,零样本

我们现在研究 PRIME 如何使用记录的加速器数据来设计用于 (1)多种应用的加速器,其中我们优化 PRIME 以设计一个可以同时在多种应用中良好运行的单个加速器,以及 (2)零样本设置,其中 PRIME 必须为新的未见过的应用生成加速器,而无需使用来自此类应用的任何数据进行训练。在这两种设置中,我们都训练 PRIME 的上下文版本,以识别目标应用的上下文向量为条件,然后优化学习到的模型以获得最终的加速器。我们发现 PRIME 在这两种设置中都优于最佳模拟器驱动方法,即使为给定应用提供的训练数据非常有限但有许多应用可用。具体来说,在零样本设置中,PRIME 优于我们比较过的最佳模拟器驱动方法,将延迟减少了 1.26 倍。此外,随着训练应用数量的增加,性能差异也会增大。

与最先进的模拟器驱动方法相比,零样本设置下的测试应用程序的平均延迟(越低越好)。每个条形图顶部的文本显示了一组训练应用程序。

仔细分析 PRIME 设计的加速器

为了更深入地了解硬件架构,我们研究了 PRIME 设计的最佳加速器,并将其与模拟器驱动方法找到的最佳加速器进行了比较。我们考虑在 100 mm 2 的芯片面积约束下,需要联合优化所有九个应用程序(MobileNetEdge、MobileNetV2、MobileNetV3、M4、M5、M6 4、t-RNN Dec、t-RNN Enc和U-Net)的加速器。我们发现,与模拟器驱动方法相比,PRIME 将延迟提高了 1.35 倍。

PRIME 建议的最佳加速器设计和最先进的多任务加速器设计模拟器驱动方法的每个应用程序延迟(越低越好)。与模拟器驱动方法相比,PRIME 将所有九个应用程序的平均延迟降低了 1.35 倍。

如上所示,虽然 PRIME 为MobileNetEdge、MobileNetV2、MobileNetV3、M4、t-RNN Dec 和 t-RNN Enc设计的加速器延迟更短,但通过模拟驱动方法发现的加速器在 M5、M6 和U-Net 中的延迟更低。通过仔细检查加速器配置,我们发现 PRIME 以计算(PRIME 为 64 个核心,而模拟器驱动方法为 128 个核心)换取更大的处理单元 (PE) 内存大小(2,097,152 字节,而 t-RNN Enc为 1,048,576 字节)。这些结果表明,PRIME 倾向于使用 PE 内存大小来满足 t-RNN Dec 和 t-RNN Enc 中更大的内存需求,从而可以大幅降低延迟。在固定面积预算下,倾向于使用更大的片上内存是以加速器计算能力降低为代价的。加速器计算能力的降低导致具有大量计算操作的模型(即 M5、M6 和 U-Net)的延迟更高。

结论

PRIME 的有效性凸显了在加速器设计流程中利用记录的离线数据的潜力。未来工作的一个可能途径是将这种方法扩展到一系列应用程序中,我们期望看到更大的收益,因为模拟器驱动的方法需要解决复杂的优化问题,类似于大海捞针,而 PRIME 可以从代理模型的泛化中受益。另一方面,我们还注意到 PRIME 优于我们之前使用的模拟器驱动方法,这使其成为在模拟器驱动方法中使用的有希望的候选方法。更一般地说,在低性能设计的离线数据集上训练强大的离线优化算法至少可以成为启动硬件设计的非常有效的因素,而不是抛弃先前的数据。最后,鉴于 PRIME 的通用性,我们希望将其用于硬件-软件协同设计,这展示了巨大的搜索空间,但有很多泛化的机会。我们还发布了用于训练 PRIME 的代码和加速器数据集。

致谢

我们感谢我们的合著者 Sergey Levine、Kevin Swersky 和 Milad Hashemi 的建议、想法和建议。我们感谢 James Laudon、Cliff Young、Ravi Narayanaswami、Berkin Akin、Sheng-Chun Kao、Samira Khan、Suvinay Subramanian、Stella Aslibekyan、Christof Angermueller 和 Olga Wichrowskafor 的帮助和支持,以及 Sergey Levine 对这篇博文的反馈。此外,我们还要感谢“学习设计加速器”、“EdgeTPU”和 Vizier 团队的成员提供宝贵的反馈和建议。我们还要感谢 Tom Small 为本文提供的动画人物。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论