Path: blob/master/site/es-419/guide/migrate/fault_tolerance.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Cómo migrar el mecanismo de tolerancia ante errores
La tolerancia ante errores se refiere a un mecanismo de guardado periódico de los estados de objetos rastreables, como parámetros y modelos. Esto permite recuperarlos en caso de que falle el programa o la máquina durante el entrenamiento.
En esta guía primero se muestra cómo incorporar la tolerancia ante errores al entrenamiento con tf.estimator.Estimator
en TensorFlow 1 especificando el ahorro de métricas con tf.estimator.RunConfig
. Después, aprenderá a implementar la tolerancia ante errores para el entrenamiento en TensorFlow 2 de dos maneras:
Si utiliza la API de Keras
Model.fit
, puede transferirle la retrollamada contf.keras.callbacks.BackupAndRestore
.Si utiliza un bucle de entrenamiento personalizado (con
tf.GradientTape
), puede guardar arbitrariamente los puntos de verificación utilizando las APItf.train.Checkpoint
ytf.train.CheckpointManager
.
Ambos métodos harán una copia de seguridad y restaurarán los estados de entrenamiento en los archivos de puntos de verificación.
Preparación
Instale tf-nightly
, ya que la frecuencia de guardado de puntos de verificación en un paso concreto con el argumento save_freq
en tf.keras.callbacks.BackupAndRestore
se introduce a partir de TensorFlow 2.10:
TensorFlow 1: Guardar los puntos de verificación con tf.estimator.RunConfig
En TensorFlow 1, puede configurar un tf.estimator
para guardar puntos de verificación en cada paso configurando tf.estimator.RunConfig
.
En este ejemplo, comience escribiendo un hook que arroje artificialmente un error durante el quinto punto de verificación:
A continuación, configure tf.estimator.Estimator
para guardar cada punto de verificación y utilice el conjunto de datos MNIST:
Comience a entrenar el modelo. Se producirá una excepción artificial mediante el hook que definió anteriormente.
Vuelva a construir el tf.estimator.Estimator
utilizando el último punto de verificación guardado y continúe con el entrenamiento:
TensorFlow 2: Copia de seguridad y restauración con una retrollamada y Model.fit
En TensorFlow 2, si utiliza la API Keras Model.fit
para el entrenamiento, puede proporcionar la retrollamada tf.keras.callbacks.BackupAndRestore
para incorporar la funcionalidad de tolerancia ante errores.
Para ayudar a demostrar esto, en primer lugar comience por definir una clase de la Callback
de Keras que produzca artificialmente un error durante el cuarto punto de verificación de la época:
A continuación, defina y cree una instancia de un modelo simple de Keras, defina la función de pérdida, llame a Model.compile
, y configure una retrollamada tf.keras.callbacks.BackupAndRestore
que guardará los puntos de verificación en un directorio temporal en los límites de las épocas:
Comience a entrenar el modelo con Model.fit
. Durante el entrenamiento, los puntos de verificación se guardarán gracias a tf.keras.callbacks.BackupAndRestore
creado anteriormente, mientras que la clase InterruptAtEpoch
generará una excepción artificial para simular un error después de la cuarta época.
Luego, cree una instancia del modelo Keras, llame a Model.compile
, y continúe entrenando el modelo con Model.fit
desde un punto de verificación guardado previamente:
Defina otra clase de la Callback
que produzca artificialmente un error durante el paso 140:
Nota: En esta sección se utilizan funciones que solo están disponibles en tf-nightly
hasta que se publique Tensorflow 2.10.
Para asegurarse de que los puntos de verificación se guardan cada 30 pasos, establezca save_freq
en BackupAndRestore
de la retrollamada a 30
. El InterruptAtStep
producirá una excepción artificial para simular un error en la época 1 y el paso 40 (número total de pasos 140). El punto de verificación se guardaría por última vez en la época 1 y el paso 20.
Posteriormente, cree una instancia del modelo de Keras, llame a Model.compile
, y continúe entrenando el modelo con Model.fit
desde un punto de verificación guardado previamente. Observe que el entrenamiento inicia desde la época 2 y el paso 21.
TensorFlow 2: Escribiendo puntos de verificación manuales con un bucle de entrenamiento personalizado
Si utiliza un bucle de entrenamiento personalizado en TensorFlow 2, puede implementar un mecanismo de tolerancia ante errores con las API tf.train.Checkpoint
y tf.train.CheckpointManager
.
En este ejemplo se muestra cómo hacerlo:
Utilice un objeto
tf.train.Checkpoint
para crear manualmente un punto de verificación, donde los objetos rastreables que desea guardar se establezcan como atributos.Utilice un
tf.train.CheckpointManager
para administrar varios puntos de verificación.
Comience por definir y crear instancias del modelo Keras, el optimizador y la función de pérdida. Después, cree un Checkpoint
que administre dos objetos con estados rastreables (el modelo y el optimizador), así como un CheckpointManager
para registrar y mantener varios puntos de verificación en un directorio temporal.
Ahora, implemente un bucle de entrenamiento personalizado donde después de la primera época cada vez que comienza una nueva época se cargará el último punto de verificación:
Siguientes pasos
Para obtener más información sobre la tolerancia ante errores y la verificación de puntos en TensorFlow 2, consulte la siguiente documentación:
La documentación de la API de retrollamadas
tf.keras.callbacks.BackupAndRestore
.La documentación de las API
tf.train.Checkpoint
ytf.train.CheckpointManager
.La guía Puntos de verificación del entrenamiento, incluyendo la sección Puntos de verificación de la escritura.
También podrá encontrar útil el siguiente material relacionado con el entrenamiento distribuido:
La sección Tolerancia ante errores del tutorial Entrenamiento multi-trabajador con Keras.
La sección Error de la tarea en el tutorial Entrenamiento del servidor de parámetros.