参考
参考资料
这门课建立在什么之上。论文建议在读完对应章节之后再看;先自己把那个想法拙劣地实现一遍,再读会轻松得多。
论文
vLLM 那篇论文。提出 PagedAttention,并量化了它消除掉的碎片。
- Orca: A Distributed Serving System for Transformer-Based Generative ModelsYu et al., OSDI 2022S09S10
迭代级调度与选择性批处理,也就是连续批处理的源头。
分块加在线 softmax。后续版本(FA-2、FA-3)改进了工作划分并加入 FP8。
FlashAttention 所依赖的那条递推式,四年前就因另一个原因被发表了。
分块 prefill 与无停顿批处理。
证明投机能精确保持目标分布的那份拒绝采样论证。
建立在目标模型自身隐状态上的草稿头,以及树形候选验证。
训练后量化的三大流派:误差补偿、显著通道、离群值迁移。
- GQA: Training Generalized Multi-Query Transformer Models from Multi-Head CheckpointsAinslie et al., 2023S03S05
多头与多查询注意力之间的折中,如今每个现代模型都在用。
RoPE。哪怕只是为了搞清楚为什么两种实现布局都叫同一个名字,也值得一读。
- Megatron-LM: Training Multi-Billion Parameter Language Models Using Model ParallelismShoeybi et al., 2019S17
先按列再按行切分,每个子层一次 all-reduce。为训练而写,推理原样沿用。
prefill/decode 分离部署,以及由此衍生出的以 KV 缓存为中心的架构。
服务规模上的稀疏 MoE,包括无辅助损失的负载均衡方案。
值得一读的引擎
调度器、KV 缓存管理器、模型执行器、投机解码:本课程的大部分内容,以生产形态存在。
把前缀缓存和分配器合成一棵基数树;跳跃解码。
本地生态其余部分都要读的那套量化格式。
mmap 的 GGUF、融合 dequant+dot、在线 softmax、语法约束 JSON,在树莓派上常驻内存只占 45 MB——这是约 2k 上下文下的 KV 缓存,权重仍由文件支撑。
Lloyd-Max 码本、随机 Hadamard 变换、覆盖近期 token 的全精度窗口。
一个 CLI:拉取、聊天、服务。在 Apple Silicon 和 GB10 上支持分页 KV、连续批处理和前缀缓存。
把分页、GQA 和 flash 注意力合进一个库,多个引擎在用。
把 schema 和语法编译成 token 级掩码。
文章
对一个生产引擎内部机制最清晰的端到端讲解。
兼作设计文档的发版说明,尤其是 v1 引擎那一篇。
本课程里那些 roofline 数字的来源,从第一性原理推导而来。
本课程是教学用的重新实现,与上述任何项目均无隶属关系。当某一章把某个行为归因于某个具体引擎时,请去核对当前源码:这个领域变化很快,默认值会随版本改变。