模型详情

发布者(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)算法的优化和改进。

默认配置

  • 训练数据集、测试数据集预处理:

    • 运行命令(切换到code目录):python3 main.py
  • 训练超参

    • Batch size: 2048
    • Learning rate(LR): 0.001
    • Optimizer: apex.optimizers.NpuFusedSGD
    • Layer:4

支持特性

特性列表 是否支持
分布式训练
混合精度
并行数据

混合精度训练

昇腾910 AI处理器提供自动混合精度功能,可以针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。

开启混合精度

已默认开启混合精度。

训练环境准备

快速上手

  • 数据集准备

    提供了三个经过处理的数据集:Gowalla、Yelp2018和Amazon book,以及一个小数据集LastFM(dataloader.py)。数据集存放在项目目录下data文件中。

模型训练

  • 单击“立即下载”,并选择合适的下载方式下载源码包。

  • 启动训练之前,首先要配置程序运行相关环境变量。

    环境变量配置信息参见:

    Ascend 910训练平台环境变量设置

  • 单卡训练

    1. 配置训练参数。

      首先准备好超参数:指定具体NPU, 若果是GPU则不需要指定

      在文件根目录下code文件夹内修改world.py中的ROOT_PATH

    2. 启动训练。

      启动单卡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
使用模型资源和服务前,请您仔细阅读并理解透彻《昇腾深度学习模型许可协议 3.0》
该页面对您有帮助吗?
我要评分