昇腾社区首页
中文
注册

push_cache

产品支持情况

产品

是否支持

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

Atlas A2 训练系列产品

x

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品

x

Atlas 训练系列产品

x

函数功能

根据CacheKey,从本地节点推送Cache到远端Cache。

函数原型

1
2
3
4
5
push_cache(dst_cache_key: CacheKeyByIdAndIndex,
           src_cache: Cache,
           src_batch_index: int = 0,
           src_layer_range: range = None,
           dst_layer_range: range = None)

参数说明

参数名称

数据类型

取值说明

dst_cache_key

CacheKeyByIdAndIndex

远端的Cache索引

src_cache

Cache

本地的cache

src_batch_index

int

本地的batch index,默认为0。

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
from llm_datadist import *
...
dst_cache_keys = [CacheKey(1, req_id=1), CacheKey(1, req_id=2)]
cache_manager.push_cache(dst_cache_keys[1], src_cache, 1, src_layer_range=range(0,1), dst_layer_range=range(0,1))

返回值

正常情况下无返回值。

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

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

layer_range参数异常会抛出LLMException异常。

约束说明

  • 当src_cache是HOST设备时,dst_cache是DEVICE设备时,仅支持src_cache与dst_cache都为连续cache的场景。
  • 开启enable_remote_cache_accessible时,只支持cache_key类型为CacheKeyByIdAndIndex
  • 在D2H和H2D传输场景,需要在Host端初始化时配置Device内存池。