跳转至

主流模型架构全景

站在软硬件协同视角,模型架构不是模块名称列表,而是一组 算子、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

从这张卡片继续推导:

  1. 每层主要 GEMM 的 M/N/K;
  2. Prefill 与 Decode 的 Shape 差异;
  3. 权重、Activation、KV Cache 与临时 Buffer 容量;
  4. 每 Token 的 HBM 流量和跨设备通信;
  5. 哪些算子能融合或使用目标矩阵指令;
  6. 哪些动态行为会导致重编译、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 会减少激活计算比例,却引入路由与跨设备数据交换。

本章阅读顺序

  1. 先读 Transformer 的计算与数据流,掌握当前 AI 系统最常见的块结构。
  2. 选一个实际模型,把配置转换为 Workload Card。
  3. 将主要算子连接到 数据流与 ISA 的 Mapping 模板。
  4. 最后再讨论量化、稀疏或融合能否在目标硬件兑现。

延伸阅读