语言:
- 中文
标签:
- CPM
许可证: MIT
数据集:
- 100GB中文语料库
CPM-生成模型
模型描述
CPM(中文预训练语言模型)是基于Transformer的自回归语言模型,拥有26亿参数和100GB中文训练数据。据我们所知,CPM是目前最大的中文预训练语言模型,可促进下游中文自然语言处理任务,如对话、文章生成、完形填空和语言理解。[项目主页] [模型下载] [论文]
使用目的与限制
使用方法
from transformers import TextGenerationPipeline, AutoTokenizer, AutoModelWithLMHead
tokenizer = AutoTokenizer.from_pretrained("TsinghuaAI/CPM-Generate")
model = AutoModelWithLMHead.from_pretrained("TsinghuaAI/CPM-Generate")
text_generator = TextGenerationPipeline(model, tokenizer)
text_generator('清华大学', max_length=50, do_sample=True, top_p=0.9)
限制与偏差
CPM生成的文本是由神经网络模型基于海量文本自动生成的,不代表作者或其机构的官方态度和偏好。CPM生成的文本仅用于技术研究和科学探索。若侵犯您的权益或违反社会公德,请勿传播并联系作者处理。
训练数据
预训练数据包含百科、网页、故事、新闻和问答等多类文本,具体分布如下:
数据来源 |
百科全书 |
网页 |
故事 |
新闻 |
对话 |
数据量 |
~40GB |
~39GB |
~10GB |
~10GB |
~1GB |
训练过程
通过超参数搜索确定学习率为\(1.5\times10^{-4}\),批大小为\(3,072\)以保证训练稳定性。初始版本采用稠密注意力机制,最大序列长度\(1,024\)(未来将实现稀疏注意力)。模型预训练20,000步,其中前5,000步为热身阶段,使用Adam优化器。在64张NVIDIA V100上训练最大模型耗时两周。
评估结果
|
参数量 |
层数 |
模型维度 |
注意力头数 |
头维度 |
CPM-小 |
109M |
12 |
768 |
12 |
64 |
CPM-中 |
334M |
24 |
1,024 |
16 |
64 |
CPM-大 |
2.6B |
32 |
2,560 |
32 |
80 |
我们在少样本(甚至零样本)设定下评估不同参数规模的CPM模型。结果显示参数量增加能提升多数任务表现,证明大模型在语言生成和理解方面更具优势。以下是文本分类、成语填空和短文本对话生成的结果(更多细节详见论文)。
文本分类任务零样本表现
|
TNEWS |
IFLYTEK |
OCNLI |
CPM-小 |
0.626 |
0.584 |
0.378 |
CPM-中 |
0.618 |
0.635 |
0.379 |
CPM-大 |
0.703 |
0.708 |
0.442 |
中文成语填空(ChID)数据集表现
|
有监督 |
无监督 |
CPM-小 |
0.657 |
0.433 |
CPM-中 |
0.695 |
0.524 |
CPM-大 |
0.804 |
0.685 |
短文本对话生成(STC)数据集表现
|
平均分 |
极值分 |
贪婪分 |
Dist-1(词级) |
Dist-2(词级) |
少样本(无监督) |
|
|
|
|
|
CDial-GPT |
0.899 |
0.797 |
0.810 |
1,963/0.011 |
20,814/0.126 |
CPM-大 |
0.928 |
0.805 |
0.815 |
3,229/0.007 |
68,008/0.154 |
有监督 |
|
|
|
|
|
CDial-GPT |
0.933 |
0.814 |
0.826 |
2,468/0.008 |
35,634/0.127 |
CPM-大 |
0.934 |
0.810 |
0.819 |
3,352/0.011 |
67,310/0.233 |
BibTeX引用信息
@article{cpm-v1,
title={CPM: 大规模生成式中文预训练语言模型},
author={张正彦 and 韩旭 and 周浩 and 柯沛 and 顾宇贤 and 叶德明 and 秦予佳 and 苏雨笙 and 纪昊哲 and 关健 and 齐凡超 and 王肖志 and 郑亚楠 and 曾冠阳 and 曹欢琪 and 陈盛奇 and 李岱轩 and 孙振波 and 刘知远 and 黄民烈 and 韩文涛 and 唐杰 and 李涓子 and 孙茂松},
year={2020}
}