Path: blob/master/site/pt-br/guide/migrate/tpu_estimator.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Como migrar de TPUEstimator para TPUStrategy
Este guia demonstra como migrar seus workflows em execução nas TPUs da API TPUEstimator
do TensorFlow 1 para a API TPUStrategy
do TensorFlow 2.
No TensorFlow 1, a API
tf.compat.v1.estimator.tpu.TPUEstimator
permite treinar e avaliar um modelo, bem como realizar inferência e salvar seu modelo (para implantação) em TPUs (na nuvem).No TensorFlow 2, para realizar treinamento síncrono em TPUs e TPU Pods (uma coleção de dispositivos TPU conectados por interfaces de rede dedicadas de alta velocidade), você precisa usar uma estratégia de distribuição de TPUs —
tf.distribute.TPUStrategy
. A estratégia pode funcionar com as APIs Keras — inclusive para construção de modelos (tf.keras.Model
), otimizadores (tf.keras.optimizers.Optimizer
) e treinamento (Model.fit
) — bem como um loop de treinamento personalizado (comtf.function
etf.GradientTape
).
Para ver exemplos completos usando o TensorFlow 2, confira o guia Use TPUs, na seção Classificação nas TPUs, e o tutorial Resolva tarefas GLUE usando BERT em TPUs. Você também pode achar útil o guia Treinamento distribuído, que abrange todas as estratégias de distribuição do TensorFlow, inclusive TPUStrategy
.
Configuração
Comece com os imports e um dataset simples para fins de demonstração:
TensorFlow 1: conduza um modelo em TPUs com o TPUEstimator
Esta seção do guia demonstra como realizar treinamento e avaliação com o tf.compat.v1.estimator.tpu.TPUEstimator
no TensorFlow 1.
Para usar um TPUEstimator
, é preciso primeiro definir algumas funções: uma função de entrada para os dados de treinamento, uma função de entrada de avaliação para os dados de avaliação e uma função de modelo que informa ao TPUEstimator
como o op de treinamento é definido com as características e rótulos:
Com essas funções definidas, crie um tf.distribute.cluster_resolver.TPUClusterResolver
que forneça as informações do cluster e um objeto tf.compat.v1.estimator.tpu.RunConfig
. Junto com a função de modelo que você definiu, agora você pode criar um TPUEstimator
. Aqui, você simplificará o fluxo ao ignorar o salvamento de checkpoints. Em seguida, você especificará o tamanho do lote para treinamento e avaliação para o TPUEstimator
.
Chame TPUEstimator.train
para começar a treinar o modelo:
Em seguida, chame TPUEstimator.evaluate
para avaliar o modelo usando os dados de avaliação:
TensorFlow 2: conduza um modelo em TPUs com Keras Model.fit e TPUStrategy
No TensorFlow 2, para treinar os workers da TPU, use tf.distribute.TPUStrategy
junto com as APIs Keras para definição do modelo e do treinamento/avaliação. (Consulte o guia Usando TPUs para mais exemplos de treinamento com Keras Model.fit
e um loop de treinamento personalizado (com tf.function
e tf.GradientTape
).)
Já que você precisa realizar alguma inicialização para se conectar ao cluster remoto e inicializar os workers da TPU, comece criando um TPUClusterResolver
para fornecer as informações do cluster e conectar-se ao cluster. (Saiba mais na seção Inicialização da TPU do guia Usando TPUs.)
Em seguida, depois de preparar seus dados, você criará um TPUStrategy
, definirá um modelo, métricas e um otimizador no escopo dessa estratégia.
Para obter uma velocidade de treinamento comparável com TPUStrategy
, certifique-se de escolher um número para steps_per_execution
em Model.compile
porque ele especifica a quantidade de lotes a serem executados durante cada chamada tf.function
e é crítico para o desempenho. Esse argumento é semelhante a iterations_per_loop
usado em um TPUEstimator
. Se você estiver usando loops de treinamento personalizados, certifique-se de que várias etapas sejam executadas na função de treinamento tf.function
. Veja a seção Melhorando o desempenho com múltiplas etapas em tf.function do guia Usando TPUs para mais informações.
O tf.distribute.TPUStrategy
suporta formatos dinâmicos limitados, que é a situação na qual o limite superior do cálculo do formato dinâmico pode ser inferido. Mas os formatos dinâmicos podem introduzir uma sobrecarga de desempenho em comparação com os formatos estáticos. Portanto, geralmente é recomendável deixar seus formatos de entrada estáticos, se possível, especialmente durante o treinamento. Uma operação comum que retorna um formato dinâmico é tf.data.Dataset.batch(batch_size)
, já que o número de amostras restantes em um fluxo pode ser menor que o tamanho do lote. Portanto, ao treinar na TPU, você deve usar tf.data.Dataset.batch(..., drop_remainder=True)
para garantir o melhor desempenho de treinamento.
Com isso, você está pronto para treinar o modelo com o dataset de treinamento:
Por fim, avalie o modelo usando o dataset de avaliação:
Próximos passos
Para saber mais sobre o TPUStrategy
no TensorFlow 2, considere os seguintes recursos:
Guia: Usando TPUs (cobre treinamento com Keras
Model.fit
/ um loop de treinamento personalizado comtf.distribute.TPUStrategy
, bem como dicas sobre como melhorar o desempenho comtf.function
)
Para saber mais sobre como personalizar seu treinamento, consulte:
As TPUs, os ASICs especializados do Google para aprendizado de máquina, estão disponíveis através do Google Colab, TPU Research Cloud e Cloud TPU.