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

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

3天内不再提示

Transformer常用的轻量化方法

深度学习自然语言处理 来源:深度学习自然语言处理 作者:深度学习自然语言 2022-10-25 14:10 次阅读

本文梳理了一些Transformer常用的轻量化方法,并分领域的介绍了一些主流的轻量化Transformer。

引言:近年来,Transformer模型在人工智能的各个领域得到了广泛应用,成为了包括计算机视觉,自然语言处理以及多模态领域内的主流方法。尽管Transformer在大部分任务上拥有极佳的性能,其过大的参数量限制了在现实场景下的应用,也给相关研究带来了困难,由此带来了Transformer轻量化领域的发展。笔者首先梳理了一些Transformer常用的轻量化方法,并分领域的介绍了一些主流的轻量化Transformer。欢迎大家批评指正,相互交流。

021748b8-5425-11ed-a3b6-dac502259ad0.png

预训练模型参数量增长趋势

1.Transformer中常用的模型压缩方法

量化:量化的基本思想即利用低比特的数据类型来替代原本的高比特数据类型,同时对数据的存储空间与计算的复杂度进行轻量化。简单的训练后量化,即直接对训练好的模型参数进行量化会带来很大的误差,目前主要会采用量化感知训练(Quantized-Aware Training, QAT)的方式,在训练时全精度优化,仅模拟低精度的推理过程,很好的降低了量化过程的性能损失。

剪枝:剪枝方法基于lottery ticket假设,即模型中只有小部分参数起了核心作用,其他的大部分参数是无效参数,可以去除掉。剪枝可以分为非结构化剪枝与结构化剪枝。非结构化剪枝即定位参数矩阵中接近于0或者有接近0趋势的参数,并将这些参数归零,使参数矩阵稀疏化。结构化剪枝即消减模型中结构化的部分,如多头注意力中不需要的注意力头,多层Transformer中不需要的若干层等等。

022b67ee-5425-11ed-a3b6-dac502259ad0.png

非结构化剪枝

知识蒸馏:知识蒸馏通常在一个大的老师模型与一个小的学生模型之间进行。通过老师模型在监督数据上输出的“软标签分布”来训练学生模型。这种“软标签”的学习能够很好的克服监督数据中标签偏差的问题,带来了很好的知识迁移的能力。

02378e52-5425-11ed-a3b6-dac502259ad0.png

参数共享:在模型同质的部分间共享参数。

2.预训练语言模型中的轻量化Transformer

Transformer最早在自然语言领域中得到广泛的应用,其强大的能力带来了预训练领域的快速发展,并在相关领域带来了革新。但是随着预训练模型规模的不断增大,训练与部署一个预训练模型的代价也不断提升,预训练语言模型轻量化的研究方向应运而生。由于以Bert为代表的预训练语言模型的主流架构仍是Transformer,因此Transformer的轻量化也成为了当前NLP领域的一个重要课题。以下是笔者整理的几篇经典的预训练语言模型中的轻量化工作,供读者参考。

Q8BERT: Quantized 8Bit BERT

https://arxiv.org/pdf/1910.06188.pdf

Q8BERT是量化方法在Bert上的朴素运用。除了采用了基本的量化感知训练方式外,Q8BERT还采用了指数滑动平均的方式平滑QAT的训练过程。最终,在压缩了近4倍参数量,取得4倍推理加速的前提下,Q8BERT在GLUE与SQUAD数据集上取得了接近Bert的效果,证明了量化方法在Bert上的有效性。

0267b87a-5425-11ed-a3b6-dac502259ad0.png

Q8BERT在下游任务上的表现

DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

https://arxiv.org/pdf/1910.01108.pdf

DistillBERT是huggingface发布的一个小版本的Bert模型,它只在输出层面采用了软标签的蒸馏,将Bert的层数压缩到了原本的1/2,并在各个下游任务上取得了不错的结果。

0290119e-5425-11ed-a3b6-dac502259ad0.png

在GLUE上,DisitlBERT只用了60%的参数,保留了97%的性能

TinyBERT: Distilling BERT for Natural Language Understanding

https://arxiv.org/pdf/1909.10351.pdf

与DistilBERT相同,TinyBERT同样是知识蒸馏在Bert压缩上的应用。不同于DistillBERT只在预训练阶段采用知识蒸馏,TinyBERT同时在预训练和微调阶段采用了两阶段的知识蒸馏,使得小模型能够学到通用与任务相关的语义知识。

02979de2-5425-11ed-a3b6-dac502259ad0.png

TinyBERT蒸馏策略

同时,TinyBERT采用了更加细粒度的知识蒸馏方式,对embedding层的输出,Transformer每一层中隐藏层与注意力计算的输出以及整个模型的软标签进行了知识蒸馏,得到了更加精准的知识迁移效果。

02b05850-5425-11ed-a3b6-dac502259ad0.png

更加细粒度的蒸馏方式

最终,TinyBERT将BERT模型蒸馏成了一个4层且隐藏层维度更小的模型,并取得了不亚于更高参数量的DistilBERT的效果。

ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS

https://arxiv.org/pdf/1909.11942.pdf

ALBERT是Google在ICLR2020上的一篇工作。它首先采用了词表矩阵分解的方法,由于Bert采用了一个很大的词表,因此词表的embedding层包含了很大的参数量,ALBERT采用了参数分解(Factorized embedding parameterization)的方式减少这部分的参数量。具体而言,对于一个包含V 个单词的词表,假如词表的隐藏层大小E 与模型的隐藏层大小H 相等,则embedding层包含的参数量为V × E 。考虑到V通常较大,embedding的总参数量也会较大。为了减少参数量, 与直接对one-hot的词向量映射到 H 维空间不同,ALBERT首先将词向量映射到较小的E 维空间,再映射到H 维空间。将参数量从O(V × H)降低到了O(V × E + E × H) ,实现了embedding层的压缩。

除此之外,ALBERT还进行了Transformer内跨层的参数压缩,通过跨Tranformer层的完全参数共享,ALBERT对参数量进行了充分的压缩,在低参数量的条件下取得了与Bert-base相似的效果,同时在相近的参数量下可以保证模型更深,隐藏层维度更大,在下游任务下的表现更好。

02bf36b8-5425-11ed-a3b6-dac502259ad0.png

ALBERT的参数量及下游任务表现

3.计算机视觉中的轻量化Transformer

尽管Transformer在计算机视觉领域的应用相较于NLP领域稍慢一步,但Vision Transformer的横空出世使得Transformer也占据了视觉模型的主流。后期基于MAE与BEiT的预训练方法更加巩固了Transformer在计算机视觉领域的地位。与自然语言理解领域相同,计算机视觉中的Transformer同样面临着参数量过多,部署困难的问题,因此也需要轻量化的Transformer来高效的完成下游任务。以下是笔者整理的几篇近年来计算机视觉领域中的轻量化工作,供读者参考。

Training data-efficient image transformers & distillation through attention

http://proceedings.mlr.press/v139/touvron21a/touvron21a.pdf

DeiT是Facebook在2021年的一篇工作,模型的核心方法是通过知识蒸馏对视觉Transformer进行压缩。DeiT采用了两种蒸馏方法实现了老师模型到学生模型的知识迁移:

Soft Distillation:通过老师模型输出的软标签进行知识蒸馏。

Hard-label Distillation:通过老师模型预测出的实际标签进行知识蒸馏,意义在于纠正可能存在的有监督数据的标签偏差。

DeiT在蒸馏过程中引入了Distillation token的概念,其作用与Class token类似,但Class token用于在原数据上利用交叉熵进行训练,Distillation token用于模拟老师模型的软分布输出或利用老师模型预测的hard-label进行训练。

02d392d4-5425-11ed-a3b6-dac502259ad0.png

Disillation token

通过在老师模型上的蒸馏过程,DeiT拥有更小的参数规模和更快的推理速度的条件下,取得了比ViT更好的效果。

02e4b0c8-5425-11ed-a3b6-dac502259ad0.png

TinyViT: Fast Pretraining Distillation for Small Vision Transformers

https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136810068.pdf

TinyViT是微软在2022年的一篇工作,这篇工作的核心依然是知识蒸馏,但是在工程实现上进行了一些优化,使得小模型能够在更大的数据规模下通过知识蒸馏获取到大模型的知识。DeiT采用的知识蒸馏方法是相当昂贵的,因为在蒸馏过程中,教师模型与老师模型会同时占用GPU的内存,限制了batch_size的增加与学生模型的训练速度。且软标签在老师模型输出端到学生模型输出端的迁移也会带来一定的计算资源损耗。

为了解决这个问题,TinyViT提出了一种软标签预生成的方法,即解耦软标签的生成与学生模型的训练过程。先进行软标签的生成与预存储,再利用预存储的软标签对学生模型进行训练。由于预存储软标签向量会带来极大的存储损耗,考虑到这些向量大部分是稀疏的(因为对于一个训练好的老师模型,给定一张图片,只有极小部分类别会存在成为正确标签的概率),作者采用了存储稀疏标签的策略,即只存储top-k概率的标签以及其对应的概率。在训练学生模型时将这样的稀疏标签还原成完整的概率分布,并进行知识蒸馏。整个pipeline如下图所示:

02f07df4-5425-11ed-a3b6-dac502259ad0.png

TinyViT的蒸馏流程

在相同的模型规模下,TinyViT提高了知识蒸馏的速度与数据量,并取得了分类任务上的提升。

MiniViT: Compressing Vision Transformers with Weight Multiplexing

https://openaccess.thecvf.com/content/CVPR2022/papers/Zhang_MiniViT_Compressing_Vision_Transformers_With_Weight_Multiplexing_CVPR_2022_paper.pdf

MiniViT是微软在CVPR2022的一篇工作,采用了权重复用的方法来压缩模型的参数。与ALBERT不同的是,作者发现单纯的权重复用会导致每层梯度l2范数的同质化以及最后几层输出特征相关性的降低。为了解决这个问题,MiniViT采用了Weight Transformation与Weight Distillation的方法来解决这个问题。Weight Transformation,即在每一层之间插入小型的类似Adapter的结构,以保证每层的输出不会因为参数量相同而同质化。Weight Distillation,即采用一个老师模型来引导MiniViT的输出以增强模型性能。整体的pipeline如下所示:

0301717c-5425-11ed-a3b6-dac502259ad0.png

作为一个通用的压缩方法,作者在DeiT与Swin-Transformer上进行了测试。在更小的参数量下,在ImageNet数据集上,Mini版本的模型均取得了不亚于甚至更好的效果。

DynamicViT: Efficient Vision Transformers with Dynamic Token Sparsification

https://proceedings.neurips.cc/paper/2021/file/747d3443e319a22747fbb873e8b2f9f2-Paper.pdf

本文是清华大学在Nips2021上的一篇工作,其借鉴了模型压缩中剪枝的思想,但是是对Transformer每一层的输入token进行了稀疏化。Token稀疏化的基本假设在于:对于一张图片,一定会存在一些冗余部分对模型的预测结果影响很小,对这些部分的削减可以很大程度的增加模型的推理速度。

DynamicViT的具体做法是:通过在每一层间增加一个轻量化的预测模块,预测哪一些部分的token是可以被丢弃掉的。在预测完后通过一个二进制的决策掩码来完成对token的丢弃。同时,作者修改了训练的目标函数,保证了每一层丢弃的token数量是有限的。

0315f05c-5425-11ed-a3b6-dac502259ad0.png

DynamicViT的稀疏化模块

最终,在上述的稀疏化策略下,DynamicViT在原始的ViT基础上取得了很好的加速,并在模型性能与推理速度之间达到了一个很好的平衡。

0333396e-5425-11ed-a3b6-dac502259ad0.png

4.多模态中的轻量化Transformer

多模态模型往往同时参考了视觉模型与语言模型的设计,因此也会以Transformer作为其主流架构。但多模态中的轻量化工作较少,笔者整理了比较有代表性的几篇多模态轻量化工作供读者参考。

MiniVLM: A Smaller and Faster Vision-Language Model

https://arxiv.org/pdf/2012.06946.pdf

MiniVLM是微软在Oscar模型上的轻量化工作。MiniVLM的轻量化基于一个观察假设:即在大多数多模态任务中,多模态模型的视觉端不需要特别强的目标检测信息,而目标检测器往往是模型的瓶颈部分。因此,用一个不那么精确的目标检测器可以有效的压缩模型的参数量与加快推理速度,同时尽可能的减少性能损失。

为了达到上述效果,MiniVLM采用了一个基于EfficientNet与Bi-FPN的轻量化目标检测器。同时,为了进行进一步压缩,MiniVLM对多模态Tranformer端也进行了压缩,将原本的Bert结构更换到了更加轻量化的MiniLM,其结构如下所示:

03481f32-5425-11ed-a3b6-dac502259ad0.png

轻量化目标检测器

最终,在可接受的精度损失范围内,相较于原本的OSCAR模型,MiniVLM对推理速度进行了极大的提升:

0359f54a-5425-11ed-a3b6-dac502259ad0.png

MiniVLM的加速效果与下游任务性能

Compressing Visual-linguistic Model via Knowledge Distillation

https://arxiv.org/pdf/2104.02096

DistilVLM是MiniVLM工作的延续。不同的是,在更换目标检测器与Transformer架构的同时,DistilVLM同时采用了知识蒸馏来保持模型的性能。DistilVLM的蒸馏策略与TinyBERT相同,同样是进行预训练阶段和微调阶段的两阶段蒸馏:

03687c78-5425-11ed-a3b6-dac502259ad0.png

DistilVLM的蒸馏策略

由于采用了不同的目标检测器,在检测得到的目标区域不同的前提下,后续的知识蒸馏均是无效的。为了解决这个问题,DistilVLM采用了视觉token对齐的方式,老师模型和学生模型均采用相同的目标检测器,使得两个模型的检测区域对齐,保证了后续知识蒸馏的有效性。

03713a20-5425-11ed-a3b6-dac502259ad0.png

视觉对齐

最终,在与MiniVLM相同参数和推理速度的前提下,DistilVLM取得了不错的性能提升。

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

    关注

    8

    文章

    6885

    浏览量

    88818
  • 计算机视觉
    +关注

    关注

    8

    文章

    1696

    浏览量

    45927
  • Transformer
    +关注

    关注

    0

    文章

    141

    浏览量

    5980

原文标题:Fast and Effective!一文速览轻量化Transformer各领域研究进展

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    碳纤维为何能实现汽车轻量化

    碳纤维是一种与人造丝、合成纤维丝一样的纤维状碳材料,是目前世界高科技领域中十分重要的新型工业材料,提高汽车的绿色化性能。 节约不可再生能源和提高燃料效率的汽车轻量化解决方案正推动碳纤维应用快速增长
    发表于 01-25 16:52

    汽车轻量化采用3D打印

    轻量化制造简单而言是在不牺牲零部件性能的前提下,减轻零部件重量的制造方式。重量的减轻带来能耗的降低,在全球范围控制碳排放的趋势下,轻量化制造越来越受到重视,是未来制造的方向之一。除了合金以外,近些年
    发表于 09-27 09:12

    客车车身轻量化分析

    以某车型为例, 分别从优化流程、优化分析模型、分析工况等方面研究车身轻量化方法, 提出一套切实可行的技术路线。关键词: 车身; 结构; 轻量化; 优化技术Abstract: Tak ing a bus
    发表于 07-27 10:09 12次下载

    汽车轻量化技术

    节能减排已成为世界汽车行业的共同趋势。汽车轻量化是在保证强度和安全性的前提下,尽可能降低汽车整备质量,以提高汽车的动力性,实现节能减排。 2017中国(重庆)国际汽车轻量化及材料展,来自全世界顶级
    发表于 05-09 11:57 18次下载

    PACK轻量化设计介绍及电芯选择

    随着动力电池系统相关标准和规范的制定,推动技术的发展,市场对动力电池系统的比能量要求也是越来越高,轻量化在动力电池系统的应用也是迫在眉睫。在电池包的轻量化设计中,可以从两个方向:一个是系统层面
    发表于 09-15 11:46 23次下载

    常见的轻量化材料的分类与汽车轻量化材料的应用

    主要有三种手段:轻量化结构设计及优化、先进轻量化材料应用、先进轻量化制造技术应用。采用新型材料是汽车轻量化最直接有效的方法。 汽车的
    发表于 09-15 16:53 6次下载
    常见的<b class='flag-5'>轻量化</b>材料的分类与汽车<b class='flag-5'>轻量化</b>材料的应用

    低速电动车轻量化的作用和蕴含的技术分析

    低速电动车需要研究轻量化有两大原因:一是在低速电动车的标准草案中,提出了小尺寸和轻型化的标准引导方向;二是减轻整车质量能够更有效地提升电源利用效率,并提高驾乘体验。 低速电动车的轻量化目标,主要包括
    发表于 09-21 15:23 1次下载
    低速电动车<b class='flag-5'>轻量化</b>的作用和蕴含的技术分析

    “新能源汽车轻量化的整体解决方案”主题演讲

    刘峰介绍,在Pack结构轻量化过程中,主要实现轻量化的方式有:1、去模组化。把以前的单模组变成大模组,电芯大量采用A/B胶粘,应用扎带取代侧板。2、电气件轻量化,小型化,接插件集成化。3、取消从控。4、FPC取代传统线速;5、箱
    的头像 发表于 10-24 16:58 5021次阅读

    瑞德丰如何实现动力电池轻量化

    陆宾林介绍,瑞德丰通过结构设计优化、制造工艺创新、材料轻量化三大维度,在保证安全的大前提下来实现轻量化
    的头像 发表于 12-31 09:10 3314次阅读

    康得搭建碳纤维轻量化平台来推动国内纤维轻量化产业的发展

    很多搞研发的人,身上都带有一股偏执。而或许正是这个特性,让他们在某个领域取得非同寻常的成就。 何鹏在轻量化领域偏执了15年。而他的这份偏执,也为中国轻量化事业的发展起到了助推器作用。 众所周知
    的头像 发表于 09-16 14:02 2.4w次阅读

    日产全新轻量化技术获突破,减重75%

    日前,日产中国官微发布消息称,其最新开发的轻量化超级隔音材料荣获《Popular Science》(《科技新时代》)汽车类最佳创新奖,这是一种全新轻量化超级隔音材料。
    的头像 发表于 12-17 09:12 2007次阅读

    浅谈轻量化设计:材料、创新技术及未来解决方案

    轻量化的材料就是可以用来减轻产品自重且可以提高产品综合性能的材料。材料轻量化,指的是在满足机械性能要求的前提下,通过采用轻量化的金属和非金属材料实现重量减轻的方法。在当前汽车制造领域,
    的头像 发表于 01-29 10:43 1557次阅读

    分析汽车车灯轻量化技术研究

    车灯轻量化技术自身采用了现代化设计方法和更有效的措施对车灯优化设计或采用新材料以尽量保证车灯的各种性能。在规定达标的前提下尽量使汽车车灯产品本身的品质大大下降,使汽车车灯在环保,降耗,减重和安全
    的头像 发表于 05-30 10:16 691次阅读
    分析汽车车灯<b class='flag-5'>轻量化</b>技术研究

    最新专利深入“轻量化”!华为这样做?

    具体来看,汽车轻量化的实现途径主要有两方面:一是轻量化材料,使用比强度更高或密度更小的高强度钢、铝合金、镁合金、碳纤维复合材料,对传统普通钢结构进行替代;二是轻量化设计,通过开发全新的汽车架构实现
    的头像 发表于 08-16 14:41 656次阅读
    最新专利深入“<b class='flag-5'>轻量化</b>”!华为这样做?

    5G轻量化网关是什么

    5G轻量化网关:物联网的新引擎 随着5G技术的不断发展和普及,物联网(IoT)领域迎来了新的变革。5G轻量化网关,作为这一变革中的关键角色,正逐渐成为连接人、机、物的重要桥梁。本文将深入探讨5G
    的头像 发表于 09-04 15:17 257次阅读
    5G<b class='flag-5'>轻量化</b>网关是什么