Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
6e3bd71e
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看板
提交
6e3bd71e
编写于
4月 08, 2019
作者:
Z
zy0531
提交者:
Cheerego
4月 08, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify user_guide_howto_training_1 (#719)
* modify user_guide_howto_training_1 * remove server after pserver
上级
bcd5e1c5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
25 deletion
+30
-25
doc/fluid/user_guides/howto/training/cluster_howto.rst
doc/fluid/user_guides/howto/training/cluster_howto.rst
+10
-5
doc/fluid/user_guides/howto/training/cluster_quick_start.rst
doc/fluid/user_guides/howto/training/cluster_quick_start.rst
+14
-14
doc/fluid/user_guides/howto/training/test_while_training.rst
doc/fluid/user_guides/howto/training/test_while_training.rst
+6
-6
未找到文件。
doc/fluid/user_guides/howto/training/cluster_howto.rst
浏览文件 @
6e3bd71e
...
...
@@ -19,7 +19,9 @@
通信。其中RPC通信方式使用 `gRPC <https://github.com/grpc/grpc/>`_ ,Collective通信方式使用
`NCCL2 <https://developer.nvidia.com/nccl>`_ 。
.. csv-table:: 下面是一个RPC通信和Collective通信的横向对比:
**RPC通信和Collective通信的横向对比如下:**
.. csv-table::
:header: "Feature", "Collective", "RPC"
"Ring-Based通信", "Yes", "No"
...
...
@@ -60,8 +62,9 @@
使用 :code:`transpiler` API可以把单机可以执行的程序快速转变成可以分布式执行的程序。在不同的服务器节点
上,通过传给 :code:`transpiler` 对应的参数,以获取当前节点需要执行的 :code:`Program` 。
.. csv-table:: 需要配置参数包括
需要配置参数包括
++++++++++++++++++
.. csv-table::
:header: "参数", "说明"
"role", "\ **必选**\ 区分作为pserver启动还是trainer启动,不传给transpile,也可以用其他的变量名或环境变量"
...
...
@@ -112,7 +115,7 @@ Fluid分布式任务可以支持同步训练或异步训练,在同步训练方
选择是否使用分布式embedding表进行训练
+++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++
+++
embedding被广泛应用在各种网络结构中,尤其是文本处理相关的模型。在某些场景,例如推荐系统或者搜索引擎中,
embedding的feature id可能会非常多,当feature id达到一定数量时,embedding参数会变得很大,一方面可能
...
...
@@ -214,7 +217,9 @@ NCCL2模式的分布式训练,由于没有parameter server角色,是trainer
loss_name=loss_name, num_trainers=len(trainers.split(",")), trainer_id=trainer_id)
...
.. csv-table:: NCCL2模式必要参数说明
NCCL2模式必要参数说明
++++++++++++++++++++++++++++++++++++++
.. csv-table::
:header: "参数", "说明"
"trainer_id", "(int) 任务中每个trainer节点的唯一ID,从0开始,不能有重复"
...
...
doc/fluid/user_guides/howto/training/cluster_quick_start.rst
浏览文件 @
6e3bd71e
...
...
@@ -18,8 +18,8 @@
样例代码
-------
下面使用一个非常简单的线性回归模型作为样例来解释如何启动一个包含2个
pserver server
节点以及
2个
trainer 节点的分布式训练任务,您可以将本段代码保存为 ``dist_train.py``
下面使用一个非常简单的线性回归模型作为样例来解释如何启动一个包含2个
``PSERVER``
节点以及
2个
``TRAINER`` 节点的分布式训练任务,您可以将本段代码保存为 ``dist_train.py`` 运行。
.. code:: python
...
...
@@ -112,11 +112,11 @@
* - :code:`PADDLE_PSERVER_IPS`
- str
- :code:`ps0.paddlepaddle.com,ps1.paddlepaddle.com`
- 分布式训练任务中所有
pserver
节点的 IP 地址或 hostname, 使用","分隔
- 分布式训练任务中所有
PSERVER
节点的 IP 地址或 hostname, 使用","分隔
* - :code:`PADDLE_PSERVER_PORT`
- int
- 6174
-
pserver
进程监听的端口
-
PSERVER
进程监听的端口
* - :code:`PADDLE_TRAINERS`
- int
- 2
...
...
@@ -124,11 +124,11 @@
* - :code:`PADDLE_CURRENT_IP`
- str
- :code:`ps0.paddlepaddle.com`
- 当前
pserver
节点的 IP 地址或 hostname
- 当前
PSERVER
节点的 IP 地址或 hostname
* - :code:`PADDLE_TRAINER_ID`
- str
- 0
- 当前
trainer
节点的 ID (唯一), 取值范围为 [0, PADDLE_TRAINERS)
- 当前
TRAINER
节点的 ID (唯一), 取值范围为 [0, PADDLE_TRAINERS)
注: 环境变量只是获取运行时信息的一种方式,实际任务中可以采用命令行参数等方式获取运行时信息。
...
...
@@ -138,9 +138,9 @@
DistributeTranspiler
~~~~~~~~~~~~~~~~~~~~~~
基于 pserver-trainer 架构的的分布式训练任务分为两种角色: Parameter Server(
pserver) 以及 trainer
,
基于 pserver-trainer 架构的的分布式训练任务分为两种角色: Parameter Server(
PSERVER) 以及 TRAINER
,
在 Fluid 中,用户只需配置单机训练所需要的网络配置, ``DistributeTranspiler`` 模块会自动地根据
当前训练节点的角色将用户配置的单机网路配置改写成
pserver 和 trainer
需要运行的网络配置:
当前训练节点的角色将用户配置的单机网路配置改写成
PSERVER 和 TRAINER
需要运行的网络配置:
.. code:: python
...
...
@@ -162,8 +162,8 @@ DistributeTranspiler
exe.close()
~~~~~~~~~~~~~~
pserver 节点中会保存所有 trainer 节点的状态信息,在 trainer
结束训练时需要调用 ``exe.close()``
通知所有 PS
erver 节点释放当前 Trainer
节点的资源:
PSERVER 节点中会保存所有 TRAINER 节点的状态信息,在 TRAINER
结束训练时需要调用 ``exe.close()``
通知所有 PS
ERVER 节点释放当前 TRAINER
节点的资源:
.. code:: python
...
...
@@ -182,13 +182,13 @@ pserver 节点中会保存所有 trainer 节点的状态信息,在 trainer结
- 说明
* - ps0.paddlepaddle.com
- :code:`PADDLE_TRAINING_ROLE=PSERVER PADDLE_CURRENT_IP=ps0.paddlepaddle.com PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_PSERVER_PORT=6174 python fluid_dist.py`
- 启动
pserver
节点
- 启动
PSERVER
节点
* - ps1.paddlepaddle.com
- :code:`PADDLE_TRAINING_ROLE=PSERVER PADDLE_CURRENT_IP=ps1.paddlepaddle.com PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_PSERVER_PORT=6174 python fluid_dist.py`
- 启动
pserver
节点
- 启动
PSERVER
节点
* - trainer0.paddlepaddle.com
- :code:`PADDLE_TRAINING_ROLE=TRAINER PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_TRAINER_ID=0 PADDLE_PSERVER_PORT=6174 python fluid_dist.py`
- 启动第0号
trainer
节点
- 启动第0号
TRAINER
节点
* - trainer1.paddlepaddle.com
- :code:`PADDLE_TRAINING_ROLE=TRAINER PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_TRAINER_ID=1 PADDLE_PSERVER_PORT=6174 python fluid_dist.py`
- 启动第1号
trainer
节点
- 启动第1号
TRAINER
节点
doc/fluid/user_guides/howto/training/test_while_training.rst
浏览文件 @
6e3bd71e
...
...
@@ -6,12 +6,12 @@
模型的测试评价与训练的 :code:`fluid.Program` 不同。在测试评价中:
1.
评价测试
不进行反向传播,不优化更新参数。
2.
评价测试
执行的操作可以不同。
1.
测试评价
不进行反向传播,不优化更新参数。
2.
测试评价
执行的操作可以不同。
* 例如 BatchNorm 操作,在训练和测试时执行不同的算法。
*
评价模型与训练相比
可以是完全不同的模型。
*
测试评价模型与训练模型
可以是完全不同的模型。
生成测试 :code:`fluid.Program`
#################################
...
...
@@ -19,8 +19,8 @@
通过克隆训练 :code:`fluid.Program` 生成测试 :code:`fluid.Program`
=======================================================================
:code:`Program.clone()` 方法可以复制出新的 :code:`fluid.Program` 。 通过设置
:code:`Program.clone(for_test=True)` 复制含有用于测试的操作
Program
。简单的使用方法如下:
用
:code:`Program.clone()` 方法可以复制出新的 :code:`fluid.Program` 。 通过设置
:code:`Program.clone(for_test=True)` 复制含有用于测试的操作
:code:`fluid.Program`
。简单的使用方法如下:
.. code-block:: python
...
...
@@ -105,7 +105,7 @@ PaddlePaddle Fluid中使用 :code:`fluid.unique_name` 包来随机初始化用
===============================================================
用户可以使用训练用的 :code:`ParallelExecutor` 与测试 :code:`fluid.Program`
一起新建一个测试的 :code:`ParallelExecutor` ;再使用测试
一起
,
新建一个测试的 :code:`ParallelExecutor` ;再使用测试
:code:`ParallelExecutor.run` 来执行测试。
例如:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录