Mise en cache des étapes du pipeline - Amazon SageMaker

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.

Mise en cache des étapes du pipeline

Lorsque vous utilisez la mise en cache des signatures d'étape, SageMaker Pipelines essaie de trouver une exécution précédente de votre étape de pipeline actuelle avec les mêmes valeurs pour certains attributs. S'il est trouvé, SageMaker Pipelines propage les résultats de l'exécution précédente plutôt que de recalculer l'étape. Les attributs cochés sont spécifiques au type d'étape et sont répertoriés dans Attributs de clé de cache par défaut par type d'étape du pipeline.

Vous devez vous inscrire à la mise en cache d'étape, car elle est désactivée par défaut. Lorsque vous activez la mise en cache d'étape, vous devez également définir un délai d'expiration. Ce délai définit la période au cours de laquelle une exécution précédente peut rester candidate à une réutilisation.

La mise en cache des étapes ne prend en compte que les exécutions réussies ; elle ne réutilise jamais celles ayant échoué. Lorsque plusieurs exécutions réussies existent dans le délai imparti, SageMaker Pipelines utilise le résultat de la dernière exécution réussie. Si aucune exécution réussie ne correspond dans le délai imparti, SageMaker Pipelines réexécute l'étape. Si l'exécuteur trouve une exécution précédente qui répond aux critères mais qui est toujours en cours, les deux étapes poursuivent leur exécution et mettent à jour le cache si elles réussissent.

La mise en cache d'étape n'est limitée que pour les pipelines individuels, de sorte que vous ne pouvez pas réutiliser une étape d'un autre pipeline même s'il existe une correspondance de signature d'étape.

La mise en cache d'étape est disponible pour les types d'étape suivants :

Activer la mise en cache des étapes

Pour activer la mise en cache des étapes, ajoutez une propriété CacheConfig à la définition de l'étape.

Les propriétés CacheConfig utilisent le format suivant dans le fichier de définition de pipeline :

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

Le champ Enabled indique si la mise en cache est activée pour l'étape en question. Vous pouvez définir le champ surtrue, ce qui indique d' SageMaker essayer de retrouver une exécution précédente de l'étape avec les mêmes attributs. Vous pouvez également définir le champ surfalse, qui indique d'exécuter l'étape SageMaker à chaque fois que le pipeline s'exécute. ExpireAfterest une chaîne au format de durée ISO 8601 qui définit le délai d'expiration. La durée ExpireAfter peut être une année, un mois, une semaine, un jour, une heure ou une minute. Chaque valeur est constituée d'un nombre suivi d'une lettre indiquant l'unité de durée. Par exemple :

  • « 30d » = 30 jours

  • « 5y » = 5 ans

  • « T16m » = 16 minutes

  • « 30dT5h » = 30 jours et 5 heures.

La discussion suivante décrit la procédure d'activation de la mise en cache pour les pipelines nouveaux ou préexistants à l'aide du SDK Amazon SageMaker Python.

Activer la mise en cache pour les nouveaux pipelines

Pour les nouveaux pipelines, initialisez une instance CacheConfig avec enable_caching=True et fournissez-la en tant qu'entrée à l'étape de votre pipeline. L'exemple suivant active la mise en cache avec un délai d'expiration d'une heure pour une étape d'entraînement :

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config )

Activer la mise en cache pour les pipelines préexistants

Pour activer la mise en cache pour les pipelines préexistants et déjà définis, activez la propriété enable_caching associée à l'étape et définissez expire_after sur une valeur de délai d'expiration. Enfin, mettez à jour le pipeline avec pipeline.upsert() ou pipeline.update(). Lorsque vous le réexécutez, l'exemple de code suivant active la mise en cache avec un délai d'expiration d'une heure pour une étape d'entraînement :

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Vous pouvez également mettre à jour la configuration du cache après avoir déjà défini le pipeline (préexistant), en autorisant l'exécution continue du code. L'exemple de code suivant illustre cette méthode :

# turn on caching with timeout period of one hour pipeline.steps[0].cache_config.enable_caching = True pipeline.steps[0].cache_config.expire_after = "PT1H" # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Pour des exemples de code plus détaillés et une discussion sur la façon dont les paramètres du SDK Python affectent la mise en cache, consultez la section Configuration de la mise en cache dans la documentation du SDK Amazon SageMaker Python.

Désactiver la mise en cache des étapes

Une étape de pipeline ne se réexécute pas si vous modifiez des attributs qui ne sont pas répertoriés dans Attributs de clé de cache par défaut par type d'étape du pipeline pour son type d'étape. Toutefois, vous pouvez décider de réexécuter l'étape du pipeline dans tous les cas. Dans ce cas, vous devez désactiver la mise en cache des étapes.

Pour désactiver la mise en cache des étapes, définissez l'attribut Enabled dans la propriété CacheConfig de la définition de l'étape sur false, comme indiqué dans l'extrait de code suivant :

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

Notez que l'attribut ExpireAfter est ignoré lorsque Enabled est false.

Pour désactiver la mise en cache d'une étape de pipeline à l'aide du SDK Amazon SageMaker Python, définissez le pipeline de votre étape de pipeline, désactivez la enable_caching propriété et mettez à jour le pipeline.

Lorsque vous le réexécutez, l'exemple de code suivant désactive la mise en cache pour une étape d'entraînement :

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=False, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Vous pouvez également désactiver la propriété enable_caching après avoir déjà défini le pipeline, afin de permettre une exécution de code continue. L'exemple de code suivant illustre cette solution :

# turn off caching for the training step pipeline.steps[0].cache_config.enable_caching = False # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Pour des exemples de code plus détaillés et une discussion sur la façon dont les paramètres du SDK Python affectent la mise en cache, consultez la section Configuration de la mise en cache dans la documentation du SDK Amazon SageMaker Python.

Attributs de clé de cache par défaut par type d'étape du pipeline

Lorsque vous décidez de réutiliser une étape de pipeline précédente ou de réexécuter l'étape, SageMaker Pipelines vérifie si certains attributs ont changé. Si l'ensemble d'attributs est différent de toutes les exécutions précédentes au cours du délai imparti, l'étape s'exécute à nouveau. Ces attributs incluent les artefacts d'entrée, les spécifications de l'application ou de l'algorithme, ainsi que les variables d'environnement.

La liste suivante indique chaque type d'étape du pipeline et les attributs qui, s'ils sont modifiés, déclenchent une nouvelle exécution de l'étape. Pour plus d'informations sur les paramètres du SDK Python utilisés pour créer les attributs suivants, consultez la section Configuration de la mise en cache dans la documentation du SDK Amazon SageMaker Python.

  • AppSpecification

  • Environnement

  • ProcessingInputs. Cet attribut contient des informations sur le script de prétraitement.

  • AlgorithmSpecification

  • CheckpointConfig

  • DebugHookConfig

  • DebugRuleConfigurations

  • Environnement

  • HyperParameters

  • InputDataConfig. Cet attribut contient des informations sur le script d'entraînement.

  • HyperParameterTuningJobConfig

  • TrainingJobDefinition. Cet attribut est composé de plusieurs attributs enfants, qui ne provoquent pas tous une nouvelle exécution de l'étape. Les attributs enfants susceptibles d'entraîner une nouvelle exécution (s'ils sont modifiés) sont les suivants :

    • AlgorithmSpecification

    • HyperParameterRanges

    • InputDataConfig

    • StaticHyperParameters

    • TuningObjective

  • TrainingJobDefinitions

  • AutoMLJobConfig. Cet attribut est composé de plusieurs attributs enfants, qui ne provoquent pas tous une nouvelle exécution de l'étape. Les attributs enfants susceptibles d'entraîner une nouvelle exécution (s'ils sont modifiés) sont les suivants :

    • CompletionCriteria

    • CandidateGenerationConfig

    • DataSplitConfig

    • Mode

  • AutoML JobObjective

  • InputDataConfig

  • ProblemType

  • DataProcessing

  • Environnement

  • ModelName

  • TransformInput

  • ClarifyCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBaseline

  • ModelPackageGroupName

  • SuppliedBaselineConstraints

  • QualityCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBaseline

  • ModelPackageGroupName

  • SuppliedBaselineConstraints

  • SuppliedBaselineStatistics

  • ClusterId

  • StepConfig

Contrôle d'accès aux données mises en cache

Lorsqu'un SageMaker pipeline s'exécute, il met en cache les paramètres et les métadonnées associés aux SageMaker tâches lancées par le pipeline et les enregistre pour les réutiliser lors des exécutions suivantes. Ces métadonnées sont accessibles via différentes sources, en plus des étapes du pipeline mises en cache, et incluent les types suivants :

  • Describe*Job requêtes

  • CloudWatch Journaux

  • CloudWatch Évènements

  • CloudWatch Métriques

  • SageMaker Rechercher

Notez que l'accès à chaque source de données de la liste est contrôlé par son propre ensemble d'autorisations IAM. La suppression de l'accès d'un rôle particulier à une source de données n'affecte pas le niveau d'accès aux autres. Par exemple, un administrateur de compte peut supprimer les autorisations IAM pour les demandes Describe*Job émanant du rôle d'un appelant. Bien que l'appelant ne puisse plus faire de demandes Describe*Job, il peut toujours récupérer les métadonnées d'un pipeline exécuté avec des étapes mises en cache tant qu'il est autorisé à exécuter le pipeline. Si un administrateur de compte souhaite supprimer complètement l'accès aux métadonnées d'une SageMaker tâche donnée, il doit supprimer les autorisations pour chacun des services concernés qui fournissent l'accès aux données.