Cette page explique l'état d'un cluster d'entraînement pendant le cycle de vie d'une tâche d'entraînement et explique comment Agent Platform gère les erreurs d'entraînement. Vous pouvez utiliser ces informations afin d'adapter votre code d'entraînement en conséquence.
Cycle de vie d'une tâche d'entraînement
Cette section explique comment Agent Platform gère les VM de nœud de calcul tout au long du cycle de vie d'une tâche d'entraînement.
Mettre une nouvelle tâche en file d'attente
Lorsque vous créez un CustomJob ou un HyperparameterTuningJob, la tâche peut rester
dans l'état JOB_STATE_QUEUED pendant un certain temps avant
qu'Agent Platform ne l'exécute. Cette période est généralement brève, mais si votre
Google Cloud projet ne dispose pas de suffisamment de quotas d'entraînement personnalisés
pour votre tâche, alors Agent Platform
la maintient en file d'attente jusqu'à ce que les quotas soient suffisants.
Démarrer les nœuds de calcul en parallèle
Lorsqu'une tâche d'entraînement démarre, Agent Platform planifie le plus grand nombre possible de nœuds de calcul sur une courte période. Par conséquent, les nœuds de calcul peuvent démarrer en parallèle plutôt que de manière séquentielle. Afin de réduire la latence au démarrage, Agent Platform commence à exécuter votre code sur chaque nœud de calcul dès qu'il devient disponible. Lorsque tous les nœuds de calcul sont disponibles, Agent Platform définit l'état de la tâche sur JOB_STATE_RUNNING.
Dans la plupart des cas, votre framework de machine learning gère automatiquement les nœuds de calcul en parallèle. Si vous utilisez une stratégie de distribution dans votre code d'entraînement, vous devrez peut-être l'ajuster manuellement pour gérer les nœuds de calcul en parallèle. Obtenez plus d'informations sur les stratégies de distribution dans TensorFlow et dans PyTorch.
Redémarrer les nœuds de calcul pendant la tâche d'entraînement
Lors d'une tâche d'entraînement, Agent Platform peut redémarrer vos nœuds de calcul à partir de n'importe quel pool de nœuds de calcul portant le même nom d'hôte. Le problème peut survenir pour les raisons suivantes :
- Maintenance de la VM : lorsque la VM qui exécute un nœud de calcul fait l'objet d'une maintenance de VM, Agent Platform redémarre le nœud de calcul sur une autre VM. Apprenez-en davantage sur la migration à chaud pour la maintenance des VM.
Sorties non nulles : si un nœud de calcul s'arrête avec un code de sortie différent de zéro, Agent Platform redémarre ce nœud de calcul immédiatement dans la même VM.
- Si un nœud de calcul échoue en raison d'une erreur courante, celle-ci est traitée comme une erreur permanente et Agent Platform arrête l'intégralité de la tâche. Si des conteneurs redémarrent avant qu'Agent Platform n'arrête l'intégralité de la tâche, ils peuvent produire des journaux dans Cloud Logging.
- Si un nœud de calcul échoue en raison d'une erreur non-permanente (soit toute erreur non répertoriée dans les erreurs courantes), Agent Platform permet au nœud de calcul redémarré de poursuivre son exécution, à raison de cinq redémarrages par nœud de calcul. Si un nœud de calcul échoue à nouveau après cinq redémarrages, Agent Platform retente jusqu'à trois fois l'intégralité de la tâche avant de la mettre en échec.
Pour gérer les redémarrages des nœuds de calcul dans votre code d'entraînement, enregistrez des points de contrôle régulièrement pendant l'entraînement afin de pouvoir reprendre à partir de ces points de contrôle lorsqu'un nœud de calcul redémarre. Si vous prévoyez que l'entraînement dure plus de quatre heures, nous vous recommandons d'enregistrer un point de contrôle au moins une fois toutes les quatre heures. Découvrez comment utiliser les points de contrôle d'entraînement dans TensorFlow et dans PyTorch.
Terminer une tâche avec succès
Une tâche d'entraînement se termine correctement lorsque son instance dupliquée principale se ferme avec le code de sortie 0. À ce stade, Agent Platform arrête tous les autres nœuds de calcul en cours d'exécution.
Gestion des erreurs liées aux tâches d'entraînement par Agent Platform
Cette section explique comment Agent Platform gère les erreurs courantes et les erreurs internes des tâches d'entraînement.
Environ une minute après la fin d'une tâche, Agent Platform définit le code d'erreur sur l'objet de tâche d'entraînement en se basant sur le code de sortie.
Gérer les erreurs courantes
Agent Platform arrête tous les nœuds de calcul s'il rencontre l'un des problèmes suivants :
| Type d'erreur | Message d'erreur/Journal | Remarque |
| Exception de code utilisateur | L'instance dupliquée REPLICA_NAME s'est arrêtée avec un état différent de zéro (EXIT_CODE). Motif de l'arrêt : REASON. | Au cas où la tâche aurait rencontré des codes de sortie transitoires,
Agent Platform tente de redémarrer la tâche jusqu'à trois fois.
Les codes d'erreur potentiellement transitoires qui résultent en une nouvelle tentative d'exécution de la tâche par Agent Platform sont les suivants :
|
| Mémoire saturée | La mémoire de l'instance dupliquée REPLICA_NAME est saturée et l'instance s'est arrêtée avec un état différent de 0 EXIT_CODE. |
GKE réserve de la mémoire sur les nœuds Agent Platform. Sur
les plus petits types de machines (tels que n1-standard-4),
les agents du système Agent Platform peuvent utiliser jusqu'à 40% de la mémoire totale.
Pour les VM plus importantes, la surcharge est relativement faible. Comparez les ressources de mémoire pouvant être allouées aux types de machines n1-standard.
|
| Capacité insuffisante dans votre région (rupture de stock de Compute Engine) | Les ressources sont insuffisantes dans la région : REGION_NAME. Essayez dans une autre région ou utilisez un autre accélérateur. | Une rupture de stock se produit lorsque Compute Engine atteint sa capacité maximale pour le type de processeur ou GPU sélectionné dans votre région. Cela n'est pas lié au quota de votre projet.
Dans une telle éventualité, Agent Platform tente de redémarrer la tâche jusqu'à
trois fois.
Pour les tâches exécutées sur des VM A2 et A3, le programmeur de charge de travail dynamique vous permet de planifier des tâches qui s'exécutent lorsque les ressources GPU demandées deviennent disponibles, plutôt que d'échouer avec une erreur de rupture de stock. Pour en savoir plus, consultez Planifier des tâches d'entraînement en fonction de la disponibilité des ressources. |
Gérer les erreurs internes
Si Agent Platform rencontre une erreur interne, il tente de redémarrer une tâche deux fois (trois tentatives au total). Si le redémarrage échoue encore, Agent Platform renvoie une erreur interne avec le message : Internal error occurred for the current attempt.