阅读论文 DNNShifter:一种高效的边缘计算DNN剪枝系统

1、摘要

        生产高质量 DNN 模型通过训练数百万个具有显着资源占用的 DNN 参数来实现高推理精度。这对在网络极端边缘运行的资源提出了挑战,例如计算和内存资源有限的移动设备和嵌入式设备。        

        为了解决这个问题,模型被修剪以创建这些设备的轻量级、更合适的变体。现有的修剪方法无法提供与未修剪的同类模型相似的质量模型,而无需显著的时间成本和开销,或者仅限于离线用例。我们的工作在保持原始模型准确性的同时迅速推导出合适的模型变体。当系统和网络条件发生变化时,模型变体可以快速交换,以匹配工作负载需求。

        DNNShifter,这是一种端到端的 DNN 训练、空间修剪和模型切换系统,解决了上述挑战。

        DNNShifter的核心是一种新颖的方法,它使用结构化修剪修剪稀疏模型——将非结构化修剪的准确性保持优势与结构化修剪的运行时性能改进相结合。DNNShifter 生成的剪枝模型变体的大小较小,因此比密集和稀疏模型更快,这使得它们适用于边缘的推理,同时保持与原始密集模型几乎相同的精度。DNNShifter 生成一组模型变体,可以根据操作条件快速交换。

        DNNShifter 产生的修剪模型变体比传统的训练方法快 93 倍。与稀疏模型相比,修剪后的模型变体小 5.14 倍,推理延迟加速 1.67 倍,对稀疏模型精度没有妥协。此外,DNNShifter 切换模型的开销降低了 11.9 倍,内存利用率比现有方法低 3.8 倍。

代码: https://github.com/blessonvar/DNNShifter 

2、引言

        深度神经网络 (DNN) 是机器学习 (ML) 模型,由一系列层组成,例如卷积和线性。由于该模型具有较高的精度,在目标检测和图像分类中的应用。

VGG-16: 

神经架构搜索 (NAS):

挑战 1 - 快速生成一系列适合不同操作条件和异构边缘资源的 DNN:运行在边缘的 ML 应用程序将需要执行预训练的 DNN。使用 NAS 等方法训练针对边缘资源量身定制的 DNN 是不合适的,因为它们既耗时又耗能 。或者,使用知识蒸馏压缩预训练的 DNN 基于试错或量化,这需要在边缘环境中可能不可用的特殊硬件或库。

挑战 2 - DNN 模型的空间压缩,同时保持准确性:DNN 压缩方法,例如结构化修剪或重新参数化 ,可以显着减少模型的大小。然而,这些方法消除了对模型精度至关重要的参数。例如,卷积层对剪枝很敏感,即使是很小程度的剪枝也会对精度产生负面影响。因此,在使用计算成本高的方法修剪后微调压缩模型以恢复精度,这可能占用原始训练时间的 3 倍 。

挑战 3 - 压缩 DNN 的按需切换以适应动态操作环境:边缘使用的 DNN 需要通过按需切换模型来无缝地适应不断变化的条件以匹配模型推理性能阈值。然而,现有的方法将以分钟[7]到小时[15]的顺序产生停机时间,以识别和部署满足所需性能[10]的合适模型。

 提出了一种利用生产质量稀疏模型实时生成空间压缩模型变体组合的框架DNNShifter。这是通过提出一种新方法来实现的,该方法使用高度稀疏模型的结构化修剪。这导致修剪后的模型具有较小的资源占用和与原始稀疏模型相同的模型精度。这种方法与通常报道的结构化剪枝方法根本不同,后者修剪预训练的密集模型并对准确性产生负面影响。我们的方法生成的模型组合可用于适应一系列操作运行时要求。这是通过在运行时从一个模型切换到投资组合中的另一个模型的低开销来实现的。DNNShifter 做出了以下三个研究贡献:

1)时间和资源高效的引导 DNN 模型训练、修剪和运行时切换管道,创建空间修剪模型变体的组合,可与使用 NAS 的典型 DNN 模型训练例程相媲美。DNNShifter 生成剪枝模型变体的组合,比最先进的方法快 93 倍。

2)一种新颖的剪枝方法来压缩高度稀疏的 DNN 模型,从而产生准确和空间紧凑的剪枝模型变体,适用于推理延迟较低的边缘资源。DNNShifter 剪枝模型变体小至 5.14 倍,CPU 和 GPU 推理延迟分别快 1.67 倍和 1.45 倍。此外,与现有的结构化剪枝方法相比,修剪后的模型变体可以更快地获得几个数量级,并且对于给定的模型大小具有更高的准确度。

3)一种低开销的方法,从一种模型变体切换到边缘的另一个按需,以匹配一系列操作运行时要求。DNNShifter 切换模型变体的开销比现有方法低 11.9 倍,内存利用率低高达 3.8 倍。

3、相关工作

DNN压缩方法旨在通过减少模型的计算和内存利用率来提高模型的资源效率,同时保持模型的准确性。模型修剪、量化和知识蒸馏等技术利用了 DNN 的不同属性,这些属性固有地有助于压缩。

1. 非结构化修剪和稀疏模型

彩票假设(LTH):

非结构化剪枝掩码通过将 DNN 的权重设置为零来选择 DNN 的单个参数。现有的方法,如彩票假设(LTH)表明,在训练早期通过非结构化修剪引入稀疏性可以导致与密集模型相似或更高的最终精度。此外,使用合适的硬件和稀疏矩阵库,稀疏模型可以加速模型训练,从而减少时间和能源成本。LTH的概念激发了大量非结构化修剪方法。然而,资源受限的环境通常不支持库来利用稀疏模型的任何性能优势。此外,稀疏模型中的归零权重不会减少内存占用,而是创建不规则的内存访问,从而降低传统 CPU 上的推理性能。非结构化剪枝研究通常侧重于提高稀疏模型精度,而不是考虑计算性能考虑。DNNShifter 以纪律的方式删除这些模型中的稀疏数据结构。换句话说,在空间上去除了归零的权重,从而减少了模型大小和推理延迟,同时保持了与原始稀疏模型相同的精度。

2、结构化修剪和重新参数化

                    

如图所示,结构化剪枝在空间上去除了一组参数,如卷积滤波器。排序算法用于识别如果删除,对精度损失贡献最小的过滤器。结构化修剪删除了这些过滤器,从而产生内存、能量和推断足迹较低的模型。然而,结构化修剪非常耗时,因为:在给定数千个修剪组合和微调修剪后保留的参数以恢复丢失的准确性在修剪时。使用结构化修剪无法实现按需压缩。DNNShifter 通过利用对稀疏模型的以下观察实现了(接近)实时的结构化修剪:1、归零的权重本质上被排序为可修剪。2、修剪归零权重不会降低模型的准确性。此外,结构化重新参数化可以与结构化修剪相结合,通过修改目标设备的底层架构来进一步优化模型。例如,RepVGG 将 ResNets 重新构建为类似 VGG 的架构并提高 GPU 利用率。

RepVGG:

ResNets:

3、动态 DNN

动态 DNN 通过针对不同的操作条件调整 DNN 来提高推理效率 。跳过层和连接或早期退出等方法以推理精度为代价降低了推理延迟。尽管动态 DNN 提供了在单个模型中使用任何子模型的优势,但由于整个模型在内存中运行,即使对于一个小的子模型,也没有空间优势。DNNShifter 提供推理和空间优势,并利用多个稀疏模型的内存中压缩来促进模型的按需切换以适应运行时要求。

4、其他压缩方法

量化和知识蒸馏,用于 DNN 压缩。

量化减少了 DNN 中参数的位精度,以减少模型大小并加速推理。然而,量化通常应用于 DNN 的所有参数,这会导致精度损失。此外,量化模型可能需要专用硬件以更低的精度进行推理。

知识蒸馏将知识从更广泛的教师转移到较小的学生模型。学生模型实现了与教师模型相似的精度,在空间上更小。然而,知识蒸馏并不容易自动化服务于各种模型架构,并且只产生一个单一的学生模型,而不是适合不同操作条件的模型组合,例如特定的内存预算。因此,知识蒸馏不适用于异构边缘环境中看到的部署的不同资源需求。

尽管现有的压缩方法有一系列好处,但它们提出了一个或更重要的限制,禁止它们按需部署生产质量 DNN 到边缘设备。DNNShifter利用非结构化修剪的准确性保持优势,同时在各种模型大小上结构化修剪的运行时性能改进,以适应边缘环境中看到的不同操作条件。DNNShifter创建了一个有效的训练、修剪和推理管道,与表中的其他DNN压缩方法相比,该管道被突出显示。DNNShifter 框架和框架生成的模型满足在边缘环境中部署 DNN 的要求。

4、DNNShifter

DNNShifter 是一个可用于资源受限的环境的框架,例如在网络边缘或计算能力相对有限的极端边缘。该框架按需修剪生产质量 DNN 模型,并提供自动运行时模型切换以推理受限资源。DNNShifter 可以被系统管理员用于管理 ML 应用程序开发、部署和模拟环境的生命周期,以应对以下挑战:

1. 快速获得生产质量模型

DNNShifter 提供了大型稀疏 DNN 模型的结构化修剪,这些模型无法在硬件有限的资源上运行。该框架在没有显着精度损失的情况下为目标资源导出修剪后的模型变体,同时在较小的货币、计算和能量预算下实现这一点。这与使用 NAS或参数微调 的现有方法形成对比。

2. 硬件不可知的自动化模型修剪

DNNShifter 创建了一组具有不同性能特征(例如模型大小、速度和准确性)的硬件独立修剪模型变体适合所有部署条件。模型变体可以根据操作条件部署在不同的资源层,例如资源可用性和性能目标。DNNShifter采用的方法是硬件不可知的,并不特定于专门的硬件,如GPU。

3. 实时模型在运行时切换

一旦模型组合部署在目标硬件上,DNNShifter 利用修剪模型变体的组合来选择适合给定操作条件的模型变体。该框架有助于适应模型以适应低开销的操作条件的变化。DNNShifter 中的底层方法通过通货膨胀(激活修剪后的模型)和放气(进一步压缩和停用修剪后的模型)切换活动模型以从投资组合中推断出操作需求。

传统的剪枝方法以多种方式受到限制:(a)在获得初始剪枝模型后,许多需要进一步耗时的微调 ,(b)许多依赖硬件加速器,(c)剪枝通常需要昂贵的试错过程来确定给定目标资源的最佳剪枝模型 。当前的剪枝方法不适用于关键场景下的实时执行,例如设备上的视频分析,这需要亚秒的延迟来保持最佳的服务质量

DNNShifter 的开发通过利用以下两个观察结果来解决上述限制:

1)聚合和修剪非结构化稀疏性:

        在非结构化修剪过程中,从稀疏数据结构聚合参数将导致完全可修剪的数据结构,直接影响模型大小和推理延迟。上图突出显示了这一观察结果。在非结构化剪枝过程中,卷积核的参数设置为零值。表示内核的数据结构(矩阵)可能是稀疏的(并非所有值都为零),因此,不能在不影响准确性的情况下修剪(显示为不可修剪的数据结构)。通过使用非结构化剪枝中使用的参数排序算法,在剪枝过程中获得零矩阵。具有完全零值的数据结构是可修剪的并且,通过使用结构化修剪,可以从模型中删除。这导致减小模型大小,从而减少推理延迟。DNNShifter利用这一观察结果,在不降低模型精度的情况下使用结构修剪来修剪稀疏模型。由于模型精度被保留,DNNShifter 在修剪后不需要微调。

2) 进一步压缩剩余的模型稀疏性:

        在运行时,可以进一步压缩来自投资组合的非活动模型以减少开销。经过结构化剪枝后,剩余的不可剪枝的数据结构包含稀疏矩阵(上图)。稀疏矩阵具有重复和可压缩的数据模式(权重为零)。因此,该模型可以(降级)编码为较小的表示,而模型不活跃。例如,当从云/边缘服务器下载模型组合以目标设备硬件时,可以应用这种防御,或者在运行时,到没有主动推断投资组合中的模型。DNNShifter使用这一观察结果在运行时将整个防御模型组合加载到内存中。当推理需要特定的模型时,它会实时解码(膨胀)。这允许模型切换响应边缘的不同操作条件,并且明显快于现有方法。

4、框架概述

DNNShifter 框架分三个阶段运行,如下图所示:

阶段 1:具有非结构化排名的生产质量 DNN 的离线训练 - 在这个阶段,模型训练和参数排名被组合成一个迭代训练过程。采用非结构化剪枝方法将生产质量DNN模型作为输入。然后,通过非结构化排序方法在每个训练迭代之间屏蔽模型不显着的参数,以生成具有稀疏数据结构(称为稀疏模型)的模型变体(每次迭代一个)的组合。

第 2 阶段:从稀疏模型到修剪模型的按需转换 - 通过结构化修剪修剪修剪稀疏模型的组合,以获得可以部署在目标硬件资源上的修剪模型变体。

第 3 阶段:运行时模型切换 - 部署、监控投资组合,并通过在运行时切换活动修剪模型变体来适应不同的操作条件。

阶段1: 模型训练和参数排序

        该阶段使用非结构化排序算法从生产质量 DNN(密集模型)中生成高度稀疏的模型,同时保持可行的模型精度。需要注意的是,从该阶段获得的稀疏模型将包含模型参数中的零值。然而,由于它们没有从数据结构中删除,直到下一阶段,稀疏模型的大小不小于密集模型。选择非结构化排序算法结构化修剪消除了训练后微调以恢复模型精度的需要。

此外,这种训练迭代之间的排序方法有两个优点:

1. DNNShifter 简化了模型参数排名,以便用户不需要排序算法的专家知识,也不需要配置额外的超参数。

2. DNNShifter提高了模型剪枝流水线效率。

DNNShifter通过在训练迭代中集成排名,以三种方式提高修剪管道的效率:

(i)管道完成之前可以实现的最终模型精度。因此,如果无法实现目标精度,则可以使用新的超参数提前重新初始化管道。

  (ii) 在可能相对资源受限的目标硬件资源上消除了计算密集型任务的微调。因此,DNN 模型的快速按需部署是可行的,因为不需要进行微调。

   (iii) 可以生成一组修剪模型,通过一次运行修剪管道来适应目标硬件资源的一系列操作条件。这允许调整在运行时部署的模型。

DNNShifter 实现了 Open Lottery Ticket 假设 (OpenLTH) 框架 1 的修改版本。训练过程没有进行任何修改。相反,DNNShifter 添加了结构化修剪和模型切换阶段(阶段 2 和阶段 3)。

Lottery Ticket 假设 (LTH) 阐明了可以从密集模型中获得高精度稀疏模型(如图 4 所示),并由具有权重倒风的迭代幅度修剪 (IMP) 支撑方法 DNNShifter 也采用了。选择带回转的 IMP,因为它在所有可用的模型和数据集上都表现良好。替代方案,如SynFlow,只对特定的模型或数据集表现良好。

图 4 说明了 DNNShifter 使用 LTH 生成稀疏模型的阶段 1。该模型经过训练,然后在每次迭代中由 IMP 算法排序。每次迭代得到的稀疏模型被保存到稀疏模型的中间组合中,这将在下一节中修剪。每次迭代的稀疏模型作为输入提供下一次迭代。模型稀疏性随着迭代次数的增加而增加,直到用户定义的限制。

阶段2:将稀疏模型转换为修剪模型

模块1 -模型预处理器:该预处理模块通过融合卷积和批处理归一化层来简化DNN模型架构。

模块 2 - 稀疏分析器:该模块建立在图 2 所示的方法之上,该方法识别具有完全零值的卷积核。然而,如果没有进一步的规划,这些内核就无法删除,因为 DNN 的架构自然不适合单独删除内核。相反,如果可以删除通道中的所有内核,则可以删除内核。为此,进一步索引具有零值的所有内核的通道以创建可修剪的卷积通道。

模块 3 - Prune Planner:在现有的文献中,卷积通道迭代地从模型中移除以最小化精度损失。然而,这是低效的,原因有两个。首先,修剪通道的计算量很大,因为当删除可修剪通道时,将重建包含大型多维参数数组的整个卷积层。其次,每个可修剪的通道都依赖于下一个卷积层的通道,这也将被重建。因此,修剪顺序会产生开销。DNNShifter 打破了这种依赖关系并同时删除了所有可修剪的通道。这是通过修剪规划器模块实现的,该模块创建了可修剪通道索引的并发数据结构。

模块 4 - 模型剪枝器:模块 3 中的剪枝计划用于实时从中间投资组合中修剪稀疏模型。该模块通过在没有可修剪通道和通道偏差的情况下重建每个卷积层来执行修剪计划。由于模块 3 提供了所有可修剪的通道,该模块在单个批处理操作中修剪所有进出通道,显着减少了计算开销并实现实时修剪。在修剪规划后,该模块并行执行,以同时修剪每个卷积层,形成一系列修剪层 L',替换原始未修剪层 L。

模块 5 - 模型分析器:该模块对修剪后的模型进行基准测试以获得指标:准确性、推理延迟、模型大小和运行模型所需的最大内存。这是使用测试数据集实现的。与每个模型相关的指标存储为下一个模块的元数据,用于从投资组合中选择合适的修剪模型。

模块 6 - 投资组合后处理器:生成 npruned 模型的投资组合。该模块细化投资组合,最终仅包含具有不同性能特征的 m 个修剪模型 (m ≤ n),(去除了具有相似特征的修剪模型)。

阶段3:进一步的压缩和模型切换

DEFLATE压缩算法:

第一阶段训练生产质量DNN模型的组合,然后通过结构化剪枝进行压缩在第二阶段。在这第三阶段,模型被进一步压缩,而未使用(不活跃)。DNNShifter 使用无损 DEFLATE压缩算法将其部署到目标设备的存储之前,将修剪模型的投资组合编码为一个明显更小的包。在应用程序初始化上,DNNShifter 将整个投资组合加载到内存中,然后激活一个模型(膨胀)以实现推理。以这种方式编码模型(防御)是可能的,因为零权重在从训练中获得的高度稀疏的 DNN 模型中重复。然而,开箱即用的生产质量模型是密集的(它们中的大多数权重不设置为零)。因此,将这种压缩算法应用于密集模型不会提供任何好处。

模块 7 - 模型 Deflater:该模块按模型大小(性能特征的代理)对模型组合进行排序,然后在模型转移到目标设备之前使用 DEFLATE 将整个模型组合缩小到更小、排序且易于部署的包。

模块 8 - 应用程序初始器:该模块将整个防御模型组合加载到设备内存中。首先,它选择一个模型大小中值的模型。然后,该模型在内存中解压缩以实现应用程序推理(我们将其称为膨胀)。请注意,膨胀模型是来自阶段 2 的剪枝模型变体。与等效的密集模型相比,推理更小更快。

模块 9 - 模型切换器:由于设备上运行应用程序的数量和每个应用程序的工作量,可用的内存和 CPU 负载可能会有所不同。例如,推理性能指标,例如每秒查询 (QPS),可能因应用程序而异 [39]。在边缘设备上的低负载下,可以实现更高的QPS,在此期间,可以在设备内存中解压缩来自投资组合的较大模型(膨胀);较大的模型将提高推理精度。相反,QPS 的降低表明来自投资组合的高负载和较小的模型被夸大以提高推理延迟性能。DNNShifter不需要搜索整个投资组合来切换模型。相反,该模块根据 QPS 趋势从投资组合中选择下一个或以前的模型。因此,可以以最少的开销快速获得模型切换。

5、实验

介绍实验测试平台和基线模型,然后考虑 DNNShifter 的三个关键方面:

(1) 生成解决挑战 1 的模型组合的时间(DNNShifter 的第 1 阶段)。我们将与最先进的NAS方法进行比较,即DARTS、RepVGG和PreNAS来评估这一点。

(2) 模型在解决挑战 2(DNNShifter 的第 2 阶段)时所达到的准确度和推理时间。这里考虑了两类剪枝算法,非结构化和结构化。非结构化的所考虑的剪枝算法是随机剪枝、幅度剪枝、SynFlow和NTK-SAP。考虑的结构化剪枝算法包括相似性感知、l1范数、EasiEdge和ProsPr。与非结构化剪枝方法相比,DNNShifter 获得了更好的精度和改进的剪枝模型推理加速。从 DNNShifter 获得的剪枝模型对所需的模型大小具有更好的准确性。DNNShifter 的开销比结构化剪枝方法低几个数量级。

(3) 在内存中动态切换模型以解决挑战 3(DNNShifter 的第 3 阶段)的开销。与模型切换方法相比,如模型集成和动态一次性(Dynamic-OFA),DNNShifter具有较低的模型切换开销和内存利用率。

1、实验环境

考虑了在CIFAR-10和Tiny ImageNet数据集上训练的两个生产DNN模型。

首先是在 CIFAR-10 上训练的 VGG16,它表示前馈 DNN 模型。其次是在Tiny ImageNet上训练的ResNet-50,这是一个更复杂的分支DNN模型。

产品VGG-16和RESNET-50模型的基线结果和训练超参数:

表显示了基线结果和超参数:

   模型、数据集和超参数 - VGG-16 是具有一个线性层 的 OpenLTH 配置,ResNet-50 是默认的 ImageNet 配置。CIFAR10 由 50,000 个训练图像和 10,000 个测试图像组成,平均分布在 10 个类别中。Tiny ImageNet 是一个 ImageNet 的子集,由 100,000 个训练图像和 10,000 个测试图像组成,在 200 个类别中平均分配。

试验台 - 使用 AMD EPYC 7713P 64 核 CPU 和 Nvidia RTX A6000 GPU 来训练模型,因为这些资源代表云数据中心的资源。模型推理和运行时切换是使用 Intel i7-9750H 6 核 CPU 和 Nvidia RTX 2080 (MaxQ) GPU 进行的,可与生产环境中使用的边缘服务器相媲美。

试验计数和报告方法 ,所有 DNN 训练方法和实验至少进行了 3 次。由于计算时间和时间限制,每个 NAS 方法只执行一次。除非另有说明,表和图中显示了准确度、内存使用和延迟等模型性能指标,作为所有试验的平均值,并附有跨越一个标准偏差的置信区间。此外,在可能的情况下,实验在 8 个不同的压缩比中进行。

2、模型训练和投资组合生成(阶段1)

我们将 DNNShifter 与三种不同的基于 NAS 的方法进行比较,这些方法为最佳模型变体搜索模型架构。

第一个是 DARTS,一种加速 NAS 方法,它通过梯度下降从连续搜索空间中生成模型变体。与 NasNet 等较旧的 NAS 方法相比,DARTS 快 500 倍。此外,DARTS 是一种自动生成模型组合的 NAS 方法。

第二个是 RepVGG,它使用一组离散超参数中的一系列类似 VGG 的模型变体,这些超参数缩放各种模型架构属性。总共训练了 228 个模型变体,以根据 RepVGG 文献 [

第三是 PreNAS,这是一种现代 NAS,它使用新兴的视觉转换器模型架构 [45] 生成模型。PreNAS 是一个一次性 NAS,它决定一组最优模型变体,并且只训练这些候选,显着减少了计算需求。

DNNShifter 有一个超参数 n,它指定应该生成多少模型变体,其中每个变体被压缩为前一个变体的两倍。例如,n = 8 生成高达压缩比 256 (2n) 的模型变体的组合。第一个变体是没有稀疏性的原始密集模型。

表将 DNNShifter 与 DARTS、RepVGG 和 PreNAS 进行对比。DNNShifter 在 9 个投资组合中生成 4 个最优模型变体,搜索效率为 44.44%。这比基于 NAS 的方法更有效。使用 DARTS 训练的参数数量分为更广泛的模型组合。这些模型不够多样化,导致 DARTS 的搜索效率较低。DARTS 搜索方法需要超过 6 小时来创建投资组合。然后,每个变体都经过单独训练和评估,总计比 DNNShifter 长 6 倍的训练时间。RepVGG 和 PreNAS 实现了比 DNNShifter 更高的模型精度,但每个模型变体的参数数量最多大一个数量级。由于本研究将训练时间评估为参数计数的函数 

观察 1:通过迭代剪枝生成模型组合的 DNNShifter 方法比基于 NAS 的方法更具资源和时间效率。

3、稀疏和修剪模型的性能(阶段2)

这项研究将证明 DNNShifter 比其他非结构化和结构化修剪方法产生相同或更好准确度的修剪模型。此外,证明了 DNNShifter 生成的剪枝模型比稀疏模型更小、更快,这些模型是针对各种压缩比进行量化。

1)将精度与稀疏模型进行比较:   我们首先将DNNShifter中非结构化剪枝方法的选择与其他非结构化剪枝方法进行比较。非结构化剪枝方法产生稀疏模型变体,其中参数设置为零。如 DNNShifter 利用 IMP 重新绕组作为其非结构化剪枝方法。本研究针对随机剪枝评估DNNShifter,这是一种朴素的方法、幅度剪枝、SynFlow和NTKSAP。对于每种方法,表中的基线模型迭代修剪多达 8 次,其中每次迭代 n 实现 2n 的压缩比。

下图显示了VGG-16和Resnet-50压缩比增加时测试精度的变化。

        对于所有方法,随着压缩比的增加,精度都会降低。然而,每种方法的下降率各不相同,而 DNNShifter 在所有情况下都保持了最高的准确度。例如,对于 CIFAR-10 上的 VGG-16,压缩比为 256,DNNShifter 准确率下降了 1.57%,而 SynFlow、NTK-SAP 和 Random 剪枝分别下降了 6.31%、5.15% 和 31.09%。幅度修剪以 256 的压缩比几乎损害其所有精度。幅度修剪导致模型由于层崩溃(当修剪整个层时)而在高压缩比下变得不可用。然而,SynFlow 旨在避免层崩溃并在高压缩比下保持可用精度。DNNShifter 也不会遇到层崩溃,因为它使用来自 IMP 的倒转方法来稳定稀疏模型。

对于Tiny ImageNet上的ResNet-50,对于top-1和top-5测试精度,在较高的压缩比下,DNNShifter精度下降小于SynFlow的一半。相比之下,幅度修剪和NTK-SAP在压缩比分别为32和64之后经历层崩溃。

观察2:与现有方法相比,DNNShifter保持了稀疏模型的最高精度。此外,这使得 DNNShifter 能够在极端压缩比下生成稀疏模型,为结构化修剪提供了机会。

2) 将运行时性能与稀疏模型进行比较:非结构化剪枝方法不提供推理加速或在运行时在空间上降低模型大小。这是因为参数不是空间修剪的,而是只是模型中的零值。DNNShifter通过结构化修剪去除修剪后的参数。本研究强调了与非结构化剪枝方法生成的稀疏模型相比,使用来自 DNNShifter 的剪枝模型的性能优势。

下图显示了增加压缩比实现的 CPU 和 GPU 推理速度和空间压缩。

对于 DNNShifter,推理速度定义为基线模型在给定压缩比的剪枝模型上的推理延迟。对于其他非结构化剪枝方法,我们将推理速度视为基线模型在稀疏模型上的推理延迟给定压缩比。类似地,空间压缩是基线模型的内存大小与给定压缩比的剪枝模型(对于 DNNShifter)或稀疏模型(对于非结构化剪枝方法)的内存大小。对于这两个指标,DNNShifter 为所有压缩比提供了改进,而仅非结构化剪枝方法提供的性能很小或在某些情况下,性能比基线模型差。

DNNShifter 在 CPU 和 GPU 上分别为 VGG-16 和 ResNet-50 实现了高达 1.67 倍和 1.32 倍,但代价是稀疏模型的准确性。其他非结构化修剪方法实现了很小的加速。然而,由于稀疏模型中的内存访问不规则,加速会有所不同。DNNShifter在空间上修剪稀疏参数,因此不受结构不规则性的影响。随着压缩比的增加,更多的稀疏参数被删除,导致较小的模型具有较低的 CPU 和 GPU 推理时间。

DNNShifter的压缩比为256,在VGG-16和ResNet-50的稀疏模型上实现了5.14x和1.87x的空间压缩。ResNet-50 的空间压缩比较低,因为 DNNShifter 仅使用结构修剪去除线性连接。因此,ResNet-50中的任何跳过连接或下采样层都没有被修剪,因为它会影响模型精度。

观察 3:DNNShifter 在不损失准确性的情况下减少了内存中推理延迟和稀疏模型大小。这与从不适合边缘环境的非结构化修剪中获得的稀疏模型形成对比,因为它们的推理性能较差,没有空间压缩。

3) 将准确性与修剪模型进行比较:本研究将 DNNShifter 与其他结构化修剪方法进行了比较。DNNShifter 与 RepVGG、EasiEdge、ProsPr 和两种经典的结构化剪枝方法进行了比较:相似性感知和 l1 范数。

RepVGG,通过重新参数化 ResNet 来创建类似 VGG 的架构。在这项研究中,RepVGG-A0 是从基线 RepVGG-B0 获得的修剪后的 VGG-16 模型。EasiEdge是一种最近的结构化剪枝方法,它为边缘部署创建剪枝模型。ProsPr是另一种现代修剪方法,它学习在优化的前几个步骤中修剪哪些权重。在这项研究中,我们使用结构化修剪变体来修剪通道。使用l1范数进行剪枝是一种经典的结构化剪枝方法,它使用l1范数对每个通道的重要性进行排序,然后修剪最低值通道。相似性感知是另一种经典的结构化剪枝方法,它去除了输出相似的通道。

表显示了使用不同结构化剪枝方法在 CIFAR-10 上修剪基线 VGG16 后剪枝模型和总参数计数的准确度变化。该表按参数计数降序排列,其中首先考虑基线 VGG-16 模型,并将模型越来越修剪到底部。EasiEdge 和 ProsPr 模型以修剪程度表示为百分比表示。修剪度是来自基线的修剪参数的百分比。例如,EasiEdge-25% 将 VGG-16 修剪为 25%。DNNShifter 模型使用压缩比表示。例如,DNNShifter-2x 的压缩比为 2,相当于修剪率为 50%。

两种经典的结构化剪枝方法都表现出超过 5% 的准确度降低,剪枝程度为 35% 或更少。结合这两种方法可以实现类似的精度损失,但修剪程度高达 45%。RepVGG-A0 实现了与组合经典方法相同的剪枝程度,同时仅降低了 0.4% 的模型精度。然而,RepVGG 没有比 RepVGG-A0 更小的模型变体。DNNShifter 和 EasiEdge 产生比基线模型更高的精度更小的模型。DNNShifter-16x 具有 0.4% 增益的最佳准确度提高,其中类似大小的 EasiEdge-80% 失去了 0.22% 的准确率。最小的EasiEdge变体,即EasiEdge-85%,参数0.46M,精度损失0.51%,而DNNShifter-64x小两倍以上,参数0.21M,增益0.33%准确性。ProsPr保持正精度变化,直到大小为2M参数的模型;然而,在所有模型尺寸下,精度仍然低于DNNShifter。

观察 4:与其他结构化剪枝方法相比,DNNShifter 产生更小、更准确的剪枝模型。

4)针对结构化修剪方法的修剪时间:上图显示了各种结构化修剪方法的几秒钟修剪时间,以修剪ResNet模型。l1norm 几乎需要 3,923 秒来修剪和微调模型。EasiEdge 不需要微调,但它使用泰勒近似的排名过程是详尽无遗的,因此需要 4,740 秒。RepVGG 不需要排名。相反,它重新参数化模型,它只需要 8 秒。尽管这是一个相对较小的成本,但每轮训练 8 秒的开销可能等同于某些用例的大量开销。例如,考虑联合学习轮次中的修剪。NTK-SAP 需要 20 个 epoch 的预训练来生成非结构化剪枝掩码,从而产生 544 秒的开销。DNNShifter 在亚秒时间范围内修剪模型。对于 ResNet,对于 30 帧/秒实时边缘视频分析应用程序,它平均平均为 120 毫秒或少于 3 帧,而现有方法的停机时间为数十秒到几分钟。

观察 5:DNNShifter 能够(接近)DNN 模型的实时结构化剪枝,并且比其他结构化剪枝方法快至少一个数量级。

4、模型切换的性能(阶段3)

      模型切换使应用程序能够通过选择合适的模型来应对不断变化的运行时条件从修剪后的模型投资组合推断。本研究将DNNShifter的内存压缩和模型切换方法与模型集成和动态OFA等经典方法进行了比较。模型集成方法在内存中托管同时模型,Dynamic-OFA在单个 DNN 中使用较小的子网络来匹配操作需求。

表比较了 DNNShifter 与模型集成和动态 OFA 的运行时切换。DNNShifter 具有在上节中获得的四个修剪 VGG-16 模型的组合,准确度范围为 91.64-93.71%,模型组合大小为 30.4-66.1MB,CPU 推理加速为 1.20-1.67x。还注意到了相同四个 VGG-16 模型和动态 OFA 模型的模型集成。内存利用率是模型组合在内存中的大小。DNNShifter 的内存利用率是可变的,因为非活动模型在内存中进一步压缩。然而,在模型集成方法中,所有模型都未压缩并托管在内存中。同样,DynamicOFA 在内存中维护整个模型,即使在推理过程中只能使用较小的子网络。与模型集成方法相比,DNNShifter 对其模型组合使用的内存减少了 3.8 倍。

决策开销是模型切换方法从投资组合中选择模型的挂钟时间。例如,模型集成方法在投资组合中的所有模型上运行推理,然后选择具有最高置信度的输出。另一方面,Dynamic-OFA 选择一个 DNN 配置来运行推理,然后将 DNN 重新配置为该选择。DNNShifter 从内存中膨胀适当的模型,平均决策开销为 43 ms,比 Dynamic-OFA 快 11.9 倍。

观察 6:与现有方法相比,DNNShifter 提供了具有较低内存和决策开销的模型切换。

6、结论

        在资源受限的环境中部署生产质量 DNN 对于促进边缘机器学习至关重要。模型压缩提供了从适合资源受限环境的生产质量模型中获取模型变体的技术。DNNShifter 通过开发一个端到端框架来解决上述问题,该框架结合了一种新颖的剪枝方法和一个用于模型训练、压缩和运行时切换的时间和资源高效的管道。DNNShifterprepares 模型变体的大小比最先进的神经架构搜索快,从而促进边缘的快速按需模型部署。修剪后的模型变体保持其与生产质量对应物相同的准确性。它们适用于边缘部署,因为它们重量轻,能够适应运行时条件。DNNShifter 旨在适应现有的 ML 训练和推理管道。DNNShifter 不引入任何额外的超参数或依赖关系,除了需要用户指定的最大投资组合大小。

DNNShifter的结构化剪枝方法可以很容易地使用:

(1)对于一次性优化来预先存在的预训练 DNN 模型。

(2)与其他阶段结合使用从头开始创建训练和推理管道。

(3)在 DNNShifter 阶段的任何组合中。因此,DNNShifter 很容易转移到现有的 ML 应用程序和产品上。DNNShifter 主要受到训练稀疏模型的高计算成本的限制。在模型(在训练之前)的初始化下进行结构化修剪的潜力,精度损失最小。

原文:DNNShifter: An Efficient DNN Pruning System for Edge Computing

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值