Spec-Zone.ru › TensorFlow 2.9

tf.keras.utils.SidecarEvaluator

Класс, предназначенный для задачи оценки.

tf.keras.utils.SidecarEvaluator(
    model,
    data,
    checkpoint_dir,
    steps=None,
    max_evaluations=None,
    callbacks=None
)

Ожидается, что он будет запущен в отдельном процессе на отдельном компьютере от кластера обучения. Он предназначен для задачи оценки, оценивая результаты метрик кластера обучения, который имеет одного или нескольких работников, выполняющих обучение и сохраняющих контрольные точки.

API SidecarEvaluator совместим как с пользовательским циклом обучения (CTL), так и с Keras Model.fit для использования в кластере обучения. Используя модель (с собранными метриками), предоставленную в __init__, SidecarEvaluator многократно выполняет оценку «эпох», когда находит контрольную точку, которая ещё не использовалась. В зависимости от аргумента steps, эпоха оценки — это оценка по всем данным оценки или до определённого количества шагов (пакетов). Смотрите примеры ниже, как программа обучения должна сохранять контрольные точки, чтобы их распознавал SidecarEvaluator.

Поскольку в основе SidecarEvaluator используется model.evaluate для оценки, он также поддерживает произвольные Keras-обработчики. То есть, если предоставлены один или несколько обработчиков, их методы on_test_batch_begin и on_test_batch_end вызываются в начале и конце пакета, а их методы on_test_begin и on_test_end вызываются в начале и конце эпохи оценки. Обратите внимание, что SidecarEvaluator может пропустить некоторые контрольные точки, потому что он всегда выбирает последнюю доступную контрольную точку, и во время эпохи оценки с обучающей стороны могут быть созданы несколько контрольных точек.

Пример:

model = tf.keras.models.Sequential(...)
model.compile(metrics=tf.keras.metrics.SparseCategoricalAccuracy(
    name="eval_metrics"))
data = tf.data.Dataset.from_tensor_slices(...)

tf.keras.SidecarEvaluator(
    model=model,
    data=data,
    checkpoint_dir='/tmp/checkpoint_dir',  # dir for training-saved checkpoint
    steps=None,  # Eval until dataset is exhausted
    max_evaluations=None,  # The evaluation needs to be stopped manually
    callbacks=[tf.keras.callbacks.TensorBoard(log_dir='/tmp/log_dir')]
).start()

SidecarEvaluator.start записывает серию файлов сводки, которые можно визуализировать с помощью tensorboard (который предоставляет ссылку на веб-страницу):

$ tensorboard --logdir=/tmp/log_dir/validation
...
TensorBoard 2.4.0a0 at http://host:port (Press CTRL+C to quit)

Если кластер обучения использует CTL, checkpoint_dir должен содержать контрольные точки, которые отслеживают как model, так и optimizer, чтобы удовлетворить ожидания SidecarEvaluator. Это можно сделать с помощью tf.train.Checkpoint и tf.train.CheckpointManager:

checkpoint_dir = ...  # Same `checkpoint_dir` supplied to `SidecarEvaluator`.
checkpoint = tf.train.Checkpoint(model=model, optimizer=optimizer)
checkpoint_manager = tf.train.CheckpointManager(
    checkpoint, checkpoint_dir=..., max_to_keep=...)
checkpoint_manager.save()

Если кластер обучения использует Keras Model.fit API, необходимо использовать tf.keras.callbacks.ModelCheckpoint с save_weights_only=True, и filepath должно заканчиваться на 'ckpt-{epoch}':

checkpoint_dir = ...  # Same `checkpoint_dir` supplied to `SidecarEvaluator`.
model_checkpoint = tf.keras.callbacks.ModelCheckpoint(
    filepath=os.path.join(checkpoint_dir, 'ckpt-{epoch}'),
    save_weights_only=True)
model.fit(dataset, epochs, callbacks=[model_checkpoint])
Аргументы
model Модель для использования в оценке. Объект модели, используемый здесь, должен быть tf.keras.Model и должен быть таким же, как и используемый в обучении, где tf.keras.Model сохраняются в контрольных точках. Модель должна иметь одну или несколько метрик, собранных перед использованием SidecarEvaluator.
data Данные для оценки. SidecarEvaluator поддерживает все типы данных, которые Keras model.evaluate поддерживает в качестве входных данных x, таких как tf.data.Dataset.
checkpoint_dir Каталог, в котором сохраняются файлы контрольных точек.
steps Количество шагов для выполнения оценки для одного файла контрольной точки. Если None, оценка продолжается до тех пор, пока набор данных не будет исчерпан. Для повторной оценки набора данных пользователь должен указать steps для предотвращения бесконечного цикла оценки.
max_evaluations Максимальное количество файлов контрольных точек для оценки, чтобы SidecarEvaluator знал, когда остановиться. Оценщик остановится после оценки пути файла контрольной точки, заканчивающегося на '-'. Если использовать tf.train.CheckpointManager.save для сохранения контрольных точек, k-я сохранённая контрольная точка имеет суффикс пути файла '-' (k=1 для первой сохранённой), и если контрольные точки сохраняются после каждой эпохи обучения, сохранённый файл в k-й эпохе будет заканчиваться на '-'. Таким образом, если обучение проходит n эпох, и оценщик должен остановиться после завершения обучения, используйте n для этого параметра. Обратите внимание, что это не обязательно равно общему числу оценок, так как некоторые контрольные точки могут быть пропущены, если оценка идёт медленнее, чем создание контрольных точек. Если None, SidecarEvaluator будет оценивать бесконечно, и пользователь должен сам завершить программу оценщика.
callbacks Список экземпляров keras.callbacks.Callback для применения во время оценки. Смотрите обработчики.

Методы

start

Просмотреть исходный код

start()

Запускает цикл оценки.

© 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/versions/r2.9/api_docs/python/tf/keras/utils/SidecarEvaluator

Spec-Zone.ru

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