【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs

Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架

本文纯翻译,原文请查看:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9503415

目录

  • Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架
  • ABSTRACT
  • I. INTRODUCTION
  • II. RELATED WORK
  • III. SYSTEM ARCHITECTURE
  • IV. PROFILING TOOL
    • A.基准生成器
    • B.功能装配工
      • 1) 函数模板
      • 2) 下一点选择
      • 3) 模板评估
      • 4) 异常检测
      • 5) 模板拟合
      • 6) 模板选择
    • C.模型生成器
  • V. ESTIMATION TOOL
  • VI. RESULTS
    • A. 函数拟合
    • B.分层结果
    • C.网络一级的成果
    • D.业绩分析
      • 1) 平台评测
      • 2) 估计
  • VII. CONCLUSION AND FUTURE WORK

ABSTRACT

随着功能更强大但效率更高的嵌入式设备和加速器可用于深度神经网络(DNN),机器学习正成为边缘计算的一个组成部分。随着此类设备数量的增加,为特定应用寻找最佳平台变得更具挑战性。
对于应用程序开发人员来说,一个常见的问题是,在满足延迟和准确性要求的同时,找到DNN和设备的最具成本效益的组合。在这项工作中,我们提出了Blackthorn,一种基于分析模型的嵌入式Nvidia GPU分层延迟估计框架。我们为每一层提供准确的预测,帮助开发人员找到瓶颈,并优化DNN的体系结构,以适应目标平台。我们的框架可以快速评估和比较大量的网络优化,而无需构建耗时的执行引擎。我们在Jetson TX2和Jetson Nano器件上的实验结果显示,每层估计误差为6.104%均方根误差(RMSPE)和5.888%均方根误差(RMSPE),显著优于当前最先进的方法。在网络级别,测试的DNN的平均延迟错误低于3%。

I. INTRODUCTION

深度神经网络(DNN)被广泛用作视觉和语音处理解决方案等许多用例的关键组件。典型的视觉应用包括汽车行业[1]、[2]到医疗用例[3]、[4]以及以消费者为中心的应用,如谷歌镜头。直到几年前,需要计算的DNN一直在云中执行,需要稳定的网络连接。嵌入式设备的能力,如图形处理单元(GPU)在英伟达Jethon系列和硬件加速器,如英特尔的NCS2或GyrFalCon ListPress,使设计者能够在移动平台上直接运行更大的DNNs。由于无法确保稳定的网络连接,此类边缘设备在制造商对铁路或建筑行业等高级驾驶员辅助系统(ADA)感兴趣的领域发挥着重要作用[5]。

尽管嵌入式设备的功能越来越强大,但DNN的优化仍然是实现可行性能的必要条件。在产品开发中,计算机视觉和机器学习工程师通常对快速评估感兴趣,比如:他们的神经网络能否在特定的硬件平台上以给定的延迟运行?由于优化或更大的输入映像而改变参数对延迟有什么影响?为了满足资源有限的嵌入式平台上的延迟要求,使用了量化[6]、修剪[7]和分流连接[8]等压缩技术。修剪是一种减少单个层大小的技术,即减少一层的过滤器数量。另一方面,分流连接将神经网络的较大部分(如MobileNet V2[9]中使用的多个剩余块)替换为更小、更有效的块。然而,分析和比较不同的设置,例如应用于多个DNN体系结构的多个规模的不同优化和压缩技术,通常非常耗时。它通常会导致对网络进行重新培训,大多数平台在执行之前都需要一个构建或编译步骤来实现最佳性能,从而增加了测试单个网络的时间。这个编译步骤通常需要几百秒,显然超过了推理时间,对于最先进的网络来说,推理时间在几十毫秒的范围内。

为了跳过耗时的编译步骤,人们提出了基于分析或统计模型的DNN延迟预测技术。它们的目标是大型桌面级GPU[10],[11]嵌入式中央处理器(CPU)[12],但不是更强大的嵌入式设备。
为桌面GPU设计的方法(10)依赖于英伟达系统管理接口(NVIDIA SMI),这在移动GPU上不可用。另一方面,CPU具有数量少得多的并行计算单元,允许线性模型准确预测延迟[12]。
使用白盒方法为特定应用集成电路(ASIC)或现场可编程门阵列(FPGA)设计的评估框架依赖于底层硬件的知识[13],[14]。这些信息通常不适用于现成的嵌入式平台。

收集数据以建立估算模型对于实现高精度至关重要。由于编译网络体系结构需要数百秒,因此在多个维度(例如,输入通道的数量以及输入的宽度和高度)的每个维度上都有超过103个可能点的密集设计空间基准是不可行的。在一台设备上采用简单(密集)的方法可能需要数百年的时间。使用一组减少的预先选择的点来改进实现,可以将基准测试时间减少到几周。然而,我们必须仔细地选择这些点,以避免在推理时监督模式。像[10]这样的一些实现使用从最先进的卷积神经网络(CNN)获得的层数据集。虽然速度很快,但由于样本数量较少,对不可见和不常见层的泛化是一个很大的问题。

为了克服上述局限性,填补嵌入式GPU平台的空白,我们提出了Blackthorn,一种针对嵌入式Nvidia GPU上CNN的分层延迟估计框架。我们通过选择提供最多信息的基准点来消除数据收集问题,从而最大限度地减少所需的测量。
我们使用基于函数模板的分析层模型来提高估计器的泛化能力,同时保持底层数据集稀疏。据我们所知,这也是第一个将一小部分函数(即阶跃函数和线性函数)映射到测量的延迟以生成分层模型的工作。Blackthorn可用于评估网络优化的效果,指导压缩技术更好地利用平台,例如平台感知修剪,以及快速网络评估(网络架构搜索或NAS)。

在本文的上下文中,“平台模型”一词总是指硬件和所提供框架的特定版本的组合,例如带有Jetpack 4.3的Nvidia Jetson Nano。
具体而言,本文的主要贡献如下:

  • Blackthorn,一个基于模型的框架,用于估计嵌入式Nvidia平台上卷积神经网络的执行时间;
  • 基于线性函数和阶跃函数组合的分析方法的估计方法;
  • 通过找到优化的测量点,从而最大限度地减少测量点的数量,快速进行平台基准测试。

论文的其余部分组织如下。第三节描述了我们的总体架构,第四节给出了更多细节。第六节给出了评估结果以及与最新技术的比较,第七节给出了结论。

II. RELATED WORK

最近,一些研究已经发表,评估了各种硬件平台上常见DNN的性能,帮助开发人员根据自己的需求选择最佳目标平台。DawnBench[15],[16]是一个基准套件,用于测量主要针对云和服务器相关硬件的培训和推理时间。在EMBench[17]中,在更广泛的平台上测试了多个最先进的DNN,包括台式GPU(Nvidia RTX 2080Ti)、嵌入式GPU(Nvidia Xavier)、专用DNN加速器(Intel NCS2),以及移动和服务器CPU。
它们还提供了不同层(例如,卷积层、完全连接层和池层)在所选平台上的表现。事实证明,对于特定的层类型,一些平台比其他平台更有效。虽然卷积层总是占用最多的时间,但它们在总运行时间中所占的份额从65%到89%不等。MLPerf[18]是一个行业支持的基准测试套件。它定义了一套规则和最佳实践,实现了跨不同硬件平台的公平和可比基准,并提供了一个包含多个平台上不同网络推理时间的广泛数据库。然而,所有这些基准测试套件都有一个缺点,即当调整输入图像或某些层的大小(例如,通过修剪网络)时,它们无法预测推断时间

DNN的层级建模是填补这一空白的一种方法。创建图层模型的简单方法取决于图层的计算数量。Rouhani等人[19]将层的数量和每层神经元的数量作为输入,并执行微基准测试,以估计某些操作的成本(例如,多重添加和激活功能)。一个更高级的框架是古[11]。它使用基于获取输入、执行计算和将输出写入本地内存的时间的分析模型,对单个层的执行时间进行建模。计算模型基于CuDNN中实现的启发式,因此,它不能用于估计Nvidia GPU以外的其他平台。NeuralPower[10]提出了一种基于多项式回归模型的估计方法。它将Nvidia TitanX上一组CNN(AlexNet[20]、VGG16[21]、Nin[22]、Overfeat[23]和CIFAR10-conv6)的估计误差从23.12%降至7.96%,与古地震相比,卷积层的均方根百分比误差(RMSPE)从58.29%降至39.97%。NeuralPower还包括功率和能量估算模型。但是,它依赖于英伟达系统管理接口(SMI),在Jetson平台上不可用。前面的[12]介绍了使用线性回归模型的类似方法。它的目标是嵌入式CPU平台,如Raspberry Pi3和Odroid-XU4,测试网络的平均误差为3.24%。MLPAT[14]是一种白盒方法,用于在芯片架构级别估计机器学习加速器的功率、面积和时间。他们报告TPU-v1的误差小于10%。类似的方法是DNN芯片预测器[13],一种针对FPGA和ASIC机器学习加速器的分析性能估计器。在几个DNN模型、硬件架构和数据流中,最大预测误差为17.66%

除了神经网络的延迟和功率估计,人们还投入了大量精力来预测较低抽象级别的性能和功率。在GPU上,每个神经网络都被分解成多个内核序列,其中每一层由一个或多个单独的内核组成。在[24]中,作者提出了一个模型,用于预测从多个基准测试套件中提取的一组GPU内核的执行时间和功耗。开发的模型基于随机林方法,只使用与架构无关的特性。对于服务器级GPU,预测执行时间的平均绝对百分比误差(MAPE)在8.86%到13.86%之间。然而,在消费级GPU上,由于不支持设置固定的时钟频率,MAPE增加到52%。[25]分析并建模了启用的动态电压和频率缩放(DVFS)对估计GPU内核性能的影响。这些模型基于对不同内核的执行管道和内存访问的详细研究。在一组12个GPU内核和49个频率设置中,报告的MAPE为3.8%。

III. SYSTEM ARCHITECTURE

整个系统架构如图1所示。
分析工具基于单个层和层组合的微观基准构建平台模型,例如堆叠卷积和池层。在运行时确定特定的基准点可以让我们找到功能拟合的显著预期改进点,从而有效地减少所需要的测量。因此,分析工具的总体运行时间也会减少。基准生成器负责管理测量点,并与选定的后端通信。

分析工具使用与特定于平台的后端通信的简单平台接口从设备请求延迟测量。该后端始终依赖于制造商提供的当前可用的优化器和推理引擎。我们的实验目标是英伟达Jethon家族的嵌入式GPU。因此,我们在这项工作中依赖TensorRT。然而,在未来的工作中,其他平台的后端可以很容易地插入。

分析工具的输出是不同层、设备和平台的估计模型的集合。估计工具读取给定的网络描述,并根据先前生成的估计模型预测推断时间。

在第四节中,我们描述了我们分析平台的方法,并解释了模型构建者如何使用这些结果来创建评估模型。

IV. PROFILING TOOL

分析工具(图1)由三个主要组件组成:函数装配器、基准生成器和模型生成器。在下一节中,我们将更深入地解释各个模块以及我们评测嵌入式Nvidia GPU平台的方法。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第1张图片
图1。 系统架构概述:分析工具(1)基于使用特定于供应商的推理框架(2)从平台获得的测量结果构建估算模型。然后,估计工具(4)利用得到的估计模型(3)来预测网络的推理时间。

A.基准生成器

基准测试生成器管理与硬件平台的通信,以构建和执行一个层,并收集延迟测量值。然后,这些数据被用作功能拟合模块的输入。我们利用CUDA运行时API[26]中包含的事件管理工具来测量各个层的推断时间。由于英伟达JETSON器件是通用器件,所以单个层的推理时间不像使用专用集成电路(ASIC)上构建的专用神经网络加速器那样具有确定性。图2显示了两个不同层的直方图,每个层覆盖500个单独的运行。我们使用一组500次测量的中值来补偿此处引入的不确定性。因此,我们的模型估计平均给定神经网络的运行时间。由于上限在某些应用中可能很重要,我们记录了其他统计指标,如第75百分位和第97.5百分位,以便在未来的扩展中为上限建立估计模型。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第2张图片
图2。 两个样本直方图显示了多次运行同一层时的不确定性行为。

B.功能装配工

功能装配工是仿形工具的核心元素之一。
图3展示了寻找表示层设计空间单一维度的模型的过程。设计空间的尺寸等于描述层的参数。在卷积层的情况下,设计空间的尺寸是:输入宽度win和高度hin、输入通道数din、滤波器数量k、滤波器内核大小_大小和步长s。一维模型建立在参数化函数模板之上,每个模板负责一种函数类型。在这项工作中,我们主要关注线性函数和阶跃函数,但可以轻松添加其他模板。

函数拟合的过程(图3)可以概括如下:首先,两个测量点初始化每个函数模板,每个模板可以容纳多组参数。然后装配工选择一个最佳的下一个基准点,并利用基准生成器通过平台接口请求测量。接下来,各个模板优化其参数集,以适应新的基准点。然后根据拟合误差对所有模板的参数集进行排序和过滤,只保留有希望的参数集。此过程将继续,直到保留一个带有单个参数集的函数模板。
我们依次在所有维度上运行function fitter,并将结果合并到每个层的模型中。第IV-C节详细描述了该过程。

【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第3张图片
图3。 功能选择和拟合的过程。蓝色框显示所有函数模板通用的组件。

1) 函数模板

在我们的工作中,我们使用了两个函数模板,一个用于线性函数,另一个用于方程1中定义的阶跃函数。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第4张图片
虽然拟合线性函数很简单,但阶跃函数需要注意。步长wstep连接到CNN层设计空间的一个维度,例如滤波器的数量或输入通道的数量。由于这些参数总是整数,wstep被限制为无符号整数值。有效地找到最佳匹配阶跃函数,我们通过两个起点用一组可能的阶跃函数初始化阶跃函数模板(见图4(1))。每个函数都有一个固定的步长(wstep∈ (8512),其中wstep是4的倍数),而其余参数在模板装配期间进行了优化(见第IV-B5节)。

【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第5张图片
图4。 步骤功能选择过程。(1) :初始化步骤安装程序模板。(2) -(4):增加额外的测量值会减小集合的大小,直到只剩下一个函数。

2) 下一点选择

最小化所需测量次数的一个关键部分是找到最佳的下一个点。虽然使用TensorFlow或PyTorch在桌面或服务器平台上执行网络通常很简单,但特定于平台的工具链在执行之前通常需要一些优化步骤。TensorRT在优化网络并将层映射到计算核心之前执行一些自我基准测试工作。这一过程比一个单层的推断要长三个数量级。因此,最小化测量次数对于在可行时间内完成基准测试至关重要。

我们寻找最佳下一点的方法在函数模板之间有所不同。对于阶跃函数,我们使用三种不同指标的组合:

  • 每个点U处不同的唯一功能值的数量,
  • 定义为每个点最大值和最小值之间的范围R,
  • 以及到已基准点D的距离

图5(a)解释了前两个标准。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第6张图片
图5。 下一点选择。(a) :定义范围和不同的函数值标准。(b) :阶跃和线性函数的最佳点示例。

然后将每组分数标准化为[0]范围− 1] 在总结之前:
在这里插入图片描述
其中,α、β和γ衡量单个度量,Usc是norm(U)的缩写,cstep是难度系数。最终分数再次正常化。网格搜索优化参数α、β和γ的值。因此,我们在收集的地面真实数据上运行拟合算法,并选择α、β和γ的值,以最小化终止拟合过程所需的平均迭代次数。
对于线性函数,我们只使用到之前点的归一化距离作为判定标准。
在这里插入图片描述
难度系数确保在选择下一个点时,更复杂的函数,即参数集集合较大的函数,将优先考虑。因为我们有函数模板,其中只有一个包含一组可能的选项(步骤函数模板),所以我们将clin=1,cstep=2。通过这种方式,我们尊重这样一个事实,即阶跃函数模板必须消除除一个参数集之外的所有参数集。最后,通过找到最高的总分来选择下一个分数。选择的下一个点是max的索引(max(scoresstep,scoreslin))。

3) 模板评估

由于模板可以包含一组可能的函数,我们必须对它们进行评估、评级和过滤,以找到描述数据的最佳模型。因此,我们根据误差平方和对每个模板的可能函数集合进行排序,例如,阶跃函数模板的一组d、wstep和hstep。误差eset i与单个参数集i相关,而en是特定测量点的误差(方程式(4))。向量eset包含每个模板的所有错误值,因此eset i∈ eset和eset∈ RK和我≤ k,其中k是模板的参数集数量。线性函数模板只包含一个参数集,因此k=1。

在这里插入图片描述
为了过滤集合中的参数集,我们应用了两个标准,阈值Te和比率Re。如果等式(5)的计算结果为真,则从集合中移除参数集。
在这里插入图片描述
在我们的实验中,我们使用一个固定的阈值Te和一个比率Re,随着迭代次数的增加,线性衰减,迫使函数选择终止。通过网格搜索超参数优化选择Te值以及Re的起始值和每次迭代的衰减,以最小化迭代次数。

4) 异常检测

【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第7张图片
图7。 步长为1且使用3×3滤波器的卷积层的一维阶跃函数拟合结果。(a) 在k上计算卷积层,win=hin=64,din=128。(b) 在din上评估卷积层,win=hin=64,k=1024。(c) Jetson Nano在少量输入通道中的线性行为。

当平台表现出意外行为时,会出现异常值(例如,参见图7(a)中所示的两个颠簸)。由于这样的点很容易破坏函数拟合过程,特别是当只使用几个点时,我们会检测并排除它们。我们将异常值定义为误差与所有其他点的误差显著不同的点。单个函数的每个点的误差为en(见第IV-B3节),向量e收集所有点的误差值,以使en∈ e、 每个点n处的误差与中值误差之间的中值归一化距离向量为

在这里插入图片描述
对于集合,我们可以收集误差矩阵E中的所有误差值,因此en,i是集合i的点n处的误差。因此,Ed包含中值归一化误差距离Ed n,i。当误差距离ed n,i大于当前集合中一半以上可能函数i的阈值thres时,我们将测量点n计为异常值:
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第8张图片
每次迭代后都会重复异常值检测,因为当可能的函数集变小时,异常值可以变回有效点。如果在早期迭代中,75%的可能函数投票支持一个点为异常值,则可能会出现这种情况。后来,由于没有很好地拟合额外的数据,这些75%中的大部分被删除。然后多数人可以转移,将异常值变回有效点。

5) 模板拟合

我们使用信赖域反射曲线拟合算法(TRF)[27]将模板与测量数据进行拟合。TRF算法基于[28]并针对稀疏问题设计。
在我们的例子中,拟合算法的输入由总共1024个点中的三到十二个数据点组成。
默认情况下,TRF算法将所有参数优化为浮点值。由于step函数模板中的step with约束为整数值(见第IV-B1节),我们必须调整该模板函数以进行曲线拟合。
等式8迫使步长朝向整数值。

在这里插入图片描述
我们使用nint()将舍入函数表示为最接近的整数。

6) 模板选择

将模板函数与测量数据拟合后,我们最终得到了多个可能的模板供选择。
类似于我们对函数集合进行排序的方法 在模板内部(第IV-B3节),我们使用误差平方和对模板本身进行排序。为了选择模板,即决定是使用线性函数还是阶跃函数,我们只使用比率Rt并比较每个模板集合的最佳参数集,即eset i=min(eset)。Rt的值通过研磨搜索来确定,从而使迭代次数最小化。为了方便起见,我们将模板j的误差定义为etplj=min(ej集)和etplj∈ 使etpl包含每个模板的最小错误。
ej集是对应于模板j的误差向量。与第IV-B3节类似,如果等式9的计算结果为真,我们将移除模板。当只剩下一个包含单个参数集的模板时,function fitter终止并保存生成的模型。
在这里插入图片描述

C.模型生成器

神经网络的设计空间是巨大的。对于单个卷积层,可以改变输入大小(宽度、高度和通道)、过滤器数量、过滤器大小以及步幅和填充设置。与卷积层相比,完全连接层(输入和输出神经元)和池层(轮询大小和步幅)的维度更少。为了解决这个多维估计问题,我们在每个维度上依次应用一维估计模型。在找到第一维度的模型后,我们估计每个模型参数,以跟踪它们在下一维度的变化。图6展示了为二维模型构建图形的过程。图6(b)显示了卷积层滤波器k的数量和输入尺寸din的模型

我们首先在一个维度上运行我们的函数fitter,保持其他所有内容不变。通过这种方式,我们获得了滤波器k数量的阶跃模型,其中参数d、w和h位于一个特定位置(hin、win、din、kernel_size、stride)(图6(a))。接下来,我们在不同的din值下运行fitter,这会产生多个略微不同的阶跃函数模型。通过在参数d、w和h上运行装配工,我们可以建立一个模型,描述这些参数如何随din变化。这一步的结果如图6(b)所示。该图表示的模型有两个输入,din和k,以及七个参数。通过对设计空间的其他维度重复这个过程,我们最终得到了卷积层的图模型。同样的过程也用于对其他类型的层进行建模,例如全连接层和池化层,尽管由于设计空间较小,但结果模型更简单。

对于卷积层和池层,我们不会在整个设计空间中以单个图形结束。一些维度,比如内核大小,通常很小(与din相比,典型的内核大小是1、3、5、7或11,可以是范围(3、1024)内的任何地方,甚至更大)。因此,我们不能在这样的维度上使用函数拟合器,因为拟合函数的点太少。因此,卷积和池层模型由多个子图组成,而完全连接的层可以用单个图表示。
算法1提供了函数拟合例程的高级视图,其中函数拟合1d对应于图3所示的过程。结果是一组经过进一步处理的拟合模板,以构建我们的模型图,如图6所示。

【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第9张图片
图6。 滤波器k的数量和卷积层的输入维度din的模型的示例图。我们首先在一个一维(a)中运行一个装配工,以建立一个图来模拟卷积层。

V. ESTIMATION TOOL

估算工具从ONNX[29]文件中读取神经网络描述,并提取各个层。如果可能,层融合,例如将卷积和ReLU(校正线性单元)层组合成一个层。层融合基于Nvidia提供的支持层融合列表进行[30]。使用之前生成的层级估计模型,估计工具预测每一层的推断时间。然后,所提供的神经网络的总运行时间由各层执行时间之和计算得出。

VI. RESULTS

在我们的实验中,我们使用了两个嵌入式Nvidia GPU,Jetson Nano(基于麦克斯韦体系结构)和Jetson TX2(基于Pascal体系结构)。两者都运行Jetpack 4.3,其中包括TensorRT 6.0.1和cuDNN 7.6.3。如果更新了其中一个库,我们必须重新运行我们的基准测试工具,以创建一个新模型来捕获可能的性能改进。我们使用TensorRT构建和执行引擎,以获得设备的最佳性能。此外,我们将每个设备的电源模式设置为最大,并禁用频率缩放。事实证明,保持频率缩放活动对性能和可重复性有负面影响,因为TensorRT在构建引擎之前包括一个内核计时和选择步骤。根据平台的体系结构和可用内核,CNN的低级表示可能会因不同的平台而改变。在计时和选择阶段修改频率可能会扰乱基准测试结果,导致次优推理性能。

嵌入式平台的典型用例涉及基于摄像头的应用程序,其中必须实时检测传入视频流中的对象,例如行人检测或基础设施监控。为了适应这些用例并实现尽可能低的延迟,我们在所有实验中将批处理大小设置为1。在批量较大的大型数据集上进行分类和目标检测通常在桌面和服务器级GPU上执行,不在本工作范围内。然而,将批量大小作为一个附加维度,将允许扩展到更大的批量大小。

以下各节分层介绍了我们的评估结果。首先,我们评估我们的函数拟合和模板选择方法。然后我们继续在层级别上测试结果,最后在完整的CNN上测试我们的框架。
在最后一节中,我们讨论了与在硬件平台上执行神经网络相比,使用blackthorn估计延迟的好处。

A. 函数拟合

我们创建层和网络模型的方法依赖于检测函数类型,并将函数与单个维度的测量值相匹配。因此,为了获得精确的模型,我们需要高可靠性和小误差。我们在Jetson Nano上捕获了64个完整的一维扫描作为地面真实数据,以评估我们的功能拟合模块。每次扫描由1024次测量组成。该数据集的误差为2.17%的平均绝对百分比误差(MAPE)和0.341ms的平均绝对误差(MAE)。图7显示了在卷积层的单个维度上拟合阶跃函数的两个示例,以及每个点的绝对和相对误差。对于这种尺寸,我们通常需要8到14次测量,其中较大的台阶宽度(图7(a)中的台阶W=32)比较小的台阶宽度(图7(b)中的台阶W=8)需要更少的测量点。
图7(b)(蓝色)中的地面真相显示了两个凸起。

在这两种情况下,台阶宽度都不会改变,但测量结果并不遵循清洁台阶功能。我们的模型没有捕捉到这些不规则现象。然而,这类截面的最大误差仍在5%左右,保持了影响在总体上精度很小。图7(c)显示了一种特殊情况,其中1024个滤波器应用于不同数量的输入通道。除了这两个凸点之外,对于少量输入通道(输入通道数<20),地面真值也表现出线性行为。同样,我们的模型没有捕捉到这样的特征。忽略小规模特征有两个主要原因。首先,在估计精度和模型复杂度之间总是存在权衡。包括这样的小规模特征对估计精度几乎没有影响,但代价是大大增加了模型的复杂性。随着模型复杂性的增加,描述它的参数的数量通常也会增加。因此,更多可调参数将需要更多测量,这与我们最小化所需基准点数量的目标背道而驰。

图8显示了与图6(b)相对应的两个尺寸的拟合结果。整个平面由10242个独立点组成,其中112个用于构建所示模型。图8(b)显示了768个随机抽样位置的相对误差。尽管最大误差约为5%,但大多数误差在±1%范围内。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第10张图片
图8。 输入大小为32×32的卷积层的二维估计结果。(a) :通过卷积层模型进行二维切片。(b) :768个测量点的相对误差。

B.分层结果

我们使用平均绝对误差(MAE)、均方根误差(RMSE) 和 RMSPE来评估单层的估计模型。表1显示了1000个卷积层的随机样本的结果,表2包含了[10]中使用的同一组层的结果。
这些都是池、卷积和完全连接的层,可以在AlexNet[20]、VGG16和VGG19[21]、更快的R-CNN[31]、NiN[22]、CaffeNet[32]、GoogleNet[33]和Overfeat[23]中找到。由于我们的工作侧重于嵌入式平台,我们使用了不同于表2中提到的最先进方法的目标设备。然而,TITAN X和JETSON TX2都是基于英伟达PASCAL体系结构。它们之间的主要区别在于可用计算核的数量和可用内存。因此,由于其相对性质,结果应在均方根百分比误差(RMSPE)方面具有可比性。

表1。 随机选取1000个卷积层的估计结果。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第11张图片

与表2相比,表1中显示的误差略大。这种差异可以解释为随机测试集也可以包含广泛的层,例如,输入512×512×1024和1024个3×3内核的卷积,以及矩形输入,例如64×512。这些层通常不用于实践,但包含它们表明了我们模型的泛化能力,并允许我们预测任意大小层的运行时间,例如,具有任意数量输入通道和滤波器的卷积层。因此,我们可以预测层级优化(如修剪)的影响,其中生成的层的大小可能与常见选择(例如,过滤器数量不均匀的层)非常不同。此外,我们可以确定给定Nvidia平台的帕累托最优修剪目标。
这些点位于阶跃函数平台的右端,该平台由过滤器的数量描述,稍微多一些修剪不会减少延迟,但额外的过滤器会增加延迟(图9)。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第12张图片
图9。 帕累托最优剪枝目标

表1中的最大百分比误差(MAXPE)在卷积层具有少量输入通道的情况下出现。在切换到阶跃函数之前,这些区域的推理时间遵循线性函数(图7(c))。然而,引入的绝对误差通常低于0.25ms,并且这种层在神经网络(处理图像数据的输入层)中只存在一次。

C.网络一级的成果

利用上面的分层估计结果,我们可以估计整个神经网络的延迟。在表3中,我们将我们的结果与当前的最新技术进行了比较。我们的方法比目前最先进的方法至少高出6倍。然而,表2显示,层水平上的估计误差大于网络水平上的估计误差。这种差异是在汇总所有估计结果时误差相互补偿的结果。

表2。 NeuralPower中使用的测试集的估计结果[10]。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第13张图片
表3。 与最新技术相比,完整神经网络的估计结果
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第14张图片

图10显示了VGG16的测量运行时间和估计运行时间之间的比较,将其分解为我们建模的所有层。剩下的层(单ReLu和随机播放)的总运行时间为0.06ms,可以忽略不计。与[10]相比,我们估计的运行时与测量值更匹配。第一卷积层(conv1-1)的较大误差可以用Jetson Nano在少量输入通道中的线性行为来解释(见图7(c))。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第15张图片
图10。 Nvidia Jetson Nano上VGG16的分层运行时预测。

请注意,Jetson Nano上VGG16的总潜伏期比NeuralPower中报告的值低两倍多,单个层的潜伏期比NeuralPower快三倍多。这可以解释为[10]中的作者使用Tensorflow进行测量,这取决于平台和网络或层的大小,比我们使用的纯TensorRT实现慢三到八倍。

D.业绩分析

在本节中,我们将讨论框架在评测时间(对平台进行基准测试和构建层模型所需的时间)和估计时间(预测DNN运行时所需的时间)方面的性能。

1) 平台评测

分析平台以获取构建模型所需的数据通常是一项非常耗时的任务,尤其是在设计空间巨大的情况下。通过最小化所需的测量,我们可以有效地减少总体运行时间。在Jetson Nano上,Blackthorn分析工具需要6.5天来完成平台基准测试和层模型构建。这一次,由于卷积层的维数,a主要由卷积层控制。Blackthorn通常要求每个维度进行8-12次测量,因此卷积层的测量总数约为15000次,其他类型的测量总数为5000次。如第VI-A节所述,我们的模型适用于整个设计空间,包括不常见的层尺寸。通过将我们自己局限于普通的层面,我们可以将这个过程加快三倍。然而,这将导致失去泛化能力,消除预测优化技术效果的可能性(修剪通常会导致最先进的DNN中未使用的层维度)。

2) 估计

正如引言中所述,在嵌入式平台上执行神经网络通常需要编译或构建步骤。在英伟达JeTeNT设备和TunSoRT工具箱的情况下,在启动推理会话之前必须建立一个可执行引擎。每个实验都需要这个步骤,这涉及网络架构的变化,包括由于剪枝或评估输入图像的不同大小而导致的各个层的大小。在四次测量中,我们将TensorRT工作区大小设置为1GB,并禁用了层定时缓存。表4显示了Jetson设备和Blackthorn估计器上不同神经网络执行时间的比较。总时间包括构建一个引擎、运行与我们的基准测试工具相同的500个推理周期以获得平均延迟,以及TensorRT工具包引入的额外开销。结果表明,制造引擎是运行单个实验所需的主要时间。

表4。 比较Jetson设备上最先进的神经网络的构建和执行时间,以及使用Blackthorn估计器时的估计时间。
【Paper Reading】Blackthorn:嵌入式Nvidia平台上CNN的延迟估计框架; Blackthorn: Latency Estimation Framework for CNNs_第16张图片

为了运行Blackthorn估算工具,我们使用了一个现成的笔记本电脑,带有8GB RAM和一个i7-8650U处理器。估计给定CNN的延迟取决于执行层的数量,其中一个层需要大约20µs。将估计时间与表4中给出的神经网络的总执行时间相比,我们的估计工具至少快5倍∗ 104 . 这使我们能够快速评估许多不同的网络配置,而无需访问硬件平台。

VII. CONCLUSION AND FUTURE WORK

我们介绍了Blackthorn,一种嵌入式Nvidia GPU上的神经网络延迟估计框架。我们建立了基于线性和阶跃函数的分析模型,逐层预测CNN的推理时间。在一组八个CNN上,我们在Jetson Nano和Jetson TX2上的平均估计误差分别为2.547%和2.843%。在分层层次上,我们将RMSPE分别降低到5.888%和6.104%,这明显低于其他最先进的作品。我们的层级结果表明,我们的框架能够准确预测CNN上的变化对优化(如修剪或分流连接)和不同大小输入造成的延迟的影响。这也允许我们选择最佳的修剪目标,因为在一个步骤之前的那一点最有效地使用了可用的核心。Blackthorn允许开发者在不需要访问硬件平台的情况下,在大约1毫秒内估计CNN的延迟。这至少是5∗比直接在嵌入式Nvidia GPU上构建和执行CNN快104倍。

作为下一步,我们计划扩展我们的框架,以包括更多类型的层以及其他嵌入式平台,并使用相同的分析方法整合电力和能源完善的评估。我们相信Blackthorn可以帮助开发人员快速为他们的用例选择最佳的平台和优化,在后续培训或再培训上花费更少的时间和金钱。

你可能感兴趣的:(Paper,Reading,Blackthorn,嵌入式Nvidia,延迟估计框架啊,CNN)