Spec-Zone.ru › TensorFlow 1.15

Модуль: tf.compat.v1.distribute

Библиотека для выполнения вычислений на нескольких устройствах.

См. руководство для обзора и примеров: TensorFlow v1.x, TensorFlow v2.x.

Цель этой библиотеки — предоставить возможность писать алгоритм стилизованным способом, который будет совместим с различными tf.distribute.Strategy реализациями. Каждый потомок будет реализовывать различную стратегию распределения алгоритма по нескольким устройствам/машинам. Кроме того, эти изменения могут быть скрыты внутри конкретных слоёв и других классов библиотеки, которые требуют специального обращения для работы в распределённой среде, чтобы код определения модели большинства пользователей мог работать без изменений. API tf.distribute.Strategy работает одинаково с выполнением в режиме eager и с выполнением в режиме графа.

Словарь

  • Параллелизм данных — это выполнение нескольких копий модели на разных частях входных данных. Это отличается от параллелизма модели, где одна копия модели делится на несколько устройств. Примечание: мы поддерживаем только параллелизм данных на данный момент, но надеемся добавить поддержку параллелизма модели в будущем.
  • Устройство — это процессор или ускоритель (например, GPU, TPU) на некоторой машине, на котором TensorFlow может выполнять операции (см., например, tf.device). На одной машине может быть несколько устройств, или вы можете быть подключены к устройствам на нескольких машинах. Устройства, используемые для выполнения вычислений, называются рабочими устройствами. Устройства, используемые для хранения переменных, называются параметрическими устройствами. Для некоторых стратегий, таких как tf.distribute.MirroredStrategy, рабочие и параметрические устройства будут одинаковыми (см. ниже раздел о зеркальных переменных). Для других они будут разными. Например, tf.distribute.experimental.CentralStorageStrategy помещает переменные на одно устройство (которое может быть рабочим устройством или процессором), а tf.distribute.experimental.ParameterServerStrategy помещает переменные на отдельные машины, называемые параметрическими серверами (см. ниже).
  • Реплику представляет собой одну копию модели, работающую на одном фрагменте входных данных. В данный момент каждая реплика выполняется на собственном рабочем устройстве, но после добавления поддержки параллелизма модели реплика может охватывать несколько рабочих устройств.
  • Хост — это процессорное устройство на машине с рабочими устройствами, обычно используемое для выполнения входных конвейеров.
  • Рабочий определяется как физическая машина (или машины), содержащая физические устройства (например, GPU, TPU), на которых выполняется дублируемое вычисление. Рабочий может содержать одну или несколько реплик, но обязательно содержит хотя бы одну реплику. Обычно один рабочий соответствует одной машине, но в случае очень больших моделей с параллелизмом моделей один рабочий может охватывать несколько машин. Мы обычно запускаем один входной конвейер на один рабочий, снабжая все реплики на этом рабочем.
  • Синхронное, или чаще синхронное, обучение — это когда обновления от каждой реплики агрегируются вместе, прежде чем обновить переменные модели. Это отличается от асинхронного, или асинхронного, обучения, где каждая реплика обновляет переменные модели независимо. Вы также можете иметь реплики, разделённые на группы, которые синхронизированы внутри каждой группы, но асинхронны между группами.
  • Параметрические серверы: это машины, хранящие одну копию параметров/переменных, используемые некоторыми стратегиями (в настоящее время только tf.distribute.experimental.ParameterServerStrategy). Все реплики, которые хотят работать с переменной, извлекают её в начале шага и отправляют обновление для применения в конце шага. В принципе, они могут поддерживать как синхронное, так и асинхронное обучение, но в настоящее время мы поддерживаем только асинхронное обучение с параметрическими серверами. Сравните с tf.distribute.experimental.CentralStorageStrategy, который размещает все переменные на одном устройстве на одной машине (и выполняет синхронное обучение), и tf.distribute.MirroredStrategy, который дублирует переменные на нескольких устройствах (см. ниже).
  • Зеркальные переменные: это переменные, которые копируются на несколько устройств, где копии синхронизируются путём применения одинаковых обновлений ко всем копиям. Обычно используются только с синхронным обучением.
  • Сокращения и всеобщие сокращения: сокращение — это некоторый метод агрегирования нескольких значений в одно значение, например, «сумма» или «среднее». Если стратегия выполняет синхронное обучение, мы выполним сокращение градиентов для параметра от всех реплик перед применением обновления. Всеобщее сокращение — это алгоритм выполнения сокращения значений с нескольких устройств и доступность результата на всех этих устройствах.

Обратите внимание, что мы предоставляем версию по умолчанию tf.distribute.Strategy, которая используется, когда никакая другая стратегия не включена, которая обеспечивает тот же API с разумным поведением по умолчанию.

Модули

cluster_resolver модуль: Импорты библиотеки для ClusterResolvers.

experimental модуль: Библиотека стратегий распределения экспериментального уровня.

Классы

class CrossDeviceOps: Базовый класс для алгоритмов кросс-устройства сокращения и широковещательной рассылки.

class HierarchicalCopyAllReduce: Сокращение с использованием иерархического копирования всех сокращений.

class InputContext: Класс, оборачивающий информацию, необходимую для функции ввода.

class InputReplicationMode: Режим репликации для функции ввода.

class MirroredStrategy: Зеркалит переменные для распределения по нескольким устройствам и машинам.

class NcclAllReduce: Сокращение с использованием NCCL all-reduce.

class OneDeviceStrategy: Стратегия распределения для выполнения на одном устройстве.

class ReduceOp: Указывает, как набор значений должен быть сокращён.

class ReductionToOneDevice: Всегда выполнять сокращение до одного устройства, а затем выполнять широковещательную рассылку.

class ReplicaContext: tf.distribute.Strategy API при работе в контексте реплики.

class Server: Внутрипроцессорный сервер TensorFlow, предназначенный для распределённого обучения.

class Strategy: Список устройств с политикой распределения состояния и вычислений.

class StrategyExtended: Дополнительные API для алгоритмов, которые должны учитывать распределение.

Функции

experimental_set_strategy(...): Установить tf.distribute.Strategy как текущую без with strategy.scope().

get_loss_reduction(...): tf.distribute.ReduceOp, соответствующая последнему сокращению потерь.

get_replica_context(...): Возвращает текущий tf.distribute.ReplicaContext или None.

get_strategy(...): Возвращает текущий объект tf.distribute.Strategy.

has_strategy(...): Возвращает значение, если существует текущая не по умолчанию tf.distribute.Strategy.

in_cross_replica_context(...): Возвращает True если в контексте кросс-реплики.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/compat/v1/distribute

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API