Étapes du pipeline - Amazon SageMaker AI

Étapes du pipeline

Les pipelines se composent d’étapes. Ces étapes définissent les actions effectuées par le pipeline et les relations entre les étapes utilisant les propriétés. La page suivante décrit les types d’étapes, leurs propriétés et les relations entre elles.

Propriétés de l’étape

Utilisez l’attribut properties pour ajouter des dépendances de données entre les étapes du pipeline. Pipelines utilise ces dépendances de données pour construire le graphique DAG à partir de la définition du pipeline. Ces propriétés peuvent être référencées en tant que valeurs d’espace réservé et sont résolues lors de l’exécution.

L’attribut properties d’une étape Pipelines correspond à l’objet retourné par un appel Describe pour le type de tâche SageMaker AI correspondant. Pour chaque type de tâche, l’appel Describe renvoie l’objet de réponse suivant :

Pour vérifier quelles propriétés sont référables pour chaque type d'étape lors de la création de dépendances de données, consultez Dépendance des données - Référence des propriétés dans le SDK Python d'Amazon SageMaker.

Parallélisme d’étapes

Lorsqu’une étape ne dépend d’aucune autre étape, elle est exécutée immédiatement lors de l’exécution du pipeline. Toutefois, l’exécution en parallèle d’un trop grand nombre d’étapes du pipeline peut rapidement épuiser les ressources disponibles. Contrôlez le nombre d'étapes simultanées pour une exécution de pipeline avec ParallelismConfiguration.

L'exemple suivant utilise ParallelismConfiguration pour définir la limite des étapes simultanées à cinq.

pipeline.create( parallelism_config=ParallelismConfiguration(5), )

Dépendance des données entre étapes

Vous définissez la structure de votre DAG en spécifiant les relations des données entre les étapes. Pour créer des dépendances de données entre les étapes, transmettez les propriétés d’une étape comme entrée à une autre étape du pipeline. L'étape recevant l'entrée n'est démarrée qu'après l'étape fournissant l'entrée a terminé l'exécution.

Une dépendance de données utilise la notation JsonPath au format suivant. Ce format traverse le fichier de propriétés JSON. Cela signifie que vous pouvez ajouter autant d’instances <property> que nécessaire pour atteindre la propriété imbriquée souhaitée dans le fichier. Pour plus d’informations sur la notation JsonPath, consultez le référentiel JsonPath.

<step_name>.properties.<property>.<property>

Ce qui suit montre comment spécifier un compartiment Amazon S3 à l'aide de la propriété ProcessingOutputConfig d'une étape de traitement.

step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri

Pour créer la dépendance des données, transmettez le compartiment à une étape d’entraînement comme suit.

from sagemaker.workflow.pipeline_context import PipelineSession sklearn_train = SKLearn(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="CensusTrain", step_args=sklearn_train.fit(inputs=TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train_data"].S3Output.S3Uri )) )

Pour vérifier quelles propriétés sont référables pour chaque type d'étape lors de la création de dépendances de données, voir Data Dependency - Référence des propriétés dans le Le kit SDK Python Amazon SageMaker.

Dépendance personnalisée entre étapes

Lorsque vous spécifiez une dépendance de données, Pipelines fournit la connexion de données entre les étapes. Par ailleurs, une étape peut accéder aux données d’une étape précédente sans utiliser directement Pipelines. Dans ce cas, vous pouvez créer une dépendance personnalisée qui indique à Pipelines de ne pas démarrer une étape tant qu’une autre étape n’a pas été exécutée. Vous créez une dépendance personnalisée en spécifiant l’attribut DependsOn d’une étape.

À titre d’exemple, ce qui suit définit une étape C qui démarre seulement après que les deux étapes A et B terminent leur exécution.

{ 'Steps': [ {'Name':'A', ...}, {'Name':'B', ...}, {'Name':'C', 'DependsOn': ['A', 'B']} ] }

Pipelines lève une exception de validation si la dépendance crée une dépendance cyclique.

L’exemple suivant crée une étape d’entraînement qui démarre après l’exécution d’une étape de traitement.

processing_step = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step])

L'exemple suivant crée une étape d'entraînement qui ne démarre pas tant que l'exécution de deux étapes de traitement différentes n'est pas terminée.

processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step_1, processing_step_2])

Ce qui suit fournit un autre moyen de créer la dépendance personnalisée.

training_step.add_depends_on([processing_step_1]) training_step.add_depends_on([processing_step_2])

L'exemple suivant crée une étape d'entraînement qui reçoit les entrées d'une étape de traitement et attend que l'exécution d'une autre étape de traitement se termine.

processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep( ..., inputs=TrainingInput( s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[ "train_data" ].S3Output.S3Uri ) training_step.add_depends_on([processing_step_2])

L’exemple suivant montre comment extraire une liste de chaînes des dépendances personnalisées d’une étape.

custom_dependencies = training_step.depends_on

Images personnalisées dans une étape

Vous pouvez utiliser l’une quelconque des images de conteneur Deep Learning SageMaker AI disponibles lorsque vous créez une étape dans votre pipeline.

Vous pouvez également utiliser votre propre conteneur avec des étapes de pipeline. Comme vous ne pouvez pas créer d’image depuis Studio Classic, vous devez créer votre image à l’aide d’une autre méthode avant de l’utiliser avec Pipelines.

Pour utiliser votre propre conteneur lors de la création des étapes pour votre pipeline, incluez l’URI de l’image dans la définition de l’estimateur. Pour plus d’informations sur l’utilisation de votre propre conteneur avec SageMaker AI, consultez Utilisation de conteneurs Docker avec SageMaker AI.