1.2.7 Qwen系列模型
在ChatGPT爆火之后,国内各厂商都紧追不舍,纷纷开放自研大型语言模型接口邀请用户进行测试和体验。百度在2023年3月16日宣布大型语言模型“文心一言”开始内测,阿里巴巴在2023年4月7日宣布自研大型语言模型“通义千问”开始内测,很多厂商纷纷发声,开启了国内大型语言模型的崛起之路。但仅通过API来访问大型语言模型,对研究这些模型的人来说变得十分困难。阿里巴巴为了帮助更多人从事大型语言模型相关的研究,于2023年8月3日开源了70亿个参数的“通义千问”大模型Qwen-7B,在9月25日又开源了140亿个参数的“通义千问”大模型Qwen-14B,随后在11月30日开源了18亿个参数和720亿个参数的“通义千问”大模型Qwen-1.8B和Qwen-72B。
Qwen模型的预训练数据主要涉及公共网络文档、百科全书、书籍、代码等,数据涉及多种语言,但以中文和英文为主。为了保证数据质量,Qwen模型制定了一套全面的预处理程序,最终仅保留了3万亿个Token的训练预料,具体如下:
●Web数据需要从HTML中提取文本内容,并采用语言识别工具确定语种。
●通过重复数据删除技术增加数据的多样性,包括规范化后的精确匹配重复数据删除方法及使用MinHash和LSH算法的模糊重复数据删除方法。
●结合规则和机器学习的方法过滤低质量数据,即通过多个模型对内容进行评分,包括语言模型、文本质量评分模型及用于识别潜在冒犯性的模型。
●从各种来源数据中手动采样并进行审查,以确保其质量。
●有选择地对来自某些来源的数据进行采样,以确保模型在各种高质量内容上进行训练。
Qwen模型在构建词表的过程中,采用BPE分词器,以cl100k为基础词库,增加了常用的中文字词及其他语言的词汇,并把数字字符串拆成单个数字,最终将词表大小定为15.2万。模型结构依然采用Transformer的解码器结构,但做了以下修改:
●对于嵌入层和lm_head层不进行权重共享,是两个单独的权重。
●采用RoPE位置编码,并选择使用FP32精确度的逆频率矩阵。
●在QKV注意力层中添加了偏差,以增强模型的外推能力。
●采用预归一化提高训练稳定性,并将传统归一化方法替换为RMSNorm。
●采用SwiGLU激活函数,因此降低了隐藏层维度。
此外,在模型预训练过程中,Qwen模型采用Flash Attention技术来提高训练速度;采用AdamW优化器,并将超参数β1、β2和ε分别定为0.9、0.95和10-8;采用余弦学习率计划,学习率衰减到峰值的10%;采用BFloat16进行混合精度训练。由于Transformer模型的注意力机制在上下文长度上有很大的限制,随着上下文长度的增加,模型的计算成本和内存会成倍增加。Qwen模型利用了动态NTK感知插值(随着序列长度的增加动态缩放位置信息)、LogN-Scaling(对Q和V的点积进行重新缩放,确保注意力值的熵随着上下文长度的增加而保持稳定)及窗口注意力机制(将注意力限制在一个上下文窗口内,防止模型关注到太远的内容)等方式,在推理过程中可以将上下文长度扩展到1.6万个Token。
为了提高有监督微调数据集的能力,Qwen模型对多种风格的对话进行了标注,以关注不同任务的自然语言生成,进一步提高模型的有用性。Qwen模型采用可以使模型有效区分各类信息(包括系统质量、用户输入、模型输出等)的ChatML样式的格式来进行模型训练,以增强模型对复杂会话的处理和分析能力。在人类偏好对齐阶段,奖励模型先采用大量数据进行偏好模型预训练(Preference Model Pretraining,PMP),再采用高质量偏好数据进行奖励模型精调。高质量偏好数据通过具有6600个详细标签的分类系统平衡采样获取,以保证数据的多样性和复杂性。奖励模型由同等大小的Qwen模型+池化层得来,用特殊的句子结束标记映射值作为模型奖励值。Qwen系列模型的详细参数如表1-5所示。
表1-5 Qwen系列模型的详细参数