自然语言处理:第六十三章 阿里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.mzph.cn/pingmian/61463.shtml

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

相关文章

六、卷积神经网络(CNN)基础

卷积神经网络&#xff08;CNN&#xff09;基础 前言一、CNN概述二、卷积层2.1 卷积2.2 步幅(Stride)2.3 填充(Padding)2.4 多通道卷积2.5 多卷积计算2.6 特征图大小计算2.7 代码演示 三、池化层3.1 池化层计算3.1.1 最大池化层3.1.2 平均池化层 3.2 填充(Padding)3.3 步幅(Stri…

通过vite+vue3+pinia从0到1搭建一个uniapp应用

最近项目上要做一个app&#xff0c;选择了用uniapp作为开发框架&#xff1b;我大概看了一下uniapp的文档&#xff0c;根据文档从0到1搭了一个uniapp应用供大家参考。 因为本人习惯使用了WebStorm编译器&#xff0c;但是uniapp官方推荐使用HBuilder搭建&#xff0c;如果和我一样…

【Pytorch】torch.nn.functional模块中的非线性激活函数

在使用torch.nn.functional模块时&#xff0c;需要导入包&#xff1a; from torch.nn import functional 以下是常见激活函数的介绍以及对应的代码示例&#xff1a; tanh (双曲正切) 输出范围&#xff1a;(-1, 1) 特点&#xff1a;中心对称&#xff0c;适合处理归一化后的数据…

java-贪心算法

1. 霍夫曼编码&#xff08;Huffman Coding&#xff09; 描述&#xff1a; 霍夫曼编码是一种使用变长编码表对数据进行编码的算法&#xff0c;由David A. Huffman在1952年发明。它是一种贪心算法&#xff0c;用于数据压缩。霍夫曼编码通过构建一个二叉树&#xff08;霍夫曼树&a…

【数据结构】【线性表】【练习】反转链表

申明 该题源自力扣题库19&#xff0c;文章内容&#xff08;代码&#xff0c;图表等&#xff09;均原创&#xff0c;侵删&#xff01; 题目 给你单链表的头指针head以及两个整数left和right&#xff0c;其中left<right&#xff0c;请你反转从位置left到right的链表节点&…

实时数仓:Lambda架构和Kappa架构有什么联系和区别

Kappa 和 Lambda 架构是处理大数据和实时数据流的两种不同设计模式。以下是对这两种架构的概述和比较&#xff1a; Lambda 架构 定义&#xff1a; Lambda 架构的全称是 Lambda Architecture。这个架构旨在处理大规模数据&#xff0c;结合了批处理和流处理的优点&#xff0c;以…

vllm源码解析(一):整体架构与推理代码

vlllm官方代码更新频发,每个版本都有极大变动, 很难说哪个版本好用. 第一次阅读vllm源码是0.4.0版本,对这版圈复杂度极高的调度代码印象深刻 0.4.1对调度逻辑进行重构,完全大变样, 读代码速度快赶不上迭代的速度了。 现在已经更新到0.5.4, 经过长时间观察&#xff0c;发现主要的…

数据库index(索引)使用注释事项

1、索引类型&#xff0c;通常选择NORMAL或者UNIQUE. NORMAL&#xff1a;正常的一种索引吧。 UNIQUE:索引列必须是不能重复的。 2、索引方法&#xff1a;通常选择BTREE 3、使用SQL查询的时候&#xff0c;不需要特别处理索引的字段。数据库会自动的处理&#xff0c;提升SQL的查…

集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1

蓝牙模组 - RF-BM-2340B1是基于美国TI的CC2340R5为核心设计的一款SimpleLink 2.4 GHz 无线模块。支持Bluetooth 5.3 Low Energy、Zigbee 、IEEE 802.15.4g、TI 15.4-Stack (2.4 GHz)及私有协议。集成了高性能ARM Cortex-M0处理器&#xff0c;具有512 KB Flash、32 KB超低泄漏SR…

[QDS]从零开始,写第一个Qt Design Studio到程序调用的项目

前言 最近在使用Qt Design Studio进行开发&#xff0c;但是简中网上要不就是只搜得到Qt Designer(Qt Creator内部库)&#xff0c;要不就只搜得到一点营销号不知道从哪里搬来的账号&#xff0c;鉴于Qt Design Studio是一个这么强大的软件&#xff0c;自然是需要来进行一下小小的…

Spring Boot实现License生成和校验

Spring Boot实现License生成和校验 证书准备 # 1. 生成私钥库 # validity&#xff1a;私钥的有效期&#xff08;天&#xff09; # alias&#xff1a;私钥别称 # keystore&#xff1a;私钥库文件名称&#xff08;生成在当前目录&#xff09; # storepass&#xff1a;私钥库密码…

【大模型推理】vLLM 源码学习

强烈推荐 https://zhuanlan.zhihu.com/p/680153425 sequnceGroup 存储了相同的prompt对应的不同的sequence, 所以用字典存储 同一个Sequence可能占据多个逻辑Block&#xff0c; 所以在Sequence 中用列表存储 同一个block 要维护tokens_id 列表, 需要添加操作。 还需要判断blo…

核心速览12

研究背景 研究问题&#xff1a;这篇文章探讨了多模态人工智能&#xff08;Agent AI&#xff09;系统在理解和响应视觉和语言输入方面的潜力&#xff0c;特别是在物理和虚拟环境中的应用。Agent AI旨在通过感知和行动来增强人工智能系统的交互性和适应性。研究难点&#xff1a;…

【pyspark学习从入门到精通14】MLlib_1

目录 包的概览 加载和转换数据 在前文中&#xff0c;我们学习了如何为建模准备数据。在本文中&#xff0c;我们将实际使用这些知识&#xff0c;使用 PySpark 的 MLlib 包构建一个分类模型。 MLlib 代表机器学习库。尽管 MLlib 现在处于维护模式&#xff0c;即它不再积极开发…

从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望

作者&#xff1a;金峰&#xff08;项良&#xff09;、朱永林、赵世振&#xff08;寰奕&#xff09; 公司简介 杭州热联集团股份有限公司成立于 1997 年 10 月&#xff0c;是隶属杭州市实业投资集团的国有控股公司。公司专业从事国际、国内钢铁贸易黑色大宗商品及产业服务&…

若依springboot 删除一直转 问题处理

src\main\resources\static\ruoyi\js\ry-ui.js submit方法1578行添加 $.operate.successCallback(result); 在线体验 admin/admin123陆陆续续收到一些打赏&#xff0c;为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 演示地址&#xff1a;http://ruoyi.vip 文档地址…

面向未来的智能视觉参考设计与汽车架构,思尔芯提供基于Arm技术的创新方案

引言&#xff1a; 随着科技的飞速发展&#xff0c;智能视觉IoT已成为科技领域的热门话题&#xff0c;为智能家居、智慧城市等领域带来新机遇。然而&#xff0c;物联网市场的碎片化特性对智能视觉芯片设计构成挑战。同时&#xff0c;汽车行业正经历技术驱动的变革&#xff0c;软…

Multiple instance learning with graph neural networks文献笔记

基本信息 文章链接&#xff1a;[1906.04881] Multiple instance learning with graph neural networks 将每个包视为一个图&#xff0c;利用GNN学习包的嵌入&#xff0c;以探索包中实例之间有用的结构信息。最终的图表示被送入分类器进行标签预测。 具体方法 输入&#xff…

Elasticsearch是如何实现Master选举的?

大家好&#xff0c;我是锋哥。今天分享关于【Elasticsearch是如何实现Master选举的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Elasticsearch是如何实现Master选举的&#xff1f; Elasticsearch 使用 Zen Discovery 插件&#xff08;在较新的版本中是基于 Zen2&…

WEB-通用漏洞SQL注入CTF二次堆叠DNS带外

知识点&#xff1a; 1、数据库堆叠注入 根据数据库类型决定是否支持多条语句执行 数据库支持多条语句执行就是堆叠&#xff0c;如&#xff1a; 2、数据库二次注入 应用功能逻辑涉及上导致的先写入后组合的注入 3、数据库Dnslog注入 解决不回显&#xff08;反向连接&#…