<aside> 💡

vllm 时延优化;

Prefix Caching;

</aside>

0x00 前言

最近,准备整理一下PagedAttention、Prefix Cache(RadixAttention)和Chunk Prefills的技术要点。这三个技术目前在TensorRT-LLM、vLLM这两个常用的LLM推理框架中都已经支持,因此,从应用落地的角度来说,理解这三个优化技术的原理也比较有意义。

0x01 Prefix Caching: RadixAttention原理解析

f4q91c87.bmp

                                               [Prefix + Generated] KV Caching

RadixAttention想要解决的正是这个问题。RadixAttention是在SGLang的论文(《Efficiently Programming Large Language Models using SGLang》)中被提出的,其目的是为了实现Automatic KV Cache Reuse。本文只关注RadixAttention,暂时不关注SGLang的其他内容。RadixAttention使用radix tree基数树,说实话,这棵树我也不太熟悉)而不是prefix tree。Radix Tree最大的特点就是,它的node,不仅可以是一个单独的元素,也可以是一个变长的序列。具体体现在,在必要的时候,一个已经在Tree中的大node可以动态地分裂成小node,以满足动态shared prefix的需求。避免原理阐述地过于抽象复杂,接下来以论文中带有LRU策略的RadixAttention操作示例来说明RadixAttention原理。