Prepare-se para eventos de manutenção
As VMs da TPU são instâncias de VMs do Compute Engine com hardware de TPU anexado. As VMs do Compute Engine estão sujeitas a eventos de manutenção de VMs do Compute Engine. Cada TPU está ligada a uma VM do Compute Engine, pelo que a utilização de mais TPUs (por exemplo, num segmento de TPU) aumenta a probabilidade de uma das suas VMs encontrar um evento de manutenção.
Este documento aborda abordagens para processar eventos de manutenção para tarefas de preparação de longa duração em TPUs na nuvem. Para obter informações sobre como processar eventos de manutenção para TPUs no Google Kubernetes Engine (GKE), consulte o artigo Faça a gestão da interrupção de nós do GKE para GPUs e TPUs.
Veja notificações sobre manutenção futura
Pode ver notificações de eventos de manutenção do anfitrião futuros. Ao monitorizar os próximos períodos de manutenção da sua instância, pode preparar proativamente as suas cargas de trabalho para processar a manutenção futura com a mínima interrupção. Para mais informações, consulte Veja as notificações de manutenção.
Use pontos de verificação para uma recuperação rápida de eventos de manutenção
Os pontos de verificação são essenciais para recuperações rápidas de eventos de manutenção e devem ser guardados com frequência. Uma boa regra geral é guardar pontos de verificação aproximadamente a cada hora. Não criar pontos de verificação com frequência suficiente pode levar à perda de muito progresso de preparação devido a eventos de manutenção ou outras interrupções da preparação.
Geralmente, os pontos de verificação referem-se a todos os parâmetros guardados usados na preparação, como os pesos do modelo. O tempo necessário para guardar um ponto de controlo pode variar entre alguns segundos e alguns minutos.
Embora as TPUs possam recuperar automaticamente da maioria dos eventos de manutenção e as tarefas de preparação continuem sem intervenção manual, podem existir casos extremos em que a tarefa não é reiniciada e não continua automaticamente. Quando isto acontece, tem de eliminar e recriar os recursos de UTP e reiniciar a tarefa de preparação a partir de um ponto de verificação guardado. Para obter informações sobre como detetar e recuperar de falhas de recuperação automática, consulte o artigo Detete e recupere de falhas de TPU.
Existem diferentes mecanismos para guardar e carregar pontos de verificação para cada framework de AA. Geralmente, os modelos do Cloud TPU suportados têm a funcionalidade de criação de pontos de verificação integrada. Para mais informações sobre a criação de pontos de verificação, consulte: TensorFlow 2.x, PyTorch, ou JAX/flax.
Use o Autocheckpoint
Pode usar a funcionalidade de verificação automática para preservar o progresso da preparação configurando o seu código para guardar um ponto de verificação não agendado quando ocorre um evento de manutenção. Para mais informações sobre o Autocheckpoint, consulte o artigo Autocheckpoint da TPU na nuvem.
Volte a tentar o script de preparação
O script de preparação pode parar devido a um evento de interrupção.
Pode usar um script do bash
para tentar continuamente executar o script de preparação
até que a preparação esteja concluída. Por exemplo:
while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done
Cada nova tentativa deve continuar a partir do ponto de verificação mais recente, pelo que deve usar sempre scripts de novas tentativas em conjunto com pontos de verificação.
Os pipelines de preparação prontos para produção devem usar um sistema de gestão de recursos, como o Google Kubernetes Engine (GKE). Para mais informações sobre a utilização do Google Kubernetes Engine com VMs de TPU, consulte o artigo Implemente cargas de trabalho de TPU.
Detetar e recuperar de falhas da TPU
Quando uma TPU não recupera de um evento de manutenção, pode usar um script de recuperação para detetar o estado da TPU e eliminar e recriar a TPU. Para ver um exemplo de um script de recuperação, consulte retry.sh. Se o processo que executa o script de preparação falhar, pode modificar o script de recuperação para tentar executar novamente o script de preparação.
Para obter informações sobre como eliminar e recriar manualmente uma TPU, consulte o artigo Faça a gestão dos recursos de TPU.
Use a programação da recolha
O Cloud TPU tem o conceito de agendamento de recolha, oferecendo dois tipos de recolhas que os clientes podem usar para suportar cargas de trabalho de preparação ou publicação e inferência. Quando usa esta funcionalidade para implementar as suas instâncias de Cloud TPU, Google Cloud aplica programações de manutenção únicas que correspondem melhor à aplicação. Pode esperar os seguintes comportamentos de cada tipo de recolha:
Preparação (predefinição): este tipo de recolha é benéfico para cargas de trabalho de preparação típicas em que precisa de um tempo de inatividade mínimo em todas as instâncias e interrupções inesperadas limitadas para restaurar rapidamente o seu serviço durante eventos de manutenção. O tipo de recolha de preparação oferece agendamento e execução paralelos de eventos de manutenção para um grupo de instâncias.
Publicação (disponível através de
--workload-type=AVAILABILITY_OPTIMIZED
): este tipo de recolha é vantajoso para a maioria das cargas de trabalho de publicação ou inferência em que precisa de um tempo de inatividade mínimo num subconjunto de instâncias (réplicas) para garantir a continuidade do serviço, mesmo durante eventos de manutenção. O tipo de recolha de publicação fornece agendamento e execução faseados de eventos de manutenção para um grupo de instâncias. A especificação de uma coleção de publicação só é suportada na TPU v6e.
Para mais informações sobre o agendamento da recolha, consulte o artigo Agendamento da recolha de TPUs para cargas de trabalho de inferência.
Detetar eventos de manutenção
Pode detetar se e quando ocorreu um evento de manutenção na sua TPU através do seguinte comando gcloud compute tpus tpu-vm
describe
:
$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone | grep 'health'
O resultado deste comando apresenta o estado atual da TPU e uma descrição do evento de manutenção mais recente. O resultado deve ter um aspeto semelhante ao seguinte:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
Veja registos de eventos de manutenção
Pode ver os registos históricos de eventos de manutenção na sua TPU nos registos de auditoria de eventos do sistema.
No Google Cloud menu de navegação da consola, aceda à página Explorador de registos:
Use a seguinte consulta de pesquisa para ver todas as UTPs que foram terminadas ou reiniciadas:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Os resultados apresentam registos de quaisquer interrupções e reparações dos seus trabalhadores de TPU no período de pesquisa. Os registos incluem:
- A data e a hora do evento
- O tipo de evento
- Para eventos de "encerramento", o motivo do encerramento no campo
protoPayload.metadata.terminateReason