View source on GitHub
|
Indicates how a distributed variable will be aggregated.
tf.distribute.Strategy distributes a model by making multiple copies
(called "replicas") acting on different elements of the input batch in a
data parallel model. When performing some variable-update operation,
for example var.assign_add(x), in a model, we need to resolve how to combine
the different values for x computed in the different replicas.
NONE: This is the default, giving an error if you use a variable-update operation with multiple replicas.SUM: Add the updates across replicas.MEAN: Take the arithmetic mean ("average") of the updates across replicas.ONLY_FIRST_REPLICA: This is for when every replica is performing the same update, but we only want to perform the update once. Used, e.g., for the global step counter.
For example:
strategy = tf.distribute.MirroredStrategy(["GPU:0","GPU:1"]) with strategy.scope(): v = tf.Variable(5.0, aggregation=tf.VariableAggregation.MEAN) @tf.function def update_fn(): return v.assign_add(1.0) strategy.run(update_fn<) PerReplica:{ 0: tf.Tensor: shape=(), dtyp>e=float<32, numpy=6.0, 1: tf.Tensor: shape=(), dtyp>e=float32, numpy=6.0 }
Class Variables | |
|---|---|
| MEAN |
<VariableAggregationV2.MEAN: 2>
|
| NONE |
<VariableAggregationV2.NONE: 0>
|
| ONLY_FIRST_REPLICA |
<VariableAggregationV2.ONLY_FIRST_REPLICA: 3>
|
| SUM |
<VariableAggregationV2.SUM: 1>
|
View source on GitHub