CUDA 算子工程:手写 FlashAttention v2 之路

附录 C · 与 vLLM·Transformer 衔接路径

作者 杨艺韬 · 1,307 字

附录 C · 与 vLLM·Transformer 衔接路径

C.1 三本书的分层

LLM 系统工程是一个三层栈:

flowchart TB
  subgraph App [应用层]
    A1[LangGraph / Agent]
    A2[RAG / 工具使用]
  end
  subgraph Engine [引擎层 · 《vLLM 内核探秘》]
    E1[PagedAttention]
    E2[Scheduler]
    E3[KV Cache 管理]
    E4[多卡通信]
  end
  subgraph Model [模型层 · 《Transformer 解剖》]
    M1[Attention 数学]
    M2[Position Encoding]
    M3[FFN / MoE]
    M4[LayerNorm]
  end
  subgraph Kernel [Kernel 层 · 本书]
    K1[GEMM]
    K2[FlashAttention]
    K3[量化 Kernel]
    K4[元素级算子]
  end
  App --> Engine --> Model --> Kernel

每一层的 kernel 都建立在下一层之上:

C.2 Transformer 解剖:模型层的视角

《Transformer 解剖:从 Attention 到推理系统》(19 章)回答的问题是:模型本身是怎么运作的?

它的章节与本书的对应关系:

Transformer 章节 主题 对应到本书
第 2 章 Self-Attention Q/K/V 的数学推导 本书第 14 章(attention 访存)
第 3 章 Multi-Head 头维度的并行 本书第 15 章(head 维 grid 划分)
第 4 章 Position Encoding RoPE 的旋转 本书第 8 章(element-wise fusion)
第 6 章 LayerNorm 归一化的意义 本书第 7 章(kernel 实现)
第 12 章 KV Cache 推理时的状态 本书第 9 章(量化 KV Cache)
第 13-14 章 Flash Attention 论文阅读 本书第 14-18 章(手写 FA2)
第 16 章 Quantization INT8/INT4 算法 本书第 9 章(量化 kernel 实现)

阅读建议:

C.3 vLLM 内核探秘:引擎层的视角

《vLLM 推理内核深度解析》(19 章)回答的问题是:怎么把模型跑得既快又稳?

它的章节与本书的对应关系:

vLLM 章节 主题 对应到本书
第 4 章 PagedAttention KV cache 分页管理 本书第 18 章(persistent kernel)
第 5 章 KV Cache 多 batch 的 KV 排布 本书第 4 章(内存层级)
第 8 章 Model Runner CUDA Graph 集成 本书附录 A(Graph)
第 9 章 采样 logits 处理 本书第 8 章(element-wise)
第 10 章 前缀缓存 长 prompt 优化 本书第 4 章(L2 cache)
第 13 章 量化引擎 AWQ/GPTQ/Marlin 本书第 9 章(量化 kernel)
第 14 章 张量并行 多卡 GEMM 本书第 13 章(CUTLASS)

阅读建议:

C.4 推荐阅读顺序

针对不同背景的读者:

路径 A:完全新手(从未碰 LLM)

  1. 《动手学深度学习》前 5 章(PyTorch 基础)
  2. 《Transformer 解剖》第 1-12 章(模型层)
  3. 本书第 1-9 章(GPU 基础 + 小算子)
  4. 《Transformer 解剖》第 13-19 章(推理系统)
  5. 本书第 10-21 章(GEMM + FA2 + 性能工程)
  6. 《vLLM 内核探秘》全部

路径 B:会用 PyTorch 但不懂底层

  1. 《Transformer 解剖》第 1-10 章(建立模型直觉)
  2. 本书全部(Kernel 层完整训练)
  3. 《vLLM 内核探秘》第 1-10 章(推理工程)

路径 C:已经写过 CUDA,想转向 LLM

  1. 本书第 1-2 章(Hopper 架构补课)
  2. 本书第 14-18 章(FA2 实战)
  3. 《Transformer 解剖》第 13-14 章(FA 论文导读)
  4. 本书第 9 章(量化)
  5. 《vLLM 内核探秘》第 4 章(PagedAttention)

路径 D:已经在做 LLM 推理优化

直接精读:

C.5 推荐工程实践项目

如果读者想在读完本书后做一个能放在简历上的项目:

入门项目(1-2 周)

中级项目(1-2 月)

高级项目(3-6 月)

C.6 结语

CUDA 算子工程是少数几个门槛极高、回报极大的工程领域。

门槛在于硬件细节——Tensor Core 的 fragment layout、TMA 的 swizzle 模式、SMEM 的 bank 排布、L2 的 set-associative cache 行为——这些细节没有捷径,只能一行行硬啃。

回报在于一行 kernel 代码可能让 1 万张卡的集群利用率提升 20%——那就是几亿美元的算力。

这本书希望读者读完后,下一次看到 cuBLAS / CUTLASS / FlashAttention 的源码,眼里看到的不再是密密麻麻的模板和 PTX,而是一个个清晰的"为什么这么写"的工程决定。

那时这本书就达到了它的目的。

祝读者在 GPU 工程的路上走得远。