1.2.6 Baichuan系列模型
随着大型语言模型的飞速发展,不仅国外各大厂商在大型语言模型领域发力,国内也涌现出一批以大型语言模型为核心的创业公司。其中,不少公司选择将其在中文能力上表现优异的大型语言模型及技术成果贡献给开源社区,因此加速了大型语言模型技术的传播和发展。
2023年6月15日,百川智能发布了70亿个参数的具有中英双语能力的Baichuan-7B模型,不仅在C-Eval、AGIEval和Gaokao等中文评测榜单上超过同参数等级的模型,并且在MMLU英文评测榜单上超过LLaMA-7B模型。同年7月11日又发布了Baichuan-13B模型,两个模型均采用Transformer的解码器结构,支持的输入最大长度为4096,Baichuan-7B模型在1.2万亿个Token的中英双语数据下进行训练,采用RoPE位置编码,而Baichuan-13B模型则是在1.4万亿个Token数据下进行训练,采用ALiBi位置编码。
2023年9月6日,百川智能又发布了Baichuan2系列模型,包含7B和13B模型,同时还公布了更多数据构造及模型优化上的细节。相较于Baichuan模型来说,Baichuan2模型的主要改进在于:
●模型覆盖的语种变多:从仅支持中、英双语变成支持更多种语言。
●训练数据量增加:数据从1.2万亿个Token增加到2.6万亿个Token,使模型能力更强。
●词表增大:利用SentencePiece中的BPE方法将词表大小从64 000扩展到125 696。为了更好地编码数字内容,将数字序列分成单独的数字;为处理代码中的空格,在词表中额外添加了空Token;词表中Token的长度最长不超过32;对数据压缩更多,使模型的解码效率提高。
●开源中间步骤模型:不仅开源训练最终的模型,还开源了更多训练过程中的临时模型(checkpoint),更便于学术研究。
●垂域支持:在医疗和法律领域的效果更为优异。
Baichuan2模型在数据采集过程中,为了数据的全面性和代表性,从多个来源进行数据收集,包括网页、书籍、研究论文、代码等,各类别数据分布如图1-11所示。此外,从数据的频率和质量两个角度对数据进行清洗,最终保留了原始数据的36.18%,清洗规则如下:
●数据频率。借助LSH-like和嵌入(Embedding)特征对数据进行聚类和去重,主要是对每个聚类后的簇中内容(文档、段落、句子)进行去重和打分,分值用于最终的数据采样。
●数据质量。句子级别质量过滤,但未明确过滤规则。不过从图1-11的模型安全部分可知,对数据进行了暴力、色情、种族歧视、仇恨言论等有害内容过滤,应该还包含其他内容。
图1-11 Baichuan2模型训练数据分布图
Baichuan2模型仍然采用Transformer的解码器结构,但做了一些小改动。
●位置编码:7B的位置编码采用RoPE,13B的位置编码采用ALiBi。因为两种位置编码对模型效果基本没影响,所以继承了Baichuan1的7B和13B的位置编码。
●激活函数:采用SwiGLU激活函数,不同于传统FFN的2个矩阵,SwiGLU有3个矩阵,因此降低了隐藏层维度,由原来的4倍变成8/3倍,再调整为128的整数。
●归一化:对Transformer的输入进行层归一化,提高warm-up的鲁棒性,并用RMSNorm实现。
●NormHead:为了提高模型训练的稳定性,对输出的嵌入向量进行归一化。
●Max-z loss:受NormSoftmax启发,对logits进行归约,主要有助于稳定训练并使推理对超参数更具鲁棒性。
Baichuan2模型对微调数据进行严格把关,最终收集了10万个数据进行模型的有监督微调。并且,设计了一个三层分类系统全面覆盖所有类型的用户需求,包括6个主要类别、30个二级类别、200多个三级类别。在奖励模型训练时,需要保证每个类别内的数据有足够的多样性,以确保奖励模型有更好的泛化性。此外,奖励数据中的结果需要由Baichuan2模型生成,以确保数据分布的统一。在人类偏好对齐阶段,为了增加模型的安全性,召集10个有传统互联网安全经验的专家构建了6种攻击类型和超过100个细粒度安全价值类别,由50人标注团队生成20万个攻击性提示,进行模型安全性的对齐训练。