tf.distribute.experimental.CollectiveHints
Подсказки для коллективных операций, таких как AllReduce.
tf.distribute.experimental.CollectiveHints(
bytes_per_pack=0, timeout_seconds=None
)
Это можно передать в методы, такие как tf.distribute.get_replica_context().all_reduce(), чтобы оптимизировать производительность коллективной операции. Обратите внимание, что это только подсказки, которые могут или не могут изменить фактическое поведение. Некоторые параметры применяются только к определённой стратегии и игнорируются другими.
Одной из распространённых оптимизаций является разделение all-reduce градиентов на несколько пакетов, чтобы обновления весов могли перекрываться с all-reduce градиентов.
Примеры:
- bytes_per_pack
hints = tf.distribute.experimental.CollectiveHints(
bytes_per_pack=50 * 1024 * 1024)
grads = tf.distribute.get_replica_context().all_reduce(
'sum', grads, experimental_hints=hints)
optimizer.apply_gradients(zip(grads, vars),
experimental_aggregate_gradients=False)
- timeout_seconds
strategy = tf.distribute.MirroredStrategy()
hints = tf.distribute.experimental.CollectiveHints(
timeout_seconds=120.0)
try:
strategy.reduce("sum", v, axis=None, experimental_hints=hints)
except tf.errors.DeadlineExceededError:
do_something()
| Аргументы | |
|---|---|
bytes_per_pack | целое число не меньше нуля. Разбивает коллективные операции на пакеты определенного размера. Если значение равно нулю, значение определяется автоматически. Это применимо только к all-reduce с MultiWorkerMirroredStrategy в настоящее время. |
timeout_seconds | число с плавающей точкой или None, время ожидания в секундах. Если не None, коллективная операция вызывает tf.errors.DeadlineExceededError, если выполняется дольше, чем это время ожидания. Это может быть полезно при отладке проблем с зависанием. Следует использовать только для отладки, так как это создаёт новую нить для каждой коллективной операции, т.е. накладные расходы в виде timeout_seconds * num_collectives_per_second дополнительных потоков. Это работает только для 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/CollectiveHints