LLM-DataDist接口列表
在大模型推理场景下,全量图和增量图一起部署时,会造成计算资源的浪费,原因如下:
- 全量图计算对算力要求高,序列长度不一致,在算力约束下可能导致时延增长。
- 增量图单次计算量小,可以增大batch以提升算力利用率。
LLM-DataDist:大模型分布式集群和数据加速组件,提供了集群KV数据管理能力,以支持全量图和增量图分离部署。
支持的产品形态:Atlas A2训练系列产品/Atlas 800I A2推理产品。
当前仅支持python3.9与python3.11。安装方法请参考python官网https://www.python.org/。
LLM-DataDist接口列表如下。
LLM-DataDist
接口名称 |
简介 |
---|---|
构造LLMDataDist。 |
|
初始化LLMDataDist。 |
|
释放LLMDataDist。 |
|
添加模型。 |
|
建链。 |
|
断链。 |
|
完成请求,释放请求所占内存。 |
|
获取KvCacheManager实例。 |
|
切换当前LLM-DataDist的角色。 |
|
用于在推理前检查本轮想要执行的请求的kv cache是否可以缓存下。 |
|
在开启CacheManager的场景下,开启方式是在初始化LLMDataDist时传入llm.EnableCacheManager为1时,调用此接口通过建立通信域方式建链。 |
|
在开启CacheManager的场景下,开启方式是在初始化LLMDataDist时传入llm.EnableCacheManager为1时,调用此接口进行断链。 |
|
在开启CacheManager的场景下,开启方式是在初始化LLMDataDist时传入llm.EnableCacheManager为1时,调用此接口查询注册内存状态。 |
|
在开启CacheManager的场景下,开启方式是在初始化LLMDataDist时传入llm.EnableCacheManager为1时,获取CacheManager实例。 |
LLMModel
接口名称 |
简介 |
---|---|
拉取kv。 |
|
合并kv。 |
|
预加载前缀kv。 |
|
释放前缀kv所占内存。 |
|
执行模型推理。 |
|
PagedAttention场景下,拉取kv。 |
KvCacheManager
接口名称 |
简介 |
---|---|
查询KvCacheManager实例是否已初始化。 |
|
分配Cache,Cache分配成功后,会同时被cache_id与cache_keys引用,只有当这些引用都解除后,cache所占用的资源才会实际释放。 |
|
释放Cache。 |
|
移除CacheKey,仅当LLMRole为PROMPT时可调用。 |
|
根据CacheKey,从对应的Prompt节点拉取KV到本地KvCache,仅当LLMRole为DECODER时可调用。 |
|
拷贝KV。 |
|
获取cache tensor。 |
|
PagedAttention场景下,分配多个blocks的Cache。 |
|
PagedAttention场景下,根据BlocksCacheKey,通过block列表的方式从对应的Prompt节点拉取KV到本地KvCache, 仅当LLMRole为DECODER时可调用。 |
|
PagedAttention场景下,拷贝KV。 |
CacheManager
接口名称 |
简介 |
---|---|
分配Cache,Cache分配成功后,会同时被cache_id与cache_keys引用,只有当这些引用都解除后,cache所占用的资源才会实际释放。 |
|
释放Cache。 如果该Cache在Allocate时关联了CacheKey,则实际的释放会延后到所有的CacheKey被拉取或执行了remove_cache_key。 |
|
移除CacheKey。 移除CacheKey后,该Cache将无法再被pull_cache拉取。 |
|
根据CacheKey,从对应的对端节点拉取到本地Cache。 |
|
拷贝Cache。 |
|
PagedAttention场景下,分配多个blocks的Cache,Cache分配成功后,可通过deallocate_blocks_cache释放内存。 |
|
PagedAttention场景下,释放allocate_blocks_cache申请的Cache。 |
|
PagedAttention场景下,根据BlocksCacheKey,通过block列表的方式从对端节点拉取Cache到本地Cache。 |
|
PagedAttention场景下,拷贝block。 |
|
对cpu_cache和npu_cache进行换入换出。 |
|
注册一个自行申请的内存。 |
|
PagedAttention场景下,调用此接口注册一个自行申请的内存。 |
KvCache
接口名称 |
简介 |
---|---|
构造KvCache。 |
|
创建cpu cache。 |
Cache
接口名称 |
简介 |
---|---|
构造Cache。 |
|
创建cpu cache。 |
ModelRunner
接口名称 |
简介 |
---|---|
执行模型,用户需要集成ModelRunner并实现该接口。 该接口会在执行LLMModel.predict时被调用。 |
|
当ModelRunner关联的Decoder LLMModel分配了KvCache后回调。 |
|
当ModelRunner关联的Decoder LLMModel释放了KvCache后回调。 |
TensorDesc
接口名称 |
简介 |
---|---|
构造TensorDesc。 |
|
获取dtype属性值。 |
|
获取shape属性值。 |
Tensor
接口名称 |
简介 |
---|---|
构造Tensor。 |
|
获取tensor的numpy数据。 |
ModelConfig
接口名称 |
简介 |
---|---|
构造ModelConfig。 |
|
生成模型配置项字典。 |
|
配置每个kv的维度信息,对应底层llm.RefInputShapes配置项。 |
|
配置每个kv数据类型,对应底层llm.RefInputDtypes配置项。 |
|
配置序列长度所在维度,对应底层llm.RefInputSeqLenDimIndex配置项。 |
|
配置是否开启PagedAttention,对应底层llm.EnablePagedAttention配置项。 |
|
配置是否开启共享系统前缀,对应底层llm.EnableSharedSystemPrefix配置项。 |
|
配置模型列表,对应底层llm.OmCachePath配置项,如果是flow model,只需要配置一个模型路径。 |
|
配置模型是否是flow_model,对应底层llm.IsFlowModel配置项,如果传入模型是FlowModel时需要配置。 |
|
配置额外的GE配置项。 |
|
设置kv cache tensor的format。 |
LLMConfig
接口名称 |
简介 |
---|---|
构造LLMConfig。 |
|
生成配置项字典。 |
|
PROMPT侧设置集群侦听信息,对应底层llm.listenIpInfo配置项。 |
|
设置当前进程device ID,对应底层ge.exec.deviceId配置项。 |
|
配置拉取kv等接口超时时间,对应底层llm.SyncKvCacheWaitTime配置项。 |
|
配置额外的GE配置项。 |
|
配置ge.flowGraphMemMaxSize内存的利用率。默认值0.95。 |
|
用户指定内存档位配置,提高内存申请性能和使用率。 |
|
配置是否开启CacheManager模式,对应底层llm.EnableCacheManager配置项。 |
|
在开启CacheManager场景下,配置内存池相关配置项。 |
LLMReq
接口名称 |
简介 |
---|---|
构造LLMReq。 |
|
设置请求ID。 |
|
设置请求prompt长度。 |
|
设置请求prompt集群ID。 |
|
设置请求decoder集群ID。 |
|
设置请求前缀ID。 |
LLMClusterInfo
接口名称 |
简介 |
---|---|
构造LLMClusterInfo。 |
|
设置对端集群ID。 |
|
添加本地集群IP信息。 |
|
添加远端集群IP信息。 |
其他
接口名称 |
简介 |
---|---|
构造CacheDesc。 |
|
CacheDesc的字段,表示cache所在的设备类型。 |
|
构造CacheKey。 |
|
构造CacheKeyByIdAndIndex。 |
|
PagedAttention场景下,构造BlocksCacheKey。 |
|
数据类型介绍。 |
|
check_capacity接口的返回值,表示内存情况。 |
|
LLMRole的枚举值。 |
|
LLMStatusCode的枚举值。 |
|
RegisterMemStatus的枚举值。 |
|
获取异常的错误码。错误码列表详见LLMStatusCode。 |