模型:
fnlp/cpt-large
2022年12月30日
CPT和中文BART的更新版本已发布。在新版本中,我们对以下部分进行了更改:
我们用旧版本的检查点初始化了新版本的模型,并进行了词汇对齐。复制了旧检查点中的标记嵌入。其他新增的参数采用随机初始化。我们使用批量大小为2048、最大序列长度为1024、峰值学习率为2e-5和预热比例为0.1的设置,对新的CPT和中文BART进行了进一步的训练,共进行了50000个步骤。
相较于先前的检查点,结果如下所示:
AFQMC | IFLYTEK | CSL-sum | LCSTS | AVG | |
---|---|---|---|---|---|
Previous | |||||
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 |
Updataed | |||||
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) 一些下游任务不受新增标记和更长的编码序列的影响,但对微调超参数敏感。
这是CPT-Large的实现。要使用CPT,请将定义CPT体系结构的文件 modeling_cpt.py ( 下载 Here )导入到您的项目中。
CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Generation
邵云帆,耿志超,刘义韬,戴俊奇,杨飞,李哲,包虎军,邱希鹏
Github链接: https://github.com/fastnlp/CPT
>>> from modeling_cpt import CPTForConditionalGeneration >>> from transformers import BertTokenizer >>> tokenizer = BertTokenizer.from_pretrained("fnlp/cpt-large") >>> model = CPTForConditionalGeneration.from_pretrained("fnlp/cpt-large") >>> input_ids = 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[0])) ['[SEP]', '[CLS]', '北', '京', '是', '中', '国', '的', '首', '都', '[SEP]']
注意:请使用BertTokenizer进行模型词汇处理。不要使用原始的BartTokenizer。
@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} }