查看原文
其他

开源了!文心大模型 ERNIE 3.0 轻量级模型,又准又快,效果全开

百度AI 2022-12-19


大模型落地之路维艰

近年来,随着深度学习技术的迅速发展,大模型预训练范式通过一次次刷新各种评测基线,证明了其卓越的学习与迁移能力。在这个过程中,研究者们发现通过不断扩大模型参数能持续提升深度学习模型的威力。然而,参数的指数级增长意味着模型体积增大、所需计算资源增多、耗时更长,这在业务方对线上响应效率的要求及机器资源预算等层面,都为大模型落地带来了极大的挑战。



如何在保证效果的前提下压缩模型?如何适配 CPU、GPU 等多硬件的加速?如何让加速工具触手可及?这是行业内亟待解决的课题。现在,PaddleNLP 解答了这些难题。


PaddleNLP 是基于深度学习框架飞桨的自然语言处理开发库。本次 PaddleNLP 最新开源的预训练模型提供“训-压-推”全流程加速方案,不断拓展大模型性能的边界,且大幅降低了各类模型加速技术的使用门槛:


  • 文心 ERNIE-Tiny 轻量化技术加持的多个文心 ERNIE 3.0 轻量级模型刷新了中文小模型的 SOTA 成绩,均已开源;
  • 在下游任务上对模型进行动态裁剪和量化推理,性能加速3倍
  • 结合高性能文本处理算子库 FasterTokenizer,性能加速7倍
  • 提供 CPU 和 GPU、服务器、端侧等多种部署方案


图1 PaddleNLP“训-压-推”全流程加速方案

整套模型轻量化技术亮相文心 ERNIE-Tiny 在线蒸馏方案
蒸馏,通俗来说是通过将大模型(可以理解为“教师模型”)的知识传递给小模型(可以理解为“学生模型”),使得大模型的能力能够迁移到小模型上。蒸馏技术大家可能并不陌生,但是如今动辄百亿、千亿的大模型,如何有效蒸馏到小模型,是一个棘手的问题。由于教师模型与学生模型尺寸差距千倍以上,模型蒸馏难度极大,甚至有失效的风险。为此,文心 ERNIE-Tiny[1] 在线蒸馏方案引入了助教模型进行蒸馏,利用助教作为知识传递的桥梁以解决学生模型和大模型表达空间相距过大的问题,从而促进蒸馏效率的提升。

图2 模型蒸馏示意

文心 ERNIE-Tiny 在线蒸馏技术将教师模型的知识信号传递给若干个学生模型同时训练,从而在蒸馏阶段一次性产出4个不同尺寸的学生模型。此外,本次还开源了 12L768H 的文心 ERNIE 3.0-Base,方便不同性能需求的应用场景使用。

  • 文心 ERNIE 3.0-Base (12-layer, 768-hidden, 12-heads)
  • 文心 ERNIE 3.0-Medium (6-layer, 768-hidden, 12-heads)
  • 文心 ERNIE 3.0-Mini (6-layer, 384-hidden, 12-heads)
  • 文心 ERNIE 3.0-Micro (4-layer, 384-hidden, 12-heads)
  • 文心 ERNIE 3.0-Nano (4-layer, 312-hidden, 12-heads)

文心 ERNIE-Tiny 在线蒸馏方案效果显著,模型参数压缩率可达99.98%,压缩版模型仅保留0.02%参数规模就能与原有模型效果相当,刷新了中文小模型的 SOTA 成绩。具体对比数据见如下模型“精度-时延”图,横坐标表示性能(Latency,单位毫秒,在长文本分类数据集 IFLYTEK 上测试,单个样本的推理时长),纵坐标表示模型在 CLUE 10个任务上的平均精度。图中模型名称下方标注了模型的参数量。

图3 CPU 下文心 ERNIE 3.0 轻量级模型时延与效果图

图4 GPU 下文心 ERNIE 3.0 轻量级模型时延与效果图

图中,越偏左上方的模型越优秀,可以看到文心 ERNIE 3.0 轻量级模型在同等规模的开源模型中,综合实力领先其他同类型轻量级模型,这波开源厉害了!与 RoBERTa-Base 相比,12L768H 的文心 ERNIE 3.0-Base 平均精度绝对提升了1.9个点,比同等规模的 BERT-Base-Chinese 提升3.5个点;6L768H 的文心 ERNIE 3.0-Medium 相比 12L768H 的 UER/Chinese-RoBERTa,在节省一倍运算时间基础上,获得比两倍大的 RoBERTa 更好的效果;另外值得一提的是,这些小模型能够直接部署在 CPU 上,可以称得上是 CPU 开发者的“希望之光”。

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

图5 代码展示

此外,PaddleNLP 还提供了 CLUE Benchmark 的一键评测脚本,并提供了大量中文预训练模型在 CLUE 上的效果。PaddleNLP 接入了 Grid Search 策略,支持在超参列表范围内自动搜索超参,保留最佳结果和对应的超参数,方便一键复现模型效果,且打通了 CLUE 各个任务“数据处理-训练-预测-结果提交”的流程,方便用户快速提交 CLUE 榜单[2]。

以上模型均已开源,欢迎 star 支持

⭐ 点击阅读原文获得链接 ⭐
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0

动态裁剪和量化推理
上一节介绍了任务无关的模型蒸馏技术,如果想要进一步提升模型性能,还可以在下游任务上对模型 Fine-tune 后,通过裁剪、量化等手段,获得更小、更快的模型。

结合飞桨模型压缩工具 PaddleSlim,PaddleNLP 发布了裁剪、量化级联压缩方案。基于 PaddleNLP Trainer API 的模型压缩 API,可大幅降低开发成本。压缩 API 支持对文心 ERNIE、BERT 等 Transformers 类下游任务微调模型进行裁剪和量化。只需要简单地调用 compress() 即可一键启动裁剪量化流程,并自动保存压缩后的模型。

图6 PaddleNLP 模型裁剪、量化使用示例


速度领先的文本处理库FasterTokenizer
文心 ERNIE-Tiny 在线蒸馏技术加持的文心 ERNIE 3.0 轻量级模型本身已经“又快又准”,再加上裁剪、量化策略以及飞桨高性能文本处理算子库 FasterTokenizer 就能实现更强大的加速效果,如下图所示:

图7 GPU 下多种性能优化策略的加速比展示

如图,FasterTokenizer 在文心 ERNIE 3.0 轻量级模型裁剪、量化基础上性能加速达到7倍。仔细研读一番代码,我们会发现,PaddleNLP 已将 Google 于去年底发布的 LinMaxMatch[3] 算法,集成至 FasterTokenizer。该算法通过结合 Aho-Corasick 字符串匹配算法,保证字符串在失配时可以将遍历过的字符保存为若干个 tokens,并快速跳至失配节点,避免从头匹配,计算复杂度 MaxMatch 的 O(N2) 优化至O(N)。与 Hugging Face 的中文切词效率进行对比,PaddleNLP FasterTokenizer 速度显著领先。例如在 iflytek 数据集(平均长度289)上,FasterTokenizer 比 Hugging Face Tokenizers 加速3倍以上。

图8 同类产品中文切词效率对比

为了降低开发门槛,把“酷炫”的底层技术大范围普及,PaddleNLP 做出了出色的设计。在调用 AutoTokenizer 时,只需进行参数配置,即可开启  FasterTokenizer,方便大家使用。

图9 FasterTokenizer 调用方法


多种部署方案
飞桨提供了服务端、移动端、网页前端等丰富的部署工具。PaddleNLP 本次围绕文心 ERNIE 3.0 发布了一系列高性能部署方案,且通过 Paddle2ONNX 转换工具进一步拓宽了飞桨模型的部署通路,适用于多场景的部署需求。用户可参照官方提供的完整示例,快速部署上线,包括 Python 服务端部署、Triton Inference Server 服务化部署、Paddle Serving 服务化部署、ONNXRuntime 部署等多个示例。

图10 飞桨部署方案说明

文心 ERNIE-Tiny 技术实际应用落地介绍
实际案例 1

  • 某医疗行业用户使用通用信息抽取技术 UIE,结合文心 ERNIE 3.0-Medium 提升了效果和性能:

A 同学使用 UIE 对医疗领域的病历文本进行实体抽取和关系抽取,在其特定数据集上,使用 6L768H 的文心 ERNIE 3.0-Medium 获得与 12L768H 模型相当的效果,速度提升一倍。

实际案例 2

  • 某金融行业用户使用文心 ERNIE 3.0-Mini 实现业务技术升级:

B 同学部门没有 GPU 资源,一直都在使用 RNN 模型进行文档自动归档工作。替换成文心 ERNIE 3.0-Mini 模型后,顺利部署到 CPU 机器上。使用 PaddleNLP,仅用一天时间就完成了模型的部署上线。

实际案例 3
  • 某互联网行业用户使用文心 ERNIE 3.0-Base 实现效果、性能双提升:

C 同学在公司文本分类和阅读理解任务上,分别使用了文心 ERNIE 1.0 和文心 ERNIE-Gram 模型,之后替换成文心 ERNIE 3.0-Base 模型,再配套 PaddleNLP 中的裁剪、量化策略,效果和性能双双提升。

干货福利
Notebook 教程
PaddleNLP 还提供了一系列围绕文心 ERNIE 3.0 的 Notebook 交互式教程,方便大家快速上手实践,可进入官方地址自取。

图11 ERNIE 3.0 应用示例

官网地址
更多干货,可进入官网来获取,小编送上传送门:
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0

入群有礼
欢迎加入技术交流群
共享落地经验


入群福利:

  • 与众多社区开发者以及官方团队深度交流;
  • 及时获取 PaddleNLP 最新技能;
  • 获取 10G 重磅 NLP 学习大礼包。

图12 PaddleNLP 学习大礼包

PaddleNLP:不忘初心感谢广大开发者的支持
PaddleNLP 一路陪伴着广大开发者的成长。今年5月,PaddleNLP 开源的通用信息抽取技术 UIE 颇受好评,被应用上线到金融、医疗、法律、互联网、泛工业等各行各业。PaddleNLP 团队针对模型轻量化、部署便捷化等社区高频需求不断迭代产品功能,希望能够持续给大家带来惊喜。社区开发者们也始终伴随 PaddleNLP 的成长,给予我们真诚的反馈,并积极投入到 PaddleNLP 的项目建设中,感谢大家,我们一起在路上!

  • PaddleNLP 频频登上 GitHub Trending 榜单,广受国内外开发者欢迎;
  • 社群氛围活跃,信息抽取 UIE 技术发布一个月后热度不减,频获好评;
  • 版本持续更新,100多位开发者贡献,入选《2021中国开源年度报告》最活跃产品榜单。

图13 PaddleNLP 影响力动图

了解更多
  • 官网地址:

https://www.paddlepaddle.org.cn
  • PaddleNLP 项目地址:

GitHub:https://github.com/PaddlePaddle/PaddleNLP
Gitee:https://gitee.com/paddlepaddle/PaddleNLP

参考来源
[1] ERNIE-Tiny: A Progressive Distillation Framework for Pretrained Transformer Compression. 
见 https://arxiv.org/abs/2106.02241
[2] https://www.cluebenchmarks.com/
[3] Fast WordPiece Tokenization. 
见 https://arxiv.org/abs/2012.15524

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存