Tele-FLM 系列再升级!52B 对话模型发布、全球首个万亿单体稠密模型开源
![Tele-FLM系列再升级!52B对话模型发布、全球首个万亿单体稠密模型开源](https://static001.geekbang.org/infoq/0f/0f7e7e25b9c4e88f6e607ea8e7b843d6.jpeg)
由北京智源人工智能研究院和中国电信人工智能研究院(TeleAI)联合研发的 Tele-FLM(又名 FLM-2)系列大模型近日再次升级,发布 52B 指令模型 FLM-2-52B-Instruct(中文对话能力达到 GPT-4 的 90%),并开源全球首个万亿单体稠密模型 Tele-FLM-1T。相关技术报告介绍了 52B 模型监督微调的相关技术与方法,以及通过生长式方法高效、低成本训练万亿模型的探索和实践。为了促进相关领域的前沿探索,Tele-FLM-52B-Instruct 和 Tele-FLM-1T 模型的 checkpoint 已经开源。
FLM-2-52B-Instruct 模型开源链接
https://huggingface.co/CofeAI/FLM-2-52B-Instruct-2407
Tele-FLM-1T 模型开源链接:
https://huggingface.co/CofeAI/Tele-FLM-1T
52B + 1T 技术报告链接:
https://arxiv.org/abs/2407.02783
52B 基座模型技术报告链接:
https://arxiv.org/abs/2404.16645
FLM-2-52B-Instruct
FLM-2-52B-Instruct 是基于 Tele-FLM-52B 基座模型[1]进行指令微调获得的指令对话模型。
1.1 微调数据
我们专注于通过监督微调(SFT),使基座模型获得中文对话能力,以收集的 100 万条开源指令作为全集,并在不同的采样子集上进行微调,研究 SFT 数据对下游任务表现的影响。尽管 SFT 数据广泛涵盖了对话、数学、代码、推理、语言理解、头脑风暴、文本生成等多个领域,但是使用全集进行微调并不是 SFT 的最优解。通过对不同采样策略的实验,基于一个 3 万条数据的子集获得了最优结果。这 3 万条数据由两部分构成:
25,000 条被聚类模型标记为“数学”的数据,包括数学题目与对应的步骤、答案(主要是小学到初中难度),以及关于数学概念的问答。
5,000 条代码和多轮对话数据。
为了提升数据质量,我们使用 Tele-FLM-52B 基座模型计算每个回答的困惑度(Perplexity)。上述 3 万条数据是从更大的数据集样本中,在各个数据集中通过不同阈值,筛选出最低困惑度的数据。实验结果表明,选取低困惑度的数据有助于提升下游任务性能。
1.2 训练设置
训练过程中,将 batch size 设定为 128,学习率设定为 1.35e-5,总共训练 4 个 epoch。学习率通过线性衰减,在第 4 个 epoch 末尾下降至 5e-10。将 weight decay 设置为 0.1,dropout 设置为 0。选取第 4 个 epoch 末尾的 checkpoint 进行评测和发布。
1.3 模型评测
基于 AlignBench 评测平台对中文对话能力进行评测。AlignBench 包含 8 大类任务,其中数学计算、逻辑推理两项衡量模型的中文推理能力,基本任务、中文理解、综合问答、文本写作、角色扮演、专业能力六项衡量模型的中文语言能力。使用平台提供的 CritiqueLLM 服务对 FLM-2-52B-Instruct 模型的回答和参考答案进行打分。CritiqueLLM 的打分与 GPT-4 具有较好的一致性[2]。
在下表中,GPT 系列和 ChatGLM-Turbo 对比结果显示,FLM-2-52B-Instruct 总体均分显著高于 GPT-3.5,并达到 GPT-4-0613 的 90%。
![](https://static001.geekbang.org/infoq/d0/d070230d59f0d76cdab190f38322d2db.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
在表中可以观察到,在参与对比的模型中,FLM-2-52B-Instruct 在基本任务和中文理解两个子项上取得最优,而在逻辑推理、综合问答、文本写作、角色扮演、专业能力等五个子项上位列第二,这说明对话模型具有先进的对话能力。同时,模型的数学和推理能力与 GPT-4-1106 仍然有明显差距,这是未来的改进方向之一。值得注意的是,SFT 数据几乎只包含数学和推理相关的指令和对话,却在数学和推理以外的任务上取得了领先的效果。这表明 SFT 能够有效激发基座模型的知识和语言能力,并且达成这一目的所需要的训练数据量较少。这与 SFT 中一个“少即是多”的流行观点相吻合。然而,“少即是多”只对通用语言能力生效,而对于数学、推理任务,3 万条领域内数据可能仍然是不足的。
Tele-FLM-1T
Tele-FLM-1T 全球首个开源的具有万亿参数的稠密模型。基于前置工作 FLM-101B 的经验,Tele-FLM-1T 采用生长式预训练以节省成本,旨在为开源领域的万亿模型训练提供一个较优的起始点。
2.1 模型结构
Tele-FLM-1T 是由 Tele-FLM-52B 经过 102B、1T 两个阶段生长得到的。Tele-FLM 系列在 GPT 系列的 decoder-only Transformers 基础上,引入了以下改动:
加入 Input 和 Output 乘子
旋转位置编码(RoPE)
RMSNorm 和 SwiGLU
线型层去掉 bias;Embedding 和输出线性层取消绑定
每个生长阶段的模型结构参数如下表:
![](https://static001.geekbang.org/infoq/fa/fac966662fd4d6ecd2d5e3a891cd6d8e.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
2.2 生长策略
Tele-FLM-1T 的训练过程使用了类似于前置工作 FLM-101B[3]的较为激进的生长策略,将较多的 token 分配给了 52B 阶段。在生长过程中,使用了基于前置工作 MSG[4]改进的保值算子并探索了横向生长、纵向生长在万亿级模型上的可行方案。
横向生长
横向生长指 attention 头数量、hidden_size 和 FFN 隐层维度的增大。为了解决横向生长的保值性问题,在生长后的第一步,我们引入全零的 mask,将新结构对模型计算流的影响完全消除;随后,这些 mask 的值在一定步数之内线性增加到 1。这一过程的步数是一个可调节的超参数,称为"growth_transition_step"(过渡步数)。在过渡期结束后,模型所表达的函数与常见的目标结构等价。
纵向生长
纵向生长是指模型层数的增加。在纵向生长过程中,我们也引入了与横向类似的 mask 机制实现保值。mask 为 0 时,新增的层被完全跳过。纵向生长的一个关键问题是选取哪些已知层进行参数拷贝。我们观察到,每一层的输入和输出之间的欧式距离能够较为有效地反应该层的重要性。基于这一观察,我们设计了如下准则来筛选在纵向生长中进行拷贝的层:
· 优先选择输入-输出间欧氏距离最小的层;
· 对于距离相近的层,优先选择靠近模型输出位置的层;
· 避免将同一层参数拷贝两次或以上。
以上准则可以促使生长后的模型能够较快收敛。
2.3 预训练细节
在生长式预训练过程采用的具体超参数设置见下表。
![](https://static001.geekbang.org/infoq/0f/0f45f98882a77bf0a8036105f355a4d7.png)
经验教训
3.1 监督微调
观察发现,“少即是多”的指导思想在 Tele-FLM-52B 的微调中获得成功,少量的指令数据足以在通用对话场景下激发基础模型的能力。
与此相反,对于数学、逻辑推理、代码生成等任务,更加精细的设计和更多的数据量可能是必须的,因为在低难度的数学题上进行 SFT,其数学能力并不能推广到更难的数学和推理任务上。
3.2 生长式预训练
保值的生长算子可以保证在千亿、万亿级别的激进生长策略下模型的收敛性。在生长后的每个阶段,更大的模型在相同数据量下的 loss 下降速度都快于前一阶段的小模型。计算资源限制了进一步与从零训练万亿模型进行横向比较,或进行全面的推理评测。
当模型超过 1T 参数时,参数优化问题变得更加复杂。在生长场景下,有些小模型上的结论可以推广到大模型,有些则不能。初步观测表明 2.3 章中给出的参数设置是有效的,但更优的生长设计则需要进一步探索。
参考工作
[1] Tele-FLM-52B 基座项目链接:https://huggingface.co/CofeAI/Tele-FLM
[2] AlignBench 评测:https://github.com/THUDM/AlignBench
[3] FLM-101B 项目链接:https://huggingface.co/CofeAI/FLM-101B
[4] MSG 生长算子:https://github.com/cofe-ai/MSG
评论