Preparar para eventos de manutenção
As VMs de 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 é conectada a uma VM do Compute Engine. Portanto, o uso de mais TPUs (por exemplo, em um pod de TPU) aumenta a probabilidade de uma das VMs encontrar um evento de manutenção.
Neste documento, discutimos abordagens para processar eventos de manutenção de jobs de treinamento de longa duração nos Cloud TPUs. Para informações sobre como lidar com eventos de manutenção de TPUs no Google Kubernetes Engine (GKE), consulte Gerenciar a interrupção de nós do GKE para GPUs e TPUs.
Conferir notificações de manutenção
Você pode conferir notificações sobre os próximos eventos de manutenção do host. Ao monitorar as próximas janelas de manutenção da instância, é possível preparar proativamente as cargas de trabalho para lidar com a manutenção futura com o mínimo de interrupção. Para mais informações, consulte Conferir notificações de manutenção.
Usar checkpoints para recuperação rápida de eventos de manutenção
Os checkpoints são fundamentais para recuperações curtas de eventos de manutenção e precisam ser salvos com frequência. Uma boa regra é salvar checkpoints aproximadamente a cada hora. Não criar checkpoints com frequência suficiente corre o risco de perder muito progresso do treinamento devido a eventos de manutenção ou outras interrupções no treinamento.
.Os checkpoints geralmente se referem a todos os parâmetros salvos usados no treinamento, como pesos do modelo. O tempo necessário para salvar um checkpoint pode variar da ordem de segundos à ordem de minutos.
Embora os TPUs possam se recuperar automaticamente da maioria dos eventos de manutenção e os jobs de treinamento continuem sem intervenção manual, pode haver casos extremos em que o job não é reiniciado e continua automaticamente. Quando isso acontece, é necessário excluir e recriar os recursos da TPU e reiniciar o job de treinamento a partir de um checkpoint salvo. Para mais informações sobre como detectar e recuperar de falhas de recuperação automática, consulte Detectar e recuperar de falhas de TPU.
Há mecanismos diferentes para salvar e carregar checkpoints para cada framework de ML. Os modelos compatíveis do Cloud TPU geralmente têm checkpoints integrados. Para mais informações sobre checkpoints, consulte: TensorFlow 2.x, PyTorch ou JAX/flax.
Usar o checkpoint automático
Você pode usar o recurso de ponto de verificação automático para preservar o progresso do treinamento, configurando o código para salvar um ponto de verificação não programado quando um evento de manutenção ocorrer. Para mais informações sobre o checkpoint automático, consulte Checkpoint automático da Cloud TPU.
Tentar novamente o script de treinamento
O script de treinamento pode parar como resultado de um evento de interrupção.
É possível usar um script bash
para repetir continuamente o script de
treinamento até que ele seja concluído. Exemplo:
while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done
Cada nova tentativa precisa continuar a partir do checkpoint mais recente. Portanto, os scripts de nova tentativa precisam ser sempre usados em conjunto com checkpoints.
Os pipelines de treinamento prontos para Production precisam usar um sistema de gerenciamento de recursos, como o Google Kubernetes Engine (GKE). Para mais informações sobre como usar o Google Kubernetes Engine com VMs do TPU, consulte Implantar cargas de trabalho de TPU.
Detectar e recuperar de falhas da 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 da TPU, além de excluir e recriar a TPU. 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 executar o script de treinamento novamente.
Para informações sobre como excluir e recriar manualmente uma TPU, consulte Gerenciar recursos de TPU.
Usar a programação de coleta
O Cloud TPU tem o conceito de programação de coleção, oferecendo dois tipos de coleções que os clientes podem usar para oferecer suporte a cargas de trabalho de treinamento ou serviço e inferência. Quando você usa esse recurso para implantar suas instâncias do Cloud TPU,o Google Cloud aplica cronogramas de manutenção exclusivos que correspondem melhor ao aplicativo. Os seguintes comportamentos são esperados de cada tipo de coletor:
Treinamento (padrão): esse tipo de coleta é benéfico para cargas de trabalho de treinamento típicas em que você precisa de um tempo de inatividade mínimo em todas as instâncias e interrupções inesperadas limitadas para restaurar rapidamente seu serviço durante eventos de manutenção. O tipo de treinamento de coleta oferece programação e execução paralelas de eventos de manutenção para um grupo de instâncias.
Exibição (disponível usando
--workload-type=AVAILABILITY_OPTIMIZED
): esse tipo de coleta é benéfico para a maioria dos workloads de exibição ou inferência em que é necessário um tempo de inatividade mínimo em um subconjunto de instâncias (réplicas) para garantir a continuidade do serviço, mesmo durante eventos de manutenção. O tipo de coleta de serviço oferece programação e execução escalonadas de eventos de manutenção para um grupo de instâncias. A especificação de uma coleção de veiculação só é compatível com a TPU v6e.
Para mais informações sobre a programação de coletas, consulte Programação de coletas.
Detectar eventos de manutenção
É possível detectar se e quando um evento de manutenção ocorreu na TPU usando o
comando gcloud compute tpus tpu-vm
describe
:
$ 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 deve ser semelhante a esta:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
Acessar os registros de eventos de manutenção
É possível conferir os registros históricos de eventos de manutenção no TPU nos registros de auditoria de eventos do sistema.
No menu de navegação do console do Google Cloud, acesse a página "Explorador de registros":
Use a consulta de pesquisa a seguir para conferir as TPUs encerradas ou reiniciadas:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Os resultados mostram registros de interrupções e reparos de workers de TPU no período de pesquisa. Os registros incluem:
- A data e a hora do evento
- O tipo de evento
- Para eventos "encerrar", o motivo do encerramento no campo
protoPayload.metadata.terminateReason