首页 > 其他分享 >EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?

EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?

时间:2023-08-14 21:01:26浏览次数:122  
标签:BERT 树莓 剪枝 arxiv 13 https pdf org


文 | Sheryc_王苏

这个世界上有两种极具难度的工程:第一种是把很平常的东西做到最大,例如把语言模型扩大成能够写诗写文写代码的GPT-3;而另一种恰恰相反,是把很平常的东西做到最小。对于NLPer来说,这种“小工程”最迫在眉睫的施展对象非BERT莫属。

从18年那个109M参数的BERT,到52M参数的蒸馏后的DistilBERT,再到14.5M参数的蒸馏更多层的TinyBERT,最后到12M参数的层级共享的ALBERT,曾经那个在集群上加载参数都费劲的BERT现在甚至已经可以跑在手机平台上了。当我们为BERT的轻量化欢呼雀跃之时,有这样一群人站了出来——只是手机端可不够!他们的理想,是让BERT跑在物联网设备上,跑在低功耗芯片上,跑在我们能触及的每一个电子器件上!

这样一群来自哈佛/塔夫茨/HuggingFace/康奈尔的软件和硬件极客们,此刻已披上了法袍,化身为为BERT极限瘦身的炼金术士,向着这个看似不可能的目标添加着许多让人意想不到的配方…

论文题目:

EdgeBERT: Optimizing On-Chip Inference for Multi-Task NLP

论文链接:

https://arxiv.org/pdf/2011.14203.pdf

Arxiv访问慢的小伙伴也可以在【夕小瑶的卖萌屋】订阅号后台回复关键词【0105】下载论文PDF~



EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_python


配方基底:ALBERT

出处:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations(ICLR'20)

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

EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_大数据_02



EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_人工智能_03


本文对于ALBERT的利用除了作为初始化参数外,还在对下游任务做fine-tune时利用已经fine-tune好的ALBERT作为teacher进行知识蒸馏,来进一步提升模型性能。

初级配方:算法优化



EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_人工智能_04


1. 基于熵的提前退出机制

出处:DeeBERT: Dynamic Early Exiting for Accelerating BERT Inference(ACL'20)

链接:https://arxiv.org/pdf/2004.12993.pdf

ALBERT虽好,但Transformer太深了,算起来太慢,让他变浅一点怎么样?

ACL'20的DeeBERT恰好就提出了一种动态的提前退出机制(Early Exit)。这一机制的设计是希望让简单的文本经过较少的运算,而复杂的文本经过更多的运算




EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_机器学习_05


EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_python_06




EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_机器学习_07



上图表现的是不同的熵阈值在MNLI、QQP、SST-2、QNLI四个数据集上的平均退出层数、理论运行时间节省和相应的准确度。添加提前退出机制后,在Acc损失1个百分点时,能够在这四个数据集上分别降低30%、45%、54%和36%的理论运行时间;在Acc损失5个百分点时,能将在这四个数据集上的理论运行时间的降低进一步降低至44%、62%、78%和53%

2. 动态注意力范围

出处:Adaptive Attention Span in Transformers(ACL'19)

链接:https://arxiv.org/pdf/1905.07799.pdf

ALBERT虽好,但Attention范围太广了,算起来太慢,让他变窄一点怎么样?

ACL'19的Adaptive Attention提出的动态注意力范围正是试图通过这种方法减少注意力计算的。在Transformer的多头自注意力机制中,不同head对应的注意力范围并不一致,而让每一个head都对所有token进行注意力运算无疑增添了无用开销。为此,Adaptive Attention为每一个head添加一个不同的mask,使得每个token只能对周边的token计算注意力,从而降低矩阵运算的开销。



EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_人工智能_08


EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_深度学习_09

4. 零阶网络剪枝

出处:Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding(ICLR'16)

链接:https://arxiv.org/pdf/1510.00149.pdf

变短是变短了,但感觉这剪得还不够好啊,再换一种算法让它更短一点怎么样?

这种方法的做法非常简单:给模型里的参数设定一个绝对值阈值,绝对值高于它的保留,绝对值低于它的置零。由于方法实在太过简单,不用公式也能很容易理解的吧(=・ω・=)




EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_深度学习_10



一阶和零阶网络剪枝的效果对比如上图所示(MvP:一阶网络剪枝,MaP:零阶网络剪枝)。在参数稀疏程度更高时,一阶剪枝的效果更好,其他情况下是简单的零阶剪枝更有效。同时,研究还发现,当剪掉95%的嵌入层参数时,模型竟然在4个任务上都保持了至少95%的准确度

5.动态浮点数量化

出处:AdaptivFloat: A Floating-point based Data Type for Resilient Deep Learning Inference(arXiv Preprint)

链接:https://arxiv.org/pdf/1909.13271.pdf

诶,怎么还有?网络的运算和存储过程从深度、宽度和长度进行了全方位的优化,模型还能再轻?

的确,到此为止,一般的炼丹师已经看着自己三维裁剪过的模型感到成就感满满了,但这距离让BERT跑遍所有设备的目标还差得远。以下的部分就要开始深入一般NLP工程师见不到的第四个维度——硬件维度了。在深入硬件优化之前,先来道偏软件的开胃菜,看看如何在浮点数量化上下手优化存储吧!

我们平时在考虑利用浮点数特性进行计算加速时,最先考虑的是使用FP16混合精度,虽然有效,但毕竟损失了信息,效果也多多少少会受影响。既想保留精度又想加速训练减小存储,那就只有深入底层,修改浮点数的表示方法了!

这正是AdaptivFloat的初衷:设计一种更加适合深度学习场景的浮点数数据类型。不过,要讲明白AdaptivFloat数据类型需要涉及到一些与机器学习无关的知识。



EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_大数据_11


EdgeBERT:极限压缩,比ALBERT再轻13倍!树莓派上跑BERT的日子要来了?_人工智能_12

总结

压缩BERT是一项研究,但极限压缩BERT则是一项不易完成的工程:无论是对Transformer模型的全方位裁剪,还是对硬件存储介质读写性能与容错的取舍,亦或是对专属硬件加速器的设计,单独拿出一项已足够艰难,将它们合在一起就不仅可能互相冲突,甚至还可能产生逆向优化。这篇文章通过大量的实验,测试了已有的几种优化方法在边缘计算场景下的性能,比较了不同优化方法之间的差别,分析了所有优化方法进行组合后的影响及效果,并进一步提出了专属的硬件结构,实现了对目前已有的最轻量BERT变体的即插即用。对于需要长待机、低功耗、短延迟的场景,例如智能家居或是其他需要NLP技术加持的物联网设备,或许我们真的能在不远的将来看到实体的类似EdgeBERT加速器的解决方案出现。

虽然我们对于可能带来更大变革的模型结构依然处在探索当中,但从当下实用的角度而言,用基于Lottery Ticket Hypothesis[6]的BERT优化方法寻找一个更优的类BERT子结构依然是一个不错的课题,至少它能让更多人、更多时候、更多场景能够用上性能强大的预训练模型。本文中提到的这些优化方法是不是也给爱思考的你带来了什么启发呢?

参考文献

[1] Sanh et al. DistilBERT, a Distilled Version of Bert: Smaller, Faster, Cheaper and Lighter. In NeurIPS'19 EMC2 Workshop. https://arxiv.org/pdf/1910.01108.pdf [2] Jiao et al. TinyBERT: Distilling BERT for Natural Language Understanding. In Findings of EMNLP'20. https://arxiv.org/pdf/1909.10351.pdf [3] Zafrir et al. Q8BERT: Quantized 8Bit BERT. In NeurIPS'19 EMC2 Workshop. https://arxiv.org/pdf/1910.06188.pdf [4] Bengio et al. Estimating or Propagating Gradients Through Stochastic Neurons for Conditional Computation. arXiv Preprint. https://arxiv.org/pdf/1308.3432.pdf [5] IEEE 754 - Wikipedia. https://zh.wikipedia.org/wiki/IEEE_754 [6] Frankle et al. The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks. In ICLR'19. https://arxiv.org/pdf/1803.03635.pdf

标签:BERT,树莓,剪枝,arxiv,13,https,pdf,org
From: https://blog.51cto.com/xixiaoyao/7081551

相关文章

  • NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双
    NLP文本匹配任务TextMatching[无监督训练]:SimCSE、ESimCSE、DiffCSE项目实践文本匹配多用于计算两个文本之间的相似度,该示例会基于ESimCSE实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。例如,在搜索引擎中,我们通常需要判断......
  • NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双
    NLP文本匹配任务TextMatching[有监督训练]:PointWise(单塔)、DSSM(双塔)、SentenceBERT(双塔)项目实践0背景介绍以及相关概念本项目对3种常用的文本匹配的方法进行实现:PointWise(单塔)、DSSM(双塔)、SentenceBERT(双塔)。文本匹配(TextMatching)是NLP下的一个分支,通常用于计算两个句子......
  • 8.13总结
    今天早早收拾好行李,去爬泰山了,听说泰山会制服每一个嘴硬的人,跟着其他三个朋友前去。到了地方,找好民宿后我i们坐在一起聊聊天没很享受这种氛围,晚上一起去外面吃了个饭,吃饱后我们步行回民宿去,准备去泰山了,大约十点半多年开始爬,希望能成功登顶......
  • LeetCode 213.打家劫舍II
    1.题目:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存......
  • 删数问题 洛谷p1323
    决定做一系列贪心,贪心真的,最早学的算法,到现在还有时候不太敢贪,还贪不来,一直挺逃避贪心问题的。。 删除前的数字可以先用优先队列对所有数字进行预处理,数据范围是3e4,也不是很大,直接全部处理了吧。constintN=1e5+10,inf=0x3f3f3f3f3f3f3f3f,MAX=3e4+10;inta[N]......
  • 1378. 使用唯一标识码替换员工ID
    1378.使用唯一标识码替换员工ID2023年8月14日10:50:221378.使用唯一标识码替换员工ID简单39相关企业SQLSchemaPandasSchemaEmployees表:+---------------+---------+|ColumnName|Type|+---------------+---------+|id|int||name......
  • R7 6800H和i5 11300H参数对比 R76800H和i511300H选哪个好
    R76800H采用6纳米工艺8核16线程,主频3.2GHz-4.7GHz,一级缓存512KB二级缓存4MB三级缓存16MB热设计功耗(TDP)45W内存参数,搭载了DDR5选R76800H还是i511300H这些点很重要!看完你就知道了http://www.adiannao.cn/dy酷睿i5-11300H配置为4个内核及8个线程,具备8MB的L3缓存......
  • i913900hx和i912900h区别 i9 13900hx和12900h对比
    i913900Hx采用10nm制作工艺最高睿频5.4GHz二十四核心三十二线程三级缓存36MB热设计功耗(TDP)157W选i913900hx还是i912900h这些点很重要看过你就懂了http://www.adiannao.cn/dyi912900H参数配置:10nm的工艺制程,6个大核8个小核,14核心20线程,3.8GHz的主频,5.0GHz的睿频,功耗最高为1......
  • 达人评测i9 13900hx和i5 13500h选哪个好 i913900hx和i513500h
    i913900Hx采用10nm制作工艺最高睿频5.4GHz二十四核心三十二线程三级缓存36MB热设计功耗(TDP)157W选i913900hx和i513500h这些点很重要看过你就懂了http://www.adiannao.cn/dyi513500h采用10纳米制作工艺最高睿频4.7GHz十二核心十六线程三级缓存18MB热设计功耗(TDP)45W......
  • r9 7845hx和i9 13900hx选哪个 锐龙r97845hx和酷睿i913900hx对比
    i913900Hx采用10nm制作工艺最高睿频5.4GHz二十四核心三十二线程三级缓存36MB热设计功耗(TDP)157W选i913900hx和r97845hx这些点很重要看过你就懂了http://www.adiannao.cn/dy锐龙97845HX采用Zen4架构,十二核心二十四线程,基础频率3.0GHz,加速频率5.2GHz,二级缓存12MB,三级缓存64M......