news 2026/5/10 3:22:43

CANN/hixl LLM数据分发API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hixl LLM数据分发API

LLMDataDist

【免费下载链接】hixlHIXL(Huawei Xfer Library)是一个灵活、高效的昇腾单边通信库,面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

说明:针对Atlas A2 训练系列产品/Atlas A2 推理系列产品,仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。针对Ascend 950PR/Ascend 950DT,不支持link、unlink和query_register_mem_status。

LLMDataDist构造函数

函数功能

构造LLMDataDist。

函数原型

__init__(role: LLMRole, cluster_id: int)

参数说明

参数名称数据类型取值说明
roleLLMRole集群角色。该参数只用于标识当前角色,对传输过程无影响,取值如下。

- LLMRole.DECODER:增量集群
- LLMRole.PROMPT:全量集群
cluster_idint集群ID。LLMDataDist标识,在所有参与建链的范围内需要确保唯一。

调用示例

from llm_datadist import LLMDataDist, LLMRole llm_datadist = LLMDataDist(LLMRole.DECODER, 0)

返回值

正常情况下返回LLMDataDist的实例。

参数错误可能抛出TypeError或ValueError。

约束说明

init

函数功能

初始化LLMDataDist,需要在init的options中配置CacheManager模式,即enable_cache_manager设置为True或者指定local_comm_res。

该模式下,Decode和Prompt可以双向拉取Cache。

函数原型

init(options: Dict[str, str])

参数说明

参数名称数据类型取值说明
optionsDict[str, str]配置项。
传入的options可以通过LLMConfig来生成。

- device_id必填。
- enable_cache_manager为True或者设置local_comm_res。

调用示例

from llm_datadist import LLMDataDist, LLMRole, LLMConfig llm_datadist = LLMDataDist(LLMRole.PROMPT, 0) llm_config = LLMConfig() llm_config.enable_cache_manager = True llm_config.device_id = 0 engine_options = llm_config.generate_options() llm_datadist.init(engine_options)

返回值

正常情况下无返回值。

异常情况会抛出LLMException。

参数错误可能抛出TypeError或ValueError。

约束说明

初始化成功后,系统退出前需要调用finalize。

finalize

函数功能

释放LLMDataDist。

函数原型

finalize()

参数说明

调用示例

from llm_datadist import LLMDataDist, LLMRole, LLMConfig llm_datadist = LLMDataDist(LLMRole.DECODER, 0) llm_config = LLMConfig() llm_config.enable_cache_manager = True llm_config.device_id = 0 engine_options = llm_config.generate_options() llm_datadist.init(engine_options) llm_datadist.finalize()

返回值

约束说明

  • 初始化成功后,系统退出前需要调用finalize。

  • finalize不能和其他接口并发调用。

link_clusters

函数功能

单边建链,由Client单侧发起建链。是Client还是Server与角色prompt或者decoder无关。设置listen_ip_info标识端口监听,即为Server端。

函数原型

link_clusters(clusters: Union[List[LLMClusterInfo], Tuple[LLMClusterInfo]], timeout=3000)

参数说明

参数名称数据类型取值说明
clustersUnion[List[LLMClusterInfo], Tuple[LLMClusterInfo]]集群列表。
timeoutint超时时间,单位:ms,默认超时时间3000ms。

调用示例

请参考样例运行。

返回值

正常情况下返回两个值的元组,第一个值是接口的返回值,类型是LLMStatusCode,第二个是每个集群建链结果的列表,类型是LLMStatusCode。

参数错误可能抛出TypeError或ValueError。

约束说明

  • 建链的要求如下。建链数量过多存在内存OOM及KV Cache传输的性能风险。

    • 允许创建的最大通信数量=512。
  • 建议超时时间配置200ms以上。如果TLS处于开启状态,建议超时时间配置为2000ms以上。查询TLS状态可以使用如下命令:

    hccn_tool [-i %d] -tls -g [host]
  • 调用该接口前需提前注册所有内存,否则建链后注册不支持远端访问。

  • 容器场景若未配置local_comm_res或配置为空,需在容器内映射“/etc/hccn.conf”文件或者确保默认路径“/usr/local/Ascend/driver/tools”下存在hccn_tool,如果两者都不能满足,则需要用户将hccn_tool所在路径配置到PATH中。配置实例如下,hccn_tool_install_path表示hccn_tool所在路径。

    export PATH=$PATH:{hccn_tool_install_path}

unlink_clusters

函数功能

单边断链,可以由Client单侧发起,通知Server进行断链;也可以Client和Server均发起强制断链,只清理本地链路。

函数原型

unlink_clusters(clusters: Union[List[LLMClusterInfo], Tuple[LLMClusterInfo]], timeout=3000, force=False)

参数说明

参数名称数据类型取值说明
clustersUnion[List[LLMClusterInfo], Tuple[LLMClusterInfo]]集群列表。
timeoutint超时时间,单位:ms,默认超时时间3000ms。
forcebool是否强制断链,默认False。True表示强制断链。

- 强制断链仅强制拆除本端链接,两端都要调用。
- 非强制断链在Client发起。无故障时两端链路都会拆除。有故障导致断链失败时,需要在Server端也发起断链操作。
- 无故障时两端链路都会拆除。
- 有故障导致断链失败时,需要在Server端也发起断链操作。

调用示例

请参考样例运行。

返回值

正常情况下返回两个值的元组,第一个值是接口的返回值,类型是LLMStatusCode,第二个是每个集群建链结果的列表,类型是LLMStatusCode。

参数错误可能抛出TypeError或ValueError。

约束说明

switch_role

函数功能

切换当前LLMDataDist的角色,同时可通过配置switch_options切换Client或者Server。

函数原型

switch_role(self, role: LLMRole, switch_options: Optional[Dict[str, str]] = None)

参数说明

参数名称数据类型取值说明
roleLLMRole切换的目标角色。
switch_optionsoptions: Dict[str, str]切换角色配置项。
可选参数,默认值为None。
若作为Server,需通过listen_ip_info配置监听的Host IP和端口,如"192.168.1.1:26000";若未设置则作为Client。
Server切换为Client将会关闭之前监听的端口;如果仅切换Server的监听端口,可通过options设置监听另一个端口,将关闭之前的监听端口。
该配置项指定hixl传输后端时,不支持通过switch_role变更侦听端口。

调用示例

请参考样例运行。

返回值

  • 正常情况下无返回值。
  • 传入数据类型错误情况下会抛出TypeError或ValueError异常。
  • 如果switch_role时存在残留链路资源,则会抛出LLMException,status_code为LLM_EXIST_LINK。

约束说明

link

函数功能

双边建链,通过建立通信域方式建链。(推荐使用更易用的单边建链的link_clusters接口,无需指定ranktable信息)

如果要在单机内且想使用RDMA网卡通信,需要设置HCCL_INTRA_ROCE_ENABLE=1环境变量。

函数原型

link(comm_name: str, cluster_rank_info: Dict[int, int], rank_table: str) -> int

参数说明

参数名称数据类型取值说明
comm_namestr通信域名称。
取值范围:小于128个字符。
cluster_rank_infoDict[int, int]集群ID到rank ID的映射。
例如:{1: 0, 2: 1}。
rank_tablestr开发者可以通过该参数配置参与集合通信的NPU资源信息。

如上表格中ranktable具体信息请参见《HCCL集合通信库用户指南》。
如上表格中rank_table的配置示例如下:

{ "server_count": "2", "server_list": [ { "device": [ { "device_id": "0", "device_ip": "x.x.x.x", "rank_id": "0" }, ], "server_id": "xxxx" },{ "device": [ { "device_id": "0", "device_ip": "x.x.x.x", "rank_id": "1" }, ], "server_id": "xxxx" } ], "status": "completed", "version": "1.0" }

调用示例

请参考样例运行。

返回值

正常情况下返回标识通信域的ID。

参数错误可能抛出TypeError或ValueError。

约束说明

  • 需要通信域内所有节点同时发起。
  • 通信域内节点数量最大支持4。
  • 通信域数量建议不超过16,最大支持512。建链数量过多存在内存OOM及cache传输的性能下降风险。
  • link底层会在通信域内部交换内存描述符,对于用来传输的cache,需要在link前先配置内存池或者先注册内存。
  • 不支持fork子进程方式调用。
  • 最多支持16条链路并发建链,超过16条底层会排队。
  • 需保证多通信域建链不出现循环依赖。
  • Ascend 950PR/Ascend 950DT不支持该接口。

unlink

函数功能

双边建链对应的断链接口,调用此接口进行断链。

函数原型

unlink(comm_id: int)

参数说明

参数名称数据类型取值说明
comm_idintlink接口的返回值

调用示例

请参考样例运行。

返回值

正常情况下无返回值。

异常场景会抛出LLMException异常。

参数错误可能抛出TypeError或ValueError。

Ascend 950PR/Ascend 950DT不支持该接口。

约束说明

query_register_mem_status

函数功能

调用此接口查询注册内存状态。

函数原型

query_register_mem_status(comm_id: int) -> RegisterMemStatus

参数说明

参数名称数据类型取值说明
comm_idintlink接口的返回值

调用示例

请参考样例运行。

返回值

正常场景下无返回值。

异常场景会抛出LLMException异常。

参数错误可能抛出TypeError或ValueError。

Ascend 950PR/Ascend 950DT不支持该接口。

约束说明

配合link使用。

cache_manager

函数功能

获取CacheManager实例。

函数原型

cache_manager()

参数说明

调用示例

from llm_datadist import LLMDataDist, LLMRole llm_datadist = LLMDataDist(LLMRole.DECODER, 0) ... llm_datadist.init(engine_options) cache_manager = llm_datadist.cache_manager

返回值

返回CacheManager实例。

约束说明

【免费下载链接】hixlHIXL(Huawei Xfer Library)是一个灵活、高效的昇腾单边通信库,面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 3:19:11

DeepSeek 和阿里谈崩了!

4 月中旬就传出 DeepSeek 在准备启动外部融资。①5 月 6 日,外媒报道称国家集成电路产业投资基金(国家大基金)正主导 DeepSeek 首轮融资谈判,还有阿里和腾讯以及其他国资参与。5 月 8 日,《白鲸实验室》报道称&#xf…

作者头像 李华
网站建设 2026/5/10 3:17:07

GPU加速向量搜索:cuvs库原理、实战与性能调优指南

1. 项目概述:当传统CPU计算成为瓶颈时如果你处理过千万甚至上亿级别的向量数据,比如做大规模图像检索、推荐系统的用户/物品向量匹配,或者大语言模型的语义搜索,那你一定对“等待”这个词深有体会。传统的CPU计算框架,…

作者头像 李华
网站建设 2026/5/10 3:14:43

遇到语音转文字错误?试试这4个实用修正技巧

做质性研究跑了大半个月田野,攒了十几个小时的访谈录音,转出来一看专业术语错得七零八落,对着耳机逐句听改,一下午过去才改完三分之一。去参加前沿学术论坛,现场记不全重点,回去转写录音,导师提…

作者头像 李华
网站建设 2026/5/10 3:13:52

Vue 3 + TypeScript + Pinia 构建交互式赛马模拟器:从状态管理到动画实现

1. 项目概述:一个现代前端技术栈驱动的赛马模拟器最近在GitHub上看到一个挺有意思的开源项目,叫Gallop Arena。这本质上是一个用Vue 3、TypeScript和Pinia构建的交互式赛马游戏。作为一个对前端技术栈和游戏化模拟都挺感兴趣的人,我立刻被它吸…

作者头像 李华
网站建设 2026/5/10 3:09:43

gpt4local:用OpenAI API语法在本地高效运行开源大模型

1. 项目概述:在本地跑一个“ChatGPT”有多简单? 如果你和我一样,对大型语言模型(LLM)既充满好奇,又对数据隐私、API调用成本和网络延迟心存顾虑,那么“本地部署”这条路子,你迟早会…

作者头像 李华
网站建设 2026/5/10 3:07:39

CANN/asc-devkit And API文档

And 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/a…

作者头像 李华