Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
7f211856
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
7
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看板
未验证
提交
7f211856
编写于
10月 08, 2019
作者:
F
flame
提交者:
GitHub
10月 08, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
build strategy doc (#1201)
* build strategy api doc
上级
0e77e3bf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
22 deletion
+41
-22
doc/fluid/api_cn/fluid_cn/BuildStrategy_cn.rst
doc/fluid/api_cn/fluid_cn/BuildStrategy_cn.rst
+41
-22
未找到文件。
doc/fluid/api_cn/fluid_cn/BuildStrategy_cn.rst
浏览文件 @
7f211856
...
...
@@ -3,22 +3,39 @@
BuildStrategy
-------------------------------
.. py:class::
paddle.fluid.BuildStrategy
.. py:class:: paddle.fluid.BuildStrategy
``BuildStrategy`` 使用户更
精准地控制 ``ParallelExecutor`` 中SSA图的建造方法。
可通过设置 ``ParallelExecutor`` 中的 ``BuildStrategy`` 成员来实现此功能。
``BuildStrategy`` 使用户更
方便地控制[ ``ParallelExecutor`` ](../fluid_cn.html\#parallelexecutor)中计算图的建造方法,
可通过设置 ``ParallelExecutor`` 中的 ``BuildStrategy`` 成员来实现此功能。
**代码示例**
.. code-block:: python
import os
import numpy as np
import paddle.fluid as fluid
os.environ["CPU_NUM"] = '2'
places = fluid.cpu_places()
data = fluid.layers.data(name="x", shape=[1], dtype="float32")
hidden = fluid.layers.fc(input=data, size=10)
loss = fluid.layers.mean(hidden)
fluid.optimizer.SGD(learning_rate=0.01).minimize(loss)
build_strategy = fluid.BuildStrategy()
build_strategy.enable_inplace = True
build_strategy.memory_optimize = True
build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce
program = fluid.compiler.CompiledProgram(fluid.default_main_program())
program = program.with_data_parallel(loss_name=loss.name,
build_strategy=build_strategy,
places=places)
.. py:attribute:: debug_graphviz_path
str类型。
它表明了以graphviz格式向文件中写入SSA图的路径,有利于调试。 默认值为""
。
str类型。
表示以graphviz格式向文件中写入计算图的路径,有利于调试。默认值为空字符串
。
**代码示例**
...
...
@@ -31,7 +48,7 @@ str类型。它表明了以graphviz格式向文件中写入SSA图的路径,有
.. py:attribute:: enable_sequential_execution
类型是BOOL。 如果设置为True,则ops的执行顺序将与program中的执行顺序相同。
默认为False。
bool类型。如果设置为True,则算子的执行顺序将与算子定义的执行顺序相同。
默认为False。
**代码示例**
...
...
@@ -44,11 +61,19 @@ str类型。它表明了以graphviz格式向文件中写入SSA图的路径,有
.. py:attribute:: fuse_broadcast_ops
bool类型。它表明了是否融合(fuse)broadcast ops。值得注意的是,在Reduce模式中,融合broadcast ops可以使程序运行更快,因为这个过程等同于延迟执行所有的broadcast ops。在这种情况下,所有的nccl streams仅用于一段时间内的NCCLReduce操作。默认为False。
bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模式下有效,使程序运行更快。默认为False。
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
build_strategy = fluid.BuildStrategy()
build_strategy.fuse_broadcast_ops = True
.. py:attribute:: fuse_elewise_add_act_ops
bool类型。
它表明了是否融合(fuse)elementwise_add_op和activation_op。这会使整体执行过程更快一些
。默认为False。
bool类型。
表明是否融合(fuse) elementwise_add_op和activation_op。这会使整体执行过程更快
。默认为False。
**代码示例**
...
...
@@ -61,7 +86,7 @@ bool类型。它表明了是否融合(fuse)elementwise_add_op和activation_o
.. py:attribute:: fuse_relu_depthwise_conv
BOOL类型,fuse_relu_depthwise_conv指示是否融合relu和depthwise_conv2d,它会节省GPU内存并可能加速执行过程。 此选项仅适用于GPU设备。
默认为False。
bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存并可能加速执行过程。此选项仅适用于GPU设备。
默认为False。
**代码示例**
...
...
@@ -73,15 +98,15 @@ BOOL类型,fuse_relu_depthwise_conv指示是否融合relu和depthwise_conv2d
.. py:attribute:: gradient_scale_strategy
``fluid.BuildStrategy.GradientScaleStrategy`` 类型。在 ``ParallelExecutor`` 中,存在三种定义
*loss@grad* 的方式,分别为 ``CoeffNumDevice``, ``One`` 与 ``Customized``。默认情况下, ``ParallelExecutor`` 根据设备数目来设置 *loss@grad* 。如果你想自定义 *loss@grad* ,你
可以选择 ``Customized`` 方法。默认为 ``CoeffNumDevice`` 。
``fluid.BuildStrategy.GradientScaleStrategy`` 类型。在 ``ParallelExecutor`` 中,存在三种定义
loss对应梯度( *loss@grad* )的方式,分别为 ``CoeffNumDevice``, ``One`` 与 ``Customized``。默认情况下, ``ParallelExecutor`` 根据设备数目来设置 *loss@grad* 。如果用户需要自定义 *loss@grad* ,
可以选择 ``Customized`` 方法。默认为 ``CoeffNumDevice`` 。
**代码示例**
.. code-block:: python
import paddle.fluid.compiler as compiler
import numpy
import os
import numpy as np
import paddle.fluid.compiler as compiler
use_cuda = True
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
...
...
@@ -114,8 +139,8 @@ BOOL类型,fuse_relu_depthwise_conv指示是否融合relu和depthwise_conv2d
places = places)
dev_count = len(places)
x = n
umpy
.random.random(size=(10, 1)).astype('float32')
loss_grad = n
umpy
.ones((dev_count)).astype("float32") * 0.01
x = n
p
.random.random(size=(10, 1)).astype('float32')
loss_grad = n
p
.ones((dev_count)).astype("float32") * 0.01
loss_grad_name = loss.name+"@GRAD"
loss_data = exe.run(compiled_prog,
feed={"X": x, loss_grad_name : loss_grad},
...
...
@@ -123,13 +148,11 @@ BOOL类型,fuse_relu_depthwise_conv指示是否融合relu和depthwise_conv2d
.. py:attribute:: memory_optimize
bool类型或者None。设为True时可用于减少总内存消耗。
默认为None。None表示框架会自动选择使用或者不使用优化策略。当前,None意味着当GC不能使用时,优化策略将被使用。
True表示可使用,False表示不可使用。默认为None。
bool类型或None。设为True时可用于减少总内存消耗,False表示不使用,None表示框架会自动选择使用或者不使用优化策略。当前,None意味着当GC不能使用时,优化策略将被使用。默认为None。
.. py:attribute:: reduce_strategy
``fluid.BuildStrategy.ReduceStrategy`` 类型。在 ``ParallelExecutor`` 中,存在两种
减少策略(reduce strategy),即 ``AllReduce`` 和 ``Reduce`` 。如果你需要在所有执行设备上独立地进行参数优化,可以使用 ``AllReduce`` 。反之,
如果使用 ``Reduce`` 策略,所有参数的优化将均匀地分配给不同的执行设备,随之将优化后的参数广播给其他执行设备。
``fluid.BuildStrategy.ReduceStrategy`` 类型。在 ``ParallelExecutor`` 中,存在两种
参数梯度聚合策略,即 ``AllReduce`` 和 ``Reduce`` 。如果用户需要在所有执行设备上独立地进行参数更新,可以使用 ``AllReduce`` 。
如果使用 ``Reduce`` 策略,所有参数的优化将均匀地分配给不同的执行设备,随之将优化后的参数广播给其他执行设备。
默认值为 ``AllReduce`` 。
**代码示例**
...
...
@@ -142,7 +165,7 @@ True表示可使用,False表示不可使用。默认为None。
.. py:attribute:: remove_unnecessary_lock
BOOL类型。如果设置为True, GPU操作中的一些锁将被释放, ``ParallelExecutor`` 将运行得更快,默认为
True。
bool类型。设置True会去除GPU操作中的一些锁操作, ``ParallelExecutor`` 将运行得更快,默认为
True。
**代码示例**
...
...
@@ -155,11 +178,7 @@ BOOL类型。如果设置为True, GPU操作中的一些锁将被释放, ``Para
.. py:attribute:: sync_batch_norm
类型为bool, ``sync_batch_norm`` 表示是否使用同步的批正则化,即在训练阶段通过多个设备同步均值和方差。
当前的实现不支持FP16训练和CPU。仅在一台机器上进行同步式批正则,不适用于多台机器。
默认为 False。
bool类型。表示是否使用同步的批正则化,即在训练阶段通过多个设备同步均值和方差。当前的实现不支持FP16训练和CPU。并且目前**仅支持**仅在一台机器上进行同步式批正则。默认为 False。
**代码示例**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录