HIXL 单边通信库概述:昇腾集群零拷贝点对点传输与 LLM 推理 PD 分离架构解析
2026/9/18 8:07:23 网站建设 项目流程

HIXL 单边通信库概述:昇腾集群零拷贝点对点传输与 LLM 推理 PD 分离架构解析

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

导读

本文基于 CANN/hixl 开源仓库的 C++ 开发指南「概述」章节,系统讲解昇腾单边通信库(HIXL)的核心定位、三大核心优势、软件架构及其在大模型推理 PD 分离场景中的典型应用。读完本文,你将理解 HIXL 与 LLM-DataDist 的分工关系,掌握单边零拷贝通信、多链路高速互联的底层设计逻辑,并能在 C++ 开发指南 的后续章节中快速定位建链、内存管理、KV Cache 传输等实战开发入口。

单边通信库是什么:面向集群场景的点对点数据传输底座

HIXL(Huawei Xfer Library)是面向集群场景提供的单边通信库,其核心能力是简单、可靠、高效的点对点数据传输,并通过简易 API 开放给用户。它在多 AI 应用与多传输链路之间建立了桥梁,可用于构建大模型 PD 分离、RL 后训练参数切换、模型参数缓存等多种业务场景。

从仓库源码结构看,这一"底座"定位非常清晰:include/hixl/hixl.h暴露的Hixl类只承载最基础的能力——初始化(Initialize)、建链/断链(Connect/Disconnect)、内存注册/解注册(RegisterMem/DeregisterMem)与内存传输(TransferSync/TransferAsync),配合include/hixl/hixl_types.h中定义的内存描述符(MemDesc)、传输描述符(TransferOpDesc)等数据结构,构成一套纯粹基于"本地地址 + 远端地址"的传输接口,不携带任何上层业务语义。而带 KV Cache 语义的接口则由基于 HIXL Engine 构建的 LLM-DataDist 层提供(见 include/llm_datadist/llm_datadist.h)。

核心优势一:单边零拷贝通信机制

单边通信库提供**单边零拷贝(One-Sided Zero-Copy)**通信机制:在本地内存数据准备就绪之后,通过单边操作即可完成向远端内存的直接数据传输,整个过程无需远端节点执行任何操作。这一特性为构建"通信与计算重叠掩盖"的调度机制提供了核心技术支撑——发送方无需等待对端参与即可完成数据搬移,通信过程可以与对端计算完全并行。

零拷贝能力的价值在于实现用户内存间的直接数据传输,避免冗余数据搬运。其直接收益有两点:

  • 降低内存带宽占用:数据不经由中间缓冲的多次拷贝,省去了额外的带宽消耗;
  • 减少内存容量消耗:不需要为传输额外分配拷贝缓冲,内存利用率更高。

在源码层面,TransferSyncTransferAsync接口以TransferOpREAD/WRITE)区分方向:READ表示从远端地址读取内存到本地,WRITE表示将本地内存推送到远端地址,两者均只描述"本地地址—远端地址—长度"三元组(见 include/hixl/hixl_types.h 中TransferOpDesc结构),这正是"单边"语义在接口设计上的直接体现。

核心优势二:屏蔽硬件差异,多链路跨设备高速互联

单边通信库屏蔽了昇腾系列芯片的底层硬件差异,用户无需针对不同芯片架构进行代码适配。在通信链路层面,该技术原生支持 RDMA、HCCS 等多种高速互联协议,官方文档标注通信带宽最高可达119GB/s,可实现跨架构设备的无缝高速互联,满足低时延、高吞吐的需求。

这一设计在仓库实现中同样有迹可循:src/hixl/engine/目录下同时存在hixl_engine.cccomm_engine.ccdirect_client_handler.ccdirect_multi_channel_handler.ccub_client_handler.cc等实现,分别面向不同传输通道与协议场景进行统一封装,对外则收敛为Hixl类上极简的调用接口。多链路适配对上层完全透明,正是"屏蔽硬件差异"这一优势的工程落地。

核心优势三:极简 API 设计与开源生态深度适配

单边通信库采用极简式 API 接口设计:

  • 接口数量精简至10 余个核心调用,降低开发者集成门槛;
  • 提供完善的C++ / Python 语言接口支持;
  • 已实现与Mooncake、DeepLink等开源框架的深度集成;
  • vLLM、SGLang等主流推理引擎可以直接调用单边通信库 API 完成 KV Cache 的跨设备高效传输,官方文档标注可将大模型推理过程中的内存访问延迟降低 20%,提升推理吞吐。

从 include/hixl/hixl.h 可以看到,Hixl类的公开接口确实收敛在 20 个以内,除基础能力外仅额外提供SendNotify/GetNotifies(节点间通知)、GetCapability(能力特性查询,如AUTO_CONNECTCLIENT_SERVER_COMM)等少量辅助接口,印证了"极简"的 API 哲学。Python 侧则通过 src/python/hixl_py/hixl_py.cc 以 Pybind 方式暴露同构接口,供 examples/python 下的 Python 样例直接调用。

软件架构:HIXL Engine 与 LLM-DataDist 的分工

单边通信库的软件架构如下图所示(图 1):

单边通信库软件架构图

架构自底向上可以拆分为两个核心组件:

HIXL Engine:核心传输引擎

  • 提供基础传输接口,支持多种内存类型传输,包括 D2D、D2H、H2D 等;
  • 兼容多种传输协议,包括 HCCS、RDMA 等,可实现高速、可靠的数据传输;
  • 原生支持多类型数据链路,可适用于同构集群和异构集群的复杂场景;
  • 面对集群节点动态扩缩容需求时,可高效完成链路适配与资源调度,为集群整体运行构建可靠通信基础。

从源码看,Hixl引擎还支持通过options参数进行灵活配置,例如 include/hixl/hixl_types.h 中定义的OPTION_ENABLE_USE_FABRIC_MEM(Atlas A3 系列上使用 HCCS 进行 D2RH/RH2D 传输时开启以获得最佳性能)、OPTION_BUFFER_POOL(中转传输内存池配置)、OPTION_AUTO_CONNECT(自动建链)、OPTION_LOCAL_COMM_RES(本地通信资源)等,均为开发阶段按需调整的入口。

LLM-DataDist:携带 KV Cache 语义的数据传输层

  • 基于 HIXL Engine 构建,提供一套携带 KV Cache 语义的数据传输接口;
  • 可快速、灵活对接 vLLM、SGLang 等推理引擎。

其在 include/llm_datadist/llm_datadist.h 中体现为LlmDataDist类,围绕RegisterKvCache/UnregisterKvCachePullKvCache/PushKvCachePullKvBlocks/PushKvBlocks等接口组织,同时提供LinkLlmClusters/UnLinkLlmClusters集群级建链/断链能力与SetRole角色切换能力。两层的典型分工是:HIXL 负责"内存"级别的通用传输,LLM-DataDist 负责"KV Cache"级别的业务语义传输,上层推理引擎只需面对后者即可完成 PD 之间的数据协同。

应用场景:基于单边通信库构建大模型推理 PD 分离式框架

单边通信库最具代表性的应用场景是构建大模型推理 PD 分离式框架。在基于 KV Cache 的大模型推理中(完整流程参见 大模型推理流程简介):

  • Prefill 阶段:将用户请求 Prompt 传入大模型进行计算,中间结果写入 KV Cache 并推理出第 1 个 token;
  • Decode 阶段:将请求的前 1 个 token 传入大模型,从显存读取前文产生的 KV Cache 再进行计算。

PD 分离式框架为了提升性能和资源利用效率,将 Prefill 和 Decode 分别部署在不同规格和架构的集群中(其动机详见 为什么要做 PD 分离)。此时,Prefill 阶段生成的 KV Cache 需要高效传输到 Decode 侧,Decode 再基于这些缓存进行增量迭代推理。

单边通信库正是充当大模型分布式集群和数据管理组件:它通过简易的 API 开放给用户,提供 Prefill Node 和 Decode Node 之间的KV Cache 传输及链路管理,整体框架如下图所示(图 2):

PD分离式推理框架中的KV Cache传输与链路管理

在该场景中,LLM-DataDist 以集群(cluster_id)和角色(role,分为 Prefill 与 Decoder)为维度组织链路:Decode 侧通过cluster_id找到对应链路,进而定位 Prefill 侧缓存的对应请求 KV Cache。与之配套的基础概念,如 D2D/D2H/H2D 传输方向、TTFT/TBT 指标、PagedAttention 与 block_table、集群动态扩缩容等,均收录在 附录·基本概念 的术语表中,可作为理解本文场景的补充材料。

从概述到实战:开发指南与完整样例

理解架构之后,可以在同一份 C++ 开发指南中按章节深入实战:

  • 学习向导:按角色和知识层次规划学习路径;
  • HIXL 开发:讲解Initialize/Connect/Disconnect建链断链、RegisterMem/DeregisterMem/TransferSync内存管理与传输、以及BufferPool中转传输,包含可直接运行的 C++ 代码示例;
  • LLM-DataDist 开发:讲解LinkLlmClusters建链、RegisterKvCache/PullKvCache/PushKvCachePullKvBlocks/PushKvBlocks的 KV Cache 管理、以及SetRole角色切换,覆盖一般 Cache 传输与 Blocks Cache 传输两种场景;
  • 接口参考 → 即 docs/zh/api/cpp/README.md:查阅 HIXL 与 LLM-DataDist 的完整接口说明与错误码。

仓库中还提供了配套的完整样例与测试,便于对照验证:

  • examples/cpp:包含hixl_example_quickstart.cpphixl_example_d2rd.cppprompt_pull_cache_and_blocks.cppprompt_push_cache_and_blocks.cppdecoder_pull_cache_and_blocks.cppdecoder_push_cache_and_blocks.cppdecoder_switch_roles.cpp等,覆盖传输、PD 分离、Blocks Cache 与角色切换等典型用法;
  • examples/python:提供pull_cache_sample.pypush_cache_sample.pypull_blocks_sample.pyswitch_role_sample.py等 Python 侧样例;
  • tests/cpp/hixl/engine/hixl_api_unittest.cc:API 级单元测试,可辅助理解接口的调用约定与预期行为。

总结

HIXL 单边通信库以"单边零拷贝、多链路高速互联、极简 API"三项核心优势,为昇腾集群场景提供了通用的点对点数据传输底座;在其之上,LLM-DataDist 以 KV Cache 语义接口支撑起大模型推理 PD 分离框架的缓存传输与链路管理。对于希望将昇腾设备接入 vLLM、SGLang、Mooncake 等开源生态的开发者而言,从 C++ 开发指南 的概述、开发章节到仓库中的 examples 与测试用例,构成了一条从架构认知到代码实践的完整路径。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询