Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
PaddleRec
提交
908ee01b
P
PaddleRec
项目概览
BaiXuePrincess
/
PaddleRec
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleRec
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleRec
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
908ee01b
编写于
6月 05, 2020
作者:
C
chengmo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
3c4f8feb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
139 addition
and
77 deletion
+139
-77
doc/model.md
doc/model.md
+78
-0
doc/quick_start.md
doc/quick_start.md
+2
-1
doc/yaml.md
doc/yaml.md
+59
-76
未找到文件。
doc/model.md
浏览文件 @
908ee01b
# 模型调参
PaddleRec模型调参需要同时关注两个部分
1.
model.py
2.
config.yaml 中 hyper_parameters的部分
我们以
`models/rank/dnn`
为例介绍两者的对应情况:
```
yaml
hyper_parameters
:
optimizer
:
class
:
Adam
learning_rate
:
0.001
sparse_feature_number
:
1000001
sparse_feature_dim
:
9
fc_sizes
:
[
512
,
256
,
128
,
32
]
```
## optimizer
该参数决定了网络参数训练时使用的优化器,class可选项有:
`SGD`
/
`Adam`
/
`AdaGrad`
,通过learning_rate选项设置学习率。
在
`PaddleRec/core/model.py`
中,可以看到该选项是如何生效的:
```
python
if
name
==
"SGD"
:
reg
=
envs
.
get_global_env
(
"hyper_parameters.reg"
,
0.0001
,
self
.
_namespace
)
optimizer_i
=
fluid
.
optimizer
.
SGD
(
lr
,
regularization
=
fluid
.
regularizer
.
L2DecayRegularizer
(
reg
))
elif
name
==
"ADAM"
:
optimizer_i
=
fluid
.
optimizer
.
Adam
(
lr
,
lazy_mode
=
True
)
elif
name
==
"ADAGRAD"
:
optimizer_i
=
fluid
.
optimizer
.
Adagrad
(
lr
)
```
## sparse_feature_number & sparse_feature_dim
该参数指定了ctr-dnn组网中,Embedding表的维度,在
`PaddelRec/models/rank/dnn/model.py`
中可以看到该参数是如何生效的:
```
python
self
.
sparse_feature_number
=
envs
.
get_global_env
(
"hyper_parameters.sparse_feature_number"
)
self
.
sparse_feature_dim
=
envs
.
get_global_env
(
"hyper_parameters.sparse_feature_dim"
)
def
embedding_layer
(
input
):
emb
=
fluid
.
layers
.
embedding
(
input
=
input
,
is_sparse
=
True
,
is_distributed
=
self
.
is_distributed
,
size
=
[
self
.
sparse_feature_number
,
self
.
sparse_feature_dim
],
param_attr
=
fluid
.
ParamAttr
(
name
=
"SparseFeatFactors"
,
initializer
=
fluid
.
initializer
.
Uniform
()),
)
emb_sum
=
fluid
.
layers
.
sequence_pool
(
input
=
emb
,
pool_type
=
'sum'
)
return
emb_sum
```
## fc_sizes
该参数指定了ctr-dnn模型中的dnn共有几层,且每层的维度,在在
`PaddelRec/models/rank/dnn/model.py`
中可以看到该参数是如何生效的:
```
python
hidden_layers
=
envs
.
get_global_env
(
"hyper_parameters.fc_sizes"
)
for
size
in
hidden_layers
:
output
=
fluid
.
layers
.
fc
(
input
=
fcs
[
-
1
],
size
=
size
,
act
=
'relu'
,
param_attr
=
fluid
.
ParamAttr
(
initializer
=
fluid
.
initializer
.
Normal
(
scale
=
1.0
/
math
.
sqrt
(
fcs
[
-
1
].
shape
[
1
]))))
fcs
.
append
(
output
)
```
doc/quick_start.md
浏览文件 @
908ee01b
# 快速开始
\ No newline at end of file
# 十分钟上手PaddleRec
doc/yaml.md
浏览文件 @
908ee01b
```
yaml
# 全局配置
# Debug 模式开关,Debug模式下,会打印OP的耗时及IO占比
debug
:
false
# PaddleRec yaml配置说明
## 全局变量
| 名称 | 类型 | 取值 | 是否必须 | 作用描述 |
| :-------: | :----: | :-----------------------------------: | :------: | :------------------------------------------------: |
| workspace | string | 路径 / paddlerec.models.{方向}.{模型} | 是 | 指定model/reader/data所在位置 |
| mode | string | runner名称 | 是 | 指定当次运行使用哪个runner |
| debug | bool | True / False | 否 | 当dataset.mode=QueueDataset时,开启op耗时debug功能 |
## runner变量
| 名称 | 类型 | 取值 | 是否必须 | 作用描述 |
| :---------------------------: | :----------: | :-------------------------------: | :------: | :---------------------------------------------: |
| name | string | 任意 | 是 | 指定runner名称 |
| class | string | single_train(默认) / single_infer | 是 | 指定运行runner的类别(单机/分布式, 训练/预测) |
| device | string | cpu(默认) / gpu | 否 | 程序执行设备 |
| epochs | int | >= 1 | 否 | 模型训练迭代轮数 |
| init_model_path | string | 路径 | 否 | 初始化模型地址 |
| save_checkpoint_interval | int | >= 1 | 否 | Save参数的轮数间隔 |
| save_checkpoint_path | string | 路径 | 否 | Save参数的地址 |
| save_inference_interval | int | >= 1 | 否 | Save预测模型的轮数间隔 |
| save_inference_path | string | 路径 | 否 | Save预测模型的地址 |
| save_inference_feed_varnames | list[string] | 组网中指定Variable的name | 否 | 预测模型的入口变量name |
| save_inference_fetch_varnames | list[string] | 组网中指定Variable的name | 否 | 预测模型的出口变量name |
| print_interval | int | >= 1 | 否 | 训练指标打印batch间隔 |
## phase变量
| 名称 | 类型 | 取值 | 是否必须 | 作用描述 |
| :----------: | :----: | :----------: | :------: | :-----------------------------: |
| name | string | 任意 | 是 | 指定phase名称 |
| model | string | model.py路径 | 是 | 指定Model()所在的python文件地址 |
| dataset_name | string | dataset名称 | 是 | 指定使用哪个Reader |
| thread_num | int | >= 1 | 否 | 模型训练线程数 |
## dataset变量
| 名称 | 类型 | 取值 | 是否必须 | 作用描述 |
| :------------: | :----: | :-----------------------: | :------: | :----------------------------: |
| name | string | 任意 | 是 | 指定dataset名称 |
| type | string | DataLoader / QueueDataset | 是 | 指定数据读取方式 |
| batch_size | int | >= 1 | 否 | 指定批训练样本数量 |
| data_path | string | 路径 | 是 | 指定数据来源地址 |
| data_converter | string | reader.py路径 | 是 | 指定Reader()所在python文件地址 |
| sparse_slots | string | string | 是 | 指定稀疏参数选项 |
| dense_slots | string | string | 是 | 指定稠密参数选项 |
## hyper_parameters变量
| 名称 | 类型 | 取值 | 是否必须 | 作用描述 |
| :---------------------: | :----: | :--------------: | :------: | :-------------------------: |
| optimizer.class | string | SGD/Adam/Adagrad | 是 | 指定优化器类型 |
| optimizer.learning_rate | float | > 0 | 否 | 指定学习率 |
| reg | float | > 0 | 否 | L2正则化参数,只在SGD下生效 |
| others | / | / | / | 由各个模型组网独立指定 |
# 工作区目录
# 使用文件夹路径,则会在该目录下寻找超参配置,组网,数据等必须文件
workspace
:
"
/home/demo_model/"
# 若 workspace: paddlerec.models.rank.dnn
# 则会使用官方默认配置与组网
# 用户可以指定多个dataset(数据读取配置)
# 运行的不同阶段可以使用不同的dataset
dataset
:
# dataloader 示例
-
name
:
dataset_1
type
:
DataLoader
batch_size
:
5
data_path
:
"
{workspace}/data/train"
# 指定自定义的reader.py所在路径
data_converter
:
"
{workspace}/rsc15_reader.py"
# QueueDataset 示例
-
name
:
dataset_2
type
:
QueueDataset
batch_size
:
5
data_path
:
"
{workspace}/data/train"
# 用户可以配置sparse_slots和dense_slots,无需再定义data_converter,使用默认reader
sparse_slots
:
"
click
ins_weight
6001
6002
6003
6005
6006
6007
6008
6009"
dense_slots
:
"
readlist:9"
# 自定义超参数,主要涉及网络中的模型超参及优化器
hyper_parameters
:
#优化器
optimizer
:
class
:
Adam
# 直接配置Optimizer,目前支持sgd/Adam/AdaGrad
learning_rate
:
0.001
strategy
:
"
{workspace}/conf/config_fleet.py"
# 使用大规模稀疏pslib模式的特有配置
# 模型超参
vocab_size
:
1000
hid_size
:
100
# 通过全局参数mode指定当前运行的runner
mode
:
runner_1
# runner主要涉及模型的执行环境,如:单机/分布式,CPU/GPU,迭代轮次,模型加载与保存地址
runner
:
-
name
:
runner_1
# 配置一个runner,进行单机的训练
class
:
single_train
# 配置运行模式的选择,还可以选择:single_infer/local_cluster_train/cluster_train
epochs
:
10
device
:
cpu
init_model_path
:
"
"
save_checkpoint_interval
:
2
save_inference_interval
:
4
# 下面是保存模型路径配置
save_checkpoint_path
:
"
xxxx"
save_inference_path
:
"
xxxx"
-
name
:
runner_2
# 配置一个runner,进行单机的预测
class
:
single_infer
epochs
:
1
device
:
cpu
init_model_path
:
"
afs:/xxx/xxx"
# 模型在训练时,可能存在多个阶段,每个阶段的组网与数据读取都可能不尽相同
# 每个runner都会完整的运行所有阶段
# phase指定运行时加载的模型及reader
phase
:
-
name
:
phase1
model
:
"
{workspace}/model.py"
dataset_name
:
sample_1
thread_num
:
1
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录