Politique de nouvelle tentative pour les étapes du pipeline - Amazon SageMaker

Politique de nouvelle tentative pour les étapes du pipeline

Les politiques de nouvelle tentative vous aident à relancer automatiquement vos étapes SageMaker Pipelines après une erreur. N'importe quelle étape du pipeline peut rencontrer des exceptions, qui se produisent pour diverses raisons. Dans certains cas, une nouvelle tentative peut résoudre ces problèmes. Avec une politique de nouvelle tentative pour les étapes du pipeline, vous pouvez choisir de relancer ou non une étape de pipeline particulière.

La politique de nouvelle tentative prend uniquement en charge les étapes suivantes du pipeline :

Types d'exceptions pris en charge pour la politique de nouvelle tentative

La politique de nouvelle tentative pour les étapes du pipeline prend en charge les types d'exception suivants :

  • Step.SERVICE_FAULT : ces exceptions se produisent lorsqu'une erreur interne du serveur ou une erreur temporaire survient lors de l'appel de services en aval. SageMaker Pipelines lance automatiquement une nouvelle tentative après ce type d'erreur. Avec une politique de nouvelle tentative, vous pouvez remplacer l'opération de nouvelle tentative par défaut pour ce type d'exception.

  • Step.THROTTLING : des exceptions de limitation peuvent se produire lors de l'appel des services en aval. SageMaker Pipelines lance automatiquement une nouvelle tentative après ce type d'erreur. Avec une politique de nouvelle tentative, vous pouvez remplacer l'opération de nouvelle tentative par défaut pour ce type d'exception.

  • SageMaker.JOB_INTERNAL_ERROR : ces exceptions se produisent lorsque la tâche SageMaker renvoie InternalServerError. Dans ce cas, le démarrage d'une nouvelle tâche peut résoudre un problème temporaire.

  • SageMaker.JOB_CAPACITY_ERROR : la tâche SageMaker peut rencontrer des InsufficientCapacityErrors Amazon EC2, qui conduisent à l'échec de la tâche SageMaker. Vous pouvez effectuer une nouvelle tentative en démarrant une nouvelle tâche SageMaker afin d'éviter le problème.

  • SageMaker.RESOURCE_LIMIT : la limite de quota de ressources peut être dépassé lors de l'exécution d'une tâche SageMaker. Vous pouvez attendre et réessayer d'exécuter la tâche SageMaker après une courte durée et voir si les ressources sont libérées.

Schéma JSON de la politique de nouvelle tentative

La politique de nouvelle tentative pour Pipelines a le schéma JSON suivant :

"RetryPolicy": { "ExceptionType": [String] "IntervalSeconds": Integer "BackoffRate": Double "MaxAttempts": Integer "ExpireAfterMin": Integer }
  • ExceptionType : ce champ nécessite les types d'exception suivants au format de chaîne simple.

    • Step.SERVICE_FAULT

    • Step.THROTTLING

    • SageMaker.JOB_INTERNAL_ERROR

    • SageMaker.JOB_CAPACITY_ERROR

    • SageMaker.RESOURCE_LIMIT

  • IntervalSeconds (facultatif) : nombre de secondes avant la première nouvelle tentative (1 par défaut). IntervalSeconds a une valeur maximale de 43 200 secondes (12 heures).

  • BackoffRate (facultatif) : multiplicateur par lequel l'intervalle de nouvelle tentative augmente à chaque tentative (2,0 par défaut).

  • MaxAttempts : nombre entier positif qui représente le nombre maximum de nouvelles tentatives (5 par défaut). Si l'erreur se produit un nombre de fois supérieur à la valeur spécifiée par MaxAttempts, les nouvelles tentatives cessent et la gestion normale des erreurs reprend. La valeur 0 spécifie que les erreurs n'ont jamais fait l'objet d'une nouvelle tentative. MaxAttempts a une valeur maximale de 20.

  • ExpireAfterMin (facultatif) : nombre entier positif qui représente la durée maximale d'une nouvelle tentative. Si l'erreur se répète après ExpireAfterMin minutes à partir de l'exécution de l'étape, les nouvelles tentatives cessent et la gestion normale des erreurs reprend. La valeur 0 spécifie que les erreurs n'ont jamais fait l'objet d'une nouvelle tentative. ExpireAfterMin a une valeur maximale de 14 400 minutes (10 jours).

    Note

    Les valeurs MaxAttempts ou ExpireAfterMin peuvent être spécifiées, mais pas les deux. Si aucune des deux n'est spécifiée, MaxAttempts devient la valeur par défaut. Si les deux propriétés sont identifiées dans une politique, la politique de nouvelle tentative générera une erreur de validation.

Configuration d'une politique de nouvelle tentative

Voici un exemple d'étape d'entraînement avec une poltiique de nouvelle tentative.

{ "Steps": [ { "Name": "MyTrainingStep", "Type": "Training", "RetryPolicies": [ { "ExceptionType": [ "SageMaker.JOB_INTERNAL_ERROR", "SageMaker.JOB_CAPACITY_ERROR" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 5 } ] } ] }

Voici un exemple de création d'une étape TrainingStep dans le kit SDK pour Python (Boto3) avec une politique de nouvelle tentative.

from sagemaker.workflow.retry import ( StepRetryPolicy, StepExceptionTypeEnum, SageMakerJobExceptionTypeEnum, SageMakerJobStepRetryPolicy ) step_train = TrainingStep( name="MyTrainingStep", xxx, retry_policies=[ // override the default StepRetryPolicy( exception_types=[ StepExceptionTypeEnum.SERVICE_FAULT, StepExceptionTypeEnum.THROTTLING ], expire_after_min=5, interval_seconds=10, backoff_rate=2.0 ), // retry when resource limit quota gets exceeded SageMakerJobStepRetryPolicy( exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT] expire_after_min=120, interval_seconds=60, backoff_rate=2.0 ), // retry when job failed due to transient error or EC2 ICE. SageMakerJobStepRetryPolicy( failure_reason_types=[ SageMakerJobExceptionTypeEnum.JOB_INTERNAL_ERROR, SageMakerJobExceptionTypeEnum.JOB_CAPACITY_ERROR, ] max_attempts=10, interval_seconds=30, backoff_rate=2.0 ) ] )