当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.distribute.ReplicaContext.all_reduce用法及代码示例


用法

all_reduce(
    reduce_op, value, options=None
)

参数

返回

  • 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 目前只能在副本上下文中调用。其他减少副本值的变体是:

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.distribute.ReplicaContext.all_reduce。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。