openYuanrong数据系统异构对象详解:如何实现HBM内存抽象与卡间直通传输
【免费下载链接】yuanrong-datasystemopenYuanrong 数据系统是以内存为中心、近计算的分布式异构多级缓存,为AI训推、Agent、大数据、微服务等分布式应用提供高性能的数据对象(KV)与数据流访问、HBM/DRAM/SSD 多级缓存以及实例间零拷贝数据共享能力。项目地址: https://gitcode.com/openeuler/yuanrong-datasystem
前往项目官网免费下载:https://ar.openeuler.org/ar/
openYuanrong数据系统(yuanrong-datasystem)是一款以内存为中心、近计算的分布式异构多级缓存系统,专为AI训推、Agent、大数据等分布式应用提供高性能数据访问能力。其核心优势在于实现了HBM内存抽象与卡间直通传输技术,构建了高效的异构对象管理机制,让开发者能够轻松驾驭异构计算环境中的数据流动。
一、异构对象:解锁HBM内存的核心能力 🚀
在AI计算场景中,HBM(高带宽内存)作为NPU等加速卡的"专属粮仓",其数据访问效率直接决定了模型训练与推理的性能上限。openYuanrong数据系统通过异构对象接口实现了对HBM内存的抽象管理,提供三大核心能力:
1.1 HBM内存抽象:让设备内存像文件一样易用
异构对象将物理HBM内存抽象为逻辑上的键值对存储,开发者无需关注底层内存地址分配、设备亲和性等复杂细节,只需通过简单的API即可完成HBM数据的创建、访问与销毁。这种抽象层实现了:
- 设备无关性:统一的接口适配昇腾等多种异构计算设备
- 内存安全管理:自动处理内存泄漏与生命周期维护
- 多级缓存联动:无缝衔接DRAM/SSD存储层次
1.2 卡间直通传输:突破PCIe瓶颈的高速通道 ⚡
传统的跨设备数据传输需要经过"设备→主机→设备"的迂回路径,受限于PCIe带宽成为性能瓶颈。openYuanrong创新性地实现了卡间直通传输技术,通过:
图:openYuanrong数据系统逻辑架构,展示了异构对象在整体系统中的位置与数据流向
- DevPublish/DevSubscribe语义:数据生成端通过
DevPublish将HBM数据发布为异构对象,接收端申请HBM内存后执行DevSubscribe,系统直接通过设备间高速链路传输数据 - 零拷贝技术:数据无需经过主机内存中转,直接写入目标设备HBM
- 自动清理机制:数据接收完成后自动解除内存关联,避免资源占用
1.3 H2D/D2H高速迁移:打通内存层次壁垒
除了设备间传输,异构对象还提供MGetH2D和MSetD2H接口,实现HBM与DRAM之间的高效数据swap,满足:
- 训练过程中模型参数从DRAM加载到HBM
- 推理结果从HBM回写到主机内存
- 冷热数据在多级存储间的智能调度
二、核心应用场景:异构对象如何加速AI任务?
异构对象技术在AI计算场景中展现出强大的赋能能力,尤其在以下场景效果显著:
2.1 LLM长序列推理KVCache加速 🧠
基于异构对象构建的分布式多级缓存,为大语言模型推理提供了关键支撑:
- 多级存储协同:HBM存放热数据,DRAM作为二级缓存,SSD提供容量扩展
- 高吞吐数据访问:D2D/H2D/D2H传输能力保障KVCache的快速读写
- 实例间数据共享:Prefill/Decode阶段的KVCache高效传递,提升整体推理吞吐
2.2 模型推理实例弹性伸缩 🔄
在云服务场景中,推理实例需要根据负载动态调整数量。异构对象通过:
- 卡间直通传输:实现模型参数的快速复制
- P2P数据分发:支持一对多高效数据传输
- 内存抽象管理:简化多实例部署的内存配置流程
2.3 训练CheckPoint快速加载 ⚡
训练过程中,CheckPoint的加载速度直接影响重启效率。异构对象方案:
- 各节点将Checkpoint分片加载到本地异构对象
- 利用卡间直通传输能力分发到目标节点
- 直接写入HBM内存,省去中间环节
图:openYuanrong数据系统部署架构,展示了异构对象在分布式环境中的部署方式
三、快速上手:异构对象使用指南
3.1 环境准备
使用异构对象功能需要:
- 昇腾NPU设备及CANN环境
- 编译时启用异构对象支持(默认开启)
- 如需禁用可在编译时添加
-X参数:./build_cmake.sh -X HETEROOJECT
3.2 基本操作示例
通过异构对象接口操作HBM数据的基本流程:
# 伪代码示例:异构对象基本操作 client = HeteroClient() # 创建HBM内存对象 hbm_data = client.create_hetero_object("llm_kv_cache", size=1024*1024*1024) # 发布HBM数据到其他设备 client.dev_publish("llm_kv_cache", device_id=1) # 在目标设备订阅接收 target_client = HeteroClient(device_id=1) target_hbm = target_client.dev_subscribe("llm_kv_cache")3.3 高级配置选项
在部署配置中可优化异构对象性能:
enable_p2p_transfer:开启点对点传输(默认false)global.performance.enableP2pTransfer:K8s环境下的P2P开关- 更多参数配置详见部署指南
四、深入学习与资源
- 官方文档:异构对象开发指南
- 代码实现:异构对象核心源码
- 编译指南:CMake构建说明
openYuanrong数据系统的异构对象技术,通过创新的HBM内存抽象与卡间直通传输,为AI应用提供了高性能的数据层解决方案。无论是大模型推理还是分布式训练,都能显著提升数据访问效率,降低异构计算环境的使用门槛。
想要体验这一强大能力?只需通过以下命令获取源码:
git clone https://gitcode.com/openeuler/yuanrong-datasystem立即开始你的异构计算加速之旅吧!
【免费下载链接】yuanrong-datasystemopenYuanrong 数据系统是以内存为中心、近计算的分布式异构多级缓存,为AI训推、Agent、大数据、微服务等分布式应用提供高性能的数据对象(KV)与数据流访问、HBM/DRAM/SSD 多级缓存以及实例间零拷贝数据共享能力。项目地址: https://gitcode.com/openeuler/yuanrong-datasystem
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考