
HIXL 单边通信库概述昇腾集群零拷贝点对点传输与 LLM 推理 PD 分离架构解析【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl导读本文基于 CANN/hixl 开源仓库的 C 开发指南「概述」章节系统讲解昇腾单边通信库HIXL的核心定位、三大核心优势、软件架构及其在大模型推理 PD 分离场景中的典型应用。读完本文你将理解 HIXL 与 LLM-DataDist 的分工关系掌握单边零拷贝通信、多链路高速互联的底层设计逻辑并能在 C 开发指南 的后续章节中快速定位建链、内存管理、KV Cache 传输等实战开发入口。单边通信库是什么面向集群场景的点对点数据传输底座HIXLHuawei 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**通信机制在本地内存数据准备就绪之后通过单边操作即可完成向远端内存的直接数据传输整个过程无需远端节点执行任何操作。这一特性为构建通信与计算重叠掩盖的调度机制提供了核心技术支撑——发送方无需等待对端参与即可完成数据搬移通信过程可以与对端计算完全并行。零拷贝能力的价值在于实现用户内存间的直接数据传输避免冗余数据搬运。其直接收益有两点降低内存带宽占用数据不经由中间缓冲的多次拷贝省去了额外的带宽消耗减少内存容量消耗不需要为传输额外分配拷贝缓冲内存利用率更高。在源码层面TransferSync与TransferAsync接口以TransferOpREAD/WRITE区分方向READ表示从远端地址读取内存到本地WRITE表示将本地内存推送到远端地址两者均只描述本地地址—远端地址—长度三元组见 include/hixl/hixl_types.h 中TransferOpDesc结构这正是单边语义在接口设计上的直接体现。核心优势二屏蔽硬件差异多链路跨设备高速互联单边通信库屏蔽了昇腾系列芯片的底层硬件差异用户无需针对不同芯片架构进行代码适配。在通信链路层面该技术原生支持 RDMA、HCCS 等多种高速互联协议官方文档标注通信带宽最高可达119GB/s可实现跨架构设备的无缝高速互联满足低时延、高吞吐的需求。这一设计在仓库实现中同样有迹可循src/hixl/engine/目录下同时存在hixl_engine.cc、comm_engine.cc、direct_client_handler.cc、direct_multi_channel_handler.cc、ub_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_CONNECT、CLIENT_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_MEMAtlas 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/UnregisterKvCache、PullKvCache/PushKvCache、PullKvBlocks/PushKvBlocks等接口组织同时提供LinkLlmClusters/UnLinkLlmClusters集群级建链/断链能力与SetRole角色切换能力。两层的典型分工是HIXL 负责内存级别的通用传输LLM-DataDist 负责KV Cache级别的业务语义传输上层推理引擎只需面对后者即可完成 PD 之间的数据协同。应用场景基于单边通信库构建大模型推理 PD 分离式框架单边通信库最具代表性的应用场景是构建大模型推理 PD 分离式框架。在基于 KV Cache 的大模型推理中完整流程参见 大模型推理流程简介Prefill 阶段将用户请求 Prompt 传入大模型进行计算中间结果写入 KV Cache 并推理出第 1 个 tokenDecode 阶段将请求的前 1 个 token 传入大模型从显存读取前文产生的 KV Cache 再进行计算。PD 分离式框架为了提升性能和资源利用效率将 Prefill 和 Decode 分别部署在不同规格和架构的集群中其动机详见 为什么要做 PD 分离。此时Prefill 阶段生成的 KV Cache 需要高效传输到 Decode 侧Decode 再基于这些缓存进行增量迭代推理。单边通信库正是充当大模型分布式集群和数据管理组件它通过简易的 API 开放给用户提供 Prefill Node 和 Decode Node 之间的KV Cache 传输及链路管理整体框架如下图所示图 2PD分离式推理框架中的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/PushKvCache与PullKvBlocks/PushKvBlocks的 KV Cache 管理、以及SetRole角色切换覆盖一般 Cache 传输与 Blocks Cache 传输两种场景接口参考 → 即 docs/zh/api/cpp/README.md查阅 HIXL 与 LLM-DataDist 的完整接口说明与错误码。仓库中还提供了配套的完整样例与测试便于对照验证examples/cpp包含hixl_example_quickstart.cpp、hixl_example_d2rd.cpp、prompt_pull_cache_and_blocks.cpp、prompt_push_cache_and_blocks.cpp、decoder_pull_cache_and_blocks.cpp、decoder_push_cache_and_blocks.cpp、decoder_switch_roles.cpp等覆盖传输、PD 分离、Blocks Cache 与角色切换等典型用法examples/python提供pull_cache_sample.py、push_cache_sample.py、pull_blocks_sample.py、switch_role_sample.py等 Python 侧样例tests/cpp/hixl/engine/hixl_api_unittest.ccAPI 级单元测试可辅助理解接口的调用约定与预期行为。总结HIXL 单边通信库以单边零拷贝、多链路高速互联、极简 API三项核心优势为昇腾集群场景提供了通用的点对点数据传输底座在其之上LLM-DataDist 以 KV Cache 语义接口支撑起大模型推理 PD 分离框架的缓存传输与链路管理。对于希望将昇腾设备接入 vLLM、SGLang、Mooncake 等开源生态的开发者而言从 C 开发指南 的概述、开发章节到仓库中的 examples 与测试用例构成了一条从架构认知到代码实践的完整路径。【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考