tf.distribute.ReplicaContext
| Просмотреть исходный код на GitHub |
tf.distribute.Strategy API, когда вы находитесь в контексте реплики.
tf.distribute.ReplicaContext(
strategy, replica_id_in_sync_group
)
Вы можете использовать tf.distribute.get_replica_context для получения экземпляра ReplicaContext. Это должно быть внутри вашей функции шага репликации, например, в вызове tf.distribute.Strategy.experimental_run_v2.
| Атрибуты | |
|---|---|
devices | Устройства, на которых будет выполняться эта реплика, как кортеж строк. |
num_replicas_in_sync | Возвращает число реплик, по которым агрегируются градиенты. |
replica_id_in_sync_group | Возвращает идентификатор реплики, которая определяется. Это идентифицирует реплику, которая является частью группы синхронизации. В настоящее время мы предполагаем, что все группы синхронизации содержат одинаковое количество реплик. Значение идентификатора реплики может изменяться от 0 до |
strategy | Текущий объект tf.distribute.Strategy. |
Методы
all_reduce
all_reduce(
reduce_op, value
)
Выполняет все-сведение заданного value Tensor вложенного элемента по репликам.
Если all_reduce вызывается в любой реплике, она должна быть вызвана во всех репликах. Структура вложенных элементов и Tensor формы должны быть идентичны во всех репликах.
Пример с двумя репликами: Реплика 0 value: {'a': 1, 'b': [40, 1]} Реплика 1 value: {'a': 3, 'b': [ 2, 98]}
Если reduce_op == SUM: Результат (на всех репликах): {'a': 4, 'b': [42, 99]}
Если reduce_op == MEAN: Результат (на всех репликах): {'a': 2, 'b': [21, 49.5]}
| Аргументы | |
|---|---|
reduce_op | Тип сведения, экземпляр перечисления tf.distribute.ReduceOp. |
value | Вложенная структура Tensor для все-сведения. Структура должна быть совместима с tf.nest. |
| Возвращаемое значение | |
|---|---|
Вложенная структура Tensor с результирующими value из каждой реплики. |
merge_call
merge_call(
merge_fn, args=(), kwargs=None
)
Объединяет аргументы по репликам и запускает merge_fn в кросрепликационном контексте.
Это позволяет обмениваться данными и координировать действия, когда существует несколько вызовов step_fn, вызванных вызовом strategy.experimental_run_v2(step_fn, ...).
См. tf.distribute.Strategy.experimental_run_v2 для объяснения.
Если вы не находитесь внутри распределенного пространства, это эквивалентно:
strategy = tf.distribute.get_strategy() with cross-replica-context(strategy): return merge_fn(strategy, *args, **kwargs)
| Аргументы | |
|---|---|
merge_fn | Функция, которая объединяет аргументы из потоков, которые передаются как PerReplica. Она принимает объект tf.distribute.Strategy в качестве первого аргумента. |
args | Список или кортеж с позиционными аргументами для каждого потока для merge_fn. |
kwargs | Словарь с ключевыми аргументами для каждого потока для merge_fn. |
| Возвращаемое значение | |
|---|---|
Возвращаемое значение merge_fn, за исключением значений PerReplica которые распаковываются. |
__enter__
__enter__()
__exit__
__exit__(
exception_type, exception_value, traceback
)
© 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/distribute/ReplicaContext