如何使用魔搭ModelScope快速定制一款对长文本进行理解的模型?

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: ‍本文详细介绍PoNet模型的原理以及其在ModelScope上的体验用法,包括PoNet简介原理、PoNet在ModelScope上怎么用、PoNet在各种下游任务上的效果等。


本文详细介绍PoNet模型的原理以及其在ModelScope上的体验用法,包括PoNet简介原理、PoNet在ModelScope上怎么用、PoNet在各种下游任务上的效果等。

PoNet模型是什么?它能做什么?

PoNet模型全名是Pooling Network [1],在2021年由达摩院语音实验室提出,并发表在机器学习领域顶会ICLR 2022上。PoNet是一种适合对长序列进行建模的模型,对输入序列的长度N具有线性复杂度,它使用简单的pooling网络替代了传统Transformer模型中的self-attention机制。常见的长序列任务包括长文本分类,篇章话题分割,篇章摘要,长序列时间序列预测等等。

实验表明,PoNet在长文本测试Long Range Arena (LRA)榜[2]上在准确率上比Transformer高2.28个点,在GPU上运行速度是Transformer的9倍,显存占用只有1/10。此外,实验也展示了PoNet的迁移学习能力,PoNet-Base在GLUE基准上达到了BERT-Base的95.7%的准确性。

PoNet是如何实现的?

PoNet模型的结构图如下所示:

我们受到用于视觉任务的外部注意EA[3]的启发,将其简化为多层感知器和softmax,并观察到softmax通过分母项将序列信息融入到token中提供了上下文建模能力。然而,softmax涉及到指数的计算,这仍然是很慢的。因此,我们考虑使用池化法作为替代方法,以显著降低的复杂度来捕捉语境信息。PoNet模型主要由三个不同粒度的pooling组成,一个是全局的pooling模块(GA),分段的segment max-pooling模块(SMP),和局部的max-pooling模块(LMP),对应捕捉不同粒度的序列信息。

如何快速体验PoNet模型?

我们的PoNet模型目前提供了预训练中文和英文PoNet模型推理接口,可供试验在完形填空任务上的效果。后续会计划支持在下游任务的finetune接口。配置环境1. 使用ModelScope的notebook在我们的模型页面点击右上角的"在Notebook中打开",根据自己当前的额度,可选使用CPU或者GPU实例,如下图:step 1: 点击打开Notebook

step 2: 选择实例类型,然后点击启动

2. 动手配置

使用ModelScope进行推断和开发,需要配置好ModelScope的相关运行环境。ModelScope集成了各个模态的模型,所以依赖相对比较复杂,因此建议使用Conda进行环境管理,新建一个python环境。建好环境并安装基础深度学习环境后,在shell终端中安装多模态相关依赖库,如下所示:



pip install "modelscope[nlp]" -fhttps://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

模型推理--完形填空预测

PoNet模型在中文或英文数据上进行Masked Language Modeling和Sentence Structural Objective任务的预训练,所得到的模型可以用来进行完形填空预测。ModelScope中PoNet模型的推断方式主要是通过Pipeline进行的,仅需几行代码,就可以很简单的调用PoNet模型的推理能力。下面以中文PoNet为例。在python环境中,首先,我们进行必要的import操作



from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks

之后,我们构建完形填空任务的ModelScope pipeline,并载入中文PoNet模型参数。


pipeline_ins = pipeline(Tasks.fill_mask, model='damo/nlp_ponet_fill-mask_chinese-base')

接下来,我们可以构建一个文本,其中需要被预测的字我们用[MASK]替代,来检验模型的效果。



input = "人民文学出版社[MASK]1952[MASK],出版《[MASK][MASK]演义》、《[MASK]游记》、《水浒传》、《[MASK]楼梦》,合为“[MASK]大名著”。" print(pipeline_ins(input))

PoNet主要的用途是作为预训练模型在下游各种长文本任务上进行finetune。

下游任务模型微调您可以基于我们提供的预训练模型在下游任务上进行微调,下面以文本话题分割任务为例。

首先,克隆repo。


git clone https://github.com/alibaba-damo-academy/SpokenNLP.git

然后,准备ModelScope的SDK token。注册ModelScope账号,并且在个人主页获得token,然后修改alimeeting4mug/src/utils/config.py配置文件。

接下来安装ModelScope以及其他环境。



pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.htmlpip install -r requirements.txt

最后,运行bash训练脚本,便可以预训练一个基于PoNet的文本话题分割模型。


sh run_ponet_topic_segmentation.sh

更多细节参考:

https://github.com/alibaba-damo-academy/SpokenNLP/tree/main/alimeeting4mug

效果评测PoNet模型在一系列的下游任务上进行了实验来验证其有效性,包括长序列任务LRA,迁移学习任务(GLUE和长文本任务),并进行了消融分析来验证各组件的有效性。长序列任务Long Range Arena(LRA)是用来评估捕捉长距离依赖关系的基准测试。在LRA上,PoNet取得了比Transformer更好的分数。在速度和显存方面,仅次于FNet[4],显著优于Transformer。

迁移学习

我们用大规模语料库对PoNet进行预训练,然后测试它在下游任务上的性能。下图是预训练的MLM[4]和SSO[5]两个子任务的训练曲线,可以看到,我们的模型在MLM上略微弱于BERT,在SSO上与BERT还有一定的差距,两个任务上都明显要优于FNet。

GLUE

PoNet取得了76.80的AVG分数,达到了BERT在GLUE上的准确率(80.21)的95.7%,相对来说比FNet要好4.5%。这些性能比较与前图中显示的预训练准确率一致。长文本任务我们还评估了预训练的PoNet在四个长文本分类数据集上的性能。从表4可以看出,PoNet-Base在HND和Arxiv上优于BERT-Base,在IMDb和Yelp-5上的F1分数达到了BERT-Base的99%。消融分析下面的消融实验也证明了每个组件的重要性。同时,使用L_MN(MLM+NSP),L_OM(MLM)的实验也说明了预训练任务使用MLM+SSO的必要性。Future work

本文介绍了达摩院语音实验室近期提出的PoNet模型,它使用多粒度的Pooling结构来替代attention的网络(PoNet),可以捕捉到不同层次的上下文信息,让序列的token之间能够得到有效的交互。实验表明,PoNet既实现了有竞争力的长距离依赖性建模能力,又实现了强大的迁移学习能力,而且具有线性的时间和显存复杂度。用户可以在魔搭ModelScope社区体验该模型。

联系我们

模型使用中如遇到任何问题,欢迎通过魔搭ModelScope社区与我们互动:

https://developer.aliyun.com/community/modelscope

(扫描上方二维码或输入网址即可联系我们)

>>>也欢迎大家参与长文本理解相关的最新赛事


相关链接ICASSP2023通用会议理解及生成挑战赛报名官网:https://modelscope.cn/competitionModelScope 中文PoNet页面:https://www.modelscope.cn/models/damo/nlp_ponet_fill-mask_chinese-base/summary

ModelScope 英文PoNet页面:

https://www.modelscope.cn/models/damo/nlp_ponet_fill-mask_english-base/summaryPoNet文本话题分割模型页面:https://modelscope.cn/models/damo/nlp_ponet_document-segmentation_topic-level_chinese-base/summaryPoNet抽取式话题摘要模型页面:https://modelscope.cn/models/damo/nlp_ponet_extractive-summarization_topic-level_chinese-base/summary PoNet抽取式篇章摘要模型页面:https://modelscope.cn/models/damo/nlp_ponet_extractive-summarization_doc-level_chinese-base/summary

References

[1]Chao-Hong Tan, Qian Chen, Wen Wang, Qinglin Zhang, Siqi Zheng, Zhen-Hua Ling: PoNet: Pooling Network for Efficient Token Mixing in Long Sequences. ICLR 2022. URL https://openreview.net/forum?id=9jInD9JjicF.

[2] Yi Tay, Mostafa Dehghani, Samira Abnar, Yikang Shen, Dara Bahri, Philip Pham, Jinfeng Rao, Liu Yang, Sebastian Ruder, and Donald Metzler. Long Range Arena : A benchmark for efficient transformers. ICLR 2021. URL https://openreview.net/forum?id=qVyeW-grC2k.

[3] Meng-Hao Guo, Zheng-Ning Liu, Tai-Jiang Mu, and Shi-Min Hu. Beyond self-attention: External attention using two linear layers for visual tasks. CoRR, abs/2105.02358, 2021. URL https://arxiv.org/abs/2105.02358.

[4] James Lee-Thorp, Joshua Ainslie, Ilya Eckstein, and Santiago Ontanon. FNet: mixing tokens with fourier transforms. CoRR, abs/2105.03824, 2021. URL https://arxiv.org/abs/2105.03824.

[5] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: pre-training of deep bidirectional transformers for language understanding. NAACL-HLT 2019. URL https://doi.org/10.18653/v1/n19-1423.

[6] Wei Wang, Bin Bi, Ming Yan, Chen Wu, Jiangnan Xia, Zuyi Bao, Liwei Peng, and Luo Si. StructBERT: incorporating language structures into pre-training for deep language understanding. ICLR 2020. URL https://openreview.net/forum?id=BJgQ4lSFPH.

相关文章
|
3月前
|
自然语言处理
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
80 1
|
7天前
|
人工智能 开发框架 物联网
赢万元奖金 | 第七届CCF开源创新大赛ModelScope开源模型应用挑战赛开启报名!
第七届CCF开源创新大赛(后简称“大赛”) 由中国计算机学会(CCF)主办,长沙理工大学、CCF开源发展委员会联合承办。
|
2月前
|
人工智能 开发工具 Swift
ModelScope联手OpenDataLab:直接调用7000+开源数据集,赋能AI模型加速研发
魔搭社区和OpenDatalab浦数合作,共同开启一场模型与数据的深度融合,旨在为中国开发者打造更加高效、开放的AI体验。
|
3月前
|
机器学习/深度学习 人工智能 Swift
PAI x ModelScope: 在PAI使用ModelScope模型
在当前的人工智能领域,特别是大语言模型、文生图等领域,基于预训练模型完成机器学习模型的开发部署已成为重要的应用范式,开发者们依赖于这些先进的开源预训练模型,以简化机器学习应用的开发并加速创新。
|
3月前
|
机器学习/深度学习 测试技术 TensorFlow
ModelScope模型使用与EAS部署调用
本文以魔搭数据的模型为例,演示在DSW实例中如何快速调用模型,然后通过Python SDK将模型部署到阿里云PAI EAS服务,并演示使用EAS SDK实现对服务的快速调用,重点针对官方关于EAS模型上线后示例代码无法正常调通部分进行了补充。
159 2
|
3月前
|
机器学习/深度学习 数据采集 编解码
阿里云魔搭发起“ModelScope-Sora开源计划”
阿里云魔搭发起“ModelScope-Sora开源计划”
100 0
阿里云魔搭发起“ModelScope-Sora开源计划”
|
3月前
|
API 语音技术
ModelScope-FunASR**有支持热词又支持时间戳的模型**。
【2月更文挑战第30天】ModelScope-FunASR**有支持热词又支持时间戳的模型**。
145 2
|
3月前
|
人工智能 API 决策智能
Modelscope结合α-UMi:基于Modelscope的多模型协作Agent
基于单个开源小模型的工具调用Agent,由于模型容量和预训练能力获取的限制,无法在推理和规划、工具调用、回复生成等任务上同时获得比肩大模型等性能。
|
3月前
|
文字识别 并行计算 语音技术
ModelScope问题之下载模型文件报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
613 3
|
3月前
|
数据采集 自然语言处理 搜索推荐
ModelScope问题之模型encoder配置报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
166 0