当前位置: 首页 > article >正文

论文阅读--Qwen22.5技术报告

Qwen2

1 引言

所有模型都是在超过7 trillion token(7万亿)的高质量、大规模数据集上预训练的

2 Tokenizer & Model

2.1 Tokenizer

沿用Qwen(Bai等人,2023a)的做法,我们采用了基于字节级字节对编码的相同Tokenizer

所有大小的模型都采用一个共有词汇表,包含151,643个常规词元和3个控制词元

2.2 模型架构

基于Transformer架构的大型语言模型,具有自注意力和因果掩码。具体来说,该系列包括4个规模的稠密语言模型和一个专家混合(MoE)模型

2.2.1 Qwen2 稠密模型

与Qwen的主要区别如下:

分组查询注意力:我们采用了分组查询注意力(Grouped Query Attention,GQA)而不是传统的多头注意力。GQA在推理期间优化了KV缓存的使用,显著提高了吞吐量。

双块注意力与YARN:为了扩大Qwen2的上下文窗口,我们实现了双块注意力(Dual Chunk Attention,DCA),它将长序列分割成可管理的长度块。如果输入可以在一个块中处理,DCA产生与原始注意力相同的结果。否则,DCA有助于在块内和跨块之间有效地捕获相对位置信息,从而提高长上下文性能。此外,我们还采用了YARN来重新调整注意力权重,以实现更好的长度外推。

我们还沿用了Qwen的使用,包括SwiGLU作为激活函数,旋转位置嵌入(RoPE)作为位置嵌入,QKV偏置用于注意力,RMSNorm和预归一化用于训练稳定性。

2.2.2 Qwen2 专家混合模型(MoE)

专家粒度:从密集架构过渡到MoE架构的一个直接策略是将每个专家的参数设置为原始密集模型中单个FFN的参数。例如,从Mistral-7B过渡到Mixtral 8x7B涉及一次激活八个专家中的一个。不同地,我们的模型采用了细粒度专家,创建了规模更小的专家,同时激活了更多的专家。

专家路由:最近,将共享专家和特定路由专家整合到MoE层内的趋势日益明显。我们采用了这种方法,因为它既促进了在各种任务中应用共享专家,又保留了其他专家在特定路由场景中选择性使用。

专家初始化:我们以类似于废物利用的方式初始化专家,利用密集模型的权重。与此不同,我们的方法强调在细粒度专家之间实现多样化,以增强模型的表现力广度。给定指定的专家中间尺寸 hE ,专家数量 n 以及原始前馈网络中间尺寸 hFFN ,FFN被复制次。这种复制确保了与指定专家数量的兼容性,同时适应任何任意的专家 intermediate size。为了在每个FFN副本中促进多样性, intermediate 维度参数进行shuffle。这确保了即使在不同的FFN副本中,每个细粒度专家也表现出独特的特征。随后,这些专家从FFN副本中提取出来,剩余的维度被丢弃。对于每个细粒度专家,其50%的参数被随机重新初始化。这个过程在专家初始化中引入了额外的随机性,可能增强了模型在训练期间的探索能力。

3 预训练

3.1 预训练数据

质量提升:过滤算法通过额外的启发式和基于模型的方法进行了改进,包括使用Qwen模型过滤掉低质量数据。此外,这些模型还被用于合成高质量的预训练数据。

数据扩展:与Qwen1.5相比,我们收集了更大容量的高质量代码、数学和多语言数据,增强了模型在这些领域的能力。这个新数据集支持约30种语言。

分布改进:为确保模型学习类似于人类学习的分布,我们在小规模的模型上进行实验,优化来自不同来源和领域的数据混合。

基于这些增强,预训练数据从Qwen1.5的3万亿个词元扩展到7万亿个tokens。尝试进一步放宽质量阈值导致了一个12万亿token的数据集。然而,在这个数据集上训练的模型并没有显示出比7万亿词元模型有显著的性能提升。怀疑增加数据量并不一定有益于模型预训练。

所有Qwen2密集模型(除了Qwen2-0.5B)都是在超过7万亿词元的大规模数据集上预训练的。Qwen2-0.5B是使用12万亿词元的数据集进行预训练的。MoE模型接受了额外的4.5万亿词元的预训练,符合 upcycling 的原则。

与之前的Qwen模型类似,高质量的多任务指令数据被整合到Qwen2的预训练过程中,以增强上下文学习和指令跟随能力。

3.2 长上下文训练

在预训练的最后阶段将上下文长度从4096增加到32768,将RoPE的基本频率从10,000调整到1,000,000,,采用了 YARN 机制和 Dual Chunk Attention 双块注意力机制使模型能够处理长达131072个词元的序列(128k)

4 后训练

4.1 后训练数据

后训练数据主要由两部分组成:对齐数据 D = { ( x i , y i ) } 和偏好数据 P = { ( x i , y i + , y i − ) } ,其中 x i 代表指令,y i代表满意的响应,y i +和 y i − 是对 x i 的两种响应,y i + 是比 y i − 更受偏好的选择。集合 D 用于SFT,而 P 用于RLHF。

训练数据的构建包括两个步骤:

(1)协作数据注释和自动化数据合成。首先,我们从大规模指令语料库中提取数据本体,得到广泛和多样化的高质量指令集合。这些指令经过系统性增强,以包含更大的复杂性。通过人工注释,我们获得了目标响应 y i 及其正面和负面标注 ( y i + , y i − ) 。
(2)随后,采用多种自动化对齐策略,在代码、数学、指令跟随、创作、角色扮演和安全等领域合成了大量人工注释的数据。

4.2 有监督微调(SFT)

我们构建了一个包含超过50万个示例的广泛指令数据集,这些示例涵盖了指令跟随、编码、数学、逻辑推理、角色扮演、多语言能力和安全性等技能。

4.3 人类反馈的强化学习(RLHF)

我们的RLHF训练机制包括两个连续的阶段:离线和在线训练。

在离线训练阶段,我们使用预先编译的偏好数据集P,通过直接偏好优化(DPO)最大化 y i + 和 y i − 之间可能性的差异。

在在线训练阶段,模型利用即时反馈的奖励模型不断改进其性能。具体来说,我们从当前策略模型中采样多个响应,奖励模型选择最受欢迎和最不受欢迎的响应,形成用于每个情节中DPO的偏好对。此外,我们采用在线合并优化器来减轻对齐税,即与人类偏好对齐时模型性能下降的问题。

 Qwen2.5

Tokenizer

还是沿用了上一代,带有 151643 个常规 token 的字节级字节对编码(BBPE),新版本把 special token 从3个扩到了22个(比如tool call的还有其他能力的)。

Model

架构貌似没变

预训练

预训练数据从之前的 7T token(7万亿)扩展到 18T(18万亿)token,重点关注知识、代码和数学,通过不同数据配比分阶段预训练,为常识、专家知识、推理能力提供基础。

后训练

sft 了 100w+ 指令数据,还做了离线 DPO 和在线 GRPO 的多阶段强化学习。增强人类偏好,改进了长文生成(从2K个token到8K个token)、结构化输入和输出(例如表格和JSON)、简单的 Function/tool call、指令遵循能力。


http://www.kler.cn/a/513237.html

相关文章:

  • 【NLP基础】Word2Vec 中 CBOW 指什么?
  • Golang的文件处理优化策略
  • 零信任安全理念
  • STM32-串口-UART-Asynchronous
  • 【计算机网络】传输层协议TCP与UDP
  • Linux系统之kill命令的基本使用
  • 多级缓存以及热点监测
  • C#性能优化技巧:利用Lazy<T>实现集合元素的延迟加载
  • 【PGCCC】PostgreSQL 中表级锁的剖析
  • FastAPI教程:快速构建高性能API
  • 可免费使用的电子画册制作平台
  • AutoSAR CP RTE 规范核心内容简介以及BswScheduler工作原理解析
  • PostgreSQL插件pg_repack介绍和简单使用【2】
  • 基于Python django的音乐用户偏好分析及可视化系统设计与实现
  • 2024年博客之星主题创作|从零到一:我的技术成长与创作之路
  • 嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础
  • 如何解决 Apache Shutdown Unexpectedly 错误 ?
  • 人工智能AI 与 机器学习ML 的关键区别
  • element el-table合并单元格
  • 机器学习(5):支持向量机
  • CSS 溢出问题及解决方案:实用案例与技巧
  • 在 vscode + cmake + GNU 工具链的基础上配置 JLINK
  • web自动化-登录时滑块验证码报错解决方案
  • MongoDB数据库迁移
  • Linux -- HTTP 请求 与 响应 报文
  • 网络安全等级保护基本要求——等保二级