tf.distribute.NcclAllReduce
Реализация all-reduce для CrossDeviceOps с использованием NCCL.
Наследует: CrossDeviceOps
tf.distribute.NcclAllReduce(
num_packs=1
)
Для all-reduce используется Nvidia NCCL. В пакетном API тензоры будут переупакованы или агрегированы для более эффективной передачи между устройствами.
Для операций reduce, отличных от all-reduce, используется запасной вариант — tf.distribute.ReductionToOneDevice.
Ниже показано, как использовать NcclAllReduce в tf.distribute.MirroredStrategy:
strategy = tf.distribute.MirroredStrategy( cross_device_ops=tf.distribute.NcclAllReduce())
| Аргументы | |
|---|---|
num_packs | неотрицательное целое число. Количество блоков, на которые нужно разделить значения. Если равно нулю, разбиение на блоки не выполняется. |
| Исключения | |
|---|---|
ValueError | если num_packs отрицательно. |
Методы
batch_reduce
batch_reduce(
reduce_op, value_destination_pairs, options=None
)
Выполняет пакетное сведение значений к целевым объектам.
См. tf.distribute.StrategyExtended.batch_reduce_to. Этот метод можно вызывать только в межрепличном контексте.
| Аргументы | |
|---|---|
reduce_op | объект tf.distribute.ReduceOp, задающий способ объединения значений. |
value_destination_pairs | последовательность пар (значение, целевые объекты). Описание см. в разделе tf.distribute.CrossDeviceOps.reduce. |
options | объект tf.distribute.experimental.CommunicationOptions. Подробные сведения см. в разделе tf.distribute.experimental.CommunicationOptions. |
| Возвращает | |
|---|---|
Список объектов tf.Tensor или tf.distribute.DistributedValues, по одному на каждую пару в value_destination_pairs. |
| Исключения | |
|---|---|
ValueError | если value_destination_pairs не является итерируемым объектом, состоящим из кортежей с объектами tf.distribute.DistributedValues и целевыми объектами. |
broadcast
broadcast(
tensor, destinations
)
Рассылает tensor объектам destinations.
Этот метод можно вызывать только в межрепличном контексте.
| Аргументы | |
|---|---|
tensor | объект типа tf.Tensor. Значение для рассылки. |
destinations | объект tf.distribute.DistributedValues, объект tf.Variable, объект типа tf.Tensor или строка с именем устройства. Определяет устройства, на которые нужно выполнить рассылку. Обратите внимание: если это объект tf.Variable, значение рассылается на устройства этой переменной; этот метод не обновляет переменную. |
| Возвращает | |
|---|---|
Объект tf.Tensor или tf.distribute.DistributedValues. |
reduce
reduce(
reduce_op, per_replica_value, destinations, options=None
)
Сводит per_replica_value к destinations.
См. tf.distribute.StrategyExtended.reduce_to. Этот метод можно вызывать только в межрепличном контексте.
| Аргументы | |
|---|---|
reduce_op | объект tf.distribute.ReduceOp, задающий способ объединения значений. |
per_replica_value | объект tf.distribute.DistributedValues или объект типа tf.Tensor. |
destinations | объект tf.distribute.DistributedValues, объект tf.Variable, объект типа tf.Tensor или строка с именем устройства. Определяет устройства, к которым выполняется сведение. Для выполнения all-reduce передайте одно и то же значение в value и destinations. Обратите внимание: если это объект tf.Variable, значение сводится на устройствах этой переменной, а этот метод не обновляет переменную. |
options | объект tf.distribute.experimental.CommunicationOptions. Подробные сведения см. в разделе tf.distribute.experimental.CommunicationOptions. |
| Возвращает | |
|---|---|
Объект tf.Tensor или tf.distribute.DistributedValues. |
| Исключения | |
|---|---|
ValueError | если per_replica_value нельзя преобразовать в объект tf.distribute.DistributedValues или если destinations не является строкой, объектом tf.Variable или объектом tf.distribute.DistributedValues. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/distribute/NcclAllReduce