Skip to content

模型架构

本章深入解读大语言模型的核心架构,从基础的 Transformer 出发,逐步演进到 GPT、Llama 和 DeepSeek-V3。

架构演进路线

Transformer (2017) → GPT (2018) → Llama (2023) → DeepSeek-V3 (2024)
     │                   │              │                │
  Encoder-Decoder    Decoder-Only     开源优化        MoE + MLA

章节导航

主题核心内容关键创新
Transformer完整的 Encoder-Decoder 架构Self-Attention、位置编码
注意力机制注意力的各种变体与优化Multi-Head、Flash Attention
分词器文本到 Token 的转换BPE、SentencePiece
解码策略从概率分布生成文本Top-k/Top-p、Temperature
GPT 架构Decoder-Only 语言模型Pre-Norm、KV Cache
Llama 架构Meta 开源大模型系列RoPE、RMSNorm、GQA
DeepSeek-V3 架构国产高性能大模型MoE、MLA、Multi-Token Prediction

学习建议

建议按顺序阅读:先理解 Transformer 和注意力机制的基础,再看各架构如何在此基础上创新。分词器和解码策略可以穿插阅读。

详细内容索引

attention.md — 注意力机制 (1014 lines)

  • 在大模型体系中的位置 (L11)
  • Scaled Dot-Product Attention (L33)
    • 核心公式 (L35)
    • 为什么要除以 dk?——方差证明 (L47)
    • 代码实现 (L85)
  • Multi-Head Attention (MHA) (L115)
    • 核心思想 (L117)
    • 完整过程:拆分 → 并行计算 → 拼接 (L131)
  • Multi-Query Attention (MQA) 与 Grouped-Query Attention (GQA) (L168)
    • 演进动机 (L170)
    • MQA:所有 Q 头共享 1 组 KV (L176)
    • GQA:分组共享 KV(Llama 2/3 采用) (L207)
  • Multi-Latent Attention (MLA) (L249)
    • DeepSeek 的创新思路 (L251)
    • 代码实现 (L267)
    • 矩阵吸收技巧(推理优化) (L311)
  • Flash Attention (L329)
    • GPU 内存层次:SRAM vs HBM (L331)
    • 标准 Attention 的 IO 瓶颈 (L338)
    • Flash Attention 的分块策略 + Online Softmax (L348)
  • Flash Attention 深度实现 (L437)
    • 核心算法:Online Softmax 与分块计算 (L439)
    • 前向传播伪代码 (L459)
    • PyTorch 实现 (L485)
    • 反向传播:重计算 vs 存储 (L575)
    • Flash Attention 2 的优化 (L596)
    • IO 复杂度分析 (L631)
    • 面试考点:为什么 Flash Attention 更快但 FLOPs 相同? (L653)
    • Online Softmax:从两遍扫描到一遍扫描 (L664)
    • Flash Attention 反向传播 (L734)
    • 用 PyTorch Autograd 验证正确性 (L847)
  • Tensor Product Attention (TPA) (L872)
    • 核心思想 (L874)
    • 数学公式 (L878)
    • 简化版代码实现 (L894)
    • TPA vs 标准 Attention 对比 (L944)
  • 注意力变体对比 (L956)
  • 苏格拉底时刻 (L972)
  • 常见问题 & 面试考点 (L986)
  • 推荐资源 (L1005)

decoding.md — 解码策略 (332 lines)

  • 在大模型体系中的位置 (L11)
  • 核心概念 (L20)
    • Greedy Search(贪心搜索) (L22)
    • Beam Search(束搜索) (L44)
    • Temperature(温度参数) (L65)
    • Top-k Sampling(Top-k 采样) (L81)
    • Top-p / Nucleus Sampling(核采样) (L96)
    • 各策略对比总结 (L122)
    • 进阶话题:重复惩罚与停止条件 (L133)
  • 代码实战 (L141)
    • 统一的采样框架 (L145)
    • Beam Search 从零实现 (L196)
    • 完整运行示例:对比四种策略 (L260)
  • 苏格拉底时刻 (L308)
  • 常见问题 & 面试考点 (L318)
  • 推荐资源 (L325)

deepseek.md — DeepSeek-V3 架构 (423 lines)

  • 在大模型体系中的位置 (L11)
  • 核心概念 (L23)
    • MoE 混合专家(Mixture of Experts) (L25)
    • 负载均衡(Load Balance) (L121)
    • MLA 多头潜在注意力(Multi-head Latent Attention) (L149)
    • Multi-Token Prediction(多 Token 预测) (L229)
  • 完整 DeepSeek-V3 Block (L346)
  • 苏格拉底时刻 (L396)
  • 常见问题 & 面试考点 (L406)
  • 推荐资源 (L415)

flow-matching.md — Flow Matching (499 lines)

  • 在大模型体系中的位置 (L13)
    1. 从 Diffusion 到 Flow Matching (L35)
    • 1.1 Diffusion 回顾 (L37)
    • 1.2 Flow Matching 的核心思想 (L74)
    • 1.3 关键区别对比 (L96)
    1. 数学基础 (L109)
    • 2.1 常微分方程(ODE) (L111)
    • 2.2 概率路径 (L125)
    • 2.3 速度场(Velocity Field) (L146)
    1. Conditional Flow Matching (CFM) (L166)
    • 3.1 为什么需要 "Conditional"? (L168)
    • 3.2 CFM 目标函数 (L174)
    • 3.3 训练算法 (L200)
    • 3.4 采样算法 (L216)
    1. Rectified Flow (L231)
    • 4.1 直线路径的优势 (L233)
    • 4.2 Reflow 操作 (L248)
    • 4.3 一步生成的可能性 (L258)
    1. 代码实现 (L272)
    • 5.1 基础 Flow Matching(2D 演示) (L274)
    • 5.2 Conditional Flow Matching(带条件) (L354)
    1. 在 LLM 中的应用 (L413)
    • 6.1 从连续到离散:离散 Flow Matching (L415)
    • 6.2 与自回归 LLM 的对比 (L443)
    • 6.3 未来展望 (L453)
  • 苏格拉底时刻 (L464)
  • 推荐资源 (L488)

gpt.md — GPT 架构 (464 lines)

  • 在大模型体系中的位置 (L11)
  • 核心概念 (L22)
    • Decoder-Only vs Encoder-Decoder (L24)
    • GELU 激活函数 (L62)
    • Pre-Normalization(预归一化) (L110)
    • KV Cache 原理与实现 (L182)
  • 代码实战:完整 GPT-2 模型 (L287)
    • Perplexity(困惑度)计算 (L405)
  • 苏格拉底时刻 (L441)
  • 常见问题 & 面试考点 (L450)
  • 推荐资源 (L457)

llama.md — Llama 架构 (505 lines)

  • 在大模型体系中的位置 (L11)
  • 核心概念 (L24)
    • RoPE 旋转位置编码 (L26)
    • 长上下文扩展:从 4K 到 128K+ (L91)
    • RMSNorm(对比 LayerNorm) (L251)
    • GQA 分组查询注意力 (L293)
    • SwiGLU 门控激活 (L386)
  • 完整 Llama Block (L418)
  • 苏格拉底时刻 (L480)
  • 常见问题 & 面试考点 (L490)
  • 推荐资源 (L497)

scaling-laws.md — Scaling Laws (289 lines)

  • 在大模型体系中的位置 (L11)
  • 核心概念:幂律关系 (L25)
    • 基本形式 (L27)
    • 计算量公式 (L39)
  • Kaplan Scaling Laws (2020) (L57)
    • 来源 (L59)
    • 核心发现 (L63)
    • Kaplan 的经验公式 (L69)
  • Chinchilla Scaling Laws (2022) (L81)
    • DeepMind 的挑战 (L83)
    • 核心发现 (L87)
    • Chinchilla 最优比例 (L97)
    • Chinchilla vs GPT-3 (L108)
    • 为什么 Kaplan 和 Chinchilla 结论不同? (L120)
  • 后 Chinchilla 时代:推理最优 (L133)
    • 过训练(Over-training)策略 (L135)
    • DeepSeek 的 Scaling Laws 研究 (L154)
  • 涌现能力(Emergent Abilities) (L162)
    • 什么是涌现 (L164)
    • 涌现是真的吗? (L173)
  • 实用意义 (L189)
    • 如何估算训练成本 (L191)
    • 用小模型预测大模型性能 (L233)
  • 苏格拉底时刻 (L260)
  • 常见问题 & 面试考点 (L270)
  • 推荐资源 (L282)

tokenization.md — 分词器 (280 lines)

  • 在大模型体系中的位置 (L11)
  • 核心概念 (L19)
    • 为什么需要分词 (L21)
    • 分词粒度:字符、词、子词 (L27)
    • BPE 算法(Byte Pair Encoding) (L37)
    • WordPiece (L76)
    • SentencePiece (L87)
    • 中文分词的特殊挑战 (L99)
  • 代码实战 (L109)
    • 第一步:统计相邻对频率 (L115)
    • 第二步:执行合并 (L127)
    • 第三步:BPE 训练 (L145)
    • 第四步:编码(文本 → Token ID 序列) (L196)
    • 第五步:解码(Token ID 序列 → 文本) (L210)
    • 完整运行示例 (L219)
  • 苏格拉底时刻 (L256)
  • 常见问题 & 面试考点 (L266)
  • 推荐资源 (L273)

transformer.md — Transformer 架构 (523 lines)

  • 在大模型体系中的位置 (L13)
  • 从宏观到微观:Transformer 的整体结构 (L25)
  • 自注意力机制(Self-Attention) (L51)
    • 从直觉出发 (L53)
    • 数学推导 (L63)
    • 为什么要除以 dk?——方差分析 (L82)
    • 注意力实现代码 (L91)
  • 多头注意力(Multi-Head Attention) (L141)
    • 为什么需要多头? (L143)
    • 多头如何工作? (L147)
    • 多头注意力实现 (L157)
  • 前馈神经网络(Feed-Forward Network) (L206)
    • 结构 (L210)
    • 实现 (L219)
  • 残差连接与 Layer Normalization (L237)
    • 为什么需要残差连接? (L239)
    • LayerNorm vs BatchNorm (L245)
    • LayerNorm 实现 (L257)
    • Pre-Norm vs Post-Norm (L279)
  • 位置编码(Positional Encoding) (L288)
    • 为什么需要位置编码? (L290)
    • 正弦余弦编码 (L296)
    • 位置编码实现 (L311)
    • 位置编码的使用 (L336)
  • 完整的 Transformer 实现 (L366)
    • Encoder Block (L370)
    • Decoder Block (L392)
    • 完整 Transformer (L419)
  • 苏格拉底时刻 (L465)
  • 常见问题 & 面试考点 (L481)
  • 推荐资源 (L515)