Entender el servicio de entrenamiento personalizado

En esta página, se explica el estado de un clúster de entrenamiento durante el ciclo de vida de un trabajo de entrenamiento y cómo Vertex AI maneja los errores de entrenamiento. Puedes usar esta información para adaptar tu código de entrenamiento según corresponda.

Ciclo de vida de un trabajo de entrenamiento

En esta sección, se explica cómo Vertex AI controla las VM de trabajador durante el ciclo de vida de un trabajo de entrenamiento.

Pon en cola un trabajo nuevo

Cuando creas un CustomJob o HyperparameterTuningJob, puede que el trabajo permanezca en el estado JOB_STATE_QUEUED durante un tiempo antes de que Vertex AI lo ejecute. Este período suele ser corto, pero si tu proyecto de Google Cloud no tiene suficientes cuotas de entrenamiento personalizadas restantes para tu trabajo, Vertex AI mantiene el trabajo en la cola hasta que tengas suficientes cuotas.

Inicia trabajadores en paralelo

Cuando se inicia un trabajo de entrenamiento, Vertex AI programa tantos trabajadores como sea posible en un período corto. Como resultado, los trabajadores pueden iniciarse en paralelo en lugar de secuencialmente. Para reducir la latencia de inicio, Vertex AI comienza a ejecutar tu código en cada trabajador en cuanto esté disponible. Cuando todos los trabajadores están disponibles, Vertex AI establece el estado del trabajo en JOB_STATE_RUNNING.

En la mayoría de los casos, tu framework de aprendizaje automático maneja de forma automática los trabajadores que comienzan en paralelo. Si usas una estrategia de distribución en tu código de entrenamiento, es posible que debas ajustarla de forma manual para controlar los trabajadores que se inician en paralelo. Obtén más información sobre las estrategias de distribución en TensorFlow y en PyTorch.

Reinicia los trabajadores durante el trabajo de entrenamiento

Durante un trabajo de entrenamiento, Vertex AI puede reiniciar a tus trabajadores desde cualquier grupo de ellos con el mismo nombre de host. Esto puede suceder por los siguientes motivos:

  • Mantenimiento de VM: Cuando la VM que ejecuta un trabajador está sujeta al mantenimiento de VM, Vertex AI reinicia el trabajador en otra VM. Obtén más información sobre la migración en vivo para el mantenimiento de VM.
  • Salidas que no son cero: si un trabajador sale con un código de salida que no es cero, Vertex AI reinicia ese trabajador de inmediato en la misma VM.

    • Si un trabajador falla debido a un error común, se trata como un error permanente y Vertex AI apaga todo el trabajo. Si alguno de los contenedores se reinicia antes de que Vertex AI apague todo el trabajo, pueden producir registros en Cloud Logging.
    • Si un trabajador falla debido a un error no permanente (cualquier error que no aparezca en la lista de los errores comunes), Vertex AI permite que el trabajador reiniciado continúe ejecutándose, con hasta cinco reinicios por trabajador. Después de cinco reinicios, si un trabajador falla nuevamente, Vertex AI vuelve a intentar todo el trabajo hasta tres veces antes de que falle todo el trabajo.

Para manejar los reinicios de trabajadores en tu código de entrenamiento, guarda los puntos de control con frecuencia durante el entrenamiento para que puedas restaurar a partir de estos cuando se reinicie un trabajador. Si esperas que el entrenamiento tome más de cuatro horas, te recomendamos que guardes un punto de control al menos una vez cada cuatro horas. Obtén información sobre cómo usar los puntos de control del entrenamiento en TensorFlow y en PyTorch.

Completa un trabajo de forma correcta

Un trabajo de entrenamiento se completa con éxito cuando su réplica principal se genera con el código de salida 0. En este punto, Vertex AI cierra todos los demás trabajadores en ejecución.

Cómo Vertex AI controla los errores de los trabajos de entrenamiento

En esta sección, se explica cómo Vertex AI controla los errores internos y los errores comunes de los trabajos de entrenamiento.

Alrededor de un minuto después de que un trabajo finalice, Vertex AI configura el código de error en el objeto del trabajo de entrenamiento según el código de salida.

Controla errores comunes

Vertex AI apaga todos los trabajadores si encuentra alguno de los siguientes problemas:

Tipo de error Mensaje de error/registro con errores Nota
Excepción del código de usuario La réplica REPLICA_NAME salió con un estado que no es cero de EXIT_CODE. Motivo del término: REASON. Si el trabajo encontró códigos de salida que pueden ser transitorios, Vertex AI intentará reiniciar el trabajo hasta tres veces. Los códigos de error potencialmente transitorios que hacen que Vertex AI vuelva a intentar el trabajo incluyen los siguientes:
  • SIGABRT
    • ExitCode 6
    • ExitCode 134 (contenedores personalizados)
  • SIGSEGV
    • ExitCode 11
    • ExitCode 139 (contenedores personalizados)
No hay memoria suficiente La réplica REPLICA_NAME se quedó sin memoria y salió con un estado que no es cero de EXIT_CODE. GKE reserva memoria en nodos de Vertex AI. En los tipos de máquina más pequeños (como n1-standard-4), los agentes del sistema de Vertex AI pueden usar hasta un 40% de la memoria total. En VM más grandes, la sobrecarga es relativamente pequeña. Compara la memoria asignable para los tipos de máquina n1-standard.
Capacidad insuficiente en tu región (agotamiento de Compute Engine) Los recursos no son suficientes en la región: REGION_NAME. Prueba con una diferente. Si usas K80, considera utilizar P100 o V100 en su lugar. Un agotamiento ocurre cuando Compute Engine alcanza la capacidad de CPU o GPU seleccionada en tu región. No está relacionado con la cuota de tu proyecto. Cuando esto sucede, Vertex AI intenta reiniciar el trabajo hasta tres veces.

Soluciona errores internos

Si Vertex AI tiene un error interno, intenta reiniciar un trabajo dos veces (tres intentos en total). Si los intentos de reinicio también fallan, Vertex AI muestra un error interno con el mensaje: Internal error occurred for the current attempt.