---
title: KV Cache换入换出
description: "KV Cache换入换出指将KV Cache从Device换出到Host，或者从Host换入Device。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/llmdatadistdev/llmpdv1_42_15.html
sourcePath: /source/zh/canncommercial/900/others/llmdatadistdev/llmpdv1_42_15.html
indexId: d786bf0488858d98bd2115fd5e39b4451ada2d461cb010343e99b50a02ce351c70
---
# 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内存换入换出 |


#### 功能示例

```
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})
```
