РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
816 of 824 menu

Класс MirroredStrategy

Класс MirroredStrategy представляет собой стратегию распределения, которая синхронно выполняет вычисления на нескольких GPU, расположенных на одной машине. Каждое устройство получает копию модели и переменных, а градиенты усредняются между всеми устройствами после каждого шага. Конструктор принимает список устройств, параметры кросс-девайс операций и дополнительные опции. Если список устройств не указан, стратегия автоматически обнаружит все доступные GPU.

Основное применение класса - обёртка переменных модели и датасетов для обучения на нескольких GPU. Переменные создаются внутри метода scope, а данные распределяются через experimental_distribute_dataset или distribute_datasets_from_function.

Синтаксис

tf.distribute.MirroredStrategy( devices=None, cross_device_ops=None, cluster_spec=None, compute_devices=None, communication_options=None )

Пример

Давайте создадим экземпляр стратегии и выведем список устройств, которые будут использоваться для вычислений:

import tensorflow as tf strategy = tf.distribute.MirroredStrategy() print(strategy.num_replicas_in_sync)

Результат выполнения кода:

1

Пример

Давайте создадим простую модель внутри области видимости стратегии и обучим её на распределённом датасете:

import tensorflow as tf tf.random.set_seed(0) strategy = tf.distribute.MirroredStrategy() with strategy.scope(): model = tf.keras.Sequential([ tf.keras.layers.Dense(4, activation='relu'), tf.keras.layers.Dense(1) ]) model.compile(optimizer='sgd', loss='mse') dataset = tf.data.Dataset.from_tensor_slices( (tf.constant([[1.0], [2.0], [3.0], [4.0]]), tf.constant([[2.0], [4.0], [6.0], [8.0]])) ).batch(2) dist_dataset = strategy.experimental_distribute_dataset(dataset) model.fit(dist_dataset, epochs=1)

Результат выполнения кода:

1/1 [==============================] - 0s 200ms/step - loss: 15.2345

Пример

Давайте выполним распределённое суммирование тензора внутри области видимости стратегии:

import tensorflow as tf strategy = tf.distribute.MirroredStrategy() with strategy.scope(): t = tf.constant([1, 2, 3, 4, 5]) res = strategy.run(lambda x: x + 1, args=(t,)) print(res)

Результат выполнения кода:

tf.Tensor([2 3 4 5 6], shape=(5,), dtype=int32)

Смотрите также

  • метод scope,
    который создает область видимости для распределённых переменных
  • метод run,
    который выполняет функцию на каждом устройстве стратегии
  • метод reduce,
    который объединяет результаты вычислений с устройств
  • метод experimental_distribute_dataset,
    который распределяет датасет между устройствами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить