通过tensorrt-llm
kv cache reuse
功能实现prompt前缀cache重复利用功能。通过共享和重复使用以相同prompt开头的请求的
kv cache page
,可以大大降低首字延迟,即生成第一个输出token所花费的时间。对于多轮对话和相同系统提示等场景性能提升很大。
在默认样例中都是默认打开该功能的,主要涉及到如下几点:
trtllm-build
构建时涉及到如下参数:
- 需要打开
--use_paged_context_fmha enable
参数。 --tokens_per_block
参数可以调整kv cache reuse block
的大小,详细介绍见Situations that can prevent kv cache reuse。
inference_*.yml
涉及到如下参数:
- 需要打开
enable_kv_cache_reuse: true
参数。 kv_cache_host_memory_bytes
参数配置后可以允许kv cache
从gpu
卸载到host
内存,通过该参数可以配置用于主机内存用于缓存的大小。详细介绍见Offloading to host memor。
kv cache reuse
遵循lru
策略,当缓存不够时会清除最久未使用的缓存。- 多模态大模型通过将图片
hash
成虚拟token
实现了对图片kv cache
的重用。