论文笔记--Baichuan 2: Open Large-scale Language Models
1. 文章简介
- 标题:Baichuan 2: Open Large-scale Language Models
- 作者:Aiyuan Yang et al.
- 日期:2023
- 期刊:arxiv preprint
2. 文章概括
文章提出了百川2开源大模型,在MMLU、GSM8K等benchmarks上超过了现有的开源模型表现,特别地,百川2在医疗、法律等垂域上表现亮眼。百川2模型包括Baichuan 2-7B 和Baichuan 2-13B 和两个不同大小模型,可以供不同需求、不同预算的研究使用,两个模型的区别如下表所示。
3 文章重点技术
3.1 预训练
3.1.1 预训练数据
百川2尝试去提高数据的规模和代表性,为此,文章从网页、数据、研究论文、代码等不同来源构建尽可能丰富的预训练数据。下图为百川2的预训练数据分布情况
百川2希望模型可以接收尽可能高质量的数据集,为此,文章构建了高效的聚类和去重系统。如下图所示,百川2的数据处理程序分为:
- Exact deduplication:完全相同的重复数据剔除
- Heuristic approach:一些启发式的算法(文章并没有提到具体方法)
- Sent-wise quality filter:句子级别的质量过滤(maybe 过滤一些广告、tag之类的,然后再对过滤后的句子、段落去重一遍)
- Sent-wise, paragraph-wise deduplication:句子、段落级别的去重
- Document deduplication:文档级别的去重
3.1.2 模型架构
- 分词器:为了构建一个大小合适且压缩率高的分词器,文章将词表大小从百川1的64000扩充到125695。分词方法为BPE。特别地,为了更好地处理数字,百川2将数字分隔为单个的digit;为了更高地处理代码,百川2在分词器中增加了空格tokens(单个空格、多个空格分别为一个token?)
- 位置编码:百川2选择采用AliBi编码,该方法相比于RoPE编码方法表现更好。
- 激活函数:百川2使用SwiGLU作为激活函数。SwiGLU是当下一些LLMs(PALM,LLaMA等)倾向选择的一种激活函数。由于SwiGLU相当于两个线性变换(其中一个加了Swi函数)的乘积,前馈层SwiFFN包含了三个参数矩阵 ( S w i s h ( x W 1 ) × x V ) W 2 (Swish(xW_1)\times xV) W_2 (Swish(xW1)×