模型介绍
内容详情
替代品
模型简介
中文分词版RoBERTa模型集合中的中型规格,支持掩码语言建模等自然语言处理任务,具有更快的处理速度和更好的性能表现
模型特点
分词版优势
相比字符级模型处理速度更快且性能更优,在多项中文NLP任务中平均提升1.1分
多规格选择
提供从微型(Tiny)到基础(Base)5种不同规模的预训练模型
公开训练流程
完整公开训练数据和训练参数,使用CLUECorpusSmall语料和sentencepiece分词工具
模型能力
中文文本理解
掩码词预测
文本特征提取
下游任务微调
使用案例
文本补全
句子补全
预测被掩码的词语完成句子
示例输入'[MASK]的首都是北京',模型正确预测'中国'
情感分析
评论情感判断
微调后用于商品评论情感分类
在书评情感任务中达到90.0%准确率
语言:中文 数据集:CLUECorpusSmall 示例输入:
- 文本:"最近一趟去北京的[MASK]几点发车"
中文分词版RoBERTa微型模型集
模型描述
这是通过UER-py预训练的5个中文分词版RoBERTa模型集合,相关技术发表于此论文。此外,这些模型也可通过TencentPretrain预训练,该框架继承UER-py支持十亿级参数模型,并扩展为多模态预训练框架,详见此论文。
多数中文预训练权重基于字符级别。相比字符模型,分词版模型具有更快的处理速度(序列长度更短)且实验显示性能更优。为此我们发布了5种不同规格的中文分词版RoBERTa模型。为便于复现结果,我们采用公开语料和分词工具,并提供了完整训练细节。
您可以通过UER-py模型库页面或以下HuggingFace链接下载这5个微型模型:
下载链接 | |
---|---|
分词版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] |
相比字符版模型,分词版在多数任务中表现更优。以下是六个中文任务开发集上的得分对比:
模型 | 综合得分 | 书评情感 | 中文情感 | 文本匹配 | 新闻分类(CLUE) | 应用分类(CLUE) | 自然语言推理(CLUE) |
---|---|---|---|---|---|---|---|
RoBERTa-Tiny(字符) | 72.3 | 83.4 | 91.4 | 81.8 | 62.0 | 55.0 | 60.3 |
RoBERTa-Tiny(分词) | 74.4(+2.1) | 86.7 | 93.2 | 82.0 | 66.4 | 58.2 | 59.6 |
RoBERTa-Mini(字符) | 75.9 | 85.7 | 93.7 | 86.1 | 63.9 | 58.3 | 67.4 |
RoBERTa-Mini(分词) | 76.9(+1.0) | 88.5 | 94.1 | 85.4 | 66.9 | 59.2 | 67.3 |
RoBERTa-Small(字符) | 76.9 | 87.5 | 93.4 | 86.5 | 65.1 | 59.4 | 69.7 |
RoBERTa-Small(分词) | 78.4(+1.5) | 89.7 | 94.7 | 87.4 | 67.6 | 60.9 | 69.8 |
RoBERTa-Medium(字符) | 78.0 | 88.7 | 94.8 | 88.1 | 65.6 | 59.5 | 71.2 |
RoBERTa-Medium(分词) | 79.1(+1.1) | 90.0 | 95.1 | 88.0 | 67.8 | 60.6 | 73.0 |
RoBERTa-Base(字符) | 79.7 | 90.1 | 95.2 | 89.2 | 67.0 | 60.9 | 75.5 |
RoBERTa-Base(分词) | 80.4(+0.7) | 91.1 | 95.7 | 89.4 | 68.0 | 61.5 | 76.8 |
每个任务均从以下超参数组合中选择最优配置,训练时序列长度为128:
- 训练轮次:3/5/8
- 批量大小:32/64
- 学习率:3e-5/1e-4/3e-4
使用方式
可直接使用pipeline进行掩码语言建模(以分词版RoBERTa-Medium为例):
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='uer/roberta-medium-word-chinese-cluecorpussmall')
>>> unmasker("[MASK]的首都是北京。")
[
{'sequence': '中国 的首都是北京。',
'score': 0.21525809168815613,
'token': 2873,
'token_str': '中国'},
{'sequence': '北京 的首都是北京。',
'score': 0.15194718539714813,
'token': 9502,
'token_str': '北京'},
{'sequence': '我们 的首都是北京。',
'score': 0.08854265511035919,
'token': 4215,
'token_str': '我们'},
{'sequence': '美国 的首都是北京。',
'score': 0.06808705627918243,
'token': 7810,
'token_str': '美国'},
{'sequence': '日本 的首都是北京。',
'score': 0.06071401759982109,
'token': 7788,
'token_str': '日本'}
]
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")
text = "用你喜欢的任何文本替换我。"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
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")
text = "用你喜欢的任何文本替换我。"
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
因BertTokenizer不支持sentencepiece,此处使用AlbertTokenizer。
训练数据
采用CLUECorpusSmall作为训练语料,使用Google的sentencepiece进行分词。分词模型在CLUECorpusSmall上训练:
>>> import sentencepiece as spm
>>> spm.SentencePieceTrainer.train(input='cluecorpussmall.txt',
model_prefix='cluecorpussmall_spm',
vocab_size=100000,
max_sentence_length=1024,
max_sentencepiece_length=6,
user_defined_symbols=['[MASK]','[unused1]','[unused2]',
'[unused3]','[unused4]','[unused5]','[unused6]',
'[unused7]','[unused8]','[unused9]','[unused10]'],
pad_id=0,
pad_piece='[PAD]',
unk_id=1,
unk_piece='[UNK]',
bos_id=2,
bos_piece='[CLS]',
eos_id=3,
eos_piece='[SEP]',
train_extremely_large_corpus=True
)
训练流程
模型通过UER-py在腾讯云上预训练。先以128序列长度训练1,000,000步,再以512序列长度追加训练250,000步。不同规模模型采用相同超参数。
以分词版RoBERTa-Medium为例:
第一阶段:
python3 preprocess.py --corpus_path corpora/cluecorpussmall.txt \
--spm_model_path models/cluecorpussmall_spm.model \
--dataset_path cluecorpussmall_word_seq128_dataset.pt \
--processes_num 32 --seq_length 128 \
--dynamic_masking --data_processor mlm
python3 pretrain.py --dataset_path cluecorpussmall_word_seq128_dataset.pt \
--spm_model_path models/cluecorpussmall_spm.model \
--config_path models/bert/medium_config.json \
--output_model_path models/cluecorpussmall_word_roberta_medium_seq128_model.bin \
--world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7 \
--total_steps 1000000 --save_checkpoint_steps 100000 --report_steps 50000 \
--learning_rate 1e-4 --batch_size 64 \
--data_processor mlm --target mlm
第二阶段:
python3 preprocess.py --corpus_path corpora/cluecorpussmall.txt \
--spm_model_path models/cluecorpussmall_spm.model \
--dataset_path cluecorpussmall_word_seq512_dataset.pt \
--processes_num 32 --seq_length 512 \
--dynamic_masking --data_processor mlm
python3 pretrain.py --dataset_path cluecorpussmall_word_seq512_dataset.pt \
--spm_model_path models/cluecorpussmall_spm.model \
--pretrained_model_path models/cluecorpussmall_word_roberta_medium_seq128_model.bin-1000000 \
--config_path models/bert/medium_config.json \
--output_model_path models/cluecorpussmall_word_roberta_medium_seq512_model.bin \
--world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7 \
--total_steps 250000 --save_checkpoint_steps 50000 --report_steps 10000 \
--learning_rate 5e-5 --batch_size 16 \
--data_processor mlm --target mlm
最后转换为Huggingface格式:
python3 scripts/convert_bert_from_uer_to_huggingface.py --input_model_path models/cluecorpussmall_word_roberta_medium_seq512_model.bin-250000 \
--output_model_path pytorch_model.bin \
--layers_num 8 --type mlm
引用信息
@article{devlin2018bert,
title={BERT: 面向语言理解的深度双向变换器预训练},
author={Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina},
journal={arXiv预印本 arXiv:1810.04805},
year={2018}
}
@article{turc2019,
title={阅读广泛的学生学习更好:论紧凑模型预训练的重要性},
author={Turc, Iulia and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina},
journal={arXiv预印本 arXiv:1908.08962v2},
year={2019}
}
@article{zhao2019uer,
title={UER:预训练模型的开源工具包},
author={赵哲 and 陈辉 and 张金斌 and 刘涛 and 路炜 and 陈曦 and 邓浩堂 and 鞠奇 and 杜晓勇},
journal={EMNLP-IJCNLP 2019},
pages={241},
year={2019}
}
@article{zhao2023tencentpretrain,
title={TencentPretrain:面向多模态预训练的可扩展灵活工具包},
author={赵哲 and 李裕东 and 侯成 and 赵静等},
journal={ACL 2023},
pages={217},
year={2023}
[4_
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型
支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型
英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型
英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型
英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型
支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型
英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型
英语
O
facebook
6.3M
198
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers

支持多种语言
L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型
支持多种语言
T
google-t5
5.4M
702
Xlm Roberta Large
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型
支持多种语言
X
FacebookAI
5.3M
431
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers

支持多种语言
L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers

英语
C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统
中文
R
uer
2,694
98
AIbase是一个专注于MCP服务的平台,为AI开发者提供高质量的模型上下文协议服务,助力AI应用开发。
简体中文