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 не настроен, мы завершим текущий шаг обучения, сохраним контрольную точку и завершим работу программы как только получим сигнал завершения.
Args
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