Qwen大模型简介
机器人涮火锅 2024-08-28 10:31:13 阅读 56
文章目录
1、引言2、Qwen 进化史2.1 Qwen系列2.1 Qwen1.5 系列2.2 Qwen2 系列
3、模型架构3.1 Qwen系列3.2 Qwen2系列
4、训练数据4.1 Qwen系列4.2 Qwen2系列
5、训练方法5.1 Qwen系列5.2 Qwen2系列
参考
1、引言
Qwen大语言模型是由阿里巴巴训练并开源的一系列大语言模型。最早是在2023年8月份开源70亿参数规模,随后几个月时间内陆续开源了4个不同规模版本的模型,最低参数18亿,最高参数720亿。而今天阿里巴巴开源了他们家第二代的Qwen系列大语言模型(准确说是1.5代),从官方给出的测评结果看,Qwen1.5系列大模型相比较第一代有非常明显的进步,其中720亿参数规模版本的Qwen1.5-72B-Chat在各项评测结果中都非常接近GPT-4的模型,在MT-Bench的得分中甚至超过了此前最为神秘但最接近GPT-4水平的Mistral-Medium模型。
2、Qwen 进化史
2.1 Qwen系列
Qwen系列大模型的参数规模为18亿(1.8B)、70亿(7B)、140亿(14B)和720亿(72B),包括基础模型Qwen,即Qwen-1.8B、Qwen-7B、Qwen-14B、Qwen-72B,以及对话模型Qwen-Chat,即Qwen-1.8B-Chat、Qwen-7B-Chat、Qwen-14B-Chat和Qwen-72B-Chat。基础模型已稳定训练大规模、高质量且多样化的数据,涵盖多语言(以中文和英文为主),总量达 3 万亿 token。Qwen 系列模型在基准评测中表现出色,超越同规模模型并紧追最强闭源模型。通过 SFT 和 RLHF 技术从基座模型训练得到 Qwen-Chat 对话模型,它具备多种能力,包括聊天、创作、摘要、信息抽取、翻译、代码生成、数学推理等,还针对 LLM 对接外部系统做了优化,具备较强工具调用能力。
Qwen系列模型的特点总结如下:
稳定训练大规模、高质量且多样化的数据,多语言数据总量达 3 万亿 token,以中文和英文为主;Qwen 系列模型在基准评测中表现有竞争力,超越同规模模型,接近最强闭源模型。通过 SFT 和 RLHF 技术从基座模型训练出 Qwen-Chat 对话模型。Qwen-Chat 具备聊天、文字创作、摘要、信息抽取、翻译、代码生成和简单数学推理的能力。针对 LLM 对接外部系统做了优化,具备较强的工具调用能力。
2.1 Qwen1.5 系列
Qwen1.5系列大模型包含6个不同参数规模的版本,分别是5亿、18亿、40亿、70亿、140亿和720亿。相比较第一代,增加了5亿规模版本和40亿参数规模版本。而这6个不同参数规模版本的模型,每一个都开源了基础预训练版本、聊天优化版本、Int4量化、Int8量化以及AWQ版本,所以相当于每一个参数规模的模型都有5个版本,因此一共发布了30个版本的模型!
Qwen1.5系列模型的特点总结如下:
有6个不同参数模型版本(0.5B, 1.8B, 4B, 7B, 14B 和 72B),最小的仅5亿参数,最大的有720亿参数;聊天优化版本的模型相比较第一代模型有明显的进步,其中720亿参数的Qwen1.5-72B在MT-Bench得分仅次于GPT-4;基座版本和聊天版本在多语言方面的能力得到增强,包括中英文在内,共支持12种语言(如日语、俄语、法语西班牙语等);所有版本模型最高支持32K的长上下文输入;支持系统提示,可以完成Roleplay;生态完善,发布即支持vLLM、SGLang等推理加速框架;支持不同的量化框架;月活1亿以下直接商用授权,月活1亿以上商用需要获取授权;
2.2 Qwen2 系列
Qwen2系列大模型包含5个不同参数规模的版本,分别是5亿、15亿、70亿、570亿和720亿。相比较Qwen1.5,Qwen2所有尺寸的模型都使用了GQA,带来了推理加速和显存占用降低的明显优势。此外还针对性地优化了多语言场景中常见的语言转换(code switch)问题,模型当前发生语言转换的概率大幅度降低,Qwen2系列模型在此方面能力的显著提升。
Qwen2系列模型的特点总结如下:
规模多样化:提供 5 个尺寸的模型,满足不同场景和计算资源需求;语言能力广泛:增加 27 种语言数据,优化语言转换问题,降低语言转换概率,具备更强的多语言处理能力;性能卓越:在多个评测基准上领先,超越同类模型;代码和数学能力突出:能更好地处理编程和数学相关任务;上下文处理强大:增大上下文长度支持,最高达 128K tokens;
3、模型架构
3.1 Qwen系列
Qwen采用了改进版的Transformer架构,具体包括以下内容:
Embedding和输出投影:采用不绑定输入嵌入和输出投影权重的untied embedding approach,但会增加内存成本,以实现更好的性能。Positional embedding:选择RoPE(Rotary Positional Embedding)作为位置嵌入方式,其在当代大型语言模型中被广泛应用,如PaLM和LLaMA等。对于RoPE的逆频率矩阵,使用FP32精度而非BF16或FP16,以优先保证模型性能和准确性。Bias:遵循Chowdhery等人的做法,在大多数层中去除偏置,但在注意力的QKV层中添加偏置,以增强模型的外推能力。Pre - Norm & RMSNorm:采用Pre - Normalization作为最广泛使用的方法,同时用RMSNorm(Jiang等人,2023)替换传统的层归一化技术,在保持性能的同时提高效率。Activation function:选择SwiGLU(Shazeer,2020)作为激活函数,它是Swish(Ramachandran等人,2017)和Gated Linear Unit(Dauphin等人,2017)的组合。实验表明,基于GLU的激活函数通常比其他基线选项(如GeLU(Hendrycks & Gimpel,2016))表现更好。同时,将前馈网络(FFN)的维度从4倍隐藏大小减少到隐藏大小的8/3。
3.2 Qwen2系列
Qwen2基于Transformer架构,其模型架构包括以下内容:
密集语言模型(Qwen2 Dense Model):
采用分组查询注意力(GQA):替代传统的多头注意力(MHA),优化KV缓存使用,提高推理吞吐量。使用双块注意力(DCA)与YARN:扩展上下文窗口,有效捕获块内和块间令牌的相对位置信息,改善长上下文性能;采用YARN调整注意力权重,以更好地进行长度外推。其他特点:使用SwiGLU激活、Rotary Positional Embeddings进行位置嵌入、QKV bias用于注意力、RMSNorm和预归一化以提高训练稳定性。
混合专家(MoE)模型(Qwen2 Mixture - of - experts Model):
架构特点:以Qwen1.5 - MoE - A2.7B的架构为基础,MoE FFN由多个专家组成,每个令牌根据门控网络G分配的概率被导向特定专家进行计算。关键设计考虑:
专家粒度:采用细粒度专家,创建更小规模的专家并同时激活更多专家,以提供更丰富的专家组合,增强模型的整体性能和适应性。专家路由:采用共享和路由特定专家相结合的方式,以更灵活和高效地开发MoE路由机制。专家初始化:类似于upcycling的方式,利用密集模型的权重初始化专家,并通过参数打乱和随机重新初始化来增强专家的多样性。
4、训练数据
4.1 Qwen系列
Qwen使用的训练数据具有以下特点:
数据规模大:使用了包含数万亿词条的数据集进行训练。数据多样性:数据来源广泛,包括公共网络文档、百科全书、书籍、代码等,且多语言,以英语和中文为主。数据质量高:
数据预处理:对公共网络数据进行提取文本、语言识别、去重(包括精确匹配去重和使用MinHash及LSH算法的模糊去重)、过滤低质量数据(结合规则和机器学习模型进行评分,手动采样审查)以及选择性上采样等处理。排除指令重叠数据:为保障基准评估的完整性,采用与Brown等人(2020)类似的方法,精心排除与测试集中数据存在13 - gram重叠的指令数据。 融入高质量指令数据:为增强模型的零-shot和少-shot性能,将高质量的指令数据融入预训练过程。
4.2 Qwen2系列
Qwen2的训练数据包括预训练数据和后训练数据,具体内容如下:
预训练数据:
数据特点:开发了新的大规模、高质量的多语言数据集,比之前Qwen和Qwen1.5模型使用的语料库在规模、质量和多样性上有所提升。质量提升:通过使用额外的启发式和基于模型的方法改进过滤算法,包括使用Qwen模型过滤低质量数据并合成高质量预训练数据。数据扩展:收集了比Qwen1.5更多的高质量代码、数学和多语言数据,支持约30种语言,如英语、中文、西班牙语、法语、德语、阿拉伯语、俄语、韩语、日语、泰语和越南语等。分布改善:对缩小规模的模型进行实验,以优化来自各种来源和领域的数据混合,确保模型学习到类似于人类学习的分布。数据规模:从Qwen1.5的3万亿令牌扩展到7万亿令牌,尝试使用12万亿令牌的数据集训练,但模型性能没有显著提升,最终选择使用7万亿令牌的数据集训练较大模型,Qwen2 - 0.5B则使用12万亿令牌的数据集进行预训练。多任务指令数据:与之前的Qwen模型类似,集成了高质量的多任务指令数据,以增强模型的上下文学习和指令跟随能力。 后训练数据:
数据组成:主要包括演示数据D = {(xi, yi)}和偏好数据P = {(xi, y + i, y - i)},其中xi代表指令,yi代表满意的响应,y + i和y - i是对xi的两个响应,且y + i是更优的选择。数据获取步骤:
协作数据标注:
自动本体提取:使用InsTag从大规模指令数据集中提取潜在本体,并进行手动 refinement以确保准确性。指令选择:根据标签多样性、语义丰富度、复杂性和意图完整性等标准选择代表性指令。指令进化:使用自进化策略丰富指令数据集,增加其复杂性和难度级别。人类标注:使用多种生成策略和不同规模的Qwen模型获得对指令的多个响应,由标注者根据偏好进行排名,得到演示和偏好数据。 自动数据合成:
拒绝采样:对于有明确最终答案的数学或类似任务,应用拒绝采样来提高解决方案的质量,保留导致准确结论且模型认为合理的推理路径作为演示数据,通过对比正确和错误路径生成偏好数据。执行反馈:对于编码任务,使用LLM生成解决方案和相关测试用例,通过编译和执行测试用例来评估解决方案的有效性,从而创建演示和偏好数据,该方法也适用于评估指令跟随。数据复用:对于文学写作任务中创建熟练响应的挑战,聚合公共领域的高质量文学作品,并使用LLM开发具有不同细节级别的指令,将这些指令与原始作品配对作为演示数据。宪法反馈:编译宪法数据集,指导LLM根据预定义的原则生成响应,以确保符合安全和价值等准则,该数据集用于生成演示和偏好数据的参考。
5、训练方法
5.1 Qwen系列
Qwen的训练方法包括:
预训练:采用自回归语言建模任务,使用AdamW优化器,通过余弦学习率调度调整学习率,应用Flash Attention提高计算效率,采用BFloat16混合精度训练。监督微调(SFT):使用标注的多种风格对话数据,采用next - token预测任务,使用AdamW优化器并设置相关超参数,对系统和用户输入应用损失掩码,限制序列长度和batch size,进行一定步数的训练。强化学习从人类反馈(RLHF):包括奖励模型训练和强化学习,奖励模型先预训练再微调,RLHF过程涉及多个模型,设置相关参数进行优化。针对编码和数学的模型训练:
CODE - QWEN:代码预训练基于基础模型QWEN在代码数据上进行,使用AdamW优化器并设置相关参数;代码监督微调使用AdamW优化器对模型进行优化。MATH - QWEN:在数学教学数据集上进行数学SFT,使用AdamW优化器并设置相关参数。
5.2 Qwen2系列
Qwen2的训练方法包括预训练、监督微调(Supervised Fine - tuning)和强化学习从人类反馈(Reinforcement Learning from Human Feedback),具体如下:
预训练:
数据集改进:开发新的大规模、高质量多语言数据集,增强规模、质量和多样性,涵盖更多语言和领域,从3万亿令牌扩展到7万亿令牌(Qwen2 - 0.5B使用12万亿令牌数据集)。长上下文训练:在预训练结尾阶段,将上下文长度从4096令牌扩展到32768令牌,引入大量高质量长数据,并修改RoPE的基频从10000到1000000,采用YARN和Dual Chunk Attention机制,以优化长上下文场景的性能,使模型能处理长达131072令牌的序列,同时保持高性能。 监督微调:
数据集:组装了一个包含超过50万个示例的广泛指令数据集,涵盖指令跟随、编码、数学、逻辑推理、角色扮演、多语言和安全等技能。训练参数:模型微调两个周期,序列长度为32768令牌。学习率从7 × 10^ - 6逐渐降低到7 × 10^ - 7,应用0.1的权重衰减,梯度裁剪最大值为1.0。 强化学习从人类反馈:
训练阶段:包括离线和在线训练两个顺序阶段。离线训练:使用预编译的偏好数据集P,通过Direct Preference Optimization(DPO)最大化y + i和y - i之间的似然差异。在线训练:模型实时迭代优化性能,利用奖励模型进行即时反馈。具体来说,从当前策略模型采样多个响应,奖励模型选择最优和最不优的响应,形成偏好对用于每个 episode 的 DPO。此外,使用Online Merging Optimizer来减轻对齐税,即减轻模型生成与人类偏好对齐时的性能下降。
参考
[1] https://www.datalearner.com/blog/1051707149237037?q=qwen
[2] https://zhuanlan.zhihu.com/p/703883561
[3] https://arxiv.org/pdf/2309.16609
[4] https://arxiv.org/pdf/2407.10671
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。