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

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

- 支持的形态如下：

  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品：针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。该场景下Server内采用HCCS传输协议时，仅支持D2D。

  - Atlas A3 训练系列产品 / Atlas A3 推理系列产品，该场景下采用HCCS传输协议时，不支持Host内存作为远端Cache。

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

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

LLM-DataDist接口列表如下。

#### LLM-DataDist


**表1 LLM-DataDist接口**

| 接口名称 | 简介 |
| --- | --- |
| LLMDataDist构造函数 | 构造LLMDataDist。 |
| init | 初始化LLMDataDist。 |
| finalize | 释放LLMDataDist。 |
| link\_clusters | 单边建链，由Client单侧发起建链。是Client还是Server与角色prompt或者decoder无关。设置listen\_ip\_info标识端口侦听，即为Server端。 |
| unlink\_clusters | 单边断链，可以由Client单侧发起，通知Server进行断链；也可以Client和Server均发起强制断链，只清理本地链路。 |
| switch\_role | 切换当前LLMDataDist的角色，同时可通过配置switch\_options切换Client或者Server。 |
| link | 双边建链场景下，调用此接口通过建立通信域方式建链。 |
| unlink | 双边建链场景下，调用此接口进行断链。 |
| query\_register\_mem\_status | 双边建链场景下，调用此接口查询注册内存状态。 |
| cache\_manager | 获取CacheManager实例。 |


#### LLMConfig


**表2 LLMConfig接口**

| 接口名称 | 简介 |
| --- | --- |
| LLMConfig构造函数 | 构造LLMConfig。 |
| generate\_options | 生成配置项字典。 |
| device\_id | 设置当前进程Device ID，对应底层ge.exec.deviceId配置项。 |
| sync\_kv\_timeout | 配置拉取kv等接口超时时间，对应底层llm.SyncKvCacheWaitTime配置项。 |
| ge\_options | 配置额外的GE配置项。 |
| listen\_ip\_info | PROMPT侧设置集群侦听信息，对应底层llm.listenIpInfo配置项。 |
| enable\_cache\_manager | 配置是否开启CacheManager模式，对应底层llm.EnableCacheManager配置项。需配置为True。 |
| mem\_pool\_cfg | 在开启CacheManager场景下，配置内存池相关配置项。 |
| host\_mem\_pool\_cfg | 在开启CacheManager场景下，配置Host内存池相关配置项。 |
| enable\_remote\_cache\_accessible | 在开启CacheManager场景下，配置是否开启远端Cache可直接访问功能。 |
| rdma\_traffic\_class | 在开启CacheManager场景下，用于配置RDMA网卡的traffic class。 |
| rdma\_service\_level | 在开启CacheManager场景下，用于配置RDMA网卡的service level。 |
| local\_comm\_res | 在开启CacheManager场景下，用于配置本地通信资源。 |
| link\_total\_time | 用于配置HCCL建链失败的总超时时间。 |
| link\_retry\_count | 用于配置HCCL建链失败的重试次数。 |
| transfer\_backend | 用于配置LLM\-DataDist使用的传输后端。 |


#### CacheManager


**表3 CacheManager接口**

| 接口名称 | 简介 |
| --- | --- |
| CacheManager构造函数 | 介绍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。 |
| push\_blocks | PagedAttention场景下，根据BlocksCacheKey，通过block列表的方式从本地节点推送Cache到远端Cache。 |
| push\_cache | 根据CacheKey，从本地节点推送Cache到远端Cache。 |
| remap\_registered\_memory | 大模型推理过程中，如果发生内存UCE故障，即返回错误码ACL\_ERROR\_RT\_DEVICE\_MEM\_ERROR，上层框架需要先判断发生该故障的内存是否为KV Cache内存，如果不是，请参考《Ascend Extension for PyTorch 自定义API参考(https://www.hiascend.com/document/detail/zh/Pytorch/2600/apiref/torchnpuCustomsapi/docs/zh/custom\_APIs/overview.md)》中的torch\_npu.npu.restart\_device接口的说明获取并修复内存UCE的错误虚拟地址。如果是KV Cache内存，还需要再调用该接口修复注册给网卡的KV Cache内存。 本接口为预留接口，暂不支持。 |
| unregister\_cache | 解除注册一个自行申请的内存。 |


#### Cache


**表4 Cache接口**

| 接口名称 | 简介 |
| --- | --- |
| Cache构造函数 | 构造Cache。 |
| cache\_id | 获取Cache的id。 |
| cache\_desc | 获取Cache描述。 |
| tensor\_addrs | 获取Cache的地址。 |
| 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的枚举值。 |
| RegisterMemStatus | RegisterMemStatus的枚举值。 |
| Placement | CacheDesc的字段，表示cache所在的设备类型。 |
| CacheDesc | 构造CacheDesc。 |
| MemType | 表示地址所在位置，通常作为MemInfo的mem\_type参数的类型。 |
| MemInfo | 构造MemInfo，通常在CacheManager的remap\_registered\_memory接口中作为参数类型使用。 |
| CacheKey | 构造CacheKey。 |
| CacheKeyByIdAndIndex | 构造CacheKeyByIdAndIndex，通常在CacheManager的pull\_cache、push\_cache接口中作为参数类型使用。 |
| BlocksCacheKey | PagedAttention场景下，构造BlocksCacheKey。 |
| LayerSynchronizer | 等待模型指定层执行完成，用户需要继承LayerSynchronizer并实现该接口。 该接口会在执行transfer\_cache\_async时被调用，当该接口返回成功，则开始当前层cache的传输。 |
| TransferConfig | 构造TransferConfig。 |
| TransferWithCacheKeyConfig | 构造TransferWithCacheKeyConfig。 |
| LLMException | 获取异常的错误码。错误码列表详见LLMStatusCode。 |
| LLMStatusCode | LLMStatusCode的枚举值。 |
| DataType | DataType的枚举类。 |
