CPM-Bee的结构整体与CPM-Ant保持一致,可参考模型细节。
相较于CPM-Ant,CPM-Bee增加了如下特性:
- 增加结构化数据处理(Structured Data Processing):CPM-Bee将支持结构化数据(例如Json文件)的处理,以便更好地支持下游应用;
- 增加预训练硬提示(Pre-trained Hard Prompts):为了让CPM-Bee更好地掌握不同任务所对应的结构化数据形式,我们通过硬提示来组织结构化数据,并在预训练中充分学习这些硬提示;
- 增加词表扩展功能(Vocabulary Expansion):CPM-Bee是多语言模型,因此我们加入了词表扩展功能,以支持更多语言的持续学习,我们也引入了对不同语言同时进行处理的分词器;
- 增加数量自适应[UNK]和[MASK]:传统的预训练模型采用统一的[UNK]和[MASK]标签(或者类似T5预训练固定数量的[MASK]标签),难以对[UNK]及[MASK]进行精细处理。这里我们将引入数量自适应的[UNK]和[MASK]机制,即模型能自动识别输入数据中的[UNK]和[MASK],编码为[MASK#1]、[MASK#2]…以及[UNK#1]、[UNK#2]…,并对每个[UNK]和[MASK]单独进行特征处理。该机制十分有利于处理一些具有复杂上下文的网络文本,例如带有emoji的文本。
出于性能影响以及使用便利性的角度,CPM-Bee在CPM-Ant的基础上也引入了一些简化:
- 删除段向量(Segment Embeddings):基于CPM-Ant的大量实验表明,在CPM-Ant的多段机制及相对位置编码(Multi-segment Mechanism & Relative Position Bias)中,结合段信息进行相对位置编码已经可以有效区分输入序列的分段特性,无需再采用类似BERT中的段向量来指导模型。此外,段向量往往面临泛化性的问题,即大量的预训练数据只存在1~2个分段,训练出的模型难以处理拥有2个分段以上的输入数据。因此,我们在CPM-Bee中去除了段向量的设计。
CPM-Bee具有如下模型特性:
在CPM-Ant中,我们着重构建以中文为核心的大模型。在CPM-Bee中,我们将逐渐加入英文以及其他语种的数据(包括各语言独立数据及跨语言平行数据),最终形成以中文为核心,多语种兼顾的大规模预训练语言模型。
已有的预训练语言模型主要立足于利用非结构化文本进行训练,因而对于半结构化及结构化数据的处理能力较弱。在CPM-Bee中,我们会加入各类半结构化及结构化数据的处理功能,以更好地支持网页、代码等结构化复杂文本的处理能力。下面展示了一条结构化训练数据:
{
"document": "今天天气是真的<mask_0>,我们去了<mask_1>,玩得非常<mask_2>。",
"<ans>": {
"<mask_0>": "好",
"<mask_1>": "颐和园",
"<mask_2>": "开心"
}
}
在CPM-Bee中,我们会在预训练过程中引入各类常见任务模式的数据增强,包括生成、问答、摘要、翻译等,支持CPM-Bee在各类文本处理任务上开箱即用,提升结合少量样本的参数高效微调的性能。
CPM-Ant采用1TB原始数据,清洗后得到200GB高质量中文数据,这部分数据会被继续在CPM-Bee中使用。此外,CPM-Bee引入了400GB的多语言数据来进行预训练。基于上述600GB数据,我们设计了多样化的数据增广算法,使CPM-Bee具备多种语言能力,这些数据增广算法我们会在后续的技术报告中详细展开。
在CPM-Ant中,我们已经验证了OpenBMB的大模型全流程计算框架的可靠性,因此CPM-Bee也将基于下列工具进行训练、微调、压缩与推理:
CPM-Bee 10B大模型训练将于2022年10月13日启动,并将每月发布一版模型。
模型训练过程中重点进行性能监控与问题处理,收集功能倡议与社区讨论意见并进行模型修改与反馈。主要计划开展相关工作如下:
- 实时:展示模型训练指标曲线
- 每日:发布单日模型训练日志
- 每周:集中处理反馈来自社区的讨论与意见
- 定期:发布模型训练的中间checkpoint并提供用户下载
模型训练完成后,CPM-Bee将对社区模型提议进行整理与集成,并将模型进行相应尺度的压缩,准备总结报告并陆续公布相关模型。此外,对于未能采纳的部分社区提议,我们将考虑引入到下一代模型训练中,并开始进行下一代模型的训练筹备。