专栏算法工具链【手撕大模型】QWen3结构解析

【手撕大模型】QWen3结构解析

momo(社区版)2025-09-26
136
0

简介

25/4/29发布的Qwen3系列模型,共8个模型,其中六个Dense模型分别为,Qwen3-32B、Qwen3-14B、Qwen3-8B、Qwen3-4B、Qwen3-1.7B 和 Qwen3-0.6B。另外两个MoE模型分别为,Qwen3-235B-A22B,拥有 2350 多亿总参数和 220 多亿激活参数的大模型,以及Qwen3-30B-A3B,拥有约 300 亿总参数和 30 亿激活参数的小型 MoE 模型。

Qwen3-2507

在社区的反馈以及进一步研究的启发下,仅指令(Instruct-only)和仅思考(Thinking-only)模型回归啦!成果就是通义千问 3-2507(Qwen3-2507),three sizes, 235B-A22B, 30B-A3B, and 4B.: Qwen3-Instruct-2507具备以下特点:
  • 泛化能力显著提升,涵盖 指令遵循、逻辑推理、文本理解、数学、科学、编码以及工具使用。

  • 长尾知识覆盖在多种语言上大幅增强。

  • 在主观和开放式任务中与用户偏好的契合度明显提高,能够生成更有用的回复和更高质量的文本。

  • 在 25.6 万长上下文理解方面能力增强,可扩展至 100 万。

Qwen3-Thinking-2507具备以下特点:

  • 推理任务性能显著提升,涵盖逻辑推理、数学、科学、编码以及通常需要人类专业知识的学术基准测试——在开源thinking模型中取得了领先的成果。

  • 泛化能力显著增强,如指令遵循、工具使用、文本生成以及与人类偏好的一致性。

  • 256K长上下文理解能力得到强化,可扩展至1M。

Qwen3-2504(Qwen3)

  • 全尺寸稠密与混合专家模型:0.6B, 1.7B, 4B, 8B, 14B, 32B and 30B-A3B, 235B-A22B

  • 支持在**思考模式**(用于复杂逻辑推理、数学和编码)和 非思考模式 (用于高效通用对话)之间**无缝切换**,确保在各种场景下的最佳性能。

  • 显著增强的推理能力,在数学、代码生成和常识逻辑推理方面超越了之前的 QwQ(在思考模式下)和 Qwen2.5 指令模型(在非思考模式下)。

  • 卓越的人类偏好对齐,在创意写作、角色扮演、多轮对话和指令跟随方面表现出色,提供更自然、更吸引人和更具沉浸感的对话体验。

  • 擅长智能体能力,可以在思考和非思考模式下精确集成外部工具,在复杂的基于代理的任务中在开源模型中表现领先。

  • 支持 100 多种语言和方言,具有强大的多语言理解、推理、指令跟随和生成能力。

Qwen模型结构解析

本节以qwen3_moe代码为例,解析一下结构。

代码路径:https://github.com/huggingface/transformers/blob/main/src/transformers/models/qwen3_moe/modeling_qwen3_moe.py

配置文件:https://github.com/huggingface/transformers/blob/main/src/transformers/models/qwen3_moe/configuration_qwen3_moe.py

总体网络结构

Qwen3主要由四个部分组成:

  • embed_tokens:嵌入层。这是模型处理输入的第一步。它的核心功能是将输入的离散文本符号(通常是经过 Tokenizer 处理后的 Token ID)转换为连续的、稠密的向量表示(称为嵌入向量或 Embeddings)。

  • Decoder layers:多个堆叠的解码器。这是模型的核心计算引擎,负责理解输入序列的上下文、提取特征并进行深度信息处理。模型的能力(如理解、推理、生成)主要源于这些层。

  • norm:归一化层。处理完毕后,对最终的隐藏状态 (Hidden States) 进行最后一次归一化。

  • rotary_emb:旋转位置编码。为模型提供关于序列中 Token 位置的信息。标准 Transformer 的自注意力机制本身是排列不变的(即打乱输入顺序可能得到相同结果),因此需要显式地注入位置信息。

 

 

 

总体网络结构需要结合Qwen3MoeModel类来看,Qwen3MoeModel 是基于混合专家(MoE)架构的语言模型,继承自 Qwen3MoePreTrainedModel。具体代码注解如下:

Qwen3MoeDecoderLayer解析

Qwen3MoeDecoderLayer的结构图如下所示:

下面逐个对上图中的block进行解释。

Qwen3MoeRMSNorm

  • 功能:实现 RMS 归一化,通过对输入特征的均方根进行缩放,稳定数值分布,类似 LayerNorm 但计算更轻量(不含均值中心化)。

  • 初始化:定义可学习的缩放权重weight(维度与hidden_size一致)和数值稳定参数eps(避免除零)。
  • 前向传播:

  • 装饰器:@use_kernel_forward_from_hub("RMSNorm")表示从 hub 加载优化的 RMSNorm 内核实现(可能是高效的 C++/CUDA 算子),提升计算速度。

Qwen3MoeAttention

Qwen3的注意力机制在Qwen2的基础上进行了微调,在Q、K的线性投影后面分别加入了一个归一化层,有助于提高稳定性。

Qwen3MoeSparseMoeBlock

我们从Qwen3的Transformer的实现来学习下优化方式。

将传统Transformer模型中的全连接MLP层替换为新型的稀疏专家模块(Qwen3MoeSparseMoeBlock)。该模块由以下两个关键组件构成:

  1. 包含num_experts个轻量级专家网络(Qwen3MoeMLP)的并行计算单元;

  2. 基于注意力机制的路由网络(gate)。在计算过程中,路由网络通过动态决策机制为每个输入Token生成路由决策,筛选出匹配度最高的top_k个专家节点。随后,系统将根据路由权重对选定专家的计算结果进行加权融合,最终生成该隐层的表征输出。
那么同样我们对比DeepSeekMOE,Qwen3MOE有两个点的改变:1)没有shared expert。2.优化了MLP架构,变为Qwen3MoeSparseMoeBlock。

https://zhuanlan.zhihu.com/p/1902461213255925825

代码解析:

QWen3部署实战

你可以在 Hugging Face Hub 的 Qwen3 collection 或 ModelScope 的 Qwen3 collection 中获取 Qwen3 模型。

huggingface中下载的文件:

文件说明

  • config.json

    • 模型的结构配置文件,比如隐藏层维度、层数、注意力头数、激活函数等。

    • AutoModelForCausalLM.from_pretrained() 会先读取它,决定用哪种架构初始化模型。
  • generation_config.json

    • 文本生成时的默认参数,例如 max_new_tokens, temperature, top_p, do_sample 等。
    • 如果你用 model.generate(),没手动传参数,就会用这里的默认值。
  • merges.txt

    • BPE (Byte Pair Encoding) 分词的合并规则文件。

    • 跟 vocab.json 一起定义了 tokenizer 的词表。
  • vocab.json

    • tokenizer 的词表文件,存储了 token 到 ID 的映射。

    • 例如 "hello" -> 1234。
  • tokenizer.json

    • Hugging Face 的标准 tokenizer 文件,包含 vocab 和 merges 的完整定义。

    • 用 AutoTokenizer.from_pretrained() 会加载它。
  • tokenizer_config.json

    • Tokenizer 的额外参数,比如是否大小写敏感、padding/truncation 策略等。

  • model-00001-of-00003.safetensors, model-00002-of-00003.safetensors, model-00003-of-00003.safetensors
    • 模型的权重文件,分成了多个分片,每个几 GB。

    • safetensors 是一种比 pytorch_model.bin 更安全和高效的格式。
  • model.safetensors.index.json

    • 权重索引文件,指明每个参数在分片文件中的位置。

    • 加载模型时,transformers 会先读这个文件,再去对应分片里加载。

将huggingface中的文件全部下载到 "./Qwen/Qwen3-4B-Thinking-2507"文件夹

在docker环境中安装(torch 2.3.0):

部署代码:

 

参考链接

https://github.com/QwenLM/Qwen3

https://zhuanlan.zhihu.com/p/1901014191235633835

https://zhuanlan.zhihu.com/p/1902019286836449827

https://qwen.readthedocs.io/zh-cn/latest/

https://github.com/huggingface/transformers

算法工具链
社区征文技术深度解析前沿技术
评论0
0/1000