楼主: 黄滟雁
45 0

CANN 开源赋能协同创新:SGLang+Mooncake+CANN HIXL的PD分离D2D部署 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-6-7
最后登录
2018-6-7

楼主
黄滟雁 发表于 2025-11-21 07:05:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

CANN开源助力大模型PD分离部署D2D特性快速实现

在大规模模型推理过程中,预填充(Prefill)和解码(Decode)两个阶段的计算特点存在显著差异:Prefill阶段主要处理较长的输入序列,对计算资源的需求较高;而Decode阶段则是逐个token生成,涉及大量的数据交换。传统的部署方式是将这两个阶段绑定在同一硬件上,导致资源利用不充分。因此,将Prefill和Decode阶段分别部署到不同的资源节点上,成为提高大规模模型推理性能的关键。

昇腾CANN的全面开源,极大地促进了PD分离部署方案的实施。通过开放CANN HIXL(华为单边通信库)等组件,开发者能够高效地实现PD分离部署中的KV Cache在Prefill节点和Decode节点之间的快速传输。此外,借助SGLang和Mooncake框架的支持,进一步加速了D2D同构特性的实现。

在CANN开源之前,新的功能和特性往往需要等待新版CANN的发布,这一过程大约需要3个月。如今,随着CANN各组件的开源,开发者可以通过编译开源组件来即时应用最新的特性,甚至可以根据自身需求对代码进行定制化改造,从而大幅加快项目落地的速度,同时提高了项目的灵活性和性能上限。

核心技术:三大技术协同创新

该方案通过SGLang实现了PD分离架构的实际部署,Mooncake提供了传输适配层,而CANN开源的HIXL组件则解决了通信瓶颈问题,共同实现了“架构解耦+高效通信”的双重优势:

  • SGLang:提供了一个成熟的PD分离部署框架,支持Prefill和Decode节点的独立调度,通过设置如disaggregation-mode等参数实现灵活配置。
  • Mooncake:作为传输引擎的中间件,兼容多种通信后端,为HIXL与SGLang的集成提供了必要的适配支持。
  • CANN HIXL:华为开源的单边通信组件,具备高性能、零拷贝的点对点数据传输能力,并通过简单的API接口对外开放,为PD分离方案中KV Cache在Prefill和Decode节点间的高效传输提供了基础支持。

关键技术详解:HIXL功能解析

3.1 HIXL核心功能接口

HIXL是CANN开源生态系统的一个重要组成部分,已在GitCode社区公开,提供了一套简单易用的单边通信接口,便于开发者实现跨设备的数据高效传输。以下是HIXL的一些主要接口及其功能说明:

接口名称 功能介绍
Initialize() Hixl资源初始化,所有其他Hixl操作均需在此基础上执行。
Finalize() 释放已初始化的Hixl资源。
RegisterMem() 注册用于发送或接收数据的内存地址。
DeregisterMem() 取消注册的内存地址。
Connect() 与远程Hixl建立连接。
Disconnect() 与远程Hixl断开连接。
TransferSync() 与远程Hixl同步进行内存传输。

3.2 基于HIXL接口实现节点间高性能数据传输的方法

假设有两个NPU节点,分别为客户端(Client)和服务端(Server)。为了使客户端从服务端获取数据或将自己的数据发送至服务端(如PD分离方案中Prefill节点向Decode节点传输KV Cache),整个过程可以分解为以下几个步骤:

客户端:

  1. Initialize:初始化客户端的Hixl环境。
  2. RegisterMem:注册用于接收或发送数据的内存地址。
  3. Connect:与服务端建立单向连接,此步骤应在服务端完成Initialize之后执行。
  4. TransferSync:从服务端拉取数据或向服务端发送数据,这一步骤需在服务端完成RegisterMem后执行。
  5. Disconnect:断开与服务端的单向连接。
  6. DeregisterMem:取消注册用于接收或发送数据的内存地址。
  7. Finalize:去初始化客户端的Hixl环境并释放资源。

服务端:

  1. Initialize:初始化服务端的Hixl环境。
  2. RegisterMem:注册用于接收或发送数据的内存地址。
  3. DeregisterMem:在客户端完成TransferSync后,取消注册用于接收或发送数据的内存地址。
  4. Finalize:去初始化服务端的Hixl环境并释放资源。

具体的代码实现可以参考HIXL示例

总结与未来展望

通过昇腾CANN的全面开源,不仅加速了大规模模型PD分离部署方案的实现,也为开发者提供了更多的自定义空间,极大地提升了项目实施的效率和灵活性。展望未来,随着更多开发者和技术人员的加入,这一领域的创新和发展将更加活跃。

昇腾 CANN 的全面开源开放为开发者提供了一条直达硬件能力的“快车道”。在这个案例中,HIXL 组件的快速集成就是最好的证明。借助 SGLang、Mooncake 和 HIXL 的协同作用,开发者不仅成功实现了 PD 分离部署的高效实施,还验证了开源生态在技术创新中的核心价值。

展望未来,随着昇腾 CANN 开源生态的不断完善,开发者能够充分发挥自己的创造力,在昇腾硬件的基础上开发出适用于各个行业的 AI 应用,形成一片丰富多彩的 AI 应用森林。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:cake moon lang LAN Aggregation

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-9 08:58