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:
|
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
.