Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
83878c55
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
83878c55
编写于
6月 25, 2018
作者:
T
tangwei12
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
checkpoint doc
上级
7d5e0e20
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
56 addition
and
0 deletion
+56
-0
source/user_guides/howto/training/checkpoint_doc_cn.md
source/user_guides/howto/training/checkpoint_doc_cn.md
+56
-0
未找到文件。
source/user_guides/howto/training/checkpoint_doc_cn.md
0 → 100644
浏览文件 @
83878c55
# Checkpoint功能使用指南
## 背景
单机/多机在训练过程中会由于软件/硬件的问题出现异常,导致训练中断,进而导致训练无结果或结果不可用,浪费大量时间和机器性能。
## 目的
Checkpoint功能能够在训练中途对训练数据中间数据进行保存,出现异常恢复训练的时候能够加载中途保存的数据继续训练, 实现单机/多机的容错训练的功能。
## 说明
### 目前已实现的参数保存:
1.
基于Trainer 0 实现训练过程中的参数保存
2.
基于PServer 实现了Distribute Lookup Table相关参数保存
### Fluid Checkpoint 保存数据目录结构:
checkpoint_dir (用户定义的checkpoint目录)
├── checkpoint_0 (第一次保存)
│ ├── __lockup_table__ (Distribute Lookup Table 目录)
│ │ ├── table_pserver_0 (Pserver 0 号保存的lookup table 数据)
│ │ └── table_pserver_1
│ ├── __model__ (model 目录)
│ │ └── var.w_1
│ └── trainer_0 (trainer 自有数据保存)
│ ├── epoch_id
│ └── step_id
└── checkpoint_1 (第二次保存)
## 使用方法
### 声明Fluid.CheckpointConfig
用户对checkpoint功能的配置,主要是配置对象Fluid.CheckpointConfig.
CheckpointConfig 包括4个参数:
```
table
参数 | 类型 | 说明
checkpoint_dir | int | checkpoint存储目录
max_num_checkpoints | int | 最大保存的checkpoint副本数
epoch_interval | int | 每隔epoch_interval轮epoch
step_interval | int | 每隔step_interval轮step
```
### 在Fluid.Trainer对象的声明中加入Fluid.CheckpointConfig的声明
Trainer的__init__方法的参数中包含了对CheckpointConfig, 需要传入在声明Trainer前声明的CheckpointConfig对象。
如:
```
python
config
=
CheckpointConfig
(
checkpoint_dir
=
"/tmp/ckpt"
,
max_num_checkpoints
=
2
,
epoch_interval
=
2
,
step_interval
=
10
)
trainer
=
Trainer
(...,
checkpoint_config
=
config
)
```
定义和声明完成后, 训练在运行过程中就会在指定的step和epoch处进行保存,出现异常时,就会自动从最新的checkpoint目录进行参数恢复啦!
## 相关API
https://github.com/PaddlePaddle/Paddle/blob/3ff9ba0e6ba1eec282b6e89fb7bea2e2046f01c5/python/paddle/fluid/trainer.py#L97
## 注意
1.
保证每个训练的
```checkpoint_dir```
与其他训练独立。
2.
最大副本数量max_num_checkpoints需要根据磁盘容量以及模型的大小进行调整, 保证磁盘的可用性。
3.
epoch_interval 和 step_interval 不宜过小, 频繁的进行checkpoint会拖慢训练速度。
4.
**分布式训练**
的过程中:每个Trainer都会在checkpoint_dir目录中保存当前Trainer的参数(只有Trainer 0会保存模型的参数),需要
**分布式文件系统(HDFS等)**
将同checkpoint_dir目录的数据进行合并才能得到完整的数据,恢复训练的时候需要用完整的数据进行恢复。
## 后续规划
1.
支持通过etcd进行参数保存。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录