KV Cache换入换出

功能介绍

KV Cache换入换出指将KV Cache从device换出到host,或者从host换入device。

在PA场景下,由于KV Cache的容量有限,需要根据任务优先级,执行状态等因素,动态地将任务所需的KV Cache进行换入换出,提高显存利用率。

涉及的接口

接口名称

功能

CacheManager.swap_blocks

CacheManager场景下,将对应block_index上kv内存换入换出

KvCacheManager.swap_blocks

KvCacheManager场景下,将对应block_index上kv内存换入换出

功能示例

1
2
3
4
5
6
7
8
from llm_datadist import KVCache
...
npu_cache = kv_cache_manager.allocate_blocks_cache(npu_cache_desc, npu_cache_key)
cpu_cache = KvCache.create_cpu_cache(cpu_cache_desc, cpu_addrs) # cpu_addrs来自创建的cpu tensors
# swap in
kv_cache_manager.swap_blocks(cpu_cache, npu_cache, {1:2, 3:4})
# swap out
kv_cache_manager.swap_blocks(npu_cache, cpu_cache, {1:2, 3:4})