本文基于对 vLLM 源码的深入阅读,以 Llama 3 为例,通过追踪推理过程中每一步的张量维度变化,系统性地讲解了大模型从 Tokenize 到 Sampling 的完整高效推理流程。
📝 详细摘要
本文是作者花费两个月业余时间深入阅读 vLLM 源码后的总结。文章聚焦于 Decoder-Only 架构的 LLM,以 Llama 3 为例,详细拆解了从 Tokenize、Embedding Lookup、Transformer Block(Attention 与 FFN)到 LM Head 和 Sampling 的完整推理流程。核心亮点在于,作者在每个计算环节都标注了 Tensor 的维度变化,并深入解释了 Continuous Batching 和 Paged Attention 这两个关键技术如何提升推理效率。文章还探讨了 Prefill 和 Decode 阶段在计算与访存上的本质差异,以及 FlashAttention 如何通过 Online Softmax 打破内存墙。最后,文章总结了 MLP 层是计算大头、Attention 层是访存大头的结论,并附带了模型配置参数和运行时变量表,为 AI Infra 从业者提供了扎实的入门参考。
💡 主要观点
- Continuous Batching 将调度粒度从请求级下沉到 Token 级,显著提升 GPU 利用率。 通过 Token 级别的调度,多个请求可以复用模型权重,将 QKV_Proj、O_Proj、MLP 等操作从矩阵-向量乘法(GEMV)变回矩阵乘法(GEMM),从而摊薄读取权重的显存开销。
💬 文章金句
- 有没有可能将调度的从 request level 下沉到 token level 呢? 恭喜你发明了 continuous batching。
- 那每个请求的 KV Cache 显存申请是不是应该也是 token level,不要一次申请所有的显存。搞一个地址数组(block table)来维护每个请求的 KV Cache 地址就好? 恭喜你发明了 Paged Attention。
- 相比于因显存碎片导致的 OOM,牺牲少部分的访存带宽换取整个系统吞吐量(Throughput)的大幅跃升,在 LLM 推理的整体逻辑中是划算的。
- 不要推翻重来,而是在原有的基础上学习'修正值'(Delta)。它是'Scaling Law'在架构上的物理基础。
- 单从推理来看,大模型的原理其实真没那么高深莫测,最难的数学公式怕是要数 RoPE 了。但是 AI Infra 的东西真的多~~ 根本学不完。
📊 文章信息
AI 初评:90
来源:腾讯技术工程
作者:腾讯技术工程
分类:人工智能
语言:中文
阅读时间:43 分钟
字数:10641
标签: 大模型推理, vLLM, Continuous Batching, Paged Attention, FlashAttention