发布者(Publisher):Huawei
应用领域(Application Domain): Recommendation system
版本(Version):1.1
修改时间(Modified) :2022.11.7
大小(Size):63.9MB
框架(Framework):Pytorch 1.5.0
精度(Precision):Mixed
处理器(Processor):昇腾910
应用级别(Categories):Official
描述(Description):基于Pytorch框架的用于推荐任务的简化并增强的图卷积网络训练代码
概述
LightGCN是将图卷积神经网络应用于推荐系统当中,是对神经图协同过滤(NGCF)算法的优化和改进。
参考论文:
参考实现
适配昇腾 AI 处理器的实现:
默认配置
训练数据集、测试数据集预处理:
- 运行命令(切换到code目录):python3 main.py
训练超参
- Batch size: 2048
- Learning rate(LR): 0.001
- Optimizer: apex.optimizers.NpuFusedSGD
- Layer:4
支持特性
特性列表 | 是否支持 |
---|---|
分布式训练 | 否 |
混合精度 | 是 |
并行数据 | 是 |
混合精度训练
昇腾910 AI处理器提供自动混合精度功能,可以针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。
开启混合精度
已默认开启混合精度。
训练环境准备
硬件环境准备请参见各硬件产品文档"驱动和固件安装升级指南"。需要在硬件设备上安装与CANN版本配套的固件与驱动。
当前模型支持的镜像列表如表1所示。
表 1 镜像列表
- ARM架构:ascend-pytorch-arm
- x86架构:ascend-pytorch-x86
快速上手
数据集准备
提供了三个经过处理的数据集:Gowalla、Yelp2018和Amazon book,以及一个小数据集LastFM(dataloader.py)。数据集存放在项目目录下data文件中。
模型训练
单击“立即下载”,并选择合适的下载方式下载源码包。
启动训练之前,首先要配置程序运行相关环境变量。
环境变量配置信息参见:
单卡训练
配置训练参数。
首先准备好超参数:指定具体NPU, 若果是GPU则不需要指定
在文件根目录下code文件夹内修改world.py中的ROOT_PATH
启动训练。
启动单卡GPU训练(切换到code目录)
python3 main.py
启动单卡NPU训练(切换到code目录)
python3 main.py
高级参考
示例代码
├── code
│ ├── checkpoints
│ ├── sources
│ ├── sampling.cpp
│ ├── dataloader.py //数据预处理代码
│ ├── main.py //主方法
│ ├── model.py //模型
│ ├── parse.py //参数
│ ├── Procedure.py
│ ├── register.py
│ ├── utils.py
│ ├── world.py
│ ├──__init__.py
├── data
│ ├── amazon-book
│ ├── train.txt //训练集
│ ├── test.txt //测试集
│ ├── user_list.txt
│ ├── item_list.txt
│ ├── README.md
│ ├── gowalla
│ ├── lastfm
│ ├── yelp2018
├── imgs
│ ├── tf.jpg
│ ├── torch.png
├──.gitignore
├──requirements.txt
├──README.md
训练过程
- 训练日志中包括如下信息。
[TEST]
{'precision': array([0.04360305]), 'recall': array([0.16279419]), 'ndcg': array([0.10995968])}
EPOCH[981/1000] loss0.014-|Sample:19.08|-15.86081600189209-129.12324307625076
EPOCH[982/1000] loss0.014-|Sample:20.66|-15.889200210571289-128.89257941613948
EPOCH[983/1000] loss0.014-|Sample:19.26|-15.9640634059906-128.28813992504422
EPOCH[984/1000] loss0.014-|Sample:21.07|-15.882123708724976-128.9500093035363
EPOCH[985/1000] loss0.014-|Sample:20.87|-15.907534122467041-128.7440268386728
EPOCH[986/1000] loss0.014-|Sample:19.24|-15.966394901275635-128.2694066295689
EPOCH[987/1000] loss0.014-|Sample:19.34|-15.967133283615112-128.26347495336452
EPOCH[988/1000] loss0.014-|Sample:19.55|-16.01818013191223-127.85472401573699
EPOCH[989/1000] loss0.014-|Sample:21.30|-15.967095851898193-128.26377564186356
EPOCH[990/1000] loss0.014-|Sample:21.88|-15.978184938430786-128.17475876588105
运行结果
GPU
EPOCH loss Recall ndcg 110 0.024 0.1257 0.0752 120 0.023 0.1282 0.0771 130 0.022 0.1298 0.0779 NPU
EPOCH loss Recall ndcg 110 0.024 0.1085 0.0674 120 0.023 0.1107 0.0690 130 0.022 0.1128 0.0702