语言:中文
数据集:CLUECorpusSmall
示例输入:
中文分词版RoBERTa微型模型集
模型描述
这是通过UER-py预训练的5个中文分词版RoBERTa微型模型集合,相关技术细节详见论文。此外,这些模型也可通过TencentPretrain进行预训练,该框架继承UER-py支持十亿级参数模型,并扩展为多模态预训练框架,详见此论文。
当前多数中文预训练权重基于字符级别。相比字符模型,分词版模型具有更快的处理速度(序列长度更短)且实验显示性能更优。为此我们发布了5种不同规模的中文分词版RoBERTa模型。为便于复现结果,我们使用公开语料和分词工具,并提供了完整训练细节。
您可以通过以下方式获取这5个中文RoBERTa微型模型:
模型规格 |
下载链接 |
分词版RoBERTa-Tiny |
L=2/H=128 (微型) |
分词版RoBERTa-Mini |
[L=4/H=256 (迷你)][4_256] |
分词版RoBERTa-Small |
[L=4/H=512 (小型)][4_512] |
分词版RoBERTa-Medium |
[L=8/H=512 (中型)][8_512] |
分词版RoBERTa-Base |
[L=12/H=768 (基础版)][12_768] |
与字符版模型相比,分词版在多数任务中表现更优。以下是六个中文任务开发集上的得分对比:
(表格内容保持原格式不变)
使用方式
掩码预测示例(以分词版RoBERTa-Medium为例):
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='uer/roberta-medium-word-chinese-cluecorpussmall')
>>> unmasker("[MASK]的首都是北京。")
[...]
特征提取示例(PyTorch版):
from transformers import AlbertTokenizer, BertModel
tokenizer = AlbertTokenizer.from_pretrained('uer/roberta-medium-word-chinese-cluecorpussmall')
model = BertModel.from_pretrained("uer/roberta-medium-word-chinese-cluecorpussmall")
[...]
特征提取示例(TensorFlow版):
from transformers import AlbertTokenizer, TFBertModel
tokenizer = AlbertTokenizer.from_pretrained('uer/roberta-medium-word-chinese-cluecorpussmall')
model = TFBertModel.from_pretrained("uer/roberta-medium-word-chinese-cluecorpussmall")
[...]
注:由于BertTokenizer不支持sentencepiece,此处使用AlbertTokenizer。
训练数据
使用CLUECorpusSmall作为训练语料,采用Google的sentencepiece进行分词处理。分词模型训练指令如下:
>>> import sentencepiece as spm
>>> spm.SentencePieceTrainer.train(...)
训练流程
模型通过UER-py在腾讯云上预训练,分为两个阶段:
- 序列长度128训练1,000,000步
- 序列长度512追加训练250,000步
(具体训练命令保持原格式不变)
最终转换模型格式:
python3 scripts/convert_bert_from_uer_to_huggingface.py [...]
引用文献
@article{devlin2018bert,
title={BERT: 面向语言理解的深度双向Transformer预训练},
author={Devlin等人},
year={2018}
}
[...]
[...]