Spec-Zone.ru › TensorFlow

tf.distribute.experimental.TerminationConfig

Настройка PreemptionCheckpointHandler для различных платформ.

tf.distribute.experimental.TerminationConfig(
    termination_watcher_fn=None, exit_fn=None, grace_period=None, save_fn=None
)

Объект TerminationConfig можно создать и передать в tf.distribute.experimental.PreemptionCheckpointHandler, чтобы настроить поведение для конкретной платформы. Он может предоставлять три вида информации:

  • Как определить, произойдёт ли вскоре событие завершения

Формат уведомления о завершении и способ его получения различаются в зависимости от платформы. Поэтому PreemptionCheckpointHandler может принимать пользовательскую функцию termination_watcher_fn и многократно выполнять её для проверки уведомления о завершении. termination_watcher_fn должна возвращать True, если уведомление о завершении доступно, и False в противном случае. Функция должна быть нетяжёлой и неблокирующей, чтобы ресурсы можно было корректно очистить, если сигнал завершения так и не будет получен до окончания обучения.

  • Как завершить программу

Пользователь может настроить это с помощью exit_fn, который PreemptionCheckpointHandler выполняет после сохранения контрольной точки, чтобы корректно завершить программу обучения. Для tf.distribute.MultiWorkerMirroredStrategy требуется перезапуск, чтобы сбросить состояние программы. Однако пользовательский вариант exit_fn может упростить перезапуск и сделать процесс обучения более плавным. Каким образом? Возможно, платформа распознаёт RESTART_CODE как сигнал автоматического перезапуска программы; или, возможно, у пользователя есть управляющий скрипт, запускающий обучение, в котором можно настроить автоматический перезапуск программы, если она завершится с этим RESTART_CODE. В обоих случаях настройка exit_fn в значение sys.exit(RESTART_CODE) обеспечивает непрерывность обучения.

  • Сколько времени есть у PreemptionCheckpointHandler с момента получения уведомления о событии завершения до фактического завершения

На некоторых платформах этот промежуток может составлять около часа. В таких случаях можно использовать это время для максимально продолжительного обучения перед сохранением контрольной точки и завершением работы. Для этого аргументу grace_period следует передать ненулевое значение. Обратите внимание: если льготный период пользователя не превышает время записи контрольной точки в несколько раз (например, в три раза или больше), мы рекомендуем не настраивать этот аргумент; в таком случае PreemptionCheckpointHandler сразу сохранит контрольную точку и завершит работу.

Поведение по умолчанию:

  • Для платформы Google Borg:

    • Автоматическое обнаружение сигнала вытеснения
    • Завершение работы с кодом перезапуска, распознаваемым платформой
    • Немедленное сохранение контрольной точки и завершение работы
  • Для Google Cloud Platform:

    • Автоматическое обнаружение сигнала технического обслуживания.
    • Завершение работы с кодом (пользователь может настроить его)
    • Автоматическое использование дополнительного периода обучения перед сохранением данных и завершением работы
  • Для других платформ:

    • Если termination_watcher_fn — это None, мы будем считать signal.SIGTERM сигналом завершения.
    • Если exit_fn не настроен, программа завершится с произвольным кодом.
    • Если grace_period не настроен, после получения сигнала завершения мы закончим текущий шаг обучения, сохраним контрольную точку и завершим программу.
Аргументы
termination_watcher_fn функция, которую следует многократно выполнять; она возвращает True, если доступен сигнал вытеснения, и False в противном случае. Функция не должна блокироваться в ожидании сигнала вытеснения, поскольку это помешает корректной очистке программы. Пользователям Google Borg или Google Cloud Platform НЕ рекомендуется изменять это значение.
exit_fn функция, выполняемая после сохранения контрольной точки и до вытеснения. Обычно она должна иметь вид lambda: sys.exit(RESTART_CODE), где RESTART_CODE зависит от платформы. Пользователям Google Borg НЕ рекомендуется изменять это значение. Пользователи Google Cloud Platform могут настроить его, указав пользовательский вариант RESTART_CODE.
grace_period промежуток времени между получением сигнала вытеснения и фактическим вытеснением. Пользователям Google Borg, Google Cloud Platform, а также пользователям с коротким льготным периодом НЕ рекомендуется изменять это значение.
save_fn необязательная функция, позволяющая настроить сохранение контрольной точки. Она полезна, если вы хотите передать дополнительные аргументы в tf.train.CheckpointManager.save или tf.train.Checkpoint.save. По умолчанию, если настройка не задана, API сохранит контрольную точку без дополнительных аргументов.

© 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/TerminationConfig

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API