当前位置: 首页 > news >正文

【LLM】qwen3.5-9b

一、总体架构(三大子系统)

Qwen3_5ForConditionalGeneration │ ┌───────────────────────────┼───────────────────────────┐ ▼ ▼ ▼ Qwen3_5VisionModel Qwen3_5TextModel (Backbone) LM Head (ViT 视觉编码器) (32 层 hybrid decoder) (投影到 vocab) depth=27 blocks full+linear attention tie_word_embed hidden=1152 hidden=4096 patch=16 heads=16

输入数据流

文本 tokens ──┐ │──► 词嵌入 embed_tokens (hidden=4096) ──┐ <image_pad> ──┘ │ ▼ Reference ──► Qwen3_5VisionModel (ViT) ──► out (4096d) Images / Video ├─ Conv3d patch_embed ├─ pos_embed (bilinear interp) ├─ 27 × VisionBlock (full attention) └─ PatchMerger (spatial_merge=2 → 4× 压缩) │ [文本 embed | 视觉 embed replaces <image_pad>] ◄──┘ │ ▼ Qwen3_5TextModel 32 × DecoderLayer (mixture of full & linear attention) │ ▼ RMSNorm → LM head

关键点:视觉侧和文本侧的融合发生在嵌入层,不是 cross-attention。视觉 tokens 被投影到 4096 维后,替换文本序列里的<image_pad>占位 token,之后统一走文本 backbone 的 self-attention。


二、Vision Tower(视觉编码器)细节

Qwen3_5VisionModelmodeling_qwen3_5.pyL1018-1125):

组件结构输出
patch_embedConv3d(3, 1152, kernel=(2,16,16), stride=(2,16,16))(T/2, H/16, W/16) 网格,每 patch 1152d
pos_embed双线性插值的可学习 2D 位置编码 (num_position_embeddings=2304 → 48×48)加到 patch embed 上
rotary_pos_emb2D RoPE,每 head_dim/2 = 36 维送 attention
blocks27 ×Qwen3_5VisionBlock
每块含Qwen3_5VisionAttentionfull attention,16 heads,head_dim=72)+ MLP(GELU,4304 中间维)
(N_patch, 1152)
merger空间 2×2 池化 →LayerNorm → Linear(4608, 4608) → GELU → Linear(4608, 4096)(N_patch/4,4096)

参数量估算

  • Conv3d patch_embed:~1.8M
  • 27 层 vision block:每层 ≈ 15M,合计~405M
  • pos_embed:2304 × 1152 ≈ 2.6M
  • merger:≈ 39M

Vision tower 合计≈ 450M(占 9B 里的约 5%)。

核心事实spatial_merge_size=2temporal_patch_size=2→ 一张 448×448 图像会得到约(448/16/2)² = 196个视觉 token(送进文本 backbone 时)。视频每 2 帧合并一次时间。


三、Text Backbone(文本主干)——hybrid attention 是核心

Qwen3_5TextModelmodeling_qwen3_5.pyL1137):

input: [B, T, 4096] │ ├─ DecoderLayer 0 (linear_attention) ├─ DecoderLayer 1 (linear_attention) ├─ DecoderLayer 2 (linear_attention) ├─ DecoderLayer 3 (full_attention) ← 只有这 8 层能拿到标准 attention weights ├─ DecoderLayer 4 (linear_attention) ├─ DecoderLayer 5 (linear_attention) ├─ DecoderLayer 6 (linear_attention) ├─ DecoderLayer 7 (full_attention) ← ├─ ... ├─ DecoderLayer 31 (full_attention) ← │ └─ RMSNorm → hidden_states

Full attention 层的位置full_attention_interval=4,从第 3 层开始):

[3, 7, 11, 15, 19, 23, 27, 31] 共 8 层

其余24 层都是linear_attentionQwen3_5GatedDeltaNet,一种 state-space 类似 Mamba 的机制)。

3.1 Full Attention 层(Qwen3_5Attention

标准多头 self-attention:

  • hidden_size = 4096
  • num_attention_heads = 16
  • head_dim = 256(注意:这里不是 4096/16=256,是显式配置的)
  • 每 token 前向:Q, K, V ∈ [T, 16, 256]
  • Attention weights 矩阵:[16, T, T]
  • 输出:(hidden_states, attention_weights)

这是我们能提取到 attention weight 的唯一入口

3.2 Linear Attention 层(Qwen3_5GatedDeltaNet

不是标准 QK^T 结构,而是状态空间模型——用 recurrent 累加的方式近似 attention,形式类似 Mamba / RetNet。特征:

  • 显存 O(hidden × head_dim),与序列长度无关
  • 没有明确的 attention weights 矩阵(数学上没有 softmax(QK^T))
  • HuggingFace 里output_attentions=True静默丢弃这些层的返回值

这就是为什么我实验里out.attentions长度只有 8——只有 full_attention 层能提供 attention weights。

3.3 Decoder Layer 前向(Qwen3_5DecoderLayer.forward

residual=hidden_states hidden_states=input_layernorm(hidden_states)# RMSNormiflayer_type=="linear_attention":hidden_states=linear_attn(hidden_states,...)# SSM-styleeliflayer_type=="full_attention":hidden_states,_=self_attn(hidden_states,...)# 标准 attentionhidden_states=residual+hidden_states# residualresidual=hidden_states hidden_states=post_attention_layernorm(hidden_states)hidden_states=mlp(hidden_states)# SwiGLU MLPhidden_states=residual+hidden_states# residual

单层参数:

  • attention (full):Q/K/V/O projection 各 ~4M,合计 ~16M;linear_attention 大致同量级
  • MLP:Linear(4096, 12288) + Linear(12288, 4096)= 50M(3 个 gate 结构,实际约150M
  • 每层合计约170M,32 层 =~5.4B

四、总参数量核对

组件参数量
Vision tower(27 层 ViT)~450M
Text embed_tokens (248320 × 4096)~1.0B
Text backbone (32 层)~5.4B
LM head (tied with embed_tokens)0(复用)
RMSNorm 等~1M
总计~7B ~ 9B(含 embedding 后是 9B)

配置里的 “9B” 主要来自巨大的 vocabulary embedding(248K token)。

http://www.jsqmd.com/news/1144997/

相关文章:

  • 数学建模竞赛模型选择指南:5类算法在母婴数据预测问题中的性能对比
  • 这次终于选对了!盘点2026年普遍认可的AI论文平台
  • 新手小白还搞不懂Python?来这里我将用最直白,最简单,最好绷的语言一步一步教会你Python的下载,环境搭建以及多版本管理
  • 2026WAIC展品地图:大模型、国产算力、人形机器人……8 大类全在这
  • Selenium IDE使用指南三(控制流)
  • 想找优质靠谱公司?看看陕西GEO优化报价,给你满意之选!
  • Claude Code Sonnet 5模型Token成本优化与PR评审实战指南
  • 微信聊天记录删了怎么找回?全套官方恢复方法,无备份也有补救渠道
  • 2026年,揭秘苦荞米背后的专业匠心与健康秘密
  • 许可证管理智能化:AI技术如何赋能高效管理?
  • 简历审查Agent工程化收尾:模型坑位、线程安全、超时兜底与RAG预告
  • AGENT实例-智能体量化交易真相:告别算命,拥抱信息差
  • 4-1word文档的排版
  • 2026婚宴市场巨变:摩卡婚礼,凭什么被北京五星酒店集体选择?
  • 《用AI做公众号流量主》第1课:为什么是公众号流量主
  • 第五章第二节:循环结构(while/do-while/for)
  • OpenClaw龙虾ai Windows、macOS部署教程 内置运行环境一键安装流程
  • Python scikit-learn 1.4 实战:5种相似度算法在推荐系统中的性能对比
  • 有没有不泄露文稿、改写自然的AI论文降重?筛选标准是什么?
  • 医美仪器配件采购:兼顾性价比与量产稳定性选型思路
  • 儿童面部彩绘怎么选?从成分到效果的全方位指南
  • 【单片机毕业设计】基于 STM32/51 单片机的 8 路病床无线呼叫对讲系统设计,基于 NRF24L01 的病房智能呼叫与输液监测装置开发(020301)
  • 玩转Rust高级应用 怎么理解在标准库中,有一个std::intrinsics模块,它里面包含了一系列的编译器内置函数
  • 3分钟解决XGP存档迁移难题:Python脚本实现游戏进度无损转移
  • 复杂网络节点挖掘 3 类方法对比:中心性、影响力与社区结构,5 大指标实战解析
  • Windows和Office智能激活终极指南:5分钟完成永久激活
  • 沟通避坑指南,最经典的沟通类书籍推荐
  • 压缩与解压缩
  • C++ 入门学习经验 14——结构体上:把多个变量打包成一个整体
  • 鲁棒管模型预测控制实战手册:MATLAB实现与扰动处理深度解析