---
title: LLM-DataDist接口列表
description: "LLM-DataDist：大模型分布式集群和数据加速组件，提供了集群KV数据管理能力，以支持全量图和增量图分离部署。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/llmdatadistdev/llmpr_42_0002.html
sourcePath: /source/zh/canncommercial/900/others/llmdatadistdev/llmpr_42_0002.html
indexId: 7866e62da96b914b0f2b78a5ebbd43477ae2e563d8d1f1db1395e24ebe3eba2970
---
# LLM-DataDist接口列表

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

- 支持的形态如下：

  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品：针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。
  - Atlas A3 训练系列产品 / Atlas A3 推理系列产品

- 当前支持Python3.9、Python3.11和Python3.12。安装方法请参考Python官网  https://www.python.org/(https://www.python.org/)
。
- 最大注册50GB的Device内存。注册内存越大，占用的OS内存越多。

LLM-DataDist接口列表如下。

#### LLM-DataDist


**表1 LLM-DataDist接口**

| 接口名称 | 简介 |
| --- | --- |
| LLMDataDist构造函数 | 构造LLMDataDist。 |
| init | 初始化LLMDataDist。 |
| finalize | 释放LLMDataDist。 |
| link\_clusters | 建链。 |
| unlink\_clusters | 断链。 |
| check\_link\_status | 调用此接口可快速检测链路状态是否正常。 |
| kv\_cache\_manager | 获取KvCacheManager实例。 |
| switch\_role | 切换当前LLMDataDist的角色，建议仅在使用PagedAttention的场景使用。 |


#### 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 | 用户指定内存档位配置，提高内存申请性能和使用率。 |


#### KvCacheManager


**表3 KvCacheManager接口**

| 接口名称 | 简介 |
| --- | --- |
| KvCacheManager构造函数 | 介绍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到本地KV Cache，仅当LLMRole为DECODER时可调用。 |
| copy\_cache | 拷贝KV。 |
| get\_cache\_tensors | 获取cache tensor。 |
| allocate\_blocks\_cache | PagedAttention场景下，分配多个blocks的Cache。 |
| pull\_blocks | PagedAttention场景下，根据BlocksCacheKey，通过block列表的方式从对应的Prompt节点拉取KV到本地KV Cache，仅当LLMRole为DECODER时可调用。 |
| copy\_blocks | PagedAttention场景下，拷贝KV。 |
| swap\_blocks | 对cpu\_cache和npu\_cache进行换入换出。 |
| transfer\_cache\_async | 异步分层传输KV Cache。 |


#### KvCache


**表4 KVCache接口**

| 接口名称 | 简介 |
| --- | --- |
| KvCache构造函数 | 构造KVCache。 |
| cache\_id | 获取KvCache的id。 |
| cache\_desc | 获取KvCache描述。 |
| per\_device\_tensor\_addrs | 获取KvCache的地址。 |
| create\_cpu\_cache | 创建cpu cache。 |


#### LLMClusterInfo


**表5 LLMClusterInfo接口**

| 接口名称 | 简介 |
| --- | --- |
| LLMClusterInfo构造函数 | 构造LLMClusterInfo。 |
| remote\_cluster\_id | 设置对端集群ID。 |
| append\_local\_ip\_info | 添加本地集群IP信息。 |
| append\_remote\_ip\_info | 添加远端集群IP信息。 |


#### CacheTask


**表6 CacheTask**

| 接口名称 | 简介 |
| --- | --- |
| CacheTask构造函数 | 构造CacheTask。 |
| synchronize | 等待所有层传输完成，并获取整体执行结果。 |
| get\_results | 等待所有层传输完成，并获取每个TransferConfig对应执行结果。 |


#### 其他


**表7 其他**

| 接口名称 | 简介 |
| --- | --- |
| LLMRole | LLMRole的枚举值。 |
| Placement | CacheDesc的字段，表示cache所在的设备类型。 |
| CacheDesc | 构造CacheDesc。 |
| CacheKey | 构造CacheKey。 |
| CacheKeyByIdAndIndex | 构造CacheKeyByIdAndIndex，通常在pull\_cache接口中作为参数类型使用。 |
| BlocksCacheKey | PagedAttention场景下，构造BlocksCacheKey。 |
| LayerSynchronizer | 等待模型指定层执行完成，用户需要继承LayerSynchronizer并实现该接口。 该接口会在执行KvCacheManager.transfer\_cache\_async时被调用，当该接口返回成功，则开始当前层cache的传输。 |
| TransferConfig | 构造TransferConfig。 |
| TransferWithCacheKeyConfig | 构造TransferWithCacheKeyConfig。 |
| LLMException | 获取异常的错误码。错误码列表详见LLMStatusCode。 |
| LLMStatusCode | LLMStatusCode的枚举值。 |
| DataType | DataType的枚举类。 |
