模型详情

发布者(Publisher):Huawei

应用领域(Application Domain): Click-Through-Rate

版本(Version):1.1

修改时间(Modified) :2022.10.26

大小(Size):237KB

框架(Framework):Pytorch 1.5.0

精度(Precision):Mixed

处理器(Processor):昇腾910

应用级别(Categories):Official

描述(Description):基于Pytorch框架的广告点击率预测模型xDeepFM训练代码

概述

xDeepFM模型是用于预测广告点击率的模型,为了实现自动学习显式的高阶特征交互,同时使得交互发生在向量级上,xDeepFM首先提出了一种新的名为压缩交互网络(Compressed Interaction Network,简称CIN)的模型 。

默认配置

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

    • 运行 data/forXDeepFM/xDeepFM_dataPreprocess_PyTorch.py 实现数据集预处理
    • 运行命令(切换到forXDeepFM目录):python3 xDeepFM_dataPreprocess_PyTorch.py
  • 训练超参

    • Batch size: 2048
    • Learning rate(LR): 0.01
    • Optimizer: apex.optimizers.NpuFusedSGD
    • Train epoch: 5

支持特性

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

混合精度训练

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

开启混合精度

已默认开启混合精度。

训练环境准备

快速上手

  • 数据集准备
  1. 模型训练使用Criteo数据集

  2. 数据集训练前需要做预处理操作。

  3. 数据集处理后,对应路径下会产生训练集和测试集数据。

模型训练

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

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

    环境变量配置信息参见:

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

  • 单卡训练

    1. 配置训练参数。

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

    2. 启动训练。

      启动单卡GPU训练(切换到Model目录)

      python3 xDeepFM_PyTorch_GPU_1P.py

      启动单卡NPU训练(切换到Model目录)

      python3 xDeepFM_PyTorch_NPU_1P.py

迁移学习指导

  • 数据集准备。

    数据集要求如下:

    1. 获取数据。

      将下载的train.txt文件放到 data/Criteo 目录后,进行预处理数据集,产生的数据集存放路径如下:

      • 训练集: /forXDeepFM/train_data
      • 测试集: /forXDeepFM/test_data
    2. 数据集文件结构,目录参考:

          |--|train_data
          |  part-0
          |  part-1
          |  part-2
          |  ...
          |--|test_data
          |  part-9
          |  part-42
          |  ...

高级参考

示例代码

├── data
│    ├── Criteo                    
│         ├── forXDeepFM
│              ├──xDeepFM_dataPreprocess.py    //数据预处理代码
│              ├── aid_data   
│              ├── raw_data 
│              ├── test_data                   //测试集
│              ├── train_data                  //训练集
│         ├──train.txt
│         ├──util.py
│         ├──__init__.py   
│    ├──__init__.py   
├── Model
│    ├── common                    
│    ├── util   
│    ├──xDeepFM_PyTorch.py                     //xDeepFM_PyTorch原代码
│    ├──xDeepFM_PyTorch_GPU_1P.py              //GPU运行    
│    ├──xDeepFM_PyTorch_NPU_1P.py              //NPU迁移              
├── output
│    ├── log                                   //训练日志
│    ├── prof                          
├── util
│    ├──load_data_util.py                            
│    ├──train_model_util_PyTorch.py
│    ├──train_model_util_TensorFlow.py
├──LICENSE
├──README.md

训练过程

  • 训练日志中包括如下信息。
[92m08-08 12:29:16[0m gpus_per_node:1
[92m08-08 12:29:31[0m Train Epoch: 1 [0 / 41130217 (0%)]	Loss:0.753818
[92m08-08 12:32:41[0m Train Epoch: 1 [2048000 / 41130217 (5%)]	Loss:0.485503
[92m08-08 12:35:50[0m Train Epoch: 1 [4096000 / 41130217 (10%)]	Loss:0.462001
[92m08-08 12:38:58[0m Train Epoch: 1 [6144000 / 41130217 (15%)]	Loss:0.480042
[92m08-08 12:42:07[0m Train Epoch: 1 [8192000 / 41130217 (20%)]	Loss:0.467268
...
[92m08-08 17:53:26[0m Train Epoch: 5 [34816000 / 41130217 (85%)]	Loss:0.450160
[92m08-08 17:56:35[0m Train Epoch: 5 [36864000 / 41130217 (90%)]	Loss:0.476156
[92m08-08 17:59:30[0m Train Epoch: 5 [38912000 / 41130217 (95%)]	Loss:0.465982
[92m08-08 18:02:38[0m Train Epoch: 5 [40960000 / 41130217 (100%)]	Loss:0.475123
[92m08-08 18:02:42[0m FPS: 0.66
[92m08-08 18:08:46[0m Roc AUC: 0.80064
[92m08-08 18:08:46[0m Test set: Average loss: 0.44814

运行结果

  • GPU

    Epochs AUC LogLoss
    1st 0.79872 0.45048
    2nd 0.79959 0.44973
    3rd 0.80052 0.44896
    4th 0.80058 0.44855
    5th 0.80064 0.44814
  • NPU

    Epochs AUC LogLoss
    1st 0.79868 0.45095
    2nd 0.79981 0.44992
    3rd 0.80034 0.44933
    4th 0.80041 0.44931
    5th 0.80045 0.44927
使用模型资源和服务前,请您仔细阅读并理解透彻《昇腾深度学习模型许可协议 3.0》
该页面对您有帮助吗?
我要评分