Compreenda o serviço de preparação personalizada

Esta página explica o estado de um cluster de preparação ao longo do ciclo de vida de uma tarefa de preparação e como a Vertex AI processa os erros de preparação. Pode usar estas informações para adaptar o seu código de treino em conformidade.

Ciclo de vida de uma tarefa de preparação

Esta secção explica como a Vertex AI processa as VMs de trabalho através do ciclo de vida de uma tarefa de preparação.

Coloque um novo trabalho em fila

Quando cria uma CustomJob ou uma HyperparameterTuningJob, a tarefa pode permanecer no estado JOB_STATE_QUEUED durante algum tempo antes de o Vertex AI a executar. Normalmente, este período é breve, mas se o seu Google Cloud projeto não tiver quotas de treino personalizado suficientes para a sua tarefa, o Vertex AI mantém a tarefa em fila até ter quotas suficientes.

Inicie trabalhadores em paralelo

Quando uma tarefa de preparação é iniciada, o Vertex AI agenda o maior número possível de trabalhadores num curto período de tempo. Como resultado, os trabalhadores podem ser iniciados em paralelo em vez de sequencialmente. Para reduzir a latência de arranque, o Vertex AI começa a executar o seu código em cada trabalhador assim que este fica disponível. Quando todos os trabalhadores estão disponíveis, o Vertex AI define o estado da tarefa como JOB_STATE_RUNNING.

Na maioria dos casos, a sua framework de aprendizagem automática processa automaticamente o início dos trabalhadores em paralelo. Se estiver a usar uma estratégia de distribuição no seu código de programação, pode ter de a ajustar manualmente para processar trabalhadores iniciados em paralelo. Saiba mais acerca das estratégias de distribuição no TensorFlow e no PyTorch.

Reinicie os trabalhadores durante a tarefa de preparação

Durante uma tarefa de preparação, o Vertex AI pode reiniciar os seus trabalhadores a partir de qualquer conjunto de trabalhadores com o mesmo nome de anfitrião. Isto pode ocorrer pelos seguintes motivos:

  • Manutenção de VMs: quando a VM que executa um trabalhador é sujeita a manutenção de VMs, o Vertex AI reinicia o trabalhador noutra VM. Saiba mais sobre a migração em direto para a manutenção de VMs.
  • Saídas diferentes de zero: se algum trabalhador sair com um código de saída diferente de zero, o Vertex AI reinicia esse trabalhador imediatamente na mesma VM.

    • Se um trabalhador falhar devido a um erro comum, é tratado como um erro permanente e o Vertex AI encerra toda a tarefa. Se algum contentor for reiniciado antes de o Vertex AI encerrar toda a tarefa, estes contentores podem produzir registos no Cloud Logging.
    • Se um trabalhador falhar devido a um erro não permanente (qualquer erro não listado nos erros comuns), o Vertex AI permite que o trabalhador reiniciado continue a ser executado, com um máximo de cinco reinícios por trabalhador. Após cinco reinícios, se um trabalhador falhar novamente, o Vertex AI repete a tarefa completa até três vezes antes de falhar a tarefa completa.

Para processar os reinícios dos trabalhadores no seu código de preparação, guarde os pontos de verificação regularmente durante a preparação para que possa fazer o restauro a partir dos pontos de verificação quando um trabalhador for reiniciado. Se prevê que o treino vai demorar mais de quatro horas, recomendamos que guarde um ponto de verificação, pelo menos, uma vez a cada quatro horas. Saiba como usar pontos de verificação de preparação no TensorFlow e no PyTorch.

Concluir um trabalho com êxito

Uma tarefa de preparação é concluída com êxito quando a respetiva réplica principal termina com o código de saída 0. Nesse momento, a Vertex AI desliga todos os outros trabalhadores em execução.

Como a Vertex AI processa erros de tarefas de preparação

Esta secção explica como o Vertex AI processa erros comuns de tarefas de preparação e erros internos.

Cerca de um minuto após o fim de uma tarefa, o Vertex AI define o código de erro no objeto da tarefa de preparação, com base no código de saída.

Resolva erros comuns

A Vertex AI encerra todos os trabalhadores se encontrar algum dos seguintes problemas:

Tipo de erro Mensagem de erro/registo Nota
Exceção de código de utilizador A réplica REPLICA_NAME foi concluída com um estado diferente de zero de EXIT_CODE. Motivo da rescisão: REASON. Se a tarefa encontrar códigos de saída que possam ser transitórios, o Vertex AI tenta reiniciar a tarefa até três vezes. Os códigos de erro potencialmente temporários que pedem ao Vertex AI para tentar novamente a tarefa incluem o seguinte:
  • SIGABRT
    • ExitCode 6
    • ExitCode 134 (contentores personalizados)
  • SIGSEGV
    • ExitCode 11
    • ExitCode 139 (contentores personalizados)
Sem memória A réplica REPLICA_NAME ficou sem memória e foi concluída com um estado diferente de zero de EXIT_CODE. O GKE reserva memória nos nós do Vertex AI. Nos tipos de máquinas mais pequenos (como n1-standard-4), os agentes do sistema do Vertex AI podem ocupar até 40% da memória total. Para VMs maiores, a sobrecarga é relativamente pequena. Compare a memória atribuível para os tipos de máquinas n1-standard.
Capacidade insuficiente na sua região (esgotamento de stock do Compute Engine) Os recursos são insuficientes na região: REGION_NAME. Experimente uma região diferente ou use um acelerador diferente. A O esgotamento de stock ocorre quando o Compute Engine atinge a capacidade máxima para a CPU ou a GPU selecionada na sua região. Não está relacionada com a quota do seu projeto. Quando isto acontece, o Vertex AI tenta reiniciar a tarefa até três vezes.

Para tarefas executadas em VMs A2 e A3, o Dynamic Workload Scheduler permite-lhe agendar tarefas que são executadas quando os recursos de GPU pedidos ficam disponíveis, em vez de falharem com um erro de indisponibilidade. Para mais informações, consulte o artigo Agende tarefas de preparação com base na disponibilidade de recursos.

Trate erros internos

Se o Vertex AI tiver um erro interno, tenta reiniciar uma tarefa duas vezes (três tentativas no total). Se as tentativas de reinício também falharem, o Vertex AI devolve um erro interno com a mensagem: Internal error occurred for the current attempt.