Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
771ebd50
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看板
提交
771ebd50
编写于
11月 21, 2018
作者:
S
shanyi15
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
adjust_checkpoint_doc
上级
533c5114
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
76 addition
and
4 deletion
+76
-4
doc/fluid/user_guides/howto/training/save_load_variables.rst
doc/fluid/user_guides/howto/training/save_load_variables.rst
+76
-3
doc/fluid/user_guides/howto/training/single_node.rst
doc/fluid/user_guides/howto/training/single_node.rst
+0
-1
未找到文件。
doc/fluid/user_guides/howto/training/save_load_variables.rst
浏览文件 @
771ebd50
...
...
@@ -166,7 +166,80 @@
多机checkpoint保存
##################
.. toctree::
:maxdepth: 2
Checkpoint功能使用指南
======================
checkpoint_doc_cn.md
\ No newline at end of file
* 背景
单机/多机在训练过程中会由于软件/硬件的问题出现异常,导致训练中断,进而导致训练无结果或结果不可用,浪费大量时间和机器性能。
* 目的
Checkpoint功能能够在训练中途对训练数据中间数据进行保存,出现异常恢复训练的时候能够加载中途保存的数据继续训练, 实现单机/多机的容错训练的功能。
* 说明
* 目前已实现的参数保存:
1. 基于Trainer 0 实现训练过程中的参数保存
2. 基于PServer 实现了`Distribute Lookup Table`相关参数保存
* Fluid Checkpoint 保存数据目录结构:
.. code-block:: python
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功能的配置,主要是配置对象 :code:`Fluid` 中的 :code:`CheckpointConfig` .
:code:`CheckpointConfig` 包括4个参数:
===================== ===== ==========================
参数 类型 说明
===================== ===== ==========================
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__方法的参数中包含了对 :code:`CheckpointConfig` , 需要传入在声明Trainer前声明的 :code:`CheckpointConfig` 对象。
如:
.. code-block:: 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
`Trainer API 说明 <https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/fluid/trainer.py>`_
* 注意
1. 保证每个训练的 :code:`checkpoint_dir` 与其他训练独立。
2. 最大副本数量 :code:`max_num_checkpoints` 需要根据磁盘容量以及模型的大小进行调整, 保证磁盘的可用性。
3. :code:`epoch_interval` 和 :code:`step_interval` 不宜过小, 频繁的进行checkpoint会拖慢训练速度。
4. **分布式训练** 的过程中:每个Trainer都会在 :code:`checkpoint_dir` 目录中保存当前Trainer的参数(只有Trainer 0会保存模型的参数),需要 **分布式文件系统(HDFS等)** 将同 :code:`checkpoint_dir` 目录的数据进行合并才能得到完整的数据,恢复训练的时候需要用完整的数据进行恢复。
doc/fluid/user_guides/howto/training/single_node.rst
浏览文件 @
771ebd50
...
...
@@ -116,4 +116,3 @@
:maxdepth: 2
test_while_training
save_load_variables
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录