Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
cf9d7465
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cf9d7465
编写于
11月 25, 2018
作者:
T
typhoonzero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
fac03f99
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
49 addition
and
20 deletion
+49
-20
doc/fluid/api/api_guides/low_level/distributed/sync_training.rst
...id/api/api_guides/low_level/distributed/sync_training.rst
+47
-20
doc/fluid/beginners_guide/index.rst
doc/fluid/beginners_guide/index.rst
+1
-0
doc/fluid/index_cn.rst
doc/fluid/index_cn.rst
+1
-0
未找到文件。
doc/fluid/api/api_guides/low_level/distributed/sync_training.rst
浏览文件 @
cf9d7465
...
...
@@ -12,12 +12,13 @@ Fluid支持数据并行的分布式同步训练,API使用 :code:`DistributedTr
pserver模式分布式训练
===================
使用DistributedTranspiler
++++++++++++++++++++++++
API详细使用方法参考 :ref:<DistributeTranspiler> ,简单实例用法:
简单用法
.. code-block:: python
config = fluid.DistributedTranspilerConfig()
# 配置策略config
config.slice_var_up = False
t = fluid.DistributedTranspiler(config=config)
t.transpile(trainer_id,
program=main_program,
...
...
@@ -26,34 +27,60 @@ pserver模式分布式训练
sync_mode=True)
以上参数中:
- :code:`trainer_id` : trainer节点的id,从0到n-1,n为当前训练任务中trainer节点的个数
- :code:`program` : 被转换的 :code:`program` 默认使用 :code:`fluid.default_main_program()`
- :code:`pservers` : 当前训练任务中pserver节点的IP端口列表
- :code:`trainers` : 当前训练任务中trainer节点的个数(注意NCCL2模式中,此项参数是字符串,指定trainer节点的IP端口列表),
- :code:`trainer_id` : trainer节点的id,从0到n-1,n为当前训练任务中trainer节点的个数
- :code:`program` : 被转换的 :code:`program` 默认使用 :code:`fluid.default_main_program()`
- :code:`pservers` : 当前训练任务中pserver节点的IP端口列表
- :code:`trainers` : 当前训练任务中trainer节点的个数(注意NCCL2模式中,此项参数是字符串,指定trainer节点的IP端口列表),
注意,在pserver模式下,trainer节点个数可以和pserver节点个数不一致,比如使用20个pserver和50个trainer。在实际训练任务
中,您可以通过调整pserver节点和trainer节点个数找到最佳性能。
- :code:`sync_mode`
:
是否是同步训练模式,默认为True,不传此参数也默认是同步训练模式
- :code:`sync_mode`
:
是否是同步训练模式,默认为True,不传此参数也默认是同步训练模式
.. code-block:: python
config = fluid.DistributedTranspilerConfig()
# 配置策略config
config.slice_var_up = False
t = fluid.DistributedTranspiler(config=config)
其中,支持的config包括:
- :code:`slice_var_up`
:
配置是否切分一个参数到多个pserver上进行优化,默认开启。此选项适用于模型参数个数少,
- :code:`slice_var_up`
:
配置是否切分一个参数到多个pserver上进行优化,默认开启。此选项适用于模型参数个数少,
但需要使用大量节点的场景,有利于提升pserver端计算并行度
- :code:`split_method`
:
配置transpiler分配参数(或参数的切片)到多个pserver的方式,
- :code:`split_method`
:
配置transpiler分配参数(或参数的切片)到多个pserver的方式,
默认为"RoundRobin",也可以使用"HashName"
- :code:`min_block_size`
:
如果配置了参数切分,指定最小Tensor的切分大小,防止RPC请求包过小,默认为8192,一般情况
- :code:`min_block_size`
:
如果配置了参数切分,指定最小Tensor的切分大小,防止RPC请求包过小,默认为8192,一般情况
不需要调整此项参数
- :code:`enable_dc_asgd`
:
是否开启 :code:`DC-ASGD` 此选项在异步训练中生效,启用异步训练补偿算法
- :code:`enable_dc_asgd`
:
是否开启 :code:`DC-ASGD` 此选项在异步训练中生效,启用异步训练补偿算法
- :code:`mode` : 可以选择"pserver"或"nccl2",指定使用pserver模式或NCCL2模式分布式训练
- :code:`print_log` : 是否开启transpiler debug日志,此项为开发调试使用
- :code:`print_log` : 是否开启transpiler debug日志,此项为开发调试使用
通用环境变量配置:
- :code:`FLAGS_rpc_send_thread_num` :int,指定RPC通信发送时线程的个数
- :code:`FLAGS_rpc_get_thread_num` : int,指定RPC通信接受时线程的个数
- :code:`FLAGS_rpc_prefetch_thread_num` : int,分布式lookup table执行RPC通信时,prefetch线程的个数
- :code:`FLAGS_rpc_deadline` : int,RPC通信最长等待时间,单位为毫秒,默认180000
NCCL2模式分布式训练
=================
TBD
\ No newline at end of file
基于NCCL2 (Collective Communication) 的多机同步训练模式,仅支持在GPU集群下进行。
此部分详细API说明可以参考 :ref:<DistributeTranspiler> 。
注意:NCCL2模式下,集群不需要启动pserver,只需要启动多个trainer节点即可。
使用以下代码,将当前 :code:`Program` 转化成适用于NCCL2分布式计算的Fluid :code:`Program` :
.. code-block:: python
config = fluid.DistributeTranspilerConfig()
config.mode = "nccl2"
t = fluid.DistributedTranspiler(config=config)
t.transpile(trainer_id,
program=main_program,
startup_program=startup_program,
trainers="192.168.0.1:6174,192.168.0.2:6174",
current_endpoint="192.168.0.1:6174")
其中:
- :code:`trainer_id` : trainer节点的id,从0到n-1,n为当前训练任务中trainer节点的个数
- :code:`program` 和 :code:`startup_program` : 分别为Fluid 模型的主配置program和初始化startup_program
- :code:`trainers` : 指定当前任务所有trainer的IP和端口号,仅用于NCCL2初始化
- :code:`current_endpoint` : 当前任务的当前节点的IP和端口号
doc/fluid/beginners_guide/index.rst
浏览文件 @
cf9d7465
...
...
@@ -31,6 +31,7 @@
:maxdepth: 2
install/Start.rst
api_guides/index.rst
quick_start/index.rst
basics/index.rst
basics/learning_materials.md
...
...
doc/fluid/index_cn.rst
浏览文件 @
cf9d7465
...
...
@@ -15,3 +15,4 @@
user_guides/index.rst
advanced_usage/index.rst
api/index_cn.rst
api/api_guides/index.rst
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录