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