Skip to content

Commit a677aae

Browse files
authored
Merge pull request #544 from frankwhzhang/contri_0910
add contribute.md
2 parents 24295b3 + 2ab02b1 commit a677aae

File tree

2 files changed

+96
-1
lines changed

2 files changed

+96
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ python -u tools/static_trainer.py -m models/rank/dnn/config.yaml # 静态图训
8484
* [分布式训练](doc/fleet_mode.md)
8585

8686
### 进阶教程
87+
* [提交规范](doc/contribute.md)
8788
* [自定义Reader](doc/custom_reader.md)
8889
* [自定义模型](doc/model_develop.md)
8990
* [yaml配置说明](doc/yaml.md)

doc/contribute.md

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,96 @@
11
# PaddleRec 贡献代码
2-
> 占位
2+
3+
本章介绍如何开发并提交一个模型,以动态图为例
4+
5+
## 提交方式
6+
7+
PaddleRec套件的准则基本和主Paddle的一致,请参考[官网文档](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/10_contribution/local_dev_guide_cn.html)
8+
9+
请使用Pre-commit钩子,否则CI代码检测不会通过!
10+
11+
请使用Pre-commit钩子,否则CI代码检测不会通过!
12+
13+
请使用Pre-commit钩子,否则CI代码检测不会通过!
14+
15+
## 代码风格
16+
17+
Python代码风格,请参考主流的[开源风格指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/)
18+
19+
## 模型示例
20+
21+
一个完整的模型示例请参考[MMoE](https://github.com/PaddlePaddle/PaddleRec/tree/master/models/multitask/mmoe)
22+
23+
## 训练/预估执行器
24+
25+
通用的执行器在tools目录下,分别对应trainer.py/infer.py
26+
27+
Tips1: 有一些特殊的处理逻辑或者评估方法,可以在模型目录下面单独添加执行器,如models/recall/word2vec/infer.py
28+
29+
Tips2: 如果是自己的执行器,日志规范请参考通用执行器。
30+
31+
## 模型目录
32+
33+
具体的模型目录取决于模型的应用方向,比如rank/recall/multitask等,需要在模型目录下创建__init__.py文件
34+
35+
Tips1: 如果不确定在哪个目录的可以先按照Rank目录提交PR,后续Review过程中再修改
36+
37+
Tips2: 如有条件可同步修改首页模型目录指引
38+
39+
## 文档Readme
40+
41+
具体请参考[MMoE](https://github.com/PaddlePaddle/PaddleRec/tree/master/models/multitask/mmoe/README.md)
42+
43+
需要至少包含模型介绍,运行环境,数据处理,快速开始,模型组网,复现结果
44+
45+
Tips1: 如果有条件请同步添加英文文档Readme_en.md
46+
47+
Tips2: 文档很重要,文档很重要,文档很重要!重要的事情说三遍
48+
49+
## 数据
50+
51+
样例数据统一以sample_data命名,在模型目录下面,只支持小样本数据
52+
53+
全量数据请放到根目录下的dataset目录,详细说明参考[这里](https://github.com/PaddlePaddle/PaddleRec/tree/master/datasets)
54+
55+
Tips1: sample_data需要足够小,否则pre-commit会报文件太大的错误
56+
57+
Tips2: 全量数据如需要存放在云端,可联系我们
58+
59+
## 数据读取Reader
60+
61+
PaddleRec对主流的数据集提供了相关的Reader脚本,可参考相关模型下的xxx_reader.py, 复制到模型目录下
62+
63+
如需开发自定义Reader,请参考[Reader](https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/custom_reader.md)
64+
65+
## 模型组网net
66+
67+
考虑到动静统一的需求,我们将模型组网的逻辑拆分成两部分 net.py 和 dygraph_model.py(动态图)
68+
69+
Tips1: 模型文件名必须是net.py和dygraph_model.py
70+
71+
### net.py
72+
73+
采用Class方式,嵌套定义模型,Class类必须继承paddle.nn.Layer
74+
75+
__init__方法定义参数,forward方法定义前向计算逻辑
76+
77+
Tips1: 对于数组定义而不是self指向的参数,需要显示通过add_sublayer()方法关联到此模型,否则模型class找不到这个参数
78+
79+
Tips2: 由于net.py中是动态图和静态图通用组网,所以要求使用的API必须是2.0以后的API, 同时不能出现fluid 旧的字样
80+
81+
### dygraph_model.py
82+
83+
dygraph_model包含了数据feed逻辑,loss计算逻辑,优化器定义逻辑和指标定义逻辑,详细介绍参考[如何添加自定义模型](https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/model_develop.md)
84+
85+
86+
## 配置文件yaml
87+
88+
为了更方便的快速运行和实现论文精度,我们要求需要提供两个yaml文件,分别是config.yaml和config_bigdata.yaml
89+
90+
yaml的详细配置说明请参考[config.yaml配置说明](https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/yaml.md)
91+
92+
Tips1: config_bigdata中的数据路径请配置dataset的相对路径,方便一键执行
93+
94+
95+
96+
## FAQ

0 commit comments

Comments
 (0)