pull_cache
函数功能
根据CacheKey,从对应的Prompt节点拉取KV到本地KvCache,仅当LLMRole为DECODER时可调用。
函数原型
pull_cache(cache_key: Union[CacheKey, CacheKeyByIdAndIndex], kv_cache: KvCache, batch_index: int = 0, size: int = -1, **kwargs)
参数说明
参数名称 |
数据类型 |
取值说明 |
---|---|---|
cache_key |
Union[CacheKey, CacheKeyByIdAndIndex] |
需要被拉取的CacheKey。 通过req_id,prefix_id,model_id拉取则传入CacheKey。 通过cache_id,batch_index拉取则传入CacheKeyByIdAndIndex。 |
kv_cache |
目标KvCache。 |
|
batch_index |
int |
batch index,默认为0。 |
size |
int |
设置为>0的整数,表示要拉取的tensor大小。 或设置为-1,表示完整拷贝。 默认为-1。 |
**kwargs |
NA |
这个是python函数的可扩展参数通用写法,一般通过key=value的方式直接传入参数。 当前可选择的参数有:src_layer_range和dst_layer_range,这两参数详细信息请参考表1。 |
参数名称 |
数据类型 |
取值说明 |
---|---|---|
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排布,不支持其他场景。 |
src_cache_offset |
Optional[int] |
设置>=0的整数。表示从src_cache tensor的offset位置拉取size大小的数据 |
dst_cache_offset |
Optional[int] |
设置>=0的整数。表示将源数据拉取到dst_cache tensor的offset起始位置 |
调用示例
1 2 3 4 5 6 7 8 | from llm_datadist import * ... cache_keys = [CacheKey(1, req_id=1), CacheKey(1, req_id=2)] kv_cache_manager.pull_cache(cache_keys[0], cache, 0) # 使能layer_range功能 kv_cache_manager.pull_cache(cache_keys[1], cache, 1, src_layer_range=range(0,2), dst_layer_range=range(2,4)) # 使能offset功能 kv_cache_manager.pull_cache(cache_keys[1], cache, src_cache_offset=0, dst_cache_offset=0) |
约束说明
使用同一条链路时,此接口和transfer_cache_async接口不能并发。