LLM 系列——Qwen2——论文解读

31 篇文章 11 订阅 ¥89.90 ¥99.00

一、概述

1、是什么

    是单模态纯文本的大语言模型,论文全称《QWEN2 TECHNICAL REPORT》,开源了 一整套基础和指令调优的语言模型,参数范围从5亿到720亿不等,包括密集模型和混合专家模型。可以用于: 语言理解、生成、多语言、编码、数学和推理。

2、亮点

    主要是精召性能、数据和长文本处理方面,包括数据处理等使用了一些最新的其他论文的思路,模型结构等方面并没有大的改动,具体如下:
    * 旗舰模型Qwen2-72B在多个基准测试中表现出色,例如在MMLU、GPQA、HumanEval、GSM8K和BBH上得分均较高。
    *展现了强大的多语言能力,能够熟练处理约30种语言,凸显了其通用性和全球覆盖范围。
    *Qwen2的模型权重已在Hugging Face和ModelScope上公开可用, 并在GitHub上提供了示例代码等补充材料。这些平台还包括量化、微调和部署的资源,支持广泛的应用和研究工作。

PS

    * 结构上并没有独创的技术,主要是使用了当下最新的组合:Transformer 解码器、GQA、MOE、DCA + YARN(处理长文本)、SwiGLU、RoPE、RMSNorm、QKV bias、Pre-norm(提高训练稳定性)。
    * 训练技巧上:MOE的初始化方式(复制单专家+随机打乱隐层权重顺序+随机丢弃50%权重),标准的pre-train + sft + dpo。
    * 数据集:训练使用开源的15T数据集,优化了清洗算法,得到了两个版本7T和12T,最终选择7T训练大多数模型。论文并没有详细或以伪代码等形式解释清洗过程。
    综上:如果基础知识很扎实,那么这篇论文整体就可以这么结束了。因为对于工业界关键的数据清洗环节没有详细的解释,只提到先关几篇最新(2023、2024论文)所以对于开发人员也比较难获得更多的信息量。

二、模型

    1、模型结构

    Tokenizer 

    BPE(基于字节级别字节对编码,byte-level bytepair encoding)的分词器,表现出很高的编码效率,其压缩率优于其他替代方案,从而增强了Qwen2的多语言处理能力。所有规模的模型均使用一个通用词汇表,该词汇表包含151,643个常规token和3个控制token。

    四个密集版本网络

    标准的因果Transformer 解码器结构。该系列包含四个密集版本:0.5B、1.5B、7B和72B 和一个MOE模型 57B-A14B。使用了如下最新的技术:GQA(优化kv缓存提升推理吞吐)、DCA + YARN(处理长文本)、SwiGLU、RoPE、RMSNorm、Pre-norm、QKV bias。

    一个MOE网络

    这里作者在如下三点进行了优化(上采样自Qwen2 7B):
    *细粒度专家:降低每个专家(FFN)的维度、增加专家的整体数量和激活数量,对比粗粒度在全部专家特征维度相同的情况下,论文认为这样更加多样和动态的专家使用提升了整体的适应性。
    *专家路由:之前一般为根据输入选择不同的专家进行激活,这里使用了一种结合共享专家和路由特定专家的方法。这个路由机制可以理解为共享专家始终被激活,而特殊专家是选择性激活的。在提供通用能力的同时,保留特定专家用于处理特定的任务或输入,带来了更大的灵活性和效率。
    *专家初始化:一般MOE的专家的权重是直接复制的对应非MOE的FFN,比如Mixtral 8x7B 来自Mistral-7B,但上面提到使用细粒度专家,那么无法一一对应。因此,作者论文提到将对应原始FFN 复制 N次,N = 专家中间层维度 * 专家数 / 原始FFN 中间层维度,然后每个FFN内部进行乱序,然后一次分给专家,然后分配后的专家中间层权重随机丢弃50%,这样就获得了多样性的专家。这里如果只看表面或者对MOE和Transform理解的很深的同学很好理解,最怕半瓶醋。我这里再展开说一下相关知识:
    1)为什么是只有中间层,因为MOE的输入输出维度和原始FFN还是一样的,但是中间层是可以不同的,因为改变了中间层维度,那么专家的输入输出权重必然无法复用,只能随机。
    2)其实这里暗含了原始FFN的中间层权重被m 个专家整除,m 不是专家总数。
    

    2、模型亮点

    结构上目前整个行业尤其单模态LLM几乎大家同源,所以暂时个人认为没有啥大亮点。

    PS

    还没有看源码,是不是结合了dca 来处理超长文本,但是论文中看到训练过程本来就在32K上后训练过。

三、数据

    1、数据标签

    标准的预测下一个词,只不过在不同的训练阶段(pre-train + sft + dpo)掩码开始的位置不同,与其他LLM没有区别。

    2、数据构成

    pre-train

    没有讲数据的来源和分布比例,只说最终清洗出来7T 和 12T 两个版本。
    PS:目前LLM基本都不提这部分了,感觉可能:为了避免竞争(数据现在是最大的护城河)、使用了其他模型洗数据(如GPT)、使用了敏感数据(用户数据)。

    post-train (SFT + dpo)

    没有讲数据的来源和分布比例。同上。

    3、数据清洗

    pre-train

    作者的重心是数据的清洗和外加长上下文处理,其中数据清洗如下:
    * 质量提升:过滤算法已经通过改进的启发式和基于模型的方法,包括使用Qwen模型来过滤掉低质量的数据。此外,这些模型还被用来合成高质量的预训练数据。
    * 数据扩展:收集了大量高质量的代码、数学和多语言数据,增强了模型在这些领域的能力。支持大约30种语言,比如英语、中文、西班牙语、法语、德语、阿拉伯语、俄语、韩语、日语、泰语和越南语。
    * 分布改进:为了确保模型学习到类似人类学习的分布,我们在缩小版模型上进行了一些实验,以优化来自各种来源和领域的数据混合。
    基于这些改进,预训练数据从Qwen1.5的3万亿标记扩展到7万亿标记。尝试进一步放宽质量标准后,数据集达到了12万亿标记。然而,使用这个数据集训练的模型并没有表现出比7万亿标记模型显著的性能提升。怀疑增加数据量并不一定有利于模型预训练。考虑到训练成本,选择使用高质量的7万亿标记数据集来训练更大的模型,将进一步的探索留待未来的模型迭代。所有Qwen2密集模型(不包括Qwen2-0.5B)都在这个超过7万亿标记的大规模数据集上进行了预训练。Qwen2-0.5B使用了12万亿标记数据集进行预训练。MoE模型则根据“循环利用”原则,额外进行了4.5万亿标记的预训练。类似于之前的Qwen模型,高质量的多任务指令数据被整合到Qwen2的预训练过程中,以增强上下文学习和指令遵循能力。
    长上下文如下:
    质在预训练的最后阶段将上下文长度从4,096个标记扩展到32,768个标记。这一扩展伴随着大量高质量、长文本数据的引入。与此同时,我们将RoPE的基础频率从10,000修改为1,000,000,以优化长上下文场景中的性能。为了充分利用模型的长度外推潜力,我们采用了YARN机制和双块注意力机制。这些策略使模型能够处理长达131,072个标记的序列,同时在初步实验中表现出较小的困惑度下降,保持高性能。

    post-train

    训练后数据主要由两个部分组成:
    * 示范数据 (D = {(x_i, y_i)}) :其中 (x_i) 代表指令,(y_i) 代表令人满意的响应,用于监督微调 (SFT)。
    * 偏好数据 (P = {(x_i, y^+_i, y^-_i)}),其中 (x_i) 代表指令,(y^+_i) 和 (y^-_i) 是对 (x_i) 的两个响应,(y^+_i) 优于 (y^-_i)。 用于基于人类反馈的强化学习 (RLHF)。
    训练数据的构建包括两个步,协同数据标注和自动数据合成。
    协同数据标注
    1)自动本体提取
    自动本体提取的目的是从大量的指令数据中系统化地提取出有意义的分类和标签。这些标签帮助我们理解指令的多样性和复杂性,进而为后续的指令选择和数据标注提供结构化的基础。这里面的本体是指对一个指令进行分类,比如:数学问题、编程任务、文学创作、角色扮演。参考:InsTag: Instruction Tagging for Analyzing Supervised Fine-tuning of Large Language Models 2024,一个开放集细粒度标注器,从大规模指令数据集中提取底层本体。
    2)指令选择
    指令选择的目的是确保数据集中包含多样化和高质量的指令。通过评估上一步提取的标签的多样性和指令的复杂性,我们可以选择出那些能够全面反映不同任务和难度水平的指令。参考:How abilities in large language models are affected by supervised fine-tuning data composition 2023。
    3)指令进化
    通过增加现有指令的复杂性,生成更具挑战性和多样性的任务。这一过程利用了自我进化策略,使模型能够自动生成更复杂的指令,从而丰富数据集的内容,确保其涵盖不同难度水平的任务。参考: Tree-Instruct: A preliminary study of the intrinsic relationship between complexity and alignment. In LREC/COLING, pp. 16776-16789. ELRA and ICCL, 2024.
    4)人工标注
    通过生成多个响应并进行人工排名,我们能够筛选出最优的响应,确保模型能够学习到高质量的示范数据 (y_i) 。此外,通过对比正确和错误的响应,生成偏好数据((y^+_i) 和 (y^-_i)),帮助模型更好地理解和优化响应质量。
    自动数据合成过程
    即使上一步的协同数据标注降低了人工量,但在大规模数据集上保持对指令响应的注释质量提出了重大挑战,尤其是那些需要专业知识、经验、谨慎或耐心的标注,一次需要进行数据合成,主要包括如下几个部分(并行的应用场景不是步骤):
    1)拒绝采样(Rejection Sampling)
    目的:
    提高数学或类似任务的解决方案质量,这些任务有明确的最终答案。
    步骤:
    生成多重响应:使用大型语言模型(LLM)为每个指令生成多个响应,即推理路径。
    筛选路径:保留那些得出准确结论且被模型认为合理的路径,这些路径作为示范数据。
    生成偏好数据:通过对比正确和错误的路径来生成偏好数据,帮助模型学习区分好坏。
    参考
    Scaling relationship on learning mathematical reasoning with large language models. CoRR, abs/2308.01825, 2023.
    2)执行反馈(Execution Feedback)
    目的:
    评估和改进代码任务的解决方案质量,同时适用于评估指令遵循情况。
    步骤:
    生成解决方案和测试用例:使用LLM生成代码解决方案及其相关的测试用例。
    执行测试:通过编译和执行这些解决方案来评估其有效性。
    生成示范和偏好数据:根据测试结果生成示范数据和偏好数据。
    参考:
    Self-play with execution feedback: Improving instruction-following capabilities of large language models. CoRR, abs/2406.13542, 2024.
    3) 数据再利用(Data Repurposing)
    目的:
    为文学写作任务生成高质量的响应,这些任务对非专业训练的注释者来说具有挑战性。
    步骤:
    聚合高质量文学作品:从公共领域收集高质量的文学作品。
    生成指令:使用LLM开发不同详细程度的指令。
    配对原作和指令:将这些指令与原作配对,作为示范数据。
    角色扮演数据生成:从知识库(如维基百科)中获取详细的角色简介,指示LLM生成相应的指令和响应。
    参考:
    Large Language Models are Superpositions of All Characters: Attaining Arbitrary Role-play via Self-Alignment 2024
    4)限制反馈(Constitutional Feedback)
    目的
    确保生成的响应符合预定义的原则,如安全性和价值观。
    步骤:
    编制限制数据集:收集和编制一组需要遵循和避免的原则。
    指导LLM生成响应:使用这些原则指导LLM生成符合或偏离这些原则的响应。
    生成示范和偏好数据:这些响应作为示范和偏好数据的参考。
    参考:
    Constitutional AI: Harmlessness from AI feedback. CoRR, abs/2212.08073, 2022.
    

四、策略

    1、训练过程

    pre-train

    论文没有详细提及,具体超参、训练机器规格、训练时长等。

    sft

    指令数据集:数据集包含超过500,000个示例,涵盖指令遵循、编码、数学、逻辑推理、角色扮演、多语言和安全等技能。多样化的数据集确保模型在广泛的任务上都有良好的表现。
    训练周期(Epochs):模型进行了两个训练周期。
    序列长度:使用32,768个token的序列长度,这对于处理长文本和复杂任务非常重要。
    学习率:从7 × 10⁻⁶逐渐减少到7 × 10⁻⁷,以优化学习过程。
    逐步减少学习率:有助于模型在训练后期稳定收敛,避免过度调整。
    权重衰减(Weight Decay):设置为0.1,帮助防止模型过拟合训练数据。
    梯度裁剪(Gradient Clipping):最大值设置为1.0,防止梯度爆炸,确保训练过程稳定。

     dpo

    离线训练:通过预编译的偏好数据集进行优化,使模型能够理解并区分优劣响应。参考:Direct preference optimization: Your language model is secretly a reward model. In NeurIPS, 2023.
    在线训练:通过实时反馈和迭代优化,进一步提升模型在实际应用中的表现。
    在线合并优化器:对齐税是模型在对齐人类偏好时面临的挑战,通过优化策略减轻这一问题,确保模型在对齐人类偏好的同时不牺牲性能。参考: Online merging optimizers for boosting rewards and mitigating tax in alignment. CoRR, abs/2405.17931, 2024a.

    2、推理过程

    推理的时候是不是有后处理等等

五、结果

1、多维度对比

这个这里就不贴了,主要就是五个模型对比不同的同级别模型在几个开源数据集上的比较,大多指标都超过了同级别的模型,可以参考论文相关部分(写的很简洁清楚)

2、消融实验

本文没有消融实验

六、使用方法

参见git,后续会写相关博客解释hugging face 使用解读。

七、待解决

数据源、清洗的详细过程、训练过程。

八、参考链接

链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TigerZ*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值