Path: blob/master/site/pt-br/guide/migrate/fault_tolerance.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Como migrar o mecanismo de tolerância a falhas
Tolerância a falhas refere-se a um mecanismo de salvar periodicamente os estados de objetos rastreáveis, como parâmetros e modelos. Isto permite recuperá-los em caso de falha do programa/máquina durante o treinamento.
Este guia primeiro demonstra como incluir tolerância a falhas no treinamento com tf.estimator.Estimator
no TensorFlow 1 especificando o salvamento de métricas com tf.estimator.RunConfig
. Em seguida, você aprenderá como implementar a tolerância a falhas para treinamentos no Tensorflow 2 de duas maneiras:
Se você usar a API Keras
Model.fit
, poderá passar o callbacktf.keras.callbacks.BackupAndRestore
para ela.Se você usar um loop de treinamento personalizado (com
tf.GradientTape
), poderá salvar checkpoints arbitrariamente usando as APIstf.train.Checkpoint
etf.train.CheckpointManager
.
Ambas as soluções farão backup e restaurarão os estados de treinamento nos arquivos de checkpoint.
Configuração
Instale tf-nightly
, pois a frequência de salvamento de checkpoints em um determinado passo com o argumento save_freq
em tf.keras.callbacks.BackupAndRestore
foi lançada no TensorFlow 2.10:
TensorFlow 1: salve checkpoints com tf.estimator.RunConfig
No TensorFlow 1, você pode configurar um tf.estimator
para salvar checkpoints a cada passo configurando tf.estimator.RunConfig
.
Neste exemplo, comece escrevendo um hook que lança artificialmente um erro durante o quinto checkpoint:
Em seguida, configure tf.estimator.Estimator
para salvar cada checkpoint e usar o dataset MNIST:
Comece a treinar o modelo. Uma exceção artificial será levantada pelo hook que você definiu anteriormente.
Recrie o tf.estimator.Estimator
usando o último checkpoint salvo e continue treinando:
TensorFlow 2: faça backup e restauração com um callback e Model.fit
No TensorFlow 2, se você usar a API Keras Model.fit
para treinamento, poderá fornecer o callback tf.keras.callbacks.BackupAndRestore
para incluir a funcionalidade de tolerância a falhas.
Para ajudar a demonstrar isto, primeiro comece definindo uma classe Keras Callback
que lança artificialmente um erro durante o quarto checkpoint da época:
Em seguida, defina e instancie um modelo Keras simples, defina a função de perda, chame Model.compile
e configure um callback tf.keras.callbacks.BackupAndRestore
que salvará os checkpoints num diretório temporário nos limites da época:
Comece a treinar o modelo com Model.fit
. Durante o treinamento, os checkpoints serão salvos graças a tf.keras.callbacks.BackupAndRestore
instanciado acima, enquanto a classe InterruptAtEpoch
gerará uma exceção artificial para simular uma falha depois da quarta época.
Em seguida, instancie o modelo Keras, chame Model.compile
e continue treinando o modelo com Model.fit
a partir de um checkpoint salvo anteriormente:
Defina outra classe Callback
que lance artificialmente um erro durante o 140º passo:
Observação: esta seção usa recursos que estão disponíveis apenas na versão tf-nightly
até o lançamento do Tensorflow 2.10.
Para garantir que os checkpoints sejam salvos a cada 30 etapas, defina save_freq
no callback BackupAndRestore
como 30
. O InterruptAtStep
gerará uma exceção artificial para simular uma falha na época 1 e no passo 40 (contagem total de passos 140). O checkpoint seria salvo pela última vez na época 1 e no passo 20.
Em seguida, instancie o modelo Keras, chame Model.compile
e continue treinando o modelo com Model.fit
a partir de um checkpoint salvo anteriormente. Observe que o treinamento começa na época 2 e no passo 21.
TensorFlow 2: escreva checkpoints manuais com um loop de treinamento personalizado
Se você usar um loop de treinamento personalizado no TensorFlow 2, poderá implementar um mecanismo de tolerância a falhas com as APIs tf.train.Checkpoint
e tf.train.CheckpointManager
.
Este exemplo demonstra como:
Usar um objeto
tf.train.Checkpoint
para criar um checkpoint manualmente, onde os objetos rastreáveis que você deseja salvar são definidos como atributos.Usar um
tf.train.CheckpointManager
para gerenciar múltiplos checkpoints.
Comece definindo e instanciando o modelo Keras, o otimizador e a função de perda. Em seguida, crie um Checkpoint
que gerencie dois objetos com estados rastreáveis (o modelo e o otimizador), bem como um CheckpointManager
para registrar e manter diversos checkpoints num diretório temporário.
Agora, implemente um loop de treinamento personalizado onde, depois da primeira época, toda vez que uma nova época iniciar, o último checkpoint seja carregado:
Próximos passos
Para saber mais sobre tolerância a falhas e checkpoints no TensorFlow 2, veja a seguinte documentação:
A documentação da API de callbacks
tf.keras.callbacks.BackupAndRestore
.A documentação das APIs
tf.train.Checkpoint
etf.train.CheckpointManager
.O guia Checkpoints de treinamento, incluindo a seção Escrevendo checkpoints .
Você também pode achar útil o seguinte material relacionado ao treinamento distribuído:
A seção Tolerância a falhas no tutorial Treinamento multifuncional com Keras.
A seção Lidando com falhas em tarefas no tutorial Treinamento do servidor de parâmetros.