

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.

# Étapes du pipeline
<a name="build-and-manage-steps"></a>

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.

**Topics**
+ [Ajout d’une étape](build-and-manage-steps-types.md)
+ [Ajouter une intégration](build-and-manage-steps-integration.md)
+ [Propriétés de l’étape](#build-and-manage-properties)
+ [Parallélisme d’étapes](#build-and-manage-parallelism)
+ [Dépendance des données entre étapes](#build-and-manage-data-dependency)
+ [Dépendance personnalisée entre étapes](#build-and-manage-custom-dependency)
+ [Images personnalisées dans une étape](#build-and-manage-images)

# Ajout d’une étape
<a name="build-and-manage-steps-types"></a>

La section suivante décrit les exigences de chaque type d’étape et fournit un exemple d’implémentation de l’étape, ainsi que la manière d’ajouter l’étape à un pipeline. Ce ne sont pas des implémentations fonctionnelles, car elles ne fournissent pas la ressource et les entrées nécessaires. Pour obtenir un tutoriel qui met en œuvre ces étapes, consultez [Actions de pipeline](pipelines-build.md).

**Note**  
Vous pouvez également créer une étape à partir de votre code de machine learning local en le convertissant en étape Pipelines à l’aide du décorateur `@step`. Pour de plus amples informations, veuillez consulter [décorateur @step](#step-type-custom).

Amazon SageMaker Pipelines prend en charge les types d'étapes suivants :
+ [Exécuter le code](#step-type-executecode)

  [Traitement](#step-type-processing)
+ [Entraînement](#step-type-training)
+ [Réglage](#step-type-tuning)
+ [AutoML](#step-type-automl)
+ [`Model`](#step-type-model)
+ [`Create model`](#step-type-create-model)
+ [`Register model`](#step-type-register-model)
+ [`Deploy model (endpoint)`](#step-type-deploy-model-endpoint)
+ [Transformation](#step-type-transform)
+ [Condition](#step-type-condition)
+ [`Callback`](#step-type-callback)
+ [Lambda](#step-type-lambda)
+ [`ClarifyCheck`](#step-type-clarify-check)
+ [`QualityCheck`](#step-type-quality-check)
+ [EMR](#step-type-emr)
+ [Tâche de bloc-notes](#step-type-notebook-job)
+ [Fail](#step-type-fail)

## décorateur @step
<a name="step-type-custom"></a>

Si vous souhaitez orchestrer une tâche de ML personnalisée qui tire parti des fonctionnalités avancées de l' SageMaker IA ou d'autres AWS services de l'interface utilisateur de drag-and-drop Pipelines, utilisez le. [Étape Exécuter le code](#step-type-executecode)

Vous pouvez créer une étape à partir du code de machine learning local à l’aide du décorateur `@step`. Après avoir testé votre code, vous pouvez convertir la fonction en une étape de pipeline d' SageMaker IA en l'annotant avec le `@step` décorateur. Pipelines crée et exécute un pipeline lorsque vous transmettez la sortie de la fonction décorée avec `@step` en tant qu’étape à votre pipeline. Vous pouvez également créer un pipeline DAG en plusieurs étapes qui inclut une ou plusieurs fonctions `@step` décorées ainsi que des étapes de pipeline d' SageMaker IA traditionnelles. Pour plus de détails sur la création d’une étape avec le décorateur `@step`, consultez [Lift-and-shift Code Python avec le décorateur @step](pipelines-step-decorator.md).

## Étape Exécuter le code
<a name="step-type-executecode"></a>

Dans l' drag-and-dropinterface utilisateur de Pipelines, vous pouvez utiliser une étape d'**exécution de code** pour exécuter votre propre code en tant qu'étape de pipeline. Vous pouvez charger une fonction, un script ou un bloc-notes Python à exécuter dans le cadre de votre pipeline. Vous devez utiliser cette étape si vous souhaitez orchestrer une tâche de machine learning personnalisée qui tire parti des fonctionnalités avancées de l' SageMaker IA ou d'autres AWS services.

L'étape **Execute Code** télécharge les fichiers dans votre compartiment Amazon S3 par défaut pour Amazon SageMaker AI. Ce compartiment ne dispose pas des autorisations de partage des ressources entre origines multiples (CORS). Pour en savoir plus sur la configuration d’autorisations CORS, consultez [Exigence CORS pour les données d’image d’entrée](sms-cors-update.md).

L'étape **Execute Code** utilise une tâche de SageMaker formation Amazon pour exécuter votre code. Assurez-vous que votre rôle IAM dispose des autorisations d’API `sagemaker:DescribeTrainingJob` et `sagemaker:CreateTrainingJob`. Pour en savoir plus sur toutes les autorisations requises pour Amazon SageMaker AI et sur la façon de les configurer, consultez[Autorisations d'API Amazon SageMaker AI : référence sur les actions, les autorisations et les ressources](api-permissions-reference.md).

Pour ajouter une étape d’exécution de code à un pipeline à l’aide du concepteur de pipeline, procédez comme suit :

1. Ouvrez la console Amazon SageMaker Studio en suivant les instructions fournies dans[Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Exécuter le code** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Exécuter le code** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**.

1. Vous pouvez charger un fichier individuel à exécuter ou charger un dossier compressé contenant plusieurs artefacts.

1. Pour les chargements de fichiers uniques, vous pouvez fournir des paramètres facultatifs pour les blocs-notes, les fonctions Python ou les scripts.

1. Lorsque vous fournissez des fonctions Python, un gestionnaire doit être fourni au format `file.py:<function_name>`

1. Pour les chargements de dossiers compressés, des chemins relatifs à votre code doivent être fournis, et vous pouvez éventuellement fournir des chemins vers un fichier `requirements.txt` ou un script d’initialisation dans le dossier compressé.

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Exécuter le code** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Exécuter le code** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Exécuter le code** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Exécuter le code** vers cette étape pour créer une périphérie. Les sorties des étapes **Exécuter le code** peuvent être référencées pour les fonctions Python.

## Étape de traitement
<a name="step-type-processing"></a>

Utilisez une étape de traitement pour créer une tâche de traitement pour le traitement des données. Pour plus d’informations sur les tâches de traitement, consultez [Données de traitement et Modèles d’évaluation](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html).

------
#### [ Pipeline Designer ]

Pour ajouter une étape de traitement à un pipeline à l’aide du concepteur de pipeline, procédez comme suit :

1. Ouvrez la console Amazon SageMaker Studio en suivant les instructions fournies dans[Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Dans la barre latérale gauche, choisissez **Traiter les données** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Traiter les données** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Traiter les données** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Traiter les données** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Traiter les données** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Traiter les données** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

Une étape de traitement nécessite un processeur, un script Python qui définit le code de traitement, les sorties pour le traitement et les arguments de tâche. L’exemple suivant montre comment créer une définition `ProcessingStep`. 

```
from sagemaker.sklearn.processing import SKLearnProcessor

sklearn_processor = SKLearnProcessor(framework_version='1.0-1',
                                     role=<role>,
                                     instance_type='ml.m5.xlarge',
                                     instance_count=1)
```

```
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

inputs = [
    ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),
]

outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args = sklearn_processor.run(inputs=inputs, outputs=outputs,
        code="abalone/preprocessing.py")
)
```

**Transmission des paramètres d’exécution**

L'exemple suivant montre comment transmettre des paramètres d'exécution d'un PySpark processeur à un`ProcessingStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.spark.processing import PySparkProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

pipeline_session = PipelineSession()

pyspark_processor = PySparkProcessor(
    framework_version='2.4',
    role=<role>,
    instance_type='ml.m5.xlarge',
    instance_count=1,
    sagemaker_session=pipeline_session,
)

step_args = pyspark_processor.run(
    inputs=[ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
    ],
    code="preprocess.py",
    arguments=None,
)


step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args=step_args,
)
```

Pour plus d'informations sur les exigences relatives aux étapes de traitement, consultez le document [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep)documentation. Pour un exemple détaillé, consultez le carnet d'exemples [Orchestrate Jobs to Train and Evaluate Models with Amazon SageMaker Pipelines](https://github.com/aws/amazon-sagemaker-examples/blob/62de6a1fca74c7e70089d77e36f1356033adbe5f/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.ipynb). La section *Définition d’une étape de traitement pour l’ingénierie des caractéristiques* contient plus d’informations.

------

## Étape d’entraînement
<a name="step-type-training"></a>

Vous utilisez une étape d’entraînement pour créer une tâche d’entraînement afin d’entraîner un modèle. Pour plus d'informations sur les métiers de formation, consultez [Train a Model with Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

Une étape d’entraînement nécessite un estimateur, ainsi que des entrées de données d’entraînement et de validation.

------
#### [ Pipeline Designer ]

Pour ajouter une étape d’entraînement à un pipeline à l’aide du concepteur de pipeline, procédez comme suit :

1. Ouvrez la console Amazon SageMaker Studio en suivant les instructions fournies dans[Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Entraîner le modèle** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Entraîner le modèle** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Entraîner le modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Entraîner le modèle** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Entraîner le modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Entraîner le modèle** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

L’exemple suivant montre comment créer une définition `TrainingStep`. Pour plus d'informations sur les exigences relatives aux étapes de formation, consultez le document [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep)documentation.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TrainingStep

from sagemaker.xgboost.estimator import XGBoost

pipeline_session = PipelineSession()

xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session)

step_args = xgb_estimator.fit(
    inputs={
        "train": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv"
        ),
        "validation": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv"
        )
    }
)

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=step_args,
)
```

------

## Étape de réglage
<a name="step-type-tuning"></a>

Vous utilisez une étape de réglage pour créer une tâche de réglage d’hyperparamètres, également appelé optimisation des hyperparamètres (HPO). Une tâche de réglage d’hyperparamètres exécute plusieurs tâches d’entraînement, chacune produisant une version de modèle. Pour plus d’informations sur le réglage d’hyperparamètres, consultez [Réglage automatique du modèle grâce à l' SageMaker IA](automatic-model-tuning.md).

La tâche de réglage est associée à l'expérience d' SageMaker IA pour le pipeline, les tâches de formation étant créées à titre d'essais. Pour de plus amples informations, veuillez consulter [Intégration d’Experiments](pipelines-experiments.md).

Une étape de réglage nécessite des entrées [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)et un entraînement. Vous pouvez entraîner à nouveau les tâches de réglage précédentes en spécifiant le paramètre `warm_start_config` du `HyperparameterTuner`. Pour plus d’informations sur le réglage d’hyperparamètres et le démarrage à chaud, consultez [Exécution d'une tâche de réglage des hyperparamètres avec démarrage à chaud](automatic-model-tuning-warm-start.md).

[Vous utilisez la méthode [get\$1top\$1model\$1s3\$1uri](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep.get_top_model_s3_uri) du sagemaker.workflow.steps. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)classe pour obtenir l'artefact du modèle à partir de l'une des versions les plus performantes du modèle. Pour un bloc-notes expliquant comment utiliser une étape de réglage dans un pipeline d' SageMaker IA, consultez [sagemaker-pipelines-tuning-step.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/tuning-step/sagemaker-pipelines-tuning-step.ipynb).

**Important**  
Les étapes de réglage ont été introduites dans Amazon SageMaker Python SDK v2.48.0 et Amazon SageMaker Studio Classic v3.8.0. Vous devez mettre à jour Studio Classic avant d’utiliser une étape de réglage, ou le graphique DAG du pipeline ne s’affiche pas. Pour mettre à jour Studio Classic, consultez [Arrêter et mettre à jour Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

L’exemple suivant montre comment créer une définition `TuningStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.tuner import HyperparameterTuner
from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TuningStep

tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession())
    
step_tuning = TuningStep(
    name = "HPTuning",
    step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data"))
)
```

**Obtenir la meilleure version de modèle**

L’exemple suivant montre comment obtenir la meilleure version de modèle à partir de la tâche de réglage à l’aide de la méthode `get_top_model_s3_uri`. Tout au plus, les 50 versions les plus performantes sont disponibles classées selon [HyperParameterTuningJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobObjective.html). L'argument `top_k` est un index dans les versions, où `top_k=0` est la version la plus performante et `top_k=49` est la version la moins performante.

```
best_model = Model(
    image_uri=image_uri,
    model_data=step_tuning.get_top_model_s3_uri(
        top_k=0,
        s3_bucket=sagemaker_session.default_bucket()
    ),
    ...
)
```

Pour plus d'informations sur les exigences relatives aux étapes de réglage, consultez le document [sagemaker.workflow.steps. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)documentation.

## Étape de peaufinage
<a name="step-type-fine-tuning"></a>

Le réglage fin entraîne un modèle de base préentraîné d'Amazon SageMaker JumpStart sur un nouvel ensemble de données. Ce processus, également connu sous le nom d’apprentissage par transfert, peut produire des modèles précis avec des jeux de données plus petits et moins de temps d’entraînement. Lorsque vous optimisez un modèle, vous pouvez utiliser le jeu de données par défaut ou choisir vos propres données. Pour en savoir plus sur la mise au point d'un modèle de base à partir de JumpStart, voir[Affiner un modèle](jumpstart-fine-tune.md).

L'étape de mise au point utilise une tâche de SageMaker formation Amazon pour personnaliser votre modèle. Assurez-vous que votre rôle IAM dispose des autorisations d’API `sagemaker:DescribeTrainingJob` et `sagemaker:CreateTrainingJob` nécessaires pour exécuter la tâche de peaufinage dans votre pipeline. Pour en savoir plus sur les autorisations requises pour Amazon SageMaker AI et sur la façon de les configurer, consultez[Autorisations d'API Amazon SageMaker AI : référence sur les actions, les autorisations et les ressources](api-permissions-reference.md).

Pour ajouter une étape de **modèle affinée** à votre pipeline à l'aide de l' drag-and-dropéditeur, procédez comme suit :

1. Ouvrez la console Studio en suivant les instructions figurant dans [Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Ajuster le modèle** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Ajuster le modèle** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**.

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Ajuster le modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Ajuster le modèle** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Ajuster le modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Ajuster le modèle** vers cette étape pour créer une périphérie.

## Étape AutoML
<a name="step-type-automl"></a>

Utilisez l'API [AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html) pour créer une tâche AutoML afin d'entraîner automatiquement un modèle. Pour plus d'informations sur les tâches AutoML, consultez [Automatiser le développement de modèles avec Amazon SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html) Autopilot. 

**Note**  
Actuellement, l'étape AutoML ne prend en charge que [le mode d'entraînement d'assemblage](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html).

L'exemple suivant montre comment créer une définition avec `AutoMLStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.automl_step import AutoMLStep

pipeline_session = PipelineSession()

auto_ml = AutoML(...,
    role="<role>",
    target_attribute_name="my_target_attribute_name",
    mode="ENSEMBLING",
    sagemaker_session=pipeline_session) 

input_training = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-training-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="training",
)
input_validation = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-validation-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="validation",
)

step_args = auto_ml.fit(
    inputs=[input_training, input_validation]
)

step_automl = AutoMLStep(
    name="AutoMLStep",
    step_args=step_args,
)
```

**Obtenir la meilleure version de modèle**

L’étape AutoML entraîne automatiquement plusieurs modèles candidats. Obtenez le modèle avec la meilleure métrique d’objectif de la tâche AutoML à l’aide de la méthode `get_best_auto_ml_model` comme suit. Vous devez également utiliser un `role` IAM pour accéder aux artefacts du modèle.

```
best_model = step_automl.get_best_auto_ml_model(role=<role>)
```

Pour plus d'informations, consultez l'étape [AutoML](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.automl_step.AutoMLStep) du SDK SageMaker Python.

## Étape du modèle
<a name="step-type-model"></a>

Utilisez un `ModelStep` pour créer ou enregistrer un modèle d' SageMaker IA. Pour plus d'informations sur les `ModelStep` exigences, consultez le document [sagemaker.workflow.model\$1step. ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.model_step.ModelStep)documentation.

### Création d’un modèle
<a name="step-type-model-create"></a>

Vous pouvez utiliser un `ModelStep` pour créer un modèle d' SageMaker IA. A `ModelStep` nécessite des artefacts du modèle et des informations sur le type d'instance d' SageMaker IA que vous devez utiliser pour créer le modèle. Pour plus d'informations sur les modèles d' SageMaker IA, consultez [Entraînez un modèle avec Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

L’exemple suivant montre comment créer une définition `ModelStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.model import Model
from sagemaker.workflow.model_step import ModelStep

step_train = TrainingStep(...)
model = Model(
    image_uri=pytorch_estimator.training_image_uri(),
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    sagemaker_session=PipelineSession(),
    role=role,
)

step_model_create = ModelStep(
   name="MyModelCreationStep",
   step_args=model.create(instance_type="ml.m5.xlarge"),
)
```

### Enregistrement d’un modèle
<a name="step-type-model-register"></a>

Vous pouvez utiliser a `ModelStep` pour enregistrer un `sagemaker.model.Model` ou un dans `sagemaker.pipeline.PipelineModel` l'Amazon SageMaker Model Registry. Un `PipelineModel` représente un pipeline d’inférence, qui est un modèle composé d’une séquence linéaire de conteneurs qui traitent les demandes d’inférence. Pour savoir comment enregistrer un modèle, consultez [Déploiement de l’enregistrement de modèles à l’aide du registre de modèles](model-registry.md).

L’exemple suivant montre comment créer une `ModelStep` qui enregistre un `PipelineModel`.

```
import time

from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

pipeline_session = PipelineSession()

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(
   model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
   entry_point='inference.py',
   source_dir='sklearn_source_dir/',
   code_location=code_location,
   framework_version='1.0-1',
   role=role,
   sagemaker_session=pipeline_session,
   py_version='py3'
)

xgboost_model = XGBoostModel(
   model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
   entry_point='inference.py',
   source_dir='xgboost_source_dir/',
   code_location=code_location,
   framework_version='0.90-2',
   py_version='py3',
   sagemaker_session=pipeline_session,
   role=role
)

from sagemaker.workflow.model_step import ModelStep
from sagemaker import PipelineModel

pipeline_model = PipelineModel(
   models=[sklearn_model, xgboost_model],
   role=role,sagemaker_session=pipeline_session,
)

register_model_step_args = pipeline_model.register(
    content_types=["application/json"],
   response_types=["application/json"],
   inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
   transform_instances=["ml.m5.xlarge"],
   model_package_group_name='sipgroup',
)

step_model_registration = ModelStep(
   name="AbaloneRegisterModel",
   step_args=register_model_step_args,
)
```

## Création d’une étape de modèle
<a name="step-type-create-model"></a>

Vous utilisez l'étape Créer un modèle pour créer un modèle d' SageMaker IA. Pour plus d'informations sur les modèles d' SageMaker IA, consultez[Entraînez un modèle avec Amazon SageMaker](how-it-works-training.md).

Une étape de création de modèle nécessite des artefacts de modèle et des informations sur le type d'instance d' SageMaker IA que vous devez utiliser pour créer le modèle. Les exemples suivants montrent comment créer une définition d’étape Créer un modèle. Pour plus d'informations sur les exigences relatives aux étapes de création d'un modèle, consultez le document [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep)documentation.

------
#### [ Pipeline Designer ]

Pour ajouter une étape de création de modèle à votre pipeline, procédez comme suit :

1. Ouvrez la console Studio en suivant les instructions figurant dans [Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Créer un modèle** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Créer un modèle** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Créer un modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Créer un modèle** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Créer un modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Créer un modèle** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

**Important**  
Nous vous recommandons [Étape du modèle](#step-type-model) de l'utiliser pour créer des modèles à partir de la version 2.90.0 du SDK AI SageMaker Python. `CreateModelStep`continuera de fonctionner dans les versions précédentes du SDK SageMaker Python, mais n'est plus activement pris en charge.

```
from sagemaker.workflow.steps import CreateModelStep

step_create_model = CreateModelStep(
    name="AbaloneCreateModel",
    model=best_model,
    inputs=inputs
)
```

------

## Étape Enregistrer le modèle
<a name="step-type-register-model"></a>

L'étape Enregistrer un modèle enregistre un modèle dans le registre des SageMaker modèles.

------
#### [ Pipeline Designer ]

Pour enregistrer un modèle à partir d’un pipeline à l’aide du concepteur de pipeline, procédez comme suit :

1. Ouvrez la console Amazon SageMaker Studio en suivant les instructions fournies dans[Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Enregistrer le modèle** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Enregistrer le modèle** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Enregistrer le modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Enregistrer le modèle** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Enregistrer le modèle** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Enregistrer le modèle** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

**Important**  
Nous vous recommandons [Étape du modèle](#step-type-model) de l'utiliser pour enregistrer des modèles à partir de la version 2.90.0 du SDK AI SageMaker Python. `RegisterModel`continuera de fonctionner dans les versions précédentes du SDK SageMaker Python, mais n'est plus activement pris en charge.

[Vous utilisez une `RegisterModel` étape pour enregistrer un [SageMaker.Model.Model ou un sagemaker.pipeline.](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html) PipelineModel](https://sagemaker.readthedocs.io/en/stable/api/inference/pipeline.html#pipelinemodel)auprès de l'Amazon SageMaker Model Registry. Un `PipelineModel` représente un pipeline d’inférence, qui est un modèle composé d’une séquence linéaire de conteneurs qui traitent les demandes d’inférence.

Pour savoir comment enregistrer un modèle, consultez [Déploiement de l’enregistrement de modèles à l’aide du registre de modèles](model-registry.md). Pour plus d'informations sur les exigences relatives aux `RegisterModel` étapes, consultez le document [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel)documentation.

L'exemple suivant montre comment créer une étape `RegisterModel` qui enregistre un `PipelineModel`.

```
import time
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
 entry_point='inference.py',
 source_dir='sklearn_source_dir/',
 code_location=code_location,
 framework_version='1.0-1',
 role=role,
 sagemaker_session=sagemaker_session,
 py_version='py3')

xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
 entry_point='inference.py',
 source_dir='xgboost_source_dir/',
 code_location=code_location,
 framework_version='0.90-2',
 py_version='py3',
 sagemaker_session=sagemaker_session,
 role=role)

from sagemaker.workflow.step_collections import RegisterModel
from sagemaker import PipelineModel
pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session)

step_register = RegisterModel(
 name="AbaloneRegisterModel",
 model=pipeline_model,
 content_types=["application/json"],
 response_types=["application/json"],
 inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
 transform_instances=["ml.m5.xlarge"],
 model_package_group_name='sipgroup',
)
```

Si le `model` n’est pas fourni, l’étape RegisterModel nécessite un estimateur, comme illustré dans l’exemple suivant.

```
from sagemaker.workflow.step_collections import RegisterModel

step_register = RegisterModel(
    name="AbaloneRegisterModel",
    estimator=xgb_train,
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    content_types=["text/csv"],
    response_types=["text/csv"],
    inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
    transform_instances=["ml.m5.xlarge"],
    model_package_group_name=model_package_group_name,
    approval_status=model_approval_status,
    model_metrics=model_metrics
)
```

------

## Étape Déployer le modèle (point de terminaison)
<a name="step-type-deploy-model-endpoint"></a>

Dans le concepteur de pipeline, utilisez l’étape Déployer le modèle (point de terminaison) pour déployer votre modèle sur un point de terminaison. Vous pouvez créer un nouveau point de terminaison ou utiliser un point de terminaison existant. L’inférence en temps réel est idéale pour les charges de travail d’inférence où vous avez des exigences en temps réel, interactives et à faible latence. Vous pouvez déployer votre modèle sur les services d'hébergement SageMaker AI et obtenir un point de terminaison en temps réel qui peut être utilisé à des fins d'inférence. Ces points de terminaison sont entièrement gérés et prennent en charge l’autoscaling. Pour en savoir plus sur l'inférence en temps réel dans l' SageMaker IA, consultez[Inférence en temps réel](realtime-endpoints.md).

Avant d’ajouter une étape de déploiement de modèle à votre pipeline, assurez-vous que votre rôle IAM possède les autorisations suivantes :
+ `sagemaker:CreateModel`
+ `sagemaker:CreateEndpointConfig`
+ `sagemaker:CreateEndpoint`
+ `sagemaker:UpdateEndpoint`
+ `sagemaker:DescribeModel`
+ `sagemaker:DescribeEndpointConfig`
+ `sagemaker:DescribeEndpoint`

Pour en savoir plus sur toutes les autorisations requises pour l' SageMaker IA et sur la façon de les configurer, consultez[Autorisations d'API Amazon SageMaker AI : référence sur les actions, les autorisations et les ressources](api-permissions-reference.md).

Pour ajouter une étape de déploiement du modèle à votre pipeline dans l' drag-and-dropéditeur, procédez comme suit :

1. Ouvrez la console Studio en suivant les instructions figurant dans [Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Déployer le modèle (point de terminaison)** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Déployer le modèle (point de terminaison)** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**.

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Déployer le modèle (point de terminaison)** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Déployer le modèle (point de terminaison)** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Déployer le modèle (point de terminaison)** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Déployer le modèle (point de terminaison)** vers cette étape pour créer une périphérie.

## Étape de transformation
<a name="step-type-transform"></a>

Pour exécuter des inférences sur un jeu de données entier, vous utilisez une étape de transformation pour une transformation par lots. Pour plus d’informations sur la transformation par lots, consultez [Transformations par lots avec pipelines d’inférence](inference-pipeline-batch.md).

Une étape de transformation nécessite un transformateur et les données sur lesquelles exécuter la transformation par lots. L’exemple suivant montre comment créer une définition d’étape de transformation. Pour plus d'informations sur les exigences relatives aux étapes de transformation, consultez le document [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep)documentation.

------
#### [ Pipeline Designer ]

Pour ajouter une étape de transformation par lots à votre pipeline à l'aide de l'éditeur drag-and-drop visuel, procédez comme suit :

1. Ouvrez la console Studio en suivant les instructions figurant dans [Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Déployer le modèle (transformation par lots)** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Déployer le modèle (transformation par lots)** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Déployer le modèle (transformation par lots)** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Déployer le modèle (transformation par lots)** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Déployer le modèle (transformation par lots)** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Déployer le modèle (transformation par lots)** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.transformer import Transformer
from sagemaker.inputs import TransformInput
from sagemaker.workflow.steps import TransformStep

transformer = Transformer(..., sagemaker_session=PipelineSession())

step_transform = TransformStep(
    name="AbaloneTransform",
    step_args=transformer.transform(data="s3://amzn-s3-demo-bucket/my-data"),
)
```

------

## Étape de condition
<a name="step-type-condition"></a>

Vous utilisez une étape de condition pour évaluer la condition des propriétés de l’étape afin d’évaluer quelle action doit être effectuée ensuite dans le pipeline.

Une étape de condition nécessite :
+ Une liste de conditions
+ Une liste d’étapes à exécuter si la condition a la valeur `true`
+ Une liste d’étapes à exécuter si la condition a la valeur `false`

------
#### [ Pipeline Designer ]

Pour ajouter une étape de condition à un pipeline à l’aide du concepteur de pipeline, procédez comme suit :

1. Ouvrez la console Amazon SageMaker Studio en suivant les instructions fournies dans[Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Condition** et faites-la glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Condition** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.condition_step.ConditionStep).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Condition** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Condition** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Condition** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Condition** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

 L’exemple suivant montre comment créer une définition `ConditionStep`. 

**Limites**
+ Pipelines ne prend pas en charge l’utilisation d’étapes de condition imbriquées. Vous ne pouvez pas transmettre une étape de condition comme entrée pour une autre étape de condition.
+ Une étape de condition ne peut pas utiliser des étapes identiques dans les deux branches. Si vous avez besoin de la même fonctionnalité d’étape dans les deux branches, dupliquez l’étape et donnez-lui un nom différent.

```
from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.functions import JsonGet

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value"
    ),
    right=6.0
)

step_cond = ConditionStep(
    name="AbaloneMSECond",
    conditions=[cond_lte],
    if_steps=[step_register, step_create_model, step_transform],
    else_steps=[]
)
```

Pour plus d'informations sur les `ConditionStep` exigences, consultez le document [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#conditionstep) Référence d'API. Pour plus d'informations sur les conditions prises en charge, consultez *[Amazon SageMaker Pipelines - Conditions](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#conditions)* dans la documentation du SDK SageMaker AI Python. 

------

## Étape de rappel
<a name="step-type-callback"></a>

Utilisez une `Callback` étape pour ajouter à votre flux de travail des processus et AWS des services supplémentaires qui ne sont pas directement fournis par Amazon SageMaker Pipelines. Lorsqu’une étape de `Callback` s’exécute, la procédure suivante se produit :
+ Pipelines envoie un message à une file d’attente Amazon Simple Queue Service (Amazon SQS) spécifiée par le client. Le message contient un jeton généré par Pipelines et une liste de paramètres d’entrée fournie par le client. Après avoir envoyé le message, Pipelines attend une réponse du client.
+ Le client récupère le message dans la file d’attente Amazon SQS et démarre son processus personnalisé.
+ Lorsque le processus est terminé, le client appelle l'une des personnes suivantes APIs et envoie le jeton généré par les pipelines :
  +  [SendPipelineExecutionStepSuccess](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepSuccess.html), ainsi qu'une liste de paramètres de sortie
  +  [SendPipelineExecutionStepFailure](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepFailure.html), ainsi qu'une raison de l'échec
+ L’appel d’API entraîne la poursuite du processus de pipeline, ou son échec.

Pour plus d'informations sur les exigences relatives aux `Callback` étapes, consultez le document [sagemaker.workflow.callback\$1step. CallbackStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.callback_step.CallbackStep)documentation. Pour une solution complète, voir [Étendre les SageMaker pipelines pour inclure des étapes personnalisées à l'aide d'étapes de rappel](https://aws.amazon.com/blogs/machine-learning/extend-amazon-sagemaker-pipelines-to-include-custom-steps-using-callback-steps/).

**Important**  
`Callback`les étapes ont été introduites dans Amazon SageMaker Python SDK v2.45.0 et Amazon SageMaker Studio Classic v3.6.2. Vous devez mettre à jour Studio Classic avant d’utiliser une étape `Callback` ou le graphique DAG du pipeline ne s’affiche pas. Pour mettre à jour Studio Classic, consultez [Arrêter et mettre à jour Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

L’exemple suivant montre une mise en œuvre de la procédure précédente.

```
from sagemaker.workflow.callback_step import CallbackStep

step_callback = CallbackStep(
    name="MyCallbackStep",
    sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue",
    inputs={...},
    outputs=[...]
)

callback_handler_code = '
    import boto3
    import json

    def handler(event, context):
        sagemaker_client=boto3.client("sagemaker")

        for record in event["Records"]:
            payload=json.loads(record["body"])
            token=payload["token"]

            # Custom processing

            # Call SageMaker AI to complete the step
            sagemaker_client.send_pipeline_execution_step_success(
                CallbackToken=token,
                OutputParameters={...}
            )
'
```

**Note**  
Paramètres de sortie pour `CallbackStep` ne doit pas être imbriqué. Par exemple, si vous utilisez un dictionnaire imbriqué comme paramètre de sortie, le dictionnaire est traité comme une chaîne unique (par ex. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Si vous fournissez une valeur imbriquée, lorsque vous essayez de faire référence à un paramètre de sortie particulier, SageMaker AI génère une erreur client non réessayable.

**Comportement d’arrêt**

Un processus de pipeline ne s’arrête pas lorsqu’une étape de `Callback` est en cours d’exécution.

Lorsque vous appelez un processus [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)de pipeline avec une `Callback` étape en cours d'exécution, Pipelines envoie un message Amazon SQS à la file d'attente SQS. Le corps du message SQS contient un champ **Status** (Statut), qui est défini sur `Stopping`. L’exemple suivant montre le corps d’un message SQS.

```
{
  "token": "26vcYbeWsZ",
  "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a",
  "arguments": {
    "number": 5,
    "stringArg": "some-arg",
    "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv"
  },
  "status": "Stopping"
}
```

Vous devez ajouter une logique à votre consommateur de messages Amazon SQS pour effectuer toutes les actions nécessaires (par exemple, le nettoyage des ressources) dès la réception du message. Ajoutez ensuite un appel à `SendPipelineExecutionStepSuccess` ou à `SendPipelineExecutionStepFailure`.

Ce n’est que lorsque Pipelines reçoit l’un de ces appels, qu’il arrête le processus du pipeline.

## Étape Lambda
<a name="step-type-lambda"></a>

Vous utilisez une étape Lambda pour exécuter une AWS Lambda fonction. Vous pouvez exécuter une fonction Lambda existante, ou l' SageMaker IA peut créer et exécuter une nouvelle fonction Lambda. Si vous choisissez d'utiliser une fonction Lambda existante, elle doit être Région AWS identique au pipeline d' SageMaker IA. [Pour un bloc-notes expliquant comment utiliser une étape Lambda dans un pipeline d' SageMaker IA, consultez sagemaker-pipelines-lambda-step .ipynb.](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/lambda-step/sagemaker-pipelines-lambda-step.ipynb)

**Important**  
Les étapes Lambda ont été introduites dans le SDK Amazon SageMaker Python v2.51.0 et dans Amazon SageMaker Studio Classic v3.9.1. Vous devez mettre à jour Studio Classic avant d’utiliser une étape Lambda ou le graphique DAG du pipeline ne s’affiche pas. Pour mettre à jour Studio Classic, consultez [Arrêter et mettre à jour Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

SageMaker L'IA fournit la classe [SageMaker.Lambda\$1Helper.Lambda pour créer, mettre à jour, invoquer et supprimer des fonctions Lambda](https://sagemaker.readthedocs.io/en/stable/api/utility/lambda_helper.html). `Lambda`porte la signature suivante.

```
Lambda(
    function_arn,       # Only required argument to invoke an existing Lambda function

    # The following arguments are required to create a Lambda function:
    function_name,
    execution_role_arn,
    zipped_code_dir,    # Specify either zipped_code_dir and s3_bucket, OR script
    s3_bucket,          # S3 bucket where zipped_code_dir is uploaded
    script,             # Path of Lambda function script
    handler,            # Lambda handler specified as "lambda_script.lambda_handler"
    timeout,            # Maximum time the Lambda function can run before the lambda step fails
    ...
)
```

Le [sagemaker.workflow.lambda\$1step. LambdaStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.lambda_step.LambdaStep)la classe a un `lambda_func` argument de type`Lambda`. Pour appeler une fonction Lambda existante, la seule exigence est de fournir l'Amazon Resource Name (ARN) de la fonction à `function_arn`. Si vous ne définissez aucune valeur pour `function_arn`, vous devez spécifier `handler` et l'un des éléments suivants :
+ `zipped_code_dir` – Chemin de la fonction Lambda zippée

  `s3_bucket` – Compartiment Amazon S3 où `zipped_code_dir` doit être téléchargé
+ `script` – Chemin d'accès du fichier script de la fonction Lambda

L'exemple suivant montre comment créer une définition d'étape `Lambda` qui appelle une fonction Lambda existante.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
        function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda"
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

L’exemple suivant montre comment créer une définition d’étape `Lambda` qui appelle une fonction Lambda existante.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
      function_name="split-dataset-lambda",
      execution_role_arn=execution_role_arn,
      script="lambda_script.py",
      handler="lambda_script.lambda_handler",
      ...
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

**Entrées et sorties**

Si votre fonction `Lambda` a des entrées ou des sorties, elles doivent également être définies dans votre étape `Lambda`.

**Note**  
Les paramètres d'entrée et de sortie ne doivent pas être imbriqués. Par exemple, si vous utilisez un dictionnaire imbriqué comme paramètre de sortie, le dictionnaire est traité comme une chaîne unique (par ex. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Si vous fournissez une valeur imbriquée et que vous essayez d'y faire référence ultérieurement, une erreur client non réessayable est renvoyée.

Lors de la définition de l’étape `Lambda`, `inputs` doit être un dictionnaire de paires clé-valeur. Chaque valeur du dictionnaire `inputs` doit être de type primitif (chaîne, entier ou flottante). Les objets imbriqués ne sont pas pris en charge. Si elle n'est pas définie, la valeur `inputs` est définie par défaut sur `None`.

La valeur `outputs` doit être une liste de clés. Ces clés font référence à un dictionnaire défini dans la sortie de la fonction `Lambda`. Comme `inputs`, ces clés doivent être de type primitif et les objets imbriqués ne sont pas pris en charge.

**Délai d’expiration et comportement d’arrêt**

La classe `Lambda` a un argument `timeout` qui spécifie la durée maximale d'exécution de la fonction Lambda. La valeur par défaut est de 120 secondes, avec une valeur maximum de 10 minutes. Si la fonction Lambda est en cours d'exécution lorsque le délai d'expiration est atteint, l'étape Lambda échoue. Cependant, la fonction Lambda continue de s'exécuter.

Un processus de pipeline ne peut pas être arrêté pendant qu’une étape Lambda est en cours d’exécution, car la fonction Lambda invoquée par l’étape Lambda ne peut pas être arrêtée. Si vous arrêtez le processus pendant que la fonction Lambda est en cours d’exécution, le pipeline attend que la fonction se termine ou que le délai d’expiration soit atteint. Cela dépend de la première éventualité. Le processus s’arrête alors. Si la fonction Lambda se termine, le statut de processus du pipeline est `Stopped`. Si le délai d'expiration est atteint, le statut de processus du pipeline est `Failed`.

## ClarifyCheck étape
<a name="step-type-clarify-check"></a>

Vous pouvez utiliser l’étape `ClarifyCheck` afin d’effectuer des vérifications de dérive de référence par rapport aux références précédentes pour l’analyse de biais et l’explicabilité de modèle. Vous pouvez ensuite générer et [enregistrer vos références](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) avec la méthode `model.register()` et transmettre la sortie de cette méthode à [Étape du modèle](#step-type-model) en utilisant `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`. Ces lignes de base pour le contrôle de dérive peuvent être utilisées par Amazon SageMaker Model Monitor pour les points de terminaison de votre modèle. Par conséquent, il n’est pas nécessaire de faire une suggestion [de référence](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) séparément. 

L’étape `ClarifyCheck` peut également extraire des références pour la vérification de dérive à partir du registre de modèles. L'`ClarifyCheck`étape utilise le conteneur préconstruit SageMaker Clarify. Ce conteneur fournit diverses fonctions de surveillance de modèles, y compris des fonctions de suggestion de contraintes et de validation de contraintes par rapport à une référence donnée. Pour de plus amples informations, veuillez consulter [Conteneurs SageMaker Clarify préfabriqués](clarify-processing-job-configure-container.md).

### Configuration de l' ClarifyCheck étape
<a name="configuring-step-type-clarify"></a>

Vous pouvez configurer l’étape `ClarifyCheck` pour effectuer l’un des types de vérification suivants chaque fois qu’il est utilisé dans un pipeline.
+ Vérification de biais des données
+ Vérification de biais de modèle
+ Vérification d’explicabilité de modèle

Pour ce faire, définissez le paramètre `clarify_check_config` avec l’une des valeurs de type de vérification suivantes :
+ `DataBiasCheckConfig`
+ `ModelBiasCheckConfig`
+ `ModelExplainabilityCheckConfig`

L'`ClarifyCheck`étape lance une tâche de traitement qui exécute le conteneur SageMaker prédéfini AI Clarify et nécessite des [configurations dédiées pour la vérification et la tâche de traitement](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-configure-processing-jobs.html). `ClarifyCheckConfig`et `CheckJobConfig` sont des fonctions d'assistance pour ces configurations. Ces fonctions d'assistance sont alignées sur la façon dont la tâche de traitement SageMaker Clarify calcule pour vérifier le biais du modèle, le biais des données ou l'explicabilité du modèle. Pour de plus amples informations, veuillez consulter [Exécutez des tâches de traitement SageMaker Clarify pour l'analyse des biais et l'explicabilité](clarify-processing-job-run.md). 

### Contrôle des comportements d’étape pour la vérification de dérive
<a name="controlling-step-type-clarify"></a>

L’étape `ClarifyCheck` nécessite les deux indicateurs booléens suivants pour le contrôle de son comportement :
+ `skip_check` : ce paramètre indique si la vérification de dérive par rapport à la référence précédente est ignorée ou non. S'il est défini sur `False`, la référence précédente du type de contrôle configuré doit être disponible.
+ `register_new_baseline` : ce paramètre indique si une référence recalculée est accessible via la propriété `BaselineUsedForDriftCheckConstraints` de l'étape. S'il est défini sur `False`, la référence précédente du type de contrôle configuré doit également être disponible. Vous pouvez y accéder via la propriété `BaselineUsedForDriftCheckConstraints`. 

Pour de plus amples informations, veuillez consulter [Calcul de référence, détection de la dérive et cycle de vie avec Amazon SageMaker Pipelines ClarifyCheck et QualityCheck étapes](pipelines-quality-clarify-baseline-lifecycle.md).

### Utilisation des références
<a name="step-type-clarify-working-with-baselines"></a>

Le cas échéant, vous pouvez spécifier l’élément `model_package_group_name` pour localiser la référence existante. Ensuite, l’étape `ClarifyCheck` tire (pull) l’élément `DriftCheckBaselines` sur le dernier package de modèle approuvé dans le groupe de packages de modèle. 

Vous pouvez également fournir une référence précédente via le paramètre `supplied_baseline_constraints`. Si vous spécifiez le `model_package_group_name` et les `supplied_baseline_constraints`, l’étape `ClarifyCheck` utilise la référence spécifiée par le paramètre `supplied_baseline_constraints`.

Pour plus d'informations sur l'utilisation des exigences relatives aux `ClarifyCheck` étapes, consultez le document [sagemaker.workflow.steps. ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.clarify_check_step.ClarifyCheckStep)dans le *SDK Amazon SageMaker SageMaker AI AI pour Python*. Pour un bloc-notes Amazon SageMaker Studio Classic expliquant comment utiliser `ClarifyCheck` step dans Pipelines, consultez [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb).

**Example Créer une étape `ClarifyCheck` pour la vérification du biais de données**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_bias_data_config = DataConfig(
    s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep']),
    label=0,
    dataset_type="text/csv",
    s3_analysis_config_output_path=data_bias_analysis_cfg_output_path,
)

data_bias_config = BiasConfig(
    label_values_or_threshold=[15.0], facet_name=[8], facet_values_or_threshold=[[0.5]]  
)

data_bias_check_config = DataBiasCheckConfig(
    data_config=data_bias_data_config,
    data_bias_config=data_bias_config,
)h

data_bias_check_step = ClarifyCheckStep(
    name="DataBiasCheckStep",
    clarify_check_config=data_bias_check_config,
    check_job_config=check_job_config,
    skip_check=False,
    register_new_baseline=False
   supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## QualityCheck étape
<a name="step-type-quality-check"></a>

Utilisez l’étape `QualityCheck` pour effectuer des [suggestions de référence](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) et des vérifications de dérive par rapport à une référence précédente pour la qualité des données ou la qualité du modèle dans un pipeline. Vous pouvez ensuite générer et [enregistrer vos références](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) avec la méthode `model.register()` et transmettre la sortie de cette méthode à [Étape du modèle](#step-type-model) en utilisant `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`. ]

Model Monitor peut utiliser ces références pour la vérification de dérive pour les points de terminaison de votre modèle, de sorte que vous n’avez pas besoin d’effectuer une suggestion de référence séparément. L’étape `QualityCheck` peut également extraire des références pour la vérification de dérive à partir du registre de modèles. Cette `QualityCheck` étape utilise le conteneur prédéfini Amazon SageMaker AI Model Monitor. Ce conteneur propose diverses fonctionnalités de surveillance de modèles, y compris la suggestion de contraintes, la génération de statistiques et la validation de contraintes par rapport à une référence. Pour de plus amples informations, veuillez consulter [Conteneur préfabriqué Amazon SageMaker Model Monitor](model-monitor-pre-built-container.md).

### Configuration de l' QualityCheck étape
<a name="configuring-step-type-quality"></a>

Vous pouvez configurer l’étape `QualityCheck` pour effectuer seulement l’un des types de vérification suivants chaque fois qu’elle est utilisée dans un pipeline.
+ Vérification de la qualité des données
+ Vérification de la qualité du modèle

Pour ce faire, définissez le paramètre `quality_check_config` avec l'une des valeurs de type de vérification suivantes :
+ `DataQualityCheckConfig`
+ `ModelQualityCheckConfig`

L’étape `QualityCheck` lance une tâche de traitement qui exécute le conteneur prédéfini Model Monitor et nécessite des configurations dédiées pour la vérification et la tâche de traitement. `QualityCheckConfig` et `CheckJobConfig` sont des fonctions d’assistance pour ces configurations. Ces fonctions d’assistance sont alignées sur la façon dont Model Monitor crée une référence pour la surveillance de la qualité du modèle ou de la qualité des données. Pour plus d’informations sur les suggestions de référence Model Monitor, consultez [Création d’une référence](model-monitor-create-baseline.md) et [Création d’une référence de qualité des modèles](model-monitor-model-quality-baseline.md).

### Contrôle des comportements d’étape pour la vérification de dérive
<a name="controlling-step-type-quality"></a>

L'étape `QualityCheck` nécessite les deux indicateurs booléens suivants pour le contrôle de son comportement :
+ `skip_check` : ce paramètre indique si la vérification de dérive par rapport à la référence précédente est ignorée ou non. S'il est défini sur `False`, la référence précédente du type de contrôle configuré doit être disponible.
+ `register_new_baseline` : ce paramètre indique si une référence recalculée est accessible via les propriétés `BaselineUsedForDriftCheckConstraints` et `BaselineUsedForDriftCheckStatistics` de l'étape. S'il est défini sur `False`, la référence précédente du type de contrôle configuré doit également être disponible. Vous pouvez y accéder via les propriétés `BaselineUsedForDriftCheckConstraints` et `BaselineUsedForDriftCheckStatistics`.

Pour de plus amples informations, veuillez consulter [Calcul de référence, détection de la dérive et cycle de vie avec Amazon SageMaker Pipelines ClarifyCheck et QualityCheck étapes](pipelines-quality-clarify-baseline-lifecycle.md).

### Utilisation des références
<a name="step-type-quality-working-with-baselines"></a>

Vous pouvez spécifier une référence précédente directement via les paramètres `supplied_baseline_statistics` et `supplied_baseline_constraints`. Vous pouvez également spécifier `model_package_group_name`, et l’étape `QualityCheck` tire (pull) l’élément `DriftCheckBaselines` sur le dernier package de modèle approuvé dans le groupe de packages de modèle. 

Lorsque vous spécifiez ce qui suit, l’étape `QualityCheck` utilise la référence spécifiée par les `supplied_baseline_constraints` et les `supplied_baseline_statistics` sur le type de vérification de l’étape `QualityCheck`.
+ `model_package_group_name`
+ `supplied_baseline_constraints`
+ `supplied_baseline_statistics`

Pour plus d'informations sur l'utilisation des exigences relatives aux `QualityCheck` étapes, consultez le document [sagemaker.workflow.steps. QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.quality_check_step.QualityCheckStep)dans le *SDK Amazon SageMaker SageMaker AI AI pour Python*. Pour un bloc-notes Amazon SageMaker Studio Classic expliquant comment utiliser `QualityCheck` step dans Pipelines, consultez [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb). 

**Example Créer une étape `QualityCheck` pour la vérification de la qualité des données**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_quality_check_config = DataQualityCheckConfig(
    baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"),
    output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep'])
)

data_quality_check_step = QualityCheckStep(
    name="DataQualityCheckStep",
    skip_check=False,
    register_new_baseline=False,
    quality_check_config=data_quality_check_config,
    check_job_config=check_job_config,
    supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json",
    supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## Étape EMR
<a name="step-type-emr"></a>

Utilisez l'étape [EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html) d'Amazon SageMaker Pipelines pour :
+ traiter les [étapes Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) sur un cluster Amazon EMR en cours d’exécution ;
+ demander au pipeline de créer et de gérer un cluster Amazon EMR pour vous.

Pour plus d’informations sur Amazon EMR, consultez [Bien démarrer avec Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).

L’étape EMR nécessite que l’élément `EMRStepConfig` inclue l’emplacement du fichier JAR utilisé par le cluster Amazon EMR et tous les arguments à transmettre. Vous fournissez également l’ID de cluster Amazon EMR si vous souhaitez exécuter l’étape sur un cluster EMR en cours d’exécution. Vous pouvez également transmettre la configuration du cluster pour exécuter l’étape EMR sur un cluster qu’il crée, gère et résilie pour vous. Les sections suivantes incluent des exemples et des liens vers des exemples de blocs-notes illustrant les deux méthodes.

**Note**  
Les étapes EMR exigent que le rôle transmis à votre pipeline ait des autorisations supplémentaires. Attachez la [politique gérée par AWS  : `AmazonSageMakerPipelinesIntegrations`](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-pipelines.html#security-iam-awsmanpol-AmazonSageMakerPipelinesIntegrations) à votre rôle de pipeline, ou assurez-vous que le rôle inclut les autorisations de cette politique.
Si vous traitez une étape EMR sur un cluster en cours d’exécution, vous pouvez uniquement utiliser un cluster dans l’un des états suivants :   
`STARTING`
`BOOTSTRAPPING`
`RUNNING`
`WAITING`
Si vous traitez les étapes EMR sur un cluster en cours d’exécution, vous pouvez avoir au maximum 256 étapes EMR dans un état `PENDING` sur un cluster EMR. Les étapes EMR soumises au-delà de cette limite entraînent l'échec de l'exécution du pipeline. Vous pouvez envisager d’utiliser [Politique de nouvelle tentative pour les étapes du pipeline](pipelines-retry-policy.md).
Vous pouvez spécifier l'ID ou la configuration du cluster, mais pas les deux.
L'étape EMR repose sur Amazon EventBridge pour surveiller les modifications de l'étape EMR ou de l'état du cluster. Si vous traitez votre tâche Amazon EMR sur un cluster en cours d’exécution, l’étape EMR utilise la règle `SageMakerPipelineExecutionEMRStepStatusUpdateRule` pour surveiller son état. Si vous traitez votre tâche sur un cluster créé par l’étape EMR, l’étape utilise la règle `SageMakerPipelineExecutionEMRClusterStatusRule` pour surveiller les modifications de l’état du cluster. Si l'une de ces EventBridge règles apparaît dans votre AWS compte, ne la supprimez pas, sinon votre étape EMR risque de ne pas être terminée.

**Ajoutez une étape Amazon EMR à votre pipeline**

Pour ajouter une étape EMR à votre pipeline, procédez comme suit :
+ Ouvrez la console Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ Dans le volet de navigation de gauche, sélectionnez **Pipelines**.
+ Choisissez **Créer**.
+ Choisissez **Vide**.
+ Dans la barre latérale gauche, choisissez **Traiter les données** et faites-le glisser vers le canevas.
+ Dans le canevas, choisissez l’étape **Traiter les données** que vous avez ajoutée.
+ Dans la barre latérale droite, sous mode, choisissez **EMR (**géré).
+ Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètres et Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.fail\$1step. EMRstep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.emr_step.EMRStep).

**Lancement d’une nouvelle tâche sur un cluster Amazon EMR en cours d’exécution**

Si vous lancez une nouvelle tâche sur un cluster Amazon EMR en cours d’exécution, transmettez l’ID du cluster sous forme de chaîne à l’argument `cluster_id` de `EMRStep`. L’exemple suivant illustre cette procédure.

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

step_emr = EMRStep (
    name="EMRSampleStep", # required
    cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster
    step_config=emr_config, # required
    display_name="My EMR Step",
    description="Pipeline step to execute EMR job"
)
```

Pour obtenir un exemple de bloc-notes qui vous guide à travers un exemple complet, consultez [Pipelines EMR Step With Running EMR Cluster](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-running-emr-cluster.ipynb).

**Lancement d’une nouvelle tâche sur un nouveau cluster Amazon EMR**

Pour lancer une nouvelle tâche sur un nouveau cluster créé pour vous par `EMRStep`, fournissez la configuration de votre cluster sous forme de dictionnaire. Le dictionnaire doit avoir la même structure qu'une [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html)demande. Toutefois, n’incluez pas les champs suivants dans la configuration de votre cluster :
+ [`Name`]
+ [`Steps`]
+ [`AutoTerminationPolicy`]
+ [`Instances`][`KeepJobFlowAliveWhenNoSteps`]
+ [`Instances`][`TerminationProtected`]

Tous les autres arguments `RunJobFlow` peuvent être utilisés dans votre configuration de cluster. Pour plus de détails sur la syntaxe des demandes, consultez [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html).

L’exemple suivant transmet une configuration de cluster à une définition d’étape EMR. Cela invite l’étape à lancer une nouvelle tâche sur un nouveau cluster EMR. Dans cet exemple, la configuration du cluster EMR inclut des spécifications pour les nœuds primaires et principaux du cluster EMR. Pour plus d’informations sur les types de nœuds Amazon EMR, consultez [Comprendre les types de nœuds : nœuds primaires, principaux et de tâches](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html).

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_step_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

# include your cluster configuration as a dictionary
emr_cluster_config = {
    "Applications": [
        {
            "Name": "Spark", 
        }
    ],
    "Instances":{
        "InstanceGroups":[
            {
                "InstanceRole": "MASTER",
                "InstanceCount": 1,
                "InstanceType": "m5.2xlarge"
            },
            {
                "InstanceRole": "CORE",
                "InstanceCount": 2,
                "InstanceType": "m5.2xlarge"
            }
        ]
    },
    "BootstrapActions":[],
    "ReleaseLabel": "emr-6.6.0",
    "JobFlowRole": "job-flow-role",
    "ServiceRole": "service-role"
}

emr_step = EMRStep(
    name="emr-step",
    cluster_id=None,
    display_name="emr_step",
    description="MyEMRStepDescription",
    step_config=emr_step_config,
    cluster_config=emr_cluster_config
)
```

Pour obtenir un exemple de bloc-notes qui vous guide à travers un exemple complet, consultez [Pipelines EMR Step With Cluster Lifecycle Management](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-cluster-lifecycle-management.ipynb).

## Étape EMR sans serveur
<a name="step-type-serverless"></a>

Pour ajouter une étape EMR sans serveur à votre pipeline, procédez comme suit :
+ Ouvrez la console Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ Dans le volet de navigation de gauche, sélectionnez **Pipelines**.
+ Choisissez **Créer**.
+ Choisissez **Vide**.
+ Dans la barre latérale gauche, choisissez **Traiter les données** et faites-le glisser vers le canevas.
+ Dans le canevas, choisissez l’étape **Traiter les données** que vous avez ajoutée.
+ Dans la barre latérale droite, sous mode, choisissez **EMR (**serverless).
+ Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètres et Détails**.

## Étape Tâche de bloc-notes
<a name="step-type-notebook-job"></a>

Utilisez a `NotebookJobStep` pour exécuter votre SageMaker Notebook Job de manière non interactive en tant qu'étape du pipeline. Si vous créez votre pipeline dans l' drag-and-dropinterface utilisateur de Pipelines, utilisez-le [Étape Exécuter le code](#step-type-executecode) pour exécuter votre bloc-notes. Pour plus d'informations sur SageMaker Notebook Jobs, consultez[SageMaker Emplois sur ordinateur portable](notebook-auto-run.md).

Un élément `NotebookJobStep` nécessite au minimum un bloc-notes d’entrée, une URI d’image et un nom de noyau. Pour plus d'informations sur les exigences relatives aux étapes de Notebook Job et sur les autres paramètres que vous pouvez définir pour personnaliser votre étape, consultez [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep).

L’exemple suivant utilise un minimum d’arguments pour définir une `NotebookJobStep`.

```
from sagemaker.workflow.notebook_job_step import NotebookJobStep


notebook_job_step = NotebookJobStep(
    input_notebook=input_notebook,
    image_uri=image_uri,
    kernel_name=kernel_name
)
```

L'étape de votre `NotebookJobStep` pipeline est traitée comme une tâche de SageMaker carnet de notes. Par conséquent, suivez le statut d’exécution dans le tableau de bord des tâches de bloc-notes de l’interface utilisateur de Studio Classic en incluant des balises spécifiques avec l’argument `tags`. Pour plus d’informations sur les balises à inclure, consultez [Visualisation de vos tâches de bloc-notes dans le tableau de bord de l’interface utilisateur de Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

De plus, si vous planifiez votre tâche de bloc-notes à l'aide du SDK SageMaker Python, vous ne pouvez spécifier que certaines images pour exécuter votre tâche de bloc-notes. Pour de plus amples informations, veuillez consulter [Contraintes d'image pour les SageMaker tâches de bloc-notes du SDK AI Python](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

## Étape Échec
<a name="step-type-fail"></a>

Utilisez une étape d'échec pour arrêter l'exécution d'Amazon SageMaker Pipelines lorsqu'une condition ou un état souhaité n'est pas atteint. L’étape Échec vous permet également d’entrer un message d’erreur personnalisé, indiquant la cause de l’échec de l’exécution du pipeline.

**Note**  
Lorsqu’une étape Échec et d’autres étapes du pipeline s’exécutent simultanément, le pipeline ne se termine pas tant que toutes les étapes simultanées ne sont pas terminées.

### Limitations liées à l’utilisation de l’étape Échec
<a name="step-type-fail-limitations"></a>
+ Vous ne pouvez pas ajouter d’étape Échec à la liste `DependsOn` d’autres étapes. Pour de plus amples informations, veuillez consulter [Dépendance personnalisée entre étapes](build-and-manage-steps.md#build-and-manage-custom-dependency).
+ Les autres étapes ne peuvent pas faire référence à l’étape Échec. C’est *toujours* la dernière étape de l’exécution d’un pipeline.
+ Vous ne pouvez pas réessayer une exécution de pipeline se terminant par une étape Échec.

Vous pouvez créer l’étape Échec sous la forme d’une chaîne de texte statique. Vous pouvez également utiliser les [Paramètres du pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-parameters.html), une opération de [jointure](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html?highlight=Join#sagemaker.workflow.functions.Join), ou d’autres [propriétés d’étape](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#build-and-manage-properties) pour créer un message d’erreur plus informatif si vous utilisez le kit SDK.

------
#### [ Pipeline Designer ]

Pour ajouter une étape Échec à votre pipeline, procédez comme suit :

1. Ouvrez la console Studio en suivant les instructions figurant dans [Lancez Amazon SageMaker Studio](studio-updated-launch.md).

1. Dans le volet de navigation de gauche, sélectionnez **Pipelines**.

1. Choisissez **Créer**.

1. Choisissez **Vide**.

1. Dans la barre latérale gauche, choisissez **Échec** et faites-le glisser vers le canevas.

1. Dans le canevas, choisissez l’étape **Échec** que vous avez ajoutée.

1. Dans la barre latérale droite, complétez les formulaires dans les onglets **Paramètre** et **Détails**. Pour plus d'informations sur les champs de ces onglets, consultez [sagemaker.workflow.fail\$1step. FailStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.fail_step.FailStep).

1. Si le canevas inclut une étape qui précède immédiatement l’étape **Échec** que vous avez ajoutée, cliquez et faites glisser le curseur de cette étape vers l’étape **Échec** pour créer une périphérie.

1. Si le canevas inclut une étape qui suit immédiatement l’étape **Échec** que vous avez ajoutée, cliquez et faites glisser le curseur de l’étape **Échec** vers cette étape pour créer une périphérie.

------
#### [ SageMaker Python SDK ]

**Example**  
L’exemple d’extrait de code suivant utilise une `FailStep` avec un `ErrorMessage` configuré avec les paramètres du pipeline et une opération de `Join`.  

```
from sagemaker.workflow.fail_step import FailStep
from sagemaker.workflow.functions import Join
from sagemaker.workflow.parameters import ParameterInteger

mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5)
step_fail = FailStep(
    name="AbaloneMSEFail",
    error_message=Join(
        on=" ", values=["Execution failed due to MSE >", mse_threshold_param]
    ),
)
```

------

# Ajouter une intégration
<a name="build-and-manage-steps-integration"></a>

MLflow l'intégration vous permet de l'utiliser MLflow avec des pipelines pour sélectionner un serveur de suivi ou une application sans serveur, choisir une expérience et enregistrer des métriques.

## Concepts clés
<a name="add-integration-key-concepts"></a>

**Création d'applications par** défaut : une MLflow application par défaut est créée lorsque vous entrez dans l'éditeur visuel du pipeline.

**Panneau d'intégrations** - Un nouveau panneau d'intégrations inclut MLflow, que vous pouvez sélectionner et configurer.

**Mettre à jour l'application et expérimenter** : option permettant de remplacer l'application et l'expérience sélectionnées pendant l'exécution du pipeline.

## Comment ça marche
<a name="add-integration-how-it-works"></a>
+ Accédez à l'**éditeur visuel Pipeline**
+ Choisissez **Intégration dans** la barre d'outils
+ Choisissez **MLflow**
+ Configurez l' MLflow application et testez

## Exemples de captures d'écran
<a name="add-integration-example-screenshots"></a>

Panneau latéral des intégrations

![\[La description de la tâche.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/screenshot-pipeline-1.png)


MLflow configuration

![\[La description de la tâche.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/screenshot-pipeline-2.png)


Comment annuler une expérience lors de l'exécution du pipeline

![\[La description de la tâche.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/screenshot-pipeline-3.png)


## Propriétés de l’étape
<a name="build-and-manage-properties"></a>

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'`properties`attribut d'une étape Pipelines correspond à l'objet renvoyé par un `Describe` appel 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 :
+ `ProcessingStep` – [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)
+ `TrainingStep` – [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)
+ `TransformStep` – [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)

Pour vérifier quelles propriétés peuvent être référencées pour chaque type d'étape lors de la création de dépendances de données, consultez *[Data Dependency - Property Reference](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* dans le SDK Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

## Parallélisme d’étapes
<a name="build-and-manage-parallelism"></a>

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
<a name="build-and-manage-data-dependency"></a>

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 une JsonPath notation au format suivant. Ce format traverse le fichier de propriétés JSON. Cela signifie que vous pouvez ajouter autant d'*<property>*instances que nécessaire pour atteindre la propriété imbriquée souhaitée dans le fichier. Pour plus d'informations sur la JsonPath notation, consultez le [JsonPath dépôt.](https://github.com/json-path/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 peuvent être référencées pour chaque type d'étape lors de la création de dépendances de données, consultez *[Data Dependency - Property Reference](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* dans le SDK Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

## Dépendance personnalisée entre étapes
<a name="build-and-manage-custom-dependency"></a>

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
<a name="build-and-manage-images"></a>

 Vous pouvez utiliser n'importe laquelle des [images SageMaker AI Deep Learning Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) 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 l' SageMaker IA, consultez la section [Utilisation de conteneurs Docker avec l' SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html).