主流模型架构全景¶
站在软硬件协同视角,模型架构不是模块名称列表,而是一组 算子、Tensor Shape、数据依赖、精度和动态行为。它们共同决定计算量、数据移动、可并行度与编译难度。
从模型结构到硬件负载¶
flowchart LR
ARCH[模型架构] --> OPS[算子集合<br/>GEMM / Conv / Attention / Norm]
ARCH --> SHAPE[Tensor Shape<br/>Batch / Token / Channel]
ARCH --> DEP[依赖与动态性<br/>自回归 / Routing / Control]
OPS --> MAP[数据流与 Mapping]
SHAPE --> MAP
DEP --> MAP
MAP --> HW[计算 / 存储 / 互连需求] 主要家族¶
| 模型家族 | 核心计算 | 复用/依赖特征 | 常见硬件瓶颈 |
|---|---|---|---|
| CNN | Conv/GEMM、Activation、Pooling | 局部窗口和权重复用高,Shape 较规则 | 小 Batch 利用率、Layout 转换、片上 Buffer |
| Encoder Transformer | 双向 Attention + MLP | 全序列并行,Attention 随序列长度二次增长 | 长序列中间量与 HBM 流量 |
| Encoder–Decoder Transformer | Encoder + Cross Attention + Decoder | Encoder 可并行,Decoder 自回归 | KV Cache、Cross Attention 与 Decode 延迟 |
| Decoder-only LLM | Causal Attention + MLP | Prefill 并行,Decode 有 Token 级依赖 | 权重/KV 带宽、动态 Batch、长上下文 |
| MoE Transformer | Attention + Router + 稀疏 Expert MLP | 每 Token 只激活少量 Expert,产生动态路由 | All-to-All、负载不均、Expert 权重访问 |
| Diffusion / DiT | 多步去噪中的 U-Net 或 Transformer | 多个时间步重复主干,Activation 规模大 | 端到端迭代次数、Attention/Conv 与显存 |
| 多模态模型 | 视觉/音频 Encoder + Projector + LLM | 模态 Shape 差异大,常有拼接或 Cross Attention | 预处理、动态分辨率、多个 Backend 间转换 |
用算子构成而不是参数量理解模型¶
两个参数量相近的模型可能有完全不同的性能:
- 更宽的层产生更大的 GEMM,可能更容易利用矩阵单元;
- 更深的层增加顺序 Kernel Launch 和同步,单 Token Decode 更敏感;
- GQA/MQA 减少 KV Head,显著改变 KV Cache 容量与带宽;
- MoE 增加总参数但每 Token 只激活部分 Expert,计算量和通信模式不再由总参数直接决定;
- 长上下文把 Attention 与 KV Cache 的成本推高,即使模型参数不变。
建立模型 Workload Card¶
每个新增模型不先抄配置表,而先生成一张可计算的卡片:
architecture: decoder_only_transformer
layers: L
hidden_size: D
ffn_intermediate: I
attention:
query_heads: Hq
kv_heads: Hkv
head_dim: Dh
context:
prompt_tokens: Tprompt
output_tokens: Tdecode
precision:
weight: fp16
activation: fp16
kv_cache: fp16
dynamic_behavior:
autoregressive: true
moe_top_k: null
从这张卡片继续推导:
- 每层主要 GEMM 的
M/N/K; - Prefill 与 Decode 的 Shape 差异;
- 权重、Activation、KV Cache 与临时 Buffer 容量;
- 每 Token 的 HBM 流量和跨设备通信;
- 哪些算子能融合或使用目标矩阵指令;
- 哪些动态行为会导致重编译、Padding 或负载不均。
模型—编译器—硬件联动¶
flowchart TB
M[模型改动] --> E{改变了什么?}
E -->|Head / Hidden / FFN| S[矩阵 Shape 与 Tile]
E -->|MHA → GQA/MQA| K[KV Cache 容量与带宽]
E -->|Dense → MoE| R[Routing 与通信]
E -->|Norm / Activation| F[融合边界与数值语义]
S --> C[编译与 Kernel 选择]
K --> C
R --> C
F --> C
C --> H[利用率 / 带宽 / 延迟 / 能耗] 模型侧的“算法等价”不保证系统侧等价。例如把 MHA 换成 GQA 不只是减少参数,也会改变 Decode 时每 Token 读取的 KV 数据量;把 Dense FFN 换成 MoE 会减少激活计算比例,却引入路由与跨设备数据交换。
本章阅读顺序¶
- 先读 Transformer 的计算与数据流,掌握当前 AI 系统最常见的块结构。
- 选一个实际模型,把配置转换为 Workload Card。
- 将主要算子连接到 数据流与 ISA 的 Mapping 模板。
- 最后再讨论量化、稀疏或融合能否在目标硬件兑现。