下载
中文
注册

pull_cache

函数功能

根据CacheKey,从对应的对端节点拉取到本地Cache。

函数原型

pull_cache(cache_key: Union[CacheKey, CacheKeyByIdAndIndex],
           cache: Cache,
           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。

cache

Cache

目标Cache。

batch_index

int

batch index,默认为0。

size

int

设置为>0的整数,表示要拉取的tensor大小。

或设置为-1,表示完整拷贝。

默认为-1。

**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
7
from llm_datadist import *
...
cache_keys = [CacheKey(1, req_id=1), CacheKey(1, req_id=2)]
cache_manager.pull_cache(cache_keys[0], cache, 0)
cache_manager.pull_cache(cache_keys[1], cache, 1)
# 使能layer_range功能
cache_manager.pull_cache(cache_keys[1], cache, 1, src_layer_range=range(0,2), dst_layer_range=range(2,4))

返回值

正常情况下无返回值。

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

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

layer_range参数异常会抛出LLMException异常

约束说明

当src_cache是HOST设备时,dst_cache是DEVICE设备时,仅支持src_cache与dst_cache都为连续cache的场景。

开启enable_remote_cache_accessible时,该接口暂不可用。