Qwen2.5 Technical Report翻译

摘要

在本报告中,我们介绍了 Qwen2.5,这是一系列全面的大语言模型 (LLM),旨在满足多样化的需求。与之前的迭代相比,Qwen 2.5 在预训练和后训练阶段都有了显著的提升。在预训练方面,我们将高质量的预训练数据集从之前的 7 万亿个 token 扩展到 18 万亿个 token,为常识、专家知识和推理能力的构建奠定了坚实的基础。在后训练方面,我们实现了超过百万个样本的复杂有监督微调,以及多阶段强化学习,包括离线学习 DPO 和在线学习 GRPO。后训练技术显著增强了人类偏好,并显著提升了长文本生成、结构化数据分析和指令遵循能力。
  为了有效处理多样化的用例,我们推出了配置丰富的 Qwen2.5 LLM 系列。开放的权重模型包括 base模型和指令微调模型,参数大小分别为 0.5B、1.5B、3B、7B、14B、32B 和 72B。此外,我们还提供指令微调模型的量化版本。您可以从 Hugging Face Hub、ModelScope 和 Kaggle 获取超过 100 个模型。此外,对于托管解决方案,专有模型目前包含两个混合专家 (MoE) 版本:Qwen2.5-Turbo 和 Qwen2.5-Plus,均可从阿里云模型工作室获取。
  Qwen2.5 在众多基准测试中展现出顶级性能,涵盖语言理解、推理、数学、编码、人类偏好匹配等。具体而言,开放权重旗舰模型 Qwen2.5-72B-Instruct 的表现优于众多开放模型和专有模型,并与最先进的开放权重模型 Llama-3-405B-Instruct 相媲美,后者规模约为 Qwen2.5-72B-Instruct 的五倍。Qwen2.5-Turbo 和 Qwen2.5-Plus 分别与 GPT-4o-mini 和 GPT-4o 相比,在成本效益方面表现出色。此外,作为基础,Qwen2.5 模型在训练 Qwen2.5-Math、Qwen2.5-Coder、QwQ 和多模态模型等专用模型方面发挥了重要作用。

1.Introduction

在这里插入图片描述
  随着大型基础模型,尤其是大语言模型 (LLM) 的快速发展,通用人工智能 (AGI) 的光芒日益闪耀。模型和数据规模的不断进步,加上大规模预训练、高质量有监督微调 (SFT) 和基于人类反馈的强化学习 (RLHF) 的范式,使得大型语言模型 (LLM) 在语言理解、生成和推理方面发展出新兴能力。在此基础上,推理时扩展方面的最新突破,尤其是 o1 的展现,增强了 LLM 通过逐步推理和反思进行深度思考的能力。这些发展提升了语言模型的潜力,表明它们可能在科学探索中取得重大突破,因为它们将继续展现出预示着更通用人工智能的新兴能力。
  除了模型能力的快速发展之外,近两年来,LLM 社区还涌现出一批开源(open-weight)大语言模型,例如 Llama 系列、Mistral 系列以及我们的 Qwen 系列。这些开源模型使得大语言模型更容易被普通用户和开发者使用,从而促进了更广泛的研究参与,通过社区协作促进了创新,并加速了跨领域 AI 应用的开发。
  近期,我们发布了 Qwen 系列最新版本 Qwen2.5 的细节。在开放权重部分,我们发布了 7 种规模的预训练和指令微调模型,包括 0.5B、1.5B、3B、7B、14B、32B 和 72B,不仅提供 bfloat16 精度的原始模型,还提供不同精度的量化模型。其中,旗舰模型 Qwen2.5-72B-Instruct 的性能已超越目前最先进的开放权重模型 Llama-3-405B-Instruct,后者的规模约为 Qwen2.5 的 5 倍。此外,我们还发布了混合专家模型 (MoE) 的专有模型 Qwen2.5-Turbo 和 Qwen2.5-Plus,其性能分别超越 GPT-4o-mini 和 GPT-4o。
  在本技术报告中,我们介绍了 Qwen2.5,这是我们不断努力打造更优秀的 LLM 的成果。以下是最新版本 Qwen 的主要功能:

  1. Better in Size:Qwen2.5 相比 Qwen2,除了保留 0.5B、1.5B、7B、72B 模型外,还恢复了 3B、14B、32B 模型,这些模型对于资源受限的场景更具性价比,在目前开放基础模型领域中较为缺乏。Qwen2.5-Turbo 和 Qwen2.5-Plus 在准确率、延迟和成本之间取得了很好的平衡。
  2. Better in Data:预训练和后训练数据均得到了显著提升。预训练数据从 7 万亿个 token 增加到 18 万亿个 token,重点关注知识、编码和数学。预训练采用分阶段的方式,允许在不同混合策略之间转换。后训练数据总计 100 万个示例,涵盖有监督微调 (SFT)、直接偏好优化 (DPO) 和组相关策略优化 (GRPO) 阶段。
  3. Better in Use:Qwen2 在使用中的几个关键限制已被消除,包括更大的生成长度(从 2K 个 token 增加到 8K 个 token)、更好地支持结构化输入和输出(例如表和 JSON)以及更易于使用的工具。此外,Qwen2.5-Turbo 支持高达 100 万个 token 的上下文长度。

2.Architecture & Tokenizer

Qwen2.5 系列主要包括面向开源的密集模型 Qwen2.5-0.5B / 1.5B / 3B / 7B / 14B / 32B / 72B,以及面向 API 服务的 MoE 模型 Qwen2.5-Turbo 和 Qwen2.5-Plus。下文将详细介绍这些模型的架构。
  对于参数密集模型,我们保留了和Qwen2一样的基于 Transformer 的解码器架构。该架构包含几个关键组件:用于高效利用 key-value 缓存的分组查询注意力机制 (Grouped Query Attention)、用于非线性激活的 SwiGLU 激活函数、用于编码位置信息的旋转位置嵌入 (RoPE)、注意力机制中的 QKV bias以及带有 prenorm 的 RMSNorm,以确保训练的稳定性。
  在密集模型架构的基础上,我们将其扩展为 MoE 模型架构。这是通过将标准前馈网络 (FFN) 层替换为专门的 MoE 层来实现的,其中每层包含多个 FFN 专家和一个将 token 分发给 top-K 个专家的路由机制。遵循 Qwen1.5-MoE 中演示的方法,我们实现了细粒度的专家细分和共享专家路由。这些架构创新显著提升了模型在下游任务中的性能。
  在 tokenizer 方面,我们使用 Qwen 的 tokenizer,它实现了字节级字节对编码 (BBPE),词表达 151,643 个常规 token。与之前的 Qwen 版本相比,我们将控制 token 集从 3 个扩展到 22 个,新增了两个用于工具功能的 token,其余标记则分配给其他模型功能。此次扩展在所有 Qwen2.5 模型中建立了统一的词表,从而增强了一致性并减少了潜在的兼容性问题。

3.Pre-training

我们的语言模型预训练流程包含几个关键部分。首先,我们通过复杂的过滤和评分机制,并结合策略性的数据混合,精心挑选高质量的训练数据。其次,我们对超参数优化进行了广泛的研究,以便有效地训练各种规模的模型。最后,我们结合了专门的长上下文预训练,以增强模型处理和理解扩展序列的能力。接下来,我们将详细介绍数据准备、超参数选择和长上下文训练的方法。

3.1 Pre-training Data

Qwen2.5 与前代 Qwen2 相比,在预训练数据质量方面有显著提升。这些改进主要源于以下几个关键方面:

  1. Better data filtering:高质量的预训练数据对于模型性能至关重要,因此数据质量评估和过滤是我们流程中的关键组成部分。我们利用 Qwen2-Instruct 模型作为数据质量过滤器,执行全面、多维度的分析来评估和评分训练样本。这种过滤方法比我们之前用于 Qwen2 的方法有了显著的改进,因为它受益于 Qwen2 在更大的多语言语料库上进行的扩展预训练。增强的功能可以实现更细致的质量评估,从而提高高质量训练数据的保​​留率,并更有效地过滤跨多种语言的低质量样本。
  2. Better math and code data:在 Qwen2.5 的预训练阶段,我们整合了 Qwen2.5-Math 和 Qwen2.5-Coder 的训练数据。事实证明,这种数据整合策略非常有效,因为这些专用数据集有助于在数学和编码任务上实现最佳性能。通过在预训练阶段利用这些高质量的特定领域数据集,Qwen2.5 继承了其在数学推理和代码生成方面的强大能力。
  3. Better synthetic data:为了生成高质量的合成数据,尤其是在数学、代码和知识领域,我们利用 Qwen2-72B-Instruct 和 Qwen2-Math-72B-Instruct。通过使用我们专有的通用奖赏模型和专用的 Qwen2-Math-RM-72B 模型进行严格筛选,进一步提升了这些合成数据的质量。
  4. Better data mixture:为了优化预训练数据分布,我们采用 Qwen2-Instruct 模型对不同领域的内容进行分类和平衡。我们的分析显示,电子商务、社交媒体和娱乐等领域在网络规模数据中显著偏高,通常包含重复性、基于模板或机器生成的内容。相反,科技、科学和学术研究等领域虽然包含更高质量的信息,但传统上却代表性不足。通过对偏高领域的策略性下采样和对高价值领域的上采样,我们确保训练数据集更加均衡、信息丰富,从而更好地服务于我们模型的学习目标。

基于这些技术,我们开发了更大、更高质量的预训练数据集,从 Qwen2 中使用的 7 万亿个 token 扩展到 18 万亿个 token。

3.2 Scaling Law for Hyper-parameters

我们基于 Qwen2.5 的预训练数据开发了超参数的缩放定律。先前的研究主要使用缩放定律来确定给定计算预算下的最佳模型大小,而我们则利用它们来识别跨模型架构的最佳超参数。具体而言,我们的缩放定律有助于确定关键训练参数,例如 batch 大小 B 和学习率 µ,适用于不同大小的密集模型和 MoE 模型。
  通过大量的实验,我们系统地研究了模型架构与最优训练超参数之间的关系。具体来说,我们分析了最优学习率 µ o p t µ_{opt} µopt 和 batch 大小 B o p t B_{opt} Bopt 如何随模型规模 N N N 和预训练数据规模 D D D 而变化。我们的实验涵盖了广泛的架构,包括参数规模为 44M 到 14B 的密集模型和激活参数规模为 44M 到 1B 的 MoE 模型,并在 8 亿到 6000 亿个 token 的数据集上进行训练。利用这些最优超参数预测,我们将最终损失建模为模型架构和训练数据规模的函数
  此外,我们利用缩放定律来预测不同参数数量的 MoE 模型与其密集模型的性能,并进行比较。此分析指导了 MoE 模型的超参数配置,使我们能够通过仔细调整激活参数和总参数,实现与特定密集模型变体(例如 Qwen2.5-72B 和 Qwen2.5-14B)相当的性能。

3.3 Long-context Pre-training

为了获得最佳训练效率,Qwen2.5 采用了两阶段预训练方法:初始阶段上下文长度为 4,096 个 token,之后是用于更长序列的扩展阶段。遵循 Qwen2 中的策略,我们在最终预训练阶段将除 Qwen2.5-Turbo 之外所有模型变体的上下文长度从 4,096 个 token 扩展到 32,768 个 token。同时,我们使用 ABF 技术将 RoPE 的基频从 10,000 提升到 1,000,000。
  对于 Qwen2.5-Turbo,我们在训练过程中实施了渐进式上下文长度扩展策略,分为四个阶段:32,768 个令牌、65,536 个令牌、131,072 个令牌,最终达到 262,144 个令牌,RoPE 基准频率为 10,000,000。在每个阶段,我们都会精心挑选训练数据,使其包含 40% 的当前最大长度序列和 60% 的较短序列。这种渐进式训练方法能够平滑地适应不断增加的上下文长度,同时保持模型有效处理和泛化不同长度序列的能力。
  为了增强模型在推理过程中处理较长序列的能力,我们实施了两项关键策略:YARN 和双块注意力机制 (DCA)。通过这些创新,我们将序列长度容量提升了四倍,使 Qwen2.5-Turbo 能够处理多达 100 万个 token,而其他模型则能够处理多达 131,072 个 token。值得注意的是,这些方法不仅通过降低困惑度 (perplexity) 来改进长序列的建模,而且还保持了模型在较短序列上的出色性能,确保在不同输入长度下保持一致的质量。

4.Post-training

Qwen 2.5 与 Qwen 2 相比,在后训练设计上引入了两项重大进步:

  1. Expanded Supervised Fine-tuning Data Coverage:有监督微调过程利用了包含数百万个高质量示例的海量数据集。此次扩展专门解决了先前模型存在局限性的关键领域,例如长序列生成、数学问题求解、编码、指令执行、结构化数据理解、逻辑推理、跨语言迁移以及强大的系统指令。
  2. Two-stage Reinforcement Learning:Qwen 2.5 中的强化学习(RL)过程分为两个不同的阶段:离线 RL 和在线 RL。
    • Offline RL:此阶段专注于开发奖赏模型难以评估的能力,例如推理能力、事实性和指令遵循能力。通过精心构建和验证训练数据,我们确保离线强化学习信号既可学习又可靠,从而使模型能够有效地掌握这些复杂的技能。
    • Online RL:在线强化学习阶段利用奖赏模型检测输出质量细微差别的能力,包括真实性、有用性、简洁性、相关性、无害性和去偏见性。它使模型能够生成精确、连贯且结构良好的响应,同时保持安全性和可读性。因此,该模型的输出始终符合人类的质量标准和期望。

4.1 Supervised Fine-tuning

在本节中,我们详细介绍了 Qwen2.5 在 SFT 阶段所做的关键增强功能,重点关注几个关键领域:

  1. Long-sequence Generation:Qwen2.5 能够生成高质量内容,输出上下文长度高达 8,192 个 token,相比典型的后训练响应长度(通常保持在 2,000 个 token 以下)有了显著提升。为了弥补这一差距,我们开发了长响应数据集。我们采用反向翻译技术,从预训练语料库生成针对长文本数据的 query,施加输出长度限制,并使用 Qwen2 过滤掉低质量的配对数据。
  2. Mathematics:我们引入了 Qwen2.5-Math 的思维链数据,它涵盖了丰富的 query 源,包括公共数据集、K-12 题库以及综合题。为了确保高质量的推理,我们采用了拒绝采样法,并结合奖赏模型和带标注的答案作为指导,从而生成循序渐进的推理过程。
  3. Coding:为了增强编码能力,我们整合了 Qwen2.5-Coder 的指令微调数据。我们将多种特定编程语言的 Agent 整合到一个协作框架中,生成涵盖近 40 种编程语言的多样化高质量指令对。我们通过从代码相关的问答网站合成新示例以及从 GitHub 收集算法代码片段来扩展指令数据集。我们使用一个全面的多语言沙盒进行静态代码检查,并通过自动化单元测试验证代码片段,确保代码质量和正确性。
  4. Instruction-following:为了确保高质量的指令遵循数据,我们实施了基于代码的严格验证框架。在这种方法中,LLM 会生成指令和相应的验证代码,以及用于交叉验证的全面单元测试。通过基于执行反馈的拒绝采样,我们精心挑选用于监督微调的训练数据,从而确保模型忠实地遵循预期指令。
  5. Structured Data Understanding:我们开发了一个全面的结构化理解数据集,涵盖表格问答、事实验证、纠错和结构化理解等传统任务,以及涉及结构化和半结构化数据的复杂任务。通过将推理链融入模型的响应中,我们显著增强了其从结构化数据中推断信息的能力,从而提升了其在这些不同任务中的表现。这种方法不仅拓宽了数据集的范围,也深化了模型从复杂数据结构中推理并获取有意义洞察的能力。
  6. Logical Reasoning:为了增强模型的逻辑推理能力,我们引入了 70,000 个涵盖不同领域的全新 query。这些 query 涵盖多项选择题、判断题和开放式问题。该模型经过训练,能够系统地解决问题,并运用一系列推理方法,例如演绎推理、归纳概括、类比推理、因果推理和统计推理。通过迭代改进,我们系统地过滤掉包含错误答案或有缺陷的推理过程的数据。这一过程逐步增强了模型的逻辑推理能力和准确性,确保其在不同类型的推理任务中都能保持稳健的性能。
  7. Cross-Lingual Transfer:为了促进模型的通用能力跨语言迁移,我们采用翻译模型将高资源语言的指令转换为各种低资源语言的指令,从而生成相应的候选响应。为了确保这些响应的准确性和一致性,我们评估了每个多语言响应与其原始响应之间的语义对齐。此过程保留了原始响应的逻辑结构和风格差异,从而保持了它们在不同语言之间的完整性和连贯性。
  8. Robust System Instruction:我们构建了数百个通用的系统提示,以提高后期训练中系统提示的多样性,确保系统提示与对话的一致性。使用不同系统提示进行的评估表明,该模型保持了良好的性能,并且方差较小,表明鲁棒性有所提高。
  9. Response Filtering:为了评估回复的质量,我们采用了多种自动标注方法,包括专用的评价模型和多 Agent 协作评分系统。所有回复均经过严格评估,只有所有评分系统均认为无瑕疵的回复才会被保留。这种全面的方法确保我们的输出保持最高的质量标准。

最终,我们构建了一个包含超过 100 万个 SFT 示例的数据集。该模型经过两个 epoch 的微调,序列长度为 32,768 个 token。为了优化学习,学习率从 7 × 1 0 − 6 7 × 10^{−6} 7×106 逐渐降低到 7 × 1 0 − 7 7 × 10^{−7} 7×107。为了解决过拟合问题,我们应用了 0.1 的权重衰减,并将梯度范数的最大值限制为 1.0。

4.2 Offline Reinforcement Learning

与在线强化学习 (RL) 相比,离线强化学习 (RL) 可以预先准备训练信号,这对于存在标准答案但难以使用奖赏模型进行评估的任务尤其有利。在本研究中,我们专注于客观领域,例如数学、编程、指令遵循和逻辑推理,在这些领域获得准确的评估可能非常复杂。在前一阶段,我们广泛采用执行反馈和答案匹配等策略来确保响应的质量。在当前阶段,我们重复使用上述流程,使用 SFT 模型对一组新的 queyr 的响应进行重新采样。通过质量检查的响应将用作正样本,而未通过质量检查的响应将用作直接偏好优化 (DPO) 训练的负样本。为了进一步提高训练信号的可靠性和准确性,我们同时采用了人工和自动审核流程。这种双重方法确保训练数据不仅可学习,而且符合人类的期望。最终,我们构建了一个包含约 150,000 个训练对的数据集。然后使用在线合并优化器对模型进行一个 epoch 的训练,学习率为 7 × 1 0 − 7 7 × 10^{−7} 7×107

4.3 Online Reinforcement Learning

4.4 Long Context Fine-tuning

### 关于Qwen2.5Qwen2.5Code的区别 #### 特征对比 对于Qwen2.5Qwen2.5Code之间的差异,主要体现在设计目标和支持的任务类型上。Qwen2.5专注于处理多模态任务,特别是涉及图像理解和生成的场景。该模型能够通过潜在查询和文本查询来执行不同类型的视觉理解任务,并能提供像素级掩码和语义嵌入作为输出[^1]。 相比之下,Qwen2.5Code更侧重于编程辅助功能,旨在帮助开发者编写代码、优化现有程序以及解决编码过程中遇到的问题。这类模型通常经过特定领域数据集训练,以便更好地适应软件开发需求[^3]。 #### 应用场景 由于各自的设计初衷不同,在实际应用中两者也表现出明显的区别: - **Qwen2.5**适用于需要解析复杂图片内容的应用场合,比如自动标注照片库、医学影像分析或是增强现实技术等领域。 - **Qwen2.5Code**则更适合集成到IDE(集成开发环境)内,为程序员提供实时建议、错误检测及修复方案等功能支持。 #### 技术实现 从技术角度来看,尽管两个版本都基于强大的预训练架构构建而成,但它们针对各自的专长进行了定制化调整。例如,为了提高对源代码的理解力,Qwen2.5Code可能会额外引入语法树结构的学习机制;而对于提升视觉识别精度而言,Qwen2.5或许会采用更加精细的特征提取算法[^2]。 ```python # 示例:如何使用Qwen2.5进行图像描述 from qwen import QwenImageCaptioning model = QwenImageCaptioning('path/to/image') caption = model.generate_caption() print(f"Generated Caption: {caption}") ``` ```python # 示例:利用Qwen2.5Code完成Python函数补全 import qwen_code as qc def incomplete_function(x): return x * suggestions = qc.get_suggestions(incomplete_function.__code__) for suggestion in suggestions: print(suggestion) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值