下载
中文
注册

pull_blocks

函数功能

PagedAttention场景下,根据BlocksCacheKey,通过block列表的方式从对应的Prompt节点拉取KV到本地KvCache,仅当LLMRole为DECODER时可调用。

函数原型

pull_blocks(prompt_cache_key: BlocksCacheKey, decoder_kv_cache: KvCache, prompt_blocks: List[int], decoder_blocks: List[int], **kwargs)

参数说明

参数名称

数据类型

取值说明

prompt_cache_key

BlocksCacheKey

需要被拉取的BlocksCacheKey。

decoder_kv_cache

KvCache

目标KvCache。

prompt_blocks

List[int]

prompt的block index列表。

decoder_blocks

List[int]

decoder的block index列表。

**kwargs

NA

这个是python函数的可扩展参数通用写法,一般通过key=value的方式直接传入参数。

当前可选择的参数有:src_layer_range和dst_layer_range,这两参数详细信息请参考表1

表1 src_layer_range和dst_layer_range

参数名称

数据类型

取值说明

src_layer_range

Optional[range]

可选参数,用于按层pull kv场景。传输源的layer的范围,step只支持1。不设置时为传输所有layer。需要注意这里是layer的index,而不是tensor的index,即1个layer对应连续2个tensor(K/V),这里要求allocate_cache时,必须是KV,...,KV排布,不支持其他场景。

dst_layer_range

Optional[range]

可选参数,用于按层pull kv场景。传输目标的layer的范围,step只支持1。不设置时为传输所有layer。需要注意这里是layer的index,而不是tensor的index,即1个layer对应连续2个tensor(K/V),这里要求allocate_cache时,必须是KV,...,KV排布,不支持其他场景。

调用示例

1
2
3
4
5
6
from llm_datadist import *
...
kv_cache_manager.pull_blocks(prompt_cache_key, kv_cache, [0, 1], [2, 3])

# 使能layer_range功能示例
kv_cache_manager.pull_blocks(prompt_cache_key, kv_cache, [0, 1], [2, 3], src_layer_range=range(2), dst_layer_range=range(2))

返回值

正常情况下无返回值。

传入数据类型错误情况下会抛出TypeError或ValueError异常。

执行时间超过sync_kv_timeout配置会抛出LLMException异常。

约束说明

使用同一条链路时,此接口和transfer_cache_async接口不能并发。