View a markdown version of this page

Détection des tâches bloquées - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Détection des tâches bloquées

Les tâches distribuées de Ray Train peuvent être bloquées sans générer d'erreur. Un seul travailleur échoue silencieusement, et tous les autres travailleurs bloquent la prochaine opération collective, en attendant indéfiniment. Les GPU restent alloués avec les poids de modèle chargés mais ne produisent aucun calcul utile. Comme il n'y a pas de message d'erreur ou de crash, le décrochage passe souvent inaperçu pendant des heures jusqu'à ce que quelqu'un vérifie manuellement la progression du travail.

HyperPod La détection des tâches bloquées surveille en permanence les modèles d'utilisation du GPU et forme l'activité du personnel sur l'ensemble de votre cluster afin d'identifier les tâches qui ont cessé de progresser. Lorsqu'un décrochage est détecté, le système le refait apparaître en quelques minutes au lieu de quelques heures, afin que vous puissiez reprendre la tâche ou libérer de la capacité pour d'autres tâches.

Comment ça marche

Par défaut, tous les employés de Ray Train HyperPod sont surveillés à l'aide des paramètres par défaut de la plateforme, sans qu'aucune modification de code ne soit requise. La plateforme met en corrélation les modèles d'utilisation du GPU avec l'activité de sortie du personnel de formation afin de faire la distinction entre une tâche inactive parce qu'elle est bloquée et une tâche inactive parce qu'elle est en cours d'exécution I/O ou en cours de contrôle. Lorsqu'un blocage est détecté, une notification est envoyée à votre tableau de bord HyperPod Observability Grafana et. CloudWatch Pour de plus amples informations, veuillez consulter Affichage des événements de détection.

L'action par défaut est notifier  : HyperPod enregistre l'événement de détection mais ne met pas fin à la tâche. Pour activer la restauration automatique, configurez des règles personnalisées à l'aide de l'cancelaction décrite dans la section suivante.

Lorsque vous configurez des règles de détection personnalisées, elles remplacent la détection par défaut pour cette tâche. L'action que vous spécifiez dans votre configuration personnalisée s'applique à toutes les détections issues de vos règles personnalisées. La détection par défaut continue de s'exécuter pour toute tâche qui ne configure pas de règles personnalisées.

Configuration de règles de détection personnalisées

Pour mieux contrôler le comportement de détection, vous pouvez définir des règles relatives aux modèles de journalisation avec des délais et des actions configurables. Les règles personnalisées vous permettent de détecter les blocages spécifiques à un domaine (par exemple, aucune nouvelle ligne de journal des étapes de formation pendant 10 minutes) ou les conditions d'erreur (par exemple, OOM) et de choisir si vous HyperPod devez notifier ou annuler automatiquement le travailleur bloqué.

Suivez ces étapes pour activer les règles de détection personnalisées.

  1. Ajoutez la variable d'environnement IP de l'hôte à votre RayCluster manifeste

    Ajoutez la variable d'environnement suivante à la fois headGroupSpec et workerGroupSpecs dans votre RayCluster YAML. Cela permet à la bibliothèque Python exécutée dans le conteneur de formation de communiquer avec le service de surveillance des tâches sur l'hôte.

    spec: headGroupSpec: template: spec: containers: - name: ray-head env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIP workerGroupSpecs: - template: spec: containers: - name: ray-worker env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIP
    Note

    Cette variable d'environnement n'est requise que pour les règles de détection personnalisées. La détection par défaut fonctionne sans elle.

  2. Installez la bibliothèque de boîtes à outils dans l'image de votre conteneur de formation

    Ajoutez le package toolkit-for-ray-on-sagemaker-ai du site Web PyPI à l'image de votre conteneur de formation. La bibliothèque est préinstallée dans SageMaker Distribution images.

    pip install toolkit-for-ray-on-sagemaker-ai
  3. Ajoutez la surveillance à votre fonction d'entraînement

    Faites appel SageMakerLogMonitoring.start() à votre service de formation avant de faire un travail significatif. Cela garantit que la surveillance est active dès le début de l'entraînement et peut détecter les blocages qui se produisent lors du chargement du modèle ou lors de la première passe.

    from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) from ray.train import RunConfig, FailureConfig, ScalingConfig from ray.train.torch import TorchTrainer def train_func(): # Start monitoring BEFORE any meaningful work SageMakerLogMonitoring(config=LogMonitorConfig( enabled=True, rules=[ { "name": "training_progress", "type": "log_pattern", "enabled": True, "log_pattern": "(Epoch|Step|Iteration) \\d+", "timeout_minutes": 10, "start_timeout_minutes": 30, "stop_pattern": "Training complete", "fault_on_match": False, }, { "name": "oom_detection", "type": "log_pattern", "enabled": True, "log_pattern": "CUDA out of memory|OutOfMemoryError|OOM", "fault_on_match": True, }, ], action="cancel", )).start() # ... your training loop for epoch in range(num_epochs): print(f"Epoch {epoch}") # This output is what the rule monitors train_one_epoch(model, dataloader) print("Training complete") # Matches stop_pattern, deactivates the rule # Configure FailureConfig so Ray Train automatically restarts all workers # when the cancel action terminates a hung worker. trainer = TorchTrainer( train_func, scaling_config=ScalingConfig(num_workers=4, use_gpu=True), run_config=RunConfig( failure_config=FailureConfig(max_failures=3), ), )

    Lorsque l'cancelaction met fin à un travailleur bloqué, la documentation Ray Train FailureConfig in the Ray détecte la défaillance du travailleur et redémarre tous les travailleurs depuis le dernier point de contrôle. Définissez max_failures le nombre de tentatives de restauration automatique que vous souhaitez avant que la tâche n'échoue définitivement. Dans le cas FailureConfig contraire, le licenciement d'un seul travailleur fait échouer l'ensemble du travail.

    Comme Ray Train effectue une restauration à partir du dernier point de contrôle enregistré au redémarrage, aucun progrès d'entraînement n'est perdu au-delà du travail effectué depuis le dernier point de contrôle. Si votre code d'entraînement enregistre régulièrement des points de contrôle (par exemple, à chaque limite d'époque), la tâche reprend automatiquement à partir du dernier état enregistré.

Champs de règles

Champ Type Obligatoire Description
name chaîne Oui Human-readable identifiant de la règle.
type chaîne Oui Type de règle . À utiliser log_pattern pour la détection basée sur les journaux.
enabled bool Non Si cette règle est active. La valeur par défaut est false .
log_pattern chaîne Oui Modèle Regex à faire correspondre dans Worker Stdout (syntaxe RE2, 256 caractères maximum).
timeout_minutes float Non Maximum de minutes entre deux correspondances de modèles consécutives avant de déclarer un blocage.
start_timeout_minutes float Non Maximum de minutes à compter du début de la tâche pour la première correspondance de modèle. Utile pour autoriser le temps de démarrage (chargement du modèle, téléchargement des données). Si le motif n'apparaît pas dans cette fenêtre, la tâche est considérée comme bloquée.
stop_pattern chaîne Non Regex qui désactive cette règle lorsqu'elle est mise en correspondance (par exemple,"Training complete").
fault_on_match bool Non Sitrue, déclare un blocage immédiatement lorsque le motif correspond. À utiliser pour les modèles d'erreur tels que OOM. Quandtrue, ce n'timeout_minutesest pas obligatoire.
metric_evaluation_data_points int Non Nombre de cycles d'évaluation consécutifs qui doivent confirmer l'état avant de déclarer un blocage. La valeur par défaut est 1 .

Actions

Action Description
notify Émettez un événement de détection vers CloudWatch Grafana mais n'effectuez aucune action automatique. Il s’agit de l’option par défaut.
cancel Mettez fin au processus de blocage des travailleurs. Le système intégré de Ray Train FailureConfig redémarre tous les travailleurs depuis le dernier point de contrôle. Pour utiliser cette action, configurez FailureConfig avec suffisamment de tentatives dans votreRunConfig.

Désinscription de la détection

Pour désactiver la détection de toutes les tâches bloquées pour une tâche spécifique, y compris la détection par défaut et les règles personnalisées, procédez comme suit :

from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) def train_func(): SageMakerLogMonitoring(config=LogMonitorConfig(enabled=False)).start() # ... training continues with no monitoring

Affichage des événements de détection

Lorsqu'une tâche bloquée est détectée, l'événement apparaît aux emplacements suivants :

  • CloudWatch Journaux  : groupe de journaux/aws/sagemaker/Clusters/cluster-name/cluster-id, flux de journauxSageMakerHangJobDetectionEvents/instance-group-name/instance-id. Recherchez pour HANG_DETECTED trouver les événements de détection.

  • Grafana  : Si le module complémentaire HyperPod Observability est installé, les événements de détection apparaissent dans le tableau de bord Ray Train, sous le panneau de détection des tâches Hung. Pour de plus amples informations, veuillez consulter Observabilité.

Chaque événement de détection inclut l'identifiant de la tâche, les preuves qui ont déclenché la détection et l'action entreprise (notifyoucancel).