【Towards Efficient Tensor Decomposition-Based DNN Model Compression withOptimization Framework】论文

基于张量分解的DNN模型压缩

摘要

先进的张量分解技术,比如tensor train(TT)和tensor ring(TR)。然而,使用TT/TR压缩卷积神经网络(CNNs)总是遭受显著的精度损失。 本文提出了一个使用交替方向乘子法的(ADMM)基于张量分解的模型压缩的系统框架。将基于TT分解的模型压缩构造为具有张量秩约束的优化问题(an optimization problem with constraints on tensor ranks),我们利用ADMM技术以迭代的方式(in a iterative way)系统地解决这个优化问题。在此过程中,整个DNN模型以原始结构而不是TT格式进行训练,但逐渐获得所需的低张量秩特征。然后,我们将该未压缩的模型分解为TT格式,并对其进行微调,最终获得一个高精度的TT格式的DNN模型。我们的框架是非常通用的,它同时适用于cnn和rnn,并且可以很容易地修改以拟合其他张量分解方法。我们在不同的DNN模型上评估了我们提出的框架,包括图像分类和视频识别任务。实验结果表明,我们基于ADMM的TT格式模型(ADMM-based TT-format models)具有很高的压缩性能并保证高精度。特别是,在CIFAR-100上,2.3x和2.4x的压缩率,我们的模型相比原来的ResNet-20和ResNet-32分别有1.96%和2.21%的top-1准确率提升。压缩在ImageNet上的ResNet-18,我们的模型实现了在无精度损失下2.47x的FLOPs降低。

1、引言

 模型压缩中的张量分解(Tensor Decomposition)

 与其他模型压缩方法不同,张量分解可以独特地可以提供超高的压缩比,特别是对于循环神经网络(RNN)模型。先进的张量分解方法(如TT和TR)(48,38),可以给RNN模型的输入到隐藏层(input-to-hidden)带来1000x以上参数缩减,甚至可以显著提高视频识别任务中相应的分类精度。此外,为了充分利用这些模型所提供的优势,已经开发了几种TT格式的DNN硬件加速器,并适配了不同的芯片格式,比如digital CMOS ASIC,memristor ASIC和IoT board。

前沿技术的局限

尽管张量分解具有很好的潜力,但作为一种成熟的模型压缩方法,其性能还不够满足需求。目前,所有报道的张量分解成功仅局限于在视频识别任务中压缩RNN模型。所有最先进的张量分解方法,包括TT和TR,在面对CNN都遭受了非常显著的精度损失。对于CIFAR-10上的ResNet-32,即使最先进的使用TR的方法,在压缩2.7x的时候也损失了1%,5.8x时损失了1.9%。

为什么会限制性能

上述张量分解的局限性主要是由于训练张量分解的DNN模型存在独特的挑战。一般情况说,用张量分解得到压缩模型有两种方法:1)以分解后的格式从头开始进行训练;2)分解一个预先训练过的未压缩模型,然后再训练。在前一种情况下,如TT格式模型时,由于模型在训练前结构已经预先设置为低张量秩格式,与全秩结构相比,相应的模型容量通常有限,因此使得训练过程对初始化非常敏感,具有更高的精度挑战性。在后一种情况下,虽然预训练的未压缩模型提供了良好的初始化位置,但通过将全秩未压缩模型直接分解为低张量秩格式,会导致不可避免且不可忽略的近似误差,即使经过长时间的再训练,这些近似误差仍然很难恢复。此外,无论采用哪种训练策略,张量分解总是会导致网络深度的线性增加,这意味着训练张量分解格式的DNN通常更容易出现梯度消失问题,因此难以得到很好的训练。

Technical Preview and Contributions

为了克服目前张量分解的局限性,充分释放其模型压缩的潜力,本文提出了一种利用交替方向乘数法(ADMM)提出的基于张量分解的模型压缩系统框架。通过将基于TT分解的模型压缩构造为具有张量秩约束的优化问题,我们利用ADMM技术系统地迭代解决该优化问题。在此过程中,整个DNN模型以原始结构而不是TT格式进行训练,但逐渐获得所需的低张量秩特征。然后,我们将该未压缩的模型分解为TT格式,并对其进行微调,最终获得一个高精度的TT格式的DNN模型。综上所述,本文的贡献总结如下:

  • 我们提出了一个系统的框架来制定和解决基于张量分解的模型压缩问题。通过将这个问题表述为一个受约束的非凸优化问题,我们的框架逐
### 网络架构概述 Mask DINO 是 DINO 的扩展,旨在统一目标检测和分割任务的处理框架。该架构基于 Transformer 模型,通过最小限度的修改实现了高效的多任务学习。Mask DINO 的核心设计包括一个用于分割的掩码分支,以及对 DINO 中关键组件的扩展,以适应分割任务的需求。 ### 主要组件及其功能 #### 1. Transformer 解码器 Mask DINO 采用了与 DINO 相同的检测架构设计,并在 Transformer 解码器中增加了用于分割的掩码分支。这一设计允许模型在进行目标检测的同时,生成高质量的分割掩码。[2] #### 2. 内容查询嵌入 在 DINO 中,内容查询嵌入用于生成框预测和标签预测。Mask DINO 在此基础上进一步扩展,为掩码预测添加了另一个分支。这种设计使得模型能够在不牺牲检测性能的情况下,有效地处理分割任务。[3] #### 3. 可变形注意力机制 DINO 中的可变形注意力机制用于动态更新 boxes,以指导每个 Transformer 解码器中的注意力计算。Mask DINO 扩展了这一机制,使其能够更好地适应分割任务的需求。通过这种方式,模型可以更精确地定位和分割目标对象。[3] #### 4. 掩码分支 Mask DINO 新增的掩码分支专门用于生成分割掩码。这一分支的设计旨在最小限度地扩展 DINO 的现有架构,同时确保分割任务的高效执行。掩码分支的引入使得模型能够在统一的框架下处理检测和分割任务。[2] ### 实验结果与性能 Mask DINO 通过上述设计实现了在目标检测和分割任务上的优异性能。实验结果显示,该模型不仅在检测任务上保持了与 DINO 相当的性能,还在分割任务上取得了显著的提升。这种统一的架构设计有效地解决了多任务学习中数据和架构的统一性问题。[1] ### 代码示例 以下是一个简化的代码示例,展示了如何构建一个基本的 Mask DINO 模型: ```python import torch from transformers import MaskDinoModel # 初始化 Mask DINO 模型 model = MaskDinoModel.from_pretrained('facebook/maskdino-swin-tiny-pano') # 输入图像 input_image = torch.rand(1, 3, 512, 512) # 假设输入图像大小为 512x512 # 前向传播 outputs = model(input_image) # 获取检测和分割结果 detected_boxes = outputs['detected_boxes'] segmentation_masks = outputs['segmentation_masks'] ``` ### 相关问题
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值