作者:昇腾实战派
知识地图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 NameNPU 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。
  • DEVICE_ID:样例执行的NPU卡号,默认值为0。
  • 其他参数说明:请使用-h参数获取帮助信息。

示例:

bash run.sh -v Ascend950PR_9579 -d 3

执行示例代码后,会依次执行以下流程:

  1. 项目编译,构建输出件于out目录
  2. 测试用例,通过ctest指令执行tests目录下的所有测试用例
  3. 基准测试,运行hkv_benchmark,输出性能测试结果于hkv_benchmark_run.log文件
  4. 示例程序,运行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

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐