Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
76ef4f8c
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看板
未验证
提交
76ef4f8c
编写于
10月 08, 2019
作者:
T
tangwei12
提交者:
GitHub
10月 08, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
doc fix (#1379)
* doc fix
上级
6ac8e48b
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
218 addition
and
148 deletion
+218
-148
doc/fluid/api_cn/fluid_cn/DistributeTranspiler_cn.rst
doc/fluid/api_cn/fluid_cn/DistributeTranspiler_cn.rst
+117
-113
doc/fluid/api_cn/fluid_cn/ExecutionStrategy_cn.rst
doc/fluid/api_cn/fluid_cn/ExecutionStrategy_cn.rst
+9
-15
doc/fluid/api_cn/layers_cn/sampling_id_cn.rst
doc/fluid/api_cn/layers_cn/sampling_id_cn.rst
+3
-3
doc/fluid/api_cn/transpiler_cn/DistributeTranspilerConfig_cn.rst
...id/api_cn/transpiler_cn/DistributeTranspilerConfig_cn.rst
+7
-4
doc/fluid/api_cn/transpiler_cn/DistributeTranspiler_cn.rst
doc/fluid/api_cn/transpiler_cn/DistributeTranspiler_cn.rst
+16
-9
doc/fluid/api_cn/transpiler_cn/HashName_cn.rst
doc/fluid/api_cn/transpiler_cn/HashName_cn.rst
+23
-2
doc/fluid/api_cn/transpiler_cn/RoundRobin_cn.rst
doc/fluid/api_cn/transpiler_cn/RoundRobin_cn.rst
+43
-2
未找到文件。
doc/fluid/api_cn/fluid_cn/DistributeTranspiler_cn.rst
浏览文件 @
76ef4f8c
.. _cn_api_fluid_DistributeTranspiler:
.. _cn_api_fluid_
transpiler_
DistributeTranspiler:
DistributeTranspiler
-------------------------------
...
...
@@ -6,80 +6,89 @@ DistributeTranspiler
.. py:class:: paddle.fluid.DistributeTranspiler (config=None)
该类可以把fluid program转变为分布式数据并行计算
程序(distributed data-parallelism programs),可以有Ps
erver和NCCL2两种模式。
当program在Pserver(全称:parameter server)模式下, ``main_program`` (主程序)转为使用一架远程parameter server(即pserver,参数服务器)来进行参数优化,并且优化图会被输入到一个pserver program中
。
在NCCL2模式下
,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享 ``NCCL_ID`` 。
调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``Parallel
Executor`` 来启动NCCL2分布式模式。
该类可以把fluid program转变为分布式数据并行计算
的program, 有PS
erver和NCCL2两种模式。
在Pserver(全称:parameter server)模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于parameter server的分布式架构(即PServer,参数服务器)来进行训练的program
。
在NCCL2模式下
, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于NCCL2的分布式架构来进行训练的program。在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播
算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``
Executor`` 来启动NCCL2分布式模式。
参数:
- **config** (DistributeTranspilerConfig) DistributeTranspiler属性配置实例,定义了program转变所需要的属性, 请参考:`DistributeTranspilerConfig` 相关文档。
返回:初始化后的DistributeTranspiler实例
返回类型:实例(DistributeTranspiler)
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_loss = fluid.layers.mean(cost)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_loss)
#pserver模式下
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
role = "PSERVER"
t = fluid.DistributeTranspiler()
t.transpile(trainer_id, pservers=pserver_endpoints, trainers=trainers)
if role == "PSERVER":
pserver_program = t.get_pserver_program(current_endpoint)
pserver_startup_program = t.get_startup_program(current_endpoint, pserver_program)
elif role == "TRAINER":
trainer_program = t.get_trainer_program()
# nccl2模式下
trainer_num = 2
trainer_id = 0
config = fluid.DistributeTranspilerConfig()
config.mode = "nccl2"
trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
t = fluid.DistributeTranspiler(config=config)
t.transpile(trainer_id=trainer_id, trainers=trainer_endpoints, current_endpoint="192.168.0.1:6174")
exe = fluid.ParallelExecutor(
loss_name=avg_loss.name,
num_trainers=len(trainer_num,
trainer_id=trainer_id
)
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_loss = fluid.layers.mean(cost)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_loss)
# pserver 模式下
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
role = "PSERVER"
t = fluid.DistributeTranspiler()
t.transpile(
trainer_id, pservers=pserver_endpoints, trainers=trainers)
if role == "PSERVER":
pserver_program = t.get_pserver_program(current_endpoint)
pserver_startup_program = t.get_startup_program(current_endpoint,
pserver_program)
elif role == "TRAINER":
trainer_program = t.get_trainer_program()
# nccl2 模式下
trainer_num = 2
trainer_id = 0
config = fluid.DistributeTranspilerConfig()
config.mode = "nccl2"
trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
t = fluid.DistributeTranspiler(config=config)
t.transpile(trainer_id=trainer_id, trainers=trainer_endpoints, current_endpoint="192.168.0.1:6174")
exe = fluid.ParallelExecutor(
use_cuda=True,
loss_name=avg_loss.name,
num_trainers=trainer_num,
trainer_id=trainer_id
)
.. py:method:: transpile(trainer_id, program=None, pservers='127.0.0.1:6174', trainers=1, sync_mode=True, startup_program=None, current_endpoint='127.0.0.1:6174')
该方法可以运行该transpiler(转译器)。转译输入程序
。
通过此方法,可根据用户配置将单机的program转换为当前节点可用的数据并行的分布式program
。
参数:
- **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1
- **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()``
- **startup_program** (Program|None) - 要转译的 ``startup_program`` ,默认为 ``fluid.default_startup_program()``
- **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号*
- **trainers** (int|str) – 在Pserver模式下,该参数指Trainer机的个数;在nccl2模式下,它是一个内容为Trainer终端列表的字符串
- **sync_mode** (bool) – 是否做同步训练(synchronous training), 默认为True
- **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()``
- **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式下时,需要将当前endpoint(终端)传入该参数。Pserver模式不使用该参数
- **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1
- **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()``
- **startup_program** (Program|None) - 要转译的 ``startup_program`` ,默认为 ``fluid.default_startup_program()``
- **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号*
- **trainers** (int|str) – 在Pserver模式下,该参数指Trainer机的个数;在nccl2模式下,它是一个内容为Trainer终端列表的字符串
- **sync_mode** (bool) – 是否做同步训练(synchronous training), 默认为True
- **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()``
- **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式下时,需要将当前endpoint(终端)传入该参数。PServer模型下,当用户需要使用增量训练时,必须要指定该参数。
返回:None
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
transpiler = fluid.DistributeTranspiler()
t.transpile(
trainer_id=0,
...
...
@@ -89,28 +98,27 @@ DistributeTranspiler
current_endpoint="127.0.0.1:7000")
.. py:method:: get_trainer_program(wait_port=True)
该方法可以得到Trainer侧的program。
返回: Trainer侧的program
返回:
Trainer侧的program
返回类型: Program
返回类型:
Program
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
#this is an example, find available endpoints in your case
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(trainer_id, trainers=trainers, pservers=pserver_endpoints)
trainer_program = t.get_trainer_program()
import paddle.fluid as fluid
# 这是一个示例,请根据你的情况更改endpoint
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(trainer_id, trainers=trainers, pservers=pserver_endpoints)
trainer_program = t.get_trainer_program()
.. py:method:: get_pserver_program(endpoint)
...
...
@@ -119,26 +127,26 @@ DistributeTranspiler
该方法可以得到Pserver(参数服务器)侧的程序
参数:
- **endpoint** (str) – 当前Pserver终端
- **endpoint** (str) – 当前Pserver终端
返回: 当前Pserver需要执行的program
返回:
当前Pserver需要执行的program
返回类型: Program
返回类型:
Program
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
#this is an example, find available endpoints in your case
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(
trainer_id, pservers=pserver_endpoints, trainers=trainers)
pserver_program = t.get_pserver_program(current_endpoint)
import paddle.fluid as fluid
# 这是一个示例,请根据你的情况更改endpoint
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(
trainer_id, pservers=pserver_endpoints, trainers=trainers)
pserver_program = t.get_pserver_program(current_endpoint)
.. py:method:: get_pserver_programs(endpoint)
...
...
@@ -147,27 +155,27 @@ DistributeTranspiler
该方法可以得到Pserver侧用于分布式训练的 ``main_program`` 和 ``startup_program`` 。
参数:
- **endpoint** (str) – 当前Pserver终端
- **endpoint** (str) – 当前Pserver终端
返回: (main_program, startup_program), “Program”类型的元组
返回: (main_program, startup_program), “Program”类型的元组
返回类型: tuple
返回类型: tuple
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
#this is an example, find available endpoints in your case
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(
trainer_id, pservers=pserver_endpoints, trainers=trainers)
pserver_program, pserver_startup_program = t.get_pserver_programs(current_endpoint)
import paddle.fluid as fluid
# 这是一个示例,请根据你的情况更改endpoint
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(
trainer_id, pservers=pserver_endpoints, trainers=trainers)
pserver_program, pserver_startup_program = t.get_pserver_programs(current_endpoint)
.. py:method:: get_startup_program(endpoint, pserver_program=None, startup_program=None)
...
...
@@ -177,33 +185,29 @@ DistributeTranspiler
获取当前Pserver的startup_program,如果有多个被分散到不同blocks的变量,则修改operator的输入变量。
参数:
- **endpoint** (str) – 当前Pserver终端
- **pserver_program** (Program) – 已停止使用。 先调用get_pserver_program
- **startup_program** (Program) – 已停止使用。应在初始化时传入startup_program
- **endpoint** (str) – 当前Pserver终端
- **pserver_program** (Program) – 已停止使用。 先调用get_pserver_program
- **startup_program** (Program) – 已停止使用。应在初始化时传入startup_program
返回: Pserver侧的startup_program
返回:
Pserver侧的startup_program
返回类型: Program
返回类型:
Program
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(trainer_id, pservers=pserver_endpoints, trainers=trainers)
pserver_program = t.get_pserver_program(current_endpoint)
pserver_startup_program = t.get_startup_program(current_endpoint,
pserver_program)
pserver_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
trainer_endpoints = "192.168.0.1:6174,192.168.0.2:6174"
current_endpoint = "192.168.0.1:6174"
trainer_id = 0
trainers = 4
t = fluid.DistributeTranspiler()
t.transpile(trainer_id, pservers=pserver_endpoints, trainers=trainers)
pserver_program = t.get_pserver_program(current_endpoint)
pserver_startup_program = t.get_startup_program(current_endpoint,
pserver_program)
doc/fluid/api_cn/fluid_cn/ExecutionStrategy_cn.rst
浏览文件 @
76ef4f8c
...
...
@@ -5,7 +5,11 @@ ExecutionStrategy
.. py:class:: paddle.fluid.ExecutionStrategy
``ExecutionStrategy`` 允许用户更加精准地控制program在 ``ParallelExecutor`` 中的运行方式。可以通过在 ``ParallelExecutor`` 中设置本成员来实现。
通过设置 ``ExecutionStrategy`` 中的选项,用户可以对执行器的执行配置进行调整,比如设置执行器中线程池的大小等。
返回:初始化后的ExecutionStrategy的实例
返回类型:ExecutionStrategy
**代码示例**
...
...
@@ -30,28 +34,18 @@ ExecutionStrategy
exec_strategy=exec_strategy)
.. py:attribute:: allow_op_delay
这是一个bool类型成员,表示是否推迟communication operators(交流运算)的执行,这样做会使整体执行过程更快一些。此选项现在已经失效,在下个版本中将会被移除。默认为False。
.. py:attribute:: num_iteration_per_drop_scope
int型成员。
它表明了清空执行时产生的临时变量需要的程序执行迭代次数。因为临时变量的形状可能在两次重复过程中保持一致,所以它会使整体执行过程更快。默认值为1
。
int型成员。
该选项表示间隔多少次迭代之后清理一次临时变量。模型运行过程中,生成的中间临时变量将被放到local execution scope中,为了避免对临时变量频繁的申请与释放,通常将其设为较大的值(比如10或者100)。默认值为100
。
.. note::
1. 如果在调用 ``run`` 方法时获取结果数据,``ParallelExecutor`` 会在当前程序重复执行尾部清空临时变量
2. 在一些NLP模型里,该成员会致使GPU内存不足。此时,你应减少 ``num_iteration_per_drop_scope`` 的值
.. py:attribute:: num_iteration_per_run
它配置了当用户在python脚本中调用pe.run()时执行器会执行的迭代次数。
int型成员。它配置了当用户在python脚本中调用pe.run()时执行器会执行的迭代次数。Executor每次调用,会进行num_iteration_per_run次训练,它会使整体执行过程更快。
.. py:attribute:: num_threads
int型成员。
它代表了线程池(thread pool)的大小。这些线程会被用来执行当前 ``ParallelExecutor`` 的program中的operator(算子,运算)。如果 :math:`num\_threads=1` ,则所有的operator将一个接一个地执行,但在不同的程序重复周期(iterations)中执行顺序可能不同。如果该成员没有被设置,则在 ``ParallelExecutor`` 中,它会依据设备类型(device type)、设备数目(device count)而设置为相应值。对GPU,:math:`num\_threads=device\_count∗4` ;对CPU, :math:`num\_threads=CPU\_NUM∗4` 。在 ``ParallelExecutor`` 中有关于 :math:`CPU\_NUM` 的详细解释。如果没有设置 :math:`CPU\_NUM` , ``ParallelExecutor`` 可以通过调用 ``multiprocessing.cpu_count()`` 获取CPU数目(cpu count)。默认值为0
。
int型成员。
该选项表示当前 ``Executor`` 的线程池(thread pool)的大小, 此线程池可用来并发执行program中的operator(算子,运算)。如果 :math:`num\_threads=1` ,则所有的operator将一个接一个地执行,但在不同的program重复周期(iterations)中执行顺序可能不同。如果该选项没有被设置,则在 ``Executor`` 中,它会依据设备类型(device type)、设备数目(device count)而设置为相应值。对GPU,:math:`num\_threads=device\_count∗4` ;对CPU, :math:`num\_threads=CPU\_NUM∗4` 。在 ``Executor`` 中有关于 :math:`CPU\_NUM` 的详细解释。如果没有设置 :math:`CPU\_NUM` ,则设置默认值为1, 并提示用户进行 :math:`CPU\_NUM` 的设置
。
...
...
doc/fluid/api_cn/layers_cn/sampling_id_cn.rst
浏览文件 @
76ef4f8c
...
...
@@ -11,12 +11,12 @@ sampling_id
- **x** (Variable)- 输入Tensor。一个形如[batch_size,input_feature_dimensions]的2-D Tensor。
- **min** (Float)- 随机的最小值。默认值为为0.0。
- **max** (Float)- 随机的最大值。默认值为1.0。
- **seed** (int)- 随机种子。0表示使用系统生成的种子
。请注意,如果seed不为0,则此算子将始终每次生成相同的随机数。默认值为0
- **seed** (int)- 随机种子。0表示使用系统生成的种子
, 默认值为0。请注意,如果seed不为0,则此算子每次调用将生成相同的随机数。
- **dtype** (np.dtype | core.VarDesc.VarType | str)- 指定输出数据的类型。
返回:采样的数据
Tensor
返回:采样的数据
张量(Tensor)
返回类型:
Variable
返回类型:
变量(Variable)
**代码示例:**
...
...
doc/fluid/api_cn/transpiler_cn/DistributeTranspilerConfig_cn.rst
浏览文件 @
76ef4f8c
...
...
@@ -5,13 +5,16 @@ DistributeTranspilerConfig
.. py:class:: paddle.fluid.transpiler.DistributeTranspilerConfig
单机任务切换为分布式任务的配置类,
其中较为重要的几个配置参数如下所示:
单机任务切换为分布式任务的配置类,
用户可根据需求进行配置,如指定同步/异步训练,指定节点个数及模型切分逻辑。
.. py:method:: slice_var_up (bool)
返回:None
是否为Pserver将张量切片, 默认为True
.. py:attribute:: slice_var_up (bool)
.. py:method:: split_method (PSDispatcher)
是否为Pserver将张量切片, 默认为True, bool类型属性, 默认为True。该参数将指定是否将参数/梯度切分后均匀分布于多个PServer上。slice_var_up为True的情况下,会将参数均匀切分后分布于多个PServer端,使每个PServer的负载相对均衡。
.. py:attribute:: split_method (PSDispatcher)
参数分发的方式,当前支持的方法包括 :ref:`cn_api_fluid_transpiler_RoundRobin` 和 :ref:`cn_api_fluid_transpiler_HashName` 两种, 默认为RoundRobin。
...
...
doc/fluid/api_cn/transpiler_cn/DistributeTranspiler_cn.rst
浏览文件 @
76ef4f8c
...
...
@@ -6,12 +6,17 @@ DistributeTranspiler
.. py:class:: paddle.fluid.transpiler.DistributeTranspiler (config=None)
该类可以把fluid program转变为分布式数据并行计算程序(distributed data-parallelism programs),可以有Pserver和NCCL2两种模式。
当program在Pserver(全称:parameter server)模式下, ``main_program`` (主程序)转为使用一架远程parameter server(即pserver,参数服务器)来进行参数优化,并且优化图会被输入到一个pserver program中。
在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。
调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``ParallelExecutor`` 来启动NCCL2分布式模式。
该类可以把fluid program转变为分布式数据并行计算的program, 有PServer和NCCL2两种模式。
在Pserver(全称:parameter server)模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于parameter server的分布式架构(即PServer,参数服务器)来进行训练的program。
在NCCL2模式下, 通过 ``transpile`` 将用于单机训练的 ``program`` 转译为可用于NCCL2的分布式架构来进行训练的program。在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``Executor`` 来启动NCCL2分布式模式。
参数:
- **config** (DistributeTranspilerConfig) DistributeTranspiler属性配置实例,定义了program转变所需要的属性, 请参考:`DistributeTranspilerConfig` 相关文档。
返回:初始化后的DistributeTranspiler实例
返回类型:实例(DistributeTranspiler)
**代码示例**
...
...
@@ -64,17 +69,19 @@ DistributeTranspiler
.. py:method:: transpile(trainer_id, program=None, pservers='127.0.0.1:6174', trainers=1, sync_mode=True, startup_program=None, current_endpoint='127.0.0.1:6174')
该方法可以运行该transpiler(转译器)。转译输入程序
。
通过此方法,可根据用户配置将单机的program转换为当前节点可用的数据并行的分布式program
。
参数:
- **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1
- **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()``
- **startup_program** (Program|None) - 要转译的 ``startup_program`` ,默认为 ``fluid.default_startup_program()``
- **program** (Program|None) – 待transpile(转译)的main program, 默认为 ``fluid.default_main_program()``
- **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号*
- **trainers** (int|str) – 在Pserver模式下,该参数指Trainer机的个数;在nccl2模式下,它是一个内容为Trainer终端列表的字符串
- **sync_mode** (bool) – 是否做同步训练(synchronous training), 默认为True
- **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()``
- **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式下时,需要将当前endpoint(终端)传入该参数。Pserver模式不使用该参数
- **startup_program** (Program|None) – 待transpile(转译)的startup program,默认为 ``fluid.default_startup_program()``
- **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式时,需要将当前endpoint(终端)传入该参数。PServer模型下,当用户需要使用增量训练时,必须要指定该参数。
返回:None
**代码示例**
...
...
doc/fluid/api_cn/transpiler_cn/HashName_cn.rst
浏览文件 @
76ef4f8c
...
...
@@ -5,20 +5,41 @@ HashName
.. py:class:: paddle.fluid.transpiler.HashName(pserver_endpoints)
使用 python ``Hash()`` 函数将变量名散列到多个pserver终端
。
该方法使用 python ``Hash()`` 函数将变量散列到多个parameter server节点
。
参数:
- **pserver_endpoints** (list) - endpoint (ip:port)的 list
返回:实例化后的HashName的对象
返回类型:HashName
**代码示例**
.. code-block:: python
import paddle.fluid.transpiler.HashName as HashName
pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”]
vars = [“var1”,”var2”,”var3”,”var4”,”var5”]
rr =
RoundRobin
(pserver_endpoints)
rr =
HashName
(pserver_endpoints)
rr.dispatch(vars)
.. py:method:: reset()
该方法将重置HashName内置的计数, 计数将重置为0。
返回:无。
**代码示例**
.. code-block:: python
import paddle.fluid.transpiler.HashName as HashName
pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”]
vars = [“var1”,”var2”,”var3”,”var4”,”var5”]
rr = HashName(pserver_endpoints)
rr.reset()
doc/fluid/api_cn/transpiler_cn/RoundRobin_cn.rst
浏览文件 @
76ef4f8c
...
...
@@ -5,13 +5,40 @@ RoundRobin
.. py:class:: paddle.fluid.transpiler.RoundRobin(pserver_endpoints)
使用 ``RondRobin`` 方法将变量分配给服务器端点
。
该方法使用 ``RoundRobin`` 的方式将变量散列到多个parameter server终端
。
`RondRobin <https://en.wikipedia.org/wiki/Round-robin_scheduling>`_
参数:
- **pserver_endpoints** (list) - endpoint (ip:port)的 list
返回:实例化后的RoundRobin的对象
返回类型:RoundRobin
**代码示例**
.. code-block:: python
import paddle.fluid.transpiler.RoundRobin as RoundRobin
pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”]
vars = [“var1”,”var2”,”var3”,”var4”,”var5”]
rr = RoundRobin(pserver_endpoints)
rr.dispatch(vars)
.. py:method:: dispatch(varlist)
该方法使用RoundRobin的方式将多个参数散列到多个parameter Server终端。
参数:
- **varlist** (list) - 参数 (var1, var2, var3) 的 list
返回:基于varlist中var的顺序,返回参数服务器(ip:port)的列表, 列表中的数据量和varlist的数据量一致。
返回类型:list
**代码示例**
.. code-block:: python
...
...
@@ -22,5 +49,19 @@ RoundRobin
rr.dispatch(vars)
.. py:method:: reset()
该方法将重置RoundRobin内置的计数, 计数将重置为0。
返回:无。
**代码示例**
.. code-block:: python
pserver_endpoints = [“127.0.0.1:6007”, “127.0.0.1:6008”]
vars = [“var1”,”var2”,”var3”,”var4”,”var5”]
rr = RoundRobin(pserver_endpoints)
rr.reset()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录