admin管理员组

文章数量:1530061

摘要:

预训练模型 (PTM) 的成功重塑了自然语言处理 (NLP) 的发展。然而,对于工业从业者来说,获得高性能模型并在线部署它们并不容易。为了弥补这一差距,EasyNLP 旨在让构建 NLP 应用程序变得容易,它支持一整套 NLP 算法。它还具有用于大规模 PTM 的知识增强预训练、知识蒸馏和小样本学习功能,并为实际应用程序提供模型训练、推理和部署的统一框架。目前,EasyNLP 已为阿里巴巴集团内的十多个业务部门提供支持,并与阿里云上的人工智能平台(PAI)产品无缝集成。我们的 EasyNLP 工具包的源代码在 GitHub 上发布

1 介绍

BERT、GPT-3 和 PaLM 等预训练模型 (PTM) 在 NLP 方面取得了显著成果。随着 PTM 规模的扩大,NLP 任务的性能不断提升;因此,超大规模预训练呈增长趋势,将 PTM 的规模从数百万、数十亿甚至数万亿推高(Devlin et al., 2019; Brown et al., 2020; Chowdhery et al., 2022) .

但是,大型 PTM 在工业场景中的应用仍然是一个不小的问题。原因有三方面。 i) 大型 PTM 并不总是更聪明,并且由于缺乏世界知识可能会犯常识性错误(Petroni 等人,2019 年)。因此,非常有必要通过知识增强预训练使 PTMs 明确地理解世界事实。 ii) 尽管大规模的 PTMs 在很少的训练下取得了很好的效果样本、数据不足的问题以及 GPT-3 等模型的庞大规模仍然限制了这些模型的使用。因此,少量微调 BERT 式 PTM 对于在线应用程序更实用(Gao 等人,2021)。 iii) 最后但同样重要的是,尽管大规模 PTM 已成为 NLP 学习管道的重要组成部分,但缓慢的训练和推理速度严重影响了需要更高 QPS(每秒查询)且计算资源有限的在线应用程序。

为了解决这些问题,我们开发了 EasyNLP ,这是一个 NLP 工具包,旨在让大型 PTM 的着陆更加高效。 EasyNLP 提供知识增强的预训练功能,以提高 PTM 的知识理解能力。具体来说,我们提出的 DKPLM 框架 (Zhang et al., 2022) 能够分解知识增强的预训练和特定任务的学习。因此,可以以与 BERT 相同的方式调整和部署生成的模型(Devlin 等人,2019 年)。 EasyNLP 还集成了多种流行的基于提示的小样本学习算法,例如 PET (Schick and Schütze, 2021) 和 P-Tuning (Liu et al., 2021b)。特别是,我们提出了一种新的小样本学习范式,称为对比提示调优 (CP-Tuing) (Xu et al., 2022),它简化了基于对比学习的语言器构建的手工劳动。最后,EasyNLP 支持多种知识蒸馏算法,可将大型 PTM 压缩成小型高效的 PTM。其中,MetaKD 算法(Pan et al., 2021)可以显着提高跨域数据集学习模型的有效性。

总体而言,我们的 EasyNLP 工具包可以为用户提供大规模和强大的学习功能,并与 AI 平台 (PAI)1 产品无缝连接。其丰富的 API 为用户提供高效、完整的培训体验为各种应用程序部署 PTM

简而言之,EasyNLP 工具包的主要特点包括以下几个方面:

易于使用且高度可定制。 EasyNLP除了提供简单易用的命令调用前沿的NLP模型外,还抽象出AppZoo、ModelZoo等自定义模块,方便构建NLP应用。它与阿里云上的PAI产品无缝集成,包括模型开发的PAI-DSW、云原生训练的PAI-DLC、在线服务的PAI-EAS、零代码模型训练的PAI-Designer。它还具有 DataHub,它为用户提供了一个简单的界面来加载和处理各种类型的 NLP 数据集。

知识增强的 PTM。 EasyNLP 配备了各个领域的尖端知识增强型 PTM。它的预训练 API 使用户能够使用自己的知识库,只需几行代码即可获得定制的 PTM。

登陆大型PTM。 EasyNLP 提供了基于提示的few-shot 学习能力,允许用户只用少量训练样本微调PTMs 以获得良好的效果。同时,提供知识蒸馏功能,帮助快速将大型模型提炼成小型高效模型,方便在线部署。

与开源社区兼容。 EasyNLP 拥有丰富的 API,支持使用 PAI 的分布式学习框架训练来自其他开源库(例如 Huggingface/Transformers2)的模型。它还与 EasyTransfer ModelZoo3 (Qiu et al., 2021) 中的 PTM 兼容。

2 相关工作

在本节中,我们总结了 PTM、快速学习和知识蒸馏的相关工作。

2.1 预训练语言模型 PTMs

通过自我监督的预训练在各种任务上取得了显着的改进(Qiu et al., 2020)。仅举几例,BERT(Devlin 等人,2019)通过转换器编码器学习双向上下文表示。其他基于 Transformer 编码器的 PTM 包括 Transformer-XL(Dai 等人,2019 年)、XLNet(Yang 等人,2019 年)等。编码器-解码器和自回归解码器架构用于 T5(Raffel 等人,2020)和 GPT-3(Brown 等人,2020)。 Knowledgeenhanced PTMs(Zhang et al., 2019; Liu et al., 2020; Sun et al., 2020)通过注入从知识库中提取的关系三元组来提高 PTMs 的语言理解能力。

2.2 PTMs的Prompt Learning

Prompt Learning将文本的概率直接建模为基于语言模型的模型预测结果(Liu et al., 2021a)。在文献中,PET (Schick and Schütze, 2021) 将 NLP 任务建模为完形填空问题,并将掩码语言标记的结果映射到类标签。高等人。 (2021) 从 T5 (Raffel et al., 2020) 生成离散提示以支持提示发现。 PTuning (Liu et al., 2021b) 学习具有可微参数的连续提示嵌入。我们的 CP-Tuing (Xu et al., 2022) 基于对比学习优化了输出结果,没有定义从输出到类标签的映射。

2.3 知识蒸馏

知识蒸馏旨在从集成或更大的模型中学习更小的模型(Hinton et al., 2015)。对于大规模 PTM,DistillBERT (Sanh et al., 2019) 和 PKD (Sun et al., 2019) 分别在预训练和微调阶段应用蒸馏损失。 TinyBERT (Jiao et al., 2020a) 在两个阶段进一步提炼 BERT,同时考虑到各种类型的信号。由于篇幅所限,我们不再详细阐述其他方法。我们的 MetaKD 方法 (Pan et al., 2021) 通过利用 EasyNLP 完全支持的跨域可迁移知识进一步提高了学生模型的准确性

3 EasyNLP 工具包

在本节中,我们将详细介绍EasyNLP 工具包的各个方面。

3.1 概述

我们从图 1 中的 EasyNLP 概述开始。EasyNLP 建立在 PyTorch 之上,支持丰富的数据阅读器来处理来自多个来源的数据。用户可以从 ModelZoo 加载任何 PTM 和从 DataHub 获取数据集,从 AppZoo 构建应用程序,或探索其高级功能,例如知识增强预训练、知识蒸馏和小样本学习。这些代码可以在本地环境中运行,也可以在云上的 PAI 产品中运行。此外,EasyNLP 的所有 API 也都已发布,方便用户自定义任何类型的 NLP 应用程序。

3.2 DataHub、ModelZoo 和 AppZoo

数据中心。 DataHub 为用户提供了加载和处理各种数据的接口。它兼容 Huggingface datasets4 作为内置库,支持统一接口调用,包含各种任务的数据集。部分示例如表 1 所示。用户可以通过 load_dataset 接口指定数据集名称来加载所需的数据,然后使用 GeneralDataset 接口将数据自动处理为模型输入。加载和预处理 TNEWS 数据集的示例及其后续步骤如代码 1 所示。对于用户定义的数据集,也可以直接继承 GeneralDataset 类来自定义数据格式。

模型动物园。 BERT (Devlin et al., 2019)、RoBERTa (Liu et al., 2019) 和 T5 (Raffel et al., 2020) 等 PTM 极大地提高了 NLP 任务的性能。为了方便用户部署模型,ModelZoo 提供了通用的预训练模型以及我们自己的模型供用户使用,例如各个领域的 DKPLM (Zhang et al., 2022)。还支持一些广泛使用的非 PTM 模型,例如 Text-CNN (Kim, 2014)。

应用动物园。为了帮助用户使用我们的框架更轻松地构建 NLP 应用程序,我们进一步支持一个名为 AppZoo 的综合 NLP 应用工具。它支持通过少量命令行参数运行应用程序,并为用户提供各种主流或创新的 NLP 应用程序。 AppZoo 提供丰富的模块供用户构建不同的应用管道,包括语言建模、特征向量化、序列分类、文本匹配、序列标注等。使用 AppZoo 训练文本分类器的示例如代码 2 所示。

3.3 内部开发的算法

在本节中,我们介绍 EasyNLP 中内部开发的算法。所有这些算法都已在实际应用中进行了测试。

3.4 知识增强预训练

知识增强的预训练通过从知识库中注入相关事实来提高 PTM 的性能。然而,许多现有工作在预训练、微调和推理期间需要额外的知识编码器(Zhang 等人,2019;Liu 等人,2020;Sun 等人,2020)。

提出的 DKPLM 范式 (Zhang et al., 2022) 分解了知识注入过程。对于 DKPLM,知识注入仅在预训练期间应用,没有引入额外的参数作为知识编码器,减轻了用户的巨大计算负担。同时,在微调和推理阶段,我们的模型可以与 BERT (Devlin et al., 2019) 和其他普通 PTM 相同的方式使用,这有助于模型在 EasyNLP 和其他环境中的微调和部署.具体来说,DKPLM 框架引入了三种用于知识增强预训练的新技术。它仅从文本语料库中识别长尾实体以进行知识注入,避免从知识库中学习过多冗余和不相关的信息(Zhang et al., 2021)。接下来,实体的表示被替换为从知识库中派生的“伪令牌表示”,而不向 DKPLM 引入任何额外的参数。最后,引入一个关系知识解码任务,强制模型理解注入了什么知识。

在 EasyNLP 中,我们为用户提供了 DKPLM 的整个预训练管道。此外,已经在 ModelZoo 中注册了一组针对特定领域的预训练 DKPLM,以支持特定领域的应用程序。

3.5 PTM 的小样本学习

对于资源匮乏的场景,基于提示的学习利用提示作为任务指导来进行有效的小样本微调。在 EasyNLP 中,为了促进简单的小样本学习,我们将 PET(Schick 和 Schütze,2021)和 P-Tuning(Liu 等人,2021b)集成到 AppZoo 中,允许用户以与标准微调相似的方式调用算法调音。

还应该注意的是,无论是 PET 还是 PTuning,都需要显式地手工制作语言器,这是一个乏味的过程,可能会导致结果不稳定。我们的 CP-Tuning 方法 (Xu et al., 2022) 无需手动工程特定任务提示和语言器即可实现少量微调 PTM。引入了成对的成本敏感对比学习,通过学习区分不同的类来实现无语言器的类映射。用户还可以在 AppZoo 中探索 CP-Tuning,以完成经典的基于提示的方法支持的任何任务。

3.6 PTM 的知识蒸馏

较大的模型尺寸和较长的推理时间阻碍了将大规模 PTM 部署到资源受限的应用程序中。在 EasyNLP 中,我们为知识蒸馏提供了完整的学习管道,包括训练集的数据增强、教师模型的 logits 提取和学生模型的蒸馏训练。

此外,我们注意到大多数现有方法仅关注单个域。提出的 MetaKD 算法 (Pan et al., 2021) 明确利用跨域可迁移知识来提高学生模型的准确性。它首先获得一个元教师模型,以从多个领域捕获实例级和特征级的可转移知识。接下来,采用元蒸馏算法来学习具有来自元教师的选择性信号的单域学生模型。在 EasyNLP 中,MetaKD 过程被实现为任何类型的 BERT 式 PTM 的通用功能。

4 系统评估与应用

在本节中,我们将实证检验 EasyNLP 工具包在公共数据集和工业应用上的有效性和效率。

4.1 CLUE 和 GLUE 基准

为了验证 EasyNLP 在模型微调方面的有效性,我们在 CLUE 和 GLUE 基准上对 PTM 进行微调(Wang 等人,2019;Xu 等人,2020)。对于所有任务,我们使用有限的超参数搜索空间,批量大小为 {8, 16, 32, 48},序列长度为 {128, 256},学习率为 {1e−5, 2e−5, 3e -5, 4e-5, 5e- 5}。底层 PTM 包括 BERT (Devlin et al., 2019) 和 RoBERTa (Liu et al., 2019)。我们还针对中国基准 CLUE 评估 MacBERT (Cui et al., 2020)。我们报告了两个基准测试中每个任务的开发集的结果,分别如表 2 和表 3 所示。获得的可比性能显示了 EasyNLP 的可靠性,与其他开源框架及其原始实现相比,它实现了相似的性能。

4.2 知识增强预训练的评价

我们报告了 DKPLM 在 zeroshot 知识探测任务中的表现,包括 LAMA (Petroni et al., 2019) 和 LAMA-UHN (Pörner et al., 2019),结果总结在表 4 中。与强基线相比(即, CoLAKE (Sun et al., 2020) K-Adapter (Wang et al., 2021a) 和 KEPLER (Wang et al., 2021b)),我们看到 DKPLM 在三个数据集(+平均为 1.57%)。 DKPLM 的结果仅比 K-Adapter 低 0.1%,没有使用任何 T-REx 训练数据和更大的主干。我们可以看到,我们基于 DKPLM 的预训练过程可以有效地存储和理解来自知识库的事实关系

工业应用。基于提出的 DKPLM 框架(Zhang et al., 2022),我们预训练了一系列特定领域的 PTM,以在阿里巴巴集团内部提供模型服务,例如医疗和金融领域,并观察到下游 NLP 任务的持续改进.例如,与标准 BERT 模型相比,医学领域 DKPLM 将医学命名实体识别任务的准确率提高了 3% 以上(Devlin 等人,2019 年)。预训练模型(名为 pai-dkplm-medical-base-zh)也已在我们的 EasyNLP ModelZoo 中发布。

4.3 小样本学习的评价

我们将 CP-Tuning (Xu et al., 2022) 与几种基于提示的微调方法进行比较,包括 PET (Schick and Schütze, 2021)、LMBFF (Gao et al., 2021)(在“Auto T”的三种设置中) ,“Auto L”和“Auto T+L”分别是指具有自动生成的模板、标签词和两者的提示调整的 PTM)和 P-Tuning(Liu 等人,2021b)。实验是在 16-shot 学习设置中对多个文本分类数据集进行的。底层 PTM 是 RoBERTa (Liu et al., 2019)。读者可参考徐等人。 (2022) 了解更多详情。从表 5 中的结果可以看出,与最先进的方法相比,CP-Tuning 在所有任务上的性能提升是一致的。

工业应用。对于商业客户服务,需要从文本中提取细粒度的属性和实体,这可能涉及大量的类,而可用的训练数据很少。通过在 EasyNLP 中应用我们的算法,实体和属性提取的准确度得分分别提高了 2% 和 5%。此外,我们的 few-shot 工具包在 FewCLUE 基准测试(Xu et al., 2021)上产生了最佳性能。

4.4 知识提炼的评价

我们进一步报告了 MetaKD (Pan et al., 2021) 在 Amazon 评论 (Blitzer et al., 2007) 和 MNLI (Williams et al., 2018) 上的性能,其中两个数据集分别包含四个和五个域实例。在实验中,我们在多领域训练集上训练元教师,并将元教师提炼到所有领域的每一个。教师模型是 BERT-base(具有 110M 参数),而学生模型是 BERT-tiny(具有 14.5M 参数)。表 6 显示了基线和 MetaKD 的性能,就跨域的平均准确度而言。 BERT-s 是指在每个域上训练的单个 BERT 教师。 BERT-mix 是一位接受过所有领域数据混合训练的 BERT 教师。 BERT-mtl 是一位在所有领域接受多任务学习训练的教师。对于蒸馏,“→ TinyBERT”是指使用 Jiao 等人描述的 KD 方法。 (2020b)提取响应式教师模型。结果表明,MetaKD 在保持相似性能的同时显着减小了模型大小。有关更多详细信息,我们将读者推荐给 Pan 等人。 (2021 年)。


工业应用。由于在线电子商务应用程序对 QPS 的高要求,Distilled PTM 在阿里巴巴集团内部得到了广泛使用。例如,在 AliMe 聊天机器人(Qiu et al., 2017)中,我们将基于 BERT 的查询意图检测模型从基础版本提炼为小版本,推理速度提高了 7.2 倍,而准确度仅下降了 1% .

5 结论

在本文中,我们介绍了 EasyNLP 工具包,旨在简化基于 PTM 的深度 NLP 应用程序的开发和部署。它支持一整套 NLP 算法,并为大规模 PTM 提供知识增强的预训练、知识蒸馏和少量学习功能。目前,EasyNLP 已经为阿里云内部的多个业务单元提供支持,并在云端提供 NLP 服务。该工具包已开源,以促进 NLP 应用程序的研究和开发。

本文标签: 文献EasyComprehensiveEasyNLPToolkit