tf.distribute.experimental.CommunicationOptions
Параметры взаимодействия между устройствами, например для all-reduce.
tf.distribute.experimental.CommunicationOptions(
bytes_per_pack=0,
timeout_seconds=None,
implementation=tf.distribute.experimental.CollectiveCommunication.AUTO
)
Используется в блокнотах
| Используется в руководстве |
|---|
Этот параметр можно передать таким методам, как tf.distribute.get_replica_context().all_reduce(), чтобы оптимизировать производительность коллективных операций. Обратите внимание, что это лишь подсказки, которые могут повлиять или не повлиять на фактическое поведение. Некоторые параметры применяются только к определенным стратегиям и игнорируются остальными.
Одна из распространенных оптимизаций — разделение операции all-reduce для градиентов на несколько пакетов, чтобы обновление весов могло выполняться параллельно с all-reduce для градиентов.
Примеры:
options = tf.distribute.experimental.CommunicationOptions(
bytes_per_pack=50 * 1024 * 1024,
timeout_seconds=120.0,
implementation=tf.distribute.experimental.CommunicationImplementation.NCCL
)
grads = tf.distribute.get_replica_context().all_reduce(
'sum', grads, options=options)
optimizer.apply_gradients(zip(grads, vars),
experimental_aggregate_gradients=False)
| Аргументы | |
|---|---|
bytes_per_pack | неотрицательное целое число. Разбивает коллективные операции на пакеты заданного размера. Если значение равно нулю, оно определяется автоматически. Эта подсказка учитывается всеми стратегиями с несколькими репликами, кроме TPUStrategy. |
timeout_seconds | число с плавающей запятой или None; время ожидания в секундах. Если значение не равно None, коллективная операция вызывает tf.errors.DeadlineExceededError, если выполняется дольше указанного времени ожидания. Нулевое значение отключает время ожидания. Это может быть полезно при отладке проблем с зависанием. Используйте этот параметр только для отладки, так как для каждой коллективной операции создается новый поток, то есть добавляется timeout_seconds * num_collectives_per_second дополнительных потоков. Работает только для tf.distribute.experimental.MultiWorkerMirroredStrategy. |
implementation | значение типа tf.distribute.experimental.CommunicationImplementation. Это подсказка о предпочтительной реализации взаимодействия. Возможные значения: AUTO, RING и NCCL. Как правило, NCCL обеспечивает более высокую производительность на GPU, но не работает на CPU. Работает только для tf.distribute.experimental.MultiWorkerMirroredStrategy. |
| Вызывает исключение | |
|---|---|
ValueError | Если аргументы имеют недопустимые значения. |
© 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/experimental/CommunicationOptions