EasyNLP开源|中文NLP+大模型落地,EasyNLP is all you need

简介:EasyNLP背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。

作者 | 临在、岑鸣、熊兮
来源 | 阿里开发者公众号

一 导读

随着BERT、Megatron、GPT-3等预训练模型在NLP领域取得瞩目的成果,越来越多团队投身到超大规模训练中,这使得训练模型的规模从亿级别发展到了千亿甚至万亿的规模。然而,这类超大规模的模型运用于实际场景中仍然有一些挑战。首先,模型参数量过大使得训练和推理速度过慢且部署成本极高;其次在很多实际场景中数据量不足的问题仍然制约着大模型在小样本场景中的应用,提高预训练模型在小样本场景的泛化性依然存在挑战。为了应对以上问题,PAI团队推出了EasyNLP中文NLP算法框架,助力大模型快速且高效的落地。

EasyNLP背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。

二 EasyNLP简介

EasyNLP是PAI算法团队基于PyTorch开发的易用且丰富的中文NLP算法框架,支持常用的中文预训练模型和大模型落地技术,并且提供了从训练到部署的一站式NLP开发体验。EasyNLP提供了简洁的接口供用户开发NLP模型,包括NLP应用AppZoo和预训练ModelZoo,同时提供技术帮助用户高效的落地超大预训练模型到业务。除此之外EasyNLP框架借助PAI团队在通信优化、资源调度方面的深厚积累,可以为用户提供大规模、鲁棒的训练能力,同时可以无缝对接PAI系列产品,例如PAI-DLC、PAI-DSW、PAI-Designer和PAI-EAS,给用户带来高效的从训练到落地的完整体验。

EasyNLP已经在阿里巴巴内部支持10多个BU的业务,同时在阿里云上提供了NLP解决方案和ModelHub模型帮助用户解决业务问题,也提供用户自定义模型服务方便用户打造自研模型。在经过内部业务打磨之后,我们将EasyNLP推向开源社区,希望能够服务更多的NLP算法开发者和研究者,也希望和社区一起推动NLP技术特别是中文NLP的快速发展和业务落地。

EasyNLP is a Comprehensive and Easy-to-use NLP Toolkit[1]

EasyNLP主要特性如下:

  • 易用且兼容开源:EasyNLP支持常用的中文NLP数据和模型,方便用户评测中文NLP技术。除了提供易用简洁的PAI命令形式对前沿NLP算法进行调用以外,EasyNLP还抽象了一定的自定义模块如AppZoo和ModelZoo,降低NLP应用的门槛,同时ModelZoo里面常见的预训练模型和PAI自研的模型,包括知识预训练模型等。EasyNLP可以无缝接入huggingface/ transformers的模型,也兼容EasyTransfer模型,并且可以借助框架自带的分布式训练框架(基于Torch-Accelerator)提升训练效率。
  • 大模型小样本落地技术:EasyNLP框架集成了多种经典的小样本学习算法,例如PET、P-Tuning等,实现基于大模型的小样本数据调优,从而解决大模型与小训练集不相匹配的问题。此外,PAI团队结合经典小样本学习算法和对比学习的思路,提出了一种不增添任何新的参数与任何人工设置模版与标签词的方案Contrastive Prompt Tuning,在FewCLUE小样本学习榜单取得第一名,相比Finetune有超过10%的提升。
  • 大模型知识蒸馏技术:鉴于大模型参数大难以落地的问题,EasyNLP提供知识蒸馏功能帮助蒸馏大模型从而得到高效的小模型来满足线上部署服务的需求。同时EasyNLP提供MetaKD算法,支持元知识蒸馏,提升学生模型的效果,在很多领域上甚至可以跟教师模型的效果持平。同时,EasyNLP支持数据增强,通过预训练模型来增强目标领域的数据,可以有效的提升知识蒸馏的效果。

三 EasyNLP框架特点

1 整体架构

如图所示,EasyNLP架构主要有如下几个核心模块:

  • 基础模块:提供了预训练模型库ModelZoo,支持常用的中文预训练模型,包括BERT,MacBERT,WOBERT等;也提供常用的NN模块,方便用户自定义模型;
  • 应用层:AppZoo支持常见的NLP应用比方说文本分类,文本匹配等;EasyNLP支持预训练模型落地工具,包括小样本学习和知识蒸馏,助力大模型快速落地,这里也集成了多个PAI团队自研的算法;
  • NLP应用和解决方案:提供了多个NLP解决方案和ModelHub模型帮助用户解决业务问题;
  • 工具层:可以支持本地拉起服务,也可以在阿里云产品上部署和调用,比方说PAI-DLC、PAI-DSW、PAI-Designer和PAI-EAS,给用户带来高效的从训练到落地的完整体验。

2 大模型知识蒸馏技术

随着BERT等预训练语言模型在各项任务上都取得SOTA效果,大规模预训练模型已经成为 NLP学习管道中的重要组成部分,但是这类模型的参数量太大,而且训练和推理速度慢,严重影响到了需要较高QPS的线上场景,部署成本非常高。EasyNLP框架集成了经典的数据增强和知识蒸馏算法,使得训练出的小模型在相应任务行为上能够逼近大模型的效果。

由于现有大部分的知识蒸馏工作都聚焦在同领域模型的蒸馏,而忽略了跨领域模型对目标蒸馏任务效果的提升。PAI团队进一步提出了元知识蒸馏算法MetaKD(Meta Knowledge Distillation),将跨领域的可迁移知识学出,在蒸馏阶段额外对可迁移的知识进行蒸馏。MetaKD算法使得学习到的学生模型在相应的领域的效果显著提升,逼近教师模型的效果。这一算法的核心框架图如下所示:

其中,MetaKD算法包括两个阶段。第一个阶段为元教师模型学习(Meta-teacher Learning)阶段,算法从多个领域的训练数据协同学习元教师模型,它对每个领域的样本都计算其典型得分(Prototype Score),使更具有跨领域典型性的样本在学习阶段有更大的权重。第二个阶段为元蒸馏(Meta-distillation)阶段,将元教师模型选择性地蒸馏到特定领域的学习任务上。由于元教师模型可能无法做到在所有领域上都有精确的预测效果,我们额外引入了领域专业性权重(Domain-expertise Weight),使元教师模型只将置信度最高的知识迁移到学生模型,避免学生模型对元教师模型的过拟合。

下图展示了MetaKD算法在MNLI的5个领域数据集的跨任务蒸馏效果。由结果可见,MetaKD蒸馏出的BERT-Small模型的和原始BERT模型相比,在保持模型精度值平均只下降1.5%的前提下参数减少了87%,大大减少了部署的压力。

目前,MetaKD算法也已经集成到EasyNLP框架中开源。

知识蒸馏实践详见[2]。

3 大模型小样本学习技术

预训练语言模型规模的扩大,使得这一类模型在自然语言理解等相关任务效果不断提升。然而,这些模型的参数空间比较大,如果在下游任务上直接对这些模型进行微调,为了达到较好的模型泛化性,需要较多的训练数据。在实际业务场景中,特别是垂直领域、特定行业中,训练样本数量不足的问题广泛存在,极大地影响这些模型在下游任务的准确度。为了解决这一问题,EasyNLP框架集成了多种经典的小样本学习算法,例如PET、P-Tuning等,实现基于预训练语言模型的小样本数据调优,从而解决大模型与小训练集不相匹配的问题。

此外,PAI团队结合经典小样本学习算法和对比学习的思路,提出了一种不增添任何新的参数与任何人工设置模版与标签词的方案Contrastive Prompt Tuning (CP-Tuning)。这一算法的核心框架图如下所示:

如上图,CP-Tuning算法放弃了经典算法中以“[MASK]”字符对应预训练模型MLM Head的预测输出作为分类依据,而是参考对比学习的思路,将句子通过预训练模型后,以“[MASK]”字符通过预训练模型后的连续化表征作为features。在小样本任务的训练阶段,训练目标为最小化同类样本features的组内距离,最大化非同类样本的组间距离。在上图中,[OMSK]即为我们所用于分类的“[MASK]”字符,其优化的features表示为[EMB]。因此,CP-Tuning算法不需要定义分类的标签词。在输入侧,除了输入文本和[OMSK],我们还加入了模版的字符[PRO]。与经典算法不同,由于CP-Tuning不需要学习模版和标签词之间的对应,我们直接将[PRO]初始化为任务无关的模版,例如“it is”。在模型训练过程中,[PRO]的表示可以在反向传播过程中自动更新。除此之外,CP-Tuning还引入了输入文本的Mask,表示为[TMSK],用于同时优化辅助的MLM任务,提升模型在小样本学习场景下的泛化性。CP-Tuning算法的损失函数由两部分组成:

如上所示,两个部分分别为Pair-wise Cost-sensitive Contrastive Loss(PCCL)和辅助的MLM损失。我们在多个GLUE小样本数据集上进行了验证,其中训练集中每个类别限制只有16个标注样本。从下述结果可以看出,CP-Tuning的精确度超越了经典的小样本学习算法,也比标准Fine-tuning算法的精确度高10%以上。

目前,除了我们自研的CP-Tuning算法之外,EasyNLP框架中集成了多种经典小样本学习算法例如PET、P-tuning等。

小样本学习实践详见[3]。

4 大模型落地实践

下面我们给出一个示例,将一个大的预训练模型(hfl/macbert-large-zh)在小样本场景上落地,并且蒸馏到仅有1/100参数的小模型上。如下图所示,一个大模型(3亿参数)在一个小样本场景上原始的Accuracy为83.8%,通过小样本学习可以提升7%,达到90.6%。同时,如果用一个小模型(3百万参数)跑这个场景的话,效果仅有54.4%,可以把效果提升到71%(提升约17%),inference的时间相比大模型提升了10倍,模型参数仅为原来的1/100。

代码详见[4]。

四 应用案例

EasyNLP支撑了阿里巴巴集团内10个BU20多个业务,同时过PAI的产品例如PAI-DLC、PAI-DSW、PAI Designer和PAI-EAS,给集团用户带来高效的从训练到落地的完整体验,同时也支持了云上客户自定定制化模型和解决业务问题的需求。针对公有云用户,对于入门级用户PAI-Designer组件来通过简单调参就可以完成NLP模型训练,对于高级开发者,可以使用AppZoo训练NLP模型,或者使用预置的预训练模型ModelZoo进行finetune,对于资深开发者,提供丰富的API接口,支持用户使用框架进行定制化算法开发,可以使用我们自带的Trainer来提升训练效率,也可以自定义新的Trainer。

下面列举几个典型的案例:

  • PAI团队和达摩院NLP团队[5]合作共建落地超大预训练模型(百亿参数),推出自研小样本学习算法CP-Tuning和模型稀疏化算法CAP。其中,这一自研CP-Tuning算法与AliceMind平台集成, 实现了超大预训练模型的小样本学习,在在小样本场景下,比标准Fine-tune精准度提升10%以上;
  • PAI团队和达摩院合作在FewCLUE小样本学习榜单上获得冠军,甚至一个小样本学习任务上的精准度超过了人类。同时,阿里巴巴某BU使用ToB客户服务场景下的业务数据在EasyNLP框架下进行小样本学习算法学习,在业务数据上相比Baseline,提升实体识别的准确度2%以上,提升属性识别的准确度5%以上;
  • 针对公有云客户对文本分类功能的小模型、高QPS需求,基于EasyNLP框架的知识蒸馏功能,采用某预训练模型作为教师模型(参数量3亿)、PAI-BERT中文小预训练模型作为学生模型(参数量4百万),蒸馏得到这一小模型上线,参数量约为原有模型的百分之一,精度损失在10%以内;基于此,我们集成了知识蒸馏功能,助力大模型在实际业务场景下落地;
  • 在风控场景,我们收集了约一亿的中文预训练数据,基于EasyNLP预训练了一个PAI-BERT中文模型,在风控数据上取得了非常不错的效果,提升了10%以上的准确率和召回率;基于此,我们在公有云上也推出了文本风控解决方案[6],在多个客户场景里落地并取得不错的效果;
  • 随着UGC等用户生成内容不断涌现,对从文本提取标签用于细粒度分析的需求不断涌现;采用基于EasyNLP预训练中文模型,在新闻数据的超过300个类别的文本标签预测准确率超过80%;基于此,我们集成了文本标签预测,关键词抽取,和实体词提取等功能,在公有云上推出了通用文本打标解决方案[7],并且在多个典型客户场景里成功落地,服务于智能推荐等应用场景。

五 RoadMap

  • 基于EasyNLP的中文CLUE/FewCLUE等的Benchmark
  • 知识预训练技术: 发布一系列知识预训练模型,致力于提升预训练模型的常识性和知识性
  • 中文预训练模型:发布针对中文的SOTA的预训练模型,降低中文预训练技术门槛
  • 多模态预训练:发布针对中文的多模态预训练模型
  • 中文数据的收集和API接口:收集常用的中文数据,提供预处理和训练接口
  • 垂直场景的SOTA中文模型整合:针对垂直业务场景,整合效果最好的中文模型
  • 发布解决方案和PAI组件

项目开源地址:https://github.com/alibaba/EasyNLP

参考文献

  • [AAAI 22] DKPLM: Decomposable Knowledge-enhanced Pre-trained Language Model for Natural Language Understanding. https://arxiv.org/abs/2112.01047
  • [ACL 2021] Meta-KD: A Meta Knowledge Distillation Framework for Language Model Compression across Domains. https://arxiv.org/abs/2012.01266
  • [arXiv] Making Pre-trained Language Models End-to-end Few-shot Learners with Contrastive Prompt Tuning:https://arxiv.org/pdf/2204.00166
  • [AAAI 22] From Dense to Sparse: Contrastive Pruning for Better Pre-trained Language Model Compression. https://arxiv.org/abs/2112.07198
  • [EMNLP 2021] TransPrompt: Towards an Automatic Transferable Prompting Framework for Few-shot Text Classification. TransPrompt: Towards an Automatic Transferable Prompting Framework for Few-shot Text Classification - ACL Anthology
  • [CIKM 2021]. EasyTransfer -- A Simple and Scalable Deep Transfer Learning Platform for NLP Applications. https://github.com/alibaba/EasyTransfer

[1]https://github.com/alibaba/EasyNLP
[2]https://github.com/alibaba/EasyNLP/tree/master/examples/knowledge_distillation
[3]https://github.com/alibaba/EasyNLP/tree/master/examples/fewshot_learning
[4]https://github.com/alibaba/EasyNLP/tree/master/examples/landing_large_ptms
[5]达摩院NLP团队:https://github.com/alibaba/AliceMind
[6]文本风控解决方案:文本内容风控解决方案 - 机器学习PAI - 阿里云
[7]通用文本打标解决方案:通用文本打标解决方案 - 机器学习PAI - 阿里云

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内容社区行业搜索最佳实践

简介:社区内容通常包括UGC和PGC。由于关键词和内容多样性丰富、用词规范程度参差不齐,搜索引擎需要对关键词和内容进行智能语义分析,识别出用户真正的查询意图,找到最全面最相关的结果满足用户需求。本文将详细介绍如何通过“开放…

手把手,带你用数据做好迭代复盘改进 | 敏捷开发落地指南

简介:高效落地敏捷开发,先从这3个关键活动着手。带你用数据做好迭代复盘改进 ,数据说话,借助云效项目协作Projex 高效开展迭代复盘高效落地敏捷开发。 摘要:高效落地敏捷开发,先从这3个关键活动着手&#…

记一次网络相关的技术问题答疑

大家好,我是飞哥!前段时间飞哥参加了一期 OSChina 官方举办的「高手问答」栏目。在这个栏目里,我和 OSChina 的网友们以《深入理解 Linux 网络》为主题,对大家日常所关心的一些问题展开了一些技术探讨。今天我把这个活动中探讨的内…

Hexo博客框架—轻量、一令部署

简介:Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。Hexo支持Github Flavored Markdown的所有功能, 甚至可以整合Octopress的大多数…

被你质疑价值的混沌工程,阿里巴巴已落地实践了9年

简介:无可讳言,对于混沌工程的价值,目前在业内还没有一个明确的度量标准,但是可以通过简单的例子来有效佐证。据中亭介绍,一方面可以先选定一个场景,从结果上看,混沌工程可以保证场景不劣化&…

同为博客,不同风格 ——Hexo另类搭建

简介:通过阿里云云开发平台快速由Hexo创建赛博朋克风格的博客。 一 、通过云开发平台快速创建初始化应用 1.创建相关应用模版请参考链接:Hexo博客框架—轻量、一令部署 2.完成创建后就可以在github中查看到新增的Hexo仓库 二 、 本地编写《赛博朋克风…

即学即会 Serverless | 初识 Serverless

简介:Serverless 架构被越来越多的业务所采纳,成为其技术选型,大多数开发者已经跨越对 Serverless 概念了解,切实向落地实践出发。本文带大家一探究竟,为什么说 Serverless 可以帮助开发者聚焦核心业务价值&#xff0c…

宜搭小技巧|巧用审批按钮,流程随心流转

简介:一键启用流程退回,再也不用担心“一错回到提交前”! 今天,宜小搭提交了产品采购申请单,却因某项产品选错分类被领导拒绝,宜小搭只能重新填写再提交,这样做既麻烦也影响工作效率。 流程已…

阿里云将投入70亿元建国际生态、增设6大海外服务中心

9月22日消息,阿里云在泰国举办的国际云峰会上宣布将继续加快海外市场布局,未来三年投入70亿元建设国际本地化生态,并在海外增设6个服务中心,分别位于波尔图、墨西哥城、吉隆坡、迪拜等地。近年来,阿里云在海外市场获得…

开源|优酷动态模板研发体系为分发提效30%

简介:动态模板技术方案将客户端研发链路实现了串联,通过完备的工具化支撑体系,让开发者可以高效完成组件由原始设计稿到可运行代码的最短通路,本文将对研发体系中涉及到的核心模块就行介绍,希望对技术社区及广大开发者…

比心云平台基于阿里云容器服务 ACK 的弹性架构实践

简介:本文主要探讨比心云平台如何利用阿里云容器服务 ACK,来构建应用弹性架构,进一步优化计算成本。 作者:韩韬|比心技术 前言 应用容器化改造后,不可避免地会面临这样一个问题:Kubernetes 集…

程序员莫名收到谷歌转账170万元,直言:一个月没敢花

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life)近日,Google 公司发生一起乌龙事件, 意外地给一位博客和安全工程师转账近25万美元(约合人民币174万元),当事人表示等待将近一个月…

利器解读:Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术

简介:通过在Anolis 5.10 内核中增强 kfence 的功能,实现了一个线上的、精准的、可定制的内存调试解决方案。 编者按:一直持续存在内核内存调测领域两大行业难题: "内存被改" 和 "内存泄漏"何解?本文整理自龙…

无需修改代码,用 fcapp.run 运行你的 REST 应用

简介:解锁客户不修改代码部署存量REST、网页应用场景,解决客户函数调用返回404问题,支持标准的网关产品与开源组件集成函数计算。 作者 | 阿里云 Serverless 技术研发 落语 背景 阿里云函数计算产品在较早的时候支持了HTTP触发器能力&…

在 Linux 中锁定和解锁用户的 3 种方法

在多用户操作的服务器中锁定(禁用)用户可能有多种原因,比如某个用户的登录密码被泄露,或者某个用户离职,但是该用户下还有部分文档未完成转移,而因为归档的目的暂时不删除该用户,而只是锁定等等…

中小企业掀起“减碳潮”,“上云”提高产品绿色竞争力

中小企业节能减碳需求正进入爆发期。4月22日世界地球日,近2000家中小企业已接入阿里云碳排放优化核算平台“能耗宝”,通过光伏装机和算法优化全年节省4.3亿度煤电,相当于减少44万吨碳排放。其中,浙江、广东及江苏的中小企业走在减…

函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务

简介:函数计算 HTTP 触发器支持异步调用,为用户搭建 WEB 服务使用函数计算作为全托管平台打通了最后一公里,以后 HTTP 触发器的使用者,也可以感受到异步调用”开箱即用“的便捷体验。 作者| 阿里云Serverless技术专家 澈尔 当前…

如何做好“防御性编码”?

简介:类似于“防御性驾驶”对驾驶安全的重要性,防御性编码目的概括起来就一条:将代码质量问题消灭于萌芽。要做到“防御性编码”,就要求我们充分认识到代码质量的严肃性,也就是“一旦你觉得这个地方可能出问题&#xf…

消息队列Kafka「检索组件」上线

简介:本文对消息队列 Kafka「检索组件」进行详细介绍,首先通过对消息队列使用过程中的痛点问题进行介绍,然后针对痛点问题提出相应的解决办法,并对关键技术技术进行解读,旨在帮助大家对消息队列 Kafka「检索组件」的特…

从这些云原生企业身上,我看到了数字化创新者该有的样子

简介:未来的数字世界是什么样子?手握云原生地图的企业,又将如何颠覆数字化?带着这些疑问,我们采访了教育、金融、新零售、互娱、传媒等领域的多位大咖,他们是数字创新的引领者,也是用云原生技术…