首页 > 其他分享 >Hardware/Software Co-Exploration of Neural Architectures——神经架构的硬件/软件协同探索

Hardware/Software Co-Exploration of Neural Architectures——神经架构的硬件/软件协同探索

时间:2024-11-23 14:33:43浏览次数:8  
标签:硬件 架构 探索 FPGA Neural Hardware NAS 流水线 Co

在一些研究工作中,探索实践与硬件平台端协同探索的方式来指导神经网络模型的结构设计优化,本文是对《Hardware/Software Co-Exploration of Neural Architectures》论文的阅读学习整体的论文阅读笔记,感兴趣的话可以参考下,如果想要进一步了解工作内容详情,建议移步阅读原英文论文,地址在这里,如下所示:

摘要

我们提出了一种新颖的硬件和软件协同探索框架,用于高效的神经架构搜索(NAS)。与现有的假设固定硬件设计并仅探索神经架构搜索空间的硬件感知NAS不同,我们的框架同时探索架构搜索空间和硬件设计空间,以识别出在测试精度和硬件效率方面最佳的神经架构和硬件对。这种做法极大地扩展了设计自由度,并推动了硬件效率和测试精度之间的帕累托前沿,以实现更好的设计权衡。该框架迭代地执行两级(快速和慢速)探索。无需长时间的训练,快速探索可以有效地微调超参数,并根据硬件规格修剪低效的架构,从而显著加速NAS过程。然后,慢速探索在验证集上训练候选架构,并使用强化学习更新控制器,以最大化预期精度和硬件效率。在本文中,我们展示了协同探索框架可以有效地扩展搜索空间以包含高精度的模型,并且我们理论上证明了所提出的两级优化可以高效地修剪低效解决方案,以更好地探索搜索空间。在ImageNet上的实验结果表明,与硬件感知NAS相比,协同探索NAS可以找到具有相同精度、35.24%更高吞吐量和54.05%更高能效的解决方案。

关键词:硬件-软件协同探索,神经架构搜索,FPGA,多目标优化

引言

神经架构搜索(NAS)在解放人类劳动于设计各种任务的神经架构方面取得了巨大成功,包括图像分类、图像分割和语言建模 [1, 2, 3, 4, 5]。最近,针对固定硬件平台,硬件感知NAS [6, 7, 8] 被提出,除了精度外,还考虑了估计的时间性能(如延迟或吞吐量)(见图1(a))。

所有现有的NAS框架仅探索架构搜索空间,而没有考虑在许多云和边缘计算应用中可用的硬件设计自由度。例如,云平台(如Amazon AWS [9] 和Microsoft Azure [10])采用现场可编程门阵列(FPGA)进行神经网络加速,而边缘计算平台通常采用可编程FPGA [11, 12] 或专用集成电路(ASIC)[13, 14]。除了神经架构设计外,这些硬件平台还可以编程甚至完全定制以获得最佳性能,扩展了硬件设计空间。

有趣的是,硬件设计空间与架构搜索空间紧密耦合,即最佳神经架构取决于硬件(硬件感知NAS),最佳硬件取决于神经架构。因此,最好联合探索这两个空间,以推动硬件效率和测试精度之间的帕累托前沿,以实现更好的设计权衡。从表I中的示例可以清楚地看出这一点,其中展示了在CIFAR-10和Xilinx XC7Z015 FPGA上的三种设计:通过硬件感知NAS为固定FPGA实现优化的神经架构(设计A),然后通过FPGA优化进一步优化硬件(设计B)[15],以及通过我们的协同探索联合优化的神经架构和硬件(设计C)。从表中可以看出,进一步优化硬件感知NAS的架构可以导致45.45%更高的吞吐量和38.24%更高的能效,同时保持相同的精度。另一方面,与这种顺序优化策略相比,我们的协同探索方法可以识别出具有更高精度的架构及其量身定制的硬件,吞吐量和能效分别提高了16.33%和28.80%。

具体来说,我们的架构搜索空间和硬件设计空间协同探索框架如图1(b)所示。所提出的协同探索可以建立在任何现有的NAS框架 [16, 8, 17, 18] 上,通过扩展它以深入探索硬件设计空间,其中迭代地进行两级(快速和慢速)探索。在快速探索中,无需长时间训练,即可为采样的神经架构识别出最佳硬件设计。硬件效率低下的架构将被快速修剪,这显著加速了搜索过程。此后,在慢速探索中,使用策略梯度强化学习训练优秀候选架构以更新控制器,以探索耦合的架构搜索空间。硬件设计空间中的优化目标可以根据设计规格而变化,如面积、货币成本、能效、可靠性、资源利用率等。

为了说明我们的框架,我们在本文中选择使用FPGA作为载体,因为它逐渐成为实现深度神经网络(DNNs)的最流行平台之一,由于其可编程性、高性能和能效,特别是对于低批量推理 [19, 20]。然而,我们的协同探索概念和通用框架也可以轻松扩展到其他硬件平台,如ASIC。由于单个FPGA的时序性能受限于其有限的资源,通常通过将多个FPGA组织成流水线方式 [21, 22, 23, 24] 来提供高吞吐量(每秒帧数,FPS)。在这样的系统中,流水线效率是最重要的指标之一,需要最大化,因为它决定了硬件利用率和能效。因此,我们使用精度和流水线效率分别指导神经架构空间和硬件设计空间的探索,同时满足给定的吞吐量规格(例如,普通相机的≥30FPS)。实验结果表明,协同探索方法可以显著推动帕累托前沿。在ImageNet上,所提出的协同探索框架可以识别出架构和硬件对,以实现相同的精度,35.42%更高的吞吐量和54.05%更高的能效,搜索时间减少,与硬件感知NAS相比。

背景和问题定义

神经架构搜索

尽管关于神经网络架构自动预测的研究可以追溯到20世纪80年代 [25],但在深度神经网络在人工智能领域取得巨大成功后,最近对生成感兴趣数据集的良好神经架构的兴趣不断增加。随着架构的加深,搜索空间呈指数级扩展,导致探索搜索空间的难度增加。在现有工作中,有两种主流的架构搜索方法:(1)使用强化学习 [2, 16, 26],(2)应用进化算法 [3, 27, 28]。基本思想是迭代更新超参数,以生成在精度方面更好的“子网络”。

图1(a),没有硬件感知模块,展示了一个典型的基于强化学习的神经架构搜索(NAS)[16] 框架。如图所示,NAS中的RNN控制器从架构搜索空间中迭代预测子网络。这些子网络将在一个保留数据集上进行训练以获得其精度。然后,精度将用作奖励来更新RNN控制器。

现有工作已经证明,自动生成的架构可以达到与最佳人类发明的架构相近甚至更高的精度 [2, 16]。然而,在搜索架构时存在两个重要问题。首先,搜索过程效率低下。[16] 报告称,在4天内,500个P100 GPU上训练了20,000个网络以找到所需的网络。其次,由于搜索过程对硬件不敏感,因此无法保证时间性能或硬件效率。

最近,硬件感知NAS [6, 7, 8] 被提出,以搜索针对目标硬件平台的架构,如图1(a)所示。它们总是假设固定硬件设计(例如,移动芯片),并且仅探索架构搜索空间。然而,硬件设计自由度在许多云和边缘计算应用中通常是可用的,如云平台中的FPGA [9, 10] 和边缘计算平台中的ASIC [13, 14]。不考虑硬件设计空间将导致硬件效率低下的设计,因为硬件设计空间和架构搜索空间紧密耦合。

与现有工作相比,本文的主要贡献是提出一个框架,以协同探索架构搜索空间和硬件设计空间,如图1(b)所示。更具体地说,该框架在搜索过程中确定最佳硬件,该硬件是为候选架构量身定制的。通过这种方式,框架可以在精度和硬件效率权衡的帕累托前沿上获得一组优秀的架构和硬件设计对。此外,搜索时间可以显著减少,因为我们可以根据多个设计规格高效地修剪低效架构,与硬件感知NAS相比。

DNN在FPGA上的实现

本文将使用FPGA作为载体,研究如何协同探索神经架构和硬件设计。FPGA已经展示了其在低批量实时推理中实现高性能和能效的卓越能力 [19, 20]。因此,大量工作致力于在FPGA上实现神经网络,其中开发了工具来自动为给定网络架构设计加速器。在早期阶段,研究工作主要集中在单个FPGA上设计加速器 [29, 30, 31, 32]。[33] 的目标是边缘FPGA,Xilinx PYNQ,并展示了硬件感知DNN搜索和更新的优势。最近,多FPGA上的实现已成为主流 [23, 24, 15, 21, 19, 20],因为单个FPGA上的有限资源成为性能瓶颈。

为了充分利用多FPGA提供的计算能力,一种典型技术是在多FPGA上以流水线方式实现神经网络 [23, 24, 15, 21]。图2展示了一个这样的例子,其中一个5层网络被划分为3个流水线阶段,每个流水线阶段映射到可用池中的某个FPGA。最后,这些FPGA被连接成线性阵列以流水线方式工作。

定义和问题陈述

所提出框架的目标是找到具有最高测试精度的神经架构和保证性能(如时序要求和硬件效率)的硬件设计。在本文中,我们将使用基于多FPGA基础设施的传统卷积神经网络(CNN)作为示例来说明这一框架,这是其他相关问题的基础。在下面,我们将首先介绍相关定义。然后,我们将正式定义问题。最后,我们将讨论可能的扩展。

子网络是架构搜索空间和硬件设计空间之间的桥梁。具体来说,在每次迭代中,控制器RNN将从架构搜索空间中预测子网络,然后确定其在硬件设计空间中的实现。我们将介绍硬件设计空间如下。

III-C2 将子网络划分为流水线阶段

III-C3 将流水线阶段分配给FPGA

III-C4 流水线FPGA

多个FPGA的流水线执行如图2所示。系统将以固定速率(每秒帧数)从数据集中连续获取输入,并从最后一个流水线阶段生成输出数据。系统的输入速率反映了吞吐量规格 TS,这意味着每个流水线阶段的延迟不应超过 1/TS。

问题陈述。基于上述定义,我们正式定义了“神经架构的硬件/软件协同探索”问题:给定一个数据集、一个FPGA池 FF 和吞吐量规格 TS,我们将协同探索架构搜索空间和硬件设计空间,以找到一个子网络 C:

扩展。目标问题是更一般问题的基石。因此,下一节中提出的框架可以应用于不同场景,只需很少或无需修改。在下面,我们将从硬件和软件两个角度讨论不同的扩展。

从硬件角度来看,将子网络映射到多个FPGA的基本问题等同于将子网络映射到单个FPGA中的多个处理单元(PE),其中每个PE表示一个数据块的处理器(即 [30] 中的层处理器)。当单个FPGA足够大或神经架构的规模相对较小时,将一个FPGA拆分为多个PE [30] 是一个有前途的解决方案。在这种情况下,PE可以被视为图2中硬件池中的一个FPGA。为了应用所提出的技术,我们只需要根据FPGA资源迭代生成PE池(即PE的数量和每个PE的大小),并进行协同探索以识别每个PE池的最佳解决方案。

从软件角度来看,首先,所提出的框架可以通过集成 [34] 中的技术来处理具有残差连接的神经网络,以分区基于DAG的子网络;其次,它可以通过在 paraiparai​ 中添加一个附加参数来为子网络中的每个节点探索不同的操作(例如,组卷积、深度可分离卷积等),以确定节点的特定操作。

最后,上述问题中的吞吐量(每秒帧数,FPS)被设置为约束。但我们可以包装一个二分搜索过程,以最大化吞吐量和流水线利用率。请注意,通过将FPS的度量替换为每秒操作数(OPS),所提出的框架也可以应用于优化其他效率度量,如OPS/LUT或OPS/DSP。

在本文的其余部分,我们将重点确定具有传统CNN结构和多FPGA场景的最佳神经架构和硬件实现,使用吞吐量作为约束并最大化硬件利用率。

硬件/软件协同探索框架

在本节中,我们将介绍所提出的框架。我们将使用 [16] 中讨论的NAS作为骨干框架,并使用FPGA作为硬件平台来展示我们的概念。它可以与任何现有的NAS技术 [16, 8, 17, 18] 集成或扩展以包含其他硬件平台。

框架概述

图3展示了硬件/软件协同探索框架。该框架包含一个基于RNN的控制器和两级探索。与 [16] 不同,控制器具有多个RNN单元而不是一个。更具体地说,子网络中的每一层都有一个对应的RNN单元。在探索过程中,单元将被重组以支持不同的优化目标。

在第一级,快速探索在四个步骤中进行:(1)它首先以概率 pp 预测一个架构,(2)然后,它探索设计空间以生成一个满足吞吐量要求的流水线FPGA系统,(3)根据流水线结构,它重组控制器中的RNN单元,(4)它使用强化学习更新控制器以最大化流水线效率。这一级在不训练子网络的情况下探索硬件设计空间,因此效率很高。

在第二级,我们在保留验证集上训练从第一级获得的子网络。之后,我们基于产生的精度和流水线效率生成奖励,用于更新RNN控制器。如果第一级中没有子网络可以满足所需的吞吐量规格,我们生成一个负奖励来更新控制器。在此级别之后,控制器将从架构搜索空间中预测一个新的子网络用于快速探索级别。

所提出的控制器集成了多个RNN,如图3所示,在两级优化中操作,可以在效率和精度之间做出更好的权衡。首先,在第1级中,RNN独立操作以优化每个流水线阶段的给定架构。因此,它可以更高效地探索搜索空间。另一方面,RNN将在第2级中协同工作以确定主干架构和流水线结构。

快速探索以实现高资源利用率

在第一级,即快速探索(FE),目标是最大化吞吐量规格 TS 下的流水线效率。FE接受三种输入:(1)一组可用FPGA F,(2)子网络的超参数 H,(3)吞吐量规格 TS。它将生成一个新的子网络,其推理阶段的吞吐量可以使用 FF 的子集满足 TS。此外,FPGA的平均硬件利用率可以最大化。在FE中,有两个挑战需要解决:首先,如何划分给定的子网络并将每个分区分配给特定的FPGA(划分和分配);其次,如何重组控制器中的RNN单元,然后更新它们以生成具有更高流水线效率的子网络(重组和更新控制器)。

划分和分配。在搜索过程中,许多候选子网络需要经过划分和分配过程。因此,应采用高效的自动工具以避免搜索过程中的性能下降。在本文中,我们采用 [21] 中的BLAST算法。BLAST接受子网络 H、FPGA F、吞吐量规格 TS 和每个FPGA的属性作为输入。它输出一系列FPGA,每个FPGA将实现流水线阶段中的一个或多个层。结果系统将满足 TS 并具有最大流水线效率。如图4所示,子网络中的层被划分为 M 个分区,每个分区在函数 α 下分配给特定类型的FPGA。

重组和更新控制器。根据生成的流水线结构,我们重组控制器并迭代更新控制器以生成具有更高硬件利用率的子网络。我们的目标是最大化平均硬件利用率,这等效于最大化每个硬件的利用率。然而,最大化平均硬件利用率的设计空间比最大化每个硬件利用率的设计空间大得多。为了高效地探索设计空间,我们选择独立地最大化不同流水线阶段的硬件利用率。因此,我们根据确定的流水线结构重组控制器中的RNN单元。更具体地说,对于一个流水线阶段中的多个层,它们的对应RNN单元将被配置为形成一个RNN,它们的权重和状态是共享的(例如,图4中的RNN 2)。因此,将有 N 个RNN用于 N 个流水线阶段。通过这种方式,每个RNN可以被训练以最大化每个FPGA流水线阶段的硬件利用率。

慢速探索以实现高精度

在通过快速探索级别获得满足时序规格的子网络后,我们现在进入第二级。在这一级中,我们的目标是更新控制器RNN,以生成具有更高精度和流水线效率的新子网络。我们将在保留验证集上训练子网络,因此探索速度比第一级慢得多。我们称之为慢速探索(SE)。

快速-慢速探索之间的接口

在快速探索级别更新控制器中的RNN单元之前,我们拍摄所有RNN单元的快照  Snap。在快速探索级别期间,我们为输入子网络获得硬件设计(即流水线配置)。根据确定的流水线结构,RNN单元被重组,如第III-B节所述。重组的单元将被训练以生成先前获得的硬件设计(即流水线配置)的更好子网络。最后,在确定的流水线上具有最大硬件效率的子网络将被发送到慢速探索级别。

进入慢速探索级别后,控制器中的RNN单元将使用先前保存的快照  Snap 恢复。然后,SE将训练子网络以获得精度,该精度将用于计算奖励。使用此奖励,我们将更新恢复的RNN。然后,更新的RNN将用于生成下一个迭代的新子网络。通过这种方式,SE过程将始终保持改进RNN精度,而FE过程将始终为每次迭代生成最佳硬件设计。

实验

数据集:我们使用CIFAR-10和ImageNet数据集来研究我们方法的有效性,并与最先进的方法进行比较。在子网络的探索过程中,我们仅使用这些数据集中的训练图像,而测试图像用于测试结果架构的精度。为了评估搜索过程中的精度,我们从训练集中随机选择10%的样本作为验证集。所有图像都经过数据预处理和增强过程,包括白化、上采样、随机裁剪和随机水平翻转,这在相关工作中很常见。

架构搜索空间:对于CIFAR-10,我们使用卷积架构作为主干。对于每个卷积层,我们首先确定滤波器大小在 [24, 36, 48, 64] 中,核大小在 [1, 3, 5, 7] 中,以及步幅。我们进行了两组实验来确定步幅:(1)通过探索具有固定步幅1的子网络;(2)通过允许控制器预测步幅在 [1, 2] 中。在每一层之后,附加了修正线性单元 [36] 和批量归一化 [37]。

对于ImageNet,架构重复移动倒置瓶颈卷积层而不是普通卷积层,与 [8] 中相同。控制器探索具有各种核大小 [3, 5, 7]、步幅 [1, 2] 和扩展比 [3, 6] 的架构。

硬件设计空间:硬件设计空间由最多三个Xilinx FPGA(XC7Z015)组成,每个FPGA包含74K逻辑单元、4.9Mb片上内存和150个DSP切片。我们选择的一个原因是这种FPGA提供了高速串行通信(高达16.8Gbps的带宽),因此可以通过多个FPGA形成高速硬件流水线。在实现中,子网络被划分为流水线阶段,每个阶段映射到一个FPGA。请注意,我们的硬件探索可能不会使用所有三个FPGA;可能使用更少的FPGA以获得更高的硬件效率。

在实验中,我们使用流水线效率作为衡量硬件效率的指标。如第I节所述,流水线效率是最重要的指标之一,因为它与硬件利用率、能效和时序性能相关。然后,时序规格根据推理阶段的期望数据处理速度设置,这通常由数据收集器(例如相机)决定。对于CIFAR-10,我们将吞吐量规格设置为35FPS,这可以满足大多数相机;而对于ImageNet,由于更复杂的架构和有限资源,我们将规格设置为10FPS。最后,对于数据和权重,我们应用了常用的16位定点数据,如 [38, 21, 29, 30] 中所示。

训练细节:对于CIFAR-10,RNN控制器和子网络的训练设置与 [16] 相同。对于控制器RNN,在慢速和快速探索中,它使用计算的奖励和学习率为0.0006的ADAM优化器 [39] 进行训练。公式2中的参数 ββ 设置为0.5,以同等优化测试精度和流水线效率。对于子网络,我们应用学习率为0.1、权重衰减为 10−410−4 和动量为0.9的Momentum优化器。每个子网络训练50个epoch。

对于ImageNet,我们在Uber Horovod [40] 之上构建了分布式GPU训练环境。训练设置与CIFAR-10类似,不同之处在于我们将初始学习率设置为0.0125,在选定的epoch衰减 10×10×,并且对于Momentum优化器,权重衰减为 5×10−55×10−5,动量为0.9。

结果

本节将报告四组实验的比较结果:(1)我们将所提出的框架与不同配置进行比较;(2)我们将所提出的框架与现有的NAS框架进行比较;(3)我们将识别的架构与现有架构进行比较;(4)我们展示模型大小和硬件效率方面的设计空间探索,以证明硬件/软件协同探索的重要性。

不同配置的比较结果

在报告结果之前,我们首先介绍所提出框架的设置,即“协同探索”。首先,搜索空间和训练设置可以在第IV节中找到。其次,控制器将通过两级探索迭代搜索10,000个episode的子网络。第三,在每个episode中,慢速探索阶段将获得16个子网络的精度(如果一个子网络从未训练过,则从头开始训练,或者从历史表中获取精度);这些子网络由快速探索阶段识别,其中每个子网络将进行100次试验以优化硬件效率。由于所提出的框架在软件(例如,精度)和硬件(例如,流水线效率)上具有多个优化目标,我们在探索过程中记录了一组优秀的架构和硬件设计对,形成了帕累托前沿。在前沿上,我们将具有最大精度的解决方案表示为“OptSW”,将具有最大流水线效率的解决方案表示为“OptHW”。

时序规格的影响:图6报告了协同探索框架的时序规格的影响。我们随机采样10,000个层大小在4到14之间的架构,并获得在CIFAR-10数据集上满足时序规格的有效架构的百分比。在图6中,很明显,如果约束严格(例如,FPS=100),只有少数架构可以满足规格,表明与没有时序约束的架构相比,高精度架构的数量减少。在这种情况下,我们可以放大公式2中的参数 β 以追求更高的精度。另一方面,如果约束宽松(例如,FPS=20),有大量有效架构。相应地,我们可以缩小 β 以找到更多具有高精度的硬件高效设计。

固定步幅和可预测步幅的比较:表II报告了在CIFAR-10上固定步幅和可预测步幅探索之间的比较。表中的“深度”列表示结果架构中的层数。如表所示,对于固定步幅的探索,OptSW比OptHW的精度高2.93%,但流水线效率损失6.64%。对于可预测步幅的探索,这些数字分别为5.01%和7.54%。此外,很明显,与固定步幅相比,步幅预测可以帮助控制器在精度和流水线效率方面找到更好的结果。因此,在以下实验中,我们将使用可预测步幅作为协同探索的默认设置。

与现有NAS框架的比较结果

接下来,我们将所提出的协同探索框架与现有的NAS框架进行比较。为了公平起见,我们使用与协同探索相同的设置:探索10,000个episode,并在每个episode中获得16个子网络的精度。由于现有的硬件感知NAS框架 [6, 8, 7] 针对固定硬件(例如,GPU)而不是可编程FPGA,并且它们使用各种设置;为了公平评估,我们使用 [16] 中讨论的NAS作为骨干来实现针对FPGA的硬件感知NAS,搜索空间和训练设置如第IV节所述。与协同探索框架不同,硬件感知NAS假设FPGA中的固定加速器设计(即优化参数)。如图1(a)所示,在搜索循环中,控制器将首先预测一个神经架构;其次,框架在FPGA上测试预测架构的硬件效率;第三,它训练架构以获得其精度;最后,它使用硬件效率和精度来更新控制器。此框架在结果中表示为硬件感知NAS。

此外,对于硬件感知NAS获得的最终架构,我们进一步优化其硬件实现,以在硬件效率方面获得更好的设计。这种启发式方法在结果中表示为“顺序优化”。

不同探索框架对帕累托前沿的影响:图7报告了假设硬件设计空间包含最多(a)两个FPGA或(b)三个FPGA的设计空间探索。x轴和y轴分别表示精度和流水线效率。为了清晰展示,我们仅包括流水线效率不低于85%的两个FPGA的架构(图7(a))和不低于75%的三个FPGA的架构(图7(b))。在这些图中,圆圈设计点对应于表II中的点。

红线表示协同探索探索的帕累托前沿。另一方面,绿线表示硬件感知NAS获得的前沿(通过检查识别的顶级架构)。这些图清楚地表明,通过探索硬件设计空间,我们的协同探索可以显著推动精度和效率权衡的帕累托前沿。它有效地识别了仅通过架构搜索空间无法获得的更好设计,即两个前沿之间的设计。

比较图7(a)和(b)中的两个探索结果,我们还可以看到,具有最高流水线效率的解决方案位于图7(a)中,而具有最高精度的解决方案位于图7(b)中。一般来说,我们总是观察到三个FPGA上的平均精度高于两个FPGA,但流水线效率较低。这是因为更多FPGA可以容纳更深的架构以获得更高的精度。另一方面,更多层很容易导致不平衡的流水线阶段,从而降低流水线效率。

协同探索与现有框架的比较:表III报告了在CIFAR-10和ImageNet上的精度、流水线效率、吞吐量和能效的比较结果。所有识别的架构的参数少于1M,主要是由于硬件容量。这不可避免地导致精度损失;然而,如我们所见,OptSW在CIFAR-10上仍能达到85.19%的测试精度,在ImageNet上达到70.24%的top-1精度。这些结果证明了协同探索方法在资源有限场景中的有效性。此外,OptSW在CIFAR-10和ImageNet上分别比硬件感知NAS实现了54.37%和35.24%的更高吞吐量,以及56.02%和54.05%的更高能效。与顺序优化相比,OptSW在CIFAR-10上的吞吐量和能效分别提高了16.34%和28.79%;在ImageNet上,它还可以略微提高吞吐量,并实现37.84%的能效提升。

与现有架构的比较结果

在本小节中,我们将所提出的协同探索框架识别的神经架构与现有架构进行比较:ProxylessNet [8] 和MobileNetV2 [41]。我们将吞吐量约束设置为10FPS作为协同探索框架的基线。为了获得这些架构的硬件效率(吞吐量、能效等),我们应用BLAST方法 [21] 将它们分区到多个FPGA上。为了公平比较,所有模型涉及3个FPGA。

表V报告了结果。如我们所见,MobileNetV2和ProxylessNet都无法满足10 FPS的时序规格,而我们的可以。与手动设计的MobileNetV2 [41] 相比,OptSW在top-5精度损失0.47%的情况下,吞吐量和能效分别提高了2.33倍和1.57倍。另一方面,与ProxylessNet [8] 相比,其吞吐量比规格低3倍,OptSW可以找到满足规格的架构,top-5精度为90.53%,而ProxylessNet为92.50%。结果表明,所提出的框架可以在硬件效率和架构精度之间做出更好的权衡。此外,它可以保证识别的最终架构可以满足时序规格,这对于实时AI系统非常重要。

协同探索的重要性

最后,我们展示了协同探索NAS和硬件设计空间的重要性,而不是(1)仅使用启发式方法限制模型大小进行NAS探索,或(2)应用硬件感知NAS探索。图8展示了具有4层架构的设计空间探索结果。

在图8(a)中,x轴和y轴分别表示模型大小和硬件效率(即流水线效率)。图中的每个点都是一个设计,使用 [21] 中的算法进行优化。我们在图中标记了模型大小在120K到150K之间的设计点。从图中可以看出,对于模型大小在120K到150K之间的设计,优化的硬件效率范围从1.29%到98.35%。此外,对于更窄的范围从149K到150K,效率仍从7.02%到98.35%不等。上述所有结果反映出,仅通过限制模型大小无法保证硬件效率。这主要是因为有许多设计具有相似的模型大小,但它们的结构差异很大,导致不同的硬件效率。因此,它验证了神经架构搜索空间和硬件设计空间紧密耦合,并强调了进行硬件和软件协同探索的重要性。

在图8(b)中,我们揭示了协同探索和硬件感知架构搜索之间的根本区别。图中的黑色十字和红色圆圈分别表示硬件感知NAS和协同探索搜索空间中的有效设计点。我们可以观察到,硬件感知NAS的搜索空间比所提出的协同探索方法窄得多。基本上,硬件感知NAS将修剪具有高精度但无法满足固定硬件设计上的硬件规格的架构。然而,通过打开硬件设计空间,可以为修剪的架构找到量身定制的硬件设计,使其满足硬件规格。因此,与硬件感知NAS相比,协同探索方法扩大了搜索空间。结果,它可以在精度和硬件效率之间做出更好的权衡。

结论和未来工作

我们提出了协同探索框架,以在神经架构搜索中开放硬件设计自由度。这是由硬件平台可以编程甚至完全定制以在云和边缘计算应用中获得最佳性能的趋势驱动的。本文以FPGA为载体,展示了通过联合探索架构搜索空间和硬件设计空间,可以在精度和硬件效率权衡的设计帕累托前沿上显著推进。

本文提出的框架将是神经架构和硬件协同探索的基础。基于所提出的协同探索框架,我们列出两个有前途的未来方向如下。首先,最近提出了混合精度 [42] 用于固定架构;在未来,我们计划进一步协同探索神经架构、量化和硬件设计。其次,计算架构的创新在执行神经网络的推理阶段取得了巨大成功 [43],我们计划将所提出的框架应用于与新型计算架构(例如,内存计算)协同探索神经架构。

未来工作

基于所提出的协同探索框架,我们列出两个有前途的未来方向如下。

  1. 混合精度与量化:最近,混合精度 [42] 被提出用于固定架构。在未来,我们计划进一步协同探索神经架构、量化和硬件设计。通过结合混合精度和量化技术,我们希望在保持高精度的同时,进一步提高硬件效率和能效。

  2. 新型计算架构:计算架构的创新在执行神经网络的推理阶段取得了巨大成功 [43]。我们计划将所提出的框架应用于与新型计算架构(例如,内存计算)协同探索神经架构。通过利用新型计算架构的优势,我们希望在实时AI系统中实现更高的性能和能效。

结论

本文提出了一个新颖的硬件和软件协同探索框架,用于高效的神经架构搜索(NAS)。与现有的硬件感知NAS不同,我们的框架同时探索架构搜索空间和硬件设计空间,以识别出在测试精度和硬件效率方面最佳的神经架构和硬件对。通过联合探索这两个空间,我们显著推动了硬件效率和测试精度之间的帕累托前沿,实现了更好的设计权衡。实验结果表明,与硬件感知NAS相比,协同探索NAS可以找到具有相同精度、更高吞吐量和更高能效的解决方案,同时显著减少了搜索时间。

标签:硬件,架构,探索,FPGA,Neural,Hardware,NAS,流水线,Co
From: https://blog.csdn.net/Together_CZ/article/details/143571096

相关文章

  • 第51篇 Cookie和Session的简单介绍
    前言Cookie是一种由服务器发送到用户浏览器并存储在客户端的小型数据块,通常用于标识用户会话和保持状态信息。Session则是服务器端存储的与特定用户会话相关的状态信息,它通过Cookie中的SessionID与客户端建立关联。这两者共同构建了传统Web应用中用户身份验证的基础。1.Cookie......
  • 软件测试报告-布里斯托网址/曼彻斯特网址的自动化测试Testsuite.side和用户故事UserSt
    软件测试报告-布里斯托网址/曼彻斯特网址的自动化测试Testsuite.side和用户故事UserStory和java_code曼切斯特/java+junit+seleniumIDE+side软件测试实现/布里斯托bristol.ac.uk的LinkGraphAdequacy 也就是userstory软件测试#testsuites.side 执行日志log先演示......
  • Bitcoin;Schnorr签名;Schnorr签名聚合算法组成
    文章目录概要Schnorr聚合签名概要数字签名是Bitcoin的基本加密构建块,用于验证交易的有效性。当用户向Bitcoin主网提交交易时,数字签名用于满足以下三个关键功能:真实性:数字签名验证用户的身份和交易中包含的资金来源,以确保只有相应私钥的所有者才能授权使用相关资金。......
  • vscode的C++引用头文件总是报错,网上教程都试了还是没用,请来这里。
    本教程跟网上大部分教程大同小异。(节省时间:在编辑task.json文件时只需写头文件路径,一定不要写源文件路径即可,其余步奏跟其他人的相同)若成功解决问题,希望可以给小编一个赞其中一些操作看不懂的可以先看其他人的步奏,如:适合初学者!超详细的vscode的C++自定义头文件的配置!_vscod......
  • conda虚拟环境教程
    本文介绍如何使用conda命令实现虚拟环境的创建,查询,删除1.创建虚拟环境condacreate--name<env_name>python=<version>env_name虚拟环境名称versionpython版本例:condacreate--namemy_envpython=3.102.进入虚拟环境condaactivate<env_name>env_name虚拟环境......
  • 【Atcoder训练记录】AtCoder Beginner Contest 381
    训练情况赛后反思简单题A题做红温了,怒吃6罚时,C题双指针其实差不多想出来了,但是对于判断字符串合法其实可以只判断两个端点,不需要全部遍历,中途还想了二分做法(?),然而写到最后发现并没有二分单调性。A题记得判断字符串的长度必须是奇数,\(1\sim\frac{n+1}{2}-1\)是1,\(\frac{......
  • cornerstone中raft_server源码解析
    1.概述cornerstone中核心即为raft_server的实现。在raft里面有follower,leader,candidate三种角色,且角色身份还可以相互切换。写三个类follower,leader,candidate显得没必要,因为三个类可以共享许多成员变量,如term,log_store等等。因此在cornerstone中抽象出raft_server这一个类,而raf......
  • MicroPython 硬件 I2C 驱动 MPU6050 - RaspberryPi Pico 示例
    该文只存放了驱动文件,关于MPU6050的分析请转移到:MPU6050寄存器内容和地址陀螺仪数据输出寄存器(共6个寄存器,地址为0x43-0x48)加速度传感器数据输出寄存器(6个,地址为0x3B-0x40)温度传感器数据输出寄存器(0x41-0x42)WhoamI设备验证MPU6050的默认设备地址为0x68,其存储Who......
  • Economies of Scale
    规模经济(EconomiesofScale)规模经济指的是随着生产规模的扩大,单位产品的平均成本下降的现象。这通常发生在企业生产规模增加到一定程度时,由于固定成本(如厂房、机器设备等)被更多的产品分摊,单位产品的固定成本降低,同时由于规模的扩大,企业可能会享受到采购原材料的批量 折扣、更......
  • Cookie 是什么?从保存登录到广告追踪的那些事
    你有没有想过,为什么购物网站能记住你没结算的商品,视频网站会推荐你喜欢的内容?这一切的“幕后功臣”就是浏览器中的Cookie。它是一个看不见的小帮手,但很多时候,它也可能成为广告商和数据收集者的工具。今天,我们就来聊聊Cookie的前世今生、工作原理,以及如何保护自己的隐私。Cooki......