Qwen2 系列发布了一整套基础和指令调整的语言模型,参数范围从 0.5 到 720 亿,包括四个密集模型,参数数量分别为 5 亿、15 亿、70 亿和 720 亿,加上一个具有 570 亿个参数的专家混合 (MoE) 模型,其中每个词符激活 140 亿个参数。 较小的型号,特别是 Qwen2-0.5B 和 Qwen2-1.5B,专为轻松部署在智能手机、耳机和智能眼镜等便携式设备上而设计。
所有模型均在包含超过 7 万亿个 Token 、涵盖广泛领域和语言的高质量、大规模数据集上进行预训练。与之前版本的 Qwen 相比,Qwen2 包含更广泛的语言数据,提高了代码和数学内容的数量和质量。在训练后,所有模型都经过监督微调和直接偏好优化,通过学习人类反馈来使它们与人类偏好保持一致。 这个过程赋予模型有效遵循指令的能力。
Qwen2-72B 表现非常出色:MMLU 84.2、GPQA 37.9、HumanEval 64.6、GSM8K 89.5、BBH 82.4(base model)。 经过指令调整的变体 Qwen2-72B-Instruct 在 MT-Bench 上获得 9.1,在 Arena-Hard 上获得 48.1,在 LiveCodeBench 上获得 35.7。 此外,Qwen2 还展现了强大的多语言能力。
模型架构
Qwen2 Dense Model
Qwen2 密集模型的架构包括多个 Transformer 层,每个层都配备因果注意机制和前馈神经网络(FFN)。 与 Qwen 的主要区别如下:
分组查询注意力
采用分组查询注意力(GQA) 代替传统的多头注意力(MHA)。GQA 优化了推理过程中 KV 缓存的使用,显着提高了吞吐量。
YARN 的双块注意力
为了扩展上下文窗口,Qwen2实现了 Dual Chunk Attention(DCA),它将长序列分割成可管理长度的块。 如果输入可以在一个块中处理,DCA 会产生与原始注意力相同的结果。 否则,DCA 有助于有效捕获块内和块间标记之间的相对位置信息,从而提高长上下文性能。 此外,Qwen2还使用 YARN 来重新调整注意力权重以获得更好的长度外推。
此外,延续使用 SwiGLU (Dauphin 等人, 2017) 进行激活,使用 Rotary Positional Embeddings (RoPE) 进行位置嵌入, QKV bias用于注意力机制,RMSNorm和预归一化用于训练稳定性。
Qwen2 Mixture-of-experts Model
Qwen2 MoE 模型的架构与 Qwen1.5-MoE-A2.7B (Qwen Team,2024c) 非常相似。 作为原始 FFN 的替代品,MoE FFN 由
专家粒度
MoE 模型和密集模型之间的关键结构差异在于 MoE 层包含多个 FFN,每个 FFN 充当单独的专家。 因此,从密集架构过渡到 MoE 架构的一种直接策略是将每个专家的参数设置为等于原始密集模型中单个 FFN 的参数。 例如,从 Mistral-7B过渡到 Mixtral 8x7B,涉及一次激活八个专家之一。 不同的是,Qwen2模型采用细粒度专家,创建较小规模的专家,同时激活更多数量的专家。 给定相同数量的专家参数和激活参数,细粒度专家可以提供更丰富的专家组合。 通过利用这些细粒度的专家,Qwen2 MoE可以促进更加多样化和动态的专家利用,从而提高整体性能和适应性。
专家路由
专家路由机制的设计对于提高 MoE 模型的性能至关重要。 最近,在 MoE 层中集成共享专家和特定于路由的专家已成为一个显着趋势。Qwen2采用这种方法,因为它有助于共享专家在各种任务中的应用,同时保留其他专家在特定路由场景中选择性使用。 共享专家和专业专家的引入为开发 MoE 路由机制提供了一种适应性更强、更高效的方法。
专家初始化
Qwen2利用密集模型的权重,以与upcycling类似的方式初始化专家。 相比之下,Qwen2的方法强调细粒度专家的多样化,以增强模型的代表性广度。 给定指定的专家中间大小
Pre-training
预训练数据
Qwen2 模型的预训练涉及开发一个新的、大规模的、高质量的多语言数据集。 该数据集较之前的 Qwen 和 Qwen1.5 模型中使用的语料库(Bai 等人,2023a;Qwen Team,2024a) 有所改进,提高了预训练的规模、质量和多样性几个关键领域的数据:
质量提升
过滤算法已通过额外的启发式和基于模型的方法进行了改进,包括使用 Qwen 模型来过滤掉低质量数据。 此外,这些模型用于合成高质量的预训练数据。
数据扩展
与Qwen1.5相比,我们收集了更多的高质量代码、数学和多语言数据,增强了模型在各自领域的能力。 这个新数据集支持大约 30 种语言,例如英语、中文、西班牙语、法语、德语、阿拉伯语、俄语、韩语、日语、泰语和越南语。
分布改善
为了确保模型学习类似于人类学习的分布,我们在缩小模型上进行实验,以优化来自不同来源和领域的数据的混合。
基于这些增强,预训练数据从 Qwen1.5 中的 3 万亿个 Token 扩展到 7 万亿个 Token 。 进一步放宽质量门槛的尝试导致了12万亿的词符数据集。 然而,在这个数据集上训练的模型并没有表现出比 7 万亿词符模型有显着的性能提升。 怀疑增加数据量并不一定有利于模型预训练。 考虑到训练成本,我们选择使用更高质量的7万亿词符数据集来训练更大的模型,为未来的模型迭代留下进一步的探索。
所有 Qwen2 密集模型(不包括 Qwen2-0.5B)都在这个包含超过 7 万亿个 Token 的大规模数据集上进行了预训练。Qwen2-0.5B 使用 12 万亿词符数据集进行预训练。MoE模型额外获得了4.5万亿 Token 的预训练,符合升级循环的原则。 与之前的 Qwen 模型类似,Qwen2 预训练过程中集成了高质量的多任务指令数据,以增强情境学习和指令跟踪能力。
长上下文训练
为了增强长上下文能力,Qwen2 在预训练的最后阶段将上下文长度从 4,096 个标记增加到 32,768 个标记。 这种扩展还伴随着大量高质量、长数据的引入。 结合这些增强功能,我们将 RoPE 的基频从 10,000 修改为 1,000,000,以优化长上下文场景中的性能(Xiong 等人,2023)。
为了充分利用模型的长度外推潜力,Qwen2 采用了 YARN 机制(Peng 等人,2023)和双块注意力机制(An 等人,2024)。 这些策略使模型能够处理多达 131,072 个标记的序列,同时保持高性能,这一点可以从 物品知识实验中的困惑度降级最小化来证明。
Post-training
训练后数据
训练后数据主要由两部分组成:演示数据
训练数据的构建需要两个步骤:协作数据标注和自动数据合成。 首先,我们从大规模指令语料库中提取数据本体,从而产生广泛且多样化的高质量指令。 这些指令被系统地增强以包含更大的复杂性。 通过人类标注,我们获得目标响应
SFT
研究者收集了一个广泛的教学数据集,包含超过 500,000 个示例,涵盖指令遵循、编码、数学、逻辑推理、角色扮演、多语言和安全等技能。 我们的模型针对两个时期进行了微调,序列长度为 32,768 个 Token 。 为了优化学习,学习率从
RLHF
在在线训练阶段,模型利用奖励模型进行即时反馈,实时迭代地改进其性能。具体来说,我们从当前策略模型中采样多个响应,奖励模型选择最喜欢和最不喜欢的响应,形成用于每个情节中的 DPO 的偏好对。此外,我们采用在线合并优化器(Lu等人,2024a)来减轻对齐税,即与将模型生成与人类偏好对齐相关的性能下降。
评估
基础语言模型
指令调整模型
关于互联网持续学习圈