专栏名称: GiantPandaLLM
专注于大语言模型,CUDA,编译器,工程部署和优化等多个方向技术分享。我们不仅坚持原创,也规范转载知乎大佬们的高质量博文。希望在传播知识、分享知识的同时能够启发你,在人类通往AGI的道路上互相帮助(・ω\x26lt;)☆
TodayRss-海外RSS稳定源
目录
相关文章推荐
GiantPandaLLM  ·  SGLang 的 ... ·  昨天  
今天看啥  ›  专栏  ›  GiantPandaLLM

原理&图解vLLM Automatic Prefix Cache(RadixAttention)首T...

GiantPandaLLM  · 公众号  · 3D  · 2024-06-03 23:38
    

主要观点总结

本文介绍了Prefix Caching技术,并结合vLLM Automatic Prefix Caching的源码和图解,详细解释了RadixAttention的原理和实现。文章首先回顾了整体技术时间线和相关论文,然后逐步解析了Prefix Caching: RadixAttention原理解析、vLLM Automatic Prefix Caching: Hash RadixAttention、vLLM Automatic Prefix Caching: Hash Prefix Tree、vLLM Automatic Prefix Caching: Prefix/Generate 阶段Hash码处理、vLLM Automatic Prefix Caching: Prefix + Generated KV Caching、思考一些边界情况、vLLM Automatic Prefix Caching: 在多轮对话中的应用分析、vLLM Automatic Prefix Caching: Prefix Prefill Kernel与Attention Kernel区别、vLLM Automatic Prefix Caching: 应用实践等主题。最后,总结了文章的主要内容和vLLM中的Hash RadixAttention实现,并给出了相关论文资料和代码应用实践。

关键观点总结

关键观点1: Prefix Caching: RadixAttention原理解析

RadixAttention是为了实现Automatic KV Cache Reuse,使用radix tree替代prefix tree,通过动态分裂大节点来满足共享前缀的需求,避免过于复杂的原理阐述。

关键观点2: vLLM Automatic Prefix Caching: Hash RadixAttention

vLLM使用hash码作为物理KV Block的唯一标识,通过BlockSpaceManagerV1类来管理block分配,使用hash_of_block函数通过prompt中的token_ids获取hash值作为cache block的唯一标识。

关键观点3: vLLM Automatic Prefix Caching: Hash Prefix Tree

vLLM实现的hash编码实际上具备前缀树的功能,以PhysicalTokenBlock为单位,每个node的内容是hash码,代表着从根节点到当前node的唯一路径。

关键观点4: vLLM Automatic Prefix Caching: Prefix/Generate 阶段Hash码处理

对于Generate阶段,先分配fake hash,生成后再根据实际token_ids更新hash码,确保不同prompt的cache block获取到唯一hash码。

关键观点5: vLLM Automatic Prefix Caching: Prefix + Generated KV Caching

vLLM的Prefix Caching功能还缓存了Generated KV Cache,在多轮对话的应用中,可以消除历史轮次中生成对话的recompute。

关键观点6: vLLM Automatic Prefix Caching: 思考一些边界情况

边界情况无法命中cache,例如last block的slots没有被用满或生成的token数小于block_size时。

关键观点7: vLLM Automatic Prefix Caching: 在多轮对话中的应用分析

在具有长system prompt的场景以及多轮对话的场景中,Prefix Caching有非常大的应用价值,可以极大地降低首Token的时延。

关键观点8: vLLM Automatic Prefix Caching: Prefix Prefill Kernel与Attention Kernel区别

使用Prefix Caching后,需要使用新的kernel来处理Prefill阶段的注意力结果,无法使用常规的Attention kernel。

关键观点9: vLLM Automatic Prefix Caching: 应用实践

离线推理时,指定enable_prefix_caching=True即可;在线服务化时,只需在启动服务时添加--enable-prefix-caching参数。


免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

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