CPM-Live训练计划书
一、计划总览
CPM-Live直播训练是以CPM系列模型为架构基础的开源大模型直播训练,训练过程将采用持续学习方式并实时直播训练进展。和现有的开源大模型以及相关直播相比,CPM-Live具有以下特点:
-
持续学习。现有开源大模型在训练完成后即告一段落,CPM-Live基于持续学习方法,将于未来较长时间内持续进行训练与完善。具体来说,CPM-Live的训练将分为若干阶段,我们将以训练10B大模型为起点,提供中英文支持以及结构化输入输出能力。在后续训练中,CPM-Live模型规模将不断扩大,数据将不断增多,能力将不断完善,语言将不断丰富。
-
开放民主。CPM-Live倡导开源共建,CPM-Live训练过程希望积极征求开源社区的意见建议。在CPM-Live训练过程中,社区用户可对CPM-Live模型包括但不限于模型特性、训练方式、使用数据等方面提出倡议,其中成熟的倡议将有可能集成于最终模型。此外,CPM-Live倡导开放,训练结束后将提供相关模型参数下载,并采用包括允许商业化在内的开放模型使用协议。
-
高效计算。CPM-Live训练、压缩、推理过程将基于OpenBMB开源社区系列工具包。通过大模型训练“发动机”BMTrain,我们可以在小规模的集群中训练百亿以上规模的超大模型,这大幅降低了模型训练的成本,也使我们的训练更加低碳和高效。使用大模型“瘦身”工具库BMCook和高效推理工具包BMInf,普通用户可以在消费级显卡上运行大模型,从而更加便捷地体验大模型的魅力。
二、CPM-Live模型
(一)模型架构
CPM-Live的模型架构与主要设置如下:
-
基于提示模板的多段式框架设计(prompt-based multi-segment framework):提示模板(prompt)用以实现模型在理解、生成、摘要等功能之间的快速切换,也易于添加新的功能(学习新的prompt)。
文本段(segment)提供基础的文本编码能力,通过段表示(segment embedding)来影响模型编码模式,复杂的文本编码模式可以拆解成若干基础段的组合,例如编码-解码框架可以拆解成一个编码段+一个解码段的组合。对于每一个基础段,段内采用相对位置编码。
基于提示模板和文本段的组合、拼接,结构简单且易于实现增加、修改模块,进行持续学习和功能更新。
-
共享embedding:CPM-Live输入embedding及输出embedding会共享参数,这点与BERT、GPT、T5一致,与T5-1.1、mT5不一致。我们的实验表明共享输入输出的embedding参数会极大增强训练稳定程度,而不共享embedding参数易于导致训练过程出现NaN。
-
无bias:我们的模型中,各类线性变换及layer norm均不设置bias。一方面源于不设置bias的模型训练稳定性会更强,另一方面也是不设置bias的模型在计算速度及显存消耗上要更占优。
-
动态词表:对于词表,初始阶段我们将提供大小为30000的中文词表,在后续训练过程中会结合新数据情况进行动态变动。
(二)参数规模
在训练中我们将通过多阶段的持续学习来实现参数不断增长。为了兼顾实际使用过程中的计算效率,我们会提供各种常用尺寸的大模型压缩版本,具体训练规模参数和开源参数规模如下表所示。
|
层数 |
24 |
36 |
48 |
60 |
72 |
96 |
隐状态维度 |
12288 |
|
|
|
|
|
175B (GPT3) |
8192 |
|
|
|
|
60B |
|
5120 |
|
|
|
20B |
25B |
|
4096 |
|
🐛 7B |
🐜 10B CPM-Ant |
|
|
|
2560 |
|
🐛 3B |
|
|
|
|
2048 |
🐛 1B |
|
|
|
|
|
1024 |
🐛 0.3B |
|
|
|
|
|
我们将以训练10B参数的CPM-Ant模型为起点,提供中英文支持和结构化输入输出功能,后续训练过程中将陆续增大模型规模和数据量,并提供对更多语言、更多功能的支持。
训练工具详见:
压缩工具详见:
(三)模型特性
CPM-Live具有如下模型特性:
规模持续增大
对于CPM-Live,我们不谋求一次性塑成一个拥有巨大参数量的模型,而是从百亿参数规模开始,立足模型知识继承、参数动态增长等技术,持续推动预训练模型能力提升与参数增长,同时有效避免灾难性遗忘问题对持续学习过程带来的负作用。模型参数是否增长取决于模型是否达到了学习能力瓶颈。相关内容可参考论文 Knowledge inheritance for pre-trained language models。
能力持续扩展
我们会在CPM-Live的预训练过程中引入通用性的任务提示,并利用自监督的方式同步预训练这些任务提示,促进大模型能力到下游任务的适配。在最初的阶段中,我们将预训练文本续写、改写、摘要、理解等基础的通用提示。后续会结合具体需求在预训练中添加新功能的任务提示。有关预训练提示微调方法可参考论文 Ppt: Pre-trained prompt tuning for few-shot learning。
数据持续增多
对于CPM-Live的训练数据,我们会在初期完成1TB数据的训练,训练数据的具体细节可见数据分析章节。在后续持续学习过程中,我们一方面会持续加入更多通用域数据进行训练;另一方面,我们会结合特定领域加入领域数据,来持续提升CPM-Live对于具体领域特定任务的解决能力。
版本向下兼容
在模型规模持续增大、模型能力持续增强、训练数据逐渐增多之后,易于出现早期版本的提示模板与新版本模型无法配合的问题,我们在CPM-Live的训练过程中也会引入必要措施,确保新版本对旧提示模板具有较好的向下兼容。
多语言融合
初期模型训练中,我们着重构建以中文为核心的大模型。在后续持续学习过程中,我们将逐渐加入英文以及其他语种的数据,最终形成以中文为核心,多语种兼顾的大规模预训练语言模型,以提供强有力的跨语言任务支持。
复杂结构处理
已有的预训练语言模型主要立足于利用非结构化文本进行训练,因而对于半结构化及结构化数据的处理能力较弱。CPM-Live在持续学习过程中,会逐步加入各类半结构化及结构化数据的处理功能,以更好地支持网页、代码等结构化复杂文本的处理能力。
(四)数据处理
CPM-Live对于原始数据进行了一系列的处理,用于提升数据质量、减少信息冗余、增强模型安全性,主要包含了如下三个阶段:
- 数据过滤:数据过滤阶段使用了模板、规则、PPL等多种过滤方案,筛除了原始语料中的低质量数据和敏感信息,用于提升模型安全性和训练阶段的稳定性。
- 数据去重:数据去重阶段使用了哈希值的方法对数据进行去重。去重算法针对于文档中的每一个段落计算一个哈希值,当一篇文档中70%以上的段落哈希值已经出现在数据库中则视为重复,否则将所有段落的哈希值存入数据库。
- 数据增强:数据增强阶段通过一些已有模型或无监督方法,构造或生成额外的监督信号,用于提升模型在下游任务中zero-shot和few-shot环境下的表现。
完成三个阶段处理后的数据,最终会经过tokenizer
转换为一系列的token id
,并根据CPM-Live的最大训练长度切分为多个训练实例供模型训练。
三、开源共建
CPM-Live积极营造大模型在线训练社区并在训练过程中倡导开源共享,鼓励社区用户深度参与并积极提供意见建议。用户主要参与方式如下:
(一)功能倡议
CPM-Live训练过程中,社区用户可对CPM-Live模型包括但不限于模型特性、训练方式、使用数据等方面提出倡议。社区用户可于社区发布功能倡议,对于可行性强且社区支持度高的倡议,OpenBMB会指派工程师或社区志愿者进行倡议交流与讨论,倡议成熟后将有机会于CPM-Live训练过程中集成于当前版本模型中。若后续训练过程新增功能、特性或数据使模型表现稳定,该倡议将有机会集成于最终版本进行发布。
(二)应用开发
基于发布后的CPM-Live系列模型,社区用户可以在社区提出CPM-Live创意应用的任何想法与作品,包括但不限于初期想法、原型设计、开发代码或应用成品。社区将定期收集人气较高的创意应用并在平台进行展示。
(三)社区讨论
用户可于用户社区进行大模型相关交流讨论,内容可涉及学术研讨、工程实现、工具使用、应用设计等。社区鼓励积极健康的技术交流与讨论,共同推动大模型相关生态的建设与发展。
(四)模型下载
用户可免费下载CPM-Live各公开版本模型,并遵照本计划书约定的使用协议进行使用。
用户社区初期将基于GitHub相关功能,后续社区功能将陆续完善并集成于CPM-Live官方网站中。
四、使用协议
CPM-Live系列发布模型适用协议为“通用模型许可协议-来源说明-宣传限制”。
根据本协议下设定的情形,发布者授予使用者全球性的、非专有性的、免费的使用权,包括模型推理、模型修改、模型共享及分发,但应基于以下前提条件:
- 来源说明:使用者使用通用模型和通用模型结果时须附上此通用模型的来源及本许可协议链接。
- 允许修改发布:使用者可以发布与传播经自行修改源模型后的派生模型以及派生模型结果。
- 宣传限制:使用者不得以发布者的名义推广宣传此通用模型。
- 商业化:使用者可以以任何商业目的使用此通用模型。
- 无新增限制:使用者不得另外使用任何法律条款或技术措施,限制他人做本许可协议准许的任何事情。
更多该协议详细内容请参阅该网址。该协议隶属于通用模型许可协议族,关于更多通用模型许可协议的介绍,请参阅该网址。
五、风险提示
考虑到机器学习模型的“黑盒”本质,模型有可能在不受控的情况下输出包括但不限于虚假信息、错误政治言论、偏见与歧视性话语、对不良行为的煽动与暗示等内容。CPM-Live虽已对相关训练数据进行数据清洗,但仍有可能具有不限于如下所示使用风险。用户使用CPM-Live相关资源前,需明确本节涉及的相关风险,并在使用过程中承担全部风险与责任。
- 侵犯个人隐私。模型有可能直接或经引导后产生涉及个人隐私的内容。
- 侵犯内容版权。模型有可能直接或经引导后产生与其他出版物相同、相似的内容。
- 产生虚假信息。模型有可能直接或经引导后产生不符合事实或客观规律的虚假信息。用户不应故意使用与引导模型制作虚假内容。
- 产生政治敏感内容。模型有可能直接或经引导后产生与政策、法规等相关的政治敏感内容。
- 产生偏见与歧视性话语。模型有可能直接或经引导后产生包括但不限于性别、种族等方面的偏见与歧视性话语。
- 产生对不良行为的煽动与暗示。模型有可能直接或经引导后产生对于违法犯罪等不良行为的煽动与暗示。
- 产生个体伤害言论。模型有可能直接或经引导后产生对个体进行伤害的言论,如对个人的诋毁、打击言论或鼓励个体进行自我伤害行为的言论等。
六、支持方案
训练不易,您的每一次分享与转发都将为大模型训练助力。
如您想提供算力、数据、资金支持或其他合作,请联系openbmb@gmail.com。
七、CPM-Ant训练计划
综合考虑数据和算力规模,CPM-Live将以10B模型训练为起点,我们将其命名为CPM-Ant。CPM-Ant 10B大模型训练将于2022年5月29日启动,预计整个训练周期为5个月。
(一)模型训练
模型训练过程中重点进行性能监控与问题处理,收集功能倡议与社区讨论意见并进行模型修改与反馈。主要计划开展相关工作如下:
- 实时:展示模型训练指标曲线
- 每日:发布单日模型训练日志
- 每周:集中处理反馈来自社区的讨论与意见
- 不定期:发布模型训练的中间checkpoint并提供用户下载
模型训练完成后,CPM-Ant将对社区模型提议进行整理与集成,并将模型进行相应尺度的压缩,准备总结报告并陆续公布相关模型。此外,对于未能采纳的部分社区提议,我们将考虑引入到下一代模型训练中,并开始进行下一代模型的训练筹备。
(二)数据分析
CPM-Ant采用1TB原始数据,清洗后得到200GB高质量数据,数据详情如下表所示:
数据来源 |
占比 |
文档平均长度(字) |
句子平均长度(字) |
平均PPL(mGPT)* |
书籍 |
33.02% |
248495.71 |
32.93 |
273.777 |
网页 |
21.52% |
665.83 |
28.304 |
141.53 |
小说 |
20.76% |
62317.79 |
30.839 |
69.98 |
杂志 |
11.95% |
2534.16 |
39.06 |
83.22 |
学术 |
4.77% |
173.8 |
58.044 |
39.04 |
百科 |
2.25% |
1081.33 |
32.466 |
2072.53 |
新闻 |
1.79% |
717.87 |
43.717 |
56.85 |
其它 |
3.95% |
852.36 |
37.68 |
395.26 |
* 使用mGPT计算得到句子平均PPL |