🚀 中文CPT-Base
本项目是CPT-Base的实现,主要用于中文语言理解和生成任务。它在多个中文自然语言处理任务中展现出了良好的性能,并且不断进行更新优化。
🚀 快速开始
若要使用CPT,需将定义CPT架构的文件 modeling_cpt.py
(点击下载)导入到你的项目中。
>>> from modeling_cpt import CPTForConditionalGeneration
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("fnlp/cpt-base")
>>> model = CPTForConditionalGeneration.from_pretrained("fnlp/cpt-base")
>>> inputs = tokenizer.encode("北京是[MASK]的首都", return_tensors='pt')
>>> pred_ids = model.generate(input_ids, num_beams=4, max_length=20)
>>> print(tokenizer.convert_ids_to_tokens(pred_ids[i]))
['[SEP]', '[CLS]', '北', '京', '是', '中', '国', '的', '首', '都', '[SEP]']
⚠️ 重要提示
请使用 BertTokenizer
处理模型词汇,请勿使用原始的 BartTokenizer
。
✨ 主要特性
模型更新
- 2022年12月30日:发布了CPT和中文BART的更新版本。在新版本中,对以下部分进行了更改:
- 词汇表:用一个从训练数据构建的更大的词汇表(大小为51271)替换了旧的BERT词汇表,具体操作包括:1) 添加缺失的6800多个中文字符(其中大部分是繁体字);2) 移除冗余的标记(例如带有 ## 前缀的中文字符标记);3) 添加一些英文标记以减少未登录词(OOV)。
- 位置嵌入:将
max_position_embeddings
从512扩展到1024。
模型初始化与训练
使用旧版本的检查点并进行词汇对齐来初始化新版本的模型。复制旧检查点中找到的标记嵌入,其他新添加的参数则随机初始化。进一步以批量大小2048、最大序列长度1024、峰值学习率2e - 5和热身比率0.1对新的CPT和中文BART进行了50K步的训练。
性能对比
与之前的检查点相比,更新后的模型性能如下:
|
AFQMC |
IFLYTEK |
CSL - sum |
LCSTS |
AVG |
之前版本 |
|
|
|
|
|
bart - base |
73.0 |
60 |
62.1 |
37.8 |
58.23 |
cpt - base |
75.1 |
60.5 |
63.0 |
38.2 |
59.20 |
bart - large |
75.7 |
62.1 |
64.2 |
40.6 |
60.65 |
cpt - large |
75.9 |
61.8 |
63.7 |
42.0 |
60.85 |
更新版本 |
|
|
|
|
|
bart - base |
73.03 |
61.25 |
61.51 |
38.78 |
58.64 |
cpt - base |
74.40 |
61.23 |
62.09 |
38.81 |
59.13 |
bart - large |
75.81 |
61.52 |
64.62 |
40.90 |
60.71 |
cpt - large |
75.97 |
61.63 |
63.83 |
42.08 |
60.88 |
结果表明,更新后的模型与之前的检查点相比保持了相当的性能。仍有一些情况显示更新后的模型略逊于之前的模型,原因如下:1) 额外训练的几步并未带来显著的性能提升;2) 一些下游任务不受新添加标记和更长编码序列的影响,但对微调超参数敏感。
⚠️ 重要提示
要使用更新后的模型,请更新 modeling_cpt.py
(新版本下载 点击此处)和词汇表(刷新缓存)。
📚 详细文档
模型描述
这是CPT - Base的一个实现。若要使用CPT,需将定义CPT架构的文件 modeling_cpt.py
(下载 点击此处)导入到你的项目中。
相关论文
CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Generation
作者:Yunfan Shao, Zhichao Geng, Yitao Liu, Junqi Dai, Fei Yang, Li Zhe, Hujun Bao, Xipeng Qiu
代码仓库
Github链接:https://github.com/fastnlp/CPT
📄 许可证
未提及相关许可证信息。
📝 引用
@article{shao2021cpt,
title={CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Generation},
author={Yunfan Shao and Zhichao Geng and Yitao Liu and Junqi Dai and Fei Yang and Li Zhe and Hujun Bao and Xipeng Qiu},
journal={arXiv preprint arXiv:2109.05729},
year={2021}
}