Метод reduce класса MirroredStrategy
Метод reduce класса MirroredStrategy выполняет операцию сокращения данных между всеми репликами распределённой стратегии. Он принимает тензор и применяет заданную операцию (например, сумму или среднее) к соответствующим значениям на каждом устройстве, возвращая агрегированный результат. Первым параметром передаётся операция сокращения, вторым - сокращаемый тензор. Метод полезен при вычислении метрик, градиентов и других агрегированных значений в распределённом обучении.
Синтаксис
strategy.reduce(reduce_op, value, axis=None)
Пример
Давайте создадим стратегию MirroredStrategy и выполним операцию сокращения суммы над тензором внутри области видимости стратегии:
import tensorflow as tf
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
t = tf.constant([1, 2, 3, 4, 5])
res = strategy.reduce(tf.distribute.ReduceOp.SUM, t, axis=None)
print(res)
Результат выполнения кода:
tf.Tensor(1, shape=(), dtype=int32)
Пример
Давайте выполним операцию сокращения среднего над тем же тензором внутри области видимости стратегии:
import tensorflow as tf
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
t = tf.constant([1, 2, 3, 4, 5])
res = strategy.reduce(tf.distribute.ReduceOp.MEAN, t, axis=None)
print(res)
Результат выполнения кода:
tf.Tensor(1, shape=(), dtype=int32)
Смотрите также
-
класс
MirroredStrategy,
который реализует распределённую стратегию с зеркалированием -
метод
scope,
который создаёт контекст для распределённых переменных -
метод
run,
который запускает функцию на каждой реплике -
метод
experimental_distribute_dataset,
который распределяет датасет между репликами