readme.md 7.7 KB
Newer Older
Y
yaoxuefeng 已提交
1
# 排序模型库
Y
yaoxuefeng 已提交
2 3

## 简介
Z
zengkai 已提交
4
我们提供了常见的排序任务中使用的模型算法的PaddleRec实现, 单机训练&预测效果指标以及分布式训练&预测性能指标等。实现的排序模型包括 [多层神经网络](dnn)[Deep Cross Network](dcn)[DeepFM](deepfm)[xDeepFM](xdeepfm)[Deep Interest Network](din)[Wide&Deep](wide_deep)
Y
yaoxuefeng 已提交
5 6 7 8 9

模型算法库在持续添加中,欢迎关注。

## 目录
* [整体介绍](#整体介绍)
Z
zengkai 已提交
10
    * [模型列表](#模型列表)
Y
yaoxuefeng 已提交
11 12 13 14 15 16 17 18 19 20
* [使用教程](#使用教程)
    * [数据处理](#数据处理)
    * [训练](#训练)
    * [预测](#预测)
* [效果对比](#效果对比)
    * [模型效果列表](#模型效果列表)
* [分布式](#分布式)
    * [模型性能列表](#模型性能列表)

## 整体介绍
Z
zengkai 已提交
21
### 模型列表
Y
yaoxuefeng 已提交
22 23 24 25

|       模型        |       简介        |       论文        |
| :------------------: | :--------------------: | :---------: |
| DNN | 多层神经网络 | -- |
Z
zengkai 已提交
26 27 28 29 30 31
| wide&deep | Deep + wide(LR) | [Wide & Deep Learning for Recommender Systems](https://dl.acm.org/doi/pdf/10.1145/2988450.2988454)(2016) |
| DeepFM | DeepFM | [DeepFM: A Factorization-Machine based Neural Network for CTR Prediction](https://arxiv.org/pdf/1703.04247.pdf)(2017) |
| DCN | Deep Cross Network | [Deep & Cross Network for Ad Click Predictions](https://dl.acm.org/doi/pdf/10.1145/3124749.3124754)(2017) |
| xDeepFM | xDeepFM | [xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems](https://dl.acm.org/doi/pdf/10.1145/3219819.3220023)(2018) |
| DIN | Deep Interest Network | [Deep Interest Network for Click-Through Rate Prediction](https://dl.acm.org/doi/pdf/10.1145/3219819.3219823)(2018) |

Z
zengkai 已提交
32
下面是每个模型的简介(注:图片引用自链接中的论文)
Z
zengkai 已提交
33

Z
zengkai 已提交
34 35
[wide&deep](https://dl.acm.org/doi/pdf/10.1145/2988450.2988454):
<p align="center">
Z
zengkai 已提交
36
<img align="center" src="../../doc/imgs/wide&deep.png">
Z
zengkai 已提交
37 38 39 40
<p>

[DeepFM](https://arxiv.org/pdf/1703.04247.pdf):
<p align="center">
Z
zengkai 已提交
41
<img align="center" src="../../doc/imgs/deepfm.png">
Z
zengkai 已提交
42 43 44 45
<p>

[XDeepFM](https://dl.acm.org/doi/pdf/10.1145/3219819.3220023):
<p align="center">
Z
zengkai 已提交
46
<img align="center" src="../../doc/imgs/xdeepfm.png">
Z
zengkai 已提交
47 48 49 50
<p>

[DCN](https://dl.acm.org/doi/pdf/10.1145/3124749.3124754):
<p align="center">
Z
zengkai 已提交
51
<img align="center" src="../../doc/imgs/dcn.png">
Z
zengkai 已提交
52 53 54 55
<p>

[DIN](https://dl.acm.org/doi/pdf/10.1145/3219819.3219823):
<p align="center">
Z
zengkai 已提交
56
<img align="center" src="../../doc/imgs/din.png">
Z
zengkai 已提交
57
<p>
Y
yaoxuefeng 已提交
58

Y
yaoxuefeng 已提交
59 60 61 62 63 64 65 66 67 68 69 70
## 使用教程(快速开始)
使用样例数据快速开始,参考[训练](###训练) & [预测](###预测)
## 使用教程(复现论文)
为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据,并且调整了batch_size等超参以便在样例数据上更加友好的显示训练&测试日志。如果需要复现readme中的效果请按照如下表格调整batch_size等超参,并使用提供的脚本下载对应数据集以及数据预处理。
|       模型       |       batch_size      |       thread_num      |       epoch_num      |
| :------------------: | :--------------------: | :--------------------: | :--------------------: |
|       DNN        |       1000       |        10       |        1       |
|       DCN        |       512       |       20       |        2       |
|       DeepFM     |       100       |       10       |        30       |
|       DIN        |       32       |       10       |        100       |
|       Wide&Deep  |       40       |       1       |        40       |
|       xDeepFM        |       100       |       1       |        10       |
Y
yaoxuefeng 已提交
71
### 数据处理
Y
yaoxuefeng 已提交
72
参考每个模型目录数据下载&预处理脚本
X
fix  
xjqbest 已提交
73 74 75 76 77

```
sh run.sh
```

X
fix  
xjqbest 已提交
78 79
数据读取默认使用core/reader.py

Y
yaoxuefeng 已提交
80
### 训练
Y
yaoxuefeng 已提交
81
```
Y
yaoxuefeng 已提交
82 83
cd modles/rank/dnn # 进入选定好的排序模型的目录 以DNN为例
python -m paddlerec.run -m paddlerec.models.rank.dnn # 使用内置配置
Y
yaoxuefeng 已提交
84 85 86
# 如果需要使用自定义配置,config.yaml中workspace需要使用改模型目录的绝对路径
# 自定义修改超参后,指定配置文件,使用自定义配置
python -m paddlerec.run -m ./config.yaml
Y
yaoxuefeng 已提交
87
```
Y
yaoxuefeng 已提交
88
### 预测
Y
yaoxuefeng 已提交
89
```
Y
yaoxuefeng 已提交
90 91 92
# 修改对应模型的config.yaml,mode配置infer_runner
# 示例: mode: runner1 -> mode: infer_runner
# infer_runner中 class配置为 class: single_infer
Y
yaoxuefeng 已提交
93
# 如果训练阶段和预测阶段的模型输入一致,phase不需要改动,复用train的即可
Y
yaoxuefeng 已提交
94 95 96

# 修改完config.yaml后 执行:
python -m paddlerec.run -m ./config.yaml # 以DNN为例
Y
yaoxuefeng 已提交
97
```
Y
yaoxuefeng 已提交
98

T
tangwei 已提交
99 100
## 效果对比
### 模型效果 (测试)
Y
yaoxuefeng 已提交
101

T
tangwei 已提交
102
|       数据集        |       模型       |       loss        |       auc          |       acc         |       mae          |
Y
yaoxuefeng 已提交
103 104
| :------------------: | :--------------------: | :---------: |:---------: | :---------: |:---------: |
|       Criteo        |       DNN       |       --        |       0.79395          |       --          |       --          |
F
frankwhzhang 已提交
105 106
|       Criteo        |       DeepFM       |       0.44797        |       0.80460          |       --          |       --          |
|       Criteo        |       DCN       |       0.44704        |       0.80654          |       --          |       --          |
Y
yaoxuefeng 已提交
107
|       Criteo        |       xDeepFM       |       0.48657        |       --          |       --          |       --          |
F
frankwhzhang 已提交
108 109
|       Census-income Data        |       Wide&Deep       |       0.76195         |       0.90577          |       --          |       --          |
|       Amazon Product        |       DIN       |       0.47005        |       0.86379         |       --          |       --          |
Y
yaoxuefeng 已提交
110

111

T
tangwei 已提交
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
## 分布式
### 模型训练性能 (样本/s)
|       数据集        |       模型       |       单机        |       同步 (4节点)          |       同步 (8节点)          |  同步 (16节点)          |  同步 (32节点)          |
| :------------------: | :--------------------: | :---------: |:---------: |:---------: |:---------: |:---------: |
|       Criteo        |       DNN       |       99821        |       148788          |       148788          |  507936          |  856032          |
|       Criteo        |       DeepFM       |       --        |       --          |       --          |   --          |   --          |
|       Criteo        |       DCN       |       --        |       --          |       --          |  --          |  --          |
|       Criteo        |       xDeepFM       |       --        |       --          |       --          |  --          |  --          |
|       Census-income Data        |       Wide&Deep       |       --        |       --          |       --          |  --          |  --          |
|       Amazon Product        |       DIN       |       --        |       --          |       --          |  --          |  --          |

----

|       数据集        |       模型       |       单机        |       异步 (4节点)          |       异步 (8节点)          |  异步 (16节点)          |  异步 (32节点)          |
| :------------------: | :--------------------: | :---------: |:---------: |:---------: |:---------: |:---------: |
|       Criteo        |       DNN       |       99821        |       316918          |       602536          |  1130557          |  2048384          |
|       Criteo        |       DeepFM       |       --        |       --          |       --          |   --          |   --          |
|       Criteo        |       DCN       |       --        |       --          |       --          |  --          |  --          |
|       Criteo        |       xDeepFM       |       --        |       --          |       --          |  --          |  --          |
|       Census-income Data        |       Wide&Deep       |       --        |       --          |       --          |  --          |  --          |
Z
zengkai 已提交
132
|       Amazon Product        |       DIN       |       --        |       --          |       --          |  --          |  --          |