开发者社区> XXL|||||> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ModelScope模型库体验之中文StructBERT系列预训练语言模型

简介: StructBERT在BERT的基础上提出改进优化,通过在句子级别和词级别引入两个新的目标函数,打乱句子/词的顺序并使模型对其进行还原的方式,能让机器更好地掌握人类语法,加深对自然语言的理解,使得模型学习到更强的语言结构信息。
+关注继续查看
福利推荐:阿里云、腾讯云、华为云等大品牌云产品全线2折优惠活动来袭,4核8G云服务器899元/3年,新老用户共享优惠,点击这里立即抢购>>>

ModelScope

ModelScope平台汇集了行业领先的预训练模型,以开源的方式提供多类优质模型,开发者可在平台上免费体验与下载使用。


StructBERT介绍

StructBERT在BERT的基础上提出改进优化,通过在句子级别和词级别引入两个新的目标函数,打乱句子/词的顺序并使模型对其进行还原的方式,能让机器更好地掌握人类语法,加深对自然语言的理解,使得模型学习到更强的语言结构信息。

image.png

在公开数据集上比BERT均稳定取得提升

image.png


中文系列StructBERT

ModelScope上开源了各种规模大小的中文StructBERT模型,都汇总在了下面的表格中,我们可以根据需要采用不同大小的模型。

模型ID

模型参数量

模型链接

damo/nlp_structbert_backbone_tiny_std

9M

TINY

damo/nlp_structbert_backbone_lite_std

30M

LITE

damo/nlp_structbert_backbone_base_std

102M

BASE

damo/nlp_structbert_backbone_large_std

326M

LARGE

我们可以代码中指定modei id进行调用,也可以把模型仓库拉取到本地进行使用,比如:

git lfs install
git clone http://www.modelscope.cn/damo/nlp_structbert_backbone_large_std.git


在ModelScope中调优StructBERT

我们可以用自己的数据,在StructBERT基础之上进行训练调优(fintune),定制自己的个性化模型。在ModelScope中,用十行代码就可以实现定制调优。


环境准备

  • 如果您需要在本地运行模型,需要进行相应的环境安装准备,包括:安装python环境(python>=3.7)、安装深度学习框架(pytorch或者tensorflow)、安装ModelScope Library。具体请参考官方文档:环境安装
pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
  • 若您觉得本地安装较为复杂, ModelScope 平台也提供在线的运行环境,您可直接在Notebook中运行。ModelScope还提供免费算力资源,具体额度可以参考官方文档:免费额度说明

image.png


配置训练

  • Modelscope中可以使用配置文件,设定数据预处理、模型训练、模型评估等流程,模型仓库中模型等配置文件名称为 configuration.json?

? image.png

  • 在配置文件中,我们可以设定训练所需的相关字段,比如运行框架(pytorch/tensorflow)、任务名称(分类、相似度等)、前处理流程(preprocessor)以及训练优化器(optimizer);详细的字段说明可以参考Configuration详解
  • 如下是我们使用StructBERT来训练句子相似度模型的一个配置文件示例

image.png

十行代码开启训练

下面afqmc(Ant Financial Question Matching Corpus)数据集为例,演示基于StructBERT进行模型训练

# coding=utf-8                                                                                                                                                  
    
from modelscope.msdatasets import MsDataset    
from modelscope.trainers import build_trainer      

if __name__ == '__main__':      
    train_dataset = MsDataset.load('afqmc_small', split='train')    
    eval_dataset = MsDataset.load('afqmc_small', split='validation')    
    kwargs = dict(
        model = './nlp_structbert_backbone_tiny_std',   # configuration.json所在模型目录   
        train_dataset = train_dataset,    
        eval_dataset = eval_dataset,    
        work_dir = '/tmp')    
    
    trainer = build_trainer(default_args=kwargs)    
    trainer.train()  

运行代码后在日志中我们可以很方便地观察训练进度(比如loss变化、memory占用、训练时长等)

image.png

更多ModelScope的finetune设置,可以参考文档:文本分类finetune最佳实践


ModelScope体验反馈

  • 整体来说,ModelScope上已经开源了许多重要场景的优质模型,可以让开发者在更高的起点上(如StructBERT等预训练模型)结合自身场景进行开发。
  • 另一方面,ModelScope目前还刚刚起步,一些工作还有待建设(比如更多更有意义的真实数据集),期望ModelScope越做越好

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring——2、使用@ComponentScan自动扫描组件并指定扫描规则
在实际项目中,我们更多的是使用Spring的包扫描功能对项目中的包进行扫描,凡是在指定的包或其子包中的类上标注了@Repository、@Service、@Controller、@Component注解的类都会被扫描到,并将这个类注入到Spring容器中。 Spring包扫描功能可以使用XML配置文件进行配置,也可以直接使用@ComponentScan注解进行设置,使用@ComponentScan注解进行设置比使用XML配置文件来配置要简单的多。
20 0
MMDetection系列 | 4. MMDetection模型代码训练及测试过程的详细解析
MMDetection系列 | 4. MMDetection模型代码训练及测试过程的详细解析
32 0
与字节、小米、移动云等企业一起揭秘 RocketMQ 实践之道
作为面向开源及消息领域的顶级项目,2022 年 7 月 21 日-7 月 22 日,RocketMQ Summit 如约而至,近四十个优质议题与讨论,等待你的参与!
385 0
Spark3.0分布,Structured Streaming UI登场
Spark3.0分布,Structured Streaming UI登场
384 0
经典论文系列 | 重新思考在ImageNet上的预训练
这是一篇19年何凯明发的论文,论文基于目标检测、实例分割和人体关键点检测三个方向进行了多项实验,比较了从零使用随机初始化开始训练与使用预训练进行fine-tuning的效果,并得出了一些结论。 在本文将介绍论文的主要思想,主要结论,一些细节和作者基于实验结论上的讨论。
463 0
云米晾衣架Lite 1C开启众筹,未来生活无需动手
10月25日,小米生态链公司云米又推出了一款电动晾衣架——云米互联网电动晾衣架Lite 1C,该产品支持使用“小爱同学”语音控制,也可以使用米家App操控,目前该产品在小米有品已开启众筹,售价699元。
153 0
102个模型、40个数据集,这是你需要了解的机器翻译SOTA论文
机器翻译,是一条漫漫长路;SOTA 模型,都包含着作者们的深刻见解
433 0
Behind the Scenes with Alibaba Cloud's 8K Live Streaming
Learn about 8K and discover how Alibaba Cloud realized the world's first Internet-based 8K live streaming solution.
2908 0
使用escape编码地址栏中的中文字符
在通过地址栏传递参数的时候,有时候会遇到中文参数,在获取这种中文参数值得时候, 往往会出现乱码, 解决办法如下: 在传递参数的使用 escape 函数进行编码,获取的时候再进行解码即可。 例如: var StationName='软件测试' http://192.
711 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
机器学习中,使用Scikit-Leam简单处理文本数据
立即下载
基于神经网络的语言合成
立即下载
典型模型-卷积神经网络入门
立即下载


http://www.vxiaotou.com