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-я сохранённая контрольная точка имеет суффикс пути файла '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