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)
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 | Когда аргументы имеют недопустимое значение. |
© 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/r2.4/api_docs/python/tf/distribute/experimental/CollectiveHints