qwen2理论/改进点

qwen2官方技术blog

概述

改进点

  • 除英语和中文外,还接受过 27 种语言的数据培训
  • 显着提高编码和数学表现;
  • Qwen2-7B-Instruct 和 Qwen2-72B-Instruct 的扩展上下文长度支持高达 128K 令牌
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    更详细的benchmark建议去看官网blog

技术

  • 全系列采用了GQA,提高预测速度、减小显存占用(分组查询注意力 (Grouped Query Attention) 是一种在大型语言模型中的多查询注意力 (MQA) 和多头注意力 (MHA) 之间进行插值的方法,它的目标是在保持 MQA 速度的同时实现 MHA 的质量 )
  • 两个小模型采用了Tie sparse embeding作为很大一部分参数(针对小模型,由于embedding参数量较大,使用了tie embedding的方法让输入和输出层共享参数,增加非embedding参数的占比 )
  • 全系都是在32k上下文预料上做预训练,然后部分模型通过YARN外推或者Dual Chunk Attention.
  • 除去常规的预训练、sft对齐外,还采用了在线DPO训练,各种自动对齐策略:如例如数学的rejection sampling、编码和指令遵循的执行反馈、创意写作的反向翻译、角色扮演的 scalable oversight等,
  • 采用了Online Merging Optimizer最小化对齐税

模型结构

一、使用AutoModelForCausalLM类打印模型结果

from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen2-7B-Instruct')
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(model_dir)
print(model)

Qwen2的模型结构如下

Qwen2ForCausalLM(
(model): Qwen2Model(
(embed_tokens): Embedding(152064, 3584)
(layers): ModuleList(
(0-27): 28 x Qwen2DecoderLayer(
(self_attn): Qwen2SdpaAttention(
(q_proj): Linear(in_features=3584, out_features=3584, bias=True)
(k_proj): Linear(in_features=3584, out_features=512, bias=True)
(v_proj): Linear(in_features=3584, out_features=512, bias=True)
(o_proj): Linear(in_features=3584, out_features=3584, bias=False)
(rotary_emb): Qwen2RotaryEmbedding()
)
(mlp): Qwen2MLP(
(gate_proj): Linear(in_features=3584, out_features=18944, bias=False)
(up_proj): Linear(in_features=3584, out_features=18944, bias=False)
(down_proj): Linear(in_features=18944, out_features=3584, bias=False)
(act_fn): SiLU()
)
(input_layernorm): Qwen2RMSNorm()
(post_attention_layernorm): Qwen2RMSNorm()
)
)
(norm): Qwen2RMSNorm()
)
(lm_head): Linear(in_features=3584, out_features=152064, bias=False)
)

结构图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
区别

  • 网络结构:无明显变化
  • 核心网络Qwen2DecoderLayer层:由32层减少为28层(72B是80层)
  • Q、K、V、O隐层尺寸:由4096减少为3584(72B是8192)
  • attention heads:由32减少为28(72B是64)
  • kv head:由32减少为4(72B是8)
  • 滑动窗口(模型尺寸):由32768(32K)增长为131072(128K)(72B一样)
  • 词表:由151936增长为152064(72B一样)
  • intermediate_size(MLP交叉层):由11008增长为18944(72B是29568)

可以看到其中有的参数增加有的参数减少,猜想是:

减少的参数,并不会降低模型效果,反而能增加训练和推理效率,
增大的参数:比如MLP中的intermediate_size,参数越多,模型表达能力越明显。

二、Qwen2 技术修改点

Transformer Architecture with SwiGLU activation: 不多说,最主流的transformer架构,不变。但是,SwiGLU激活函数是GLU变体,可以让模型学习表达更加复杂的模式。

QKV bias:在Transformer模型中,Q、K、V分别代表查询(Query)、键(Key)和值(Value)。这些向量是通过输入向量与对应的权重矩阵相乘得到的。QKV bias表示在计算Q、K、V时添加可学习的偏置项。

GQA:Grouped-query attention,它是一种插值方法,介于多查询和多头注意力之间,可以在保持接近多头注意力的质量的同时,达到与多查询注意力相当的速度。

Mixture of SWA and Full Attention: SWA指的是Sliding Window Attention,是一种注意力模式,用于处理长序列输入的问题。而full attention则是传统的注意力机制,考虑序列中所有元素的交互。这里的mixture可能指的是这两种注意力机制的结合使用。

Improved Tokenizer Adaptive to Multiple Natural Languages and Code: 这说明模型使用了一种改进的分词器,它不仅适用于多种自然语言,还能处理代码。在自然语言处理和编程语言处理中,分词器用于将文本分解成更小的单位(如词、字符或其他符号),这是理解和处理文本的基础步骤。

三、Qwen2核心类

  • Qwen2RMSNorm: RMS归一化层
  • Qwen2RotaryEmbedding: 旋转位置编码,和Qwen1不同.Qwen1可以对部分位置做旋转位置编码
  • Qwen2MLP: 全连接层,lora和MOE主要在这个层上做事情
  • Attention
    - Qwen2Attention: 注意力层
    - Qwen2FlashAttention2: 使用Flash Attention 2.0版本加速的注意力层
    - Qwen2SdpaAttention: 使用Sdpa(pytorch自带的加速, Scaled Dot-Product Attention)加速的注意力层
  • Qwen2DecoderLayer: 编码层,核心结构,之后就是堆叠 - Qwen2PreTrainedModel: 预训练类
  • Qwen2Model: 不带head的Qwen2模型
  • Qwen2ForCausalLM: 带Causal LM head的Qwen2模型 - Qwen2ForSequenceClassification: 带序列分类头的Qwen2模型
  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值