基于昇腾RecSDK的Recsys-GR部署指南
作者:昇腾实战派
知识地图:https://blog.csdn.net/Lumos_Lovegood/article/details/161455142
一、概述
生成式推荐(Generative Recommendation, GR)作为新一代推荐技术范式,突破了传统协同过滤、深度学习推荐模型的特征交互局限,通过生成式建模实现用户长序列兴趣的精准捕捉,已成为搜广推领域的核心技术方向。
DynamicEmb 作为昇腾 RecSDK 推荐开发套件基于开源项目TorchRec以及Nvidia DynamicEmb 开发的动态嵌入表方案,专为推荐场景海量稀疏特征训练设计,提供大规模分布式稀疏表、增量特征准入淘汰以及基于昇腾平台HierarchicalKV-ascend(HKV)高性能key-value存储加速库实现的动态稀疏表算子能力,适配昇腾 NPU 硬件架构。为生成式推荐在昇腾平台的落地提供实践参考。
本文基于DynamicEmb框架,完成recsys-gr模型的端到端迁移适配与单卡跑通,并使用NPU的HSTU融合算子来实现了性能优化。
二、环境版本与依赖清单
本文以Ascend950PR芯片平台为算力设备,主要软件配套及对应版本号如下:
| python | PyTorch | torch_npu | torchrec | fbgemm_gpu |
|---|---|---|---|---|
| 3.11 | 2.7.1 | 2.7.1 | 1.2.0+npu | 1.2.0 |
DynamicEmb 框架参考链接:https://gitcode.com/Ascend/RecSDK/blob/develop/training/torch_rec_v2/dynamic_emb
recsys-gr模型的开源参考链接为 https://github.com/NVIDIA/recsys-examples/tree/main/examples,克隆源码并固定版本为: v25.09。
参考 https://gitcode.com/Ascend/RecSDK/blob/develop/training/torch_rec_v2/torchrec_npu/README.md 安装torchrec_npu。
参考 https://gitcode.com/Ascend/MindSpeed/tree/core_r0.14.0下载指定版本的MindSpeed (core_r0.14.0) 和 Megatron-LM (core_v0.14.0)。
三、环境搭建准备
3.1 运行镜像搭建与容器启动
参考 https://gitcode.com/Ascend/RecSDK/blob/develop/docs/zh/torch/build_torch_rec_v2_images/README.md,使用Dockfile文件构建Pytorch基础镜像,避免基础环境依赖冲突。
基于镜像启动容器,完成NPU设备挂载,环境配置与资源分配。
container_name=$1
image_name=$2
docker run \
-it \
--name "${container_name}" \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--shm-size="300g" \
-v /etc/localtime:/etc/localtime \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /home/:/home/ \
"${image_name}" \
/bin/bash
根据实际容器环境设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/driver/bin/setenv.bash
export ASCEND_CANN_PACKAGE_PATH=/usr/local/Ascend/ascend-toolkit/latest
export ASCEND_HOME_PATH=/usr/local/Ascend/ascend-toolkit/latest
export LD_LIBRARY_PATH=/usr/local/python3.11.0/lib/python3.11/site-packages:$LD_LIBRARY_PATH
3.2 样例准备
3.2.1 运行目录准备
git clone https://gitcode.com/Ascend/RecSDK -b develop_examples_and_tools
cd RecSDK//torch_rec_v2_examples/gr
3.2.2 安装gin-config
pip3 install gin-config
3.2.3 模型源码适配
进入当前目录,下载开源代码并切换至v25.09版本,使用patch文件对模型进行适配修改。
git clone https://github.com/NVIDIA/recsys-examples.git
cd recsys-examples && git checkout v25.09
cp -f ../gr_npu.patch ./ && git apply gr_npu.patch
3.2.4 下载分布式训练依赖的 MindSpeed 与 Megatron-LM 框架
下载指定版本的MindSpeed (core_r0.14.0) 和 Megatron-LM (core_v0.14.0),将其放置在当前目录的Mindspeed文件夹和Megatron-LM文件夹中。
-- gr
|-- Mindspeed
|-- Megatron-LM
|-- recsys-examples
3.2.5 数据集准备
参考 https://github.com/NVIDIA/recsys-examples/blob/v25.09/examples/hstu/README.md#dataset-preprocessing 准备数据集。本样例采用ml-20m公开数据集作为基准测试集。
-- tmp_data
|-- ml-20m
将tmp_data放置在recsys-examples/examples/hstu路径下
3.2.6 模型运行脚本
将运行脚本run.sh拷贝至hstu目录
cp ../run.sh ./examples/hstu/
cd ./examples/hstu
修改run.sh的MEGATRON_DIR和MINDSPEED_DIR为实际路径,修改WORLD_SIZE和ASCEND_RT_VISIBLE_DEVICE为实际使用卡数和卡号
环境变量NPU_PROFILE控制是否开启profiling,默认为0。
3.3 DynamicEmb及算子编译安装
3.3.1 安装 RecSDK NPU 自定义算子
参考 https://gitcode.com/Ascend/RecSDK/blob/develop/cust_op/ascendc_op/ai_core_op/asynchronous_complete_cumsum/c310/README.md 编译安装 c310分支的RecSDK NPU算子及算子适配层。
recsys-gr 模型迁移适配所需自定义算子有asynchronous_complete_cumsum、dense_to_jagged、jagged_to_padded_dense、hstu_dense_forward、hstu_dense_backward、invert_permute及permute2d_sparse_data。
模型将自动使用NPU融合算子进行性能优化,提升训练效率。
3.3.2 DynamicEmb编译安装
下载RecSDK以及作为submodule的HierarchicalKV-ascend并进行编译安装
git clone --recursive https://gitcode.com/Ascend/RecSDK.git
DynamicEmb源码安装编译参考 https://gitcode.com/Ascend/RecSDK/blob/develop/training/torch_rec_v2/dynamic_emb/README.md
四、模型验证运行
进入recsys-examples/examples/hstu,运行脚本
bash run.sh

模型训练完成后,系统将输出训练日志和评估指标。对比评估AUC与GPU复现结果相比,符合精度要求。
五、常见问题及解决方案
5.1 模型适配问题
问题:模型源码适配失败,patch应用不成功
解决方案:
- 确认 recsys-examples版本应为v25.09
- 检查文件路径是否正确,patch应放置的路径为/recsys-examples文件夹下
5.2 数据集问题
问题:模型无法找到数据集
解决方案:
- 确认数据集已正确放置在
recsys-examples/examples/hstu/tmp_data/ml-20m - 确认数据集已经按要求经过预处理
5.3 算子编译及安装问题
问题:RecSDK NPU自定义算子编译失败或DynamicEmb软件包编译安装失败
解决方案:
- 确认已正确安装CANN Toolkit和相关依赖
- 正确设置ASCEND_CANN_PACKAGE_PATH、ASCEND_HOME_PATH以及python site-packages路径
六、总结
本文阐述了基于昇腾 RecSDK DynamicEmb 框架的 GR 生成式推荐模型适配实践,验证了DynamicEmb框架在生成式推荐场景的适配性。
参考资料:
TorchRec介绍: https://pytorch.org/torchrec
TorchRec开源项目:https://github.com/pytorch/torchrec
recsys-examples开源项目:https://github.com/NVIDIA/recsys-examples
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)