用法
all_reduce(
reduce_op, value, options=None
)
参数
-
reduce_op
一个tf.distribute.ReduceOp
值,指定如何组合值。允许使用枚举的字符串表示,例如"SUM"、"MEAN"。 -
value
tf.Tensor
或tf.IndexedSlices
的潜在嵌套结构,tf.nest.flatten
接受。value
的结构和形状需要在所有副本上相同。 -
options
一个tf.distribute.experimental.CommunicationOptions
。执行集体操作的选项。如果tf.distribute.Strategy
在构造函数中采用一个,这将覆盖默认选项。有关选项的详细信息,请参阅tf.distribute.experimental.CommunicationOptions
。
返回
-
tf.Tensor
的嵌套结构,具有减少的值。结构与value
相同。
All-reduces value
跨所有副本。
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
def step_fn():
ctx = tf.distribute.get_replica_context()
value = tf.identity(1.)
return ctx.all_reduce(tf.distribute.ReduceOp.SUM, value)
strategy.experimental_local_results(strategy.run(step_fn))
(<tf.Tensor:shape=(), dtype=float32, numpy=2.0>,
<tf.Tensor:shape=(), dtype=float32, numpy=2.0>)
它支持批处理操作。您可以传递一个值列表,并在可能的情况下尝试对它们进行批处理。您还可以指定 options
以指示所需的批处理行为,例如将值批处理到多个包中,以便它们可以更好地与计算重叠。
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
def step_fn():
ctx = tf.distribute.get_replica_context()
value1 = tf.identity(1.)
value2 = tf.identity(2.)
return ctx.all_reduce(tf.distribute.ReduceOp.SUM, [value1, value2])
strategy.experimental_local_results(strategy.run(step_fn))
([<tf.Tensor:shape=(), dtype=float32, numpy=2.0>,
<tf.Tensor:shape=(), dtype=float32, numpy=4.0>],
[<tf.Tensor:shape=(), dtype=float32, numpy=2.0>,
<tf.Tensor:shape=(), dtype=float32, numpy=4.0>])
注意所有副本都需要参与all-reduce,否则这个操作会挂起。请注意,如果有多个all-reduces,它们需要在所有副本上以相同的顺序执行。根据条件调度all-reduce通常是error-prone。
已知限制:如果 value
包含 tf.IndexedSlices
,尝试计算梯度 w.r.t value
将导致错误。
此 API 目前只能在副本上下文中调用。其他减少副本值的变体是:
tf.distribute.StrategyExtended.reduce_to
:cross-replica 上下文中的 reduce 和 all-reduce API。tf.distribute.StrategyExtended.batch_reduce_to
:cross-replica 上下文中的批量归约和all-reduce API。tf.distribute.Strategy.reduce
:在cross-replica 上下文中减少到主机的更方便的方法。
相关用法
- Python tf.compat.v1.distribute.ReplicaContext.merge_call用法及代码示例
- Python tf.compat.v1.distribute.ReplicaContext用法及代码示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.compat.v1.distribute.OneDeviceStrategy用法及代码示例
- Python tf.compat.v1.distribute.Strategy.run用法及代码示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_make_numpy_dataset用法及代码示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.compat.v1.distribute.OneDeviceStrategy.scope用法及代码示例
- Python tf.compat.v1.distribute.StrategyExtended.batch_reduce_to用法及代码示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.experimental_make_numpy_dataset用法及代码示例
- Python tf.compat.v1.distribute.OneDeviceStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy.make_input_fn_iterator用法及代码示例
- Python tf.compat.v1.distribute.experimental.MultiWorkerMirroredStrategy.reduce用法及代码示例
- Python tf.compat.v1.distribute.experimental.MultiWorkerMirroredStrategy.experimental_make_numpy_dataset用法及代码示例
- Python tf.compat.v1.distribute.Strategy.experimental_make_numpy_dataset用法及代码示例
- Python tf.compat.v1.distribute.StrategyExtended.colocate_vars_with用法及代码示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy用法及代码示例
- Python tf.compat.v1.distribute.OneDeviceStrategy.reduce用法及代码示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.scope用法及代码示例
- Python tf.compat.v1.distribute.StrategyExtended.non_slot_devices用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.distribute.ReplicaContext.all_reduce。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。