Preparação para eventos de manutenção

As VMs de TPU são instâncias de VMs do Compute Engine com um hardware de TPU anexado. As VMs do Compute Engine estão sujeitas a eventos de manutenção de VMs do Compute Engine. Como cada TPU é conectada a uma VM do Compute Engine, o uso de mais TPUs (como em um pod de TPU) aumenta a probabilidade de uma das VMs passar por um evento de manutenção.

Neste documento, discutimos abordagens para lidar com eventos de manutenção em jobs de treinamento de longa duração nos Cloud TPUs. Para saber como lidar com eventos de manutenção em TPUs no Google Kubernetes Engine (GKE), consulte Gerenciar interrupções de nós do GKE para GPUs e TPUs.

Conferir notificações de manutenções futuras

Você pode conferir notificações sobre os próximos eventos de manutenção de host. Ao monitorar as janelas de manutenção programada da instância, é possível preparar proativamente as cargas de trabalho para lidar com essas manutenções com o mínimo de interrupção. Para mais informações, consulte Conferir notificações de manutenção.

Como usar checkpoints para recuperação rápida de eventos de manutenção

Os checkpoints são fundamentais para recuperações rápidas de eventos de manutenção e precisam ser salvos com frequência. Uma boa prática é salvá-los aproximadamente a cada hora. Se você não cria checkpoints com frequência, corre o risco de perder muito do progresso do treinamento devido a eventos de manutenção ou outras interrupções.

.

Em geral, os checkpoints estão relacionados a todos os parâmetros salvos que são usados no treinamento, como pesos do modelo. O tempo necessário para salvar um checkpoint pode variar de segundos a minutos.

Embora as TPUs possam se recuperar automaticamente da maioria dos eventos de manutenção e os jobs de treinamento sejam retomados sem intervenção manual, há casos extremos em que o job não é reiniciado e retomado automaticamente. Quando isso acontece, é necessário excluir e recriar os recursos de TPU e reiniciar o job de treinamento usando um checkpoint salvo. Para saber como detectar e recuperar-se de falhas de recuperação automática, consulte este documento.

Há mecanismos diferentes em cada framework de ML para salvar e carregar checkpoints. Em geral, os modelos disponíveis no Cloud TPU têm checkpoints integrados. Para mais informações sobre checkpoints, consulte: TensorFlow 2.x, PyTorch ou JAX/Flax.

Usar o Autocheckpoint

Você pode usar o recurso Autocheckpoint para preservar o progresso do treinamento configurando o código para salvar um checkpoint não programado em caso de um evento de manutenção. Para mais informações sobre o Autocheckpoint, consulte Autocheckpoint do Cloud TPU.

Tentar executar novamente o script de treinamento

O script de treinamento pode ser parado devido a um evento de interrupção. É possível usar um script bash para repetir continuamente o script de treinamento até que ele seja concluído. Por exemplo:

while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done

Como cada nova tentativa precisa continuar do checkpoint mais recente, esses scripts precisam sempre ser usados com os checkpoints.

Os pipelines de treinamento prontos para produção precisam usar um sistema de gerenciamento de recursos, como o Google Kubernetes Engine (GKE). Para saber como usar o Google Kubernetes Engine com VMs de TPU, consulte Implantar cargas de trabalho de TPU.

Detectar e recuperar-se de falhas de TPU

Quando uma TPU não se recupera de um evento de manutenção, é possível usar um script de recuperação para detectar o estado dela, excluí-la e recriá-la. Para conferir um exemplo de script de recuperação, consulte retry.sh. Se o processo que executa o script de treinamento falhar, modifique o script de recuperação para tentar executá-lo novamente.

Para saber como excluir e recriar manualmente uma TPU, consulte Gerenciar recursos de TPU.

Usar a programação de coleção

O Cloud TPU tem o conceito de programação de coleção, que oferece dois tipos de coleções que os clientes podem usar para executar cargas de trabalho de treinamento ou disponibilização e de inferência. Quando você usa esse recurso para implantar instâncias do Cloud TPU, o Google Cloud aplica programações de manutenção exclusivas que melhor correspondem ao aplicativo. Estes são os comportamentos esperados de cada tipo de coleção:

  • Treinamento (padrão): esse tipo de coleção é útil para cargas de trabalho de treinamento comuns em que você precisa de inatividade mínima em todas as instâncias e limitação de interrupções inesperadas para restaurar rapidamente o serviço durante eventos de manutenção. O tipo de coleção de treinamento oferece programação e execução paralelas de eventos de manutenção para um grupo de instâncias.

  • Disponibilização (ao usar --workload-type=AVAILABILITY_OPTIMIZED): esse tipo de coleção é útil para a maioria das cargas de trabalho de disponibilização ou inferência em que você precisa de inatividade mínima em um subconjunto de instâncias (réplicas) para garantir a continuidade do serviço, mesmo durante eventos de manutenção. O tipo de coleção de disponibilização oferece programação e execução progressivas de eventos de manutenção para um grupo de instâncias. A especificação de uma coleção de disponibilização só é aceita na TPU v6e.

Para mais informações sobre a programação de coleções, consulte Programação de coleções de TPU para cargas de trabalho de inferência.

Detectar eventos de manutenção

É possível usar o comando gcloud compute tpus tpu-vm describe para detectar se um evento de manutenção ocorreu na sua TPU e quando ele aconteceu:

$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone  | grep 'health'

A saída desse comando mostra o estado atual da TPU e uma descrição do evento de manutenção mais recente. A saída é parecida com esta:

health: HEALTHY
healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z

Conferir registros de eventos de manutenção

É possível conferir os registros históricos de eventos de manutenção na TPU em registros de auditoria de eventos do sistema.

  1. No menu de navegação do console do Google Cloud , acesse a página Análise de registros:

    Acessar a Análise de registros

  2. Use a seguinte consulta de pesquisa para conferir as TPUs que foram encerradas ou reiniciadas:

    "tpu.nodes.terminate" OR "tpu.nodes.restart"

    Os resultados mostram registros de interrupções e reparos dos workers de TPU no período da pesquisa. Os registros 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.

A seguir