BuildStrategy

    BuildStrategy 使用户更方便地控制 中计算图的建造方法,可通过设置 ParallelExecutor 中的 BuildStrategy 成员来实现此功能。

    BuildStrategy,一个BuildStrategy的实例

    代码示例

    debug_graphviz_path

    str类型。表示以graphviz格式向文件中写入计算图的路径,有利于调试。默认值为空字符串。

    代码示例

    1. import paddle
    2. import paddle.static as static
    3. paddle.enable_static()
    4. build_strategy = static.BuildStrategy()

    enable_sequential_execution

    bool类型。如果设置为True,则算子的执行顺序将与算子定义的执行顺序相同。默认为False。

    1. import paddle
    2. import paddle.static as static
    3. paddle.enable_static()
    4. build_strategy = static.BuildStrategy()
    5. build_strategy.enable_sequential_execution = True

    bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模式下有效,使程序运行更快。默认为False。

    代码示例

    fuse_elewise_add_act_ops

    bool类型。表明是否融合(fuse) elementwise_add_op和activation_op。这会使整体执行过程更快。默认为False。

    代码示例

    1. import paddle
    2. import paddle.static as static
    3. paddle.enable_static()
    4. build_strategy = static.BuildStrategy()
    5. build_strategy.fuse_elewise_add_act_ops = True

    fuse_relu_depthwise_conv

    bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存并可能加速执行过程。此选项仅适用于GPU设备。默认为False。

    1. import paddle
    2. import paddle.static as static
    3. build_strategy = static.BuildStrategy()
    4. build_strategy.fuse_relu_depthwise_conv = True

    gradient_scale_strategy

    代码示例

    memory_optimize

    bool类型或None。设为True时可用于减少总内存消耗,False表示不使用,None表示框架会自动选择使用或者不使用优化策略。当前,None意味着当GC不能使用时,优化策略将被使用。默认为None。

    reduce_strategy

    类型。在 ParallelExecutor 中,存在两种参数梯度聚合策略,即 AllReduceReduce 。如果用户需要在所有执行设备上独立地进行参数更新,可以使用 AllReduce 。如果使用 Reduce 策略,所有参数的优化将均匀地分配给不同的执行设备,随之将优化后的参数广播给其他执行设备。 默认值为 AllReduce

    代码示例

    1. import paddle
    2. import paddle.static as static
    3. paddle.enable_static()
    4. build_strategy = static.BuildStrategy()
    5. build_strategy.reduce_strategy = static.BuildStrategy.ReduceStrategy.Reduce

    remove_unnecessary_lock

    bool类型。设置True会去除GPU操作中的一些锁操作, ParallelExecutor 将运行得更快,默认为True。

    1. import paddle
    2. import paddle.static as static
    3. paddle.enable_static()
    4. build_strategy = static.BuildStrategy()
    5. build_strategy.remove_unnecessary_lock = True

    bool类型。表示是否使用同步的批正则化,即在训练阶段通过多个设备同步均值和方差。当前的实现不支持FP16训练和CPU。并且目前**仅支持**仅在一台机器上进行同步式批正则。默认为 False。

    代码示例