作者:XXL|||||
ModelScope
ModelScope平台汇集了行业领先的预训练模型,以开源的方式提供多类优质模型,开发者可在平台上免费体验与下载使用。
StructBERT介绍
StructBERT在BERT的基础上提出改进优化,通过在句子级别和词级别引入两个新的目标函数,打乱句子/词的顺序并使模型对其进行还原的方式,能让机器更好地掌握人类语法,加深对自然语言的理解,使得模型学习到更强的语言结构信息。
在公开数据集上比BERT均稳定取得提升
中文系列StructBERT
ModelScope上开源了各种规模大小的中文StructBERT模型,都汇总在了下面的表格中,我们可以根据需要采用不同大小的模型。
我们可以代码中指定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中可以使用配置文件,设定数据预处理、模型训练、模型评估等流程,模型仓库中模型等配置文件名称为
configuration.json
- 在配置文件中,我们可以设定训练所需的相关字段,比如运行框架(pytorch/tensorflow)、任务名称(分类、相似度等)、前处理流程(preprocessor)以及训练优化器(optimizer);详细的字段说明可以参考Configuration详解
- 如下是我们使用StructBERT来训练句子相似度模型的一个配置文件示例
十行代码开启训练
下面afqmc(Ant Financial Question Matching Corpus)数据集为例,演示基于StructBERT进行模型训练
# coding=utf-8 frommodelscope.msdatasetsimportMsDatasetfrommodelscope.trainersimportbuild_trainerif__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占用、训练时长等)
更多ModelScope的finetune设置,可以参考文档:文本分类finetune最佳实践
ModelScope体验反馈
- 整体来说,ModelScope上已经开源了许多重要场景的优质模型,可以让开发者在更高的起点上(如StructBERT等预训练模型)结合自身场景进行开发。
- 另一方面,ModelScope目前还刚刚起步,一些工作还有待建设(比如更多更有意义的真实数据集),期望ModelScope越做越好