BackupAndRestore
classkeras.callbacks.BackupAndRestore(
backup_dir, save_freq="epoch", double_checkpoint=False, delete_checkpoint=True
)
Callback to back up and restore the training state.
BackupAndRestore
callback is intended to recover training from an
interruption that has happened in the middle of a Model.fit
execution, by
backing up the training states in a temporary checkpoint file, at the end of
each epoch. Each backup overwrites the previously written checkpoint file,
so at any given time there is at most one such checkpoint file for
backup/restoring purpose.
If training restarts before completion, the training state (which includes
the Model
weights and epoch number) is restored to the most recently saved
state at the beginning of a new Model.fit
run. At the completion of a
Model.fit
run, the temporary checkpoint file is deleted.
Note that the user is responsible to bring jobs back after the interruption. This callback is important for the backup and restore mechanism for fault tolerance purpose, and the model to be restored from a previous checkpoint is expected to be the same as the one used to back up. If user changes arguments passed to compile or fit, the checkpoint saved for fault tolerance can become invalid.
Example
>>> class InterruptingCallback(keras.callbacks.Callback):
... def on_epoch_begin(self, epoch, logs=None):
... if epoch == 4:
... raise RuntimeError('Interrupting!')
>>> callback = keras.callbacks.BackupAndRestore(backup_dir="/tmp/backup")
>>> model = keras.models.Sequential([keras.layers.Dense(10)])
>>> model.compile(keras.optimizers.SGD(), loss='mse')
>>> try:
... model.fit(np.arange(100).reshape(5, 20), np.zeros(5), epochs=10,
... batch_size=1, callbacks=[callback, InterruptingCallback()],
... verbose=0)
... except:
... pass
>>> history = model.fit(np.arange(100).reshape(5, 20), np.zeros(5),
... epochs=10, batch_size=1, callbacks=[callback],
... verbose=0)
>>> # Only 6 more epochs are run, since first training got interrupted at
>>> # zero-indexed epoch 4, second training will continue from 4 to 9.
>>> len(history.history['loss'])
>>> 6
Arguments
BackupAndRestore
callback of another training run,
or by another callback (e.g. ModelCheckpoint
)
of the same training run."epoch"
, integer, or False
. When set to "epoch"
the callback saves the checkpoint at the end of each epoch.
When set to an integer, the callback saves the checkpoint every
save_freq
batches. Set save_freq=False
only if using
preemption checkpointing (i.e. with save_before_preemption=True
).BackupAndRestore
callback
will save 2 last training states (current and previous). After
interruption if current state can't be loaded due to IO error
(e.g. file corrupted) it will try to restore previous one. Such
behaviour will consume twice more space on disk, but increase fault
tolerance. Defaults to False
.BackupAndRestore
callback works by saving a checkpoint to back up the training state.
If delete_checkpoint=True
, the checkpoint will be deleted after
training is finished. Use False
if you'd like to keep the checkpoint
for future usage. Defaults to True
.