pull_blocks

产品支持情况

产品

是否支持

Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Atlas A2 训练系列产品

x

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品

x

Atlas 训练系列产品

x

函数功能

PagedAttention场景下,根据BlocksCacheKey,通过block列表的方式从对端节点拉取Cache到本地Cache。

函数原型

1
2
3
4
pull_blocks(src_cache_key: Union[CacheKey, CacheKeyByIdAndIndex, BlocksCacheKey],
            dst_cache: Cache,
            src_blocks: Optional[Union[Tuple[int], List[int]]] = (),
            dst_blocks: Union[Tuple[int], List[int]] = (), **kwargs)

参数说明

参数名称

数据类型

取值说明

src_cache_key

Union[CacheKey, CacheKeyByIdAndIndex, BlocksCacheKey]

远端的Cache索引。

dst_cache

Cache

目标Cache。

src_blocks

Optional[Union[Tuple[int], List[int]]]

远端的block index列表,src_cache_key不是BlocksCacheKey时,不填。

dst_blocks

Union[Tuple[int], List[int]]

本地的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
from llm_datadist import *
...
cache_manager.pull_blocks(blocks_cache_key, cache, [0, 1], [2, 3])
# 使能layer_range功能
cache_manager.pull_blocks(blocks_cache_key, cache, [0, 1], [2, 3], src_layer_range=range(0,2), dst_layer_range=range(2,4))

返回值

约束说明