Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
ff9ab9fd
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看板
提交
ff9ab9fd
编写于
11月 27, 2018
作者:
T
tangwei12
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update save_load_variables doc
上级
3e8795da
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
16 deletion
+21
-16
doc/fluid/user_guides/howto/training/save_load_variables.rst
doc/fluid/user_guides/howto/training/save_load_variables.rst
+21
-16
未找到文件。
doc/fluid/user_guides/howto/training/save_load_variables.rst
浏览文件 @
ff9ab9fd
...
@@ -37,10 +37,8 @@
...
@@ -37,10 +37,8 @@
那么我们应该将各种长期变量都保存下来,甚至还需要记录一下当前的epoch和step的id。
那么我们应该将各种长期变量都保存下来,甚至还需要记录一下当前的epoch和step的id。
因为一些模型变量虽然不是参数,但对于模型的训练依然必不可少。
因为一些模型变量虽然不是参数,但对于模型的训练依然必不可少。
因此,根据需求的不同,我们提供了两套API来分别进行模型的参数和checkpoint的保存。
保存模型用于对新样本的预测
保存模型用于对新样本的预测
############
==========================
如果我们保存模型的目的是用于对新样本的预测,那么只保存模型参数就足够了。我们可以使用
如果我们保存模型的目的是用于对新样本的预测,那么只保存模型参数就足够了。我们可以使用
:code:`fluid.io.save_params()` 接口来进行模型参数的保存。
:code:`fluid.io.save_params()` 接口来进行模型参数的保存。
...
@@ -115,11 +113,13 @@
...
@@ -115,11 +113,13 @@
:code:`fluid.io.save_persistables`、:code:`fluid.io.load_persistables` 。
:code:`fluid.io.save_persistables`、:code:`fluid.io.load_persistables` 。
单机增量训练
单机增量训练
##################
==========================
单机的增量训练的一般步骤如下:
单机的增量训练的一般步骤如下:
1. 在训练的最后调用:code:`fluid.io.save_persistables`保存持久性参数到指定的位置。
2. 在训练的startup_program通过执行器(:code:`Executor`)执行成功之后调用:code:`fluid.io.load_persistables`加载之前保存的持久性参数。
1. 在训练的最后调用 :code:`fluid.io.save_persistables` 保存持久性参数到指定的位置。
3. 通过执行器(:code:`Executor`)或者(:code:`ParallelExecutor`)继续训练。
2. 在训练的startup_program通过执行器 :code:`Executor` 执行成功之后调用 :code:`fluid.io.load_persistables` 加载之前保存的持久性参数。
3. 通过执行器 :code:`Executor` 或者 :code:`ParallelExecutor` 继续训练。
例如:
例如:
...
@@ -132,8 +132,7 @@
...
@@ -132,8 +132,7 @@
prog = fluid.default_main_program()
prog = fluid.default_main_program()
fluid.io.save_persistables(exe, path, prog)
fluid.io.save_persistables(exe, path, prog)
上面的例子中,通过调用 :code:`fluid.io.save_persistables` 函数,PaddlePaddle Fluid会从默认
上面的例子中,通过调用 :code:`fluid.io.save_persistables` 函数,PaddlePaddle Fluid会从默认 :code:`fluid.Program` 也就是 :code:`prog` 的所有模型变量中找出长期变量,并将他们保存到指定的 :code:`path` 目录下。
:code:`fluid.Program` 也就是 :code:`prog` 的所有模型变量中找出长期变量,并将他们保存到指定的 :code:`path` 目录下。
.. code-block:: python
.. code-block:: python
...
@@ -154,17 +153,20 @@
...
@@ -154,17 +153,20 @@
多机增量(不带分布式大规模稀疏矩阵)训练的一般步骤为:
多机增量(不带分布式大规模稀疏矩阵)训练的一般步骤为:
##################
==========================
多机增量训练和单机增量训练有若干不同点:
多机增量训练和单机增量训练有若干不同点:
1. 在训练的最后调用:code:`fluid.io.save_persistables`保存持久性参数时,不必要所有的Trainer都调用这个方法,一般0号Trainer来保存。
1. 在训练的最后调用 :code:`fluid.io.save_persistables` 保存持久性参数时,不必要所有的Trainer都调用这个方法,一般0号Trainer来保存。
2. 多机增量训练的参数加载在PServer端,Trainer端不用加载参数。在PServer全部启动后,Trainer会从PServer端同步参数。
2. 多机增量训练的参数加载在PServer端,Trainer端不用加载参数。在PServer全部启动后,Trainer会从PServer端同步参数。
多机增量(不带分布式大规模稀疏矩阵)训练的一般步骤为:
多机增量(不带分布式大规模稀疏矩阵)训练的一般步骤为:
1. 在0号trainer在训练的最后调用:code:`fluid.io.save_persistables`保存持久性参数到指定的 :code:`path` 下。
1. 在0号trainer在训练的最后调用 :code:`fluid.io.save_persistables` 保存持久性参数到指定的 :code:`path` 下。
2. 通过HDFS等方式将0号trainer保存下来的所有的参数共享给所有的PServer(每个PServer都需要有完整的参数)。
2. 通过HDFS等方式将0号trainer保存下来的所有的参数共享给所有的PServer(每个PServer都需要有完整的参数)。
3. PServer在训练的startup_program通过执行器(:code:`Executor`)执行成功之后调用:code:`fluid.io.load_persistables`加载0号trainer保存的持久性参数。
3. PServer在训练的startup_program通过执行器(:code:`Executor`)执行成功之后调用 :code:`fluid.io.load_persistables` 加载0号trainer保存的持久性参数。
4. PServer通过执行器(:code:`Executor`)继续启动Pserver_program.
4. PServer通过执行器 :code:`Executor` 继续启动PServer_program.
5. 所有的训练节点Trainer通过执行器(:code:`Executor`)或者(:code:`ParallelExecutor`)正常训练。
5. 所有的训练节点Trainer通过执行器 :code:`Executor` 或者 :code:`ParallelExecutor` 正常训练。
对于训练过程中待保存参数的Trainer, 例如:
对于训练过程中待保存参数的Trainer, 例如:
...
@@ -179,6 +181,7 @@
...
@@ -179,6 +181,7 @@
prog = fluid.default_main_program()
prog = fluid.default_main_program()
fluid.io.save_persistables(exe, path, prog)
fluid.io.save_persistables(exe, path, prog)
.. code-block:: bash
.. code-block:: bash
hadoop fs -mkdir /remote/$path
hadoop fs -mkdir /remote/$path
hadoop fs -put $path /remote/$path
hadoop fs -put $path /remote/$path
...
@@ -188,9 +191,11 @@
...
@@ -188,9 +191,11 @@
对于训练过程中待载入参数的PServer, 例如:
对于训练过程中待载入参数的PServer, 例如:
.. code-block:: bash
.. code-block:: bash
hadoop fs -get /remote/$path $path
hadoop fs -get /remote/$path $path
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
import paddle.fluid as fluid
...
@@ -216,7 +221,7 @@
...
@@ -216,7 +221,7 @@
main_program = t.get_trainer_program()
main_program = t.get_trainer_program()
exe.run(main_program)
exe.run(main_program)
上面的例子中,每个PServer通过调用HDFS的命令获取到0号Trainer保存的参数,通过配置获取到PServer的:code:`fluid.Program` ,PaddlePaddle Fluid会从此
上面的例子中,每个PServer通过调用HDFS的命令获取到0号Trainer保存的参数,通过配置获取到PServer的
:code:`fluid.Program` ,PaddlePaddle Fluid会从此
:code:`fluid.Program` 也就是 :code:`pserver_startup` 的所有模型变量中找出长期变量,并通过指定的 :code:`path` 目录下一一加载。
:code:`fluid.Program` 也就是 :code:`pserver_startup` 的所有模型变量中找出长期变量,并通过指定的 :code:`path` 目录下一一加载。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录