0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Transformer模型的压缩方法

3D视觉工坊 来源:3D视觉工坊 2024-02-22 16:27 次阅读

0. 这篇文章干了啥?

基于Transformer的模型已经成为各个领域的主流选择,包括自然语言处理(NLP)和计算机视觉(CV)领域。大部分拥有数十亿参数的大型模型都基于Transformer架构,但其异常庞大的规模给实际开发带来了挑战。例如,GPT-3模型有1750亿个参数,需要约350GB的存储空间(float16)。参数的数量庞大以及相关的计算开销要求设备具有极高的存储和计算能力。直接部署这样的模型会产生巨大的资源成本,特别是在手机这样的边缘设备上的模型部署变得不切实际。

模型压缩是减少Transformer模型开发成本的有效策略,包括修剪、量化、知识蒸馏、高效架构设计等各种类别。网络修剪直接删除冗余组件,如块、注意力头、FFN层或个别参数。通过采用不同的修剪粒度和修剪标准,可以派生出不同的子模型。量化通过用较低位表示模型权重和中间特征来减少开发成本。例如,当将一个全精度模型(float32)量化为8位整数时,存储成本可以减少四分之一。根据计算过程,可以分为后训练量化(PTQ)或量化感知训练(QAT),其中前者只产生有限的训练成本,对于大型模型更有效。知识蒸馏作为一种训练策略,将知识从大模型(教师)转移到较小模型(学生)。学生通过模拟模型的输出和中间特征来模仿教师的行为。还可以直接降低注意力模块或FFN模块的计算复杂性来产生高效的架构。

因此,这篇文章全面调查了如何压缩Transformer模型,并根据量化、知识蒸馏、修剪、高效架构设计等对方法进行分类。在每个类别中,分别研究了NLP和CV领域的压缩方法。

下面一起来阅读一下这项工作~

作者:Yehui Tang, Yunhe Wang, Jianyuan Guo, Zhijun Tu, Kai Han, Hailin Hu, Dacheng Tao

2. 摘要

基于Transformer架构的大型模型在人工智能领域中发挥着日益重要的作用,特别是在自然语言处理(NLP)和计算机视觉(CV)领域。模型压缩方法降低了它们的内存和计算成本,这是在实际设备上实现Transformer模型的必要步骤。鉴于Transformer的独特架构,具有替代注意力和前馈神经网络(FFN)模块,需要特定的压缩技术。这些压缩方法的效率也至关重要,因为通常不现实在整个训练数据集上重新训练大型模型。这项调查全面审查了最近的压缩方法,重点关注它们在Transformer模型中的应用。压缩方法主要分为剪枝、量化、知识蒸馏和高效架构设计。在每个类别中,我们讨论了CV和NLP任务的压缩方法,突出了共同的基本原理。最后,我们深入探讨了各种压缩方法之间的关系,并讨论了该领域的进一步发展方向。

3. 压缩方法总结

Transformer模型的代表性压缩方法总结。

d39185e0-d10e-11ee-a297-92fbcf53809c.png

基于Transformer的视觉模型的不同PTQ(Post-training quantization)和QAT(Quantization-aware training)方法的比较。W/A表示权重和激活度的位宽,结果显示在ImageNet-1k验证集上的精确度最高。*代表混合精度。

d3aa7956-d10e-11ee-a297-92fbcf53809c.png

4. 模型量化

量化(Quantization)是在各种设备上部署 Transformer 的关键步骤,特别是在为低精度算术设计专用电路的 GPU和 NPU 上。在量化过程中,浮点张量被转换为具有相应量化参数(比例因子 s和零点 z)的整数张量,然后整数张量可以被量化回浮点数,但与原始相比会导致一定的精度误差。

Transformer量化总结。顶部展示了计算机视觉和自然语言处理现有作品中解决的不同问题,底部显示了标准transformer块的正常INT8推理过程。

d3bb8d4a-d10e-11ee-a297-92fbcf53809c.png

在NVIDIA A100-80GB GPU上使用Faster Transformer时ViT和OPT的推理延迟。

d3cbecee-d10e-11ee-a297-92fbcf53809c.png

5. 知识蒸馏

知识蒸馏(Knowledge distillation,KD)旨在通过从教师网络中蒸馏或传递知识来训练学生网络。这篇文章主要关注的蒸馏方法是:实现紧凑学生模型的,同时与繁重的教师模型相比保持令人满意的性能。学生模型通常具有较窄且较浅的架构,使它们更适合部署在资源有限的系统上。并主要介绍基于 logits 的方法(在 logits 级别传递知识)以及基于 hint 的方法(通过中间特征传递知识)。

用于大型Transformer模型的知识蒸馏分类。

d3e45f68-d10e-11ee-a297-92fbcf53809c.png

与以前基于transformer的语言模型蒸馏方法的比较,GLUE得分是8个任务的平均值。

d3f45364-d10e-11ee-a297-92fbcf53809c.png

6. 模型剪枝

模型剪枝包括修剪和模型训练的顺序,结构规范以及确定修剪参数的方式。下面总结了Transformer模型剪枝方法的分类。

d4142b08-d10e-11ee-a297-92fbcf53809c.png

视觉转换库典型剪枝方法的比较。

d42388c8-d10e-11ee-a297-92fbcf53809c.png

大型语言Transformer上典型剪枝方法的比较。

d440a07a-d10e-11ee-a297-92fbcf53809c.png

几种具有代表性的基于Transformer的LLM和LVM的模型卡,带有公开的配置详细信息

d45348b0-d10e-11ee-a297-92fbcf53809c.png

从训练并行化(TP)、推理成本(时间)和内存复杂性(内存)进行模型比较。N和d分别表示序列长度和特征维数。

d465e7a4-d10e-11ee-a297-92fbcf53809c.png

7. 其他压缩方法

除了量化、蒸馏、修剪和新颖的网络架构之外,还有几种其他模型压缩和加速方法。

张量分解。 张量或矩阵分解旨在将大张量或矩阵分解为较小的张量或矩阵,以节省参数数量和计算成本。这种方法首先被引入到全连接层和卷积网络的压缩中。至于大型语言模型,张量分解被用于简化模型的权重或嵌入层。

早期退出。 早期退出可以动态为每个输入样本分配不同的资源并保持原始性能,这在信息检索系统和卷积网络中已经成功使用。许多早期退出技术已被提出用于仅编码器的变压器。早期退出的关键问题是确定何时退出。现有的作品主要利用内在的置信度度量、提前路由或训练一个早期退出分类器。

猜测采样。 猜测采样是一种特殊的Transformer解码加速方法,通过并行计算几个令牌来进行。在大型语言模型中,解码K个令牌需要模型的K次运行,这是缓慢的。利用从较小模型生成的参考令牌,猜测采样并行运行这些令牌可以显著加快解码过程。此外,拒绝方案可以保持原始LLM的分布,从而理论上实现猜测采样的无损。

8. 总结 & 未来趋势

这篇综述系统地调查了Transformer模型的压缩方法。与其他架构(如CNN或RNN)不同,Transformer具有独特的架构设计,具有替代注意力和FFN模块,因此需要专门定制的压缩方法以获得最佳的压缩率。此外,对于这些大型模型,压缩方法的效率变得特别关键。某些模型压缩技术需要大量的计算资源,这可能对这些庞大的模型来说是不可行的。本调查旨在涵盖与Transformer相关的大部分最近的工作,并阐述其压缩的全面路线图。随后,深入探讨了各种方法之间的相互关系,解决了后期挑战,并概述了未来研究的方向。

不同压缩方法之间的关系。 不同的压缩方法可以一起使用,以获得极其高效的架构。常见的顺序是首先定义一个具有高效操作的新架构。然后删除多余的组件(例如注意力头、层),以获得一个较小的模型。对于实际硬件实现,将权重或激活量量化为较低的位数是必不可少的。所需位数的选择不仅取决于误差的容忍度,还取决于硬件设计。例如,

训练高效的压缩策略。 与压缩传统模型不同,对压缩方法的计算成本的重视程度增加了。目前,大型Transformer正在使用大量的计算资源在庞大的数据集上进行训练。例如,Llama2在数千个GPU上训练了2万亿个令牌,持续了几个月。在预训练期间使用相当的计算资源进行微调是不切实际的,特别是当原始数据通常是不可访问的。因此,训练后的高效压缩方法的可行性变得更加可行。然而,对于较低的位数(例如4位),量化模型仍然会遭受显著的性能降低。值得注意的是,极低位模型,例如二进制Transformer,在传统的小型模型中已经得到了广泛的探索,但在大型模型的背景下仍然相对未知。

对于修剪来说, 后期训练的挑战与修剪粒度紧密相关。尽管非结构化的稀疏性可以在最小微调要求下实现高压缩率,但类似的策略难以转移到结构性修剪中。直接删除整个注意力头或层将导致模型架构的重大改变和因此准确性的显著降低。如何识别有效权重以及如何有效地恢复性能都是洞察力方向。识别有效权重和恢复表示能力的有效策略是解决这些挑战的关键研究方向。

超越Transformer的高效架构。 在现实世界的应用中,Transformer架构的输入上下文可以延伸到极长的长度,包括NLP中的序列文本(例如,一本拥有数十万字的书)或CV中的高分辨率图像。基础注意力机制对输入序列长度的复杂度呈二次复杂度,对于长序列输入构成了重大的计算挑战。许多研究通过减少注意力的计算成本来解决这个问题,采用了稀疏注意力、局部注意力等技术。然而,这些注意力压缩策略通常会损害表示能力,导致性能下降。

新兴的架构, 如RWKV和RetNet采用了类似于RNN的递归输出生成,有效地将计算复杂度降低到O(N)。这一发展有望在探索更高效模型的过程中进一步发展。对于计算机视觉任务,即使是没有注意力模块的纯MLP架构也可以实现SOTA性能。过仔细研究它们的效率、泛化性和扩展能力,探索新的高效架构是有希望的。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 变压器
    +关注

    关注

    159

    文章

    7325

    浏览量

    134874
  • 编码器
    +关注

    关注

    45

    文章

    3585

    浏览量

    134135
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4700

    浏览量

    128684
  • 人工智能
    +关注

    关注

    1791

    文章

    46840

    浏览量

    237519
  • 自然语言处理

    关注

    1

    文章

    612

    浏览量

    13504

原文标题:GPU不够用?网络不够快?一文看懂Transformer压缩技巧!

文章出处:【微信号:3D视觉工坊,微信公众号:3D视觉工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    大语言模型背后的Transformer,与CNN和RNN有何不同

      电子发烧友网报道(文/李弯弯)近年来,随着大语言模型的不断出圈,Transformer这一概念也走进了大众视野。Transformer是一种非常流行的深度学习模型,最早于2017年
    的头像 发表于 12-25 08:36 3799次阅读
    大语言<b class='flag-5'>模型</b>背后的<b class='flag-5'>Transformer</b>,与CNN和RNN有何不同

    【大语言模型:原理与工程实践】大语言模型的基础技术

    全面剖析大语言模型的核心技术与基础知识。首先,概述自然语言的基本表示,这是理解大语言模型技术的前提。接着,详细介绍自然语言处理预训练的经典结构Transformer,以及其工作原理,为构建大语言
    发表于 05-05 12:17

    详解ABBYY PDF Transformer+从文件创建PDF文档

    可使用ABBYY PDF Transformer+从Microsoft Word、Microsoft Excel、Microsoft PowerPoint、HTML、RTF、Microsoft
    发表于 10-17 14:13

    你了解在单GPU上就可以运行的Transformer模型

    最近,谷歌推出了Reformer架构,Transformer模型旨在有效地处理处理很长的时间序列的数据(例如,在语言处理多达100万个单词)。Reformer的执行只需要更少的内存消耗,并且即使在
    发表于 11-02 15:19

    压缩模型会加速推理吗?

    你好我使用 STM32CUBE-AI v5.1.2 ApplicationTemplate 将简单的 CNN 导入到 STM32L462RCT我发现压缩模型对推理时间没有影响。aiRun 程序在 8
    发表于 01-29 06:24

    Transformer模型的多模态学习应用

    随着Transformer在视觉中的崛起,Transformer在多模态中应用也是合情合理的事情,甚至以后可能会有更多的类似的paper。
    的头像 发表于 03-25 09:29 1w次阅读
    <b class='flag-5'>Transformer</b><b class='flag-5'>模型</b>的多模态学习应用

    使用跨界模型Transformer来做物体检测!

    用了Transformer 架构开发的一个目标检测模型。在这篇文章中,我将通过分析DETR架构的内部工作方式来帮助提供一些关于它的直觉。 下面,我将解释一些结构,但是如果你只是想了解如何使用模型,可以直接跳到代码部分
    的头像 发表于 06-10 16:04 2180次阅读
    使用跨界<b class='flag-5'>模型</b><b class='flag-5'>Transformer</b>来做物体检测!

    Microsoft使用NVIDIA Triton加速AI Transformer模型应用

    Microsoft 的目标是,通过结合使用 Azure 与 NVIDIA GPU 和 Triton 推理软件,率先将一系列强大的 AI Transformer 模型投入生产用途。
    的头像 发表于 04-02 13:04 1737次阅读

    Transformer常用的轻量化方法

    引言:近年来,Transformer模型在人工智能的各个领域得到了广泛应用,成为了包括计算机视觉,自然语言处理以及多模态领域内的主流方法
    的头像 发表于 10-25 14:10 5693次阅读

    基于Transformer的大型语言模型(LLM)的内部机制

    本文旨在更好地理解基于 Transformer 的大型语言模型(LLM)的内部机制,以提高它们的可靠性和可解释性。 随着大型语言模型(LLM)在使用和部署方面的不断增加,打开黑箱并了解它们的内部
    的头像 发表于 06-25 15:08 1408次阅读
    基于<b class='flag-5'>Transformer</b>的大型语言<b class='flag-5'>模型</b>(LLM)的内部机制

    基于 Transformer 的分割与检测方法

    ,并能做出属于自己的 SAM 模型,那么接下这篇 Transformer-Based 的 Segmentation Survey 是不容错过!近期,南洋理工大学和上海人工智能实验室几位研究人员写了一篇
    的头像 发表于 07-05 10:18 923次阅读
    基于 <b class='flag-5'>Transformer</b> 的分割与检测<b class='flag-5'>方法</b>

    transformer模型详解:Transformer 模型压缩方法

    剪枝在高稀疏率时往往不可避免地删除表达神经元,这将导致模型性能严重降低。低秩近似则旨在压缩表达神经元,它对于压缩神经元中的相干部分十分有效,其本质就是提取神经元共享相干子空间的公共基,该方法
    的头像 发表于 07-17 10:50 2020次阅读
    <b class='flag-5'>transformer</b><b class='flag-5'>模型</b>详解:<b class='flag-5'>Transformer</b> <b class='flag-5'>模型</b>的<b class='flag-5'>压缩</b><b class='flag-5'>方法</b>

    FFmpeg创始人为音频压缩工具TSAC,将音频压缩至极低比特率

    TSAC 官方网站提供了一系列原始音频与压缩音频的对比试听资源:https://bellard.org/tsac/TSCA。该压缩技术基于为立体声扩展的 Descript 音频编码器以及Transformer
    的头像 发表于 04-12 15:55 970次阅读

    使用PyTorch搭建Transformer模型

    Transformer模型自其问世以来,在自然语言处理(NLP)领域取得了巨大的成功,并成为了许多先进模型(如BERT、GPT等)的基础。本文将深入解读如何使用PyTorch框架搭建Trans
    的头像 发表于 07-02 11:41 1460次阅读

    Transformer语言模型简介与实现过程

    在自然语言处理(NLP)领域,Transformer模型以其卓越的性能和广泛的应用前景,成为了近年来最引人注目的技术之一。Transformer模型由谷歌在2017年提出,并首次应用于
    的头像 发表于 07-10 11:48 1301次阅读