自然语言处理:第六十三章 阿里Qwen2 2.5系列

本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor

项目地址: QwenLM/Qwen2.5: Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud.

官网地址: 你好,Qwen2 | Qwen & Qwen2.5: 基础模型大派对! | Qwen


写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!

写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!

写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!




Qwen 2系列

截至到2024.11.3 其实Ali 已经推出了Qwen2.5系列,相比于Qwen2系列,2.5只是使用了体量更大、质量更高的数据集继续训练得到的 Qwen2.5 系列模型。 所以先介绍一下Qwen2系列,详情可以参考你好,Qwen2 | Qwen (qwenlm.github.io) 。


Qwen系列包括了5个尺寸的预训练和指令微调的模型,当时在开源的模型里一经推出就达到SOTA的水平。其中全系都使用了GQA(Group-Query Attention)技术,小模型使用了Tie Embedding(共享向量)技术。上下文长度都是基于32K的数据预训练然后拓展的,可以看到最长可以支持到128K。在推出的当时性能还是吊打其他大部分大模型的,尤其是多语言支持以及代码及数学能力显著提升,具体性能指标可以参考其文档。

模型Qwen2-0.5BQwen2-1.5BQwen2-7BQwen2-57B-A14BQwen2-72B
参数量0.49B1.54B7.07B57.41B72.71B
非Embedding参数量0.35B1.31B5.98B56.32B70.21B
GQATrueTrueTrueTrueTrue
Tie EmbeddingTrueTrueFalseFalseFalse
上下文长度32K32K128K64K128K

GQA现在基本是大模型的标配,原始的 MHA(Multi-Head Attention),QKV 三部分有相同数量的头,且一一对应。每次做 Attention,head1 的 QKV 就做好自己运算就可以,输出时各个头加起来就行。而 MQA(Multi-query Attention) 则是,让 Q 仍然保持原来的头数,但 KV只有一个,相当于所有的 Q 头共享一组 K 和 V 头,所以叫做 Multi-Query 了。虽然MQA一般能提高 30%-40% 的计算性能,但是性能精度会有所降低。而GQA 通过分组一定头数共享一组KV,从而达到性能和计算中的一个trade-off,这样既不像MQA一样降低很多精度,也可以相比于NHA提高速度。针对小模型,由于embedding参数量较大,qwen系列使用了tie embedding的方法让输入和输出层共享参数,增加非embedding参数的占比。Tie Embedding技术提出可以将输入和输出的嵌入层参数绑定,即让模型在处理输入词和输出词时使用相同的向量表示。 比如在词嵌入模型(如Word2Vec或GloVe)中,每个词被映射到固定维度的向量空间上。但是tie embedding 通过共享输入和输出层参数,可以使得相似语义的词拥有同样的词向量表示。比如说tie_embedding(‘large’) = tie_embedding('big)。

在这里插入图片描述

除了上述两个亮点之外Qwen系列还用了采用了多种先进技术以提升模型性能和效率:

  • 双块注意力(Dual Chunk Attention, DCA) :DCA双块注意力是一种改进的注意力机制。DCA 技术将长序列分割成可管理的块,从而有效捕捉块内和跨块的相对位置信息,提升长上下文处理能力。DCA双块注意力机制是一种无需额外训练即可扩展大型语言模型(LLMs)上下文窗口的新框架, 其避免了线性缩放位置索引或增加RoPE的基频。相反,它选择重用预训练模型中的原始位置索引及其嵌入,但重新设计了相对位置矩阵的构建,以尽可能准确地反映两个标记之间的相对位置。DCA通过将长文本分割成多个较小的“块”(chunks),然后在这些块内和块之间应用注意力机制,有效地处理长文本。DCA的核心思想包括:

    1. 内块注意力,将长文本分割成若干个小块,每个小块包含一部分文本。
    2. 间块注意力,用于处理不同块之间的标记 ,对每个小块单独应用注意力机制,减少了计算量。
    3. 连续块注意力,这些各自的处理帮助模型有效捕捉序列中的长距离和短距离依赖。在计算完块内注意力后,再在这些块之间应用注意力机制,以捕捉整个文本的上下文关系

    在这里插入图片描述

  • 旋转位置嵌入(RoPE) :RoPE 提出的一种能够将相对位置信息依赖集成到 self-attention 中并提升 transformer 架构性能的位置编码方式。而目前很火的 LLaMA、GLM 模型也是采用该位置编码方式。其核心思想是“通过绝对位置编码的方式实现相对位置编码”,可以说是具备了绝对位置编码的方便性,同时可以表示不同 token 之间的相对位置关系。不同于原始 Transformers 论文中,将 pos embedding 和 token embedding 进行相加,RoPE 是将位置编码和 query (或者 key) 进行相乘。如果深入对RoPE感兴趣,可以参考十分钟读懂旋转编码(RoPE) - 知乎 (zhihu.com) 以及我之前的文章:

  • 在这里插入图片描述

  • YARN 机制 :YaRN (Yet another RoPE extensioN method)用于重新调整注意力权重,同时相比于rope改成了位置编码差值。YARN的核心思想是对注意力权重进行重新缩放,以便在不牺牲性能的情况下,更好地处理更长的上下文。这种方法通过调整注意力权重,使得模型能够更有效地捕捉长距离依赖关系,同时减少计算复杂度和内存消耗。YARN机制的特点包括:

    1. 注意力权重重新缩放 :通过调整注意力权重,YARN使得模型在处理长序列时能够保持稳定的性能。
    2. 长上下文支持 :YARN机制使得模型能够有效处理超过训练时上下文长度的序列,这对于需要处理长文本的应用场景尤为重要。
  • SwiGLU 激活函数 :使用 SwiGLU 作为激活函数,以提高模型的非线性表达能力。SwiGLU 是2019年提出的新的激活函数,它结合了 SWISHGLU 两种者的特点。SwiGLU 主要是为了提升Transformer 中的 FFN(feed-forward network) 层的实现,其公式如:

SwiGLU ⁡ ( x , W , V , b , c , β ) = Swish ⁡ β ( x W + b ) ⊗ ( x V + c ) \operatorname{SwiGLU}(x, W, V, b, c,\beta)=\operatorname{Swish}_{\beta}\left(x W+b\right)\otimes(x V+c) SwiGLU(x,W,V,b,c,β)=Swishβ(xW+b)(xV+c)

  • RMSNorm 和预归一化 :使用 RMSNorm 和预归一化技术以增强训练稳定性。为了提高训练的稳定性,对每个transformer层的输入进行归一化,而不是输出进行归一化。同时,使用 RMS Norm (Root Mean Square layer normalization) ,与layernorm RMS Norm的主要区别在于去掉了减去均值的部分,RMS Norm 的作者认为这种模式在简化了Layer Norm 的计算,可以在减少约 7%∼64% 的计算时间, 其公式如下:

a ˉ i = a i R M S ( a ) g i , w h e r e R M S ( a ) = 1 n ∑ i = 1 n a i 2 \bar{a}_{i}=\frac{a_{i}}{RMS(a)}g_{i},\quad where RMS(a)=\sqrt{\frac{1}{n}\sum_{i=1}^{n}a_{i}^{2}} aˉi=RMS(a)aigi,whereRMS(a)=n1i=1nai2


同GPT一样,Qwen系列也属于因果语言模型 (causal Language Models),也被称为自回归语言模型 (autoregressive language models) 或仅解码器语言模型 (decoder-only language models) ,是一种机器学习模型,旨在根据序列中的前导 token 预测下一个 token 。换句话说,它使用之前生成的 token 作为上下文,一次生成一个 token 的文本。”因果”方面指的是模型在预测下一个 token 时只考虑过去的上下文(即已生成的 token ),而不考虑任何未来的 token 。Qwen系列 有关于Qwen2-1.5b模型的结构如下:

Ps: 除了GPT 这种自回归的模型 同时还包括序列到序列模型(encoder-decoder model) 以及 仅解码语言模型(encoder-only model)。

在这里插入图片描述

其模型结构大致为这样:

在这里插入图片描述



对于Qwen的对话模板统一如下,由控制token “<|endoftext|>” 在每个文档后插入,表示文档已经结束,新的文档将开始。Qwen使用以下格式(ChatML[3]),利用控制 token 来格式化对话中的每一轮。

<|im_start|>{{role}}
{{content}}<|im_end|>

用户输入扮演 <span class="pre">user</span> 的 role ,而模型生成则承担 <span class="pre">assistant</span> 的 role 。 Qwen 还支持元消息,该消息指导模型执行特定操作或生成具有特定特性的文本,例如改变语气、风格或内容,这将承担 <span class="pre">system</span> 的 role,且内容默认为 “You are Qwen, created by Alibaba Cloud. You are a helpful assistant.” 。

下面为一个完整示例:

<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
hello<|im_end|>
<|im_start|>assistant
Hello! How can I assist you today? Let me know if you have any questions or need help with something. I'm here to help!<|im_end|>
<|im_start|>user
Explain large language models like I'm 5.<|im_end|>
<|im_start|>assistant
Sure, I'd be happy to explain large language models in a simple way!
Imagine that you have a friend who is really good at playing with words. This friend has read so many books and talked to so many people that they know how to use words in all sorts of different ways. They can tell stories, answer questions, and even make up new words if they need to.
Now imagine that this friend is actually a computer program, called a "large language model". It's been trained on lots and lots of text, like books, articles, and conversations, so it knows how to use words just like your word-loving friend does. When you ask the model a question or give it a task, it uses all the knowledge it's learned to come up with a response that makes sense.
Just like your friend might sometimes make mistakes or say things in a funny way, the large language model isn't perfect either. But it's still really impressive, because it can understand and generate human language in a way that was once thought impossible for machines!<|im_end|><|endoftext|>


Qwen2.5系列

Qwen2.5 相比 Qwen2 主要做了以下 改进

  1. 全面性能提升 :Qwen2.5 在 Qwen2 的基础上进行了大幅度升级,包括从 1.5B 到 72B 参数规模的不同版本,每个版本都针对特定需求进行了优化。特别是 14B/32B 版本,是最适合单卡部署的大小。Qwen2.5 在自然语言理解、代码编写、数学解题以及多语言处理等多个方面都有显著增强。
  2. 更大的训练数据集 :Qwen2.5 的所有尺寸都在最新的大规模数据集上进行了预训练,该数据集包含多达 18T tokens。与 Qwen2 相比,Qwen2.5 获得了显著更多的知识(MMLU:85+),并在编程能力(HumanEval 85+)和数学能力(MATH 80+)方面有了大幅提升。
  3. 更强的指令遵循能力 :新模型在指令执行、生成长文本(超过 8K 标记)、理解结构化数据(例如表格)以及生成结构化输出特别是 JSON 方面取得了显著改进。Qwen2.5 模型总体上对各种 system prompt 更具适应性,增强了角色扮演实现和聊天机器人的条件设置功能。
  4. 长文本支持能力 :与 Qwen2 类似,Qwen2.5 语言模型支持高达 128K tokens,并能生成最多 8K tokens 的内容。
  5. 强大的多语言能力 :Qwen2.5 同样保持了对包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韩文、越南文、泰文、阿拉伯文等 29 种以上语言的支持。
  6. 专业领域的专家语言模型能力增强 :即用于编程的 Qwen2.5-Coder 和用于数学的 Qwen2.5-Math,相比其前身 CodeQwen1.5 和 Qwen2-Math 有了实质性的改进。具体来说,Qwen2.5-Coder 在包含 5.5 T tokens 编程相关数据上进行了训练,使即使较小的编程专用模型也能在编程评估基准测试中表现出媲美大型语言模型的竞争力。同时,Qwen2.5-Math 支持中文和英文,并整合了多种推理方法,包括 CoT(Chain of Thought)、PoT(Program of Thought)和 TIR(Tool-Integrated Reasoning)。
  7. 全面开源 :Qwen2.5 系列在原有开源同尺寸(0.5/1.5/7/72B)基础上,还新增了 14B、32B 以及 3B 的模型。同时,通义还推出了 Qwen-Plus 与 Qwen-Turbo 版本,可以通过阿里云大模型服务平台的 API 服务进行体验。
  8. 预训练数据集更大更高质量 :从原本 7 万亿个 token 扩展到最多 18 万亿个 token,成为目前训练数据最多的开源模型之一。
  9. 多方面的能力增强 :比如获得更多知识、数学编码能力以及更符合人类偏好。在指令跟踪、长文本生成(从 1k 增加到 8K 以上 token)、结构化数据理解(如表格)和结构化输出生成(尤其是 JSON)方面均有显著提升。


注:Qwen2.5 模型结构是和 Qwen2 一致的,从 下面的配置文件里面就知道了。对源码感兴趣的可以跟读下面两篇文章:

  • 《Qwen2源码阅读——环境准备和说明》
  • 《Qwen2源码阅读——核心代码跟读》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/475606.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

i春秋-登陆(sql盲注爆字段,.git缓存利用)

练习平台地址 竞赛中心 题目描述 先登陆再说 题目内容 就是一个登录框 测试登录 用户名&#xff1a;admin or 11# 密码&#xff1a;随便输 返回密码错误 用户名&#xff1a;随便输 密码&#xff1a;随便输 返回用户名不存在 这里就可以确定时一个bool盲注了 这里提供一个lik…

新华三H3CNE网络工程师认证—子接口技术

子接口&#xff08;subinterface&#xff09;是通过协议和技术将一个物理接口&#xff08;interface&#xff09;虚拟出来的多个逻辑接口。在VLAN虚拟局域网中&#xff0c;通常是一个物理接口对应一个 VLAN。在多个 VLAN 的网络上&#xff0c;无法使用单台路由器的一个物理接口…

C# - 无法加载 DLL“libmupdf.dll”: 找不到指定的模块。

1.本机环境 windows 11 64位Visual Studio 2015 2.报错如下 用户代码未处理 System.DllNotFoundException HResult-2146233052 Message无法加载 DLL“libmupdf.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 SourceMoonPdfLib TypeName"" StackTrac…

23.UE5删除存档

2-25 删除存档制作_哔哩哔哩_bilibili 按照自己的风格制作删除按钮 这样该行的存档就被从存档列表中删除了&#xff0c;并且实际存档&#xff08;我的存档蓝图&#xff09;中也被删除了 但是存在一个问题&#xff0c;如果存档数据中存在索引为: 0 1 2 3的存档&#xff0c;当索…

VSCode DeBug时无法进入自定义工具库

最近遇到一个问题&#xff0c;将自己的写的工具包放到conda里site-packagse下&#xff0c;并配置了__init__.py文件&#xff0c;当我debug时&#xff0c;想进入工具包函数调试&#xff0c;但是总是进入不了工具包函数。找了许多博客方法&#xff0c;尝试了将launch.json中的jus…

单元测试框架gtest学习(三)—— 事件机制

前言 上节我们学习了gtest的各种宏断言 单元测试框架gtest学习&#xff08;二&#xff09;—— 认识断言-CSDN博客 本节我们介绍gtets的事件机制 虽然 Google Test 的核心是用来编写单元测试和断言的&#xff0c;但它也允许在测试执行过程中进行事件的钩取和自定义&#xf…

在k8s上部署Crunchy Postgres for Kubernetes

目录 一、前言二、安装Crunchy Postgres for Kubernetes三、部署一个简单的postgres集群四、增加pgbouncer五、数据备份六、备份恢复七、postgres配置参数八、数据导入九、权限管理 一、前言 Crunchy Postgres可以帮助我们在k8s上快速部署一个高可用、具有自动备份和恢复功能的…

python中Pandas操作excel补全内容

补全ID、InStore、Date import random from datetime import datetime, timedeltaimport pandas as pdfile_path r"C:\Users\xb\Desktop\Books_1.xlsx" books pd.read_excel(iofile_path, skiprows3, usecols"C:F", dtype{"ID": str, "I…

高级 SQL 技巧讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; SQL&#xff08;结构化查询语言&#xff09;是管理和操作数据库的核心工具。从基本的查询语句到复杂的数据处理&#xff0c;掌握高级 SQL 技巧不仅能显著提高数据分析的效率&#xff0c;还能解决业务中的复…

Android okhttp 网络链接各阶段监控

步骤 1: 添加依赖 在项目的 build.gradle 文件中&#xff0c;添加 OkHttp 依赖&#xff1a; implementation com.squareup.okhttp3:okhttp:4.11.0 步骤 2: 创建自定义的 EventListener 创建一个自定义的 EventListener 类&#xff1a; import android.util.Log import okht…

springboot高校毕业生实习及就业去向信息管理系统

摘 要 高校毕业生实习及就业去向信息管理管理系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;使用了springboot框架。该系统从三个对象&#xff1a;由管理员和学生、企业信息来对系统进行设计构建。主要功能包括&#xff1a…

网络安全概论——网络安全基础

一、网络安全引言 信息安全的四个属性&#xff08;信息安全的基本目标 &#xff09; 保密性:信息不会被泄露给非授权用户完整性&#xff1a;保证数据的一致性可用性&#xff1a;合法用户不会被拒绝服务合法使用&#xff1a;不会被非授权用户或以非授权的方式使用 二、网络安…

【Unity基础】认识Unity中的包

Unity中的包是一个核心概念&#xff0c;像Unity本身的功能的扩展&#xff0c;或者项目中资源的管理&#xff0c;都是通过包的形式来实现的。 一、什么是包&#xff1f; 一个包包含满足您项目各种需求的功能。这可以包括编辑器安装过程中附带的任何核心Unity功能&#xff0c;也…

【从零开始的LeetCode-算法】3354. 使数组元素等于零

给你一个整数数组 nums 。 开始时&#xff0c;选择一个满足 nums[curr] 0 的起始位置 curr &#xff0c;并选择一个移动 方向 &#xff1a;向左或者向右。 此后&#xff0c;你需要重复下面的过程&#xff1a; 如果 curr 超过范围 [0, n - 1] &#xff0c;过程结束。如果 nu…

VUE+SPRINGBOOT实现邮箱注册、重置密码、登录功能

随着互联网的发展&#xff0c;网站用户的管理、触达、消息通知成为一个网站设计是否合理的重要标志。目前主流互联网公司都支持手机验证码注册、登录。但是手机短信作为服务端网站是需要付出运营商通信成本的&#xff0c;而邮箱的注册、登录、重置密码&#xff0c;无疑成为了这…

ChatGPT Search VS Kimi探索版:AI搜索哪家强?!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)

【网络系统管理】Centos7——配置主从mariadb服务器案例-CSDN博客 接上个文档&#xff0c;我们已经完成了主服务器创建数据库备服务器可以看到 一、在DBMS2查看信息 File&#xff0c;Position这两个字段的数据要记好&#xff0c;等一下需要用到 show master status; 二、在…

定长滑动窗口(LeetCode——1423.可获得的最大点数)

题目 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards 几张卡牌 排成一行…

ubuntu20.04如何升级python3.8到python3.10

主要参考了这两个链接&#xff1a; 如何在Ubuntu 20.04安装Python 3.10 | myfreaxhttps://www.myfreax.com/how-to-install-python-3-10-on-ubuntu-20-04/#:~:text%E5%9C%A8%E8%B0%83%E8%AF%95%E5%92%8C%E5%85%B6%E4%BB%96%E5%B7%A5%E5%85%B7%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%B…

JDK安装和Linux常见设置详细版教程

一、Linux的常见设置 1、设置静态IP vi /etc/sysconfig/network-scripts/ifcfg-ens33 如何查看自己的虚拟机的网关&#xff1a; 完整的配置&#xff08;不要拷贝我的&#xff09;&#xff1a; TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no&…