From 5a0982fa767097953962e4e9c516c594059b1969 Mon Sep 17 00:00:00 2001 From: chengmo Date: Wed, 13 May 2020 21:51:17 +0800 Subject: [PATCH] add reader doc --- doc/custom_dataset_reader.md | 247 ++++++++++++++++++++++++++--------- doc/rec_background.md | 2 + readme.md | 29 ++-- 3 files changed, 201 insertions(+), 77 deletions(-) create mode 100644 doc/rec_background.md diff --git a/doc/custom_dataset_reader.md b/doc/custom_dataset_reader.md index 19e2eaae..7197cab5 100644 --- a/doc/custom_dataset_reader.md +++ b/doc/custom_dataset_reader.md @@ -1,105 +1,232 @@ # PaddleRec 自定义数据集及Reader -## dataset数据读取 -为了能高速运行CTR模型的训练,我们使用`dataset`API进行高性能的IO,dataset是为多线程及全异步方式量身打造的数据读取方式,每个数据读取线程会与一个训练线程耦合,形成了多生产者-多消费者的模式,会极大的加速我们的模型训练。 +## 数据集及reader配置简介 -如何在我们的训练中引入dataset读取方式呢?无需变更数据格式,只需在我们的训练代码中加入以下内容,便可达到媲美二进制读取的高效率,以下是一个比较完整的流程: +以`ctr-dnn`模型举例: -### 引入dataset +```yaml +reader: + batch_size: 2 + class: "{workspace}/../criteo_reader.py" + train_data_path: "{workspace}/data/train" + reader_debug_mode: False +``` +有以上4个需要重点关注的配置选项: + +- batch_size: 网络进行小批量训练的一组数据的大小 +- class: 指定数据处理及读取的`reader` python文件 +- train_data_path: 训练数据所在地址 +- reader_debug_mode: 测试reader语法,及输出是否符合预期的debug模式的开关 + +## 自定义数据集 + +PaddleRec支持模型自定义数据集,在model.config.yaml文件中的reader部分,通过`train_data_path`指定数据读取路径。 + +> 关于数据的tips +> +> - PaddleRec 面向的是推荐与搜索领域,数据以文本格式为主 +> - Dataset模式支持读取文本数据压缩后的`.gz`格式 +> - Dataset模式下,训练线程与数据读取线程的关系强相关,为了多线程充分利用,`强烈建议将文件拆成多个小文件`,尤其是在分布式训练场景下,可以均衡各个节点的数据量。 + +## 自定义Reader + +数据集准备就绪后,需要适当修改或重写一个新的reader以适配数据集或新组网。 + +我们以`ctr-dnn`网络举例`reader`的正确打开方式,网络文件位于`models/rank/dnn`。 + +### Criteo数据集格式 + +CTR-DNN训练及测试数据集选用[Display Advertising Challenge](https://www.kaggle.com/c/criteo-display-ad-challenge/)所用的Criteo数据集。该数据集包括两部分:训练集和测试集。训练集包含一段时间内Criteo的部分流量,测试集则对应训练数据后一天的广告点击流量。 +每一行数据格式如下所示: +```bash +