基于昇腾950实现HierarchicalKV支持,大幅提升推荐系统训推效率,项目已开源!
作者:昇腾实战派
知识地图:https://blog.csdn.net/Lumos_Lovegood/article/details/161455142
背景概述
推荐系统现已成为互联网服务的核心基础设施,在大规模推荐场景下,特征的高效表示与检索是关键挑战。Embedding技术通过将离散特征映射为低维连续向量,为推荐模型提供了可计算的特征表示。然而,随着数据规模的爆炸式增长,Embedding的存储与实时查询性能成为系统瓶颈。
HierarchicalKV为大规模推荐模型提供了高效的Embedding管理解决方案,通过CPU/GPU协同存储架构,在保证高查询性能的同时极大拓展了存储容量。HierarchicalKV-ascend实现了HierarchicalKV在昇腾950等AI芯片上的深度移植与优化,既保持了与原生API的兼容性,又充分利用昇腾平台的并行计算特性显著提升了Embedding操作效率,为昇腾生态下的推荐系统提供了高性能、高可靠的key-value存储方案。
本文将带来HierarchicalKV-ascend的功能与实践展示。
主流特性和API已经全部支持
目前主流特性、API已经全部支持昇腾950硬件运行,后续也将覆盖全量特性,持续迭代更新。
主流特性已全面支持Ascend
| 特性名称 | 支持情况 |
|---|---|
动态扩容 |
✅ |
可定制的淘汰策略 |
✅ |
key/value存储分离 |
✅ |
API接口全面支持Ascend
| 接口名称 | 支持情况 |
|---|---|
init |
✅ |
insert_or_assign |
✅ |
insert_and_evict |
✅ |
find_or_insert* |
✅ |
assign_scores |
✅ |
find* |
✅ |
find_and_update* |
✅ |
export_batch |
✅ |
基于昇腾的功能实操
构建说明
构建产物说明
构建产物包含头文件(*.h)、动态库(*.so)以及benchmark、demo和单元测试的可执行文件。
构建依赖说明
- CANN开发套件包
- googletest
快速构建
下载代码
git clone --recurse-submodules https://gitcode.com/Ascend/HierarchicalKV-ascend
cd HierarchicalKV-ascend
googletest作为子模块,需要在clone代码时添加--recurse-submodules参数同步拉取。
依赖配置
配置CANN环境变量:
请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令:
-
默认路径,root用户安装CANN软件包
export ASCEND_INSTALL_PATH=/usr/local/Ascend/ascend-toolkit/latest -
默认路径,非root用户安装CANN软件包
export ASCEND_INSTALL_PATH=$HOME/Ascend/ascend-toolkit/latest -
指定路径install_path,安装CANN软件包
export ASCEND_INSTALL_PATH=${install_path}/ascend-toolkit/latest
编译运行
bash run.sh -v [SOC_VERSION] -d [DEVICE_ID]
参数说明:
- SOC_VERSION:AI处理器的型号,默认值为
Ascend950PR_9579。在服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为{Chip Name}_{NPU Name}。例如Chip Name取值为Ascend950PR,NPU Name取值为957c,实际配置值为Ascend950PR_957c。- id:设备id,通过
npu-smi info -l命令查出的NPU ID即为设备id。 - chip_id:芯片id,通过
npu-smi info -m命令查出的Chip ID即为芯片id。
- id:设备id,通过
- DEVICE_ID:样例执行的NPU卡号,默认值为0。
- 其他参数说明:请使用
-h参数获取帮助信息。
示例:
bash run.sh -v Ascend950PR_9579 -d 3
执行示例代码后,会依次执行以下流程:
- 项目编译,构建输出件于out目录
- 测试用例,通过ctest指令执行tests目录下的所有测试用例
- 基准测试,运行hkv_benchmark,输出性能测试结果于hkv_benchmark_run.log文件
- 示例程序,运行hkv_demo,输出示例程序结果于hkv_demo_run.log文件
通过上述流程,用户可快速验证HierarchicalKV-ascend在昇腾平台上的功能和性能,为推荐系统Embedding模块的高效部署提供可靠支持。
参与贡献
当前项目已完全开源,欢迎广大开发者积极参与社区贡献,共同完善昇腾平台的HierarchicalKV-ascend生态系统。无论是功能优化、Bug修复、文档完善还是使用案例分享,您的参与都将帮助项目持续成长。
附录
HierarchicalKV-ascend项目仓库: https://gitcode.com/Ascend/HierarchicalKV-ascend
CANN开发套件包安装指导:https://hiascend.com/document/redirect/CannCommunityInstSoftware
googletest项目仓库:https://github.com/google/googletest
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)