Strategy¶
- class paddle.distributed. Strategy ¶
用于配置静态图分布式训练时所使用的并行策略和优化策略。目前支持 sharding
、 fused_passes
、 gradient_merge
和 pipeline
,未来将支持更多的策略。
sharding
用于配置优化器的分片策略,可以节省 GPU 显存。
fused_passes
用于配置模型的计算融合策略。
gradient_merge
用于配置训练时的梯度融合。
pipeline
用于配置流水线并行策略。
参数¶
config (dict|None, 可选) - 策略配置。若
config
参数为None
,则使用默认配置。若config
为字典,则将字典中包含的项设置为用户自定义的配置,字典中不包含的项依旧使用默认配置。默认:None。
代码示例
COPY-FROM: paddle.distributed.Strategy
属性¶
sharding¶
优化器分片策略,包含以下配置项:
``enable`` (bool) - 是否启用优化器分片策略。默认:False。
``stage`` (int) - 可以设置为 1、2 或 3。1 表示切分优化器状态,2 代表切分优化器状态和梯度,3 表示切分优化器状态、梯度和参数。默认:1。
``degree`` (int) - 分片的数量。默认:8。
代码示例
COPY-FROM: paddle.distributed.Strategy.sharding
fused_passes¶
计算融合策略,包含以下配置项:
``enable`` (bool) - 是否启用计算融合策略。默认:False。
``gemm_epilogue`` (bool) - 是否融合
Linear
层中的matmul
和add
计算。默认:False。``dropout_add`` (bool) - 是否融合
dropout
和add
计算。默认:False。
代码示例
COPY-FROM: paddle.distributed.Strategy.fused_passes
gradient_merge¶
梯度融合策略,包含以下配置项:
``enable`` (bool) - 是否启用梯度融合策略。默认:False。
``k_steps`` (int) - 梯度融合的步数。默认:1。
``avg`` (bool) - 是否平均梯度。默认:True。
代码示例
COPY-FROM: paddle.distributed.Strategy.gradient_merge
pipeline¶
流水线并行策略,包含以下配置项:
``enable`` (bool) - 是否启用流水线并行策略。默认:False。
``schedule_mode`` (str) - 流水线并行的调度模式。默认:1F1B。
``micro_batch_size`` (int) - mini-batch 中包含的每个 micro-batch 的大小。默认:1。
``accumulate_steps`` (int) - 累积步数。默认:1。
代码示例
COPY-FROM: paddle.distributed.Strategy.pipeline