大家好,今天带来的是有关文心ERNIE 3.0 Tiny新升级内容的文章。

近年来,跟着深度学习技术的迅速发展,大规划预练习范式经过一次又一次改写各种评测基线证明了其卓越的学习与迁移才能。在这个进程中,研究者们发现经过不断地扩大模型参数便能持续提高深度学习模型的威力。但是,参数的指数级增加意味着模型体积增大、所需核算资源增多、核算耗时更长,而这无论出于事务线上呼应效率的要求还是机器资源预算问题,都给大模型落地带来了极大的应战。让我们一同看看文心ERNIE 3.0 Tiny如何来处理这些问题的吧!

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!
图:模型上线时精度、时延、内显存占用等多重需求暗示

如安在确保作用的前提下紧缩模型?如何适配 CPU、GPU 等多硬件的加快?如安在端侧场景下落地大模型?如何让加快东西触手可及?这是行业界亟待处理的课题。2022年6月,文心大模型中的轻量化技术加持的多个文心ERNIE 3.0 Tiny轻量级模型(下文简称文心ERNIE 3.0 Tiny v1)开源至飞桨自然语言处理模型库PaddleNLP中,该模型改写了中文小模型的SOTA成果,配套模型动态裁剪和量化推理计划,被学术与工业界广泛运用。

近期,文心ERNIE 3.0 Tiny升级版–––文心ERNIE 3.0 Tiny v2也开源了!相较于v1,文心ERNIE 3.0 Tiny v2在Out-domain(域外数据)、Low-resource(小样本数据)的下流使命上精度显著提高,并且v2还开源了3L128H结构,5.99M参数量的小模型,更适用于端侧等低资源场景。

一起,PaddleNLP依托PaddleSlim、Paddle Lite、FastDeploy开源了一整套端上语义了解紧缩和布置计划。经过模型裁剪、量化感知练习、Embedding量化等紧缩计划,在保持模型精度不降的情况下,推理加快2.1倍,内存占用下降62.18%(下降2.6倍),体积缩小92.2%(缩小12.8倍)仅5.4M。再结合高功用NLP处理库FastTokenizer对分词阶段进行加快,使端到端推理功用显著提高,从而将文心ERNIE 3.0 Tiny v2模型成功布置至端侧。由于端侧布置对内存占用的要求比服务端更高,因此该计划也相同适用于服务端布置。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!
图:端侧设备暗示

文心 ERNIE 3.0 Tiny v2开源

百度文心大模型团队在2021年末发布了百亿等级大模型文心ERNIE 3.0和千亿等级的大模型文心ERNIE 3.0 Titan。为了让大模型的才能能够真实在一线事务发挥威力,文心大模型团队推出多个轻量级模型,即文心ERNIE 3.0 Tiny系列,改写了中文小模型的成果。除了在GPU上,这些模型也能在CPU上轻松调用,极大拓展了大模型的运用场景。本次开源的文心ERNIE 3.0 Tiny v2,使教师模型预先注入下流常识并参与多使命练习,大大提高了小模型在下流使命上的作用。

多使命学习提高泛化性

文心ERNIE 3.0 Tiny v1直接经过在线蒸馏技术将预练习大模型紧缩成预练习小模型。在此根底上,文心ERNIE 3.0 Tiny v2 首先在多个下流使命中微调教师模型,让教师模型学习到下流使命相关常识,并将这些常识经过蒸馏的方式传导给学生模型。虽然学生模型彻底没有见过下流数据,也能够蒸馏获取到下流使命的相关常识,进而使下流使命的作用得到提高。由于教师模型是在多使命上进行微调的,多使命学习带来的强泛化性也能传递给学生模型,从而提高小模型的泛化性,终究取得的学生模型相比文心ERNIE 3.0 Tiny v1在Out-domain和Low-resource数据集上取得大幅提高。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!
图:文心ERNIE 3.0 Tiny v2暗示

文心ERNIE 3.0 Tiny v2 包含一系列不同尺寸的中文预练习模型,便利不同功用需求的运用场景运用:

  • 文心ERNIE 3.0 Tiny-Base-v2 (12-layer, 768-hidden, 12-heads)
  • 文心ERNIE 3.0 Tiny-Medium-v2 (6-layer, 768-hidden, 12-heads)
  • 文心ERNIE 3.0 Tiny-Mini-v2 (6-layer, 384-hidden, 12-heads)
  • 文心ERNIE 3.0 Tiny-Micro-v2 (4-layer, 384-hidden, 12-heads)
  • 文心ERNIE 3.0 Tiny-Nano-v2 (4-layer, 312-hidden, 12-heads)
  • 文心ERNIE 3.0 Tiny-Pico-v2 (3-layer, 128-hidden, 2-heads)

除以上中文模型外,本次还发布了英文版文心ERNIE 3.0 Tiny-Mini-v2,适用于各类英文使命。多使命学习的才能加持下,在文本分类、文本推理、实体抽取、问答等各种 NLU 使命上,文心ERNIE 3.0 Tiny v2相比文心ERNIE 3.0 Tiny v1在Out-domain、Low-resource数据上均取得显著的作用提高,在In-domain上也有一定提高

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

文心ERNIE 3.0 Tiny v2 多使命学习、在线蒸馏计划作用显著,改写了中文小模型的SOTA成果。详细对比数据见如下模型精度-时延图,横坐标表示在 ARM CPU(高通865芯片)上,依据ARMv8 arch测试(batch_size=1, seq_len=32)的推理时延(Latency,单位毫秒),纵坐标是 CLUE 10 个使命上的均匀精度(包含文本分类、文本匹配、自然语言推理、代词消歧、阅览了解等使命),其间CMRC2018阅览了解使命的评价指标是Exact Match(EM),其它使命的评价指标均是Accuracy。模型名下方标示了模型的参数量。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

图中越靠左上方的模型,精度和功用水平越高。能够看到文心ERNIE 3.0 Tiny v2在同等规划的开源模型中,归纳实力抢先其他同类型轻量级模型,这波开源厉害了!与UER/RoBERTa-Base相比,12L768H的文心ERNIE 3.0 Base均匀精度提高了4.5个点;6L768H的文心ERNIE 3.0 Medium相比12L768H的UER/Chinese-RoBERTa高2.4,并且节约一倍运算时间;别的值得一提的是,这些小模型能够直接布置在CPU上,简直是CPU开发者的希望之光!

在PaddleNLP中,可一键加载以上模型。

frompaddlenlp.transformersimport*
tokenizer=AutoTokenizer.from_pretrained("ernie-3.0-tiny-medium-v2-zh")
#用于分类使命(本项目中的意图识别使命)
seq_cls_model=AutoModelForSequenceClassification.from_pretrained("ernie-3.0-tiny-medium-v2-zh")
#用于序列标示使命(本项目中的槽位填充使命)
token_cls_model=AutoModelForTokenClassification.from_pretrained("ernie-3.0-tiny-medium-v2-zh")
#用于阅览了解使命
qa_model=AutoModelForQuestionAnswering.from_pretrained("ernie-3.0-tiny-medium-v2-zh")

此外,PaddleNLP还供给了CLUE Benchmark的一键评测脚本,并供给了大量中文预练习模型在CLUE上的作用。PaddleNLP接入了Grid Search战略,支撑在超参列表范围内主动查找超参,保存最佳成果和对应的超参数,便利一键复现模型作用,且打通了CLUE各个使命数据处理、练习、猜测、成果提交的流程,便利用户快速提交CLUE榜单。

以上模型均已开源,如有帮助,欢迎star支撑。

  • 模型地址

github.com/PaddlePaddl…

端上语义了解紧缩、布置计划

由文心大模型蒸馏得到的文心ERNIE 3.0 Tiny v2能够直接在下流使命上微调运用,如果想要将模型布置在移动端、边际端,或许想要进一步紧缩模型体积,下降推理时延,可运用PaddleNLP开源的端上语义了解紧缩计划。以边际端事务上线场景为例,模型经过紧缩后,精度根本无损,端到端推理速度到达本来的2.13倍,内存占用减小了62.18%,体积减小了92.2%

结合飞桨模型紧缩东西PaddleSlim,PaddleNLP发布了端上语义了解紧缩计划,包含裁剪、量化级联紧缩,如下图所示:

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

依据PaddleNLP供给的的模型紧缩API,可大幅下降开发本钱。紧缩API支撑对ERNIE、BERT等ransformer类下流使命微调模型进行裁剪和量化。只需求简略地调用compress()即可一键启动裁剪量化流程,并主动保存紧缩后的模型。

frompaddlenlp.trainerimportPdArgumentParser,CompressionArguments
# Step1:运用 PdArgumentParser 解析从命令行传入的超参数,以获取紧缩参数 compression_args;
parser=PdArgumentParser(CompressionArguments)
compression_args=parser.parse_args_into_dataclasses()
#Step2:实例化Trainer并调用compress()
trainer=Trainer(
model=model,
args=compression_args,
data_collator=data_collator,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
criterion=criterion)
trainer.compress()

PaddleNLP模型裁剪、量化运用示例

下面会对紧缩计划中的词表裁剪、模型宽度裁剪、量化感知练习、词表量化进行介绍。

词表裁剪

端侧布置对内存占用的要求较高,而文心ERNIE 3.0 Tiny预练习模型的词表参数量在总参数量中占比很大,因此在下流使命微调之前,能够按照词频对词表进行裁剪,去除呈现频次较低的词,这样能够削减分词后[UNK]的呈现,使精度得到最大极限保持。例如,某数据集4w巨细的词表,高频呈现的词不到1w个,此时经过词表裁剪能够节约不少内存。

模型宽度裁剪

依据DynaBERT宽度自适应裁剪战略,经过常识蒸馏的办法,在下流使命中将文心ERNIE 3.0 Tiny的常识迁移到宽度更窄的学生网络中,最终得到作用与教师模型挨近的学生模型。一般来说,关于4到6层的NLU模型,宽度裁剪1/4可根本确保精度无损。DynaBERT宽度自适应裁剪战略首要分为以下3个进程:

Step1

依据Attention Head和FFN中神经元的重要性对神经元进行从头排序,将新模型作为待紧缩的模型,这样能够确保之后对神经元的裁剪能够更大程度地保存更重要的神经元。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

Step2

用教师模型一起蒸馏按不同比例紧缩宽度的多个模型。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

Step3

在蒸馏后得到的不同宽度的学生模型中,选择巨细和精度符合要求的模型并导出。

量化感知练习

模型量化是一种经过将练习好的模型参数、激活值从FP32浮点数转换成INT8整数来减小存储、加快核算速度、下降功耗的模型紧缩办法。现在首要有两种量化办法:

  • 静态离线量化:运用少数校准数据核算量化信息,可快速得到量化模型;
  • 量化感知练习:在模型中插入量化、反量化算子并进行练习,使模型在练习中学习到量化信息 。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!
图:量化感知练习 vs 离线量化

在对文心ERNIE 3.0 Tiny的紧缩中,更引荐运用量化感知练习的方式。通常情况下,运用量化感知练习的办法能够比运用静态离线量化取得更高的精度。这是因为在量化感知练习之前,紧缩API在模型的矩阵乘算子前插入量化、反量化算子,使量化带来的误差能够在练习进程中被建模和优化,能够使模型被量化后精度根本无损。

Embedding 量化

端侧布置对显存的要求比较高,为了能进一步节约内存占用,可对模型的 Embedding 权重进行INT8量化,并将精度的丢失保持在0.5%之内。Embedding 量化首要分两步:

Step1

离线统计权重在log域上的分布并进行分桶,依据分桶成果将FP32权重量化成INT8权重。如图所示,量化算子会统计权重在log域上量化后的数值分布,取呈现次数top k的FP32数值,记录在对应的x轴上,作为buckets的value,其间key为 [-128,127] 范围内的整数。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

Step2

结构INT8推理模型:将权重设置为量化后的INT8权重,并在Embedding对应的算子后,插入反量化算子,反量化算子依据buckets将INT8数值类型的输入 [5, 3, 6] 反量化为 [1.51, 0.75, 2.50],完成方式为查表。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

布置

模型紧缩后,精度根本无损,体积减小了92.2%,仅有5.4MB。到此,算法侧的工作根本完结。为了进一步下降布置难度,能够运用飞桨FastDeploy对模型进行布置。FastDeploy是一款全场景、易用灵敏、极致高效的AI推理布置东西,供给开箱即用的布置体验。

FastDeploy为NLP使命供给了一整套完整的布置Pipeline,供给文心ERNIE 3.0 Tiny模型从文本预处理、推理引擎Runtime以及后处理三个阶段所需求的接口模块,开发者能够依据这些接口模块在云、边、端上布置各类常见的NLP使命,如文本分类、序列标示、信息抽取等。

FastDeploy中的Paddle Lite后端依据算子融合和常量折叠对深度模型进行优化,无缝衔接了Paddle Lite的FP16和INT8的推理才能,可使模型推理速度大幅提高。其集成的高功用NLP处理库FastTokenizer(视觉领域集成了高功用AI处理库FlyCV),能够对分词阶段进行加快,适配GPU、CPU等多硬件。例如在麒麟985芯片上测试,单条文本的分词时延低于0.1毫秒

在端到端布置方面,FastDeploy在Android端现在支撑CV和NLP中的7+场景,35+模型的开箱即用,以及简略共同的API,让Android开发者快速完结AI落地,并且取得考虑前后处理在内端到端高功用的布置体验。

综上,依据FastDeploy布置东西,可完结文心ERNIE 3.0 Tiny端侧和服务端的高效布置。以下动图展现了依据文心ERNIE 3.0 Tiny v2的意图识别、槽位填充联合模型,运用FastDeploy布置在Android APP上进行推理的作用展现:

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

  • GitHub地址

github.com/PaddlePaddl…

总结来说,以上各类紧缩战略以及对应的推理功用如果从零完成非常复杂,飞桨模型紧缩东西库PaddleSlim和飞桨高功用深度学习端侧推理引擎Paddle Lite供给了一系列紧缩、推理东西链。飞桨AI推理布置东西FastDeploy对其进一步封装,使开发者能够经过更简略的API去完成模型紧缩、推理布置流程,适配多领域模型,并兼容多硬件。PaddleNLP依托以上东西,供给NLP模型数据处理、练习、紧缩、布置全流程的最佳实践。

文心大模型

跟着数据井喷、算法前进和算力突破,作用好、泛化才能强、通用性强的预练习大模型(以下简称“大模型”),成为人工智能发展的要害方向与人工智能工业运用的根底底座。

文心大模型源于工业、服务于工业,是工业级常识增强壮模型,涵盖根底大模型、使命大模型、行业大模型,大模型总量达36个,并构建了业界规划最大的工业大模型体系。文心大模型配套了丰富的东西与渠道层,包含大模型开发套件、API以及内置文心大模型才能的EasyDL和BML开发渠道。 百度经过大模型与国产深度学习结构融合发展,打造了自主创新的AI底座,大幅下降了AI开发和运用的门槛,满足真实场景中的运用需求,真实发挥大模型驱动AI规划化运用的工业价值。

文心ERNIE 3.0 Tiny新升级!端侧压缩部署“小” “快” “灵”!

  • 文心大模型官网地址

wenxin.baidu.com/

相关项目地址

  • 官网地址

www.paddlepaddle.org.cn

  • PaddleNLP

github.com/PaddlePaddl…

  • FastDeploy

github.com/PaddlePaddl…

  • PaddleSlim

github.com/PaddlePaddl…

  • Paddle Lite

github.com/PaddlePaddl…

参考文献

[1] Liu W, Chen X, Liu J, et al. ERNIE 3.0 Tiny: Frustratingly Simple Method to Improve Task-Agnostic Distillation Generalization[J]. arXiv preprint arXiv:2301.03416, 2023.

[2] Su W, Chen X, Feng S, et al. ERNIE-Tiny: A Progressive Distillation Framework for Pretrained Transformer Compression[J]. arXiv preprint arXiv:2106.02241, 2021.

[3] Wang S, Sun Y, Xiang Y, et al. ERNIE 3.0 Titan: Exploring Larger-scale Knowledge Enhanced Pre-training for Language Understanding and Generation[J]. arXiv preprint arXiv:2112.12731, 2021.

[4] Sun Y, Wang S, Feng S, et al. ERNIE 3.0: Large-scale Knowledge Enhanced Pre-training for Language Understanding and Generation[J]. arXiv preprint arXiv:2107.02137, 2021.

[5] Hou L, Huang Z, Shang L, Jiang X, Chen X and Liu Q. DynaBERT: Dynamic BERT with Adaptive Width and Depth[J]. arXiv preprint arXiv:2004.04037, 2020.[6] Wu H, Judd P, Zhang X, Isaev M and Micikevicius P. Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation[J]. arXiv preprint arXiv:2004.09602v1, 2020.