---
title: Awesome_RecSystem_ID2951-PyTorch-模型库-ModelZoo-昇腾社区
description: 生态贡献模型
keywords: Awesome,RecSystem,ID,PyTorch,模型库,ModelZoo,昇腾社区,基本信息
url: https://www.hiascend.com/software/modelzoo/models/detail/9ade0430aa77496aa848d24969613159?index_id=9ade0430aa77496aa848d24969613159
section: (其他)
---

# Awesome_RecSystem_ID2951-PyTorch-模型库-ModelZoo-昇腾社区

URL: https://www.hiascend.com/software/modelzoo/models/detail/9ade0430aa77496aa848d24969613159?index_id=9ade0430aa77496aa848d24969613159
描述: 生态贡献模型
关键词: Awesome,RecSystem,ID,PyTorch,模型库,ModelZoo,昇腾社区,基本信息

ModelZoo主页

主页 [了解详情](https://www.hiascend.com/software/modelzoo)大模型 [了解详情](https://www.hiascend.com/software/modelzoo/big-models)模型库 [了解详情](https://www.hiascend.com/software/modelzoo/models)工具库 [了解详情](https://www.hiascend.com/software/modelzoo/tools)权重库 [了解详情](https://www.hiascend.com/software/modelzoo/datasets)ModelShow [了解详情](https://www.hiascend.com/software/modelzoo/modelshow)DeepSeek专区HOT [了解详情](https://www.hiascend.com/developer/deepseek)文档中心论坛交流

主页 [了解详情](https://www.hiascend.com/software/modelzoo)大模型 [了解详情](https://www.hiascend.com/software/modelzoo/big-models)模型库 [了解详情](https://www.hiascend.com/software/modelzoo/models)工具库 [了解详情](https://www.hiascend.com/software/modelzoo/tools)权重库 [了解详情](https://www.hiascend.com/software/modelzoo/datasets)ModelShow [了解详情](https://www.hiascend.com/software/modelzoo/modelshow)DeepSeek专区HOT [了解详情](https://www.hiascend.com/developer/deepseek)文档中心论坛交流

模型库 [了解详情](https://www.hiascend.com/software/modelzoo/models)

Awesome_RecSystem_ID2951-PyTorch

## Awesome_RecSystem_ID2951-PyTorch

推荐PyTorch训练91次浏览2023/08/21更新

查看模型源码

Awesome_RecSystem_ID2951-PyTorch

查看模型源码

...

- 基本信息 [了解详情](https://www.hiascend.com/#%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF.md)
- 概述 [了解详情](https://www.hiascend.com/#%E6%A6%82%E8%BF%B0.md)
- 训练环境准备 [了解详情](https://www.hiascend.com/#%E8%AE%AD%E7%BB%83%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.md)
- 快速上手 [了解详情](https://www.hiascend.com/#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.md)
- 迁移学习指导 [了解详情](https://www.hiascend.com/#%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0%E6%8C%87%E5%AF%BC.md)
- 高级参考 [了解详情](https://www.hiascend.com/#%E9%AB%98%E7%BA%A7%E5%8F%82%E8%80%83.md)

## 基本信息

发布者（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）的模型 。

- 参考论文：

Jianxun Lian, Xiaohuan Zhou, Fuzheng Zhang. “xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems.” [了解详情](https://arxiv.org/pdf/1803.05170.pdf)
- 参考实现
- 适配昇腾 AI 处理器的实现：

https://gitee.com/ascend/pytorch/blob/2.0.4.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md#%E5%AE%89%E8%A3%85PyTorch%E6%A1%86%E6%9E%B6md [了解详情](https://gitee.com/ascend/pytorch/blob/2.0.4.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md#%E5%AE%89%E8%A3%85PyTorch%E6%A1%86%E6%9E%B6md)

## 默认配置

- 训练数据集、测试数据集预处理：

- 运行 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，从而在精度损失很小的情况下提升系统性能并减少内存使用。

## 开启混合精度

已默认开启混合精度。

## 训练环境准备

- 硬件环境准备请参见各硬件产品文档"驱动和固件安装升级指南 [了解详情](https://gitee.com/ascend/pytorch/blob/2.0.4.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md#%E5%AE%89%E8%A3%85PyTorch%E6%A1%86%E6%9E%B6md)"。需要在硬件设备上安装与CANN版本配套的固件与驱动。

当前模型支持的镜像列表如表1所示。

表 1镜像列表

| 镜像名称 | AscendPytorch版本 | 配套CANN版本 |
| --- | --- | ---|
| ARM架构：ascend-pytorch-armx86架构：ascend-pytorch-x86 | 2.0.2 | 5.0.2 |

## 快速上手

- 数据集准备

1. 模型训练使用Criteo数据集 [了解详情](https://www.kaggle.com/datasets/mrkmakr/criteo-dataset)。
2. 数据集训练前需要做预处理操作。
3. 数据集处理后，对应路径下会产生训练集和测试集数据。

## 模型训练

- 单击“立即下载”，并选择合适的下载方式下载源码包。
- 启动训练之前，首先要配置程序运行相关环境变量。

环境变量配置信息参见：

Ascend 910训练平台环境变量设置 [了解详情](https://gitee.com/ascend/pytorch/blob/2.0.4.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md#%E5%AE%89%E8%A3%85PyTorch%E6%A1%86%E6%9E%B6md)
- 单卡训练

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 | Train(单步耗时s) |
| --- | --- | --- | ---|
| 1st | 0.79872 | 0.45048 | 0.06606 |
| 2nd | 0.79959 | 0.44973 | 0.06581 |
| 3rd | 0.80052 | 0.44896 | 0.06576 |
| 4th | 0.80058 | 0.44855 | 0.06581 |
| 5th | 0.80064 | 0.44814 | 0.06621 |

- NPU

| Epochs | AUC | LogLoss | Train(单步耗时s) |
| --- | --- | --- | ---|
| 1st | 0.79868 | 0.45095 | 0.08454 |
| 2nd | 0.79981 | 0.44992 | 0.08446 |
| 3rd | 0.80034 | 0.44933 | 0.08444 |
| 4th | 0.80041 | 0.44931 | 0.08471 |
| 5th | 0.80045 | 0.44927 | 0.08438 |

| 版本 | 更新时间 | 精度 | 处理器 | CANN版本 | 操作 |
| --- | --- | --- | --- | --- | ---|

暂无数据

使用模型资源和服务前，请您仔细阅读并理解透彻《昇腾深度学习模型许可协议 3.0》 [了解详情](https://www.hiascend.com/legal/modelzoo_models_license)
