news 2026/5/9 15:17:53

CANN/hixl:LLM-DataDist支持HIXL传输后端

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hixl:LLM-DataDist支持HIXL传输后端

LLM-DataDist支持HIXL传输后端

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

需求描述

  • 背景介绍 HCCL提供单边通信库,与集合通信库并列,共同作为通信库对外提供的基础能力。LLM-DataDist需进行对接,以支持更多芯片类型和更多的通信能力。
  • 需要做什么 LLM-DataDist V2的单向建链流程对接HCCL单边通信库,支持当前接口已有能力。

功能要点

  • LLM-DataDist提供对接HCCL单边通信API能力。
支持解析本地通信资源option,通过Hixl提供链路管理与传输能力,并兼容原生能力。 需要对建链、断链、内存注册、注销以及数据传输流程进行抽象,同时支持基于Hixl和Hccl通信域实现相关能力。

技术方案

新增API和option

# 已有option key如下,用于描述本地可以使用的通信资源信息,需要支持1.3版本格式 constexpr const char OPTION_LOCAL_COMM_RES[] = "llm.LocalCommRes"; # option value为json格式字符串,支持1.3版本格式如下: std::string local_comm_res = R"( { "version": "1.3", "net_instance_id": "superpod1_1", "endpoint_list": [ { "protocol": "ub_ctp", "comm_id": "eid0-0", "placement": "host", "plane": "plane-a", }, { "protocol": "ub_ctp", "comm_id": "eid0-1", "placement": "device", "dst_eid": "eid1-1", }, { "protocol": "ub_ctp", "comm_id": "eid0-2", "placement": "device", "dst_eid": "eid1-2", }, { "protocol": "ub_tp", "comm_id": "eid0-3", "placement": "device", "plane": "plane-a", }, { "protocol": "roce", "comm_id": "ipv4/ipv6地址", "placement": "host" } ] } )"; 新增option:tranfer_backend,用于支持设置使用的传输后端,由于hixl engine需要支持对接hixl cs的接口能力,llm-datadist可以复用hixl能力,因此对llm-datadist传输层抽象为传输后端,支持使用hixl作为llm-datadist传输后端,以复用hixl的基础能力。 配置方式如下: config.tranfer_backend = "hixl"

通信设备配置字段说明

字段名数据类型必选/可选说明支持值/填写规则
version字符串必选版本号"1.3"
net_instance_id字符串必选当前超节点的唯一标识每个超节点唯一即可
endpoint_list数组必选可以使用的通信设备列表-
endpoint_list[].protocol字符串必选通信协议"roce"/"ub_ctp"/"ub_tp"
endpoint_list[].comm_id字符串必选通信标识protocol为ub_ctp/ub_tp时填${eid};protocol为roce时填ipv4/ipv6网卡地址
endpoint_list[].placement字符串必选通信设备位置"host"/"device"
endpoint_list[].plane字符串可选通信设备平面protocol为ub_ctp/ub_tp时,设备区分平面则填写,每个平面唯一(如"plane-a"/"plane-b")
endpoint_list[].dst_eid字符串可选与当前通信设备连接的对端通信设备的${eid}protocol为ub_ctp时,存在full-mesh直连对端则填写对端${eid}

C++调用伪码:

LlmDataDist llm_datadist_p(1U, LlmRole::kPrompt); std::map<AscendString, AscendString> options_p; options_p[llm_datadist::OPTION_LISTEN_IP_INFO] = "127.0.0.1:26000"; options_p[llm_datadist::OPTION_DEVICE_ID] = "0"; options_p[llm_datadist::OPTION_TRANSFER_BACKEND] = "hixl"; options_p[llm_datadist::OPTION_LOCAL_COMM_RES] = R"( { "net_instance_id": "superpod1_1", "endpoint_list": [ { "protocol": "roce", "comm_id": "1.0.0.1", "placement": "host" } ], "version": "1.3" } )"; llm_datadist_p.Initialize(options_p); LlmDataDist llm_datadist_d(2U, LlmRole::kDecoder); std::map<AscendString, AscendString> options_d; options_d[llm_datadist::OPTION_LISTEN_IP_INFO] = "127.0.0.1:26001"; options_d[llm_datadist::OPTION_DEVICE_ID] = "1"; options_d[llm_datadist::OPTION_TRANSFER_BACKEND] = "hixl"; options_d[llm_datadist::OPTION_LOCAL_COMM_RES] = R"( { "net_instance_id": "superpod2_1", "endpoint_list": [ { "protocol": "roce", "comm_id": "1.0.0.2", "placement": "host" } ], "version": "1.3" } )"; llm_datadist_d.Initialize(options_d); // 内存注册 llm_datadist_p.RegisterKvCache(cache_desc1, tensor_addrs1, {}, cache_id1); llm_datadist_d.RegisterKvCache(cache_desc2, tensor_addrs2, {}, cache_id2); llm_datadist_d.LinkLlmClusters(clusters1, rets);

当前LLM-DataDist类图主体关系

  • LLMDataDistV2为主体入口,对外提供建链断链,内存注册注销,以及数据传输能力
  • DataCacheEngine提供内存注册、注销以及传输能力
  • LLMLinkManager提供建链、断链能力
  • CommMemManager提供内存注册、注销能力
  • CommEntityManager提供链路管理能力,每个CommEntity代表一条点对点传输链路
  • HcclAdapter提供底层建链断链、内存注册注销和数据传输

LLM-DataDist对接HCCL单边通信库类图主体关系

  • 对链路的建链、断链相关流程和内存注册、注销、传输相关流程进行抽象为TranferEngine,提供工厂类支持根据传入的OPTION_TRANSFER_BACKEND不同,创建不同的实例,如果指定的格式version为1.3则创建Hixl相关实例;否则生成原来版本的实例,兼容之前的逻辑
  • HixlTranferEngine提供hixl engine的建链、断链、注册注销和传输能力。
  • HcclTranferEngine兼容原生逻辑,使用hccl相关的接口提供建链、断链、注册注销和传输能力。

初始化流程时序图

  • 通过传输后端option值是否为hixl确定是否走新流程,否则兼容老版本逻辑
  • 新流程中通过HixlTranferEngine保存的hixl engine进行内存注册注销,建链以及传输,初始化需要listen ip info信息
  • 兼容流程通过HcclTranferEngine提供能力,与原初始化流程基本相同,不再赘述

内存注册、注销流程时序图

  • 注销与注册流程基本相同,不再赘述

建链流程时序图

  • HixlTransferEngine通过HixlEngine的Connect接口完成建链,需创建socket获取对端cache table地址,用于后续数据面通信
  • 不支持非远端cache索引模式,即access_remote_cache为false场景
  • 不支持双向建链,调用Link相关接口报错,返回不支持
  • 强制建链(client退出后,重新发起建链可以建链成功,该能力HCCL开源开放单边通信支持)
  • SetRole能力,在hixl后端场景,需要两侧均制定ip port,均作为server并可以与对端发起建链并完成数据面通信,因此与角色无关,直接返回成功。

传输流程时序图

  • 建链一条链路,双侧均可进行数据收发不支持。
  • 只能由client侧(即调用LinkClusters侧)发起数据读写。如需双侧相互访问,需要由server侧向client侧也发起LinkClusters进行建链

端到端使用指导

python使用参考

examples/python/hixl_tranfer_backend_sample.py

备注

  1. 初始化需指定传输后端option为hixl
  2. 初始化需指定本地监听的ip和端口
  3. 与对端发起传输前需要提前建链

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

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

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

CANN/ops-fft 安全声明

安全声明 【免费下载链接】ops-fft ops-fft 是 CANN &#xff08;Compute Architecture for Neural Networks&#xff09;算子库中提供 FFT 类计算的基础算子库&#xff0c;采用模块化设计&#xff0c;支持灵活的算子开发和管理。 项目地址: https://gitcode.com/cann/ops-ff…

作者头像 李华
网站建设 2026/5/9 15:09:22

为AI Agent构建安全可控的命令执行运行时:claw-core的设计与实践

1. 项目概述&#xff1a;为AI Agent打造一个可控的命令执行运行时如果你正在尝试将AI Agent&#xff08;比如OpenClaw、Cursor的AI功能&#xff09;集成到你的自动化工作流中&#xff0c;大概率会遇到一个头疼的问题&#xff1a;如何让AI安全、稳定地执行系统命令&#xff1f;直…

作者头像 李华
网站建设 2026/5/9 15:07:52

为 Hermes Agent 项目配置 Taotoken 自定义供应商的详细步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为 Hermes Agent 项目配置 Taotoken 自定义供应商的详细步骤 当你在 Hermes Agent 框架中开发智能体应用时&#xff0c;可能需要接…

作者头像 李华
网站建设 2026/5/9 15:07:04

Trove:高效密集检索工具包的技术解析与实践

1. 项目概述&#xff1a;Trove的核心定位与价值密集检索&#xff08;Dense Retrieval&#xff09;是近年来信息检索领域的重要技术突破&#xff0c;它通过神经网络将查询和文档映射到低维稠密向量空间&#xff0c;相比传统关键词匹配方法能更好捕捉语义相关性。Trove作为专为密…

作者头像 李华
网站建设 2026/5/9 15:06:59

数字孪生大脑:多尺度建模与电场耦合如何革新神经调控

1. 项目概述&#xff1a;当大脑有了“数字副本”&#xff0c;我们如何精准调控它&#xff1f;想象一下&#xff0c;你手里有一张极其精密的大脑“电路图”&#xff0c;不仅能静态展示每个“元件”的连接&#xff0c;还能动态模拟电流如何流动、信号如何传递。更进一步&#xff…

作者头像 李华
网站建设 2026/5/9 15:06:25

Fossick-MCP:为AI智能体赋能代码勘探的MCP服务器

1. 项目概述&#xff1a;为AI智能体装上“代码勘探”的超级望远镜 如果你和我一样&#xff0c;每天都在和代码打交道&#xff0c;无论是为了给新项目选型一个趁手的库&#xff0c;还是想看看某个API在真实生产环境里到底是怎么被调用的&#xff0c;你肯定体会过那种在信息海洋…

作者头像 李华