下载
中文
注册

LLM-DataDist接口列表

在大模型推理场景下,全量图和增量图一起部署时,会造成计算资源的浪费,原因如下:

  • 全量图计算对算力要求高,序列长度不一致,在算力约束下可能导致时延增长。
  • 增量图单次计算量小,可以增大batch以提升算力利用率。

LLM-DataDist:大模型分布式集群和数据加速组件,提供了集群KV数据管理能力,以支持全量图和增量图分离部署。

  • 支持的产品形态:Atlas 800I A2 推理产品
  • 当前仅支持python3.9与python3.11。安装方法请参考python官网https://www.python.org/
  • 最大注册50GB的Device内存。注册内存越大,占用的OS内存越多。

LLM-DataDist接口列表如下。

LLM-DataDist

表1 LLM-DataDist接口

接口名称

简介

LLMDataDist构造函数

构造LLMDataDist。

init

初始化LLMDataDist。

finalize

释放LLMDataDist。

link_clusters

KvCache管理模式的建链。

unlink_clusters

KvCache管理模式的断链。

check_link_status

在KvCache管理模式下,调用此接口可快速检测链路状态是否正常。

kv_cache_manager

在KvCache管理模式下,获取KvCacheManager实例。

switch_role

切换当前LLMDataDist的角色,建议仅在使用PagedAttention的场景使用,在开启CacheManager的情况下,不同角色功能没有限制,调用该接口直接返回,无任何作用。

check_capacity

用于在推理前检查本轮想要执行的请求的kv cache是否可以缓存下。

link

在开启CacheManager的场景下,调用此接口通过建立通信域方式建链。

开启方式CacheManager是在初始化LLMDataDist时设置llm.EnableCacheManager为1。

unlink

在开启CacheManager的场景下,调用此接口进行断链。

开启方式CacheManager是在初始化LLMDataDist时设置llm.EnableCacheManager为1。

query_register_mem_status

在开启CacheManager的场景下,调用此接口查询注册内存状态。

开启方式CacheManager是在初始化LLMDataDist时设置llm.EnableCacheManager为1。

cache_manager

在开启CacheManager的场景下,获取CacheManager实例。

开启方式CacheManager是在初始化LLMDataDist时设置llm.EnableCacheManager为1。

add_model

添加模型。

complete_request

完成请求,释放请求所占内存。

LLMConfig

表2 LLMConfig接口

接口名称

简介

LLMConfig构造函数

构造LLMConfig。

generate_options

生成配置项字典。

device_id

设置当前进程device ID,对应底层ge.exec.deviceId配置项。

sync_kv_timeout

配置拉取kv等接口超时时间,对应底层llm.SyncKvCacheWaitTime配置项。

enable_switch_role

配置是否支持角色平滑切换,对应底层llm.EnableSwitchRole配置项。

ge_options

配置额外的GE配置项。

listen_ip_info

PROMPT侧设置集群侦听信息,对应底层llm.listenIpInfo配置项。

mem_utilization

配置ge.flowGraphMemMaxSize内存的利用率。默认值0.95。

buf_pool_cfg

用户指定内存档位配置,提高内存申请性能和使用率。

enable_cache_manager

配置是否开启CacheManager模式,对应底层llm.EnableCacheManager配置项。

mem_pool_cfg

在开启CacheManager场景下,配置内存池相关配置项。

host_mem_pool_cfg

在开启CacheManager场景下,配置host内存池相关配置项。

enable_remote_cache_accessible

在开启CacheManager场景下,配置是否开启远端Cache可直接访问功能。

KvCacheManager

表3 KvCacheManager接口

接口名称

简介

is_initialized

查询KvCacheManager实例是否已初始化。

allocate_cache

分配Cache,Cache分配成功后,会同时被cache_id与cache_keys引用,只有当这些引用都解除后,cache所占用的资源才会实际释放。

deallocate_cache

释放Cache。

remove_cache_key

移除CacheKey,仅当LLMRole为PROMPT时可调用。

pull_cache

根据CacheKey,从对应的Prompt节点拉取KV到本地KvCache,仅当LLMRole为DECODER时可调用。

copy_cache

拷贝KV。

get_cache_tensors

获取cache tensor。

allocate_blocks_cache

PagedAttention场景下,分配多个blocks的Cache。

pull_blocks

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

copy_blocks

PagedAttention场景下,拷贝KV。

swap_blocks

对cpu_cache和npu_cache进行换入换出。

transfer_cache_async

异步分层传输KvCache。

KvCache

表4 KvCache接口

接口名称

简介

KvCache构造函数

构造KvCache。

create_cpu_cache

创建cpu cache。

CacheManager

表5 CacheManager接口

接口名称

简介

allocate_cache

分配Cache,Cache分配成功后,会同时被cache_id与cache_keys引用,只有当这些引用都解除后,cache所占用的资源才会实际释放。

deallocate_cache

释放Cache。

如果该Cache在Allocate时关联了CacheKey,则实际的释放会延后到所有的CacheKey被拉取或执行了remove_cache_key

remove_cache_key

移除CacheKey。

移除CacheKey后,该Cache将无法再被pull_cache拉取。

pull_cache

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

copy_cache

拷贝Cache。

allocate_blocks_cache

PagedAttention场景下,分配多个blocks的Cache,Cache分配成功后,可通过deallocate_blocks_cache释放内存。

deallocate_blocks_cache

PagedAttention场景下,释放allocate_blocks_cache申请的Cache。

pull_blocks

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

copy_blocks

PagedAttention场景下,拷贝block。

swap_blocks

对cpu_cache和npu_cache进行换入换出。

register_cache

注册一个自行申请的内存。

register_blocks_cache

PagedAttention场景下,调用此接口注册一个自行申请的内存。

transfer_cache_async

异步分层传输Cache。

Cache

表6 Cache接口

接口名称

简介

Cache构造函数

构造Cache。

create_cpu_cache

创建cpu cache。

LLMClusterInfo

表7 LLMClusterInfo接口

接口名称

简介

LLMClusterInfo构造函数

构造LLMClusterInfo。

remote_cluster_id

设置对端集群ID。

append_local_ip_info

添加本地集群IP信息。

append_remote_ip_info

添加远端集群IP信息。

CacheTask

表8 CacheTask

接口名称

简介

CacheTask构造函数

构造CacheTask。

synchronize

等待所有层传输完成,并获取整体执行结果。

get_results

等待所有层传输完成,并获取每个TransferConfig对应执行结果。

其他

表9 其他

接口名称

简介

LLMRole

LLMRole的枚举值。

RegisterMemStatus

RegisterMemStatus的枚举值。

Placement

CacheDesc的字段,表示cache所在的设备类型。

CacheDesc

构造CacheDesc。

CacheKey

构造CacheKey。

CacheKeyByIdAndIndex

构造CacheKeyByIdAndIndex,通常在KvCacheManager的pull_cache或者CacheManager的pull_cache接口中作为参数类型使用。

BlocksCacheKey

PagedAttention场景下,构造BlocksCacheKey。

CapacityState

check_capacity接口的返回值,表示内存情况。

LayerSynchronizer

等待模型指定层执行完成,用户需要继承LayerSynchronizer并实现该接口。

该接口会在执行KvCacheManager.transfer_cache_async时被调用,当该接口返回成功,则开始当前层cache的传输。

TransferConfig

构造TransferConfig。

LLMException

获取异常的错误码。错误码列表详见LLMStatusCode

LLMStatusCode

LLMStatusCode的枚举值。