专栏名称: GiantPandaCV
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaCV  ·  使用NCU和Cursor ... ·  2 天前  
今天看啥  ›  专栏  ›  GiantPandaCV

[Prefill优化]图解vLLM Prefix Prefill Triton Kernel

GiantPandaCV  · 公众号  · 3D  · 2024-06-14 10:31
    

主要观点总结

本文详细讲解了vLLM Prefix Prefill Kernel的核心逻辑,包括Triton Kernel编程的入门知识、Prefix Prefill Kernel与Attention Kernel的区别、Tiling分块策略、Kernel调用逻辑(单测)、如何确认有多少个Token被Prefix Cache命中、通用Head Sizes支持、MQA/GQA支持以及Triton Kernel源码解析。

关键观点总结

关键观点1: Triton Kernel编程极简入门

介绍了Triton Kernel编程的基本概念,降低了CUDA Kernel编写的难度,并自动化了优化策略,如内存事务合并、SRAM分配和管理、流水线优化等。

关键观点2: Prefix Prefill Kernel与Attention Kernel区别

分析了Prefix Prefill Kernel在处理被Prefix Cache命中的KV Cache和未被命中的New Tokens时的区别,并解释了为什么需要使用新的kernel来处理这种情况。

关键观点3: Tiling分块策略

描述了Prefix Prefill Kernel中的分块策略,包括BLOCK_M、BLOCK_N和max_input_len/BLOCK,并展示了分块布局。

关键观点4: Kernel调用逻辑(单测)

详细说明了_fwd_kernel_alibi源码,并给出了单测代码,展示了如何调用Prefix Prefill Kernel。

关键观点5: 如何确认有多少个Token被Prefix Cache命中

介绍了在context_attention_fwd中加入代码来确认被Prefix Cache命中的Token数量。

关键观点6: 通用Head Sizes支持

分析了Prefix Prefill Kernel对通用head size的支持,包括load/store Mask和MQA/GQA处理。

关键观点7: MQA/GQA支持

详细解释了Prefix Prefill Kernel如何支持MQA/GQA,包括计算实际使用到的kv head的索引。


文章预览

作者丨DefTruth 来源丨https://zhuanlan.zhihu.com/p/695799736 编辑丨GiantPandaCV 0x00 前言 在上一篇Prefill优化的文章中,已经详细讲解了vLLM Automatic Prefix Caching(Hash RadixAttention)的原理和Cache调度的实现,包括SGLang RadixAttention原理,并且结合图解和代码,详细分析了vLLM中的Hash RadixAttention实现。vLLM中的Hash RadixAttention内容包括:Hash RadixAttention、Hash Prefix Tree、Prefix/Generate 阶段Hash码处理、Prefix + Generated KV Caching的调度逻辑、边界情况思考、vLLM Automatic Prefix Caching在多轮对话中的应用分析以及代码应用实践。本篇,继续深入,讲解Automatic Prefix Caching中用到的Triton Based Prefix Prefill Kernel。 推荐先阅读完上一篇的Automatic Prefix Caching原理,再来阅读本篇的kernel解读。 DefTruth:[Prefill优化][万字] 原理 & 图解vLLM Automatic Prefix Cache(RadixAttention): 首Token时延优化 https://zhuanlan.zhihu.com/p/693556 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览