清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文为核心的大规模预训练模型。首期开源内容包括预训练中文语言模型和预训练知识表示模型,可广泛应用于中文自然语言理解、生成任务以及知识计算应用,所有模型免费向学术界和产业界开放下载,供研究使用。
1
背景介绍
语言模型是指对自然语言文本进行概率建模的模型,它不仅可以估计任意一个给定文本序列的概率,也可以用来预测文本序列中某个位置上词的出现概率,是自然语言处理中最基本的问题。
2018年以来,预训练语言模型 (Pretrained Langauge Model, PLM) 的研究风起云涌。与此前有监督学习范式不同的是,预训练语言模型能够充分利用大规模的无标注数据学习通用的语言模型,然后再使用下游任务的少量有标注数据进行模型微调。与直接训练具体任务模型相比,在预训练语言模型基础上微调得到的模型在自然语言处理各大任务上均取得了显著的性能提升。
在 GPU 多机多卡并行算力和海量无标注文本数据的双重支持下,预训练模型实现了参数规模与性能齐飞的局面,取得了人工智能和深度学习领域的革命性突破。国际著名互联网企业和研究机构互相竞争,将模型规模和性能不断推向新的高度。BERT之后,短短两年时间,最新发布的 GPT-3 已经达到1750亿参数规模、上万块 GPU 的惊人训练规模。在人工智能与深度学习领域围绕超大规模预训练模型展开的“军备竞赛”日益白热化,成为对海量数据、并行计算、模型学习能力的全方位考验。
预训练模型规模以平均每年10倍的速度增长 (最后一列计算时间为使用单块NVIDIA V100 GPU训练的估计时间。M-百万,B-十亿)
预训练模型研究发展图
在这一态势下,亟需建立以中文为核心的超大规模预训练模型。为此,北京智源人工智能研究院和清华大学研究团队合作开展大规模预训练模型,并发布清源 CPM (Chinese Pretrained Models) 研究计划,旨在推动中文自然语言处理的研究与应用。清源 CPM 计划将依托智源研究院新建的人工智能算力平台,建立以中文为核心的超大规模预训练模型,进行基于超大规模预训练语言模型的少次学习能力以及多任务迁移能力研究,探索更具通用能力的语言深度理解技术。2020 年 11 月中旬,CPM 开放第一阶段的26 亿参数规模的中文语言模型 (CPM-LM) 和217亿参数规模的结构化知识表示模型 (CPM-KM) 下载,以及相应的系统演示。
关于预训练模型的大量实验表明,更大的模型参数和更多的预训练数据,通常能够带来更好的下游任务效果,这类模型被证明在各种少样本学习 NLP 任务中十分有效。传统预训练模型往往需要经过有监督训练数据微调 (Fine-tuning),才能解决各种自然语言处理任务。而第一版 CPM 中文语言模型与 GPT-3 等预训练模型类似,仅需要通过少次、单次学习甚至零次学习,就能完成不同自然语言处理任务,具备一定的常识和认知的泛化能力。CPM 模型从大规模的中文语料库中学习了通用的语言模式,有望显著提升中文自然语言处理各任务的性能。初步的实验表明,CPM 模型能够用于问题解答、摘要和对话以及生成各种文本包括随笔、小说、代码、电子表格等。
2
模型特点
与已有的中文预训练模型相比,本次发布的清源 CPM 大规模预训练模型具有以下特点:
1. 学习能力强:能够在多种自然语言处理任务上,进行零次学习或少次学习达到较好的效果。
2. 语料丰富多样:收集大量丰富多样的中文语料,包括百科、小说、对话、问答、新闻等类型。
3. 行文自然流畅:基于给定上文,模型可以续写出一致性高、可读性强的文本,达到现有中文生成模型的领先效果。
4. 模型规模大:本次发布的 CPM-LM 的参数规模为 26 亿,预训练中文数据规模100 GB,使用了 64 块 V100 GPU 训练时间约为 3 周。CPM-KG 的参数规模分别为217亿,预训练结构化知识图谱为 WikiData 全量数据,包含近 1300 个关系、8500万实体、4.8 亿个事实三元组,使用了 8 块 V100 GPU 训练时间约为 2 周。
3
模型训练方法
目前预训练模型的模型参数与数据规模均在不断增长,给训练任务带来极大的挑战。具体而言,数据规模的增大导致训练时间成倍数增长,模型参数规模的增大导致单卡无法容纳整个模型的参数。面对这些挑战,则需要设计高效的大规模训练框架,能够支持庞大的训练规模并有效降低训练时间。
本次发布的大规模预训练模型,单块 GPU 上的存储与计算单元难以承受其训练过程。因此,需要将模型在多个 GPU 之间分配参数,进行并行化训练。CPM 模型预训练过程分布在多块 GPU 上,采用层内并行的方法进行训练,并基于当前已有的成熟技术,减少同步提高通讯速率。
在硬件设施方面,为训练该 CPM 模型,共有 64 块 V100 显卡投入使用。经过预训练的 CPM 模型可以用来促进诸多下游中文任务,例如对话,论文生成,完形填空和语言理解等等。
当前主流的并行策略主要分为数据并行、模型并行和流水并行,具体来说:
● 数据并行是将每一批次的数据切分成几部分,分别发送到模型的多个镜像中进行训练。这些模型的参数保持一致,且在计算梯度时进行同步,保证梯度更新之后参数的一致性。数据并行主要解决了训练数据过大,单个设备无法存放的问题。
● 模型并行主要是为解决模型参数规模过大无法被单卡存放的问题。模型并行会将模型中的参数矩阵切分成几块,分别存放在不同的设备上,同时将训练中的超大规模矩阵计算分布到多块卡上。通过对模型中矩阵操作的分块,一方面可以降低单个设备上的模型存储负担;另一方面,并行执行也能极大优化计算时间,减少每张卡的计算量。
● 流水并行则是针对训练批次进行优化,将训练数据在不同层间的计算流水化,以提高计算集群的利用效率。在实际的训练中,以上三种并行模型常常会一起使用。与模型并行相比,流水并行能够降低并行执行过程中产生的设备之间的通信量,降低通信时间。
在利用上述三种成熟优化的基础上,CPM计划对模型并行中的通信进行进一步优化,削减通信时间,提升运行效率。这部分优化将在下一阶段工作中体现。
4
模型实验结果
清源 CPM 使用新闻、百科、对话、网页、故事等不同类型中文语料数据进行预训练。在多个公开的中文数据集上的实验表明,清源 CPM 在少样本或无样本的情况下都能够达到较好的效果。
4.1. 中文成语填空 ChID
ChID 是 2019 年清华大学对话交互式人工智能实验室(CoAI)收集的中文成语填空数据集,其目标是对于给定的段落,在 10 个候选项中选择最符合段意的成语进行填空。
其中有监督设定是指在 ChID 的训练集上进行训练,随后在测试集上测试;无监督设定是指不经过任何额外训练,直接使用预训练模型进行测试。具体做法是,将候选项依次填入段落中,计算填充后段落的困惑度 (Perplexity),选择困惑度最小的候选项作为预测结果。表中汇报了预测的准确率,可以看到,CPM(大) 在无监督的设定下甚至达到了比有监督的 CPM (小) 更好的结果,反应了清源 CPM 强大的中文语言建模能力。
4.2. 对话生成 STC
STC 是2015年华为诺亚方舟实验室提出的短文本对话数据集,要求在给定上文多轮对话的条件下预测接下来的回复。
其中 CDial-GPT 是清华大学对话交互式人工智能(CoAI)实验室 2020 年提出的中文对话预训练模型。用于衡量多样性的 Dist-n 指标的两个数字分别是所有不重复的 N-Gram 的数量及占所有 N-Gram 的比例。可以看到,在无监督的设定下,清源 CPM 具有更好的泛化性,在有监督设定下,清源 CPM 能达到比 CDial-GPT 更优的效果,尤其在多样性指标上表现更佳。以下为生成的对话样例。
4.3. 文本分类
清源 CPM 使用头条新闻标题分类 (TNEWS,采样为4分类),IFLYTEK应用介绍分类 (IFLYTEK,采样为4分类),中文自然语言推断 (OCNLI,3分类) 任务作为文本分类任务的基准。具体做法是,先输入分类样本,再输入“该文章的类别为/该介绍的类别为/两句话的关系为”,要求模型直接生成标签,四个标签中概率最高的标签作为预测结果。在无监督设定下,不同规模的清源 CPM 在文本分类任务上的精确度如下表所示。
清源 CPM 能够在无监督的设定下达到比随机预测 (TNEWS/IFLYTEK/OCNLI 随机预测精确度分别为0.25/0.25/0.33) 好得多的精确度。
4.4. 自动问答
CPM 使用 DuReader 和CMRC2018 作为自动问答任务的基准,要求模型从给定的段落中抽取一个片段作为对题目问题的答案。其中DuReader 由百度搜索和百度知道两部分数据组成。在无监督的设定下,不同规模的 CPM 模型的表现如下表所示。
其中单样本是指在测试时,从数据集中随机抽取一个正确的 “(段落,问题,答案)” 三原组,插入到用于评价的样例前,作为 CPM 模型生成答案的提示。零样本是指直接使用 CPM 模型预测给定段落和问题的答案。在单样本设定下,CPM 能从给定的样本中学习到生成答案的模式,因此效果总是比零样本设定更好。由于模型的输入长度有限,多样本输入的场景将在未来进行探索。
4.5. 实体生成
CPM 采用 XLORE 中的几种常见的关系三元组作为实体生成任务的基准。在少样本设定 (把少量真实样本拼在待预测样本前作为提示) 下,不同规模的 CPM 模型的 BLEU-1 值如下表所示。我们针对同一种关系类别 (表格中的类别) ,给定 N 个三元组 (实体,关系,实体),再拼接待预测样本,让模型预测对应的尾实体。
表格汇报了 XLORE 中十种常见关系模型预测结果的 BLEU-1 值,可以看出参数量越大时,模型对于预测实体效果越好。同时,模型在给定 2 个样本时就可以达到不错的效果,大部分时候 N=2 和 N=4 的效果是接近的。
5
样例展示
这里提供一些模型生成文本的样例,更直观地展示清源 CPM 第一阶段预训练中文语言模型和知识表示模型的效果。
在“故事生成”演示中,用户可以任意填写一段初始文本,让模型去预测后续内容。这些初始文本可以是任意文体:例如小说、说明文、议论文、天气预报、体育报道、新闻报道,甚至是对话、知识问答以及数字推理,清源 CPM 都能仿照前文的风格和规律行文如流。在此举几个例子验证此单一预训语言练模型的多功能性:
CPM 预训练语言模型只需要对一个常识性问题的学习,就能依照规律提问和正确回答:
能够根据前文真实的天气预报,像模像样地继续报道天气预报(不保证正确性):
还能做一定的数理推理,模型的自动推理特性完全可以应用在电子表格软件中:
甚至可以续写红楼梦片段:
6
团队介绍与研究计划
清源 CPM 计划由北京智源人工智能研究院 (简称“智源研究院”) 和清华大学研究团队合作开展。智源研究院是在科技部和北京市委市政府的指导和支持下,由北京市科委和海淀区政府于2018年11月推动成立的新型研发机构。智源研究院通过设立“智源学者计划”,在多个重大研究方向重点支持人工智能科学家挑战人工智能最基础的问题和最关键的难题。
“自然语言处理”是智源研究院重点支持的重大研究方向之一。近年来,该研究方向的智源学者在预训练模型方面积累了丰富的研究成果,如清华大学孙茂松、刘知远团队和李涓子、唐杰团队提出了知识指导的预训练模型 ERNIE 和 KEPLER,循环智能杨植麟团队提出了性能显著优于 BERT 的 XLNet 模型,清华大学朱小燕和黄民烈团队提出了面向情感分析的预训练模型 SentiLARE,融合常识知识的预训练语言生成模型 StoryGPT,面向中文对话生成的 CDial-GPT模型,等等。
正是意识到预训练模型对中文自然语言处理研究和应用的重要意义,智源研究院和清华大学研究团队在已有研究的基础上,决定联合开展以中文为核心的预训练模型研究和开源共享,研究团队包括清华大学自然语言处理与社会人文计算实验室 (THUNLP)、对话交互式人工智能课题组 (CoAI)、清华大学并行与分布式计算机系统实验室 (PACMAN)、清华大学知识工程研究室 (THUKG)。研究团队将在智源研究院大规模算力平台的支持下,开展以中文为核心的超大规模预训练模型研究,包括跨语言学习、文本生成、知识融合、模型并行和压缩等前沿课题,并将相关模型及时通过智源社区开源共享。
清源 CPM 未来一年的研究和开源计划为:
● 阶段1 (2020年10月-12月):中文大规模预训练语言模型,含约 30 亿参数,训练数据包括 100GB 中文数据。
● 阶段2 (2021年01月-06月):以中文为核心多语言大规模预训练语言模型,含约 200 亿参数,训练数据包括 500GB 以中文为核心的多语言数据。
● 阶段3 (2021年07月-09月):知识指导的大规模预训练语言模型,含约 1000 亿参数,训练数据包括 1TB 以中文为核心的多语言数据和亿级实体关系图谱。
清源 CPM 计划将积极配备算力、数据和人力,注重开展原创研究,尽早实现与国际顶尖机构在超大规模预训练模型技术方面并跑,提升中文自然语言的深度理解和生成能力。在此基础上,清源 CPM 计划探索超大规模预训练模型学习机制与人脑学习机制之间的联系与区别,支持认知神经科学、心理学和语言学等跨学科交叉研究,从数据驱动深度学习无法回避的可解释性差、鲁棒性差、容易受到攻击的瓶颈入手,以离散符号表示的知识指导与数据驱动的神经网络有机融合、人脑认知机制启发等原始创新为突破口,建立下一代人工智能的技术体系。
与此同时,基于清源 CPM 模型的文本深度理解和智能生成能力,智源研究院也将积极与产业界合作,在智能客服、个性推荐、文本生成、自动编程等方面,探索新型的人工智能应用和商业模式。
7
相关资源
清源CPM 主页:https://cpm.baai.ac.cn/
清源CPM Github 托管代码主页:https://github.com/TsinghuaAI/
预训练模型必读论文列表:https://github.com/thunlp/PLMpapers
相关论文清单:
[1] ERNIE: Enhanced Language Representation with Informative Entities. ACL 2019.
[2] KEPLER: A Unified Model for Knowledge Embedding and Pre-trained Language Representation. TACL 2020.
[3] A Knowledge-Enhanced Pretraining Model for Commonsense Story Generation. TACL 2020.
[4] SentiLARE: Sentiment-Aware Language Representation Learning with Linguistic Knowledge. EMNLP 2020.
[5] Train No Evil: Selective Masking for Task-Guided Pre-Training. EMNLP 2020.
[6] A Large-Scale Chinese Short-Text Conversation Dataset. NLPCC 2020.
[7] Language Generation with Multi-Hop Reasoning on Commonsense Knowledge Graph. EMNLP 2020.