论文笔记--Baichuan 2: Open Large-scale Language Models
论文笔记--Baichuan 2: Open Large-scale Language Models
-
1. 文章简介
-
2. 文章概括
-
3 文章重点技术
-
-
3.1 预训练
-
- 3.1.1 预训练数据
- 3.1.2 模型架构
-
3.2 对齐
-
- 3.2.1 SFT
- 3.2.2 Reward Model(RM)
- 3.2.3 PPO
-
3.3 安全性
-
-
4. 文章亮点
-
5. 原文传送门
1. 文章简介
- 标题:Baichuan 2: An Open-Source Large-Scale Language Model Supporting Fine-Grained Multimodal Pre-training and Fine-Tuning Capabilities
- 作者:Aiyuan Yang et al.
- 发布于:发布于 2023 年
- 期刊:arxiv repository
2. 文章概括
本文介绍了一个名为百川2的开源大模型,在经过一系列评测后发现其在多个基准测试中均超越了现有的开源模型性能水平。其中,在医疗和法律等垂直领域中表现尤为突出。该模型由7B和13B参数量的两个版本组成,并附有详细的对比表格供参考。

3 文章重点技术
3.1 预训练
3.1.1 预训练数据
百川2致力于优化其预训练数据的质量和多样性,在具体实施中,该系统通过整合网页信息、原始数据资源、学术论文成果以及代码库等多种来源的数据素材,力求涵盖多维度的信息资源以满足深度学习模型的需求。如图所示为百川2在预训练阶段的数据分布图

百川2致力于使模型能够高效地接收高质量的数据样本,并在其中提取有效的知识资源。为了实现这一目标,在文章中构建了高效的聚类与去重机制。如图所示其数据处理流程划分为三个主要模块:
- 精确重复数据的删除
- 启发式方法(文章中并未具体说明采用何种启发式算法)
- 句子级别质量过滤(可能用于过滤广告或标签等不相关内容)
- 句子和段落级别的重复消除
- 文档重复消除

3.1.2 模型架构
- 分词器:为了构建一个大小合适且压缩率高的分词器,文章将词表大小从百川1的64000扩充到125695。分词方法为BPE。特别地,为了更好地处理数字,百川2将数字分隔为单个的digit;为了更高地处理代码,百川2在分词器中增加了空格tokens(单个空格、多个空格分别为一个token?)
- 位置编码:百川2选择采用AliBi编码,该方法相比于RoPE编码方法表现更好。
- 激活函数:百川2使用SwiGLU作为激活函数。SwiGLU是当下一些LLMs(PALM,LLaMA等)倾向选择的一种激活函数。由于SwiGLU相当于两个线性变换(其中一个加了Swi函数)的乘积,前馈层SwiFFN包含了三个参数矩阵(Swish(xW_1)\times xV) W_2,为了保持相同的计算量,我们将隐藏层的尺寸从4倍隐藏层大小缩减到8/3倍隐藏层大小(缩减到原来的2/3,这样三个参数的计算量为2/3*3=2,基本和原来2个矩阵的计算量持平),再近似到128的倍数。
- Optimization:文章采用AdamW为优化器
- NormHead:文章做了数值实验发现通过使用NormHead,即正则output层(heads),训练动态过程可以更加稳定,此外文章发现语义信息主要由cosine相似度\frac {}{\Vert a\Vert_2 \Vert b\Vert_2}进行度量,但线性层是通过计算点积进行计算的,两者之间相差了a, b的L2范数,从而通过对输出层进行L2正则,我们可以有效地减轻L2距离对语义信息的影响。
- Max-z loss:文章发现训练过程中,LLMs的logits可能变得非常大,而softmax很容易被这些非常大的logits所影响。为此,一些研究选择采用惩罚项来对太大的logits进行惩罚,比如repetition penalty,但这样可能会扭曲最后生成的概率。文章类似PALM,增加一项max-z loss来对logits进行正则:\mathcal{L}_{max-z} = 2e^{-4} * z^2,其中z表示logits的最大值,即logits最大值越大,损失\mathcal{L} = \mathcal{L_0} + \mathcal{L}_{max-z}越大,从而起到对太大的logits的惩罚作用
- Scaling Laws:当数据规模、模型大小或者两者增加时,模型的error会降低,这就是大名鼎鼎的Scaling law。文章通过训练从10M到3B的不同代奥的模型,得到了拟合比较好的Scaling Law曲线,且该曲线可以比较精准地预测参数量为7B/13B的error:

3.2 对齐
3.2.1 SFT
在SFT阶段中,请由人工标注员对来自不同渠道的prompt进行分类标注工作。每个prompt会被标记为是否具有帮助性以及是否安全,并遵循类似Claude的标准进行判断。研究团队共收集了经过筛选后的100,000份SFT数据样本,并将这些样本输入base模型进行基础训练,在此基础上应用RLHF(奖励学习引导方法)进一步优化模型性能

3.2.2 Reward Model(RM)
文章对所有的prompts进行了多级分类结构的设计:首先划分出6个主要类别,在此基础上进一步细化为30个二级类别,并最终形成了200个三级别分类体系。在训练奖励模型的过程中,我们希望尽可能覆盖到每一个类别中的prompt,并使每个类别的prompt达到多样化的效果。具体操作中,给定一个prompt后,首先利用百川2不同规模和不同阶段的模型生成一系列具有差异性的回答。随后会对这些回答进行评估,并基于此数据集来优化奖励模型。
3.2.3 PPO
获得RM后我们利用PPO策略对语言模型进行了训练,并基于以下四个关键组件构建了一个完整的强化学习体系:首先引入了actor网络以生成多样的回答;其次设计了参考网络用于计算KL散度损失;随后提出了奖励网络为每条样本分配奖励分值;最后部署了批评者网络负责评估每个token的贡献价值。整个RLHF流程可直观表示为下图所示。
3.3 安全性
随着大模型技术的发展
4. 文章亮点
该开源大模型基于百川系列架构构建,并拥有2-7B至13B规模参数。该模型经过多轮优化,在多项基准测试中展现出色。此外,在绝大多数中文基准测试任务中实现了最优性能,并且,在医疗和法律等广泛应用于的专业领域中取得了显著的进步。
