/PaddleRec

大规模推荐模型训练工具

Primary LanguagePythonApache License 2.0Apache-2.0


Release License Slack

什么是PaddleRec

  • 源于飞桨生态的搜索推荐模型一站式开箱即用工具
  • 适合初学者,开发者,研究者从调研,训练到预测部署的全流程解决方案
  • 包含语义理解、召回、粗排、精排、多任务学习、融合等多个任务的推荐搜索算法库
  • 配置yaml自定义选项,即可快速上手使用单机训练、大规模分布式训练、离线预测、在线部署

PadlleRec概览

推荐系统-流程概览

便捷安装

环境要求

  • Python 2.7/ 3.5 / 3.6 / 3.7

  • PaddlePaddle >= 1.7.2

  • 操作系统: Windows/Mac/Linux

    Windows下目前仅提供单机训练,建议使用Linux

安装命令

  • 安装方法一<PIP源直接安装>:

    python -m pip install paddle-rec
  • 安装方法二

    源码编译安装

    1. 安装飞桨 注:需要用户安装版本 >1.7.2 的飞桨
    python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
    1. 源码安装PaddleRec
    git clone https://github.com/PaddlePaddle/PaddleRec/
    cd PaddleRec
    python setup.py install
    

快速启动

启动内置模型的默认配置

目前框架内置了多个模型,一行命令即可使用内置模型开始单机训练和本地模拟分布式训练。

本地模拟分布式(local_cluster)为1个server + 1个trainer的参数服务器模式

我们以排序模型中的dnn模型为例介绍PaddleRec的简单使用。训练数据来源为Criteo数据集,我们从中截取了100条方便您快速上手体验完整的PaddleRec流程。

# 使用CPU进行单机训练
python -m paddlerec.run -m paddlerec.models.rank.dnn  

启动内置模型的自定配置

若您复用内置模型,对yaml配置文件进行了修改,如更改超参,重新配置数据后,可以直接使用paddlerec运行该yaml文件。

我们以dnn模型为例,在paddlerec代码目录下:

cd paddlerec

修改dnn模型的超参配置,例如将迭代训练轮数从10轮修改为5轮:

train:
  # epochs: 10
  epochs: 5

在Linux环境下,可以使用vim等文本编辑工具修改yaml文件:

vim ./models/rank/dnn/config.yaml
# 键入 i, 进入编辑模式
# 修改yaml文件配置
# 完成修改后,点击esc,退出编辑模式
# 键入 :wq 保存文件并退出 

完成dnn模型models/rank/dnn/config.yaml的配置修改后,运行dnn模型:

# 使用自定配置进行训练
python -m paddlerec.run -m ./models/rank/dnn/config.yaml 

分布式训练

分布式训练需要配置config.yaml,加入或修改engine选项为clusterlocal_cluster,以进行分布式训练,或本地模拟分布式训练。

本地模拟分布式训练

我们以dnn模型为例,在paddlerec代码目录下,修改dnn模型的config.yaml文件:

train:
  #engine: single
  engine: local_cluster

然后启动paddlerec训练:

# 进行本地模拟分布式训练
python -m paddlerec.run -m ./models/rank/dnn/config.yaml  

集群分布式训练

我们以dnn模型为例,在paddlerec代码目录下,首先修改dnn模型config.yaml文件:

train:
  #engine: single
  engine: cluster

再添加分布式启动配置文件backend.yaml,具体配置规则在分布式训练教程中介绍。最后启动paddlerec训练:

# 配置好 mpi/k8s/paddlecloud集群环境后
python -m paddlerec.run -m ./models/rank/dnn/config.yaml -b backend.yaml

支持模型列表

方向 模型 单机CPU训练 单机GPU训练 分布式CPU训练
内容理解 Text-Classifcation x
内容理解 TagSpace x
召回 DSSM x
召回 MultiView-Simnet x
召回 TDM x
召回 Word2Vec x
召回 SSR
召回 Gru4Rec
召回 Youtube_dnn
召回 NCF
排序 Dnn x
排序 DeepFM x
排序 xDeepFM x
排序 DIN x
排序 Wide&Deep x
多任务 ESMM
多任务 MMOE
多任务 ShareBottom

文档

背景介绍

新手教程

进阶教程

开发者教程

关于PaddleRec性能

FAQ

社区

反馈

如有意见、建议及使用中的BUG,欢迎在GitHub Issue提交

版本历史

  • 2020.5.14 - PaddleRec v0.1

许可证书

本项目的发布受Apache 2.0 license许可认证。