论文阅读--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、指令遵循能力。
相关文章:
论文阅读--Qwen22.5技术报告
Qwen2 1 引言 所有模型都是在超过7 trillion token(7万亿)的高质量、大规模数据集上预训练的 2 Tokenizer & Model 2.1 Tokenizer 沿用Qwen(Bai等人,2023a)的做法,我们采用了基于字节级字节对编码…...
python如何导出数据到excel文件
python导出数据到excel文件的方法: 1、调用Workbook()对象中的add_sheet()方法 wb xlwt.Workbook() ws wb.add_sheet(A Test Sheet) 2、通过add_sheet()方法中的write()函数将数据写入到excel中,然后使用save()函数保存excel文件 ws.write(0, 0, 1234…...
pyhton学习笔记(三)
目录 1.变量 2.变量的命名规则 3.常用函数汇总 4.常用数据类型汇总 5.算术运算符 6.比较运算符和逻辑运算符 7.常见的三种格式化输出方法 8.分支语句 1.变量 变量就是可以变化的量,可以理解为是一个存储东西的盒子,盒子里面可以放一些程序里需要…...
时间类型数据处理:基于Python的datetime库和pandas库
一、datetime库常用方法 日期的数据类型主要有两种:一是包含时间的datetime类型,二是不包含时间的date类型。这里的时间指具体的时、分、秒、甚至毫秒。 1、自定义日期、时间、获取本地时间、获取本地日期、获取年份、月份、月号、小时、分钟、秒、星期…...
CPU 缓存基础知识
并发编程首先需要简单了解下现代CPU相关知识。通过一些简单的图,简单的代码,来认识CPU以及一些常见的问题。 目录 CPU存储与缓存的引入常见的三级缓存结构缓存一致性协议MESI协议缓存行 cache line 通过代码实例认识缓存行的重要性 CPU指令的乱序执行通过…...
vue3 中如何监听 props 中的值的变化
在 Vue 3 中,你可以使用 watch 函数来监听组件的 props 值的变化。watch 函数允许你观察一个或多个响应式数据源,并在这些数据源发生变化时执行回调函数。 以下是一个示例,展示了如何在 Vue 3 中使用 watch 来监听 props 中的值的变化&#…...
煤矿场景下矿工行为检测数据集VOC+YOLO格式24709张8类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):24709 标注数量(xml文件个数):24709 标注数量(txt文件个数):2470…...
Git处理冲突详解
文章目录 Git处理冲突详解一、引言二、冲突产生的原因三、解决冲突的步骤1. 手动解决冲突1.1 查看冲突文件1.2 编辑冲突文件1.3 提交解决冲突 2. 使用合并工具解决冲突 四、使用示例五、总结 Git处理冲突详解 一、引言 在团队协作开发中,Git冲突是不可避免的。当多…...
Jetson Orin Nano Super之jetson-fpv开源代码下载
Jetson Orin Nano Super之jetson-fpv开源代码下载 1. 源由2. 方法2.1 优化配置方案一:增加缓冲方案二:降低并发数方案三:临时禁用深度克隆 2.2 路径更换方案一:设置代理方案二:替换git协议方案三:替换https…...
gitlab使用多数据库
1. 说明 默认情况下,GitLab 使用一个单一的应用数据库,称为主数据库。为了扩展 GitLab,您可以将 GitLab 配置为使用多个应用数据库。 设置多个数据库后,GitLab 将使用第二个应用数据库用于 CI/CD 功能,称为 CI 数据库…...
【Redis】事务
前言: 对比MySQL事务:【MySQL篇】事务的认识以及四大特性-CSDN博客 弱化的原子性: redis 没有 "回滚机制". 只能做到这些操作 "批量执行". 不能做到 "一个失败就恢复到初始状态". 不保证一致性: 不涉及 "约束". 也没有…...
在vue3中使用datav完整引入时卡在加载页面的解决方法
文件修改 文件:node_modules/dataview\datav-vue3/package.json // "module": "./es/index.js","module": "./es/index.mjs", // 修改后使用完整引入,需要为datav配置文件添加相应方法 文件:node…...
WPA_cli P2P命令详解及使用
目录 通用命令 status scan scan_results add_network set_network enable_network reconfigure save_config quit P2P 相关命令 p2p_find p2p_peers p2p_connect [method] p2p_group_add [ssid=] [freq=] [ht40] [persistent] p2p_remove_client p2p_di…...
Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)
准备工作 Kubernetes v1.28.0搭建教程请参考:Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml ,下载好之后,进入文件编辑 下载地址…...
性能测试监控与诊断
我们依据一个HTTP请求处理的过程,采用主流的J2EE技术栈,如下图所示 1>用户的请求通过网卡传送到服务器(中断信号),用户与服务器简历TCP/IP链接。也就是产说的TCP三次握手。既然是链接,就有限制ÿ…...
窥探QCC518x-308x系列与手机之间的蓝牙HCI记录与分析 - 耳机篇
上一篇是介绍如何窥探手机端Bluetooth的HCI log, 本次介绍是如何窥探Bluetooth的HCI log-耳机篇. 这次跟QCC518x/QCC308x测试的手机是Samsung S23 Ultra. QCC518x/QCC308x透过HCI界面取得Log教学. 步骤1: 开启QMDE -> 选择ADK r1102 QCC3083 Headset workspace.步骤2: 点…...
Numpy基础02(Numpy对数组的基本操作)
Numpy的基本操作 2.3.1 ndarray索引操作 一维数组:同一维列表大致相同 n np.array([1, 2, 3, 4, 5]) n[0], n[-1] #(1, 5)多维数组 n np.random.randint(0, 10, size(3, 4, 5)) print(n) # 访问最后一个元素并改为66 n[2,3,-1] 66 print(n)# 最后一行元素并…...
WPS计算机二级•幻灯片的基础操作
听说这是目录哦 PPT的正确制作步骤🛣️认识PPT界面布局🏜️PPT基础操作 快捷键🏞️制作PPT时 常用的快捷技巧🏙️快速替换PPT的 文本字体🌃快速替换PPT 指定文本内容🌅能量站😚 PPT的正确制作步…...
蓝桥杯准备 【入门1】顺序结构
P5705 【深基2.例7】数字反转 题目描述 输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,例如 123.4123.4 ,要求把这个数字翻转过来,变成 4.3214.321 并输出。 解题思路:使用字符串比较简单…...
Java学习笔记(二十四)
1 策略模式 1.1 策略模式概述 策略模式(Strategy Pattern) 是一种行为设计模式,定义了一系列算法,并将它们封装成独立的类,使它们可以互相替换而不会影响使用它们的客户端代码。 策略模式的核心思想是将行为与环境解…...
React进阶之高阶组件HOC、react hooks、自定义hooks
React高级 高阶组件 HOC属性代理反向继承属性代理和反向继承的区别实例实例一实例二 HooksHooks APIuseState:useEffect:useLayoutEffect:useRef:useContext:useReducer:useMemouseCallback 自定义Hooks 拓展ÿ…...
在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)
在2024年的亚马逊云科技re:Invent全球云计算春晚里,亚马逊云科技CEO - Matt Garman介绍了亚马逊云科技的AI模型托管平台Amazon Bedrock上的模型蒸馏服务Model Distillation,令小李哥印象十分深刻。该功能可自动化地为特定场景的知识创建一个蒸馏模型。它…...
算法基础 -- 红黑树初识
红黑树初识 红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它通过对每个节点增加颜色属性,以及在插入和删除节点时使用特定规则调整树结构来保持平衡。红黑树的特点是,在任何情况下,其树高都可以保持在…...
TTL 在 Redis 缓存中的作用
Redis TTL(Time To Live)与缓存的关系 TTL(Time To Live,生存时间)是 Redis 提供的一种自动过期机制,用于控制键值对的存活时间。当 TTL 到期后,Redis 会自动删除该键,避免长期占用…...
利用 SAM2 模型探测卫星图像中的农田边界
将 Segment Anything Model Version 2 应用于卫星图像以检测和导出农业地区田地边界的分步教程 🌟 简介 手动绘制田地边界是最耗时的任务之一,其准确性取决于绘制者的表现。然而,精确的边界检测在很多领域都有应用。例如,假设您…...
Java春招面试指南前言
在当今竞争激烈的就业市场中,对于即将踏入职场的Java开发者而言,春招是一次宝贵的机会。本博客专栏旨在为大家提供一份全面且实用的Java春招面试指南,助力大家顺利通过面试,开启职业生涯的新篇章。 无论你是初出茅庐的应届生&…...
安宝特方案 | 智能培训:安宝特AR如何提升企业技能培训的效率与互动性
随着企业不断推进数字化转型,传统培训方式已无法满足现代企业对高效、灵活培训的需求。尤其在技术更新频繁、工艺流程复杂、员工流动性大的环境中,传统培训模式的局限性愈加明显。为了提升培训质量、降低培训成本,并帮助员工迅速掌握新技能&a…...
Python网络自动化运维---用户交互模块
文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中,我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中,这样很容易导致账户/密码泄露,而使用Python中的用户交…...
最新-CentOS 7 基于1 Panel面板安装 JumpServer 堡垒机
CentOS 7 基于1 Panel面板安装 JumpServer 堡垒机 一、前言二、设备要求三、环境要求四、安装4.1 环境安装4.2 JumpServer安装4.3 访问JumpServerWeb端,进行登录 五、登录Web控制台 一、前言 JumpServer是广受欢迎的开源堡垒机。运维必备神器!JumpServe…...
【前端】Hexo 建站指南
文章目录 前言生成站点本地测试部署云端参考 前言 更好的阅读体验:https://blog.dwj601.cn/FrontEnd/Hexo/build-your-own-website-with-hexo/ 笔记记多了,想要分享给同学们一起交流进步,该怎么办?想要搭建一个属于自己的知识库…...
(Java版本)基于JAVA的网络通讯系统设计与实现-毕业设计
源码 论文 下载地址: cc基于JAVA的网络通讯系统设计与实现(源码系统论文)https://download.csdn.net/download/weixin_39682092/90299782https://download.csdn.net/download/weixin_39682092/90299782 第1章 绪论 1.1 课题选择的…...
WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建
WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建 一、前言二、WPF 核心架构2.1 核心组件2.2 布局系统2.3 数据绑定机制2.4 事件处理机制 三、WPF 开发环境搭建3.1 安装 Visual Studio3.2 创建第一个 WPF 应用程序 结束语优质源码分享 WPF基础 | 初探 WPFÿ…...
插入排序
直接插入排序 直接插⼊排序是⼀种简单的插⼊排序法,其基本思想是:把待排序的记录按其关键码值的⼤⼩逐个插 ⼊到⼀个已经排好序的有序序列中,直到所有的记录插⼊完为⽌,得到⼀个新的有序序列。 例如:我们玩扑克牌时&…...
2025最新 Docker 国内可用镜像源仓库地址(01月02日更新)
1. 添加docker镜像地址 使用编辑器打开配置文件 /etc/docker/daemon.json(如果没有该文件,可以新建一个) 2. vi daemon.json, 写入以下内容 {"builder": {"gc": {"defaultKeepStorage": "20GB",&…...
Java 反射与动态代理:实践中的应用与陷阱
Java 反射与动态代理:实践中的应用与陷阱 在现代Java应用中,反射和动态代理提供了强大的灵活性,但它们也带来了性能和复杂度上的挑战。本文将深入探讨这些技术在实际项目中的应用,分析它们可能导致的陷阱,并提供详细的…...
tp8读取mysql导出excel
环境:php8.3, thinkphp8.0, mysql8.0 use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Alignment; use think\facade\Db; use think\response\Json;class Index {public function index…...
【自己动手开发Webpack插件:开启前端构建工具的个性化定制之旅】
在前端开发的世界里,Webpack无疑是构建工具中的“明星”。它强大的功能可以帮助我们高效地打包和管理前端资源。然而,有时候默认的Webpack功能可能无法完全满足我们的特定需求,这时候就需要自定义Webpack插件来大展身手啦!今天&am…...
vue2使用flv.js在浏览器打开flv格式视频
组件地址:GitHub - bilibili/flv.js: HTML5 FLV Player flv.js 仅支持 H.264 和 AAC/MP3 编码的 FLV 文件。如果视频文件使用了其他编码格式就打不开。 flv.vue <template><div><el-dialog :visible.sync"innerVisibleFlv" :close-on-pre…...
Spring中的事务管理器TransactionManager
目录 一、主要功能 二、使用场景说明 在Spring框架中,事务管理器(TransactionManager)是用于管理事务的重要接口。它提供了对事务的全面控制,包括事务的状态管理和资源管理等功能。本文将详细介绍TransactionManager的主要功能、…...
MacOS安装Docker battery-historian
文章目录 需求安装battery-historian实测配置国内源相关文章 需求 分析Android电池耗电情况、唤醒、doze状态等都要用battery-historian, 在 MacOS 上安装 battery-historian,可以使用 Docker 进行安装runcare/battery-historian:latest。装完不需要做任…...
Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)
概述 在现代互联网应用中,网络请求和响应是服务交互的核心。对于开发者和测试人员来说,能够准确捕获并分析这些请求,是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具,不仅可以捕获普通的HTTP请求,还…...
c++解决常见内存泄漏问题——智能指针的使用及其原理
目录 前言: 1. 智能指针的使用及其原理 1. 1 智能指针的使用场景分析 1.2 RAII和智能指针的设计思路 1.3 C标准库智能指针的使用 1.3 1 auto_ptr 1.3 2 unique_ptr 1.3 3 shared_ptr(重) 1.3 4 weak_ptr 1.3 5 模拟实现删除器 2.智能指针的原…...
算法竞赛之离散化技巧 python
目录 离散化实战演练总结 离散化 不改变数据相对大小的情况下,对数据进行相应的下标映射,即离散化。 例如:【100,200,300,400,500】,离散化后为【1,2,3,4,5】 什么时候可以离散化:当数据只与它们之间的相对大小有关&a…...
1.CSS的三大特性
css有三个非常重要的三个特性:层叠性、继承性、优先级 1.1 层叠性 想通选择器给设置想听的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要是解决样式冲突的问题。 <!DOCTYPE html> <html lang"en&…...
由于请求的竞态问题,前端仔喜提了一个bug
在平常的开发过程中,你可能会遇到这样一个bug。 测试:我在测一个输入框搜索的功能时,告诉你通过输入框输入的内容,和最终通过输入内容搜索出来的结果对不上。 前端:我是通过调用后端接口拿到的数据,这明显…...
HTML `<head>` 元素详解
在 HTML 文档中,<head> 元素是一个非常重要的部分,它包含了文档的元数据(metadata)和其他与文档相关的信息。虽然 <head> 中的内容不会直接显示在网页上,但它对网页的行为、样式和搜索引擎优化(…...
基于RAG构建Text2SQL的实战教程
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...
GPT-4对话模型在客服中的应用与前景:开启智能客服新时代
GPT-4对话模型在客服中的应用与前景:开启智能客服新时代 随着人工智能技术的迅猛发展,基于深度学习的对话模型在各个领域中得到了广泛应用。其中,GPT-4对话模型在客服系统中的应用尤为引人注目。本文将探讨GPT-4在客服中的应用与未来发展前景,并结合具体代码示例进行说明。…...
我想通过python语言,学习数据结构和算法该如何入手?
学习数据结构和算法是编程中的重要基础,Python 是一个非常适合入门的语言。以下是学习数据结构和算法的步骤和建议: 1. 掌握 Python 基础 确保你对 Python 的基本语法、数据类型、控制结构(如循环、条件语句)、函数等有扎实的理…...
Java多线程的面试面试题及答案解析
什么是进程?什么是线程?有什么区别? 进程是系统资源分配的基本单位,拥有独立的地址空间。线程是 CPU 调度和分派的基本单位,是比进程更小的独立执行的单位,共享所在进程的内存空间等资源。一个进程可以包含…...