

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.

# SageMaker Flux de travail d'IA
<a name="workflows"></a>

Au fur et à mesure que vous développez vos opérations d'apprentissage automatique (ML), vous pouvez utiliser les services de flux de travail entièrement gérés d'Amazon SageMaker AI pour mettre en œuvre des pratiques d'intégration et de déploiement continus (CI/CD) pour votre cycle de vie de machine learning. Avec le kit SDK Pipelines, vous choisissez et intégrez les étapes de pipeline dans une solution unifiée qui automatise le processus de génération de modèles, de la préparation des données au déploiement des modèles. Pour les architectures basées sur Kubernetes, vous pouvez installer des opérateurs SageMaker AI sur votre cluster Kubernetes pour créer SageMaker des tâches d'IA de manière native à l'aide de l'API Kubernetes et d'outils Kubernetes en ligne de commande tels que. `kubectl` Grâce aux composants d' SageMaker IA pour les pipelines Kubeflow, vous pouvez créer et surveiller des tâches d' SageMaker IA natives à partir de vos pipelines Kubeflow. Les paramètres, le statut et les résultats des tâches de l' SageMaker IA sont accessibles depuis l'interface utilisateur de Kubeflow Pipelines. Enfin, si vous souhaitez planifier des tâches par lots, vous pouvez utiliser l'intégration de la file d'attente des tâches ou le service de flux de AWS Batch travail basé sur un bloc-notes Jupyter pour lancer des exécutions autonomes ou régulières selon un calendrier que vous définissez.

En résumé, l' SageMaker IA propose les technologies de flux de travail suivantes :
+ [Pipelines](pipelines.md) : outil de création et de gestion de pipelines de machine learning.
+ [Orchestration Kubernetes](kubernetes-workflows.md): opérateurs personnalisés SageMaker basés sur l'IA pour votre cluster Kubernetes et composants pour Kubeflow Pipelines.
+ [SageMaker Emplois sur ordinateur portable](notebook-auto-run.md) : exécutions par lots non interactives à la demande ou planifiées de votre bloc-notes Jupyter.

Vous pouvez également tirer parti d'autres services intégrés à l' SageMaker IA pour créer votre flux de travail. Les options incluent les services suivants :
+ Flux de [travail Airflow](https://sagemaker.readthedocs.io/en/stable/workflows/airflow/index.html) : SageMaker APIs pour exporter des configurations permettant de créer et de gérer des flux de travail Airflow.
+ [AWS Step Functions](https://sagemaker.readthedocs.io/en/stable/workflows/step_functions/index.html): flux de travail ML en plusieurs étapes en Python qui orchestrent l'infrastructure d' SageMaker IA sans avoir à provisionner vos ressources séparément.
+ [AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html): Soumettez les tâches de formation à l' SageMaker IA à une file d'attente de AWS Batch tâches, où vous pouvez hiérarchiser et planifier les tâches à exécuter dans un environnement informatique.

Pour plus d'informations sur la gestion de la SageMaker formation et de l'inférence, consultez les flux de travail du [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable/workflows/index.html).

**Topics**
+ [Pipelines](pipelines.md)
+ [Orchestration Kubernetes](kubernetes-workflows.md)
+ [SageMaker Emplois sur ordinateur portable](notebook-auto-run.md)
+ [Planification de vos flux de travail ML](workflow-scheduling.md)
+ [AWS Batch soutien aux emplois de formation en SageMaker IA](training-job-queues.md)

# Pipelines
<a name="pipelines"></a>

Amazon SageMaker Pipelines est un service d'orchestration de flux de travail spécialement conçu pour automatiser le développement du machine learning (ML).

Les pipelines offrent les avantages suivants par rapport aux autres offres AWS de flux de travail :

**Infrastructure sans serveur à mise à l'échelle automatique** Vous n'avez pas besoin de gérer l'infrastructure d'orchestration sous-jacente pour exécuter Pipelines, ce qui vous permet de vous concentrer sur les tâches principales du ML. SageMaker L'IA provisionne, fait évoluer et arrête automatiquement les ressources informatiques d'orchestration du pipeline en fonction de votre charge de travail de machine learning.

**Expérience utilisateur intuitive** Les pipelines peuvent être créés et gérés via l'interface de votre choix : éditeur visuel APIs, SDK ou JSON. Vous pouvez suivre drag-and-drop les différentes étapes du ML pour créer vos pipelines dans l'interface visuelle d'Amazon SageMaker Studio. La capture d’écran suivante montre l’éditeur visuel Studio pour les pipelines.

![\[Capture d'écran de l' drag-and-dropinterface visuelle de Pipelines in Studio.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Si vous préférez gérer vos flux de travail ML par programmation, le SDK SageMaker Python propose des fonctionnalités d'orchestration avancées. Pour plus d'informations, consultez [Amazon SageMaker Pipelines](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html) dans la documentation du SDK SageMaker Python.

**AWS intégrations Les** pipelines permettent une intégration fluide avec toutes les fonctionnalités de l' SageMaker IA et les autres AWS services afin d'automatiser le traitement des données, la formation des modèles, le réglage précis, l'évaluation, le déploiement et le suivi des tâches. Vous pouvez intégrer les fonctionnalités d' SageMaker IA dans vos pipelines et les parcourir à l'aide de liens profonds pour créer, surveiller et déboguer vos flux de travail ML à grande échelle.

**Coûts réduits** Avec Pipelines, vous ne payez que pour l'environnement SageMaker Studio et les tâches sous-jacentes orchestrées par Pipelines (par exemple, la SageMaker formation, le SageMaker traitement, l'inférence par l' SageMaker IA et le stockage de données Amazon S3).

**Auditabilité et suivi de la traçabilité** Avec les pipelines, vous pouvez suivre l’historique des mises à jour et des exécutions des pipelines à l’aide de la gestion des versions intégrée. Amazon SageMaker ML Lineage Tracking vous aide à analyser les sources de données et les consommateurs de données au cours du cycle de développement du end-to-end ML.

**Topics**
+ [Présentation des pipelines](pipelines-overview.md)
+ [Actions de pipeline](pipelines-build.md)

# Présentation des pipelines
<a name="pipelines-overview"></a>

Un pipeline Amazon SageMaker AI est une série d'étapes interconnectées dans un graphe acyclique dirigé (DAG) définies à l'aide de l' drag-and-dropinterface utilisateur ou du [SDK Pipelines](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html). Vous pouvez également générer votre pipeline à l’aide du [schéma JSON de définition de pipeline](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). Cette définition JSON de graphique DAG fournit des informations sur les exigences de chaque étape de votre pipeline et les relations entre ces étapes. La structure du DAG d’un pipeline est déterminée par les dépendances de données entre les étapes. Ces dépendances de données sont créées lorsque les propriétés de la sortie d'une étape sont passées en tant qu'entrée à une autre étape. L’image suivante est un exemple de DAG de pipeline :

![\[\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/pipeline-full.png)


**Cet exemple de graphique DAG comprend les étapes suivantes :**

1. `AbaloneProcess`, une instance de l’étape [Traitement](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), exécute un script de prétraitement sur les données utilisées pour l’entraînement. Par exemple, le script peut remplir les valeurs manquantes, normaliser les données numériques ou diviser les données entre les jeux de données d’entraînement, de validation et de test.

1. `AbaloneTrain`, une instance de l’étape [Entraînement](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-training), configure les hyperparamètres et entraîne un modèle à partir des données d’entrée prétraitées.

1. `AbaloneEval`, une autre instance de l’étape [Traitement](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), évalue l’exactitude du modèle. Cette étape montre un exemple de dépendance des données : elle utilise la sortie du jeu de données de test de `AbaloneProcess`.

1. `AbaloneMSECond`est une instance d'une étape [Condition](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-condition) qui, dans cet exemple, vérifie que le mean-square-error résultat de l'évaluation du modèle est inférieur à une certaine limite. Si le modèle ne répond pas aux critères, l’exécution du pipeline s’arrête.

1. L’exécution du pipeline continue avec les étapes suivantes :

   1. `AbaloneRegisterModel`, où SageMaker AI lance une [RegisterModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-register-model)étape pour enregistrer le modèle en tant que groupe de packages de modèles versionnés dans l'Amazon SageMaker Model Registry.

   1. `AbaloneCreateModel`, où l' SageMaker IA appelle une [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-create-model)étape pour créer le modèle en vue de la transformation par lots. Dans`AbaloneTransform`, SageMaker AI appelle une étape de [transformation](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-transform) pour générer des prédictions de modèle sur un ensemble de données que vous spécifiez.

Les rubriques suivantes décrivent les concepts fondamentaux des pipelines. Pour obtenir un tutoriel décrivant l’implémentation de ces concepts, consultez [Actions de pipeline](pipelines-build.md).

**Topics**
+ [Structure et exécution du pipeline](build-and-manage-pipeline.md)
+ [Gestion d'accès IAM](build-and-manage-access.md)
+ [Configuration de la prise en charge entre comptes pour Pipelines](build-and-manage-xaccount.md)
+ [Paramètres du pipeline](build-and-manage-parameters.md)
+ [Étapes du pipeline](build-and-manage-steps.md)
+ [Lift-and-shift Code Python avec le décorateur @step](pipelines-step-decorator.md)
+ [Transmission de données entre les étapes](build-and-manage-propertyfile.md)
+ [Mise en cache des étapes du pipeline](pipelines-caching.md)
+ [Politique de nouvelle tentative pour les étapes du pipeline](pipelines-retry-policy.md)
+ [Exécution sélective des étapes d’un pipeline](pipelines-selective-ex.md)
+ [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)
+ [Planification d’exécutions d’un pipeline](pipeline-eventbridge.md)
+ [Amazon SageMaker expérimente l'intégration](pipelines-experiments.md)
+ [Exécution de pipelines en mode local](pipelines-local-mode.md)
+ [Résolution des problèmes liés à Amazon SageMaker Pipelines](pipelines-troubleshooting.md)

# Structure et exécution du pipeline
<a name="build-and-manage-pipeline"></a>

**Topics**
+ [Structure du pipeline](#build-and-manage-pipeline-structure)
+ [Exécution de pipelines à l’aide de la configuration de parallélisme](#build-and-manage-pipeline-execution)

## Structure du pipeline
<a name="build-and-manage-pipeline-structure"></a>

Une instance Amazon SageMaker Pipelines est composée d'un `name``parameters`, et`steps`. Les noms des pipelines doivent être uniques au sein d’une paire `(account, region)`. Tous les paramètres utilisés dans les définitions d’étapes doivent être définis dans le pipeline. Les étapes du pipeline répertoriées déterminent automatiquement leur ordre d’exécution en fonction de leurs dépendances de données les unes par rapport aux autres. Le service Pipelines résout les relations entre les étapes présentes dans le graphique DAG de dépendance des données afin de créer une série d’étapes que l’exécution effectue. Voici un exemple de structure de pipeline.

**Avertissement**  
Lorsque vous créez un pipeline via l'éditeur visuel ou le SDK SageMaker AI Python, n'incluez aucune information sensible dans les paramètres du pipeline ni dans aucun champ de définition d'étape (comme les variables d'environnement). Ces champs seront visibles à l’avenir lorsqu’ils seront renvoyés dans une demande `DescribePipeline`.

```
from sagemaker.workflow.pipeline import Pipeline
  
  pipeline_name = f"AbalonePipeline"
  pipeline = Pipeline(
      name=pipeline_name,
      parameters=[
          processing_instance_type, 
          processing_instance_count,
          training_instance_type,
          model_approval_status,
          input_data,
          batch_data,
      ],
      steps=[step_process, step_train, step_eval, step_cond],
  )
```

## Exécution de pipelines à l’aide de la configuration de parallélisme
<a name="build-and-manage-pipeline-execution"></a>

Par défaut, un pipeline effectue toutes les étapes pouvant être exécutées en parallèle. Vous pouvez contrôler ce comportement à l'aide de la propriété `ParallelismConfiguration` lors de la création ou de la mise à jour d'un pipeline, ainsi que lors du démarrage ou de la nouvelle tentative d'exécution d'un pipeline. 

Les configurations de parallélisme sont appliquées par exécution. Par exemple, si deux exécutions sont démarrées, elles peuvent chacune exécuter un maximum de 50 étapes simultanément, pour un total de 100 étapes exécutées simultanément. De plus, la ou les `ParallelismConfiguration`(s) spécifiées lors du démarrage, de la nouvelle tentative ou de la mise à jour d'une exécution sont prioritaires par rapport aux configurations de parallélisme définies dans le pipeline.

**Example Création d’une exécution de pipeline avec `ParallelismConfiguration`**  

```
pipeline = Pipeline(
        name="myPipeline",
        steps=[step_process, step_train]
    )

  pipeline.create(role, parallelism_config={"MaxParallelExecutionSteps": 50})
```

# Gestion d'accès IAM
<a name="build-and-manage-access"></a>

Les sections suivantes décrivent les exigences Gestion des identités et des accès AWS (IAM) pour Amazon SageMaker Pipelines. Pour obtenir un exemple de la façon dont vous pouvez implémenter ces autorisations, consultez [Conditions préalables](define-pipeline.md#define-pipeline-prereq).

**Topics**
+ [Autorisations de rôle de pipeline](#build-and-manage-role-permissions)
+ [Autorisations d’étape de pipeline](#build-and-manage-step-permissions)
+ [Configuration CORS avec des compartiments Amazon S3](#build-and-manage-cors-s3)
+ [Personnalisation de la gestion des accès pour les tâches de pipelines](#build-and-manage-step-permissions-prefix)
+ [Personnalisation de l’accès aux versions d’un pipeline](#build-and-manage-step-permissions-version)
+ [Politiques de contrôle des services avec les pipelines](#build-and-manage-scp)

## Autorisations de rôle de pipeline
<a name="build-and-manage-role-permissions"></a>

Votre pipeline nécessite un rôle d'exécution de pipeline IAM qui est transmis à Pipelines lorsque vous créez un pipeline. Le rôle de l'instance d' SageMaker IA que vous utilisez pour créer le pipeline doit avoir une politique avec l'`iam:PassRole`autorisation qui spécifie le rôle d'exécution du pipeline. Cela est dû au fait que l'instance a besoin d'une autorisation pour transmettre votre rôle d'exécution de pipeline au service Pipelines afin de l'utiliser pour créer et exécuter des pipelines. Pour plus d’informations sur les rôles IAM, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

Votre rôle d’exécution de pipeline nécessite les autorisations suivantes :
+ Vous pouvez utiliser un rôle unique ou personnalisé pour chacune des étapes d'une tâche d' SageMaker IA de votre pipeline (plutôt que le rôle d'exécution du pipeline, qui est utilisé par défaut). Assurez-vous que votre rôle d'exécution de pipeline a ajouté une politique avec l'`iam:PassRole`autorisation qui spécifie chacun de ces rôles.
+  Les autorisations `Create` et `Describe` pour chacun des types de tâches dans le pipeline. 
+  Autorisations Amazon S3 pour l'utilisation de la fonction `JsonGet`. Vous contrôlez l’accès à vos ressources Amazon S3 à l’aide de politiques basées sur les ressources et de politiques basées sur l’identité. Une politique basée sur les ressources est appliquée à votre compartiment Amazon S3 et accorde à Pipelines l’accès au compartiment. Une politique basée sur l’identité permet à votre pipeline de passer des appels Amazon S3 à partir de votre compte. Pour plus d’informations sur les politiques basées sur l’identité et les politiques basées sur les ressources, consultez [Politiques basées sur l’identité et politiques basées sur une ressource](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html). 

  ```
  {
      "Action": [
          "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::<your-bucket-name>/*",
      "Effect": "Allow"
  }
  ```

## Autorisations d’étape de pipeline
<a name="build-and-manage-step-permissions"></a>

Les pipelines incluent des étapes qui exécutent des tâches d' SageMaker IA. Pour que les étapes de pipeline puissent exécuter ces tâches, elles nécessitent un rôle IAM dans votre compte qui fournit l’accès à la ressource nécessaire. Ce rôle est transmis au responsable du service SageMaker AI par votre pipeline. Pour plus d’informations sur les rôles IAM, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). 

Par défaut, chaque étape assume le rôle d'exécution du pipeline. Vous pouvez éventuellement transmettre un rôle différent à l'une des étapes de votre pipeline. Cela garantit que le code de chaque étape n'a pas la capacité d'affecter les ressources utilisées dans d'autres étapes, sauf s'il existe une relation directe entre les deux étapes spécifiées dans la définition du pipeline. Vous passez ces rôles lors de la définition du processeur ou de l’estimateur de votre étape. Pour des exemples expliquant comment inclure ces rôles dans ces définitions, consultez la [documentation du SDK SageMaker AI Python](https://sagemaker.readthedocs.io/en/stable/overview.html#using-estimators). 

## Configuration CORS avec des compartiments Amazon S3
<a name="build-and-manage-cors-s3"></a>

Pour garantir que vos images sont importées dans vos pipelines à partir d’un compartiment Amazon S3 de manière prévisible, une configuration CORS doit être ajoutée aux compartiments Amazon S3 d’où les images sont importées. Cette section fournit des instructions de définition de la configuration CORS requise pour votre compartiment Amazon S3. L’élément `CORSConfiguration` XML requis pour les pipelines est différent de celui figurant dans [Exigence CORS pour les données d’image d’entrée](sms-cors-update.md), sinon vous pouvez utiliser les informations qui s’y trouvent pour en savoir plus sur l’exigence CORS relative aux compartiments Amazon S3.

Utilisez le code de configuration CORS suivant pour les compartiments Amazon S3 qui hébergent vos images. Pour obtenir des instructions de configuration CORS, consultez [Configuration du partage des ressources entre origines multiples (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html) dans le Guide de l’utilisateur Amazon Simple Storage Service. Si vous utilisez la console Amazon S3 pour ajouter la stratégie à votre compartiment, vous devez utiliser le format JSON.

**JSON**

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedHeader>*</AllowedHeader>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

Le fichier GIF suivant présente les instructions contenues dans la documentation Amazon S3 pour ajouter une stratégie d’en-tête CORS à l’aide de la console Amazon S3.

![\[Fichier GIF illustrant comment ajouter une stratégie d’en-tête CORS à l’aide de la console Amazon S3.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


## Personnalisation de la gestion des accès pour les tâches de pipelines
<a name="build-and-manage-step-permissions-prefix"></a>

Vous pouvez personnaliser davantage vos politiques IAM afin que les membres sélectionnés de votre organisation puissent exécuter une ou toutes les étapes de pipeline. Par exemple, vous pouvez autoriser certains utilisateurs à créer des tâches d'entraînement, autoriser un autre groupe d'utilisateurs à créer des tâches de traitement et autoriser tous vos utilisateurs à exécuter les étapes restantes. Pour utiliser cette fonctionnalité, vous devez sélectionner une chaîne personnalisée qui préfixe votre nom de tâche. Votre administrateur ajoute le préfixe autorisé ARNs au préfixe tandis que votre data scientist inclut ce préfixe dans les instanciations de pipeline. Étant donné que la politique IAM pour les utilisateurs autorisés contient un ARN de tâche avec le préfixe spécifié, les tâches suivantes de votre étape de pipeline disposent des autorisations nécessaires pour continuer. Le préfixage des tâches est désactivé par défaut. Vous devez activer cette option dans votre classe `Pipeline` pour pouvoir l'utiliser. 

Pour les tâches dont le préfixage est désactivé, le nom de tâche est formaté comme indiqué et est une concaténation des champs décrits dans le tableau suivant :

`pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>`


| Champ | Définition | 
| --- | --- | 
|  pipelines   |  Chaîne statique toujours ajoutée au début. Cette chaîne identifie le service d'orchestration de pipeline comme source de la tâche.  | 
|  executionId  |  Mémoire tampon aléatoire pour l'instance d'exécution du pipeline.  | 
|  stepNamePrefix  |  Nom d'étape spécifié par l'utilisateur (indiqué dans l'argument `name` de l'étape du pipeline), limité aux 20 premiers caractères.  | 
|  entityToken  |  Jeton aléatoire pour garantir l'idempotence de l'entité d'étape.  | 
|  failureCount  |  Nombre actuel de nouvelles tentatives pour terminer la tâche.  | 

Dans ce cas, aucun préfixe personnalisé n'est ajouté au nom de la tâche et la politique IAM correspondante doit correspondre à cette chaîne.

Pour les utilisateurs qui activent le préfixage de tâche, le nom de tâche sous-jacent prend la forme suivante, le préfixe personnalisé étant spécifié en tant que `MyBaseJobName` :

*<MyBaseJobName>*-*<executionId>*-*<entityToken>*-*<failureCount>*

Le préfixe personnalisé remplace la `pipelines` chaîne statique pour vous aider à affiner la sélection d'utilisateurs autorisés à exécuter le job SageMaker AI dans le cadre d'un pipeline.

**Restrictions concernant la longueur des préfixes**

Les noms des tâches sont soumis à des contraintes de longueur internes spécifiques aux étapes de pipeline individuelles. Cette contrainte limite également la longueur du préfixe autorisé. Les exigences relatives à la longueur du préfixe sont les suivantes :


| Étape de pipeline | Longueur du préfixe | 
| --- | --- | 
|   `[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`, `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`, `[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`, `[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`, `[ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)`, `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)`, `[RegisterModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`   |  38  | 
|  `[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`, `[AutoML](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`  |  6  | 

### Application de préfixes de tâche à une politique IAM
<a name="build-and-manage-step-permissions-prefix-iam"></a>

Votre administrateur crée des politiques IAM permettant aux utilisateurs de préfixes spécifiques de créer des tâches. L'exemple de politique suivant permet aux scientifiques des données de créer des tâches d'entraînement s'ils utilisent le préfixe `MyBaseJobName`. 

```
{
    "Action": "sagemaker:CreateTrainingJob",
    "Effect": "Allow",
    "Resource": [
        "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*"
    ]
}
```

### Application de préfixes de tâche aux instanciations de pipeline
<a name="build-and-manage-step-permissions-prefix-inst"></a>

Vous spécifiez votre préfixe avec l'argument `*base_job_name` de la classe d'instances de tâche.

**Note**  
Vous transmettez votre préfixe de tâche avec l'argument `*base_job_name` à l'instance de tâche avant de créer une étape de pipeline. Cette instance de tâche contient les informations nécessaires pour que la tâche s'exécute en tant qu'étape d'un pipeline. Cet argument varie en fonction de l'instance de tâche utilisée. La liste suivante indique l'argument à utiliser pour chaque type d'étape de pipeline :  
`base_job_name` pour les classes `[Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html)` (`[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`), `[Processor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html)` (`[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`) et `[AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html)` (`[AutoMLStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`)
`tuning_base_job_name` pour la classe `[Tuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)` (`[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`)
`transform_base_job_name` pour la classe `[Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html)` (`[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`)
`base_job_name` ou `[CheckJobConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#checkjobconfig)` pour les classes `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)` (Vérification de la qualité) et `[ClarifyCheckstep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)` (Vérification Clarify)
Pour la classe `[Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html)`, l'argument utilisé diffère si vous exécutez `create` ou `register` sur votre modèle avant de transmettre le résultat à `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`.  
Si vous appelez `create`, le préfixe personnalisé provient de l'argument `name` lorsque vous construisez votre modèle (c'est-à-dire, `Model(name=)`)
Si vous appelez `register`, le préfixe personnalisé provient de l'argument `model_package_name` de votre appel à `register` (c'est-à-dire, `my_model.register(model_package_name=)`)

L'exemple suivant montre comment spécifier un préfixe pour une nouvelle instance de tâche d'entraînement.

```
# Create a job instance
xgb_train = Estimator(
    image_uri=image_uri,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=model_path,
    role=role,
    subnets=["subnet-0ab12c34567de89f0"],
    base_job_name="MyBaseJobName"
    security_group_ids=["sg-1a2bbcc3bd4444e55"],
    tags = [ ... ]
    encrypt_inter_container_traffic=True, 
)

# Attach your job instance to a pipeline step
step_train = TrainingStep(
    name="TestTrainingJob",
    estimator=xgb_train, 
    inputs={
        "train": TrainingInput(...), 
        "validation": TrainingInput(...) 
    }
)
```

Le préfixage de tâche est désactivé par défaut. Pour activer cette fonctionnalité, utilisez l'option `use_custom_job_prefix` de `PipelineDefinitionConfig` comme indiqué dans l'extrait suivant :

```
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
        
# Create a definition configuration and toggle on custom prefixing
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True);

# Create a pipeline with a custom prefix
 pipeline = Pipeline(
     name="MyJobPrefixedPipeline",
     parameters=[...]
     steps=[...]
     pipeline_definition_config=definition_config
)
```

Créez et exécutez votre pipeline. L'exemple suivant crée et exécute un pipeline, et il montre également comment désactiver le préfixage des tâches et réexécuter votre pipeline.

```
pipeline.create(role_arn=sagemaker.get_execution_role())

# Optionally, call definition() to confirm your prefixed job names are in the built JSON
pipeline.definition()
pipeline.start()
      
# To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline 
# via upsert() or update(), and start a new run
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

De même, vous pouvez activer cette fonctionnalité pour les pipelines existants et démarrer une nouvelle exécution utilisant des préfixes de tâche.

```
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Enfin, vous pouvez consulter votre tâche préfixée de façon personnalisée en appelant `list_steps` sur l’exécution du pipeline.

```
steps = execution.list_steps()

prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
```

## Personnalisation de l’accès aux versions d’un pipeline
<a name="build-and-manage-step-permissions-version"></a>

Vous pouvez accorder un accès personnalisé à des versions spécifiques d'Amazon SageMaker Pipelines à l'aide de la clé de `sagemaker:PipelineVersionId` condition. Par exemple, la politique ci-dessous autorise l’accès pour démarrer des exécutions ou mettre à jour la version du pipeline uniquement pour les ID de version 6 et ultérieurs.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowStartPipelineExecution",
        "Effect": "Allow",
        "Action": [
            "sagemaker:StartPipelineExecution",
            "sagemaker:UpdatePipelineVersion"
        ],
        "Resource": "*",
        "Condition": {
            "NumericGreaterThanEquals": {
                "sagemaker:PipelineVersionId": 6
            }
        }
    }
}
```

------

Pour plus d'informations sur les clés de condition prises en charge, consultez [Clés de condition pour Amazon SageMaker AI](https://docs.aws.amazon.com//service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys).

## Politiques de contrôle des services avec les pipelines
<a name="build-and-manage-scp"></a>

Les politiques de contrôle des services (SCPs) sont un type de politique d'organisation que vous pouvez utiliser pour gérer les autorisations au sein de votre organisation. SCPs offrez un contrôle centralisé sur le maximum d'autorisations disponibles pour tous les comptes de votre organisation. En utilisant des pipelines au sein de votre organisation, vous pouvez vous assurer que les data scientists gèrent les exécutions de vos pipelines sans avoir à interagir avec la AWS console. 

Si vous utilisez un VPC avec votre SCP qui restreint l’accès à Amazon S3, vous devez prendre des mesures pour autoriser votre pipeline à accéder à d’autres ressources Amazon S3. 

Pour permettre à Pipelines d’accéder à Amazon S3 en dehors de votre VPC à l’aide de la fonction `JsonGet`, mettez à jour le SCP de votre organisation pour vous assurer que le rôle utilisant Pipelines peut accéder à Amazon S3. Pour ce faire, créez une exception pour les rôles utilisés par l’exécuteur Pipelines via le rôle d’exécution de pipeline à l’aide d’une balise de principal et d’une clé de condition. 

**Pour autoriser Pipelines à accéder à Amazon S3 en dehors de votre VPC**

1. Créez une balise unique pour votre rôle d’exécution de pipeline en suivant les étapes décrites dans [Balisage des utilisateurs et des rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html). 

1. Accordez une exception dans votre SCP à l'aide de la clé de condition `Aws:PrincipalTag IAM` pour la balise que vous avez créée. Pour plus d’informations, consultez [Création, mise à jour et suppression de politiques de contrôle des services](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html). 

# Configuration de la prise en charge entre comptes pour Pipelines
<a name="build-and-manage-xaccount"></a>

La prise en charge multicompte d'Amazon SageMaker Pipelines vous permet de collaborer sur des pipelines d'apprentissage automatique avec d'autres équipes ou organisations qui opèrent sur AWS des comptes différents. En configurant le partage de pipelines entre comptes, vous pouvez accorder un accès contrôlé aux pipelines, autoriser d’autres comptes à visualiser les détails du pipeline, déclencher des exécutions et surveiller les exécutions. La rubrique suivante explique comment configurer le partage de pipeline entre comptes, les différentes politiques d'autorisation disponibles pour les ressources partagées, et comment accéder et interagir avec des entités de pipeline partagées via des appels d'API directs à l' SageMaker IA.

## Configuration du partage de pipelines entre comptes
<a name="build-and-manage-xaccount-set-up"></a>

SageMaker L'IA utilise [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) (AWS RAM) pour vous aider à partager en toute sécurité les entités de votre pipeline entre les comptes. 

### Création d’un partage de ressources
<a name="build-and-manage-xaccount-set-up-console"></a>

1. Sélectionnez **Create a resource share** (Créer un partage de ressources) via la [console AWS RAM](https://console.aws.amazon.com/ram/home).

1. Lorsque vous spécifiez les détails du partage de ressources, choisissez le type de ressource Pipelines et sélectionnez un ou plusieurs pipelines que vous souhaitez partager. Lorsque vous partagez un pipeline avec un autre compte, toutes ses exécutions sont également partagées implicitement.

1. Associez des autorisations à votre partage de ressources. Choisissez la politique d'autorisation en lecture seule par défaut ou la politique d'autorisation d'exécution de pipeline étendue. Pour en savoir plus, consultez [Politiques d’autorisation pour les ressources Pipelines](#build-and-manage-xaccount-permissions). 
**Note**  
Si vous sélectionnez la politique d'exécution étendue du pipeline, notez que toutes les commandes de démarrage, d'arrêt et de nouvelle tentative appelées par des comptes partagés utilisent les ressources du AWS compte qui a partagé le pipeline.

1. Utilisez AWS compte IDs pour spécifier les comptes auxquels vous souhaitez accorder l'accès à vos ressources partagées.

1. Vérifiez la configuration de votre partage de ressources et sélectionnez **Create resource share** (Créer un partage de ressources). Les associations entre le partage de ressources et le principal peuvent prendre quelques minutes.

Pour plus d'informations, consultez [Partage de vos ressources AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) dans le *Guide de l'utilisateur AWS Ressource Access Manager*.

### Obtention de réponses à votre invitation de partage de ressources
<a name="build-and-manage-xaccount-set-up-responses"></a>

Une fois que les associations entre le partage de ressources et le principal ont été définies, les comptes AWS spécifiés reçoivent une invitation à rejoindre le partage de ressources. Les AWS comptes doivent accepter l'invitation pour accéder à toutes les ressources partagées.

Pour plus d'informations sur l'acceptation d'une invitation au partage de ressources AWS RAM, consultez la section [Utilisation AWS des ressources partagées](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) dans le *guide de l'utilisateur de AWS Resource Access Manager*.

## Politiques d’autorisation pour les ressources Pipelines
<a name="build-and-manage-xaccount-permissions"></a>

Lorsque vous créez votre partage de ressources, choisissez l'une des deux politiques d'autorisation prises en charge à associer au type de ressource SageMaker AI Pipeline. Les deux politiques donnent accès à n’importe quel pipeline sélectionné et à toutes ses exécutions. 

### Autorisations en lecture seule par défaut
<a name="build-and-manage-xaccount-permissions-default"></a>

La politique `AWSRAMDefaultPermissionSageMakerPipeline` autorise les actions en lecture seule suivantes :

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"
```

### Autorisations d'exécution de pipeline étendues
<a name="build-and-manage-xaccount-permissions-extended"></a>

La politique `AWSRAMPermissionSageMakerPipelineAllowExecution` inclut toutes les autorisations en lecture seule de la politique par défaut et permet également aux comptes partagés de démarrer, d'arrêter et de réessayer les exécutions de pipeline.

**Note**  
Soyez attentif à l'utilisation des AWS ressources lorsque vous utilisez la politique d'autorisation d'exécution étendue du pipeline. Avec cette politique, les comptes partagés sont autorisés à démarrer, arrêter et réessayer les exécutions de pipeline. Toutes les ressources utilisées pour des exécutions de pipeline partagées sont consommées par le compte propriétaire. 

La politique d'autorisation d'exécution de pipeline étendue autorise les actions suivantes :

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"
```

## Accès aux entités de pipeline partagées via des appels d'API directs
<a name="build-and-manage-xaccount-api-calls"></a>

Une fois le partage de pipeline entre comptes configuré, vous pouvez appeler les actions d' SageMaker API suivantes à l'aide d'un ARN de pipeline :

**Note**  
Vous ne pouvez appeler des commandes d'API que si elles sont incluses dans les autorisations associées à votre partage de ressources. Si vous sélectionnez la `AWSRAMPermissionSageMakerPipelineAllowExecution` politique, les commandes start, stop et retry utilisent les ressources du AWS compte qui a partagé le pipeline.
+ [DescribePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipeline.html)
+ [DescribePipelineDefinitionForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineDefinitionForExecution.html)
+ [DescribePipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineExecution.html)
+ [ListPipelineExecutions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutions.html)
+ [ListPipelineExecutionSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutionSteps.html)
+ [ListPipelineParametersForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineParametersForExecution.html)
+ [StartPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html)
+ [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)
+ [RetryPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryPipelineExecution.html)

# Paramètres du pipeline
<a name="build-and-manage-parameters"></a>

Vous pouvez introduire des variables dans la définition de votre pipeline à l’aide de paramètres. Vous pouvez référencer les paramètres que vous définissez tout au long de votre définition de pipeline. Les paramètres ont une valeur par défaut, que vous pouvez remplacer en spécifiant des valeurs de paramètre lors du démarrage d’une exécution de pipeline. La valeur par défaut doit être une instance correspondant au type de paramètre. Tous les paramètres utilisés dans les définitions d’étape doivent être définis dans votre définition de pipeline. Cette rubrique décrit les paramètres que vous pouvez définir et comment les mettre en œuvre.

Amazon SageMaker Pipelines prend en charge les types de paramètres suivants : 
+  `ParameterString` - représente un paramètre de chaîne. 
+  `ParameterInteger` - représente un paramètre entier. 
+  `ParameterFloat` - représente un paramètre flottant.
+  `ParameterBoolean` - représente un type Python booléen.

Les paramètres prennent le format suivant :

```
<parameter> = <parameter_type>(
    name="<parameter_name>",
    default_value=<default_value>
)
```

Voici un exemple de mise en œuvre de paramètre.

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
    ParameterFloat,
    ParameterBoolean
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
```

Vous transmettez le paramètre lors de la création de votre pipeline comme illustré dans l'exemple suivant.

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_count
    ],
    steps=[step_process]
)
```

Vous pouvez également transmettre une valeur de paramètre qui diffère de la valeur par défaut à une exécution de pipeline, comme illustré dans l’exemple suivant.

```
execution = pipeline.start(
    parameters=dict(
        ProcessingInstanceCount="2",
        ModelApprovalStatus="Approved"
    )
)
```

Vous pouvez manipuler les paramètres avec des fonctions du SDK SageMaker Python telles que`[ sagemaker.workflow.functions.Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.functions.Join)`. Pour plus d'informations sur les paramètres, consultez la section [Paramètres des SageMaker pipelines](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parameters).

Pour connaître les limites connues des paramètres des pipelines, consultez *[Limitations - Paramétrage](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#parameterization)* dans le SDK Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

# É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).

# Lift-and-shift Code Python avec le décorateur @step
<a name="pipelines-step-decorator"></a>

Le décorateur `@step` est une fonctionnalité qui convertit votre code de machine learning (ML) local en une ou plusieurs étapes de pipeline. Vous pouvez écrire votre fonction ML comme vous le feriez pour n’importe quel projet ML. Une fois testée localement ou en tant que tâche de formation à l'aide du `@remote` décorateur, vous pouvez convertir la fonction en une étape de pipeline d' SageMaker IA en ajoutant un `@step` décorateur. Vous pouvez alors transmettre à Pipelines la sortie de l’appel de fonction décorée avec `@step` en tant qu’étape pour créer et exécuter un pipeline. Vous pouvez chaîner une série de fonctions avec le décorateur `@step` pour créer également un pipeline de graphe orienté acyclique (DAG) à plusieurs étapes.

La configuration permettant d’utiliser le décorateur `@step` est la même que celle pour utiliser le décorateur `@remote`. Vous pouvez vous reporter à la documentation des fonctions à distance pour plus de détails sur la [configuration de l’environnement](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator.html#train-remote-decorator-env) et sur l’[utilisation d’un fichier de configuration](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html) pour définir des valeurs par défaut. Pour plus d’informations sur le décorateur `@step`, consultez [sagemaker.workflow.function\$1step.step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.step).

Pour consulter des exemples de blocs-notes illustrant l’utilisation du décorateur `@step`, consultez les [exemples de blocs-notes du décorateur @step](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/step-decorator).

Les sections suivantes expliquent comment annoter votre code ML local à l’aide d’un décorateur `@step` pour créer une étape, créer et exécuter un pipeline utilisant cette étape, et personnaliser l’expérience pour votre cas d’utilisation.

**Topics**
+ [Création d’un pipeline avec des fonctions décorées avec `@step`](pipelines-step-decorator-create-pipeline.md)
+ [Exécuter un pipeline](pipelines-step-decorator-run-pipeline.md)
+ [Configuration de votre pipeline](pipelines-step-decorator-cfg-pipeline.md)
+ [Bonnes pratiques](pipelines-step-decorator-best.md)
+ [Limitations](pipelines-step-decorator-limit.md)

# Création d’un pipeline avec des fonctions décorées avec `@step`
<a name="pipelines-step-decorator-create-pipeline"></a>

Vous pouvez créer un pipeline en convertissant les fonctions Python en étapes de pipeline à l’aide du décorateur `@step`, en créant des dépendances entre ces fonctions pour créer un graphe de pipeline (ou graphe orienté acyclique (DAG)) et en transmettant les nœuds terminaux de ce graphe sous forme de liste d’étapes au pipeline. Les sections suivantes expliquent cette procédure en détail avec des exemples.

**Topics**
+ [Conversion d’une fonction en étape](#pipelines-step-decorator-run-pipeline-convert)
+ [Création de dépendances entre les étapes](#pipelines-step-decorator-run-pipeline-link)
+ [Utilisation de `ConditionStep` avec des étapes décorées avec `@step`](#pipelines-step-decorator-condition)
+ [Définition d’un pipeline à l’aide de la sortie `DelayedReturn` des étapes](#pipelines-step-define-delayed)
+ [Création d’un pipeline](#pipelines-step-decorator-pipeline-create)

## Conversion d’une fonction en étape
<a name="pipelines-step-decorator-run-pipeline-convert"></a>

Pour créer une étape à l’aide du décorateur `@step`, annotez la fonction avec `@step`. L’exemple suivant illustre une fonction décorée avec `@step` qui prétraite les données.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
    
step_process_result = preprocess(raw_data)
```

Lorsque vous invoquez une fonction `@step` décorée, SageMaker AI renvoie une `DelayedReturn` instance au lieu d'exécuter la fonction. Une instance `DelayedReturn` est un proxy pour le retour réel de cette fonction. L’instance `DelayedReturn` peut être transmise à une autre fonction en tant qu’argument ou directement à une instance de pipeline en tant qu’étape. Pour plus d'informations sur la `DelayedReturn` classe, consultez [sagemaker.workflow.function\$1step. DelayedReturn](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.DelayedReturn).

## Création de dépendances entre les étapes
<a name="pipelines-step-decorator-run-pipeline-link"></a>

Lorsque vous créez une dépendance entre deux étapes, vous créez une connexion entre les étapes de votre graphe de pipeline. Les sections suivantes présentent plusieurs manières de créer une dépendance entre les étapes de votre pipeline.

### Dépendances des données via des arguments d’entrée
<a name="pipelines-step-decorator-run-pipeline-link-interstep"></a>

Le fait de transmettre la sortie `DelayedReturn` d’une fonction en entrée d’une autre fonction crée automatiquement une dépendance de données dans le graphique DAG du pipeline. Dans l’exemple suivant, la transmission de la sortie `DelayedReturn` de la fonction `preprocess` à la fonction `train` crée une dépendance entre `preprocess` et `train`.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe

@step
def train(training_data):
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train(step_process_result)
```

L’exemple précédent définit une fonction d’entraînement qui est décorée avec `@step`. Lorsque cette fonction est invoquée, elle reçoit la sortie `DelayedReturn` de l’étape de pipeline de prétraitement en entrée. L’invocation de la fonction d’entraînement renvoie une autre instance `DelayedReturn`. Cette instance contient les informations sur toutes les étapes précédentes, définies dans cette fonction (c’est-à-dire l’étape `preprocess` de cet exemple), qui forment le graphique DAG du pipeline.

Dans l’exemple précédent, la fonction `preprocess` renvoie une valeur unique. Pour des types de retour plus complexes tels que des listes ou des tuples, reportez-vous à [Limitations](pipelines-step-decorator-limit.md).

### Définition de dépendances personnalisées
<a name="pipelines-step-decorator-run-pipeline-link-custom"></a>

Dans l’exemple précédent, la fonction `train` a reçu la sortie `DelayedReturn` de `preprocess` et a créé une dépendance. Si vous souhaitez définir cette dépendance de manière explicite sans transmettre la sortie de l’étape précédente, utilisez la fonction `add_depends_on` avec l’étape. Vous pouvez utiliser la fonction `get_step()` pour extraire l’étape sous-jacente depuis son instance `DelayedReturn`, puis appeler `add_depends_on` avec la dépendance en entrée. Pour visualiser la définition de la fonction `get_step()`, consultez [sagemaker.workflow.step\$1outputs.get\$1step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_outputs.get_step). L’exemple suivant montre comment créer une dépendance entre `preprocess` et `train` en utilisant `get_step()` et `add_depends_on()`.

```
from sagemaker.workflow.step_outputs import get_step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    processed_data = ..
    return s3.upload(processed_data)

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train()

get_step(step_train_result).add_depends_on([step_process_result])
```

### Transmission de données depuis et vers une fonction décorée avec `@step` vers une étape de pipeline traditionnelle
<a name="pipelines-step-decorator-run-pipeline-link-pass"></a>

Vous pouvez créer un pipeline qui inclut une étape décorée avec `@step` et une étape de pipeline traditionnelle et qui transmet des données entre les deux. Par exemple, vous pouvez utiliser `ProcessingStep` pour traiter les données et transmettre le résultat à la fonction d’entraînement décorée avec `@step`. Dans l’exemple suivant, une étape d’entraînement décorée avec `@step` fait référence à la sortie d’une étape de traitement.

```
# Define processing step

from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

sklearn_processor = SKLearnProcessor(
    framework_version='1.2-1',
    role='arn:aws:iam::123456789012:role/SagemakerExecutionRole',
    instance_type='ml.m5.large',
    instance_count='1',
)

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")
]

process_step = ProcessingStep(
    name="MyProcessStep",
    step_args=sklearn_processor.run(inputs=inputs, outputs=outputs,code='preprocessing.py'),
)
```

```
# Define a @step-decorated train step which references the 
# output of a processing step

@step
def train(train_data_path, test_data_path):
    ...
    return trained_model
    
step_train_result = train(
   process_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
   process_step.properties.ProcessingOutputConfig.Outputs["test"].S3Output.S3Uri,
)
```

## Utilisation de `ConditionStep` avec des étapes décorées avec `@step`
<a name="pipelines-step-decorator-condition"></a>

Pipelines prend en charge une classe `ConditionStep` qui évalue les résultats des étapes précédentes pour décider de l’action à entreprendre dans le pipeline. Vous pouvez également utiliser `ConditionStep` avec une étape décorée avec `@step`. Pour utiliser la sortie d’une étape `@step` quelconque décorée avec `ConditionStep`, entrez la sortie de cette étape en tant qu’argument de `ConditionStep`. Dans l’exemple suivant, l’étape de condition reçoit la sortie de l’étape d’évaluation des modèles décorée avec `@step`.

```
# Define steps

@step(name="evaluate")
def evaluate_model():
    # code to evaluate the model
    return {
        "rmse":rmse_value
    }
    
@step(name="register")
def register_model():
    # code to register the model
    ...
```

```
# Define ConditionStep

from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.fail_step import FailStep

conditionally_register = ConditionStep(
    name="conditional_register",
    conditions=[
        ConditionGreaterThanOrEqualTo(
            # Output of the evaluate step must be json serializable
            left=evaluate_model()["rmse"],  # 
            right=5,
        )
    ],
    if_steps=[FailStep(name="Fail", error_message="Model performance is not good enough")],
    else_steps=[register_model()],
)
```

## Définition d’un pipeline à l’aide de la sortie `DelayedReturn` des étapes
<a name="pipelines-step-define-delayed"></a>

Vous définissez un pipeline de la même manière, que vous utilisiez ou non un décorateur `@step`. Lorsque vous transmettez une instance `DelayedReturn` à votre pipeline, vous n’avez pas besoin de transmettre la liste complète des étapes pour générer le pipeline. Le kit SDK déduit automatiquement les étapes précédentes en fonction des dépendances que vous définissez. Toutes les étapes précédentes des objets `Step` que vous avez transmis au pipeline ou aux objets `DelayedReturn` sont incluses dans le graphique du pipeline. Dans l’exemple suivant, le pipeline reçoit l’objet `DelayedReturn` pour la fonction `train`. SageMaker L'IA ajoute l'`preprocess`étape, en tant qu'étape précédente de`train`, au graphe du pipeline.

```
from sagemaker.workflow.pipeline import Pipeline

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=<sagemaker-session>,
)
```

S’il n’existe aucune donnée ou dépendance personnalisée entre les étapes et que vous exécutez plusieurs étapes en parallèle, le graphe du pipeline comporte plusieurs nœuds terminaux. Transmettez tous ces nœuds terminaux dans une liste à l’argument `steps` de votre définition de pipeline, comme indiqué dans l’exemple suivant :

```
@step
def process1():
    ...
    return data
    
@step
def process2():
   ...
   return data
   
step_process1_result = process1()
step_process2_result = process2()

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_process1_result, step_process2_result],
    sagemaker_session=sagemaker-session,
)
```

Lorsque le pipeline s’exécute, les deux étapes s’exécutent en parallèle.

Vous transmettez uniquement les nœuds terminaux du graphe au pipeline, car ils contiennent des informations sur toutes les étapes précédentes définies par le biais de dépendances de données ou personnalisées. Lorsqu'elle compile le pipeline, l' SageMaker IA déduit également toutes les étapes suivantes qui forment le graphe du pipeline et ajoute chacune d'elles en tant qu'étape distincte au pipeline.

## Création d’un pipeline
<a name="pipelines-step-decorator-pipeline-create"></a>

Créez un pipeline en appelant `pipeline.create()`, comme illustré dans l’extrait suivant. Pour plus de détails sur `create()`, consultez [sagemaker.workflow.pipeline.Pipeline.create](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.create).

```
role = "pipeline-role"
pipeline.create(role)
```

Lorsque vous appelez`pipeline.create()`, SageMaker AI compile toutes les étapes définies dans le cadre de l'instance de pipeline. SageMaker L'IA télécharge la fonction sérialisée, les arguments et tous les autres artefacts liés aux étapes sur Amazon S3.

Les données résident dans le compartiment S3 selon la structure suivante :

```
s3_root_uri/
    pipeline_name/
        sm_rf_user_ws/
            workspace.zip  # archive of the current working directory (workdir)
        step_name/
            timestamp/
                arguments/                # serialized function arguments
                function/                 # serialized function
                pre_train_dependencies/   # any dependencies and pre_execution scripts provided for the step       
        execution_id/
            step_name/
                results     # returned output from the serialized function including the model
```

`s3_root_uri`est défini dans le fichier de configuration SageMaker AI et s'applique à l'ensemble du pipeline. S'il n'est pas défini, le bucket SageMaker AI par défaut est utilisé.

**Note**  
Chaque fois que l' SageMaker IA compile un pipeline, elle SageMaker enregistre les fonctions sérialisées, les arguments et les dépendances des étapes dans un dossier horodaté avec l'heure actuelle. Cela se produit chaque fois que vous exécutez `pipeline.create()`, `pipeline.update()`, `pipeline.upsert()` ou `pipeline.definition()`.

# Exécuter un pipeline
<a name="pipelines-step-decorator-run-pipeline"></a>

La page suivante décrit comment exécuter un pipeline avec Amazon SageMaker Pipelines, avec des ressources d' SageMaker IA ou localement.

Démarrez une nouvelle exécution de pipeline avec cette `pipeline.start()` fonction, comme vous le feriez pour une exécution de pipeline d' SageMaker IA traditionnelle. Pour en savoir plus sur la fonction `start()`, consultez [sagemaker.workflow.pipeline.Pipeline.start](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.start).

**Note**  
Une étape définie à l’aide du décorateur `@step` s’exécute comme tâche d’entraînement. Par conséquent, tenez compte des limitations suivantes :  
Limites d’instances et limites de tâches d’entraînement dans vos comptes. Mettez à jour vos limites en conséquence pour éviter tout problème de limitation ou de limite de ressources.
Les coûts monétaires associés à chaque exécution d’une étape d’entraînement dans le pipeline. Pour plus de détails, consultez les [ SageMaker tarifs Amazon](https://aws.amazon.com/sagemaker/pricing/).

## Extraction des résultats d’un pipeline exécuté localement
<a name="pipelines-step-decorator-run-pipeline-retrieve"></a>

Pour afficher le résultat de n’importe quelle étape d’une exécution de pipeline, utilisez [execution.result()](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline._PipelineExecution.result           ), comme indiqué dans l’extrait suivant :

```
execution = pipeline.start()
execution.result(step_name="train")
```

**Note**  
Pipelines ne prend pas en charge `execution.result()` en mode local.

Vous ne pouvez récupérer les résultats que pour une seule étape à la fois. Si le nom de l'étape a été généré par l' SageMaker IA, vous pouvez le récupérer en appelant `list_steps` comme suit :

```
execution.list_step()
```

## Exécution d’un pipeline localement
<a name="pipelines-step-decorator-run-pipeline-local"></a>

Vous pouvez exécuter un pipeline avec des étapes décorées avec `@step` localement, comme vous le feriez pour des étapes de pipeline traditionnelles. Pour plus de détails sur les exécutions de pipelines en mode local, consultez [Exécution de pipelines en mode local](pipelines-local-mode.md). Pour utiliser le mode local, fournissez un élément `LocalPipelineSession` à la place d’un élément `SageMakerSession` dans la définition de votre pipeline, comme illustré dans l’exemple suivant :

```
from sagemaker.workflow.function_step import step
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_context import LocalPipelineSession

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model
    
step_train_result = train()

local_pipeline_session = LocalPipelineSession()

local_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=local_pipeline_session # needed for local mode
)

local_pipeline.create(role_arn="role_arn")

# pipeline runs locally
execution = local_pipeline.start()
```

# Configuration de votre pipeline
<a name="pipelines-step-decorator-cfg-pipeline"></a>

Il est conseillé d'utiliser le fichier de configuration SageMaker AI pour définir les valeurs par défaut du pipeline. Pour plus d'informations sur le fichier de configuration SageMaker AI, consultez [Configuration et utilisation des valeurs par défaut avec le SDK SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). Toute configuration ajoutée au fichier de configuration s’applique à toutes les étapes du pipeline. Si vous souhaitez remplacer les options de l’une des étapes, fournissez de nouvelles valeurs dans les arguments du décorateur `@step`. La rubrique suivante explique comment configurer un fichier de configuration.

La configuration du décorateur `@step` dans le fichier de configuration est identique à celle du décorateur `@remote`. Pour configurer l’ARN du rôle de pipeline et les balises de pipeline dans le fichier de configuration, utilisez la section `Pipeline` illustrée dans l’extrait de code suivant :

```
SchemaVersion: '1.0'
SageMaker:
  Pipeline:
    RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
    Tags:
    - Key: 'tag_key'
      Value: 'tag_value'
```

Vous pouvez également remplacer la plupart des valeurs par défaut que vous pouvez définir dans le fichier de configuration, en transmettant de nouvelles valeurs au décorateur `@step`. Par exemple, vous pouvez remplacer le type d’instance défini dans le fichier de configuration pour votre étape de prétraitement, comme illustré dans l’exemple suivant :

```
@step(instance_type="ml.m5.large")
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
```

Quelques arguments ne figurent pas dans la liste des paramètres du `@step` décorateur. Ils peuvent être configurés pour l'ensemble du pipeline uniquement via le fichier de configuration SageMaker AI. Ils sont répertoriés comme suit :
+ `sagemaker_session`(`sagemaker.session.Session`) : session d' SageMaker IA sous-jacente à laquelle l' SageMaker IA délègue les appels de service. Si elle n’est pas spécifiée, une session est créée à l’aide d’une configuration par défaut, comme suit :

  ```
  SageMaker:
    PythonSDK:
      Modules:
        Session:
          DefaultS3Bucket: 'default_s3_bucket'
          DefaultS3ObjectKeyPrefix: 'key_prefix'
  ```
+ `custom_file_filter` (`CustomFileFilter)` : objet `CustomFileFilter` qui spécifie les répertoires et fichiers locaux à inclure dans l’étape du pipeline. S’il n’est pas spécifié, la valeur utilisée par défaut est `None`. Pour que `custom_file_filter` prenne effet, vous devez définir `IncludeLocalWorkdir` sur `True`. L’exemple suivant montre une configuration qui ignore tous les fichiers de bloc-notes, ainsi que les fichiers et répertoires nommés `data`.

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          IncludeLocalWorkDir: true
          CustomFileFilter: 
            IgnoreNamePatterns: # files or directories to ignore
            - "*.ipynb" # all notebook files
            - "data" # folder or file named "data"
  ```

  Pour plus de détails sur la façon d’utiliser `IncludeLocalWorkdir` avec `CustomFileFilter`, consultez [Utilisation d’un code modulaire avec le décorateur @remote](train-remote-decorator-modular.md).
+ `s3_root_uri (str)`: le dossier racine Amazon S3 dans lequel SageMaker AI télécharge les archives de code et les données. S'il n'est pas spécifié, le bucket SageMaker AI par défaut est utilisé.
+ `s3_kms_key (str)` : clé utilisée pour chiffrer les données d’entrée et de sortie. Vous ne pouvez configurer cet argument que dans le fichier de configuration SageMaker AI et l'argument s'applique à toutes les étapes définies dans le pipeline. S’il n’est pas spécifié, la valeur utilisée par défaut est `None`. Consultez l’extrait de code suivant pour un exemple de configuration de clé KMS S3 :

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          S3KmsKeyId: 's3kmskeyid'
          S3RootUri: 's3://amzn-s3-demo-bucket/my-project
  ```

# Bonnes pratiques
<a name="pipelines-step-decorator-best"></a>

Les sections suivantes suggèrent de bonnes pratiques à suivre lorsque vous utilisez le décorateur `@step` pour les étapes de votre pipeline.

## Utilisation de groupes à chaud
<a name="pipelines-step-decorator-best-warmpool"></a>

Pour accélérer les exécutions des étapes du pipeline, utilisez la fonctionnalité des groupes à chaud fournie pour les tâches d’entraînement. Vous pouvez activer la fonctionnalité des groupes à chaud en fournissant l’argument `keep_alive_period_in_seconds` au décorateur `@step`, comme illustré dans l’extrait de code suivant :

```
@step(
   keep_alive_period_in_seconds=900
)
```

Pour plus d’informations sur les groupes d’instances pré-initialisées, consultez [SageMaker Piscines d'eau chaude gérées par l'IA](train-warm-pools.md). 

## Structuration de votre répertoire
<a name="pipelines-step-decorator-best-dir"></a>

Il est conseillé d’utiliser des modules de code lors de l’utilisation du décorateur `@step`. Placez le module `pipeline.py`, dans lequel vous invoquez les fonctions d’étape et définissez le pipeline, à la racine de l’espace de travail. La structure recommandée se présente comme suit :

```
.
├── config.yaml # the configuration file that define the infra settings
├── requirements.txt # dependencies
├── pipeline.py  # invoke @step-decorated functions and define the pipeline here
├── steps/
| ├── processing.py
| ├── train.py
├── data/
├── test/
```

# Limitations
<a name="pipelines-step-decorator-limit"></a>

Les sections suivantes décrivent les limites dont vous devez tenir compte lorsque vous utilisez le décorateur `@step` pour les étapes de votre pipeline.

## Limites des arguments des fonctions
<a name="pipelines-step-decorator-arg"></a>

Lorsque vous transmettez un argument d’entrée à la fonction décorée avec `@step`, les limites suivantes s’appliquent :
+ Vous pouvez transmettre les objets `DelayedReturn`, `Properties` (d’étapes d’autres types), `Parameter` et `ExecutionVariable` aux fonctions décorées avec `@step` en tant qu’arguments. Mais les fonctions décorées avec `@step` ne prennent pas en charge les objets `JsonGet` et `Join` en tant qu’arguments.
+ Vous ne pouvez pas accéder directement à une variable de pipeline à partir d’une fonction `@step`. L’exemple suivant génère une erreur :

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func():
      print(param)
  
  func() # this raises a SerializationError
  ```
+ Vous ne pouvez pas imbriquer une variable de pipeline dans un autre objet et la transmettre à une fonction `@step`. L’exemple suivant génère une erreur :

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func(arg):
      print(arg)
  
  func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  ```
+ Les entrées et sorties d’une fonction étant sérialisées, le type de données pouvant être transmis en entrée ou en sortie à partir d’une fonction est soumis à des restrictions. Consultez la section *Sérialisation et désérialisation des données* de [Invoquer une fonction à distance](train-remote-decorator-invocation.md) pour plus de détails. Les mêmes restrictions s’appliquent aux fonctions décorées avec `@step`.
+ Tout objet doté d’un client boto ne peut pas être sérialisé. Vous ne pouvez donc pas transmettre de tels objets en entrée ou en sortie à partir d’une fonction décorée avec `@step`. Par exemple, les classes clientes du SDK SageMaker Python telles que `Estimator``Predictor`, et ne `Processor` peuvent pas être sérialisées.

## Importations de fonctions
<a name="pipelines-step-decorator-best-import"></a>

Vous devez importer les bibliothèques requises par l’étape à l’intérieur plutôt qu’à l’extérieur de la fonction. Si vous les importez à l’échelle mondiale, vous risquez une collision d’importation lors de la sérialisation de la fonction. Par exemple, `sklearn.pipeline.Pipeline` pourrait être remplacé par `sagemaker.workflow.pipeline.Pipeline`.

## Référencement des membres enfants de la valeur de retour de la fonction
<a name="pipelines-step-decorator-best-child"></a>

Si vous référencez des membres enfants d’une valeur de retour d’une fonction décorée avec `@step`, les limites suivantes s’appliquent :
+ Vous pouvez référencer les membres enfants avec `[]` si l’objet `DelayedReturn` représente un tuple, une liste ou un dict, comme indiqué dans l’exemple suivant :

  ```
  delayed_return[0]
  delayed_return["a_key"]
  delayed_return[1]["a_key"]
  ```
+ Vous ne pouvez pas décompresser la sortie d’un tuple ou d’une liste, car la longueur exacte du tuple ou de la liste sous-jacent(e) ne peut pas être connue lorsque vous invoquez la fonction. L’exemple suivant génère une erreur :

  ```
  a, b, c = func() # this raises ValueError
  ```
+ Vous ne pouvez pas itérer sur un objet `DelayedReturn`. L’exemple suivant déclenche une erreur :

  ```
  for item in func(): # this raises a NotImplementedError
  ```
+ Vous ne pouvez pas référencer des membres enfants arbitraires avec « `.` ». L’exemple suivant génère une erreur :

  ```
  delayed_return.a_child # raises AttributeError
  ```

## Fonctionnalités de pipeline existantes qui ne sont pas prises en charge
<a name="pipelines-step-decorator-best-unsupported"></a>

Vous ne pouvez pas utiliser le décorateur `@step` avec les fonctionnalités de pipeline suivantes :
+ [Mise en cache des étapes d’un pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-caching.html)
+ [Fichiers de propriétés](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html#build-and-manage-propertyfile-property)

# Transmission de données entre les étapes
<a name="build-and-manage-propertyfile"></a>

Lorsque vous créez des pipelines avec Amazon SageMaker Pipelines, vous devrez peut-être transmettre des données d'une étape à l'autre. Par exemple, vous souhaiterez peut-être utiliser les artefacts de modèle générés par une étape d’entraînement comme entrée pour une étape d’évaluation ou de déploiement des modèles. Vous pouvez utiliser cette fonctionnalité pour créer des étapes de pipeline interdépendantes et générer vos flux de travail ML.

Lorsque vous avez besoin d’extraire des informations de la sortie d’une étape du pipeline, vous pouvez utiliser `JsonGet`. `JsonGet` vous aide à extraire des informations d’Amazon S3 ou des fichiers de propriétés. Les sections suivantes expliquent les méthodes que vous pouvez utiliser pour extraire les résultats des étapes avec `JsonGet`.

## Transmission des données entre les étapes avec Amazon S3
<a name="build-and-manage-propertyfile-s3"></a>

Vous pouvez utiliser `JsonGet` dans une étape `ConditionStep` pour récupérer la sortie JSON directement depuis Amazon S3. L’URI Amazon S3 peut être une fonction `Std:Join` contenant des chaînes primitives, des variables d’exécution de pipeline ou des paramètres de pipeline. L’exemple suivant montre comment vous pouvez utiliser `JsonGet` dans une étape `ConditionStep` :

```
# Example json file in s3 bucket generated by a processing_step
{
   "Output": [5, 10]
}

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name="<step-name>",
        s3_uri="<s3-path-to-json>",
        json_path="Output[1]"
    ),
    right=6.0
)
```

Si vous utilisez `JsonGet` avec un chemin Amazon S3 dans l’étape de condition, vous devez explicitement ajouter une dépendance entre l’étape de condition et l’étape générant la sortie JSON. Dans l’exemple suivant, l’étape de condition est créée avec une dépendance sur l’étape de traitement :

```
cond_step = ConditionStep(
        name="<step-name>",
        conditions=[cond_lte],
        if_steps=[fail_step],
        else_steps=[register_model_step],
        depends_on=[processing_step],
)
```

## Transmission de données entre les étapes à l’aide de fichiers de propriétés
<a name="build-and-manage-propertyfile-property"></a>

Utilisez des fichiers de propriétés pour stocker des informations à partir de la sortie d'une étape de traitement. Ceci est particulièrement utile lors de l’analyse des résultats d’une étape de traitement pour décider comment une étape conditionnelle doit être exécutée. La `JsonGet` fonction traite un fichier de propriétés et vous permet d'utiliser la JsonPath notation pour interroger le fichier JSON de propriétés. Pour plus d'informations sur la JsonPath notation, consultez le [JsonPath dépôt.](https://github.com/json-path/JsonPath)

Pour stocker un fichier de propriétés en vue d’une utilisation ultérieure, vous devez d’abord créer une instance `PropertyFile` au format suivant. Le `path` Paramètre est le nom du fichier JSON dans lequel le fichier de propriétés est enregistré. Tout `output_name` doit correspondre à l'interface `output_name` du `ProcessingOutput` que vous définissez dans votre étape de traitement. Cela permet au fichier de propriétés de capturer la `ProcessingOutput` dans l’étape.

```
from sagemaker.workflow.properties import PropertyFile

<property_file_instance> = PropertyFile(
    name="<property_file_name>",
    output_name="<processingoutput_output_name>",
    path="<path_to_json_file>"
)
```

Lorsque vous créez votre `ProcessingStep` instance, ajoutez le `property_files` paramètre pour répertorier tous les fichiers de paramètres que le service Amazon SageMaker Pipelines doit indexer. Cela enregistre le fichier de propriétés en vue d’une utilisation ultérieure.

```
property_files=[<property_file_instance>]
```

Pour utiliser votre fichier de propriétés dans une étape de condition, ajoutez le `property_file` à la condition que vous transmettez à votre étape de condition, comme illustré dans l’exemple suivant pour interroger le fichier JSON pour votre propriété souhaitée à l’aide du paramètre `json_path`.

```
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=<property_file_instance>,
        json_path="mse"
    ),
    right=6.0
)
```

Pour des exemples plus détaillés, consultez *[Property File](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#property-file)* dans le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

# Mise en cache des étapes du pipeline
<a name="pipelines-caching"></a>

Dans Amazon SageMaker Pipelines, vous pouvez utiliser la mise en cache des étapes pour économiser du temps et des ressources lorsque vous réexécutez des pipelines. La mise en cache des étapes réutilise la sortie d’une exécution précédente réussie d’une étape (au lieu de la recalculer) lorsque l’étape présente la même configuration et les mêmes entrées. Cela vous aide à obtenir des résultats cohérents lors de réexécutions du pipeline avec des paramètres identiques. La rubrique suivante vous montre comment configurer et activer la mise en cache des étapes pour vos pipelines.

Lorsque vous utilisez la mise en cache de signature d’étape, Pipelines tente de trouver une exécution précédente de votre étape de pipeline actuelle avec les mêmes valeurs pour certains attributs. S’il les trouve, Pipelines propage les sorties de l’exécution précédente au lieu de recalculer l’étape. Les attributs cochés sont spécifiques au type d’étape et sont répertoriés dans [Attributs de clé de cache par défaut par type d’étape du pipeline](pipelines-default-keys.md).

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

La mise en cache des étapes ne prend en compte que les exécutions réussies ; elle ne réutilise jamais celles ayant échoué. Lorsqu’il existe plusieurs exécutions réussies au cours de la période d’expiration, Pipelines utilise le résultat pour l’exécution réussie la plus récente. Si aucune exécution réussie ne correspond au délai imparti, Pipelines réexécute l’étape. Si l’exécuteur trouve une exécution précédente qui répond aux critères mais qui est toujours en cours, les deux étapes poursuivent leur exécution et mettent à jour le cache si elles réussissent.

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

La mise en cache d’étape est disponible pour les types d’étape suivants : 
+ [Traitement](build-and-manage-steps-types.md#step-type-processing)
+ [Entraînement](build-and-manage-steps-types.md#step-type-training)
+ [Réglage](build-and-manage-steps-types.md#step-type-tuning)
+ [AutoML](build-and-manage-steps-types.md#step-type-automl)
+ [Transformation](build-and-manage-steps-types.md#step-type-transform)
+ [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check)
+ [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)
+ [EMR](build-and-manage-steps-types.md#step-type-emr)

**Topics**
+ [Activer la mise en cache des étapes](pipelines-caching-enabling.md)
+ [Désactiver la mise en cache des étapes](pipelines-caching-disabling.md)
+ [Attributs de clé de cache par défaut par type d’étape du pipeline](pipelines-default-keys.md)
+ [Contrôle d’accès aux données mises en cache](pipelines-access-control.md)

# Activer la mise en cache des étapes
<a name="pipelines-caching-enabling"></a>

Pour activer la mise en cache des étapes, vous devez ajouter une propriété `CacheConfig` à la définition de l’étape. Les propriétés `CacheConfig` utilisent le format suivant dans le fichier de définition de pipeline :

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

Le champ `Enabled` indique si la mise en cache est activée pour l’étape en question. Vous pouvez définir le champ sur`true`, ce qui indique à SageMaker AI d'essayer de retrouver une exécution précédente de l'étape avec les mêmes attributs. Vous pouvez également définir le champ sur`false`, ce qui indique à SageMaker AI d'exécuter l'étape à chaque fois que le pipeline s'exécute. `ExpireAfter`est une chaîne au format de [durée ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) qui définit le délai d'expiration. La durée `ExpireAfter` peut être une année, un mois, une semaine, un jour, une heure ou une minute. Chaque valeur est constituée d'un nombre suivi d'une lettre indiquant l'unité de durée. Par exemple :
+ « 30d » = 30 jours
+ « 5y » = 5 ans
+ « T16m » = 16 minutes
+ « 30dT5h » = 30 jours et 5 heures.

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

**Activer la mise en cache pour les nouveaux pipelines**

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

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
      
cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)
```

**Activer la mise en cache pour les pipelines préexistants**

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

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

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

```
# turn on caching with timeout period of one hour
pipeline.steps[0].cache_config.enable_caching = True 
pipeline.steps[0].cache_config.expire_after = "PT1H" 

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Pour des exemples de code plus détaillés et une discussion sur la façon dont les paramètres du SDK Python affectent la mise en cache, consultez la section [Configuration de la mise en cache](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) dans la documentation du SDK Amazon SageMaker Python.

# Désactiver la mise en cache des étapes
<a name="pipelines-caching-disabling"></a>

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

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

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

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

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

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

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=False, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

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

```
# turn off caching for the training step
pipeline.steps[0].cache_config.enable_caching = False

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Pour des exemples de code plus détaillés et une discussion sur la façon dont les paramètres du SDK Python affectent la mise en cache, consultez la section [Configuration de la mise en cache](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) dans la documentation du SDK Amazon SageMaker Python.

# Attributs de clé de cache par défaut par type d’étape du pipeline
<a name="pipelines-default-keys"></a>

Lorsque vous décidez de réutiliser une étape de pipeline précédente ou de réexécuter l’étape, Pipelines vérifie si certains attributs ont changé. Si l’ensemble d’attributs est différent de toutes les exécutions précédentes au cours du délai imparti, l’étape s’exécute à nouveau. Ces attributs incluent les artefacts d'entrée, les spécifications de l'application ou de l'algorithme, ainsi que les variables d'environnement. La liste suivante indique chaque type d'étape du pipeline et les attributs qui, s'ils sont modifiés, déclenchent une nouvelle exécution de l'étape. Pour plus d'informations sur les paramètres du SDK Python utilisés pour créer les attributs suivants, consultez la section [Configuration de la mise en cache dans la](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) documentation du SDK Amazon SageMaker Python.

## [Étape de traitement](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)
<a name="collapsible-caching-section-1"></a>
+ AppSpecification
+ Environnement
+ ProcessingInputs. Cet attribut contient des informations sur le script de prétraitement.

  

## [Étape d’entraînement](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
<a name="collapsible-caching-section-2"></a>
+ AlgorithmSpecification
+ CheckpointConfig
+ DebugHookConfig
+ DebugRuleConfigurations
+ Environnement
+ HyperParameters
+ InputDataConfig. Cet attribut contient des informations sur le script d'entraînement.

  

## [Étape de réglage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)
<a name="collapsible-caching-section-3"></a>
+ HyperParameterTuningJobConfig
+ TrainingJobDefinition. Cet attribut est composé de plusieurs attributs enfants, qui n'entraînent pas tous la réexécution de l'étape. Les attributs enfants susceptibles d'entraîner une nouvelle exécution (s'ils sont modifiés) sont les suivants :
  + AlgorithmSpecification
  + HyperParameterRanges
  + InputDataConfig
  + StaticHyperParameters
  + TuningObjective
+ TrainingJobDefinitions

  

## [Étape AutoML](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobConfig.html)
<a name="collapsible-caching-section-4"></a>
+ MLJobConfig automatique. Cet attribut est composé de plusieurs attributs enfants, qui ne provoquent pas tous une nouvelle exécution de l'étape. Les attributs enfants susceptibles d'entraîner une nouvelle exécution (s'ils sont modifiés) sont les suivants :
  + CompletionCriteria
  + CandidateGenerationConfig
  + DataSplitConfig
  + Mode
+ MLJobObjectif automatique
+ InputDataConfig
+ ProblemType

  

## [Étape de transformation](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)
<a name="collapsible-caching-section-5"></a>
+ DataProcessing
+ Environnement
+ ModelName
+ TransformInput

  

## [ClarifyCheck étape](build-and-manage-steps-types.md#step-type-clarify-check)
<a name="collapsible-caching-section-6"></a>
+ ClarifyCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints

  

## [QualityCheck étape](build-and-manage-steps-types.md#step-type-quality-check)
<a name="collapsible-caching-section-7"></a>
+ QualityCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints
+ SuppliedBaselineStatistics

  

## [Étape EMR](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-emr)
<a name="collapsible-caching-section-8"></a>
+ ClusterId
+ StepConfig

  

# Contrôle d’accès aux données mises en cache
<a name="pipelines-access-control"></a>

Lorsqu'un pipeline d' SageMaker IA s'exécute, il met en cache les paramètres et les métadonnées associés aux tâches d' SageMaker IA lancées par le pipeline et les enregistre pour les réutiliser lors des exécutions suivantes. Ces métadonnées sont accessibles via différentes sources, en plus des étapes du pipeline mises en cache, et incluent les types suivants :
+ `Describe*Job` requêtes
+ CloudWatch Journaux
+ CloudWatch Événements
+ CloudWatch Métriques
+ SageMaker Recherche par IA

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

# Politique de nouvelle tentative pour les étapes du pipeline
<a name="pipelines-retry-policy"></a>

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

La politique de nouvelle tentative prend uniquement en charge les étapes suivantes du pipeline :
+ [Étape de traitement](build-and-manage-steps-types.md#step-type-processing) 
+ [Étape d’entraînement](build-and-manage-steps-types.md#step-type-training) 
+ [Étape de réglage](build-and-manage-steps-types.md#step-type-tuning) 
+ [Étape AutoML](build-and-manage-steps-types.md#step-type-automl) 
+ [Création d’une étape de modèle](build-and-manage-steps-types.md#step-type-create-model) 
+ [Étape Enregistrer le modèle](build-and-manage-steps-types.md#step-type-register-model) 
+ [Étape de transformation](build-and-manage-steps-types.md#step-type-transform) 
+ [Étape Tâche de bloc-notes](build-and-manage-steps-types.md#step-type-notebook-job) 

**Note**  
Les tâches qui s'exécutent à la fois dans les étapes de réglage et AutoML effectuent de nouvelles tentatives en interne et n'effectuent pas de nouvelle tentative pour le type d'exception `SageMaker.JOB_INTERNAL_ERROR`, même si une politique de nouvelle tentative est configurée. Vous pouvez programmer votre propre [stratégie de réessai](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryStrategy.html) à l'aide de l' SageMaker API.

## Types d’exceptions pris en charge pour la politique de nouvelle tentative
<a name="pipelines-retry-policy-supported-exceptions"></a>

La politique de nouvelle tentative pour les étapes du pipeline prend en charge les types d'exception suivants :
+ `Step.SERVICE_FAULT` : ces exceptions se produisent lorsqu’une erreur interne du serveur ou une erreur temporaire survient lors de l’appel de services en aval. Pipelines lance automatiquement une nouvelle tentative après ce type d’erreur. Avec une politique de nouvelle tentative, vous pouvez remplacer l’opération de nouvelle tentative par défaut pour ce type d’exception.
+ `Step.THROTTLING` : des exceptions de limitation peuvent se produire lors de l’appel des services en aval. Pipelines lance automatiquement une nouvelle tentative après ce type d’erreur. Avec une politique de nouvelle tentative, vous pouvez remplacer l’opération de nouvelle tentative par défaut pour ce type d’exception.
+ `SageMaker.JOB_INTERNAL_ERROR`: Ces exceptions se produisent lorsque la tâche d' SageMaker IA revient`InternalServerError`. Dans ce cas, le démarrage d’une nouvelle tâche peut résoudre un problème temporaire.
+ `SageMaker.CAPACITY_ERROR`: La tâche d' SageMaker IA peut rencontrer Amazon EC2`InsufficientCapacityErrors`, ce qui entraîne son échec. SageMaker Vous pouvez réessayer en démarrant une nouvelle tâche d' SageMaker IA pour éviter le problème. 
+ `SageMaker.RESOURCE_LIMIT`: vous pouvez dépasser le quota de ressources lorsque vous exécutez une tâche d' SageMaker IA. Vous pouvez attendre et réessayer d'exécuter la tâche d' SageMaker IA après une courte période pour voir si des ressources sont disponibles.

## Schéma JSON de la politique de nouvelle tentative
<a name="pipelines-retry-policy-json-schema"></a>

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

```
"RetryPolicy": {
   "ExceptionType": [String]
   "IntervalSeconds": Integer
   "BackoffRate": Double
   "MaxAttempts": Integer
   "ExpireAfterMin": Integer
}
```
+ `ExceptionType` : ce champ nécessite les types d'exception suivants au format de chaîne simple.
  + `Step.SERVICE_FAULT`
  + `Step.THROTTLING`
  + `SageMaker.JOB_INTERNAL_ERROR`
  + `SageMaker.CAPACITY_ERROR`
  + `SageMaker.RESOURCE_LIMIT`
+ `IntervalSeconds` (facultatif) : nombre de secondes avant la première nouvelle tentative (1 par défaut). `IntervalSeconds` a une valeur maximale de 43 200 secondes (12 heures).
+ `BackoffRate` (facultatif) : multiplicateur par lequel l'intervalle de nouvelle tentative augmente à chaque tentative (2,0 par défaut).
+ `MaxAttempts` : nombre entier positif qui représente le nombre maximum de nouvelles tentatives (5 par défaut). Si l'erreur se produit un nombre de fois supérieur à la valeur spécifiée par `MaxAttempts`, les nouvelles tentatives cessent et la gestion normale des erreurs reprend. La valeur 0 spécifie que les erreurs n'ont jamais fait l'objet d'une nouvelle tentative. `MaxAttempts` a une valeur maximale de 20.
+ `ExpireAfterMin` (facultatif) : nombre entier positif qui représente la durée maximale d'une nouvelle tentative. Si l'erreur se répète après `ExpireAfterMin` minutes à partir de l'exécution de l'étape, les nouvelles tentatives cessent et la gestion normale des erreurs reprend. La valeur 0 spécifie que les erreurs n'ont jamais fait l'objet d'une nouvelle tentative. `ExpireAfterMin ` a une valeur maximale de 14 400 minutes (10 jours).
**Note**  
Les valeurs `MaxAttempts` ou `ExpireAfterMin` peuvent être spécifiées, mais pas les deux. Si *aucune des deux* n’est spécifiée, `MaxAttempts` devient la valeur par défaut. Si les deux propriétés sont identifiées dans une politique, la politique de nouvelle tentative génère une erreur de validation.

# Configuration d’une politique de nouvelle tentative
<a name="pipelines-configuring-retry-policy"></a>

Bien que les SageMaker pipelines constituent un moyen robuste et automatisé d'orchestrer les flux de travail de machine learning, il est possible que vous rencontriez des défaillances lors de leur exécution. Pour gérer de tels scénarios avec élégance et améliorer la fiabilité de vos pipelines, vous pouvez configurer des politiques de nouvelles tentatives qui définissent comment et quand réessayer automatiquement des étapes spécifiques en cas d’exception. La politique de nouvelles tentatives vous permet de spécifier les types d’exceptions à réessayer, le nombre maximal de nouvelles tentatives, l’intervalle entre les nouvelles tentatives et le taux de backoff visant à augmenter les intervalles entre les nouvelles tentatives. La section suivante fournit des exemples de configuration d'une politique de nouvelle tentative pour une étape d'entraînement de votre pipeline, à la fois en JSON et à l'aide du SDK SageMaker Python.

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

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



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

```
from sagemaker.workflow.retry import (
    StepRetryPolicy, 
    StepExceptionTypeEnum,
    SageMakerJobExceptionTypeEnum,
    SageMakerJobStepRetryPolicy
)

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

Pour plus d'informations sur la configuration du comportement des nouvelles tentatives pour certains types d'étapes, consultez *[Amazon SageMaker Pipelines - Politique de réessai](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#retry-policy)* dans la documentation du SDK Amazon SageMaker Python.

# Exécution sélective des étapes d’un pipeline
<a name="pipelines-selective-ex"></a>

Lorsque vous utilisez Pipelines pour créer des flux de travail et orchestrer vos étapes d’entraînement ML, vous pouvez avoir besoin d’entreprendre plusieurs phases d’expérimentation. Au lieu d’exécuter le pipeline complet à chaque fois, vous souhaiterez peut-être répéter certaines étapes. Avec Pipelines, vous pouvez exécuter des étapes de pipeline de manière sélective. Cela permet d’optimiser votre entraînement ML. L’exécution sélective est utile dans les scénarios suivants : 
+ Vous souhaitez redémarrer une étape spécifique avec un type d’instance, des hyperparamètres ou d’autres variables mis à jour tout en conservant les paramètres des étapes en amont.
+ Votre pipeline échoue à une étape intermédiaire. Les étapes précédentes de l’exécution, telles que la préparation des données ou l’extraction des caractéristiques, sont coûteuses à réexécuter. Il se peut que vous deviez introduire une correction ou réexécuter certaines étapes manuellement pour terminer le pipeline. 

En utilisant l’exécution sélective, vous pouvez choisir d’exécuter n’importe quel sous-ensemble d’étapes à condition qu’elles soient connectées dans le graphe orienté acyclique (DAG) de votre pipeline. Par exemple, le graphe DAG suivant montre un exemple de flux de travail de pipeline :

![\[Graphe orienté acyclique (DAG) d’un exemple de pipeline.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/pipeline-full.png)


Vous pouvez sélectionner les étapes `AbaloneTrain` et `AbaloneEval` d’une exécution sélective, mais vous ne pouvez pas sélectionner uniquement les étapes `AbaloneTrain` et `AbaloneMSECond`, car ces étapes ne sont pas connectées dans le graphe DAG. Pour les étapes non sélectionnées du flux de travail, l’exécution sélective réutilise les sorties d’une exécution de pipeline de référence au lieu de réexécuter les étapes. De même, les étapes non sélectionnées situées en aval des étapes sélectionnées ne sont pas exécutées dans le cadre d’une exécution sélective. 

Si vous choisissez d'exécuter un sous-ensemble d'étapes intermédiaires dans votre pipeline, vos étapes peuvent dépendre des étapes précédentes. SageMaker L'IA a besoin d'une exécution de pipeline de référence à partir de laquelle financer ces dépendances. Par exemple, si vous choisissez d’exécuter les étapes `AbaloneTrain` et `AbaloneEval`, vous avez besoin des résultats de l’étape `AbaloneProcess`. Vous pouvez soit fournir un ARN d'exécution de référence, soit demander à l' SageMaker IA d'utiliser la dernière exécution du pipeline, qui est le comportement par défaut. Si vous avez une exécution de référence, vous pouvez également générer les paramètres d’exécution à partir de votre exécution de référence et les fournir à votre exécution sélective avec des remplacements. Pour en savoir plus, consultez [Réutiliser les valeurs des paramètres d’exécution à partir d’une exécution de référence](#pipelines-selective-ex-reuse).

En détail, vous fournissez une configuration pour votre exécution de pipeline d’exécution sélective en utilisant l’élément `SelectiveExecutionConfig`. Si vous incluez un ARN pour l'exécution d'un pipeline de référence (avec l'`source_pipeline_execution_arn`argument), SageMaker AI utilise les dépendances de l'étape précédente par rapport à l'exécution du pipeline que vous avez fournie. Si vous n'incluez pas d'ARN et qu'une dernière exécution de pipeline existe, SageMaker AI l'utilise comme référence par défaut. Si vous n'incluez pas d'ARN et que vous ne souhaitez pas que l' SageMaker IA utilise la dernière exécution de votre pipeline, définissez `reference_latest_execution` sur`False`. L'exécution du pipeline que l' SageMaker IA utilise finalement comme référence, qu'elle soit la plus récente ou spécifiée par l'utilisateur, doit être en `Success` cours `Failed` d'exécution.

Le tableau suivant résume la manière dont l' SageMaker IA choisit une exécution de référence.


| Valeur de l’argument `source_pipeline_execution_arn` | Valeur de l’argument `reference_latest_execution` | Exécution de référence utilisée | 
| --- | --- | --- | 
| Un ARN de pipeline | `True` ou non spécifiée | L’ARN de pipeline spécifié | 
| Un ARN de pipeline | `False` | L’ARN de pipeline spécifié | 
| null ou non spécifiée | `True` ou non spécifiée | La dernière exécution du pipeline | 
| null ou non spécifiée | `False` | Aucune : dans ce cas, sélectionnez des étapes sans dépendances en amont | 

Pour plus d'informations sur les exigences de configuration de l'exécution sélective, consultez le document [sagemaker.workflow.selective\$1execution\$1config. SelectiveExecutionConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#selective-execution-config)documentation.

La discussion suivante inclut des exemples pour les cas où vous souhaitez spécifier une exécution de référence de pipeline, utiliser la dernière exécution de pipeline comme référence ou exécuter une exécution sélective sans exécution de pipeline de référence.

## Exécution sélective avec une référence de pipeline spécifiée par l’utilisateur
<a name="pipelines-selective-ex-arn"></a>

L’exemple suivant illustre une exécution sélective des étapes `AbaloneTrain` et `AbaloneEval` à l’aide d’une exécution de pipeline de référence.

```
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig

selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", 
    selected_steps=["AbaloneTrain", "AbaloneEval"]
)

selective_execution = pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Exécution sélective avec la dernière exécution du pipeline comme référence
<a name="pipelines-selective-ex-latest"></a>

L’exemple suivant illustre une exécution sélective des étapes `AbaloneTrain` et `AbaloneEval` à l’aide de la dernière exécution du pipeline comme référence. Étant donné que l' SageMaker IA utilise par défaut la dernière exécution du pipeline, vous pouvez éventuellement définir l'`reference_latest_execution`argument sur`True`.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneTrain", "AbaloneEval"],
    # optional
    reference_latest_execution=True
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Exécution sélective sans pipeline de référence
<a name="pipelines-selective-ex-none"></a>

L'exemple suivant montre une exécution sélective des étapes`AbaloneProcess`, `AbaloneTrain` sans fournir d'ARN de référence et en désactivant l'option permettant d'utiliser le dernier pipeline exécuté comme référence. SageMaker L'IA autorise cette configuration car ce sous-ensemble d'étapes ne dépend pas des étapes précédentes.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneProcess", "AbaloneTrain"],
    reference_latest_execution=False
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Réutiliser les valeurs des paramètres d’exécution à partir d’une exécution de référence
<a name="pipelines-selective-ex-reuse"></a>

Vous pouvez générer les paramètres à partir de l’exécution de votre pipeline de référence à l’aide de `build_parameters_from_execution`, et fournir le résultat à votre pipeline d’exécution sélective. Vous pouvez utiliser les paramètres d’origine de l’exécution de référence ou appliquer des remplacements à l’aide de l’argument `parameter_value_overrides`.

L’exemple suivant montre comment générer des paramètres à partir d’une exécution de référence et appliquer un remplacement pour le paramètre `MseThreshold`.

```
# Prepare a new selective execution.
selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    selected_steps=["AbaloneTrain", "AbaloneEval", "AbaloneMSECond"],
)
# Define a new parameters list to test.
new_parameters_mse={
    "MseThreshold": 5,
}

# Build parameters from reference execution and override with new parameters to test.
new_parameters = pipeline.build_parameters_from_execution(
    pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    parameter_value_overrides=new_parameters_mse
)

# Start pipeline execution with new parameters.
execution = pipeline.start(
    selective_execution_config=selective_execution_config,
    parameters=new_parameters
)
```

# Calcul de référence, détection de la dérive et cycle de vie avec Amazon SageMaker Pipelines ClarifyCheck et QualityCheck étapes
<a name="pipelines-quality-clarify-baseline-lifecycle"></a>

La rubrique suivante explique comment les lignes de base et les versions des modèles évoluent dans les Amazon SageMaker Pipelines lors de l'utilisation des [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check) étapes [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check) et.

Pour l’étape `ClarifyCheck`, une référence est un fichier unique qui se trouve dans les propriétés de l’étape avec le suffixe `constraints`. Pour l'étape `QualityCheck`, une référence est une combinaison de deux fichiers qui se trouve dans les propriétés de l'étape : l'un avec le suffixe `statistics`, et l'autre avec le suffixe `constraints`. Dans les rubriques suivantes, nous abordons ces propriétés avec un préfixe qui décrit comment elles sont utilisées, en influençant le comportement de la référence et le cycle de vie dans ces deux étapes de pipeline. Par exemple, l’étape `ClarifyCheck` calcule et affecte toujours les nouvelles références dans la propriété `CalculatedBaselineConstraints` et l’étape `QualityCheck` fait la même chose dans les propriétés `CalculatedBaselineConstraints` et `CalculatedBaselineStatistics`.

## Calcul de base, enregistrement ClarifyCheck et QualityCheck étapes
<a name="pipelines-quality-clarify-baseline-calculations"></a>

Les étapes `ClarifyCheck` et `QualityCheck` calculent toutes deux toujours les nouvelles références en fonction des entrées d’étape dans l’exécution de la tâche de traitement sous-jacente. Ces références recalculées sont accessibles via les propriétés avec le préfixe `CalculatedBaseline`. Vous pouvez enregistrer ces propriétés en tant que `ModelMetrics` de votre package modèle dans l'étape [Étape du modèle](build-and-manage-steps-types.md#step-type-model). Ce modèle peut être enregistré avec 5 références différentes. Vous pouvez l'enregistrer avec une référence pour chaque type de contrôle : biais de données, biais de modèle et explicabilité de modèle à partir de l'exécution de l'étape `ClarifyCheck` et de la qualité de modèle et qualité des données à partir de l'exécution de l'étape `QualityCheck`. Le paramètre `register_new_baseline` dicte la valeur définie dans les propriétés avec le préfixe `BaselineUsedForDriftCheck` après l’exécution d’une étape.

Le tableau suivant des cas d'utilisation potentiels montre les différents comportements résultant des paramètres d'étape que vous pouvez définir pour les étapes `ClarifyCheck` et `QualityCheck` :


| Cas d'utilisation possible que vous pouvez prendre en compte pour sélectionner cette configuration  | `skip_check` / `register_new_baseline` | L’étape effectue-t-elle une vérification de dérive ? | Valeur de la propriété d'étape `CalculatedBaseline` | Valeur de la propriété d’étape `BaselineUsedForDriftCheck` | 
| --- | --- | --- | --- | --- | 
| Vous effectuez un nouvel entraînement régulier avec vérifications activées pour obtenir une nouvelle version de modèle, mais vous *souhaitez reporter des références précédentes* comme `DriftCheckBaselines` dans le registre de modèles pour votre nouvelle version de modèle. | False/ False | La vérification de dérive est exécutée par rapport aux références existantes | Nouvelles références calculées en exécutant l'étape | Référence du dernier modèle approuvé dans le registre de modèles ou référence fournie en tant que paramètre d’étape | 
| Vous effectuez un nouvel entraînement régulier avec vérifications activées pour obtenir une nouvelle version de modèle, mais vous *souhaitez actualiser les `DriftCheckBaselines` dans le registre de modèles avec les références recalculées* pour votre nouvelle version de modèle. | False/ True | La vérification de dérive est exécutée par rapport aux références existantes | Nouvelles références calculées en exécutant l'étape | Référence recalculée en exécutant l’étape (valeur de la propriété CalculatedBaseline) | 
| Vous lancez le pipeline de recyclage d'une nouvelle version de modèle car une violation a été détectée par Amazon SageMaker Model Monitor sur un terminal pour un type de contrôle particulier, et vous souhaitez *ignorer ce type de vérification par rapport à la référence précédente, mais conserver la référence précédente comme `DriftCheckBaselines` dans le registre des modèles* de votre nouvelle version de modèle. | True/ False | Pas de vérification de dérive | Nouvelles références calculées par l'exécution | Référence du dernier modèle approuvé dans le registre des modèles ou référence fournie en tant que paramètre d'étape | 
| Une telle situation se produit dans les cas suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html)  | True/ True | Pas de vérification de dérive | Nouvelles références calculées en exécutant l'étape | Référence recalculée en exécutant l’étape (valeur de la propriété CalculatedBaseline) | 

**Note**  
Si vous utilisez la notation scientifique dans votre contrainte, vous devez la convertir en nombre flottant. Pour obtenir un exemple de script de prétraitement montrant la façon de procéder, consultez [Créer une tâche de référence de qualité des modèles](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-baseline.html).

Lorsque vous enregistrez un modèle avec l’interface [Étape du modèle](build-and-manage-steps-types.md#step-type-model), vous pouvez enregistrer la propriété `BaselineUsedForDriftCheck` en tant que `DriftCheckBaselines`. Ces fichiers de référence peuvent ensuite être utilisés par Model Monitor pour les vérifications de qualité des modèles et des données. En outre, ces lignes de base peuvent également être utilisées dans l'`QualityCheck`étape ClarifyCheckStep and pour comparer les modèles nouvellement entraînés aux modèles existants enregistrés dans le registre des modèles pour les futurs cycles de pipeline.

## Détection de dérive par rapport aux références précédentes dans Pipelines
<a name="pipelines-quality-clarify-baseline-drift-detection"></a>

Dans le cas de l'étape `QualityCheck`, lorsque vous lancez le pipeline pour un nouvel entraînement régulier afin d'obtenir une nouvelle version de modèle, vous ne devez peut-être pas exécuter l'étape d'entraînement si la qualité des données et le biais des données ont [Schéma des violations (fichier constraint\$1violations.json)](model-monitor-interpreting-violations.md) sur les références de votre version de modèle approuvée précédente. Il se peut également que vous ne deviez pas enregistrer la version du modèle nouvellement entraîné si la qualité du modèle, le biais du modèle ou l’explicabilité du modèle enfreint la référence enregistrée de votre version de modèle approuvée précédente lors de l’exécution de l’étape `ClarifyCheck`. Dans ces cas, vous pouvez activer les vérifications que vous souhaitez en définissant la propriété `skip_check` de l'étape de vérification correspondante sur `False`, afin d'entraîner l'échec des étapes `ClarifyCheck` et `QualityCheck` si une violation est détectée par rapport aux références précédentes. Le processus de pipeline ne se poursuit donc pas, de sorte que le modèle dérivé de la référence ne soit pas enregistré. Les étapes `ClarifyCheck` et `QualityCheck` sont capables d’obtenir les `DriftCheckBaselines` de la dernière version de modèle approuvée d’un groupe de modèles donné pour effectuer la comparaison. Les références précédentes peuvent également être fournies directement via les `supplied_baseline_constraints` (en plus des `supplied_baseline_statistics` s’il s’agit d’une étape `QualityCheck`) et sont toujours prioritaires par rapport à toutes les références extraites du groupe de package de modèles. 

## Cycle de vie et évolution de la version de référence et du modèle avec Pipelines
<a name="pipelines-quality-clarify-baseline-evolution"></a>

En définissant la `register_new_baseline` de vos étapes `ClarifyCheck` et `QualityCheck` sur `False`, votre configuration de référence précédente est accessible via le préfixe de la propriété d’étape `BaselineUsedForDriftCheck`. Vous pouvez ensuite enregistrer ces lignes de base en tant que `DriftCheckBaselines` dans la nouvelle version du modèle lorsque vous enregistrez un modèle auprès de [Étape du modèle](build-and-manage-steps-types.md#step-type-model). Une fois que vous avez approuvé cette nouvelle version de modèle dans le registre de modèles, la `DriftCheckBaseline` de cette version de modèle devient disponible pour les étapes `ClarifyCheck` et `QualityCheck` du prochain processus de pipeline. Si vous souhaitez actualiser la référence d'un type de vérification précis pour les futures versions de modèle, vous pouvez définir `register_new_baseline` sur `True` de sorte que les propriétés avec le préfixe `BaselineUsedForDriftCheck` deviennent la référence recalculée. Ainsi, vous pouvez conserver vos références préférées pour un modèle qui sera entraîné à l’avenir, ou actualiser les références pour les vérifications de dérive si nécessaire, en gérant l’évolution et le cycle de vie des références tout au long de vos itérations d’entraînement de modèle. 

Le schéma suivant illustre une model-version-centric vue de l'évolution et du cycle de vie de base.

![\[model-version-centricVue de l'évolution et du cycle de vie de base.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/pipelines/Baseline-Lifecycle.png)


# Planification d’exécutions d’un pipeline
<a name="pipeline-eventbridge"></a>

Vous pouvez planifier vos exécutions Amazon SageMaker Pipelines à l'aide d'[Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html). Amazon SageMaker Pipelines est pris en charge en tant que cible dans [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html). Cela vous permet de lancer l’exécution de votre pipeline de création de modèle en fonction de n’importe quel événement dans votre bus d’événements. Vous pouvez ainsi automatiser l'exécution de votre pipeline et répondre automatiquement à des événements tels que les modifications du poste de formation ou de l'état des terminaux. EventBridge Les événements incluent le chargement d'un nouveau fichier dans votre compartiment Amazon S3, un changement de statut de votre point de terminaison Amazon SageMaker AI dû à une dérive et des sujets liés au *Amazon Simple Notification Service* (SNS).

Les actions Pipelines suivantes peuvent être lancées automatiquement :  
+  `StartPipelineExecution` 

Pour plus d'informations sur la planification des tâches SageMaker liées à l'IA, consultez [Automatiser l' SageMaker IA avec Amazon EventBridge](https://docs.aws.amazon.com/sagemaker/latest/dg/automating-sagemaker-with-eventbridge.html). 

**Topics**
+ [Planifier un pipeline avec Amazon EventBridge](#pipeline-eventbridge-schedule)
+ [Planifier un pipeline avec le SDK SageMaker Python](#build-and-manage-scheduling)

## Planifier un pipeline avec Amazon EventBridge
<a name="pipeline-eventbridge-schedule"></a>

Pour démarrer l'exécution d'un pipeline avec Amazon CloudWatch Events, vous devez créer une EventBridge [règle](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Rule.html). Lorsque vous créez une règle pour les événements, vous spécifiez une action cible à entreprendre lorsque EventBridge vous recevez un événement correspondant à la règle. Lorsqu'un événement correspond à la règle, EventBridge envoie l'événement à la cible spécifiée et lance l'action définie dans la règle. 

 Les didacticiels suivants montrent comment planifier l'exécution d'un pipeline à EventBridge l'aide de la EventBridge console ou du AWS CLI.  

### Conditions préalables
<a name="pipeline-eventbridge-schedule-prerequisites"></a>
+ Un rôle qui EventBridge peut être assumé avec l'`SageMaker::StartPipelineExecution`autorisation. Ce rôle peut être créé automatiquement si vous créez une règle depuis la EventBridge console ; dans le cas contraire, vous devez créer ce rôle vous-même. Pour plus d'informations sur la création d'un rôle d' SageMaker IA, consultez la section [SageMaker Rôles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).
+ Un Amazon SageMaker AI Pipeline à planifier. Pour créer un pipeline Amazon SageMaker AI, consultez [Définir un pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html).

### Création d'une EventBridge règle à l'aide de la EventBridge console
<a name="pipeline-eventbridge-schedule-console"></a>

 La procédure suivante montre comment créer une EventBridge règle à l'aide de la EventBridge console.  

1. Accédez à la [console EventBridge ](https://console.aws.amazon.com/events). 

1. Sélectionnez **Rules** (Règles) sur le côté gauche. 

1.  Sélectionnez `Create Rule`. 

1. Saisissez un nom et une description pour la règle.

1.  Sélectionnez comment vous souhaitez initier cette règle. Vous avez les choix suivants pour votre règle : 
   + **Modèle d'événement** : votre règle est lancée lorsqu'un événement correspondant au modèle se produit. Vous pouvez choisir un modèle prédéfini qui correspond à un certain type d'événement ou créer un modèle personnalisé. Si vous sélectionnez un motif prédéfini, vous pouvez le modifier pour le personnaliser. Pour plus d'informations sur les modèles d'événements, voir [Modèles d'événements dans les CloudWatch événements](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html). 
   + **Planification** : votre règle est lancée régulièrement selon une planification spécifiée. Vous pouvez utiliser un programme à taux fixe qui se lance régulièrement pendant un nombre spécifié de minutes, d'heure ou de semaines. Vous pouvez également utiliser une [expression cron](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) pour créer un horaire plus précis, comme « le premier lundi de chaque mois à 8 h ». La planification n'est pas prise en charge sur un bus d'événement personnalisé ou partenaire. 

1. Sélectionnez le bus d’événement de votre choix. 

1. Sélectionnez la ou les cibles à appeler lorsqu'un événement correspond à votre modèle d'événement ou lorsque la planification est lancée. Vous pouvez ajouter jusqu'à 5 cibles par règle. Sélectionnez `SageMaker Pipeline` dans la liste déroulante cible. 

1. Sélectionnez le pipeline que vous souhaitez lancer dans la liste déroulante du pipeline. 

1. Ajoutez des paramètres à transmettre à l’exécution de votre pipeline à l’aide d’une paire nom et valeur. Les valeurs des paramètres peuvent être statiques ou dynamiques. Pour plus d'informations sur les paramètres d'Amazon SageMaker AI Pipeline, consultez [AWS::Events::Rule SagemakerPipelineParameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html#aws-resource-sagemaker-pipeline-properties).
   + Les valeurs statiques sont transmises à l’exécution du pipeline chaque fois que le pipeline est lancé. Par exemple, s'il `{"Name": "Instance_type", "Value": "ml.4xlarge"}` est spécifié dans la liste des paramètres, il est transmis en tant que paramètre à `StartPipelineExecutionRequest` chaque fois que le pipeline EventBridge est lancé. 
   + Les valeurs dynamiques sont spécifiées à l'aide d'un chemin JSON. EventBridge analyse la valeur d'une charge utile d'événement, puis la transmet à l'exécution du pipeline. Par exemple : *`$.detail.param.value`* 

1. Sélectionnez le rôle à utiliser pour cette règle. Vous pouvez utiliser un rôle existant ou en créer un. 

1. (Facultatif) Ajoutez des balises. 

1. Sélectionnez `Create` pour finaliser votre règle. 

 Votre règle est maintenant en vigueur et prête à lancer les exécutions de votre pipeline. 

### Créez une EventBridge règle à l'aide du [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/events/index.html)
<a name="pipeline-eventbridge-schedule-cli"></a>

 La procédure suivante montre comment créer une EventBridge règle à l'aide du AWS CLI. 

1. Créez une règle à lancer. Lorsque vous créez une EventBridge règle à l'aide du AWS CLI, deux options s'offrent à vous pour lancer votre règle : le modèle d'événement et le calendrier.
   +  **Modèle d'événement** : votre règle est lancée lorsqu'un événement correspondant au modèle se produit. Vous pouvez choisir un modèle prédéfini qui correspond à un certain type d'événement ou créer un modèle personnalisé. Si vous sélectionnez un motif prédéfini, vous pouvez le modifier pour le personnaliser.  Vous pouvez créer une règle avec un modèle d’événement à l’aide de la commande suivante : 

     ```
     aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```
   +  **Planification** : votre règle est lancée régulièrement selon une planification spécifiée. Vous pouvez utiliser un programme à taux fixe qui se lance régulièrement pendant un nombre spécifié de minutes, d'heure ou de semaines. Vous pouvez également utiliser une expression cron pour créer un horaire plus précis, comme « le premier lundi de chaque mois à 8 h ». La planification n'est pas prise en charge sur un bus d'événement personnalisé ou partenaire. Vous pouvez créer une règle avec une planification à l’aide de la commande suivante : 

     ```
     aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```

1. Ajoutez une ou plusieurs cibles à appeler lorsqu'un événement correspond à votre modèle d'événement ou lorsque la planification est lancée. Vous pouvez ajouter jusqu’à 5 cibles par règle.  Pour chaque cible, vous devez spécifier les éléments suivants :  
   +  ARN : ARN de ressource de votre pipeline. 
   +  ARN du rôle : l'ARN du rôle EventBridge doit être supposé exécuter le pipeline. 
   +  Paramètres : paramètres du pipeline Amazon SageMaker AI à transmettre. 

1. Exécutez la commande suivante pour transmettre un pipeline Amazon SageMaker AI en tant que cible à votre règle à l'aide de [put-targets](https://docs.aws.amazon.com/cli/latest/reference/events/put-targets.html) : 

   ```
   aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 
   ```

## Planifier un pipeline avec le SDK SageMaker Python
<a name="build-and-manage-scheduling"></a>

Les sections suivantes vous montrent comment configurer les autorisations d'accès aux EventBridge ressources et créer votre calendrier de pipeline à l'aide du SDK SageMaker Python. 

### Autorisations requises
<a name="build-and-manage-scheduling-permissions"></a>

Vous devez posséder les autorisations nécessaires pour utiliser le planificateur de pipeline. Suivez la procédure ci-dessous pour configurer vos autorisations :

1. Associez la politique de privilèges minimaux suivante au rôle IAM utilisé pour créer les déclencheurs du pipeline, ou utilisez la politique AWS `AmazonEventBridgeSchedulerFullAccess` gérée.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Action":
               [
                   "scheduler:ListSchedules",
                   "scheduler:GetSchedule",
                   "scheduler:CreateSchedule",
                   "scheduler:UpdateSchedule",
                   "scheduler:DeleteSchedule"
               ],
               "Effect": "Allow",
               "Resource":
               [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*", 
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "scheduler.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Établissez une relation de confiance avec EventBridge en ajoutant le principal de service `scheduler.amazonaws.com` à la politique de confiance de ce rôle. Assurez-vous d'associer la politique de confiance suivante au rôle d'exécution si vous lancez le bloc-notes dans SageMaker Studio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "scheduler.amazonaws.com",
                    "sagemaker.amazonaws.com"
                ]
            },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

### Création d’une planification de pipeline
<a name="build-and-manage-scheduling-create"></a>

À l’aide du constructeur `PipelineSchedule`, vous pouvez planifier l’exécution d’un pipeline une fois ou à un intervalle prédéterminé. Une planification de pipeline doit être du type `at`, `rate` ou `cron`. Cet ensemble de types de planification est une extension des [options de EventBridge planification](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html). Pour plus d'informations sur l'utilisation de la `PipelineSchedule` classe, consultez [sagemaker.workflow.triggers. PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#pipeline-schedule). L’exemple suivant montre comment créer chaque type de planification avec `PipelineSchedule`.

```
from sagemaker.workflow.triggers import PipelineSchedule

# schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC
my_datetime_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(2023, 12, 13, 10, 15, 20)
)

# schedules a pipeline run every 5 minutes
my_rate_schedule = PipelineSchedule(
    name="<schedule-name>", 
    rate=(5, "minutes")
)

# schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023
my_cron_schedule = PipelineSchedule(
    name="<schedule-name>", 
    cron="15 10 ? * 6L 2022-2023"
)
```

**Note**  
Si vous créez une planification ponctuelle et que vous devez accéder à l’heure actuelle, utilisez `datetime.utcnow()` à la place de `datetime.now()`. Ce dernier ne stocke pas le contexte de zone actuel et entraîne un transfert d'heure incorrect EventBridge.

### Attachement du déclencheur à votre pipeline
<a name="build-and-manage-scheduling-attach"></a>

Pour attacher votre `PipelineSchedule` à votre pipeline, invoquez l’appel `put_triggers` sur l’objet de pipeline que vous avez créé avec une liste de déclencheurs. Si vous obtenez un ARN de réponse, vous avez créé avec succès le calendrier dans votre compte et EventBridge vous commencez à appeler le pipeline cible à l'heure ou au rythme spécifiés. Vous devez spécifier un rôle doté des autorisations appropriées pour attacher des déclencheurs à un pipeline parent. Si vous n’en fournissez pas, Pipelines récupère le rôle par défaut utilisé pour créer le pipeline à partir du [fichier de configuration](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html).

L’exemple suivant montre comment attacher une planification à un pipeline.

```
scheduled_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[...],
    sagemaker_session=<sagemaker-session>,
)
custom_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30)
)
scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)
```

### Description des déclencheurs actuels
<a name="build-and-manage-scheduling-describe"></a>

Pour extraire des informations sur les déclencheurs de pipeline que vous avez créés, vous pouvez invoquer l’API `describe_trigger()` avec le nom du déclencheur. Cette commande renvoie des détails sur l’expression de planification créée, tels que son heure de début, son état activé et d’autres informations utiles. L’extrait de code suivant montre un exemple d’invocation :

```
scheduled_pipeline.describe_trigger(name="<schedule-name>")
```

### Nettoyage des ressources des déclencheurs
<a name="build-and-manage-scheduling-clean"></a>

Avant de supprimer votre pipeline, nettoyez les déclencheurs existants pour éviter une fuite de ressources dans votre compte. Vous devez supprimer les déclencheurs avant de détruire le pipeline parent. Vous pouvez supprimer vos déclencheurs en transmettant la liste des noms de déclencheurs à l’API `delete_triggers`. L’extrait de code suivant montre comment supprimer des déclencheurs.

```
pipeline.delete_triggers(trigger_names=["<schedule-name>"])
```

**Note**  
Tenez compte des limitations suivantes lorsque vous supprimez vos déclencheurs :  
L'option permettant de supprimer les déclencheurs en spécifiant les noms des déclencheurs n'est disponible que dans le SDK SageMaker Python. La suppression du pipeline dans l’interface de ligne de commande ou dans un appel d’API `DeletePipeline` ne supprime pas vos déclencheurs. Par conséquent, les déclencheurs deviennent orphelins et l' SageMaker IA tente de lancer une course pour un pipeline inexistant.
De même, si vous utilisez une autre session de bloc-notes ou si vous avez déjà supprimé la cible du pipeline, nettoyez les plannings orphelins via la [ EventBridge CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/delete-schedule.html) ou la console du planificateur.

# Amazon SageMaker expérimente l'intégration
<a name="pipelines-experiments"></a>

Amazon SageMaker Pipelines est étroitement intégré à Amazon SageMaker Experiments. Par défaut, lorsque Pipelines crée et exécute un pipeline, les entités SageMaker Experiments suivantes sont créées si elles n'existent pas :
+ Une expérience pour le pipeline
+ Un groupe d’exécution pour chaque exécution du pipeline
+ Une exécution ajoutée au groupe d'exécution pour chaque tâche d' SageMaker IA créée lors d'une étape d'exécution du pipeline

Vous pouvez comparer des indicateurs tels que la précision de l'entraînement des modèles entre plusieurs exécutions de pipeline, tout comme vous pouvez comparer ces indicateurs entre plusieurs groupes d'essais d'une expérience d'entraînement de modèle d' SageMaker IA.

L'exemple suivant montre les paramètres pertinents de la classe [Pipeline](https://github.com/aws/sagemaker-python-sdk/blob/v2.41.0/src/sagemaker/workflow/pipeline.py) dans le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

```
Pipeline(
    name="MyPipeline",
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[...]
)
```

Si vous ne souhaitez pas qu'une expérience et un essai soient créés pour le pipeline, définissez `pipeline_experiment_config` sur `None`.

**Note**  
L'intégration des expériences a été introduite dans le SDK Amazon SageMaker Python v2.41.0.

Les règles de dénomination suivantes s'appliquent en fonction de ce que vous spécifiez pour les paramètres `ExperimentName` et `TrialName` de `pipeline_experiment_config` :
+ Si vous ne spécifiez pas `ExperimentName`, le pipeline `name` est utilisé pour le nom de l'expérience.

  Si vous spécifiez `ExperimentName`, il est utilisé pour le nom de l’expérience. Si une expérience portant ce nom existe, les groupes d'exécution créés par le pipeline sont ajoutés à l'expérience existante. Si une expérience avec ce nom n’existe pas, une expérience est créée.
+ Si vous ne spécifiez pas `TrialName`, l'ID d'exécution du pipeline est utilisé pour le nom du groupe d'exécution.

  Si vous spécifiez `TrialName`, il est utilisé pour le nom du groupe d'exécution. Si une expérience portant ce nom existe, les exécutions créées par le pipeline sont ajoutées au groupe d'exécution existant. Si un groupe d'exécution portant ce nom n'existe pas, un groupe d'exécution est créé.

**Note**  
Les entités d’expérience ne sont pas supprimées lorsque le pipeline qui a créé les entités est supprimé. Vous pouvez utiliser l'API SageMaker Experiments pour supprimer les entités.

Pour plus d'informations sur la façon d'afficher les entités SageMaker AI Experiment associées à un pipeline, consultez[Accès aux données d’expérience d’un pipeline](pipelines-studio-experiments.md). Pour plus d'informations sur SageMaker les expériences, voir[Amazon SageMaker expérimente dans Studio Classic](experiments.md).

Les sections suivantes présentent des exemples des règles précédentes et la manière dont elles sont représentées dans le fichier de définition de pipeline. Pour plus d’informations sur les fichiers de définition de pipeline, consultez [Présentation des pipelines](pipelines-overview.md).

**Topics**
+ [Comportement par défaut](pipelines-experiments-default.md)
+ [Désactiver l'intégration d'Experiments](pipelines-experiments-none.md)
+ [Spécifier un nom d’expérience personnalisé](pipelines-experiments-custom-experiment.md)
+ [Spécifier un nom de groupe d’exécution personnalisé](pipelines-experiments-custom-trial.md)

# Comportement par défaut
<a name="pipelines-experiments-default"></a>

**Création d’un pipeline**

Le comportement par défaut lors de la création d'un pipeline d' SageMaker IA est de l'intégrer automatiquement à SageMaker Experiments. Si vous ne spécifiez aucune configuration personnalisée, SageMaker AI crée une expérience portant le même nom que le pipeline, un groupe d'exécution pour chaque exécution du pipeline en utilisant l'ID d'exécution du pipeline comme nom, et des essais individuels au sein de chaque groupe d'exécution pour chaque tâche d' SageMaker IA lancée dans le cadre des étapes du pipeline. Vous pouvez facilement suivre et comparer les métriques entre les différentes exécutions de pipeline, de la même manière que vous analyseriez une expérience d’entraînement des modèles. La section suivante illustre ce comportement par défaut lors de la définition d’un pipeline sans configurer explicitement l’intégration de l’expérience.

Le `pipeline_experiment_config` est omis. `ExperimentName` est défini par défaut sur le pipeline `name`. `TrialName` est défini par défaut sur l’ID d’exécution.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    steps=[step_train]
)
```

**Fichier de définition de pipeline**

```
{
  "Version": "2020-12-01",
  "Parameters": [
    {
      "Name": "InputDataSource"
    },
    {
      "Name": "InstanceCount",
      "Type": "Integer",
      "DefaultValue": 1
    }
  ],
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Désactiver l'intégration d'Experiments
<a name="pipelines-experiments-none"></a>

**Création d’un pipeline**

Vous pouvez désactiver l'intégration de votre pipeline à SageMaker Experiments en définissant le `pipeline_experiment_config` paramètre sur `None` lorsque vous définissez votre pipeline. Ainsi, l' SageMaker IA ne créera pas automatiquement une expérience, des groupes d'essais ou des essais individuels pour suivre les métriques et les artefacts associés aux exécutions de votre pipeline. L’exemple suivant définit le paramètre de configuration du pipeline sur `None`.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=None,
    steps=[step_train]
)
```

**Fichier de définition de pipeline**

Il est identique à l'exemple par défaut précédent, sans le `PipelineExperimentConfig`.

# Spécifier un nom d’expérience personnalisé
<a name="pipelines-experiments-custom-experiment"></a>

Bien que le comportement par défaut soit d'utiliser le nom du pipeline comme nom de l'expérience dans les SageMaker expériences, vous pouvez le remplacer et spécifier un nom d'expérience personnalisé à la place. Cela peut être utile si vous souhaitez regrouper plusieurs exécutions de pipeline sous la même expérience pour faciliter leur analyse et leur comparaison. Le nom du groupe d’exécution restera par défaut l’ID d’exécution du pipeline, sauf si vous définissez également explicitement un nom personnalisé pour celui-ci. La section suivante explique comment créer un pipeline avec un nom d’expérience personnalisé tout en conservant le nom du groupe d’exécution comme ID d’exécution par défaut.

**Création d’un pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      "CustomExperimentName",
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[step_train]
)
```

**Fichier de définition de pipeline**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": "CustomExperimentName",
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Spécifier un nom de groupe d’exécution personnalisé
<a name="pipelines-experiments-custom-trial"></a>

Outre la définition d'un nom d'expérience personnalisé, vous pouvez également spécifier un nom personnalisé pour les groupes d'exécution créés par les SageMaker expériences lors des exécutions de pipeline. Ce nom est ajouté à l’ID d’exécution du pipeline pour garantir l’unicité. Vous pouvez spécifier un nom de groupe d’exécution personnalisé pour identifier et analyser les exécutions de pipeline associées au cours de la même expérience. La section suivante montre comment définir un pipeline avec un nom de groupe d’exécution personnalisé tout en utilisant le nom de pipeline par défaut pour le nom de l’expérience.

**Création d’un pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      Join(on="-", values=["CustomTrialName", ExecutionVariables.PIPELINE_EXECUTION_ID])
    ),
    steps=[step_train]
)
```

**Fichier de définition de pipeline**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {
      "On": "-",
      "Values": [
         "CustomTrialName",
         {"Get": "Execution.PipelineExecutionId"}
       ]
    }
  },
  "Steps": [...]
}
```

# Exécution de pipelines en mode local
<a name="pipelines-local-mode"></a>

SageMaker Le mode local de pipelines est un moyen simple de tester vos scripts d'entraînement, de traitement et d'inférence, ainsi que la compatibilité d'exécution des [paramètres de pipeline](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#pipeline-parameters) avant d'exécuter votre pipeline sur le service d' SageMaker IA géré. En utilisant le mode local, vous pouvez tester votre pipeline d' SageMaker IA localement à l'aide d'un ensemble de données plus petit. Cela permet de déboguer rapidement et facilement les erreurs dans les scripts utilisateur et dans la définition du pipeline elle-même, sans encourir les coûts liés à l’utilisation du service géré. La rubrique suivante explique comment définir et exécuter des pipelines localement.

Le mode local de Pipelines tire parti du [mode local des jobs d'SageMaker IA](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) sous le capot. Il s'agit d'une fonctionnalité du SDK SageMaker Python qui vous permet d'exécuter des images personnalisées ou intégrées à l' SageMaker IA localement à l'aide de conteneurs Docker. Le mode local de Pipelines est basé sur le mode local des jobs d' SageMaker IA. Par conséquent, vous pouvez vous attendre à obtenir les mêmes résultats que si vous exécutiez ces tâches séparément. Par exemple, le mode local utilise toujours Amazon S3 pour charger les artefacts de modèle et les résultats de traitement. Si vous souhaitez que les données générées par les tâches locales résident sur un disque local, vous pouvez utiliser la configuration mentionnée dans [Mode local](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode).

Le mode local des pipelines prend actuellement en charge les types d'étape suivants :
+ [Étape d’entraînement](build-and-manage-steps-types.md#step-type-training)
+ [Étape de traitement](build-and-manage-steps-types.md#step-type-processing)
+ [Étape de transformation](build-and-manage-steps-types.md#step-type-transform)
+ [Étape de modèle](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-model-create) (avec des arguments de création de modèle uniquement)
+ [Étape de condition](build-and-manage-steps-types.md#step-type-condition)
+ [Étape Échec](build-and-manage-steps-types.md#step-type-fail)

Contrairement au service Pipelines géré, qui permet l'exécution en parallèle de plusieurs étapes à l'aide de la [configuration du parallélisme](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parallelism-configuration), l'exécuteur de pipeline local exécute les étapes de manière séquentielle. Par conséquent, les performances d'exécution globales d'un pipeline local peuvent être inférieures à celles d'un pipeline s'exécutant dans le cloud. Cela dépend principalement de la taille du jeu de données, de l'algorithme et de la puissance de votre ordinateur local. Notez également que les pipelines exécutés en mode local ne sont pas enregistrés dans les [SageMaker expériences](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-experiments.html).

**Note**  
Le mode local de Pipelines n'est pas compatible avec les algorithmes d' SageMaker IA tels que XGBoost. Si vous voulez utiliser ces algorithmes, vous devez les utiliser en [mode script](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html).

Pour exécuter un pipeline localement, les champs `sagemaker_session` associés aux étapes du pipeline et le pipeline lui-même doivent être de type `LocalPipelineSession`. L'exemple suivant montre comment définir un pipeline d' SageMaker IA à exécuter localement.

```
from sagemaker.workflow.pipeline_context import LocalPipelineSession
from sagemaker.pytorch import PyTorch
from sagemaker.workflow.steps import TrainingStep
from sagemaker.workflow.pipeline import Pipeline

local_pipeline_session = LocalPipelineSession()

pytorch_estimator = PyTorch(
    sagemaker_session=local_pipeline_session,
    role=sagemaker.get_execution_role(),
    instance_type="ml.c5.xlarge",
    instance_count=1,
    framework_version="1.8.0",
    py_version="py36",
    entry_point="./entry_point.py",
)

step = TrainingStep(
    name="MyTrainingStep",
    step_args=pytorch_estimator.fit(
        inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data/train"),
    )
)

pipeline = Pipeline(
    name="MyPipeline",
    steps=[step],
    sagemaker_session=local_pipeline_session
)

pipeline.create(
    role_arn=sagemaker.get_execution_role(), 
    description="local pipeline example"
)

// pipeline will execute locally
execution = pipeline.start()

steps = execution.list_steps()

training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

step_outputs = pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)
```

Une fois que vous êtes prêt à exécuter le pipeline sur le service géré SageMaker Pipelines, vous pouvez le faire `LocalPipelineSession` en remplaçant l'extrait de code précédent par `PipelineSession` (comme indiqué dans l'exemple de code suivant) et en réexécutant le code.

```
from sagemaker.workflow.pipeline_context import PipelineSession

pipeline_session = PipelineSession()
```

# Résolution des problèmes liés à Amazon SageMaker Pipelines
<a name="pipelines-troubleshooting"></a>

Lorsque vous utilisez Amazon SageMaker Pipelines, vous pouvez rencontrer des problèmes pour diverses raisons. Cette rubrique fournit des informations sur les erreurs courantes et la manière de les résoudre. 

 **Problèmes de définition de pipeline** 

Il se peut que la définition de votre pipeline ne soit pas au format correct. Cela peut entraîner l'échec de l'exécution ou une tâche inexacte. Ces erreurs peuvent être constatées lorsque le pipeline est créé ou lorsqu’une exécution se produit. Si votre définition n’est pas validée, Pipelines renvoie un message d’erreur identifiant le caractère dans lequel le fichier JSON est mal formé. Pour résoudre ce problème, passez en revue les étapes créées à l'aide du SDK SageMaker AI Python pour en vérifier la précision. 

Vous ne pouvez inclure des étapes dans une définition de pipeline qu’une seule fois. Pour cette raison, les étapes ne peuvent pas exister dans le cadre d'une étape de condition *et* un pipeline dans le même pipeline. 

 **Examen des journaux de pipeline** 

Vous pouvez afficher l'état de vos étapes à l'aide de la commande suivante : 

```
execution.list_steps()
```

Chaque étape contient les informations suivantes :
+ L'ARN de l'entité lancée par le pipeline, tel que l'ARN de la tâche SageMaker AI, l'ARN du modèle ou l'ARN du package du modèle. 
+ La raison de l’échec comprend une brève explication de l’échec de l’étape.
+ Si l'étape est une étape de condition, elle indique si la condition a la valeur true ou false.  
+ Si l'exécution réutilise une exécution de tâche précédente, le `CacheHit` répertorie l'exécution source.  

Vous pouvez également consulter les messages d'erreur et les journaux dans l'interface Amazon SageMaker Studio. Pour obtenir des informations sur le mode de consultation des journaux dans Studio, consultez [Affichage des détails d’une exécution de pipeline](pipelines-studio-view-execution.md).

 **Autorisations manquantes** 

Des autorisations correctes sont requises pour le rôle qui crée l’exécution du pipeline et les étapes qui créent chacune des tâches dans l’exécution de votre pipeline. Sans ces autorisations, vous ne pourrez peut-être pas soumettre l'exécution de votre pipeline ou exécuter vos tâches d' SageMaker IA comme prévu. Pour vous assurer que vos autorisations sont correctement configurées, consultez [Gestion d'accès IAM](build-and-manage-access.md). 

 **Erreurs d’exécution de tâche** 

Vous pouvez rencontrer des problèmes lors de l'exécution de vos étapes en raison de problèmes dans les scripts qui définissent les fonctionnalités de vos tâches d' SageMaker IA. Chaque tâche possède un ensemble de CloudWatch journaux. Pour consulter ces journaux depuis Studio, consultez[Affichage des détails d’une exécution de pipeline](pipelines-studio-view-execution.md). Pour plus d'informations sur l'utilisation CloudWatch des journaux avec SageMaker l'IA, consultez[CloudWatch Journaux pour Amazon SageMaker AI](logging-cloudwatch.md). 

 **Erreurs du fichier de propriétés** 

Vous pouvez rencontrer des problèmes lors de l'implémentation incorrecte des fichiers de propriétés avec votre pipeline. Pour vous assurer que votre implémentation des fichiers de propriétés fonctionne comme prévu, consultez [Transmission de données entre les étapes](build-and-manage-propertyfile.md). 

 **Problèmes lors de la copie du script dans le conteneur du Dockerfile** 

Vous pouvez copier le script dans le conteneur ou le transmettre via l’argument `entry_point` (de votre entité estimateur) ou l’argument `code` (de votre entité processeur), comme le montre l’exemple de code suivant.

```
step_process = ProcessingStep(
    name="PreprocessAbaloneData",
    processor=sklearn_processor,
    inputs = [
        ProcessingInput(
            input_name='dataset',
            source=...,
            destination="/opt/ml/processing/code",
        )
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path),
    ],
    code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument
    cache_config = cache_config,
    job_arguments = ['--input', 'arg1']
)

sklearn_estimator = SKLearn(
    entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point
    framework_version="0.23-1",
    instance_type=training_instance_type,
    role=role,
    output_path=model_path, # New
    sagemaker_session=sagemaker_session, # New
    instance_count=1, # New
    base_job_name=f"{base_job_prefix}/pilot-train",
    metric_definitions=[
        {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'},
        {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'}
    ],
)
```

# Actions de pipeline
<a name="pipelines-build"></a>

Vous pouvez utiliser le SDK Python Amazon SageMaker Pipelines ou le concepteur drag-and-drop visuel d'Amazon SageMaker Studio pour créer, afficher, modifier, exécuter et surveiller vos flux de travail ML.

La capture d'écran suivante montre le concepteur visuel que vous pouvez utiliser pour créer et gérer vos Amazon SageMaker Pipelines.

![\[Capture d'écran de l' drag-and-dropinterface visuelle de Pipelines in Studio.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Une fois votre pipeline déployé, vous pouvez consulter le graphe acyclique dirigé (DAG) correspondant à votre pipeline et gérer vos exécutions à l'aide d'Amazon SageMaker Studio. À l'aide de SageMaker Studio, vous pouvez obtenir des informations sur vos pipelines actuels et historiques, comparer les exécutions, consulter le DAG correspondant à vos exécutions, obtenir des informations sur les métadonnées, etc. Pour découvrir comment visualiser des pipelines à partir de Studio, consultez [Affichage des détails d’un pipeline](pipelines-studio-list.md). 

**Topics**
+ [Définition d’un pipeline](define-pipeline.md)
+ [Modification d’un pipeline](edit-pipeline-before-execution.md)
+ [Exécuter un pipeline](run-pipeline.md)
+ [Arrêt d’un pipeline](pipelines-studio-stop.md)
+ [Affichage des détails d’un pipeline](pipelines-studio-list.md)
+ [Affichage des détails d’une exécution de pipeline](pipelines-studio-view-execution.md)
+ [Téléchargement du fichier de définition d’un pipeline](pipelines-studio-download.md)
+ [Accès aux données d’expérience d’un pipeline](pipelines-studio-experiments.md)
+ [Suivi de la traçabilité d’un pipeline](pipelines-lineage-tracking.md)

# Définition d’un pipeline
<a name="define-pipeline"></a>

Pour orchestrer vos flux de travail avec Amazon SageMaker Pipelines, vous devez générer un graphe acyclique dirigé (DAG) sous la forme d'une définition de pipeline JSON. Le graphique DAG spécifie les différentes étapes impliquées dans votre processus ML, telles que le prétraitement des données, l’entraînement des modèles, l’évaluation des modèles et le déploiement des modèles, ainsi que les dépendances et le flux de données entre ces étapes. La rubrique suivante explique comment générer une définition de pipeline.

Vous pouvez générer votre définition de pipeline JSON à l'aide du SDK SageMaker Python ou de la fonctionnalité visuelle drag-and-drop Pipeline Designer d'Amazon SageMaker Studio. L’image suivante est une représentation du graphique DAG du pipeline que vous créez dans ce didacticiel :

![\[Capture d'écran de l' drag-and-dropinterface visuelle de Pipelines in Studio.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Le pipeline que vous définissez dans les sections suivantes résout un problème de régression visant à déterminer l’âge d’un ormeau en fonction de ses dimensions physiques. Pour un bloc-notes Jupyter exécutable incluant le contenu de ce didacticiel, consultez [Orchestrating Jobs with Amazon SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) Model Building Pipelines.

**Note**  
Vous pouvez référencer l'emplacement du modèle en tant que propriété de l'étape d'apprentissage, comme le montre l' end-to-endexemple de [CustomerChurn pipeline](https://github.com/aws-samples/customer-churn-sagemaker-pipelines-sample/blob/main/pipelines/customerchurn/pipeline.py) sur Github.

**Topics**

## Définition d’un pipeline (concepteur de pipeline)
<a name="create-pipeline-designer"></a>

La procédure pas à pas suivante vous guide à travers les étapes de création d'un pipeline simplifié à l'aide du concepteur de drag-and-drop pipelines. Si vous devez suspendre ou mettre fin à votre session d’édition de pipeline dans le concepteur visuel à un moment quelconque, cliquez sur l’option **Exporter**. Cela vous permet de télécharger la définition actuelle de votre pipeline dans votre environnement local. Plus tard, lorsque vous souhaitez reprendre le processus d’édition du pipeline, vous pouvez importer le même fichier de définition JSON dans le concepteur visuel.

### Création d’une étape de traitement
<a name="create-processing-step"></a>

Pour créer une étape de traitement des données, 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 **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. Pour ajouter un jeu de données d’entrée, choisissez **Ajouter** sous **Données (entrée)** dans la barre latérale droite et sélectionnez un jeu de données.

1. Pour ajouter un emplacement pour enregistrer les jeux de données de sortie, choisissez **Ajouter** sous **Données (sortie)** dans la barre latérale droite et naviguez jusqu’à la destination.

1. Complétez les champs restants dans la barre latérale droite. 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).

### Création d’une étape d’entraînement
<a name="create-training-step"></a>

Pour configurer une étape d’entraînement des modèles, procédez comme suit :

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. Pour ajouter un jeu de données d’entrée, choisissez **Ajouter** sous **Données (entrée)** dans la barre latérale droite et sélectionnez un jeu de données.

1. Pour choisir un emplacement où enregistrer les artefacts de votre modèle, entrez un URI Amazon S3 dans le champ **Emplacement (URI S3)** ou choisissez **Parcourir S3** pour accéder à l’emplacement de destination.

1. Complétez les champs restants dans la barre latérale droite. 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. Cliquez sur le curseur et faites le glisser de l’étape **Traiter les données** que vous avez ajoutée dans la section précédente vers l’étape **Entraîner le modèle** pour créer une périphérie reliant les deux étapes.

### Création d’un modèle de package avec une étape d’enregistrement du modèle
<a name="create-register-model-step"></a>

Pour créer un package de modèle avec une étape d’enregistrement de modèle, procédez comme suit :

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. Pour sélectionner un modèle à enregistrer, choisissez **Ajouter** sous **Modèle (entrée)**.

1. Choisissez **Créer un groupe de modèles** pour ajouter votre modèle à un nouveau groupe de modèles.

1. Complétez les champs restants dans la barre latérale droite. 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. Cliquez sur le curseur et faites-le glisser depuis l’étape **Entraîner le modèle** que vous avez ajoutée dans la section précédente jusqu’à l’étape **Enregistrer le modèle** pour créer une périphérie reliant les deux étapes.

### Déploiement du modèle sur un point de terminaison avec une étape Déployer le modèle (point de terminaison)
<a name="create-deploy-endpoint-step"></a>

Pour déployer votre modèle à l’aide d’une étape de déploiement de modèle, procédez comme suit :

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. Pour choisir un modèle à déployer, choisissez **Ajouter** sous **Modèle (entrée)**.

1. Choisissez la case d’option **Créer un point de terminaison** pour créer un nouveau point de terminaison.

1. Entrez un **nom** et une **description** pour votre point de terminaison.

1. Cliquez sur le curseur et faites-le glisser depuis l’étape **Enregistrer le modèle** que vous avez ajoutée dans la section précédente jusqu’à l’étape **Déployer le modèle (point de terminaison)** pour créer une périphérie reliant les deux étapes.

1. Complétez les champs restants dans la barre latérale droite.

### Définition des paramètres du pipeline
<a name="define-pipeline-parameters"></a>

Vous pouvez configurer un ensemble de paramètres de pipeline dont les valeurs peuvent être mises à jour pour chaque exécution. Pour définir les paramètres du pipeline et définir les valeurs par défaut, cliquez sur l’icône représentant un engrenage en bas du concepteur visuel.

### Enregistrement du pipeline
<a name="save-pipeline"></a>

Après avoir saisi toutes les informations requises pour créer votre pipeline, cliquez sur **Enregistrer** en bas du concepteur visuel. Cela valide votre pipeline pour détecter toute erreur potentielle lors de l’exécution et vous en informe. L’opération **Enregistrer** ne réussira pas tant que vous n’aurez pas corrigé toutes les erreurs signalées par les contrôles de validation automatisés. Si vous souhaitez reprendre les modifications ultérieurement, vous pouvez enregistrer votre pipeline en cours sous forme de définition JSON dans votre environnement local. Vous pouvez exporter votre pipeline sous la forme d’un fichier de définition JSON en cliquant sur le bouton **Exporter** en bas du concepteur visuel. Plus tard, pour reprendre la mise à jour de votre pipeline, chargez ce fichier de définition JSON en cliquant sur le bouton **Importer**.

## Définition d'un pipeline (SDK SageMaker Python)
<a name="create-pipeline-wrap"></a>

### Conditions préalables
<a name="define-pipeline-prereq"></a>

 Pour exécuter le didacticiel suivant, effectuez les opérations suivantes : 
+ Configurez votre instance de bloc-notes comme indiqué dans [Création d’une instance de bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html). Cela donne à votre rôle les autorisations nécessaires pour lire et écrire sur Amazon S3, et pour créer des tâches de formation, de transformation par lots et de traitement dans l' SageMaker IA. 
+ Accordez à votre bloc-notes des autorisations pour obtenir et transmettre son propre rôle comme indiqué dans [Modification d’une politique d’autorisations de rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy). Ajoutez l'extrait JSON suivant pour attacher cette politique à votre rôle. Remplacez `<your-role-arn>` par l’ARN utilisé pour créer votre instance de bloc-notes. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/role-name"
          }
      ]
  }
  ```

------
+  Faites confiance au principal du service d' SageMaker intelligence artificielle en suivant les étapes décrites dans la section [Modification d'une politique de confiance des rôles](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli). Ajoutez le fragment d’instruction suivante à la relation de confiance de votre rôle : 

  ```
  {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "sagemaker.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
  ```

#### Configuration de votre environnement
<a name="define-pipeline-prereq-setup"></a>

Créez une nouvelle session SageMaker AI à l'aide du bloc de code suivant. Cela renvoie l’ARN du rôle pour la session. L’ARN de ce rôle doit être l’ARN du rôle d’exécution que vous avez configuré comme prérequis. 

```
import boto3
import sagemaker
import sagemaker.session
from sagemaker.workflow.pipeline_context import PipelineSession

region = boto3.Session().region_name
sagemaker_session = sagemaker.session.Session()
role = sagemaker.get_execution_role()
default_bucket = sagemaker_session.default_bucket()

pipeline_session = PipelineSession()

model_package_group_name = f"AbaloneModelPackageGroupName"
```

### Création d’un pipeline
<a name="define-pipeline-create"></a>

**Important**  
Les politiques IAM personnalisées qui permettent à Amazon SageMaker Studio ou Amazon SageMaker Studio Classic de créer des SageMaker ressources Amazon doivent également accorder des autorisations pour ajouter des balises à ces ressources. L’autorisation d’ajouter des balises aux ressources est requise, car Studio et Studio Classic balisent automatiquement toutes les ressources qu’ils créent. Si une politique IAM autorise Studio et Studio Classic à créer des ressources mais n'autorise pas le balisage, des erreurs « AccessDenied » peuvent se produire lors de la tentative de création de ressources. Pour de plus amples informations, veuillez consulter [Fournir des autorisations pour le balisage des ressources d' SageMaker IA](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiques gérées pour Amazon SageMaker AI](security-iam-awsmanpol.md)qui donnent des autorisations pour créer des SageMaker ressources incluent déjà des autorisations pour ajouter des balises lors de la création de ces ressources.

Exécutez les étapes suivantes à partir de votre instance de bloc-notes SageMaker AI pour créer un pipeline comprenant des étapes pour :
+ prétraitement
+ entraînement
+ évaluation
+ évaluation conditionnelle
+ enregistrement des modèles

**Note**  
Vous pouvez utiliser [ExecutionVariables](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables)la fonction [Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables) pour spécifier votre emplacement de sortie. `ExecutionVariables`est résolu au moment de l'exécution. Par exemple, `ExecutionVariables.PIPELINE_EXECUTION_ID` est résolu avec l’ID de l’exécution en cours, qui peut être utilisé comme identifiant unique pour différentes exécutions.

#### Étape 1 : Téléchargement du jeu de données
<a name="define-pipeline-data-download"></a>

Ce bloc-notes utilise le jeu de données Ormeau de machine learning de l'UCI. Le jeu de données contient les fonctions suivantes : 
+ `length` – Mesure de la coquille la plus longue de l'ormeau.
+ `diameter` – Le diamètre de l'ormeau perpendiculaire à sa longueur.
+ `height` – La hauteur de l'ormeau avec de la viande dans la coquille.
+ `whole_weight` – Le poids de l'ormeau entier.
+ `shucked_weight` – Le poids de la viande retirée de l'ormeau.
+ `viscera_weight` – Poids des viscères d'ormeau après saignement.
+ `shell_weight` – Poids de la coquille de l'ormeau après avoir enlevé et séché la viande.
+ `sex` – Le sexe de l'ormeau. Une valeur « M », « F » ou « I », où « I » est un jeune ormeau.
+ `rings` – Le nombre d'anneaux dans la coquille de l'ormeau.

Le nombre d’anneaux dans la coquille de l’ormeau est une bonne approximation de son âge en utilisant la formule `age=rings + 1.5`. Toutefois, l’obtention de ce nombre est une tâche longue. Vous devez couper la coquille à travers le cône, tacher la section et compter le nombre d’anneaux à l’aide d’un microscope. Toutefois, les autres mesures physiques sont plus faciles à obtenir. Ce bloc-notes utilise le jeu de données pour créer un modèle prédictif des anneaux variables à l’aide des autres mesures physiques.

**Pour télécharger le jeu de données**

1. Téléchargez le jeu de données dans le compartiment Amazon S3 par défaut de votre compte.

   ```
   !mkdir -p data
   local_path = "data/abalone-dataset.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset.csv",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   input_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(input_data_uri)
   ```

1. Téléchargez un deuxième jeu de données pour la transformation par lots après la création de votre modèle.

   ```
   local_path = "data/abalone-dataset-batch.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset-batch",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   batch_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(batch_data_uri)
   ```

#### Étape 2 : Définition des paramètres de pipeline
<a name="define-pipeline-parameters"></a>

 Ce bloc de code définit les paramètres suivants pour votre pipeline : 
+  `processing_instance_count` : le nombre d’instances de la tâche de traitement. 
+  `input_data` : l’emplacement Amazon S3 des données d’entrée. 
+  `batch_data` – L'emplacement Amazon S3 des données d'entrée pour la transformation par lots. 
+  `model_approval_status` – Le statut d'approbation pour enregistrer le modèle entraîné avec pour CI/CD. Pour de plus amples informations, veuillez consulter [MLOps Automatisation avec des SageMaker projets](sagemaker-projects.md).

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
model_approval_status = ParameterString(
    name="ModelApprovalStatus",
    default_value="PendingManualApproval"
)
input_data = ParameterString(
    name="InputData",
    default_value=input_data_uri,
)
batch_data = ParameterString(
    name="BatchData",
    default_value=batch_data_uri,
)
```

#### Étape 3 : Définition d’une étape de traitement pour l’ingénierie des caractéristiques
<a name="define-pipeline-processing-feature"></a>

Cette section vous indique comment créer une étape de traitement afin de préparer les données du jeu de données en vue de l'entraînement.

**Pour créer une étape de traitement**

1.  Créez un répertoire pour le script de traitement.

   ```
   !mkdir -p abalone
   ```

1. Dans le répertoire `/abalone`, créez un fichier nommé `preprocessing.py` avec le contenu suivant. Ce script de prétraitement est transmis à l’étape de traitement pour être exécuté sur les données d’entrée. L’étape d’entraînement utilise ensuite les caractéristiques et les étiquettes d’entraînement prétraitées pour entraîner un modèle. L’étape d’évaluation utilise le modèle entraîné ainsi que les caractéristiques et les étiquettes de test prétraitées pour évaluer le modèle. Le script utilise `scikit-learn` pour effectuer les opérations suivantes :
   +  Compléter les données de catégorie `sex` manquantes et les encoder pour qu'elles soient adaptées à l'entraînement. 
   +  Mettre à l'échelle et normaliser tous les champs numériques à l'exception de `rings` et `sex`. 
   +  Diviser les données en jeux de données d'entraînement, de validation et de test. 

   ```
   %%writefile abalone/preprocessing.py
   import argparse
   import os
   import requests
   import tempfile
   import numpy as np
   import pandas as pd
   
   
   from sklearn.compose import ColumnTransformer
   from sklearn.impute import SimpleImputer
   from sklearn.pipeline import Pipeline
   from sklearn.preprocessing import StandardScaler, OneHotEncoder
   
   
   # Because this is a headerless CSV file, specify the column names here.
   feature_columns_names = [
       "sex",
       "length",
       "diameter",
       "height",
       "whole_weight",
       "shucked_weight",
       "viscera_weight",
       "shell_weight",
   ]
   label_column = "rings"
   
   feature_columns_dtype = {
       "sex": str,
       "length": np.float64,
       "diameter": np.float64,
       "height": np.float64,
       "whole_weight": np.float64,
       "shucked_weight": np.float64,
       "viscera_weight": np.float64,
       "shell_weight": np.float64
   }
   label_column_dtype = {"rings": np.float64}
   
   
   def merge_two_dicts(x, y):
       z = x.copy()
       z.update(y)
       return z
   
   
   if __name__ == "__main__":
       base_dir = "/opt/ml/processing"
   
       df = pd.read_csv(
           f"{base_dir}/input/abalone-dataset.csv",
           header=None, 
           names=feature_columns_names + [label_column],
           dtype=merge_two_dicts(feature_columns_dtype, label_column_dtype)
       )
       numeric_features = list(feature_columns_names)
       numeric_features.remove("sex")
       numeric_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="median")),
               ("scaler", StandardScaler())
           ]
       )
   
       categorical_features = ["sex"]
       categorical_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="constant", fill_value="missing")),
               ("onehot", OneHotEncoder(handle_unknown="ignore"))
           ]
       )
   
       preprocess = ColumnTransformer(
           transformers=[
               ("num", numeric_transformer, numeric_features),
               ("cat", categorical_transformer, categorical_features)
           ]
       )
       
       y = df.pop("rings")
       X_pre = preprocess.fit_transform(df)
       y_pre = y.to_numpy().reshape(len(y), 1)
       
       X = np.concatenate((y_pre, X_pre), axis=1)
       
       np.random.shuffle(X)
       train, validation, test = np.split(X, [int(.7*len(X)), int(.85*len(X))])
   
       
       pd.DataFrame(train).to_csv(f"{base_dir}/train/train.csv", header=False, index=False)
       pd.DataFrame(validation).to_csv(f"{base_dir}/validation/validation.csv", header=False, index=False)
       pd.DataFrame(test).to_csv(f"{base_dir}/test/test.csv", header=False, index=False)
   ```

1.  Créer une instance d'un `SKLearnProcessor` pour la transmettre à l'étape de traitement. 

   ```
   from sagemaker.sklearn.processing import SKLearnProcessor
   
   
   framework_version = "0.23-1"
   
   sklearn_processor = SKLearnProcessor(
       framework_version=framework_version,
       instance_type="ml.m5.xlarge",
       instance_count=processing_instance_count,
       base_job_name="sklearn-abalone-process",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Créer une étape de traitement. Cette étape adopte le `SKLearnProcessor`, les canaux d’entrée et de sortie, ainsi que le script `preprocessing.py` que vous avez créé. Cette `run` méthode est très similaire à celle d'une instance de processeur dans le SDK SageMaker AI Python. Le paramètre `input_data` transmis dans `ProcessingStep` correspond aux données d’entrée de l’étape elle-même. Ces données d'entrée sont utilisées par l'instance du processeur lors de son exécution. 

    Notez les canaux nommés `"train`, `"validation` et `"test"` spécifiés dans la configuration de sortie pour la tâche de traitement. Les `Properties` de l’étape telles que celles-ci peuvent être utilisées dans les étapes suivantes et correspondre à leurs valeurs d’exécution au moment de l’exécution. 

   ```
   from sagemaker.processing import ProcessingInput, ProcessingOutput
   from sagemaker.workflow.steps import ProcessingStep
      
   
   processor_args = sklearn_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="abalone/preprocessing.py",
   ) 
   
   step_process = ProcessingStep(
       name="AbaloneProcess",
       step_args=processor_args
   )
   ```

#### Étape 4 : Définition d’une étape d’entraînement
<a name="define-pipeline-training"></a>

Cette section explique comment utiliser l'[XGBoostalgorithme](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) d' SageMaker IA pour entraîner un modèle sur les données d'entraînement issues des étapes de traitement. 

**Pour définir une étape d’entraînement**

1.  Spécifiez le chemin d'accès au modèle dans lequel vous souhaitez enregistrer les modèles de l'entraînement. 

   ```
   model_path = f"s3://{default_bucket}/AbaloneTrain"
   ```

1. Configurez un estimateur pour l' XGBoost algorithme et le jeu de données en entrée. Le type d’instance d’entraînement est transmis à l’estimateur. Un script d’entraînement standard :
   + charge les données depuis les canaux d’entrée ;
   + configure l’entraînement avec des hyperparamètres ;
   + entraîne un modèle ;
   + enregistre un modèle dans `model_dir` pour qu’il puisse être hébergé ultérieurement.

   SageMaker L'IA télécharge le modèle sur Amazon S3 sous la forme d'un `model.tar.gz` document à la fin de la formation.

   ```
   from sagemaker.estimator import Estimator
   
   
   image_uri = sagemaker.image_uris.retrieve(
       framework="xgboost",
       region=region,
       version="1.0-1",
       py_version="py3",
       instance_type="ml.m5.xlarge"
   )
   xgb_train = Estimator(
       image_uri=image_uri,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=model_path,
       sagemaker_session=pipeline_session,
       role=role,
   )
   xgb_train.set_hyperparameters(
       objective="reg:linear",
       num_round=50,
       max_depth=5,
       eta=0.2,
       gamma=4,
       min_child_weight=6,
       subsample=0.7,
       silent=0
   )
   ```

1. Créez une étape `TrainingStep` à l’aide de l’instance d’estimateur et des propriétés de l’étape `ProcessingStep`. Transmettez l’élément `S3Uri` du canal de sortie `"train"` et `"validation"` à l’étape `TrainingStep`.  

   ```
   from sagemaker.inputs import TrainingInput
   from sagemaker.workflow.steps import TrainingStep
   
   
   train_args = xgb_train.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="AbaloneTrain",
       step_args = train_args
   )
   ```

#### Étape 5 : Définition d’une étape de traitement pour l’évaluation des modèles
<a name="define-pipeline-processing-model"></a>

Cette section vous explique comment créer une étape de traitement pour évaluer la précision du modèle. Le résultat de cette évaluation des modèles est utilisé dans l’étape de condition pour déterminer le chemin d’exécution à prendre.

**Pour définir une étape de traitement pour l’évaluation du modèle**

1. Créez un fichier dans le répertoire `/abalone` nommé `evaluation.py`. Ce script est utilisé dans une étape de traitement pour effectuer l'évaluation du modèle. Il prend un modèle entraîné et le jeu de données de test comme entrée, puis produit un fichier JSON contenant des métriques d’évaluation de classification.

   ```
   %%writefile abalone/evaluation.py
   import json
   import pathlib
   import pickle
   import tarfile
   import joblib
   import numpy as np
   import pandas as pd
   import xgboost
   
   
   from sklearn.metrics import mean_squared_error
   
   
   if __name__ == "__main__":
       model_path = f"/opt/ml/processing/model/model.tar.gz"
       with tarfile.open(model_path) as tar:
           tar.extractall(path=".")
       
       model = pickle.load(open("xgboost-model", "rb"))
   
       test_path = "/opt/ml/processing/test/test.csv"
       df = pd.read_csv(test_path, header=None)
       
       y_test = df.iloc[:, 0].to_numpy()
       df.drop(df.columns[0], axis=1, inplace=True)
       
       X_test = xgboost.DMatrix(df.values)
       
       predictions = model.predict(X_test)
   
       mse = mean_squared_error(y_test, predictions)
       std = np.std(y_test - predictions)
       report_dict = {
           "regression_metrics": {
               "mse": {
                   "value": mse,
                   "standard_deviation": std
               },
           },
       }
   
       output_dir = "/opt/ml/processing/evaluation"
       pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
       
       evaluation_path = f"{output_dir}/evaluation.json"
       with open(evaluation_path, "w") as f:
           f.write(json.dumps(report_dict))
   ```

1.  Créez une instance de `ScriptProcessor` qui est utilisée pour créer une `ProcessingStep`. 

   ```
   from sagemaker.processing import ScriptProcessor
   
   
   script_eval = ScriptProcessor(
       image_uri=image_uri,
       command=["python3"],
       instance_type="ml.m5.xlarge",
       instance_count=1,
       base_job_name="script-abalone-eval",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1.  Créez une étape `ProcessingStep` en utilisant l’instance de processeur, les canaux d’entrée et de sortie et le script `evaluation.py`. Transmettez-lui :
   + la propriété `S3ModelArtifacts` issue de l’étape d’entraînement `step_train`,
   + l’élément `S3Uri` du canal de sortie `"test"` de l’étape de traitement `step_process`.

   Cette `run` méthode est très similaire à celle d'une instance de processeur dans le SDK SageMaker AI Python.  

   ```
   from sagemaker.workflow.properties import PropertyFile
   
   
   evaluation_report = PropertyFile(
       name="EvaluationReport",
       output_name="evaluation",
       path="evaluation.json"
   )
   
   eval_args = script_eval.run(
           inputs=[
           ProcessingInput(
               source=step_train.properties.ModelArtifacts.S3ModelArtifacts,
               destination="/opt/ml/processing/model"
           ),
           ProcessingInput(
               source=step_process.properties.ProcessingOutputConfig.Outputs[
                   "test"
               ].S3Output.S3Uri,
               destination="/opt/ml/processing/test"
           )
       ],
       outputs=[
           ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
       ],
       code="abalone/evaluation.py",
   )
   
   step_eval = ProcessingStep(
       name="AbaloneEval",
       step_args=eval_args,
       property_files=[evaluation_report],
   )
   ```

#### Étape 6 : Définition CreateModelStep d'une transformation par lots
<a name="define-pipeline-create-model"></a>

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

Cette section explique comment créer un modèle d' SageMaker IA à partir du résultat de l'étape de formation. Ce modèle est utilisé pour la transformation par lots sur un nouveau jeu de données. Cette étape est transmise à l’étape de condition et ne s’exécute que si l’étape de condition prend la valeur `true`.

**Pour définir une CreateModelStep transformation par lots**

1.  Créez un modèle d' SageMaker IA. Transmettez la propriété `S3ModelArtifacts` depuis l’étape d’entraînement `step_train`.

   ```
   from sagemaker.model import Model
   
   
   model = Model(
       image_uri=image_uri,
       model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Définissez l'entrée du modèle pour votre modèle d' SageMaker IA.

   ```
   from sagemaker.inputs import CreateModelInput
   
   
   inputs = CreateModelInput(
       instance_type="ml.m5.large",
       accelerator_type="ml.eia1.medium",
   )
   ```

1. Créez votre instance `CreateModelStep` à l'aide de `CreateModelInput` l'instance de modèle d' SageMaker IA que vous avez définie.

   ```
   from sagemaker.workflow.steps import CreateModelStep
   
   
   step_create_model = CreateModelStep(
       name="AbaloneCreateModel",
       model=model,
       inputs=inputs,
   )
   ```

#### Étape 7 : Définissez un TransformStep pour effectuer une transformation par lots
<a name="define-pipeline-transform"></a>

Cette section explique comment créer une `TransformStep` pour effectuer une transformation par lots sur un jeu de données après l’entraînement du modèle. Cette étape est transmise à l’étape de condition et ne s’exécute que si l’étape de condition prend la valeur `true`.

**Pour définir un TransformStep pour effectuer une transformation par lots**

1. Créez une instance de transformateur avec le type d'instance de calcul approprié, le nombre d'instances et l'URI de compartiment Amazon S3 de sortie souhaitée. Transmettez la propriété `ModelName` depuis l'étape `step_create_model` `CreateModel`. 

   ```
   from sagemaker.transformer import Transformer
   
   
   transformer = Transformer(
       model_name=step_create_model.properties.ModelName,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=f"s3://{default_bucket}/AbaloneTransform"
   )
   ```

1. Créez une `TransformStep` à l'aide de l'instance de transformateur que vous avez définie et du paramètre de pipeline `batch_data`.

   ```
   from sagemaker.inputs import TransformInput
   from sagemaker.workflow.steps import TransformStep
   
   
   step_transform = TransformStep(
       name="AbaloneTransform",
       transformer=transformer,
       inputs=TransformInput(data=batch_data)
   )
   ```

#### Étape 8 : Définition d'une RegisterModel étape pour créer un package modèle
<a name="define-pipeline-register"></a>

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

Cette section montre comment créer une instance de `RegisterModel`. Le résultat de l’exécution de `RegisterModel` dans un pipeline est un package de modèle. Un package de modèle est une abstraction d’artefacts de modèle réutilisable qui contient tous les ingrédients nécessaires à l’inférence. Il se compose d'une spécification d'inférence qui définit l'image d'inférence à utiliser avec un emplacement de pondération de modèle facultatif. Un groupe de packages de modèles est une collection de packages de modèles. Vous pouvez utiliser un élément `ModelPackageGroup` pour Pipelines afin d’ajouter une nouvelle version et un package de modèle au groupe pour chaque exécution de pipeline. Pour plus d’informations sur le registre de modèles, consultez [Déploiement de l’enregistrement de modèles à l’aide du registre de modèles](model-registry.md).

Cette étape est transmise à l’étape de condition et ne s’exécute que si l’étape de condition prend la valeur `true`.

**Pour définir une RegisterModel étape de création d'un package modèle**
+  Créez une `RegisterModel` à l'aide de l'instance d'estimateur que vous avez utilisée pour l'étape d'entraînement. Transmettez la propriété `S3ModelArtifacts` depuis l’étape d’entraînement `step_train` et spécifiez un `ModelPackageGroup`. Pipelines crée cet élément `ModelPackageGroup` pour vous.

  ```
  from sagemaker.model_metrics import MetricsSource, ModelMetrics 
  from sagemaker.workflow.step_collections import RegisterModel
  
  
  model_metrics = ModelMetrics(
      model_statistics=MetricsSource(
          s3_uri="{}/evaluation.json".format(
              step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
          ),
          content_type="application/json"
      )
  )
  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 9 : Définition d’une étape de condition pour vérifier l’exactitude du modèle
<a name="define-pipeline-condition"></a>

Une étape `ConditionStep` permet à Pipelines de prendre en charge l’exécution conditionnelle dans le graphique DAG de votre pipeline en fonction de la condition des propriétés d’étape. Dans ce cas, vous ne souhaitez enregistrer un package de modèle que si l’exactitude de ce modèle dépasse la valeur requise. L’exactitude du modèle est déterminée par l’étape d’évaluation des modèles. Si la précision dépasse la valeur requise, le pipeline crée également un modèle d' SageMaker IA et exécute une transformation par lots sur un ensemble de données. Cette section explique comment définir l’étape Condition.

**Pour définir une étape de condition pour vérifier la précision du modèle**

1.  Définissez une condition `ConditionLessThanOrEqualTo`en utilisant la valeur de précision trouvée dans la sortie de l'étape de traitement de l'évaluation du modèle, `step_eval`. Obtenez cette sortie à l'aide du fichier de propriétés que vous avez indexé lors de l'étape de traitement et JSONPath de la valeur d'erreur quadratique moyenne correspondante,. `"mse"`

   ```
   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
   )
   ```

1.  Créez une `ConditionStep`. Transmettez la condition `ConditionEquals`, puis définissez les étapes d'enregistrement de package de modèle et de transformation par lots comme les étapes suivantes si la condition est satisfaite. 

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

#### Étape 10 : créer un pipeline
<a name="define-pipeline-pipeline"></a>

Maintenant que vous avez créé toutes les étapes, combinez-les dans un pipeline.

**Pour créer un pipeline**

1.  Définissez les éléments suivants pour votre pipeline :`name`, `parameters`, et `steps`. Les noms doivent être uniques au sein d'une paire `(account, region)`.
**Note**  
Une étape ne peut apparaître qu'une seule fois dans la liste des étapes du pipeline ou dans les listes d'étapes if/else de l'étape de condition. Elle ne peut pas apparaître dans les deux. 

   ```
   from sagemaker.workflow.pipeline import Pipeline
   
   
   pipeline_name = f"AbalonePipeline"
   pipeline = Pipeline(
       name=pipeline_name,
       parameters=[
           processing_instance_count,
           model_approval_status,
           input_data,
           batch_data,
       ],
       steps=[step_process, step_train, step_eval, step_cond],
   )
   ```

1.  (Facultatif) Examinez la définition de pipeline JSON pour vous assurer qu’elle est bien formée.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

 Cette définition de pipeline est prête à être soumise à l' SageMaker IA. Dans le didacticiel suivant, vous soumettez ce pipeline à l' SageMaker IA et lancez une exécution. 

## Définition d’un pipeline (JSON)
<a name="collapsible-section-1"></a>

Vous pouvez également utiliser [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_pipeline) ou [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html) pour créer un pipeline. La création d’un pipeline nécessite une définition de pipeline, qui est un objet JSON définissant chaque étape du pipeline. Le SageMaker SDK offre un moyen simple de créer la définition du pipeline, que vous pouvez utiliser avec n'importe lequel des éléments mentionnés APIs précédemment pour créer le pipeline lui-même. Sans utiliser le SDK, les utilisateurs doivent écrire la définition JSON brute pour créer le pipeline sans aucune des vérifications d'erreur fournies par le SDK SageMaker Python. Pour voir le schéma de la définition JSON du pipeline, consultez le [schéma JSON de définition du pipeline SageMaker AI](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). L'exemple de code suivant montre un exemple d'objet JSON de définition de pipeline d' SageMaker IA :

```
{'Version': '2020-12-01',
 'Metadata': {},
 'Parameters': [{'Name': 'ProcessingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ProcessingInstanceCount', 'Type': 'Integer', 'DefaultValue': 1},
  {'Name': 'TrainingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ModelApprovalStatus',
   'Type': 'String',
   'DefaultValue': 'PendingManualApproval'},
  {'Name': 'ProcessedData',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
{'Name': 'InputDataUrl',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'},
  'TrialName': {'Get': 'Execution.PipelineExecutionId'}},
 'Steps': [{'Name': 'ReadTrainDataFromFS',
   'Type': 'Processing',
   'Arguments': {'ProcessingResources': {'ClusterConfig': {'InstanceType': 'ml.m5.4xlarge',
      'InstanceCount': 2,
      'VolumeSizeInGB': 30}},
    'AppSpecification': {'ImageUri': 'IMAGE_URI',
     'ContainerArguments': [....]},
    'RoleArn': 'ROLE',
      'ProcessingInputs': [...],
    'ProcessingOutputConfig': {'Outputs': [.....]},
    'StoppingCondition': {'MaxRuntimeInSeconds': 86400}},
   'CacheConfig': {'Enabled': True, 'ExpireAfter': '30d'}},
   ...
   ...
   ...
  }
```

 **Étape suivante :** [Exécuter un pipeline](run-pipeline.md) 

# Modification d’un pipeline
<a name="edit-pipeline-before-execution"></a>

Pour apporter des modifications à un pipeline avant de l’exécuter, procédez comme suit :

1. Ouvrez SageMaker Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

1. Sélectionnez un nom de pipeline pour afficher ses détails.

1. Choisissez l’onglet **Exécutions**.

1. Sélectionnez le nom d’une exécution de pipeline.

1. Choisissez **Modifier** pour ouvrir le concepteur de pipeline.

1. Mettez à jour les périphéries entre les étapes ou la configuration des étapes selon les besoins, puis cliquez sur **Enregistrer**. 

   L’enregistrement d’un pipeline après modification génère automatiquement un nouveau numéro de version.

1. Cliquez sur **Exécuter**.

# Exécuter un pipeline
<a name="run-pipeline"></a>

Après avoir défini les étapes de votre pipeline sous la forme d’un graphe orienté acyclique (DAG), vous pouvez exécuter votre pipeline, qui exécute les étapes définies dans votre graphe DAG. Les procédures pas à pas suivantes vous montrent comment exécuter un pipeline Amazon SageMaker AI à l'aide de l'éditeur drag-and-drop visuel d'Amazon SageMaker Studio ou du SDK Amazon SageMaker Python.

## Exécution d’un pipeline (concepteur de pipeline)
<a name="run-pipeline-designer"></a>

Pour démarrer une nouvelle exécution de votre pipeline, procédez comme suit :

------
#### [ Studio ]

1. Ouvrez SageMaker Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Dans le volet de navigation de gauche, choisissez **Pipelines**.

1. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

1. Choisissez un nom de pipeline pour ouvrir la vue des détails du pipeline.

1. Choisissez **Éditeur visuel** en haut à droite.

1. Pour démarrer une exécution à partir de la dernière version, choisissez **Exécutions**.

1. Pour démarrer une exécution à partir d’une version spécifique, procédez comme suit :
   + Choisissez l’icône de version dans la barre d’outils inférieure pour ouvrir le panneau des versions.
   + Choisissez la version de pipeline que vous souhaitez exécuter.
   + Passez le curseur sur l’élément de version pour afficher le menu à trois points, puis choisissez **Exécuter**.
   + (Facultatif) Pour visualiser une version précédente du pipeline, choisissez **Aperçu** dans le menu à trois points du panneau des versions. Vous pouvez également modifier la version en choisissant **Modifier** dans la barre de notification.

**Note**  
Si votre pipeline échoue, la bannière de statut affiche le statut **Échec**. Après avoir résolu l’étape qui a échoué, choisissez **Retry** (Réessayer) sur la bannière d’état pour reprendre l’exécution du pipeline à partir de cette étape.

------
#### [ Studio Classic ]

1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d'informations, consultez [Lancer Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Dans la barre latérale de Studio Classic, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Sélectionnez **Pipelines** dans le menu.

1. Pour affiner la liste des pipelines par nom, entrez un nom complet ou partiel de pipeline dans le champ de recherche.

1. Sélectionnez un nom de pipeline.

1. Dans l’onglet **Exécutions** ou **Graphique** de la liste d’exécution, choisissez **Créer une exécution**.

1. Saisissez ou mettez à jour les informations requises suivantes :
   + **Nom** : doit être unique dans votre compte et au sein d’une région AWS .
   + **ProcessingInstanceCount**— Le nombre d'instances à utiliser pour le traitement.
   + **ModelApprovalStatus**— Pour votre commodité.
   + **InputDataUrl**— L'URI Amazon S3 des données d'entrée.

1. Sélectionnez **Démarrer**.

Une fois que votre pipeline est en cours d’exécution, vous pouvez visualiser les détails de l’exécution en choisissant **Afficher les détails** sur la bannière de statut.

Pour arrêter l’exécution, choisissez **Arrêter** sur la bannière de statut. Pour reprendre l’exécution à partir de l’endroit où elle a été arrêtée, choisissez **Resume** (Reprendre) sur la bannière d’état.

**Note**  
Si votre pipeline échoue, la bannière de statut affiche le statut **Échec**. Après avoir résolu l’étape qui a échoué, choisissez **Retry** (Réessayer) sur la bannière d’état pour reprendre l’exécution du pipeline à partir de cette étape.

------

## Exécuter un pipeline (SDK SageMaker Python)
<a name="run-pipeline-sdk"></a>

Après avoir créé une définition de pipeline à l'aide du SDK SageMaker AI Python, vous pouvez la soumettre à SageMaker AI pour démarrer votre exécution. Le tutoriel suivant montre comment envoyer un pipeline, lancer une exécution, examiner les résultats de cette exécution et supprimer votre pipeline. 

**Topics**
+ [Conditions préalables](#run-pipeline-prereq)
+ [Étape 1 : démarrer le pipeline](#run-pipeline-submit)
+ [Étape 2 : examiner l'exécution d'un pipeline](#run-pipeline-examine)
+ [Étape 3 : remplacer les paramètres par défaut d'une exécution de pipeline](#run-pipeline-parametrized)
+ [Étape 4 : arrêter et supprimer une exécution de pipeline](#run-pipeline-delete)

### Conditions préalables
<a name="run-pipeline-prereq"></a>

Pour suivre ce tutoriel, vous devez disposer de la configuration suivante : 
+  Une instance de SageMaker bloc-notes.  
+  Une définition du pipeline Pipelines. Ce tutoriel suppose que vous utilisez la définition de pipeline créée en suivant le tutoriel [Définition d’un pipeline](define-pipeline.md). 

### Étape 1 : démarrer le pipeline
<a name="run-pipeline-submit"></a>

Tout d'abord, vous devez démarrer le pipeline. 

**Pour démarrer le pipeline**

1. Examinez la définition de pipeline JSON pour vous assurer qu’elle est bien formée.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

1. Soumettez la définition du pipeline au service Pipelines pour créer un pipeline s’il n’existe pas, ou mettez à jour le pipeline s’il existe. Le rôle transmis est utilisé par Pipelines pour créer toutes les tâches définies dans les étapes. 

   ```
   pipeline.upsert(role_arn=role)
   ```

1. Démarrez l’exécution d’un pipeline.

   ```
   execution = pipeline.start()
   ```

### Étape 2 : examiner l'exécution d'un pipeline
<a name="run-pipeline-examine"></a>

Ensuite, vous devez examiner l'exécution du pipeline. 

**Pour examiner l'exécution d'un pipeline**

1.  Décrivez le statut d'exécution du pipeline pour vous assurer qu'il a été créé et démarré avec succès.

   ```
   execution.describe()
   ```

1. Attendez que l'exécution soit terminée. 

   ```
   execution.wait()
   ```

1. Répertoriez les étapes d'exécution et leur état.

   ```
   execution.list_steps()
   ```

   Le résultat doit être similaire à ce qui suit :

   ```
   [{'StepName': 'AbaloneTransform',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}},
    {'StepName': 'AbaloneRegisterModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}},
    {'StepName': 'AbaloneCreateModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}},
    {'StepName': 'AbaloneMSECond',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Condition': {'Outcome': 'True'}}},
    {'StepName': 'AbaloneEval',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}},
    {'StepName': 'AbaloneTrain',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}},
    {'StepName': 'AbaloneProcess',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
   ```

1. Une fois l'exécution de votre pipeline terminée, téléchargez le fichier `evaluation.json` résultant d'Amazon S3 pour examiner le rapport. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Étape 3 : remplacer les paramètres par défaut d'une exécution de pipeline
<a name="run-pipeline-parametrized"></a>

Vous pouvez exécuter d'autres exécutions du pipeline en spécifiant différents paramètres de pipeline pour remplacer les valeurs par défaut.

**Pour remplacer les paramètres par défaut**

1. Créez l’exécution du pipeline. Cela démarre une autre exécution de pipeline avec le statut d'approbation de modèle défini sur « Approuvé ». Cela signifie que la version du package modèle générée par l'`RegisterModel`étape est automatiquement prête à être déployée via des CI/CD pipelines, par exemple avec SageMaker Projects. Pour de plus amples informations, veuillez consulter [MLOps Automatisation avec des SageMaker projets](sagemaker-projects.md).

   ```
   execution = pipeline.start(
       parameters=dict(
           ModelApprovalStatus="Approved",
       )
   )
   ```

1. Attendez que l'exécution soit terminée. 

   ```
   execution.wait()
   ```

1. Répertoriez les étapes d'exécution et leur état.

   ```
   execution.list_steps()
   ```

1. Une fois l'exécution de votre pipeline terminée, téléchargez le fichier `evaluation.json` résultant d'Amazon S3 pour examiner le rapport. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Étape 4 : arrêter et supprimer une exécution de pipeline
<a name="run-pipeline-delete"></a>

Lorsque vous n'avez plus besoin de votre pipeline, vous pouvez arrêter toutes les exécutions en cours et supprimer le pipeline.

**Pour arrêter et supprimer une exécution de pipeline**

1. Arrêtez l'exécution du pipeline.

   ```
   execution.stop()
   ```

1. Supprimez le pipeline.

   ```
   pipeline.delete()
   ```

# Arrêt d’un pipeline
<a name="pipelines-studio-stop"></a>

Vous pouvez arrêter l'exécution d'un pipeline dans la console Amazon SageMaker Studio.

Pour arrêter l'exécution d'un pipeline dans la console Amazon SageMaker Studio, effectuez les étapes suivantes selon que vous utilisez Studio ou Studio Classic.

------
#### [ Studio ]

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

1. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

1. Sélectionnez un nom de pipeline.

1. Choisissez l’onglet **Exécutions**.

1. Sélectionnez l’exécution à arrêter.

1. Choisissez **Arrêter**. Pour reprendre l’exécution là où elle a été arrêtée, choisissez **Reprendre**.

------
#### [ Studio Classic ]

1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d'informations, consultez [Lancer Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Dans la barre latérale de Studio Classic, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Sélectionnez **Pipelines** dans le menu.

1. Pour affiner la liste des pipelines par nom, entrez un nom complet ou partiel de pipeline dans le champ de recherche.

1. Pour arrêter l’exécution d’un pipeline, choisissez **Afficher les détails** sur la bannière de statut du pipeline, puis choisissez **Arrêter**. Pour reprendre l’exécution là où elle a été arrêtée, choisissez **Reprendre**.

------

# Affichage des détails d’un pipeline
<a name="pipelines-studio-list"></a>

Vous pouvez consulter les détails d'un pipeline d' SageMaker IA pour comprendre ses paramètres, les dépendances de ses étapes ou suivre sa progression et son statut. Cela peut vous aider à résoudre ou à optimiser votre flux de travail. Vous pouvez accéder aux détails d'un pipeline donné à l'aide de la console Amazon SageMaker Studio et explorer son historique d'exécution, sa définition, ses paramètres et ses métadonnées.

Sinon, si votre pipeline est associé à un projet d' SageMaker IA, vous pouvez accéder aux détails du pipeline depuis la page de détails du projet. Pour de plus amples informations, veuillez consulter [Affichage des ressources du projet](sagemaker-projects-resources.md).

Pour consulter les détails d'un pipeline d' SageMaker IA, effectuez les étapes suivantes selon que vous utilisez Studio ou Studio Classic.

**Note**  
Le reconditionnement du modèle se produit lorsque le pipeline doit inclure un script personnalisé dans le fichier de modèle compressé (model.tar.gz) à télécharger sur Amazon S3 et à utiliser pour déployer un modèle sur un point de terminaison d' SageMaker IA. Lorsque le pipeline SageMaker AI entraîne un modèle et l'enregistre dans le registre des modèles, il introduit une étape de reconditionnement *si* le modèle entraîné issu de la tâche de formation doit inclure un script d'inférence personnalisé. L’étape de recompression décompresse le modèle, ajoute un nouveau script, et recompresse le modèle. L’exécution du pipeline ajoute l’étape de recompression comme tâche d’entraînement.

------
#### [ Studio ]

1. Ouvrez la console SageMaker Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

1. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

1. Sélectionnez un nom de pipeline pour afficher ses détails.

1. Choisissez l’un des onglets suivants pour visualiser les détails du pipeline :
   + **Exécutions** : détails sur les exécutions.
   + **Graphique** : le graphe du pipeline, qui inclut toutes les étapes.
   + **Paramètres** : les paramètres et les métriques d’exécution associés au pipeline.
   + **Informations** : les métadonnées associées au pipeline, telles que les balises, l’Amazon Resource Name (ARN) du pipeline et l’ARN du rôle. Vous pouvez également modifier la description du pipeline à partir de cette page.

------
#### [ Studio Classic ]

1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d'informations, consultez [Lancer Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Dans la barre latérale de Studio Classic, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Sélectionnez **Pipelines** dans le menu.

1. Pour affiner la liste des pipelines par nom, entrez un nom complet ou partiel de pipeline dans le champ de recherche.

1. Sélectionnez un nom de pipeline pour afficher ses détails. L’onglet Details (Détails) du pipeline s’ouvre et affiche une liste des exécutions de pipeline. Vous pouvez démarrer une exécution ou choisir l’un des autres onglets pour obtenir plus d’informations sur le pipeline. Utilisez l’icône **Inspecteur des propriétés** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/gears.png)) pour choisir les colonnes à afficher.

1. Dans la page des détails du pipeline, choisissez l’un des onglets suivants pour afficher les détails du pipeline :
   + **Exécutions** : détails sur les exécutions. Vous pouvez créer une exécution à partir de cet onglet ou de l'onglet **Graph** (Graphique).
   + **Graph (Graphique)** – DAG pour le pipeline.
   + **Parameters (Paramètres)** – Inclut le statut d'approbation du modèle.
   + **Settings (Paramètres)** – Les métadonnées associées au pipeline. Vous pouvez télécharger le fichier de définition du pipeline et modifier le nom et la description du pipeline à partir de cet onglet.

------

# Affichage des détails d’une exécution de pipeline
<a name="pipelines-studio-view-execution"></a>

Vous pouvez consulter les détails d'une exécution de pipeline d' SageMaker IA en particulier. Cela peut vous aider à :
+ identifier et résoudre les problèmes qui ont pu survenir au cours de l’exécution, tels que l’échec de certaines étapes ou des erreurs inattendues ;
+ comparer les résultats des différentes exécutions de pipeline pour comprendre l’impact des modifications des paramètres ou des données d’entrée sur le flux de travail global ;
+ identifier les goulots d’étranglement et les opportunités d’optimisation.

Pour afficher les détails d’une exécution de pipeline, effectuez les étapes suivantes selon que vous utilisez Studio ou Studio Classic.

------
#### [ Studio ]

1. Ouvrez la console SageMaker Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

1. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

1. Sélectionnez un nom de pipeline pour afficher ses détails.

1. Choisissez l’onglet **Exécutions**.

1. Sélectionnez le nom d’une exécution de pipeline à afficher. Le graphe du pipeline correspondant à cette exécution apparaît.

1. Choisissez l’une des étapes du pipeline dans le graphe pour afficher les paramètres des étapes dans la barre latérale droite.

1. Choisissez l’un des onglets suivants pour afficher davantage de détails du pipeline :
   + **Définition** : le graphe du pipeline, qui inclut toutes les étapes.
   + **Paramètres** : inclut le statut d’approbation du modèle.
   + **Détails** : les métadonnées associées au pipeline, telles que les balises, l’Amazon Resource Name (ARN) du pipeline et l’ARN du rôle. Vous pouvez également modifier la description du pipeline à partir de cette page.

------
#### [ Studio Classic ]

1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d'informations, consultez [Lancer Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Dans la barre latérale de Studio Classic, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Sélectionnez **Pipelines** dans le menu.

1. Pour affiner la liste des pipelines par nom, entrez un nom complet ou partiel de pipeline dans le champ de recherche.

1. Sélectionnez un nom de pipeline. La page **Exécutions** du pipeline s’ouvre.

1. Dans la page **Exécutions**, sélectionnez un nom d’exécution pour afficher ses détails. L’onglet Details (Détails) de l’exécution s’ouvre et affiche un graphique des étapes du pipeline.

1. Pour rechercher une étape par son nom, saisissez les caractères correspondant au nom d’une étape dans le champ de recherche. Utilisez les icônes de redimensionnement situées en bas à droite du graphe pour zoomer et dézoomer sur le graphe, adapter le graphe à l’écran et l’afficher en plein écran. Pour vous concentrer sur une partie spécifique du graphe, vous pouvez sélectionner une zone vide du graphe et faire glisser le graphe pour le centrer sur cette zone.   
![\[\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/yosemite/execution-graph-w-input.png)

1. Choisissez l’une des étapes du pipeline dans le graphe pour en afficher les détails. Dans la capture d’écran précédente, une étape d’entraînement est choisie et affiche les onglets suivants :
   + **Input (Entrée)** – Les entrées de l'entraînement. Si une source d'entrée provient d'Amazon Simple Storage Service (Amazon S3), choisissez le lien qui vous permet d'afficher le fichier dans la console Amazon S3.
   + **Sortie** : les sorties de l’entraînement, tels que les métriques, les graphiques, les fichiers et les résultats de l’évaluation. Les graphiques sont produits à l'aide du [Tracker](https://sagemaker-experiments.readthedocs.io/en/latest/tracker.html#smexperiments.tracker.Tracker.log_precision_recall) APIs.
   + **Journaux** : CloudWatch journaux Amazon produits par l'étape.
   + **Info** : paramètres et métadonnées associés à l’étape.  
![\[\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/yosemite/execution-graph-info.png)

------

# Téléchargement du fichier de définition d’un pipeline
<a name="pipelines-studio-download"></a>

Vous pouvez télécharger le fichier de définition de votre pipeline d' SageMaker IA directement depuis l'interface utilisateur d'Amazon SageMaker Studio. Vous pouvez utiliser ce fichier de définition de pipeline pour les opérations suivantes :
+ Sauvegarde et restauration : utilisez le fichier téléchargé pour créer une sauvegarde de la configuration de votre pipeline, que vous pouvez restaurer en cas de défaillances de l’infrastructure ou de modifications accidentelles.
+ Contrôle des versions : stockez le fichier de définition du pipeline dans un système de contrôle de source pour suivre les modifications apportées au pipeline et revenir à des versions précédentes si nécessaire.
+ Interactions programmatiques : utilisez le fichier de définition du pipeline comme entrée dans le SageMaker SDK ou. AWS CLI
+ Intégration aux processus d'automatisation : intégrez la définition du pipeline dans vos CI/CD flux de travail ou autres processus d'automatisation.

Pour télécharger le fichier de définition d’un pipeline, effectuez les étapes suivantes selon que vous utilisez Studio ou Studio Classic.

------
#### [ Studio ]

1. Ouvrez la console SageMaker Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

1. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

1. Sélectionnez un nom de pipeline. La page **Exécutions** s’ouvre et affiche la liste des exécutions du pipeline.

1. Restez sur la page **Exécutions** ou choisissez la page **Graphique**, **Informations** ou **Paramètres**, à gauche du tableau des exécutions du pipeline. Vous pouvez télécharger la définition du pipeline depuis chacune de ces pages.

1. En haut à droite de la page, choisissez les points de suspension verticaux et choisissez **Télécharger la définition du pipeline (JSON)**.

------
#### [ Studio Classic ]

1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d'informations, consultez [Lancer Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Dans la barre latérale de Studio Classic, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Sélectionnez **Pipelines** dans le menu.

1. Pour affiner la liste des pipelines par nom, entrez un nom complet ou partiel de pipeline dans le champ de recherche.

1. Sélectionnez un nom de pipeline.

1. Sélectionnez l’onglet **Paramètres**.

1. Choisissez **Télécharger le fichier de définition du pipeline**.

------

# Accès aux données d’expérience d’un pipeline
<a name="pipelines-studio-experiments"></a>

**Note**  
SageMaker Experiments est une fonctionnalité fournie uniquement dans Studio Classic.

Lorsque vous créez un pipeline et que vous spécifiez [pipeline\$1experiment\$1config](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.pipeline_experiment_config), Pipelines crée les entités SageMaker Experiments suivantes par défaut si elles n'existent pas :
+ Une expérience pour le pipeline
+ Un groupe d’exécution pour chaque exécution du pipeline
+ Une exécution pour chaque tâche d' SageMaker IA créée au cours d'une étape du pipeline

Pour en savoir plus sur la façon dont les expériences sont intégrées aux pipelines, consultez [Amazon SageMaker expérimente l'intégration](pipelines-experiments.md). Pour plus d'informations sur SageMaker les expériences, consultez[Amazon SageMaker expérimente dans Studio Classic](experiments.md).

Vous pouvez accéder à la liste des exécutions associées à un pipeline à partir de la liste des exécutions de pipeline ou de la liste des expériences.

**Pour afficher la liste des exécutions à partir de la liste des exécutions de pipeline**

1. Pour afficher la liste des exécutions du pipeline, suivez les cinq premières étapes fournies dans l’onglet *Studio Classic* de [Affichage des détails d’un pipeline](pipelines-studio-list.md).

1. En haut à droite de l’écran, choisissez l’icône **Filtre** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)).

1. Choisissez **Expérience**. Si l’intégration de l’expérience n’a pas été désactivée lors de la création du pipeline, le nom de l’expérience s’affiche dans la liste des exécutions. 
**Note**  
L'intégration des expériences a été introduite dans la version 2.41.0 du SDK Amazon [ SageMaker Python](https://sagemaker.readthedocs.io/en/stable). Les pipelines créés avec une version antérieure dukit SDK ne sont pas intégrés aux expériences par défaut.

1. Sélectionnez l'expérience de votre choix pour afficher les groupes d'exécution et les exécutions associées à cette expérience.

**Pour afficher la liste des exécutions dans la liste des expériences**

1. Dans la barre latérale gauche de Studio Classic, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Sélectionnez **Experiments** (Expériences) dans le menu.

1. Utilisez la barre de recherche ou l’icône **Filtre** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)) pour filtrer la liste afin d’afficher les expériences créées par un pipeline.

1. Ouvrez le nom d’une expérience et affichez la liste des exécutions créées par le pipeline.

# Suivi de la traçabilité d’un pipeline
<a name="pipelines-lineage-tracking"></a>

Dans ce didacticiel, vous utiliserez Amazon SageMaker Studio pour suivre la lignée d'un pipeline Amazon SageMaker AI ML.

Le pipeline a été créé par le bloc-notes [Orchestrating Jobs with Amazon SageMaker Model Building Pipelines](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) figurant dans le [ GitHub référentiel d' SageMaker exemples Amazon](https://github.com/awslabs/amazon-sagemaker-examples). Pour obtenir des informations détaillées sur la création du pipeline, consultez [Définition d’un pipeline](define-pipeline.md).

Le suivi de la lignée dans Studio est centré sur un graphe orienté acyclique (DAG). Le DAG représente les étapes d'un pipeline. Depuis le DAG, vous pouvez suivre la lignée de n'importe quelle étape vers n'importe quelle autre étape. Le diagramme suivant affiche les étapes du pipeline. Ces étapes apparaissent sous la forme d’un DAG dans Studio.

![\[\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-steps.png)


Pour suivre la généalogie d'un pipeline dans la console Amazon SageMaker Studio, effectuez les étapes suivantes selon que vous utilisez Studio ou Studio Classic.

------
#### [ Studio ]

**Pour suivre la lignée d’un pipeline**

1. Ouvrez la console SageMaker Studio en suivant les instructions de la section [Lancer Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

1. (Facultatif) Pour filtrer la liste des pipelines par nom, entrez un nom de pipeline complet ou partiel dans le champ de recherche.

1. Dans la colonne **Nom**, sélectionnez un nom de pipeline pour afficher les détails relatifs à ce pipeline.

1. Choisissez l’onglet **Exécutions**.

1. Dans la colonne **Nom** du tableau **Exécutions**, sélectionnez le nom d’une exécution de pipeline à afficher.

1. En haut à droite de la page **Exécutions**, choisissez les points de suspension verticaux et choisissez **Télécharger la définition du pipeline (JSON)**. Vous pouvez afficher le fichier pour voir comment le graphique de pipeline a été défini. 

1. Choisissez **Modifier** pour ouvrir le concepteur de pipeline.

1. Utilisez les contrôles de redimensionnement et de zoom situés en haut à droite du canevas pour zoomer et dézoomer sur le graphe, adapter le graphe à l’écran ou l’afficher en plein écran.

1. Pour afficher vos jeux de données d’entraînement, de validation et de test, procédez comme suit :

   1. Choisissez l’étape Traitement dans votre graphe de pipeline.

   1. Dans la barre latérale droite, choisissez l’onglet **Aperçu**.

   1. Dans la section **Fichiers**, recherchez les chemins d’accès Amazon S3 vers les jeux de données d’entraînement, de validation et de test.

1. Pour visualiser les artefacts de votre modèle, procédez comme suit :

   1. Choisissez l’étape Entraînement dans votre graphe de pipeline.

   1. Dans la barre latérale droite, choisissez l’onglet **Aperçu**.

   1. Dans la section **Fichiers**, recherchez les chemins Amazon S3 vers l’artefact du modèle.

1. Pour rechercher l’ARN du package de modèle, procédez comme suit :

   1. Choisissez l’étape Enregistrer le modèle.

   1. Dans la barre latérale droite, choisissez l’onglet **Aperçu**.

   1. Dans la section **Fichiers**, recherchez l’ARN du package de modèle.

------
#### [ Studio Classic ]

**Pour suivre la lignée d’un pipeline**

1. Connectez-vous à Amazon SageMaker Studio Classic. Pour plus d'informations, consultez [Lancer Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Dans la barre latérale gauche de Studio, choisissez l’icône **Accueil** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Dans le menu, sélectionnez **Pipelines**.

1. Utilisez la zone **Search (Recherche)** afin de filtrer la liste des pipelines.

1. Choisissez le pipeline `AbalonePipeline` pour afficher la liste d’exécution et d’autres détails sur le pipeline.

1. Choisissez l’icône **Inspecteur des propriétés** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/gears.png)) dans la barre latérale droite pour ouvrir le volet **PROPRIÉTÉS DU TABLEAU**, dans lequel vous pouvez choisir les propriétés à afficher.

1. Cliquez sur l’onglet **Paramètres**, puis choisissez **Télécharger le fichier de définition de pipeline**. Vous pouvez afficher le fichier pour voir comment le graphique de pipeline a été défini.

1. Dans l’onglet **Exécution**, sélectionnez la première ligne de la liste d’exécution pour afficher son graphe d’exécution et d’autres détails sur l’exécution. Notez que le graphique correspond au diagramme affiché au début du tutoriel.

   Utilisez les icônes de redimensionnement situées en bas à droite du graphe pour zoomer et dézoomer sur le graphe, adapter le graphe à l’écran et l’afficher en plein écran. Pour vous concentrer sur une partie spécifique du graphe, vous pouvez sélectionner une zone vide du graphe et faire glisser le graphe pour le centrer sur cette zone. L’encart situé en bas à droite du graphique affiche votre position dans le graphique.  
![\[\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-execution-graph.png)

1. Dans l’onglet **Graphique**, choisissez l’étape `AbaloneProcess` pour afficher les détails de l’étape.

1. Recherchez les chemins d'accès Amazon S3 vers les jeux de données d'entraînement, de validation et de test dans l'onglet **Output (Sortie)**, sous **Files (Fichiers)**.
**Note**  
Pour obtenir les chemins d'accès complets, cliquez avec le bouton droit sur le chemin, puis choisissez **Copy cell contents (Copier le contenu des cellules)**.

   ```
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/train
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/validation
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/test
   ```

1. Choisissez l'étape `AbaloneTrain`.

1. Recherchez le chemin d'accès Amazon S3 vers l'artefact du modèle dans l'onglet **Output (Sortie)**, sous **Files (Fichiers)** :

   ```
   s3://sagemaker-eu-west-1-acct-id/AbaloneTrain/pipelines-6locnsqz4bfu-AbaloneTrain-NtfEpI0Ahu/output/model.tar.gz
   ```

1. Choisissez l'étape `AbaloneRegisterModel`.

1. Recherchez l’ARN du package de modèles dans l’onglet **Sortie**, sous **Fichiers** :

   ```
   arn:aws:sagemaker:eu-west-1:acct-id:model-package/abalonemodelpackagegroupname/2
   ```

------

# Orchestration Kubernetes
<a name="kubernetes-workflows"></a>

Vous pouvez orchestrer vos tâches de SageMaker formation et d'inférence avec des opérateurs d' SageMaker intelligence artificielle pour Kubernetes et des composants d'intelligence SageMaker artificielle pour les pipelines Kubeflow. SageMaker Les opérateurs AI pour Kubernetes facilitent la tâche des développeurs et des data scientists qui utilisent Kubernetes pour former, ajuster et déployer des modèles d'apprentissage automatique (ML) dans le domaine de l'IA. SageMaker SageMaker Les composants AI pour Kubeflow Pipelines vous permettent de transférer vos tâches de traitement des données et de formation du cluster Kubernetes vers le service géré optimisé pour l'apprentissage automatique d' SageMaker AI.

**Topics**
+ [SageMaker Opérateurs d'IA pour Kubernetes](kubernetes-sagemaker-operators.md)
+ [SageMaker Composants d'IA pour les pipelines Kubeflow](kubernetes-sagemaker-components-for-kubeflow-pipelines.md)

# SageMaker Opérateurs d'IA pour Kubernetes
<a name="kubernetes-sagemaker-operators"></a>

SageMaker Les opérateurs AI pour Kubernetes facilitent la tâche des développeurs et des data scientists qui utilisent Kubernetes pour former, ajuster et déployer des modèles d'apprentissage automatique (ML) dans le domaine de l'IA. SageMaker Vous pouvez installer ces opérateurs d' SageMaker IA sur votre cluster Kubernetes dans Amazon Elastic Kubernetes Service (Amazon EKS SageMaker ) pour créer des tâches d'IA de manière native à l'aide de l'API Kubernetes et d'outils Kubernetes en ligne de commande tels que. `kubectl` Ce guide explique comment configurer et utiliser les opérateurs pour exécuter l'entraînement de modèles, le réglage des hyperparamètres ou l'inférence (en temps réel et par lots) sur l' SageMaker IA à partir d'un cluster Kubernetes. Les présentes procédures et directives supposent que vous connaissez Kubernetes et ses commandes de base.

**Important**  
Nous arrêtons le développement et le support technique de la version originale d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).  
Si vous utilisez actuellement la version `v1.2.2` ou une version inférieure d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), nous vous recommandons de migrer vos ressources vers le [contrôleur de service ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) pour Amazon. SageMaker Le contrôleur de service ACK est une nouvelle génération d' SageMaker opérateurs pour Kubernetes basés sur les [AWS contrôleurs pour Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Pour en savoir plus sur les étapes de migration, consultez [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md).  
Pour obtenir les réponses aux questions fréquemment posées concernant la fin du support de la version originale d' SageMaker Operators for Kubernetes, voir [Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Note**  
Il n’y a pas frais supplémentaires liés à l’utilisation de ces opérateurs. Vous devez payer des frais pour toutes les ressources d' SageMaker IA que vous utilisez par le biais de ces opérateurs.

## Qu’est-ce qu’un opérateur ?
<a name="kubernetes-sagemaker-operators-overview"></a>

Un opérateur Kubernetes est un contrôleur d'applications qui gère des applications pour le compte d'un utilisateur de Kubernetes. Les contrôleurs du plan de contrôle comprennent différentes boucles de commande qui écoutent un gestionnaire d'état central (ETCD) pour réguler l'état de l'application qu'ils contrôlent. Des exemples de telles applications incluent le [C loud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) et`[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)`. Les opérateurs fournissent généralement un niveau d'abstraction supérieur à celui de l'API Kubernetes brute, ce qui permet aux utilisateurs de déployer et de gérer plus facilement des applications. Pour ajouter de nouvelles fonctionnalités à Kubernetes, les développeurs peuvent étendre l'API Kubernetes en créant une **ressource personnalisée** qui contient leur logique et leurs composants spécifiques à l'application ou au domaine. Les opérateurs dans Kubernetes permettent aux utilisateurs d’appeler ces ressources personnalisées de manière native et d’automatiser les flux associés.

### Comment fonctionnent AWS Controllers for Kubernetes (ACK) ?
<a name="kubernetes-sagemaker-operators-explained"></a>

Les opérateurs SageMaker AI pour Kubernetes vous permettent de gérer les tâches en SageMaker IA à partir de votre cluster Kubernetes. La dernière version d' SageMaker AI Operators for Kubernetes est basée sur AWS Controllers for Kubernetes (ACK). ACK inclut un environnement d'exécution de contrôleur commun, un générateur de code et un ensemble de contrôleurs AWS spécifiques au service, dont le contrôleur SageMaker AI.

Le schéma suivant illustre le fonctionnement d’ACK.

![\[Explication de l'opérateur d' SageMaker IA basé sur ACK pour Kubernetes.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


Dans ce schéma, un utilisateur de Kubernetes souhaite exécuter un entraînement de modèle sur l' SageMaker IA depuis le cluster Kubernetes à l'aide de l'API Kubernetes. L'utilisateur lance un appel à `kubectl apply` et transmet un fichier décrivant une ressource personnalisée Kubernetes décrivant le SageMaker travail de formation. `kubectl apply`transmet ce fichier, appelé manifeste, au serveur d'API Kubernetes exécuté dans le nœud du contrôleur Kubernetes (étape *1* du schéma de flux de travail). *Le serveur d'API Kubernetes reçoit le manifeste avec la spécification de la tâche de SageMaker formation et détermine si l'utilisateur est autorisé à créer une ressource personnalisée`sageMaker.services.k8s.aws/TrainingJob`, et si la ressource personnalisée est correctement formatée (étape 2).* Si l’utilisateur est autorisé et si la ressource personnalisée est valide, le serveur d’API Kubernetes écrit (étape *3*) la ressource personnalisée dans son magasin de données etcd, puis répond (étape *4*) à l’utilisateur pour lui indiquer que la ressource personnalisée a été créée. Le contrôleur SageMaker AI, qui s'exécute sur un nœud de travail Kubernetes dans le contexte d'un Kubernetes Pod normal, est informé (étape *5*) qu'une nouvelle ressource personnalisée a été créée. `sageMaker.services.k8s.aws/TrainingJob` Le contrôleur SageMaker AI communique ensuite (étape *6*) avec l' SageMaker API, en appelant l'`CreateTrainingJob`API SageMaker AI pour créer le travail de formation dans AWS. Après avoir communiqué avec l' SageMaker API, le contrôleur SageMaker AI appelle le serveur d'API Kubernetes pour mettre à jour (étape *7*) le statut de la ressource personnalisée avec les informations qu'elle a reçues de l'IA. SageMaker Le contrôleur SageMaker AI fournit donc aux développeurs les mêmes informations que celles qu'ils auraient reçues en utilisant le AWS SDK.

### Présentation des autorisations
<a name="kubernetes-sagemaker-operators-authentication"></a>

Les opérateurs accèdent aux ressources d' SageMaker IA en votre nom. Le rôle IAM que l'opérateur assume pour interagir avec les AWS ressources est différent des informations d'identification que vous utilisez pour accéder au cluster Kubernetes. Le rôle est également différent de celui que vous AWS assumez lors de l'exécution de vos tâches d'apprentissage automatique. 

L’image suivante explique les différentes couches d’authentification.

![\[SageMaker Opérateur AI pour les différentes couches d'authentification de Kubernetes.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)


# Les derniers opérateurs d' SageMaker IA pour Kubernetes
<a name="kubernetes-sagemaker-operators-ack"></a>

Cette section est basée sur la dernière version d' SageMaker AI Operators for Kubernetes using AWS Controllers for Kubernetes (ACK).

**Important**  
Si vous utilisez actuellement la version `v1.2.2` ou une version inférieure d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), nous vous recommandons de migrer vos ressources vers le [contrôleur de service ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) pour Amazon. SageMaker Le contrôleur de service ACK est une nouvelle génération d' SageMaker opérateurs pour Kubernetes basés sur les [AWS contrôleurs pour Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Pour en savoir plus sur les étapes de migration, consultez [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md).  
Pour obtenir les réponses aux questions fréquemment posées concernant la fin du support de la version originale d' SageMaker Operators for Kubernetes, voir [Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

La dernière version d'[SageMaker AI Operators for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) est basée sur [AWS Controllers for Kubernetes (ACK), un framework permettant de créer des contrôleurs](https://aws-controllers-k8s.github.io/community/ ) personnalisés Kubernetes dans lesquels chaque contrôleur communique avec une API de service. AWS Ces contrôleurs permettent aux utilisateurs de Kubernetes d’allouer des ressources AWS telles que des bases de données ou des files d’attente de messages utilisant l’API Kubernetes.

Suivez les étapes ci-dessous pour installer et utiliser ACK afin de former, de régler et de déployer des modèles d'apprentissage automatique avec Amazon SageMaker AI.

**Topics**
+ [Installer des opérateurs d' SageMaker IA pour Kubernetes](#kubernetes-sagemaker-operators-ack-install)
+ [Utiliser des opérateurs d' SageMaker IA pour Kubernetes](#kubernetes-sagemaker-operators-ack-use)
+ [Référence](#kubernetes-sagemaker-operators-ack-reference)

## Installer des opérateurs d' SageMaker IA pour Kubernetes
<a name="kubernetes-sagemaker-operators-ack-install"></a>

Pour configurer la dernière version disponible d' SageMaker AI Operators for Kubernetes, consultez la section *Configuration* dans [Machine Learning with the ACK SageMaker ](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) AI Controller.

## Utiliser des opérateurs d' SageMaker IA pour Kubernetes
<a name="kubernetes-sagemaker-operators-ack-use"></a>

Pour un didacticiel expliquant comment entraîner un modèle d'apprentissage automatique avec le contrôleur de service ACK pour Amazon SageMaker AI à l'aide d'Amazon EKS, consultez [Machine Learning avec le contrôleur ACK SageMaker AI](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

Pour un exemple de mise à l'échelle automatique, voir [Scale SageMaker AI Workloads with Application](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) Auto Scaling

## Référence
<a name="kubernetes-sagemaker-operators-ack-reference"></a>

Consultez également le [ GitHub référentiel du contrôleur de service ACK pour Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) ou consultez la documentation sur [les AWS contrôleurs pour Kubernetes](https://aws-controllers-k8s.github.io/community/docs/community/overview/). 

# Anciens opérateurs d' SageMaker IA pour Kubernetes
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Cette section est basée sur la version originale d'[SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s).

**Important**  
Nous arrêtons le développement et le support technique de la version originale d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).  
Si vous utilisez actuellement la version `v1.2.2` ou une version inférieure d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), nous vous recommandons de migrer vos ressources vers le [contrôleur de service ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) pour Amazon. SageMaker Le contrôleur de service ACK est une nouvelle génération d' SageMaker opérateurs pour Kubernetes basés sur les [AWS contrôleurs pour Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Pour en savoir plus sur les étapes de migration, consultez [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md).  
Pour obtenir les réponses aux questions fréquemment posées concernant la fin du support de la version originale d' SageMaker Operators for Kubernetes, voir [Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Installer des opérateurs d' SageMaker IA pour Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Utilisez Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md)
+ [Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Installer des opérateurs d' SageMaker IA pour Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Suivez les étapes ci-dessous pour installer et utiliser SageMaker AI Operators for Kubernetes afin de former, de régler et de déployer des modèles d'apprentissage automatique avec Amazon AI. SageMaker 

**Topics**
+ [Configuration IAM basée sur le rôle IAM et déploiement de l’opérateur](#iam-role-based-setup-and-operator-deployment)
+ [nettoyer des ressources ;](#cleanup-operator-resources)
+ [Supprimer les opérateurs](#delete-operators)
+ [Résolution des problèmes](#troubleshooting)
+ [Images et SMlogs dans chaque région](#images-and-smlogs-in-each-region)

### Configuration IAM basée sur le rôle IAM et déploiement de l’opérateur
<a name="iam-role-based-setup-and-operator-deployment"></a>

Les sections suivantes décrivent les étapes de configuration et de déploiement de la version originale de l’opérateur.

**Avertissement**  
**Rappel :** Les étapes suivantes n'installent pas la dernière version d' SageMaker AI Operators for Kubernetes. Pour installer les nouveaux opérateurs d' SageMaker IA basés sur ACK pour Kubernetes, consultez. [Les derniers opérateurs d' SageMaker IA pour Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Conditions préalables
<a name="prerequisites"></a>

Ce guide suppose que vous avez rempli les prérequis suivants : 
+ Installez les outils suivants sur la machine client utilisée pour accéder à votre cluster Kubernetes : 
  + [https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) version 1.13 ou ultérieure. Vous devez utiliser une version de `kubectl` différente au plus d'une version mineure par rapport à votre plan de contrôle de cluster Amazon EKS. Par exemple, un client `kubectl` 1.13 fonctionne avec des clusters Kubernetes 1.13 et 1.14. OpenID Connect (OIDC) n'est pas pris en charge dans les versions antérieures à 1.13. 
  + [https://github.com/weaveworks/eksctl](https://github.com/weaveworks/eksctl) version 0.7.0 ou ultérieure 
  + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) version 1.16.232 ou ultérieure 
  + (facultatif) [Helm](https://helm.sh/docs/intro/install/) version 3.0 ou ultérieure 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ Vous devez avoir des autorisations IAM de créer des rôles et d'attacher des politiques à des rôles.
+ Vous devez avoir créé un cluster Kubernetes sur lequel exécuter les opérateurs. Il doit s'agir de Kubernetes version 1.13 ou 1.14. Pour la création automatisée de cluster à l’aide de `eksctl`, consultez [Démarrer avec eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). L'allocation d'un cluster prend de 20 à 30 minutes. 

#### Déploiement de la portée du cluster
<a name="cluster-scoped-deployment"></a>

Avant de pouvoir déployer votre opérateur à l'aide d'un rôle IAM, associez un fournisseur d'identité (IdP) OpenID Connect (OIDC) à votre rôle pour vous authentifier auprès du service IAM.

##### Création d'un fournisseur OIDC pour votre cluster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

Les instructions suivantes montrent comment créer et associer un fournisseur OIDC à votre cluster Amazon EKS.

1. Définissez les variables d'environnement `CLUSTER_NAME` et `AWS_REGION` locales comme suit :

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Utilisez la commande suivante pour associer le fournisseur OIDC à votre cluster. Pour plus d’informations, consultez [Activation des rôles IAM pour les comptes de service sur votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Maintenant que le cluster dispose d'un fournisseur d'identité OIDC, vous pouvez créer un rôle et ServiceAccount autoriser Kubernetes à assumer ce rôle.

##### Obtenir l’ID OIDC
<a name="get-the-oidc-id"></a>

Pour configurer le ServiceAccount, obtenez l'URL de l'émetteur OIDC à l'aide de la commande suivante :

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

La commande renvoie un URL telle que la suivante : 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

Dans cette URL, la valeur `D48675832CA65BD10A532F597OIDCID` est l'ID OIDC. L'ID OIDC de votre cluster est différent. Vous avez besoin de cette valeur d'ID OIDC pour créer un rôle. 

 Si votre sortie est `None`, cela signifie que votre version client est ancienne. Pour contourner ce problème, exécutez la commande suivante : 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

L'URL OIDC est renvoyée comme suit : 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Créer un rôle IAM
<a name="create-an-iam-role"></a>

1. Créez un fichier nommé `trust.json` et insérez le bloc de code de relation d'approbation suivant. Assurez-vous de remplacer tous les espaces réservés `<OIDC ID>`, `<AWS account number>` et `<EKS Cluster region>` par des valeurs correspondant à votre cluster. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Exécutez la commande suivante pour créer un rôle avec la relation d’approbation définie dans `trust.json`. Ce rôle permet au cluster Amazon EKS d'obtenir et d'actualiser les informations d'identification à partir d'IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Notez l'`ROLE ARN` que vous transmettez à votre opérateur. 

##### Associer la AmazonSageMakerFullAccess politique au rôle
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Pour donner au rôle l'accès à l' SageMaker IA, joignez la [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)politique. Si vous souhaitez limiter les autorisations à l’opérateur, vous pouvez créer votre propre politique personnalisée et l’attacher. 

 Pour attacher `AmazonSageMakerFullAccess`, exécutez la commande suivante : 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Les Kubernetes ServiceAccount `sagemaker-k8s-operator-default` doivent disposer d'autorisations. `AmazonSageMakerFullAccess` Confirmez cette donnée lorsque vous installez l'opérateur. 

##### Déploiement de l'opérateur
<a name="deploy-the-operator"></a>

Lors du déploiement de votre opérateur, vous pouvez utiliser un fichier YAML ou les Charts de Helm. 

##### Déploiement de l'opérateur avec YAML
<a name="deploy-the-operator-using-yaml"></a>

Il s'agit du moyen le plus simple de déployer vos opérateurs. Procédez comme suit : 

1. Téléchargez le script du programme d'installation à l'aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Modifiez le fichier `installer.yaml` pour remplacer `eks.amazonaws.com/role-arn`. Remplacez le présent ARN par l'Amazon Resource Name (ARN) du rôle basé sur OIDC que vous avez créé. 

1. Utilisez la commande suivante pour déployer le cluster : 

   ```
   kubectl apply -f installer.yaml
   ```

##### Déploiement de l'opérateur à l'aide des Charts de Helm
<a name="deploy-the-operator-using-helm-charts"></a>

Utilisez le Chart de Helm fourni pour installer l'opérateur. 

1. Clonez le répertoire du programme d'installation Helm à l'aide de la commande suivante : 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Modifiez le fichier `rolebased/values.yaml`, qui inclut des paramètres de haut niveau pour le Chart. Remplacez le présent ARN du rôle par l'Amazon Resource Name (ARN) du rôle basé sur OIDC que vous avez créé. 

1. Installez le Chart de Helm à l’aide de la commande suivante : 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Si vous décidez d'installer l'opérateur dans un autre espace de noms que celui spécifié, vous devez ajuster l'espace de noms défini dans le fichier `trust.json` du rôle IAM pour qu'ils correspondent. 

1. Après un instant, le Chart est installé avec un nom généré de manière aléatoire. Exécutez les commandes suivantes pour vérifier que l'installation a bien été effectuée : 

   ```
   helm ls
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Vérification du déploiement de l’opérateur
<a name="verify-the-operator-deployment"></a>

1. Vous devriez être en mesure de voir les définitions de ressources personnalisées de l' SageMaker IA (CRDs) pour chaque opérateur déployé sur votre cluster en exécutant la commande suivante : 

   ```
   kubectl get crd | grep sagemaker
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Assurez-vous que le pod de l'opérateur fonctionne correctement. Utilisez la commande suivante afin de répertorier tous les pods : 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Vous devez voir un pod nommé `sagemaker-k8s-operator-controller-manager-*****` dans l'espace de noms `sagemaker-k8s-operator-system` comme suit : 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Déploiement limité aux espaces de noms
<a name="namespace-scoped-deployment"></a>

Vous avez la possibilité d’installer votre opérateur dans la portée d’un espace de noms Kubernetes individuel. Dans ce mode, le contrôleur surveille et réconcilie les ressources avec l' SageMaker IA uniquement si les ressources sont créées dans cet espace de noms. Cela permet de contrôler plus finement quel contrôleur gère quelles ressources. Cela est utile pour effectuer un déploiement sur plusieurs AWS comptes ou pour contrôler quels utilisateurs ont accès à des tâches spécifiques. 

Ce guide explique comment installer un opérateur dans un espace de noms prédéfini particulier. Pour déployer un contrôleur dans un deuxième espace de noms, suivez le guide du début à la fin et modifiez l’espace de noms à chaque étape. 

##### Création d'un fournisseur OIDC pour votre cluster Amazon EKS
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

Les instructions suivantes montrent comment créer et associer un fournisseur OIDC à votre cluster Amazon EKS. 

1. Définissez les variables d'environnement `CLUSTER_NAME` et `AWS_REGION` locales comme suit : 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Utilisez la commande suivante pour associer le fournisseur OIDC à votre cluster. Pour plus d’informations, consultez [Activation des rôles IAM pour les comptes de service sur votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Maintenant que le cluster dispose d'un fournisseur d'identité OIDC, créez un rôle et ServiceAccount autorisez Kubernetes à assumer ce rôle. 

##### Obtenir votre ID OIDC
<a name="get-your-oidc-id"></a>

Pour configurer le ServiceAccount, obtenez d'abord l'URL de l'émetteur d'OpenID Connect à l'aide de la commande suivante : 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

La commande renvoie un URL telle que la suivante : 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

Dans cette URL, la valeur D48675832 CA65 BD10 A532F597OIDCID est l'ID OIDC. L’ID OIDC de votre cluster est différent. Vous avez besoin de cette valeur d'ID OIDC pour créer un rôle. 

 Si votre sortie est `None`, cela signifie que votre version client est ancienne. Pour contourner ce problème, exécutez la commande suivante : 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

L'URL OIDC est renvoyée comme suit : 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Création de votre rôle IAM
<a name="create-your-iam-role"></a>

1. Créez un fichier nommé `trust.json` et insérez le bloc de code de relation d'approbation suivant. Assurez-vous de remplacer tous les espaces réservés `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>` et `<Namespace>` par des valeurs correspondant à votre cluster. Aux fins du présent guide, `my-namespace` est utilisé pour la valeur `<Namespace>`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Exécutez la commande suivante pour créer un rôle avec la relation d’approbation définie dans `trust.json`. Ce rôle permet au cluster Amazon EKS d'obtenir et d'actualiser les informations d'identification à partir d'IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Notez l'`ROLE ARN`. Vous transmettez à votre opérateur. 

##### Associez la AmazonSageMakerFullAccess politique à votre rôle
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Pour donner au rôle l'accès à l' SageMaker IA, joignez la [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)politique. Si vous souhaitez limiter les autorisations à l’opérateur, vous pouvez créer votre propre politique personnalisée et l’attacher. 

 Pour attacher `AmazonSageMakerFullAccess`, exécutez la commande suivante : 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Les Kubernetes ServiceAccount `sagemaker-k8s-operator-default` doivent disposer d'autorisations. `AmazonSageMakerFullAccess` Confirmez cette donnée lorsque vous installez l'opérateur. 

##### Déploiement de l'opérateur dans votre espace de noms
<a name="deploy-the-operator-to-your-namespace"></a>

Lors du déploiement de votre opérateur, vous pouvez utiliser un fichier YAML ou les Charts de Helm. 

##### Déploiement de l'opérateur dans votre espace de noms en utilisant YAML
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

Il existe deux parties pour le déploiement d'un opérateur dans la portée d'un espace de noms. Le premier est l'ensemble de CRDs ceux qui sont installés au niveau du cluster. Ces définitions de ressources ne doivent être installées qu'une seule fois par cluster Kubernetes. La deuxième partie concerne les autorisations de l'opérateur et le déploiement lui-même. 

 Si vous ne l'avez pas encore installé CRDs dans le cluster, appliquez le programme d'installation CRD YAML à l'aide de la commande suivante : 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Pour installer l'opérateur sur le cluster : 

1. Téléchargez le programme d'installation de l'opérateur YAML à l'aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Mettez à jour le programme d'installation YAML pour placer les ressources dans votre espace de noms spécifié à l'aide de la commande suivante : 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
   ```

1. Modifiez le fichier `operator.yaml` pour placer des ressources dans votre `eks.amazonaws.com/role-arn`. Remplacez le présent ARN par l'Amazon Resource Name (ARN) du rôle basé sur OIDC que vous avez créé. 

1. Utilisez la commande suivante pour déployer le cluster : 

   ```
   kubectl apply -f operator.yaml
   ```

##### Déploiement de l'opérateur dans votre espace de noms à l'aide des Charts de Helm
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

Deux parties sont requises pour le déploiement d'un opérateur dans la portée d'un espace de noms. Le premier est l'ensemble de CRDs ceux qui sont installés au niveau du cluster. Ces définitions de ressources ne doivent être installées qu'une seule fois par cluster Kubernetes. La deuxième partie concerne les autorisations de l'opérateur et le déploiement lui-même. Lorsque vous utilisez les Charts de Helm, vous devez d'abord créer l'espace de noms à l'aide de `kubectl`. 

1. Clonez le répertoire du programme d'installation Helm à l'aide de la commande suivante : 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Modifiez le fichier `rolebased/values.yaml`, qui inclut des paramètres de haut niveau pour le Chart. Remplacez le présent ARN du rôle par l'Amazon Resource Name (ARN) du rôle basé sur OIDC que vous avez créé. 

1. Installez le Chart de Helm à l’aide de la commande suivante : 

   ```
   helm install crds crd_chart/
   ```

1. Créez l'espace de noms requis et installez l'opérateur à l'aide de la commande suivante : 

   ```
   kubectl create namespace <namespace>
   helm install --n <namespace> op operator_chart/
   ```

1. Après un instant, le graphique est installé avec le nom `sagemaker-operator`. Exécutez les commandes suivantes pour vérifier que l'installation a bien été effectuée : 

   ```
   helm ls
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Vérifier le déploiement de l’opérateur dans votre espace de noms
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Vous devriez être en mesure de voir les définitions de ressources personnalisées de l' SageMaker IA (CRDs) pour chaque opérateur déployé sur votre cluster en exécutant la commande suivante : 

   ```
   kubectl get crd | grep sagemaker
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Assurez-vous que le pod de l'opérateur fonctionne correctement. Utilisez la commande suivante afin de répertorier tous les pods : 

   ```
   kubectl -n my-namespace get pods
   ```

   Vous devez voir un pod nommé `sagemaker-k8s-operator-controller-manager-*****` dans l’espace de noms `my-namespace` comme suit : 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Installez le `kubectl` plugin SageMaker AI Logs
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 [Dans le cadre des opérateurs SageMaker AI pour Kubernetes, vous pouvez utiliser le `smlogs` plugin pour.](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) `kubectl` Cela permet de diffuser CloudWatch les journaux de l' SageMaker IA. `kubectl` `kubectl`doit être installé sur votre [PATH](http://www.linfo.org/path_env_var.html). Les commandes suivantes placent le binaire dans le répertoire `sagemaker-k8s-bin` de votre répertoire de base et ajoutent ce répertoire à votre `PATH`. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Utilisez la commande suivante pour vérifier que le plug-in `kubectl` est correctement installé : 

```
kubectl smlogs
```

Si le plug-in `kubectl` est installé correctement, votre sortie doit ressembler à ce qui suit : 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### nettoyer des ressources ;
<a name="cleanup-operator-resources"></a>

Pour désinstaller l'opérateur de votre cluster, vous devez d'abord vous assurer de supprimer toutes les ressources SageMaker AI du cluster. Si vous ne le faites pas, l’opération de suppression de l’opérateur se bloque. Exécutez les commandes suivantes pour arrêter toutes les tâches : 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Vous devez voir des résultats similaires à ce qui suit : 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Après avoir supprimé toutes les tâches d' SageMaker IA, consultez la section [Supprimer les opérateurs](#delete-operators) pour supprimer l'opérateur de votre cluster.

### Supprimer les opérateurs
<a name="delete-operators"></a>

#### Supprimer les opérateurs basés sur les clusters
<a name="delete-cluster-based-operators"></a>

##### Opérateurs installés à l’aide de YAML
<a name="operators-installed-using-yaml"></a>

Pour désinstaller l'opérateur de votre cluster, assurez-vous que toutes les ressources SageMaker AI ont été supprimées du cluster. Si vous ne le faites pas, l’opération de suppression de l’opérateur se bloque.

**Note**  
Avant de supprimer votre cluster, assurez-vous de supprimer toutes les ressources d' SageMaker IA du cluster. Pour plus d’informations, consultez [nettoyer des ressources ;](#cleanup-operator-resources).

Après avoir supprimé toutes les tâches d' SageMaker IA, utilisez `kubectl` pour supprimer l'opérateur du cluster :

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Vous devez voir des résultats similaires à ce qui suit : 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Opérateurs installés à l’aide des Charts de Helm
<a name="operators-installed-using-helm-charts"></a>

Pour supprimer l'opérateur CRDs, supprimez d'abord toutes les tâches en cours d'exécution. Supprimez ensuite le Chart de Helm utilisé pour déployer les opérateurs à l'aide des commandes suivantes : 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete <chart_name>
```

#### Supprimer les opérateurs basés sur des espaces de noms
<a name="delete-namespace-based-operators"></a>

##### Opérateurs installés avec YAML
<a name="operators-installed-with-yaml"></a>

Pour désinstaller l'opérateur de votre cluster, assurez-vous d'abord que toutes les ressources SageMaker AI ont été supprimées du cluster. Si vous ne le faites pas, l’opération de suppression de l’opérateur se bloque.

**Note**  
Avant de supprimer votre cluster, assurez-vous de supprimer toutes les ressources d' SageMaker IA du cluster. Pour plus d’informations, consultez [nettoyer des ressources ;](#cleanup-operator-resources).

Après avoir supprimé toutes les tâches d' SageMaker IA, `kubectl` utilisez-le pour supprimer d'abord l'opérateur de l'espace de noms, puis CRDs du cluster. Exécutez les commandes suivantes pour supprimer l’opérateur du cluster : 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace <namespace>
```

##### Opérateurs installés avec des Charts de Helm
<a name="operators-installed-with-helm-charts"></a>

Pour supprimer l'opérateur CRDs, supprimez d'abord toutes les tâches en cours d'exécution. Supprimez ensuite le Chart de Helm utilisé pour déployer les opérateurs à l’aide des commandes suivantes : 

```
# Delete the operator
helm delete <chart_name>
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace <namespace>
```

### Résolution des problèmes
<a name="troubleshooting"></a>

#### Débogage d'une tâche ayant échoué
<a name="debugging-a-failed-job"></a>

Suivez ces étapes pour déboguer une tâche qui a échoué.
+ Vous pouvez vérifier le statut de la tâche en exécutant la commande suivante : 

  ```
  kubectl get <CRD Type> <job name>
  ```
+ Si le job a été créé dans SageMaker AI, vous pouvez utiliser la commande suivante pour voir le `STATUS` et le `SageMaker Job Name` : 

  ```
  kubectl get <crd type> <job name>
  ```
+ Vous pouvez utiliser `smlogs` pour trouver la cause du problème à l’aide de la commande suivante : 

  ```
  kubectl smlogs <crd type> <job name>
  ```
+  Vous pouvez également utiliser la commande `describe` pour obtenir plus de détails sur la tâche à l'aide de la commande suivante. Le résultat a un champ `additional` qui contient plus d’informations sur le statut de la tâche. 

  ```
  kubectl describe <crd type> <job name>
  ```
+ Si la tâche n'a pas été créée dans SageMaker AI, utilisez les journaux du module de l'opérateur pour trouver la cause du problème comme suit : 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system
  ```

#### Suppression d’une CRD de l’opérateur
<a name="deleting-an-operator-crd"></a>

Si la suppression d'une tâche ne fonctionne pas, vérifiez si l'opérateur est en cours d'exécution. Si l'opérateur n'est pas en cours d'exécution, vous devez supprimer le finalisateur en procédant comme suit : 

1. Dans un nouveau terminal, ouvrez la tâche dans un éditeur en utilisant `kubectl edit` comme suit : 

   ```
   kubectl edit <crd type> <job name>
   ```

1. Modifiez la tâche pour supprimer le finalisateur en supprimant les deux lignes suivantes du fichier. Enregistrez le fichier et la tâche est supprimée. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Images et SMlogs dans chaque région
<a name="images-and-smlogs-in-each-region"></a>

Le tableau suivant répertorie les images d'opérateurs disponibles SMLogs dans chaque région. 


|  Région  |  Image du contrôleur  |  Linux SMLogs  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 

# Utilisez Amazon SageMaker AI Jobs
<a name="kubernetes-sagemaker-jobs"></a>

Cette section est basée sur la version originale d'[SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s).

**Important**  
Nous arrêtons le développement et le support technique de la version originale d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).  
Si vous utilisez actuellement la version `v1.2.2` ou une version inférieure d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), nous vous recommandons de migrer vos ressources vers le [contrôleur de service ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) pour Amazon. SageMaker Le contrôleur de service ACK est une nouvelle génération d' SageMaker opérateurs pour Kubernetes basés sur les [AWS contrôleurs pour Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Pour en savoir plus sur les étapes de migration, consultez [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md).  
Pour obtenir les réponses aux questions fréquemment posées concernant la fin du support de la version originale d' SageMaker Operators for Kubernetes, voir [Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Pour exécuter une tâche Amazon SageMaker AI à l'aide des opérateurs pour Kubernetes, vous pouvez appliquer un fichier YAML ou utiliser les Helm Charts fournis. 

Tous les exemples de tâches d’opérateur dans les tutoriels suivants utilisent des exemples de données provenant d’un jeu de données MNIST public. Pour exécuter ces exemples, téléchargez le jeu de données dans votre compartiment Amazon S3. Vous pouvez trouver le jeu de données dans la section [Download the MNIST Dataset](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html). 

**Topics**
+ [L' TrainingJob opérateur](#trainingjob-operator)
+ [L' HyperParameterTuningJob opérateur](#hyperparametertuningjobs-operator)
+ [L' BatchTransformJob opérateur](#batchtransformjobs-operator)
+ [L' HostingDeployment opérateur](#hosting-deployment-operator)
+ [L' ProcessingJob opérateur](#kubernetes-processing-job-operator)
+ [HostingAutoscalingPolicy (HAP) Opérateur](#kubernetes-hap-operator)

## L' TrainingJob opérateur
<a name="trainingjob-operator"></a>

Les opérateurs de tâches de formation concilient les spécifications du poste de formation que vous avez spécifiées avec l' SageMaker IA en les lançant pour vous dans SageMaker AI. Pour en savoir plus sur les métiers de SageMaker formation, consultez la [documentation de CreateTrainingJob l'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html) AI. 

**Topics**
+ [Créez un à TrainingJob l'aide d'un fichier YAML](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Création d'un graphique TrainingJob à l'aide d'un helm](#create-a-trainingjob-using-a-helm-chart)
+ [Liste TrainingJobs](#list-training-jobs)
+ [Décrivez un TrainingJob](#describe-a-training-job)
+ [Afficher les journaux de TrainingJobs](#view-logs-from-training-jobs)
+ [Supprimer TrainingJobs](#delete-training-jobs)

### Créez un à TrainingJob l'aide d'un fichier YAML
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

1. Téléchargez l’exemple de fichier YAML pour l’entraînement à l’aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
   ```

1. Modifiez le `xgboost-mnist-trainingjob.yaml` fichier pour remplacer le `roleArn` paramètre par votre `<sagemaker-execution-role>` compartiment Amazon S3 et `outputPath` par le compartiment Amazon S3 auquel le rôle d'exécution SageMaker AI a accès en écriture. Ils `roleArn` doivent disposer d'autorisations pour que l' SageMaker IA puisse accéder à Amazon S3 CloudWatch, Amazon et à d'autres services en votre nom. Pour plus d'informations sur la création d'une SageMaker IA ExecutionRole, consultez la section [Rôles de l'SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). Appliquez le fichier YAML à l’aide de la commande suivante : 

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Création d'un graphique TrainingJob à l'aide d'un helm
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Vous pouvez utiliser Helm Charts pour exécuter TrainingJobs. 

1. Clonez le GitHub dépôt pour obtenir le code source à l'aide de la commande suivante : 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` et modifiez le fichier `values.yaml` pour remplacer des valeurs comme `rolearn` et `outputpath` par des valeurs qui correspondent à votre compte. Le ROLearn doit disposer d'autorisations pour que l' SageMaker IA puisse accéder à Amazon S3 CloudWatch, Amazon et à d'autres services en votre nom. Pour plus d'informations sur la création d'une SageMaker IA ExecutionRole, consultez la section [Rôles de l'SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). 

#### Créez le TrainingJob
<a name="create-the-training-job"></a>

Lorsque les rôles et les compartiments Amazon S3 ont été remplacés par des valeurs appropriées dans `values.yaml`, vous pouvez créer une tâche d'entraînement à l'aide de la commande suivante : 

```
helm install . --generate-name
```

Le résultat doit être similaire à ce qui suit : 

```
NAME: chart-12345678
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-trainingjob.
```

#### Vérification de votre Chart de Helm d'entraînement
<a name="verify-your-training-helm-chart"></a>

Pour vérifier que le Chart de Helm a bien été créé, exécutez : 

```
helm ls
```

Le résultat doit être similaire à ce qui suit : 

```
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
chart-12345678        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-12345678    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` crée une ressource Kubernetes `TrainingJob`. L'opérateur lance la tâche de formation proprement dite en SageMaker IA et met à jour la ressource `TrainingJob` Kubernetes pour refléter le statut de la tâche en IA. SageMaker Vous devez payer des frais pour les ressources d' SageMaker IA utilisées pendant la durée de votre travail. Vous ne payez pas de frais une fois votre tâche terminée ou arrêtée. 

**Remarque** : SageMaker L'IA ne vous permet pas de mettre à jour une tâche d'entraînement en cours d'exécution. Vous ne pouvez pas modifier un paramètre et réappliquer le fichier de configuration. Modifiez le nom des métadonnées ou supprimez la tâche existante et créez-en une autre. À l'instar des formations existantes, les opérateurs de tâches, comme TFJob dans Kubeflow, ne `update` sont pas pris en charge. 

### Liste TrainingJobs
<a name="list-training-jobs"></a>

Utilisez la commande suivante pour répertorier toutes les tâches créées à l'aide de l'opérateur Kubernetes : 

```
kubectl get TrainingJob
```

Le résultat pour toutes les tâches répertoriées doit ressembler à ce qui suit : 

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

Une tâche d’entraînement reste répertoriée après son achèvement ou son échec. Vous pouvez supprimer une tâche `TrainingJob` de la liste en suivant la procédure [Supprimer TrainingJobs](#delete-training-jobs). Les tâches terminées ou interrompues ne sont pas facturées pour les ressources de l' SageMaker IA. 

#### TrainingJob valeurs de statut
<a name="training-job-status-values"></a>

Le champ `STATUS` peut comporter l’une des valeurs suivantes : 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Ces statuts proviennent directement de la [documentation officielle de l'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus) AI. 

En plus du statut officiel d' SageMaker IA, il est possible de `STATUS` l'être`SynchronizingK8sJobWithSageMaker`. Cela signifie que l'opérateur n'a pas encore traité la tâche. 

#### Valeurs du statut secondaire
<a name="secondary-status-values"></a>

Les statuts secondaires proviennent directement de la [documentation officielle de l'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus) AI. Ils contiennent des informations plus détaillées sur le statut de la tâche. 

### Décrivez un TrainingJob
<a name="describe-a-training-job"></a>

Vous pouvez obtenir plus d'informations sur la tâche d'entraînement en utilisant la commande `describe` `kubectl`. Elle est généralement utilisée pour déboguer un problème ou vérifier les paramètres d'une tâche d'entraînement. Pour obtenir des informations sur votre tâche d'entraînement, utilisez la commande suivante : 

```
kubectl describe trainingjob xgboost-mnist-from-for-s3
```

Le résultat de votre tâche d'entraînement doit ressembler à ce qui suit : 

```
Name:         xgboost-mnist-from-for-s3
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  sagemaker.aws.amazon.com/v1
Kind:         TrainingJob
Metadata:
  Creation Timestamp:  2019-11-20T23:42:35Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  23119
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3
  UID:               6d7uiui-0bef-11ea-b94e-0ed467example
Spec:
  Algorithm Specification:
    Training Image:       8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
    Training Input Mode:  File
  Hyper Parameters:
    Name:   eta
    Value:  0.2
    Name:   gamma
    Value:  4
    Name:   max_depth
    Value:  5
    Name:   min_child_weight
    Value:  6
    Name:   num_class
    Value:  10
    Name:   num_round
    Value:  10
    Name:   objective
    Value:  multi:softmax
    Name:   silent
    Value:  0
  Input Data Config:
    Channel Name:      train
    Compression Type:  None
    Content Type:      text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
    Channel Name:                    validation
    Compression Type:                None
    Content Type:                    text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
  Output Data Config:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/
  Region:             us-east-2
  Resource Config:
    Instance Count:     1
    Instance Type:      ml.m4.xlarge
    Volume Size In GB:  5
  Role Arn:             arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole
  Stopping Condition:
    Max Runtime In Seconds:  86400
  Training Job Name:         xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example
Status:
  Cloud Watch Log URL:           https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix
  Last Check Time:               2019-11-20T23:44:29Z
  Sage Maker Training Job Name:  xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample
  Secondary Status:              Downloading
  Training Job Status:           InProgress
Events:                          <none>
```

### Afficher les journaux de TrainingJobs
<a name="view-logs-from-training-jobs"></a>

Utilisez la commande suivante pour consulter les journaux depuis la tâche d'entraînement `kmeans-mnist` : 

```
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
```

Votre sortie doit ressembler à ce qui suit : Les journaux des instances sont classés par ordre chronologique. 

```
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting"
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training.
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ','
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
```

### Supprimer TrainingJobs
<a name="delete-training-jobs"></a>

Utilisez la commande suivante pour arrêter une tâche de formation sur Amazon SageMaker AI : 

```
kubectl delete trainingjob xgboost-mnist-from-for-s3
```

Cette commande supprime la tâche de SageMaker formation de Kubernetes. Cette commande renvoie le résultat suivant : 

```
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
```

Si la tâche est toujours en cours sur l' SageMaker IA, elle s'arrête. Aucuns frais ne vous seront facturés pour les ressources d' SageMaker IA une fois votre travail arrêté ou terminé. 

**Remarque** : SageMaker L'IA ne supprime pas les tâches de formation. Les tâches interrompues continuent de s'afficher sur la console SageMaker AI. La `delete` commande prend environ 2 minutes pour nettoyer les ressources de l' SageMaker IA. 

## L' HyperParameterTuningJob opérateur
<a name="hyperparametertuningjobs-operator"></a>

Les opérateurs de tâches de réglage des hyperparamètres concilient la spécification de tâche de réglage des hyperparamètres que vous avez spécifiée avec l' SageMaker IA en les lançant dans AI. SageMaker Pour en savoir plus sur les tâches de réglage des hyperparamètres de l' SageMaker IA, consultez la [documentation de l'CreateHyperParameterTuningJob API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html) AI. 

**Topics**
+ [Créez un à HyperparameterTuningJob l'aide d'un fichier YAML](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Créer un graphique HyperparameterTuningJob à l'aide d'un Helm](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [Liste HyperparameterTuningJobs](#list-hyperparameter-tuning-jobs)
+ [Décrivez un HyperparameterTuningJob](#describe-a-hyperparameter-tuning-job)
+ [Afficher les journaux de HyperparameterTuningJobs](#view-logs-from-hyperparametertuning-jobs)
+ [Supprimer un HyperparameterTuningJob](#delete-hyperparametertuning-jobs)

### Créez un à HyperparameterTuningJob l'aide d'un fichier YAML
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

1. Téléchargez l'exemple de fichier YAML pour la tâche de réglage d'hyperparamètre à l'aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
   ```

1. Modifiez le fichier `xgboost-mnist-hpo.yaml` pour remplacer le paramètre `roleArn` par votre `sagemaker-execution-role`. Pour que la tâche de réglage d'hyperparamètre aboutisse, vous devez également modifier les valeurs `s3InputPath` et `s3OutputPath` qui correspondent à votre compte. Appliquez le fichier YAML de mises à jour à l'aide de la commande suivante : 

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Créer un graphique HyperparameterTuningJob à l'aide d'un Helm
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

Vous pouvez utiliser les Charts de Helm pour exécuter des tâches de réglage d'hyperparamètre. 

1. Clonez le GitHub dépôt pour obtenir le code source à l'aide de la commande suivante : 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/`. 

1. Modifiez le fichier `values.yaml` pour remplacer le paramètre `roleArn` par votre `sagemaker-execution-role`. Pour que la tâche de réglage d'hyperparamètre aboutisse, vous devez également modifier les valeurs `s3InputPath` et `s3OutputPath` qui correspondent à votre compte. 

#### Créez le HyperparameterTuningJob
<a name="create-the-hpo-job"></a>

Lorsque les rôles et les chemins Amazon S3 ont été remplacés par des valeurs appropriées dans `values.yaml`, vous pouvez créer une tâche de réglage d'hyperparamètre à l'aide de la commande suivante : 

```
helm install . --generate-name
```

Votre sortie doit ressembler à ce qui suit : 

```
NAME: chart-1574292948
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
```

#### Vérification de l'installation du Chart
<a name="verify-chart-installation"></a>

Pour vérifier que le Chart de Helm a bien été créé, exécutez la commande suivante : 

```
helm ls
```

Le résultat doit être similaire à ce qui suit : 

```
NAME                    NAMESPACE       REVISION        UPDATED
chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0                               STATUS          CHART                           APP VERSION
chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` crée une ressource Kubernetes `HyperParameterTuningJob`. L'opérateur lance la tâche d'optimisation des hyperparamètres dans l' SageMaker IA et met à jour la ressource `HyperParameterTuningJob` Kubernetes pour refléter le statut de la tâche dans l'IA. SageMaker Vous devez payer des frais pour les ressources d' SageMaker IA utilisées pendant la durée de votre travail. Vous ne payez pas de frais une fois votre tâche terminée ou arrêtée. 

**Remarque** : SageMaker L'IA ne vous permet pas de mettre à jour une tâche de réglage d'hyperparamètres en cours d'exécution. Vous ne pouvez pas modifier un paramètre et réappliquer le fichier de configuration. Vous devez modifier le nom des métadonnées ou supprimer la tâche existante et en créer une autre. À l’instar des opérateurs de tâche d’entraînement existants tels que `TFJob` dans Kubeflow, `update` n’est pas pris en charge. 

### Liste HyperparameterTuningJobs
<a name="list-hyperparameter-tuning-jobs"></a>

Utilisez la commande suivante pour répertorier toutes les tâches créées à l'aide de l'opérateur Kubernetes : 

```
kubectl get hyperparametertuningjob
```

Le résultat doit être similaire à ce qui suit : 

```
NAME         STATUS      CREATION-TIME          COMPLETED   INPROGRESS   ERRORS   STOPPED   BEST-TRAINING-JOB                               SAGEMAKER-JOB-NAME
xgboost-mnist-hpo   Completed   2019-10-17T01:15:52Z   10          0            0        0         xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123   xgboostha92f5e3cf07b11e9bf6c123
```

Une tâche de réglage d’hyperparamètre reste répertoriée après son achèvement ou son échec. Vous pouvez supprimer une tâche `hyperparametertuningjob` de la liste en suivant la procédure [Supprimer un HyperparameterTuningJob](#delete-hyperparametertuning-jobs). Les tâches terminées ou interrompues ne sont pas facturées pour les ressources de l' SageMaker IA.

#### Valeurs de statut de tâche de réglage des hyperparamètres
<a name="hyperparameter-tuning-job-status-values"></a>

Le champ `STATUS` peut comporter l'une des valeurs suivantes : 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Ces statuts proviennent directement de la [documentation officielle de l'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) AI. 

En plus du statut officiel d' SageMaker IA, il est possible de `STATUS` l'être`SynchronizingK8sJobWithSageMaker`. Cela signifie que l’opérateur n’a pas encore traité la tâche. 

#### Compteurs de statut
<a name="status-counters"></a>

Le résultat a plusieurs compteurs, comme `COMPLETED` et `INPROGRESS`. Il s'agit du nombre de tâches d'entraînement terminées et en cours, respectivement. Pour plus d'informations sur la façon dont ils sont déterminés, consultez [TrainingJobStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)la documentation de l' SageMaker API. 

#### Meilleur TrainingJob
<a name="best-training-job"></a>

Cette colonne contient le nom de la `TrainingJob` qui optimisait le mieux la métrique sélectionnée. 

Pour afficher un résumé des hyperparamètres réglés, exécutez : 

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Pour afficher des informations détaillées sur les `TrainingJob`, exécutez : 

```
kubectl describe trainingjobs <job name>
```

#### Engendré TrainingJobs
<a name="spawned-training-jobs"></a>

Vous pouvez également suivre les 10 tâches d'entraînement à Kubernetes démarrées par `HyperparameterTuningJob` en exécutant la commande suivante : 

```
kubectl get trainingjobs
```

### Décrivez un HyperparameterTuningJob
<a name="describe-a-hyperparameter-tuning-job"></a>

Vous pouvez obtenir des détails de débogage à l’aide de la commande `describe` `kubectl`.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Outre les informations relatives à la tâche de réglage, l'opérateur SageMaker AI pour Kubernetes présente également la [meilleure tâche de formation trouvée par la tâche](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job) de réglage des hyperparamètres dans la sortie, comme suit : `describe` 

```
Name:         xgboost-mnist-hpo
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HyperparameterTuningJob
Metadata:
  Creation Timestamp:  2019-10-17T01:15:52Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  8167
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo
  UID:               a92f5e3c-f07b-11e9-bf6c-06d6f303uidu
Spec:
  Hyper Parameter Tuning Job Config:
    Hyper Parameter Tuning Job Objective:
      Metric Name:  validation:error
      Type:         Minimize
    Parameter Ranges:
      Integer Parameter Ranges:
        Max Value:     20
        Min Value:     10
        Name:          num_round
        Scaling Type:  Linear
    Resource Limits:
      Max Number Of Training Jobs:     10
      Max Parallel Training Jobs:      10
    Strategy:                          Bayesian
    Training Job Early Stopping Type:  Off
  Hyper Parameter Tuning Job Name:     xgboostha92f5e3cf07b11e9bf6c06d6
  Region:                              us-east-2
  Training Job Definition:
    Algorithm Specification:
      Training Image:       12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
      Training Input Mode:  File
    Input Data Config:
      Channel Name:  train
      Content Type:  text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
      Channel Name:                validation
      Content Type:                text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
    Output Data Config:
      s3OutputPath:  https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost
    Resource Config:
      Instance Count:     1
      Instance Type:      ml.m4.xlarge
      Volume Size In GB:  5
    Role Arn:             arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Static Hyper Parameters:
      Name:   base_score
      Value:  0.5
      Name:   booster
      Value:  gbtree
      Name:   csv_weights
      Value:  0
      Name:   dsplit
      Value:  row
      Name:   grow_policy
      Value:  depthwise
      Name:   lambda_bias
      Value:  0.0
      Name:   max_bin
      Value:  256
      Name:   max_leaves
      Value:  0
      Name:   normalize_type
      Value:  tree
      Name:   objective
      Value:  reg:linear
      Name:   one_drop
      Value:  0
      Name:   prob_buffer_row
      Value:  1.0
      Name:   process_type
      Value:  default
      Name:   rate_drop
      Value:  0.0
      Name:   refresh_leaf
      Value:  1
      Name:   sample_type
      Value:  uniform
      Name:   scale_pos_weight
      Value:  1.0
      Name:   silent
      Value:  0
      Name:   sketch_eps
      Value:  0.03
      Name:   skip_drop
      Value:  0.0
      Name:   tree_method
      Value:  auto
      Name:   tweedie_variance_power
      Value:  1.5
    Stopping Condition:
      Max Runtime In Seconds:  86400
Status:
  Best Training Job:
    Creation Time:  2019-10-17T01:16:14Z
    Final Hyper Parameter Tuning Job Objective Metric:
      Metric Name:        validation:error
      Value:
    Objective Status:     Succeeded
    Training End Time:    2019-10-17T01:20:24Z
    Training Job Arn:     arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample
    Training Job Name:    xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059
    Training Job Status:  Completed
    Training Start Time:  2019-10-17T01:18:35Z
    Tuned Hyper Parameters:
      Name:                                    num_round
      Value:                                   18
  Hyper Parameter Tuning Job Status:           Completed
  Last Check Time:                             2019-10-17T01:21:01Z
  Sage Maker Hyper Parameter Tuning Job Name:  xgboostha92f5e3cf07b11e9bf6c06d6
  Training Job Status Counters:
    Completed:            10
    In Progress:          0
    Non Retryable Error:  0
    Retryable Error:      0
    Stopped:              0
    Total Error:          0
Events:                   <none>
```

### Afficher les journaux de HyperparameterTuningJobs
<a name="view-logs-from-hyperparametertuning-jobs"></a>

Les tâches de réglage d'hyperparamètre n'ont pas de journaux, mais toutes les tâches d'entraînement qu'ils démarrent ont des journaux. Ces journaux sont accessibles comme s’il s’agissait d’une tâche d’entraînement normale. Pour de plus amples informations, veuillez consulter [Afficher les journaux de TrainingJobs](#view-logs-from-training-jobs).

### Supprimer un HyperparameterTuningJob
<a name="delete-hyperparametertuning-jobs"></a>

Utilisez la commande suivante pour arrêter une tâche d'hyperparamètre dans SageMaker AI. 

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

Cette commande supprime la tâche de réglage des hyperparamètres et les tâches de formation associées de votre cluster Kubernetes et les arrête dans AI. SageMaker Les tâches interrompues ou terminées ne sont pas facturées pour les ressources d' SageMaker IA. SageMaker L'IA ne supprime pas les tâches de réglage des hyperparamètres. Les tâches interrompues continuent de s'afficher sur la console SageMaker AI. 

Le résultat doit être similaire à ce qui suit : 

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

**Remarque** : La commande de suppression prend environ 2 minutes pour nettoyer les ressources de l' SageMaker IA. 

## L' BatchTransformJob opérateur
<a name="batchtransformjobs-operator"></a>

Les opérateurs de tâches de transformation par lots concilient les spécifications de travail de transformation par lots que vous avez spécifiées avec l' SageMaker IA en les lançant dans SageMaker AI. Vous pouvez en savoir plus sur le travail de transformation par lots SageMaker AI dans la [documentation de CreateTransformJob l'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html) AI. 

**Topics**
+ [Créer un à BatchTransformJob l'aide d'un fichier YAML](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Créer un graphique BatchTransformJob à l'aide d'un Helm](#create-a-batchtransformjob-using-a-helm-chart)
+ [Liste BatchTransformJobs](#list-batch-transform-jobs)
+ [Décrivez un BatchTransformJob](#describe-a-batch-transform-job)
+ [Afficher les journaux de BatchTransformJobs](#view-logs-from-batch-transform-jobs)
+ [Supprimer un BatchTransformJob](#delete-a-batch-transform-job)

### Créer un à BatchTransformJob l'aide d'un fichier YAML
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

1. Téléchargez l’exemple de fichier YAML pour la tâche de transformation par lots à l’aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
   ```

1. Modifiez le fichier `xgboost-mnist-batchtransform.yaml` pour modifier les paramètres nécessaires afin de les `inputdataconfig` remplacer par vos données d'entrée et `s3OutputPath` par vos compartiments Amazon S3 auxquels le rôle d'exécution SageMaker AI a accès en écriture. 

1. Appliquez le fichier YAML à l’aide de la commande suivante : 

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Créer un graphique BatchTransformJob à l'aide d'un Helm
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

Vous pouvez utiliser les Charts de Helm pour exécuter des tâches de transformation par lots. 

#### Obtenir le répertoire du programme d'installation de Helm
<a name="get-the-helm-installer-directory"></a>

Clonez le GitHub dépôt pour obtenir le code source à l'aide de la commande suivante : 

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Configuration du Chart de Helm
<a name="configure-the-helm-chart"></a>

Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/`. 

Modifiez le `values.yaml` fichier pour le `inputdataconfig` remplacer par vos données d'entrée et OutputPath par vos compartiments S3 auxquels le rôle d'exécution SageMaker AI a accès en écriture. 

#### Créez un BatchTransformJob
<a name="create-a-batch-transform-job"></a>

1. Utilisez la commande suivante pour créer une tâche de transformation par lots : 

   ```
   helm install . --generate-name
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   NAME: chart-1574292948
   LAST DEPLOYED: Wed Nov 20 23:35:49 2019
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   NOTES:
   Thanks for installing the sagemaker-k8s-batch-transform-job.
   ```

1. Pour vérifier que le Chart de Helm a bien été créé, exécutez la commande suivante : 

   ```
   helm ls
   NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-batchtransformjob-0.1.0
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0
   chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
   rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

   Cette commande crée une ressource Kubernetes `BatchTransformJob`. L'opérateur lance la tâche de transformation proprement dite dans l' SageMaker IA et met à jour la ressource `BatchTransformJob` Kubernetes pour refléter le statut de la tâche dans l'IA. SageMaker Vous devez payer des frais pour les ressources d' SageMaker IA utilisées pendant la durée de votre travail. Vous ne payez pas de frais une fois votre tâche terminée ou arrêtée. 

**Remarque** : SageMaker L'IA ne vous permet pas de mettre à jour une tâche de transformation par lots en cours d'exécution. Vous ne pouvez pas modifier un paramètre et réappliquer le fichier de configuration. Vous devez modifier le nom des métadonnées ou supprimer la tâche existante et en créer une autre. À l’instar des opérateurs de tâche d’entraînement existants tels que `TFJob` dans Kubeflow, `update` n’est pas pris en charge. 

### Liste BatchTransformJobs
<a name="list-batch-transform-jobs"></a>

Utilisez la commande suivante pour répertorier toutes les tâches créées à l'aide de l'opérateur Kubernetes : 

```
kubectl get batchtransformjob
```

Le résultat doit être similaire à ce qui suit : 

```
NAME                                STATUS      CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-batch-transform       Completed   2019-11-18T03:44:00Z   xgboost-mnist-a88fb19809b511eaac440aa8axgboost
```

Une tâche de transformation par lots reste répertoriée après son achèvement ou son échec. Vous pouvez supprimer une tâche `hyperparametertuningjob` de la liste en suivant la procédure [Supprimer un BatchTransformJob](#delete-a-batch-transform-job). Les tâches terminées ou interrompues ne sont pas facturées pour les ressources de l' SageMaker IA. 

#### Valeurs de statut de transformation par lots
<a name="batch-transform-status-values"></a>

Le champ `STATUS` peut comporter l’une des valeurs suivantes : 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Ces statuts proviennent directement de la [documentation officielle de l'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) AI. 

En plus du statut officiel d' SageMaker IA, il est possible de `STATUS` l'être`SynchronizingK8sJobWithSageMaker`. Cela signifie que l’opérateur n’a pas encore traité la tâche.

### Décrivez un BatchTransformJob
<a name="describe-a-batch-transform-job"></a>

Vous pouvez obtenir des détails de débogage à l'aide de la commande `describe` `kubectl`.

```
kubectl describe batchtransformjob xgboost-mnist-batch-transform
```

Le résultat doit être similaire à ce qui suit : 

```
Name:         xgboost-mnist-batch-transform
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         BatchTransformJob
Metadata:
  Creation Timestamp:  2019-11-18T03:44:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21990924
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist
  UID:               a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM
Spec:
  Model Name:  TrainingJob-20190814SMJOb-IKEB
  Region:      us-east-1
  Transform Input:
    Content Type:  text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Type:  S3Prefix
        S 3 Uri:        s3://amzn-s3-demo-bucket/mnist_kmeans_example/input
  Transform Job Name:   xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB
  Transform Output:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/mnist_kmeans_example/output
  Transform Resources:
    Instance Count:  1
    Instance Type:   ml.m4.xlarge
Status:
  Last Check Time:                2019-11-19T22:50:40Z
  Sage Maker Transform Job Name:  xgboost-mnist-a88fb19809b511eaac440aaSMJOB
  Transform Job Status:           Completed
Events:                           <none>
```

### Afficher les journaux de BatchTransformJobs
<a name="view-logs-from-batch-transform-jobs"></a>

Utilisez la commande suivante pour consulter les journaux depuis la tâche de transformation par lots `xgboost-mnist` : 

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### Supprimer un BatchTransformJob
<a name="delete-a-batch-transform-job"></a>

Utilisez la commande suivante pour arrêter une tâche de transformation par lots dans SageMaker AI. 

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

Le résultat doit être similaire à ce qui suit : 

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

Cette commande supprime la tâche de transformation par lots de votre cluster Kubernetes et l'arrête dans AI. SageMaker Les tâches interrompues ou terminées ne sont pas facturées pour les ressources d' SageMaker IA. Delete prend environ 2 minutes pour nettoyer les ressources de l' SageMaker IA. 

**Remarque** : SageMaker AI ne supprime pas les tâches de transformation par lots. Les tâches interrompues continuent de s'afficher sur la console SageMaker AI. 

## L' HostingDeployment opérateur
<a name="hosting-deployment-operator"></a>

HostingDeployment les opérateurs prennent en charge la création et la suppression d'un point de terminaison, ainsi que la mise à jour d'un point de terminaison existant, pour une inférence en temps réel. L'opérateur de déploiement d'hébergement concilie les spécifications de travail de déploiement d'hébergement que vous avez spécifiées avec l' SageMaker IA en créant des modèles, des configurations de points de terminaison et des points de terminaison dans l'IA. SageMaker Pour en savoir plus sur l'inférence par SageMaker IA, consultez la [documentation de l'CreateEndpointAPI SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html) AI. 

**Topics**
+ [Configuration d'une HostingDeployment ressource](#configure-a-hostingdeployment-resource)
+ [Créez un HostingDeployment](#create-a-hostingdeployment)
+ [Liste HostingDeployments](#list-hostingdeployments)
+ [Décrivez un HostingDeployment](#describe-a-hostingdeployment)
+ [Invocation du point de terminaison](#invoking-the-endpoint)
+ [Mettre à jour HostingDeployment](#update-hostingdeployment)
+ [Supprimez le HostingDeployment](#delete-the-hostingdeployment)

### Configuration d'une HostingDeployment ressource
<a name="configure-a-hostingdeployment-resource"></a>

Téléchargez l'exemple de fichier YAML pour la tâche de déploiement d'hébergement à l'aide de la commande suivante : 

```
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
```

Le fichier `xgboost-mnist-hostingdeployment.yaml` contient les composants suivants qui peuvent être modifiés selon les besoins : 
+ *ProductionVariants*. Une variante de production est un ensemble d'instances servant un seul modèle. SageMaker L'IA équilibre la charge entre toutes les variantes de production en fonction des poids définis. 
+ *Modèles*. Un modèle est l'ARN des conteneurs et du rôle d'exécution nécessaire pour servir un modèle. Il nécessite au moins un seul conteneur. 
+ *Conteneurs*. Un conteneur spécifie le jeu de données et l’image de service. Si vous utilisez votre propre algorithme personnalisé au lieu d'un algorithme fourni par l' SageMaker IA, le code d'inférence doit répondre aux exigences de l' SageMaker IA. Pour plus d'informations, consultez la section [Utilisation de vos propres algorithmes avec SageMaker l'IA](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html). 

### Créez un HostingDeployment
<a name="create-a-hostingdeployment"></a>

Pour créer un HostingDeployment, appliquez le fichier `kubectl` à l'`hosting.yaml`aide de la commande suivante : 

```
kubectl apply -f hosting.yaml
```

SageMaker L'IA crée un point de terminaison avec la configuration spécifiée. Vous devez payer des frais pour les ressources d' SageMaker IA utilisées pendant la durée de vie de votre terminal. Vous ne payez pas de frais une fois votre point de terminaison supprimé. 

Le processus de création prend environ 10 minutes. 

### Liste HostingDeployments
<a name="list-hostingdeployments"></a>

Pour vérifier que le HostingDeployment a été créé, utilisez la commande suivante : 

```
kubectl get hostingdeployments
```

Le résultat doit être similaire à ce qui suit : 

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### HostingDeployment valeurs de statut
<a name="hostingdeployment-status-values"></a>

Le champ d'état peut avoir l'une des valeurs suivantes : 
+ `SynchronizingK8sJobWithSageMaker` : l'opérateur se prépare à créer le point de terminaison. 
+ `ReconcilingEndpoint` : l'opérateur crée, met à jour ou supprime des ressources de point de terminaison. S'il HostingDeployment reste dans cet état, utilisez-le `kubectl describe` pour en voir la raison dans le `Additional` champ. 
+ `OutOfService` : le point de terminaison n'est pas disponible pour recevoir les demandes entrantes. 
+ `Creating`: [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)est en cours d'exécution. 
+ `Updating`: [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)ou [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)est en cours d'exécution. 
+ `SystemUpdating` : le point de terminaison fait l'objet d'une maintenance et ne peut pas être mis à jour, supprimé ou remis à l'échelle tant qu'il n'est pas terminé. Cette opération de maintenance ne modifie aucune valeur spécifiée par le client, telle que la configuration du VPC, le AWS KMS chiffrement, le modèle, le type d'instance ou le nombre d'instances. 
+ `RollingBack` : le point de terminaison ne parvient pas à effectuer une augmentation ou une réduction d'échelle, ni à modifier son poids de variante et il est en cours de restauration vers sa configuration précédente. Une fois la restauration terminée, le point de terminaison revient à un statut `InService`. Ce statut de transition s'applique uniquement à un point de terminaison sur lequel le dimensionnement automatique est activé et qui subit des modifications de pondération ou de capacité dans le cadre d'un [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)appel ou lorsque l'[UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)opération est appelée explicitement. 
+ `InService` : le point de terminaison est disponible pour traiter les demandes entrantes. 
+ `Deleting`: [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)est en cours d'exécution. 
+ `Failed` : le point de terminaison n'a pas pu être créé, mis à jour ou remis à l'échelle. Utilisation [DescribeEndpoint: FailureReason](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason) pour obtenir des informations sur l'échec. [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)est la seule opération qui peut être effectuée sur un terminal défaillant. 

### Décrivez un HostingDeployment
<a name="describe-a-hostingdeployment"></a>

Vous pouvez obtenir des détails de débogage à l'aide de la commande `describe` `kubectl`.

```
kubectl describe hostingdeployment
```

Le résultat doit être similaire à ce qui suit : 

```
Name:         host-xgboost
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..."
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HostingDeployment
Metadata:
  Creation Timestamp:  2019-11-22T19:40:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        1
  Resource Version:  4258134
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost
  UID:               def0e83e-0d5f-11ea-aa45-0a3507uiduid
Spec:
  Containers:
    Container Hostname:  xgboost
    Image:               123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
    Model Data URL:      s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
  Models:
    Containers:
      xgboost
    Execution Role Arn:  arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Name:                xgboost-model
    Primary Container:   xgboost
  Production Variants:
    Initial Instance Count:  1
    Instance Type:           ml.c5.large
    Model Name:              xgboost-model
    Variant Name:            all-traffic
  Region:                    us-east-2
Status:
  Creation Time:         2019-11-22T19:40:04Z
  Endpoint Arn:          arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample
  Endpoint Config Name:  host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample
  Endpoint Name:         host-xgboost-def0e83e0d5f11eaaa450a350733ba06
  Endpoint Status:       Creating
  Endpoint URL:          https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations
  Last Check Time:       2019-11-22T19:43:57Z
  Last Modified Time:    2019-11-22T19:40:04Z
  Model Names:
    Name:   xgboost-model
    Value:  xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample
Events:     <none>
```

Le champ de statut fournit plus d'informations à l'aide des champs suivants : 
+ `Additional` : informations supplémentaires sur l'état du déploiement d'hébergement. Ce champ est facultatif et n’est renseigné qu’en cas d’erreur. 
+ `Creation Time`: Lorsque le point de terminaison a été créé dans SageMaker l'IA. 
+ `Endpoint ARN`: L'ARN du point de terminaison de l' SageMaker IA. 
+ `Endpoint Config Name`: nom SageMaker AI de la configuration du point de terminaison. 
+ `Endpoint Name`: nom SageMaker AI du point de terminaison. 
+ `Endpoint Status` : état du point de terminaison. 
+ `Endpoint URL` : URL HTTPS qui peut être utilisée pour accéder au point de terminaison. Pour plus d'informations, voir [Déployer un modèle sur les services d'hébergement SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html). 
+ `FailureReason` : si une commande de création, de mise à jour ou de suppression échoue, la cause est indiquée ici. 
+ `Last Check Time` : dernière fois que l'opérateur a vérifié l'état du point de terminaison. 
+ `Last Modified Time` : date et heure de la dernière modification du point de terminaison. 
+ `Model Names`: une paire clé-valeur entre les noms de HostingDeployment modèles et les noms de modèles d' SageMaker IA. 

### Invocation du point de terminaison
<a name="invoking-the-endpoint"></a>

Une fois que l'état du point de terminaison est atteint`InService`, vous pouvez appeler le point de terminaison de deux manières : en utilisant la AWS CLI, qui effectue l'authentification et la signature des demandes d'URL, ou en utilisant un client HTTP tel que cURL. Si vous utilisez votre propre client, vous devez effectuer vous-même la signature et l'authentification de l'URL AWS v4. 

Pour appeler le point de terminaison à l'aide de la AWS CLI, exécutez la commande suivante. Assurez-vous de remplacer la région et le nom du point de terminaison par le nom de la région et du point de terminaison SageMaker AI de votre point de terminaison. Ces informations peuvent être obtenues à partir du résultat de `kubectl describe`. 

```
# Invoke the endpoint with mock input data.
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name <endpoint name> \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
```

Par exemple, si votre région est `us-east-2` et votre nom de configuration de point de terminaison est `host-xgboost-f56b6b280d7511ea824b129926example`, la commande suivante invoquerait le point de terminaison : 

```
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
4.95847082138
```

Ici, `4.95847082138` est la prédiction du modèle pour les données simulées. 

### Mettre à jour HostingDeployment
<a name="update-hostingdeployment"></a>

1. Une fois qu'un HostingDeployment a un statut de`InService`, il peut être mis à jour. La mise en service peut prendre environ 10 minutes. HostingDeployment Utilisez la commande suivante pour vérifier que l'état est `InService` : 

   ```
   kubectl get hostingdeployments
   ```

1. Ils HostingDeployment peuvent être mis à jour avant que le statut ne le soit`InService`. L'opérateur attend que le point de terminaison SageMaker AI soit activé `InService` avant d'appliquer la mise à jour. 

   Pour appliquer une mise à jour, modifiez le fichier `hosting.yaml`. Par exemple, remplacez le champ `initialInstanceCount` de 1 à 2 comme suit : 

   ```
   apiVersion: sagemaker.aws.amazon.com/v1
   kind: HostingDeployment
   metadata:
     name: host-xgboost
   spec:
       region: us-east-2
       productionVariants:
           - variantName: all-traffic
             modelName: xgboost-model
             initialInstanceCount: 2
             instanceType: ml.c5.large
       models:
           - name: xgboost-model
             executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
             primaryContainer: xgboost
             containers:
               - xgboost
       containers:
           - containerHostname: xgboost
             modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. Enregistrez le fichier, puis utilisez `kubectl` pour appliquer votre mise à jour comme suit. Vous devez voir l’état passer de `InService` à `ReconcilingEndpoint`, puis à `Updating`. 

   ```
   $ kubectl apply -f hosting.yaml
   hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured
   
   $ kubectl get hostingdeployments
   NAME           STATUS                SAGEMAKER-ENDPOINT-NAME
   host-xgboost   ReconcilingEndpoint   host-xgboost-def0e83e0d5f11eaaa450a350abcdef
   
   $ kubectl get hostingdeployments
   NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
   host-xgboost   Updating   host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
   ```

SageMaker L'IA déploie un nouvel ensemble d'instances avec vos modèles, fait basculer le trafic pour utiliser les nouvelles instances et vide les anciennes instances. Dès que ce processus commence, l’état devient `Updating`. Une fois la mise à jour terminée, votre point de terminaison devient `InService`. Ce processus prend environ 10 minutes. 

### Supprimez le HostingDeployment
<a name="delete-the-hostingdeployment"></a>

1. `kubectl`À utiliser pour supprimer un à l' HostingDeployment aide de la commande suivante : 

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. Pour vérifier que le déploiement d’hébergement a été supprimé, utilisez la commande suivante : 

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

Les points de terminaison qui ont été supprimés ne sont pas facturés pour les ressources d' SageMaker IA. 

## L' ProcessingJob opérateur
<a name="kubernetes-processing-job-operator"></a>

ProcessingJob les opérateurs sont utilisés pour lancer les tâches SageMaker de traitement Amazon. Pour plus d'informations sur le SageMaker traitement des tâches, consultez [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html). 

**Topics**
+ [Créez un à ProcessingJob l'aide d'un fichier YAML](#kubernetes-processing-job-yaml)
+ [Liste ProcessingJobs](#kubernetes-processing-job-list)
+ [Décrivez un ProcessingJob](#kubernetes-processing-job-description)
+ [Supprimer un ProcessingJob](#kubernetes-processing-job-delete)

### Créez un à ProcessingJob l'aide d'un fichier YAML
<a name="kubernetes-processing-job-yaml"></a>

Pour créer une tâche de SageMaker traitement Amazon à l'aide d'un fichier YAML, procédez comme suit :

1. Téléchargez le script de pré-traitement `kmeans_preprocessing.py`.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. Dans l'un de vos compartiments Amazon Simple Storage Service (Amazon S3), créez un dossier `mnist_kmeans_example/processing_code` et téléchargez-y le script.

1. Téléchargez le fichier `kmeans-mnist-processingjob.yaml`.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. Modifiez le fichier YAML pour spécifier votre `sagemaker-execution-role` et remplacez toutes les instances de `amzn-s3-demo-bucket` par votre compartiment S3.

   ```
   ...
   metadata:
     name: kmeans-mnist-processing
   ...
     roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role>
     ...
     processingOutputConfig:
       outputs:
         ...
             s3Output:
               s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/
     ...
     processingInputs:
       ...
           s3Input:
             s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
   ```

   Ils `sagemaker-execution-role` doivent disposer d'autorisations pour que l' SageMaker IA puisse accéder à votre compartiment S3, à Amazon CloudWatch et à d'autres services en votre nom. Pour plus d'informations sur la création d'un rôle d'exécution, consultez la section [Rôles SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms).

1. Appliquez le fichier YAML à l’aide de l’une des commandes suivantes.

   Pour l'installation à portée de cluster :

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

   Pour l'installation à portée de l'espace de noms :

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>
   ```

### Liste ProcessingJobs
<a name="kubernetes-processing-job-list"></a>

Utilisez l'une des commandes suivantes pour répertorier toutes les tâches créées à l'aide de l' ProcessingJob opérateur. `SAGEMAKER-JOB-NAME `provient de la `metadata` section du fichier YAML.

Pour l’installation à portée de cluster :

```
kubectl get ProcessingJob kmeans-mnist-processing
```

Pour l'installation à portée de l'espace de noms :

```
kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing
```

Votre sortie doit ressembler à ce qui suit :

```
NAME                    STATUS     CREATION-TIME        SAGEMAKER-JOB-NAME
kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
```

Le résultat répertorie toutes les tâches, quel que soit leur statut. Pour supprimer une tâche de la liste, consultez [Suppression d’une tâche de traitement](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete).

**ProcessingJob État**
+ `SynchronizingK8sJobWithSageMaker` – La tâche est d'abord envoyée au cluster. L'opérateur a reçu la demande et se prépare à créer la tâche de traitement.
+ `Reconciling` – L'opérateur est en train d'initialiser ou de récupérer des erreurs transitoires, avec d'autres. Si la tâche de traitement reste dans cet état, utilisez la commande `kubectl` `describe` pour connaître la raison dans le champ `Additional`.
+ `InProgress | Completed | Failed | Stopping | Stopped`— État de la tâche SageMaker de traitement. Pour de plus amples informations, veuillez consulter [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus).
+ `Error` : l’opérateur ne peut pas récupérer via un rapprochement.

Les tâches terminées, interrompues ou échouées n'entraînent pas de frais supplémentaires pour les ressources d' SageMaker IA.

### Décrivez un ProcessingJob
<a name="kubernetes-processing-job-description"></a>

Utilisez l'une des commandes suivantes pour obtenir plus de détails sur une tâche de traitement. Ces commandes sont généralement utilisées pour déboguer un problème ou vérifier les paramètres d'une tâche de traitement.

Pour l'installation à portée de cluster :

```
kubectl describe processingjob kmeans-mnist-processing
```

Pour l'installation à portée de l'espace de noms :

```
kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>
```

Le résultat de votre tâche de traitement doit ressembler à ce qui suit :

```
$ kubectl describe ProcessingJob kmeans-mnist-processing
Name:         kmeans-mnist-processing
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         ProcessingJob
Metadata:
  Creation Timestamp:  2020-09-22T21:13:25Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21746658
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing
  UID:               7410ed52-fd18-11ea-b19a-165ae9f9e385
Spec:
  App Specification:
    Container Entrypoint:
      python
      /opt/ml/processing/code/kmeans_preprocessing.py
    Image Uri:  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04
  Environment:
    Name:   MYVAR
    Value:  my_value
    Name:   MYVAR2
    Value:  my_value2
  Network Config:
  Processing Inputs:
    Input Name:  mnist_tar
    s3Input:
      Local Path:   /opt/ml/processing/input
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz
    Input Name:     source_code
    s3Input:
      Local Path:   /opt/ml/processing/code
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
  Processing Output Config:
    Outputs:
      Output Name:  train_data
      s3Output:
        Local Path:    /opt/ml/processing/output_train/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     test_data
      s3Output:
        Local Path:    /opt/ml/processing/output_test/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     valid_data
      s3Output:
        Local Path:    /opt/ml/processing/output_valid/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
  Processing Resources:
    Cluster Config:
      Instance Count:     1
      Instance Type:      ml.m5.xlarge
      Volume Size In GB:  20
  Region:                 us-west-2
  Role Arn:               arn:aws:iam::<acct-id>:role/m-sagemaker-role
  Stopping Condition:
    Max Runtime In Seconds:  1800
  Tags:
    Key:    tagKey
    Value:  tagValue
Status:
  Cloud Watch Log URL:             https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix
  Last Check Time:                 2020-09-22T21:14:29Z
  Processing Job Status:           InProgress
  Sage Maker Processing Job Name:  kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
Events:                            <none>
```

### Supprimer un ProcessingJob
<a name="kubernetes-processing-job-delete"></a>

Lorsque vous supprimez une tâche de traitement, la tâche de SageMaker traitement est supprimée de Kubernetes mais elle n'est pas supprimée de AI. SageMaker Si le statut de la tâche dans SageMaker AI est `InProgress` le suivant, la tâche est arrêtée. Les tâches de traitement qui sont arrêtées n'entraînent aucun frais pour les ressources de l' SageMaker IA. Utilisez l’une des commandes suivantes pour supprimer une tâche de traitement. 

Pour l'installation à portée de cluster :

```
kubectl delete processingjob kmeans-mnist-processing
```

Pour l'installation à portée de l'espace de noms :

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

Le résultat de votre tâche de traitement doit ressembler à ce qui suit :

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**Note**  
SageMaker L'IA ne supprime pas la tâche de traitement. Les tâches interrompues continuent de s'afficher dans la console SageMaker AI. La `delete` commande prend quelques minutes pour nettoyer les ressources de l' SageMaker IA.

## HostingAutoscalingPolicy (HAP) Opérateur
<a name="kubernetes-hap-operator"></a>

L'opérateur HostingAutoscalingPolicy (HAP) prend une liste de ressources IDs en entrée et applique la même politique à chacune d'elles. Chaque ID de ressource est une combinaison d'un nom de point de terminaison et d'un nom de variante. L'opérateur HAP effectue deux étapes : il enregistre la ressource, IDs puis applique la politique de dimensionnement à chaque ID de ressource. `Delete`annule les deux actions. Vous pouvez appliquer le HAP à un point de terminaison d' SageMaker IA existant ou vous pouvez créer un nouveau point de terminaison d' SageMaker IA à l'aide de l'[HostingDeployment opérateur](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment). Pour en savoir plus sur la mise à l'échelle automatique de l' SageMaker IA, consultez la documentation relative à la [politique de mise à l'échelle automatique des applications](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html).

**Note**  
Dans vos commandes `kubectl`, vous pouvez utiliser le format court, `hap`, à la place de `hostingautoscalingpolicy`.

**Topics**
+ [Créez un à HostingAutoscalingPolicy l'aide d'un fichier YAML](#kubernetes-hap-job-yaml)
+ [Liste HostingAutoscalingPolicies](#kubernetes-hap-list)
+ [Décrivez un HostingAutoscalingPolicy](#kubernetes-hap-describe)
+ [Mettre à jour un HostingAutoscalingPolicy](#kubernetes-hap-update)
+ [Supprimer un HostingAutoscalingPolicy](#kubernetes-hap-delete)
+ [Mettre à jour ou supprimer un point de terminaison doté d'un HostingAutoscalingPolicy](#kubernetes-hap-update-delete-endpoint)

### Créez un à HostingAutoscalingPolicy l'aide d'un fichier YAML
<a name="kubernetes-hap-job-yaml"></a>

Utilisez un fichier YAML pour créer un HostingAutoscalingPolicy (HAP) qui applique une métrique prédéfinie ou personnalisée à un ou plusieurs points de terminaison SageMaker AI.

Amazon SageMaker AI a besoin de valeurs spécifiques pour appliquer l'autoscaling à votre variante. Si ces valeurs ne sont pas spécifiées dans la spécification YAML, l’opérateur HAP applique les valeurs par défaut suivantes.

```
# Do not change
Namespace                    = "sagemaker"
# Do not change
ScalableDimension            = "sagemaker:variant:DesiredInstanceCount"
# Only one supported
PolicyType                   = "TargetTrackingScaling"
# This is the default policy name but can be changed to apply a custom policy
DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
```

Utilisez les exemples suivants pour créer une HAP qui applique une métrique prédéfinie ou personnalisée à un ou plusieurs points de terminaison.

#### Exemple 1 : Application d'une métrique prédéfinie à une variante de point de terminaison unique
<a name="kubernetes-hap-predefined-metric"></a>

1. Téléchargez l'exemple de fichier YAML pour une métrique prédéfinie à l'aide de la commande suivante :

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Modifiez le fichier YAML pour spécifier votre `endpointName`, votre `variantName` et votre `Region`.

1. Utilisez l'une des commandes suivantes pour appliquer une métrique prédéfinie à un seul ID de ressource (combinaison de nom de point de terminaison et de nom de variante).

   Pour l'installation à portée de cluster :

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Pour l'installation à portée de l'espace de noms :

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Exemple 2 : Application d'une métrique personnalisée à une variante de point de terminaison unique
<a name="kubernetes-hap-custom-metric"></a>

1. Téléchargez l'exemple de fichier YAML pour une métrique personnalisée à l'aide de la commande suivante :

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. Modifiez le fichier YAML pour spécifier votre `endpointName`, votre `variantName` et votre `Region`.

1. Utilisez l’une des commandes suivantes pour appliquer une métrique personnalisée à un seul ID de ressource (combinaison de nom de point de terminaison et de nom de variante) à la place de la `SageMakerVariantInvocationsPerInstance` recommandée.
**Note**  
Amazon SageMaker AI ne vérifie pas la validité de vos spécifications YAML.

   Pour l’installation à portée de cluster :

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

   Pour l'installation à portée de l'espace de noms :

   ```
   kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>
   ```

#### Exemple 3 : Application d'une politique de mise à l'échelle à plusieurs points de terminaison et variantes
<a name="kubernetes-hap-scaling-policy"></a>

Vous pouvez utiliser l'opérateur HAP pour appliquer la même politique de dimensionnement à plusieurs ressources IDs. Une demande `scaling_policy` distincte est créée pour chaque ID de ressource (combinaison de nom de point de terminaison et de nom de variante).

1. Téléchargez l'exemple de fichier YAML pour une métrique prédéfinie à l'aide de la commande suivante :

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Modifiez le fichier YAML pour spécifier votre `Region` et plusieurs valeurs `endpointName` et `variantName`.

1. Utilisez l'une des commandes suivantes pour appliquer une métrique prédéfinie à plusieurs ressources IDs (combinaisons de nom de point de terminaison et de nom de variante).

   Pour l’installation à portée de cluster :

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Pour l'installation à portée de l'espace de noms :

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Considérations HostingAutoscalingPolicies relatives à plusieurs terminaux et variantes
<a name="kubernetes-hap-scaling-considerations"></a>

Les considérations suivantes s'appliquent lorsque vous utilisez plusieurs ressources IDs :
+ Si vous appliquez une seule politique à plusieurs ressources IDs, un PolicYarn est créé par ID de ressource. Cinq points de terminaison ont cinq politiquesARNs. Lorsque vous exécutez la commande `describe` sur la politique, les réponses apparaissent comme une tâche et incluent un statut de tâche unique.
+ Si vous appliquez une métrique personnalisée à plusieurs ressources IDs, la même dimension ou valeur est utilisée pour toutes les valeurs d'ID de ressource (variante). Par exemple, si vous appliquez une métrique client pour les instances 1 à 5 et que la dimension de variante de point de terminaison est mappée à la variante 1, lorsque la variante 1 dépasse les métriques, tous les points de terminaison sont augmentés ou réduits.
+ L'opérateur HAP prend en charge la mise à jour de la liste des ressources IDs. Si vous modifiez, ajoutez ou supprimez une ressource dans la spécification, la politique de mise IDs à l'échelle automatique est supprimée de la liste de variantes précédente et appliquée aux nouvelles combinaisons d'identifiants de ressources spécifiées. Utilisez la [https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe)commande pour répertorier la ressource IDs à laquelle la politique est actuellement appliquée.

### Liste HostingAutoscalingPolicies
<a name="kubernetes-hap-list"></a>

Utilisez l'une des commandes suivantes pour répertorier toutes les HostingAutoscalingPolicies (HAPs) créées à l'aide de l'opérateur HAP.

Pour l’installation à portée de cluster :

```
kubectl get hap
```

Pour l'installation à portée de l'espace de noms :

```
kubectl get hap -n <NAMESPACE>
```

Votre sortie doit ressembler à ce qui suit :

```
NAME             STATUS   CREATION-TIME
hap-predefined   Created  2021-07-13T21:32:21Z
```

Utilisez la commande suivante pour vérifier l'état de votre HostingAutoscalingPolicy (HAP).

```
kubectl get hap <job-name>
```

L'une des valeurs suivantes est renvoyée :
+ `Reconciling` – Certains types d'erreurs affichent l'état `Reconciling` au lieu de `Error`. Certains exemples sont des erreurs côté serveur et des points de terminaison à l'état `Creating` ou `Updating`. Vérifiez le champ `Additional` dans les journaux d'état ou d'opérateur pour plus d'informations.
+ `Created`
+ `Error`

**Pour afficher le point de terminaison de scalabilité automatique auquel vous avez appliqué la politique**

1. Ouvrez la console Amazon SageMaker AI à l'adresse [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Dans le panneau latéral gauche, développez **Inférence (Inférence)**.

1. Choisissez **Endpoints (Points de terminaison)**.

1. Sélectionnez le nom du point de terminaison qui vous intéresse.

1. Faites défiler jusqu'à la section **Endpoint runtime settings (Paramètres d'exécution du point de terminaison)**.

### Décrivez un HostingAutoscalingPolicy
<a name="kubernetes-hap-describe"></a>

Utilisez la commande suivante pour obtenir plus de détails sur a HostingAutoscalingPolicy (HAP). Ces commandes sont généralement utilisées pour résoudre un problème ou vérifier la ressource IDs (combinaisons de nom de point de terminaison et de nom de variante) d'un HAP.

```
kubectl describe hap <job-name>
```

### Mettre à jour un HostingAutoscalingPolicy
<a name="kubernetes-hap-update"></a>

L'opérateur HostingAutoscalingPolicy (HAP) prend en charge les mises à jour. Vous pouvez modifier votre spécification YAML afin de modifier les valeurs, puis appliquer à nouveau la politique. L'opérateur HAP supprime la politique existante et applique la nouvelle.

### Supprimer un HostingAutoscalingPolicy
<a name="kubernetes-hap-delete"></a>

Utilisez l'une des commandes suivantes pour supprimer une politique HostingAutoscalingPolicy (HAP).

Pour l’installation à portée de cluster :

```
kubectl delete hap hap-predefined
```

Pour l'installation à portée de l'espace de noms :

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

Cette commande supprime la politique de mise à l'échelle et annule l'enregistrement de la cible de mise à l'échelle de Kubernetes. Cette commande renvoie le résultat suivant : 

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### Mettre à jour ou supprimer un point de terminaison doté d'un HostingAutoscalingPolicy
<a name="kubernetes-hap-update-delete-endpoint"></a>

Pour mettre à jour un terminal doté d'un HostingAutoscalingPolicy (HAP), utilisez la `kubectl` `delete` commande pour supprimer le HAP, mettre à jour le point de terminaison, puis réappliquer le HAP.

Pour supprimer un point de terminaison qui possède une HAP, utilisez la commande `kubectl` `delete` pour supprimer l’HAP avant de supprimer le point de terminaison.

# Migrer les ressources vers la dernière version d'Operators
<a name="kubernetes-sagemaker-operators-migrate"></a>

Nous arrêtons le développement et le support technique de la version originale d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).

Si vous utilisez actuellement la version `v1.2.2` ou une version inférieure d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), nous vous recommandons de migrer vos ressources vers le [contrôleur de service ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) pour Amazon. SageMaker Le contrôleur de service ACK est une nouvelle génération d' SageMaker opérateurs pour Kubernetes basés sur les [AWS contrôleurs pour Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).

Pour obtenir les réponses aux questions fréquemment posées concernant la fin du support de la version originale d' SageMaker Operators for Kubernetes, voir [Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Suivez les étapes suivantes pour migrer vos ressources et utiliser ACK pour former, régler et déployer des modèles d'apprentissage automatique avec Amazon SageMaker AI.

**Note**  
Les derniers opérateurs d' SageMaker IA pour Kubernetes ne sont pas rétrocompatibles.

**Topics**
+ [Conditions préalables](#migrate-resources-to-new-operators-prerequisites)
+ [Adoption des ressources](#migrate-resources-to-new-operators-steps)
+ [Nettoyage des anciennes ressources](#migrate-resources-to-new-operators-cleanup)
+ [Utilisez les nouveaux opérateurs d' SageMaker IA pour Kubernetes](#migrate-resources-to-new-operators-tutorials)

## Conditions préalables
<a name="migrate-resources-to-new-operators-prerequisites"></a>

Pour réussir la migration des ressources vers les derniers opérateurs SageMaker AI pour Kubernetes, vous devez effectuer les opérations suivantes :

1. Installez les derniers opérateurs d' SageMaker IA pour Kubernetes. Voir [Configuration](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) dans *Machine Learning avec le contrôleur ACK SageMaker AI* pour step-by-step obtenir des instructions.

1. Si vous utilisez [HostingAutoscalingPolicy ressources](#migrate-resources-to-new-operators-hap), installez les nouveaux opérateurs d’autoscaling d’application. Voir [Configuration](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/#setup) dans *Scale SageMaker AI Workloads with Application Auto Scaling* pour step-by-step obtenir des instructions. Cette étape est facultative si vous n'utilisez pas de HostingAutoScalingPolicy ressources.

Si les autorisations sont correctement configurées, le contrôleur de service ACK SageMaker AI peut déterminer les spécifications et l'état de la AWS ressource et réconcilier la ressource comme si le contrôleur ACK l'avait créée à l'origine.

## Adoption des ressources
<a name="migrate-resources-to-new-operators-steps"></a>

Les nouveaux opérateurs d' SageMaker IA pour Kubernetes permettent d'adopter des ressources qui n'ont pas été créées à l'origine par le contrôleur de service ACK. Pour plus d'informations, consultez [Adopter les AWS ressources existantes](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/) dans la documentation ACK.

Les étapes suivantes montrent comment les nouveaux opérateurs d' SageMaker IA pour Kubernetes peuvent adopter un point de terminaison d'IA existant SageMaker . Enregistrez l’exemple suivant dans un fichier nommé `adopt-endpoint-sample.yaml`. 

```
apiVersion: services.k8s.aws/v1alpha1
kind: AdoptedResource
metadata:
  name: adopt-endpoint-sample
spec:  
  aws:
    # resource to adopt, not created by ACK
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      # target K8s CR name
      name: xgboost-endpoint
```

Soumettez la ressource personnalisée (CR) en utilisant `kubectl apply` :

```
kubectl apply -f adopt-endpoint-sample.yaml
```

Utilisez `kubectl describe` pour vérifier les conditions de statut de la ressource que vous avez adoptée.

```
kubectl describe adoptedresource adopt-endpoint-sample
```

Vérifiez que la condition `ACK.Adopted` est `True`. La sortie doit ressembler à cet exemple :

```
---
kind: AdoptedResource
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}'
  creationTimestamp: '2021-04-27T02:49:14Z'
  finalizers:
  - finalizers.services.k8s.aws/AdoptedResource
  generation: 1
  name: adopt-endpoint-sample
  namespace: default
  resourceVersion: '12669876'
  selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample"
  uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b
spec:
  aws:
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      name: xgboost-endpoint
status:
  conditions:
  - status: 'True'
    type: ACK.Adopted
```

Vérifiez que votre ressource existe dans votre cluster :

```
kubectl describe endpoints.sagemaker xgboost-endpoint
```

### HostingAutoscalingPolicy ressources
<a name="migrate-resources-to-new-operators-hap"></a>

La ressource `HostingAutoscalingPolicy` (HAP) comprend plusieurs ressources de mise à l'échelle automatique d'application : `ScalableTarget` et `ScalingPolicy`. Lorsque vous adoptez une ressource HAP avec ACK, commencez par installer le [contrôleur de mise à l'échelle automatique d'application](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). Pour adopter les ressources HAP, vous devez adopter les ressources `ScalableTarget` et `ScalingPolicy`. Vous trouverez l'identificateur de ces ressources dans le statut de la ressource `HostingAutoscalingPolicy` (`status.ResourceIDList`).

### HostingDeployment ressources
<a name="migrate-resources-to-new-operators-hosting-deployment"></a>

La `HostingDeployment` ressource se compose de plusieurs ressources d' SageMaker IA :`Endpoint`,`EndpointConfig`, et chacune d'elles`Model`. Si vous adoptez un point de terminaison SageMaker AI dans ACK, vous devez adopter le `Endpoint``EndpointConfig`, et chacun `Model` séparément. Les noms `Endpoint`, `EndpointConfig` et `Model` peuvent être trouvés dans le statut de la ressource `HostingDeployment` (`status.endpointName`, `status.endpointConfigName` et `status.modelNames`).

Pour obtenir la liste de toutes les ressources d' SageMaker IA prises en charge, reportez-vous à la [référence d'API ACK](https://aws-controllers-k8s.github.io/community/reference/).

## Nettoyage des anciennes ressources
<a name="migrate-resources-to-new-operators-cleanup"></a>

Une fois que les nouveaux opérateurs SageMaker AI pour Kubernetes auront adopté vos ressources, vous pourrez désinstaller les anciens opérateurs et nettoyer les anciennes ressources.

### Étape 1 : désinstaller l’ancien opérateur
<a name="migrate-resources-to-new-operators-uninstall"></a>

Pour désinstaller l'ancien opérateur, consultez [Supprimer les opérateurs](kubernetes-sagemaker-operators-end-of-support.md#delete-operators).

**Avertissement**  
Désinstallez l'ancien opérateur avant de supprimer d'anciennes ressources.

### Étape 2 : supprimer les finaliseurs et supprimer les anciennes ressources
<a name="migrate-resources-to-new-operators-delete-resources"></a>

**Avertissement**  
Avant de supprimer les anciennes ressources, assurez-vous que l'ancien opérateur a été désinstallé.

Après avoir désinstallé l’ancien opérateur, vous devez supprimer explicitement les finaliseurs pour supprimer les anciennes ressources de l’opérateur. L'exemple de script ci-dessous montre comment supprimer toutes les tâches d'entraînement gérées par l'ancien opérateur dans un espace de noms donné. Vous pouvez utiliser un modèle similaire pour supprimer des ressources supplémentaires une fois qu’elles ont été adoptées par le nouvel opérateur.

**Note**  
Vous devez utiliser les noms complets des ressources pour obtenir des ressources. Par exemple, utilisez `kubectl get trainingjobs.sagemaker.aws.amazon.com` plutôt que `kubectl get trainingjob`.

```
namespace=sagemaker_namespace
training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name')
 
for job in $training_jobs
do
    echo "Deleting $job resource in $namespace namespace"
    kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge
    kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace
done
```

## Utilisez les nouveaux opérateurs d' SageMaker IA pour Kubernetes
<a name="migrate-resources-to-new-operators-tutorials"></a>

Pour des guides détaillés sur l'utilisation des nouveaux opérateurs d' SageMaker intelligence artificielle pour Kubernetes, voir [Utiliser des opérateurs d' SageMaker IA pour Kubernetes](kubernetes-sagemaker-operators-ack.md#kubernetes-sagemaker-operators-ack-use)

# Annonce de la fin du support de la version originale des opérateurs SageMaker AI pour Kubernetes
<a name="kubernetes-sagemaker-operators-eos-announcement"></a>

Cette page annonce la fin du support de la version originale d'[SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s) et fournit des réponses aux questions fréquemment posées ainsi que des informations de migration concernant le contrôleur de [service ACK pour Amazon SageMaker AI, une nouvelle génération d'opérateurs SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) entièrement pris en charge pour Kubernetes. Pour des informations générales sur les nouveaux opérateurs d' SageMaker IA pour Kubernetes, consultez. [Les derniers opérateurs d' SageMaker IA pour Kubernetes](kubernetes-sagemaker-operators-ack.md) 

## Questions fréquentes sur la fin du support
<a name="kubernetes-sagemaker-operators-eos-faq"></a>

**Topics**
+ [Pourquoi mettons-nous fin au support de la version originale d' SageMaker AI Operators for Kubernetes ?](#kubernetes-sagemaker-operators-eos-faq-why)
+ [Où puis-je trouver plus d'informations sur les nouveaux opérateurs d' SageMaker IA pour Kubernetes et ACK ?](#kubernetes-sagemaker-operators-eos-faq-more)
+ [Que signifie la fin de la prise en charge (EOS) ?](#kubernetes-sagemaker-operators-eos-faq-definition)
+ [Comment puis-je migrer ma charge de travail vers les nouveaux opérateurs SageMaker AI pour Kubernetes à des fins de formation et d'inférence ?](#kubernetes-sagemaker-operators-eos-faq-how)
+ [Vers quelle version d’ACK dois-je migrer ?](#kubernetes-sagemaker-operators-eos-faq-version)
+ [Les opérateurs d' SageMaker IA initiaux pour Kubernetes et les nouveaux opérateurs (contrôleur de service ACK pour Amazon SageMaker AI) sont-ils fonctionnellement équivalents ?](#kubernetes-sagemaker-operators-eos-faq-parity)

### Pourquoi mettons-nous fin au support de la version originale d' SageMaker AI Operators for Kubernetes ?
<a name="kubernetes-sagemaker-operators-eos-faq-why"></a>

Les utilisateurs peuvent désormais tirer parti du [contrôleur de service ACK pour Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller). Le contrôleur de service ACK est une nouvelle génération d'opérateurs d' SageMaker IA pour Kubernetes basés sur [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK), un projet communautaire optimisé pour la production, normalisant la manière d'exposer les services via un opérateur Kubernetes. AWS Nous annonçons donc la fin du support (EOS) de la version originale (non basée sur ACK) d'[ SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s). La prise en charge prend fin le **15 février 2023** en même temps qu’[Amazon Elastic Kubernetes Service Kubernetes 1.21](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar). 

Pour plus d’informations sur ACK, consultez [Historique et principes d’ACK](https://aws-controllers-k8s.github.io/community/docs/community/background/).

### Où puis-je trouver plus d'informations sur les nouveaux opérateurs d' SageMaker IA pour Kubernetes et ACK ?
<a name="kubernetes-sagemaker-operators-eos-faq-more"></a>
+ Pour plus d'informations sur les nouveaux opérateurs SageMaker AI pour Kubernetes, consultez le GitHub référentiel [ACK Service Controller pour Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) ou consultez la documentation sur les [AWS contrôleurs pour](https://aws-controllers-k8s.github.io/community/docs/community/overview/) Kubernetes.
+ Pour un didacticiel expliquant comment entraîner un modèle d'apprentissage automatique avec le contrôleur de service ACK pour Amazon SageMaker AI à l'aide d'Amazon EKS, consultez cet [exemple d'SageMaker IA](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

  Pour un exemple de mise à l'échelle automatique, voir [Scale SageMaker AI Workloads with Application Auto Scaling](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/).
+ Pour en savoir plus sur AWS Controllers for Kubernetes (ACK), consultez la documentation sur [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).
+ Pour obtenir la liste des ressources d' SageMaker IA prises en charge, consultez la [référence d'API ACK](https://aws-controllers-k8s.github.io/community/reference/).

### Que signifie la fin de la prise en charge (EOS) ?
<a name="kubernetes-sagemaker-operators-eos-faq-definition"></a>

Bien que les utilisateurs puissent continuer à utiliser leurs opérateurs actuels, nous ne développons plus de nouvelles fonctionnalités pour les opérateurs et nous ne publierons aucun correctif ou mise à jour de sécurité pour les problèmes détectés. `v1.2.2`est la dernière version d'[SageMaker AI Operators pour Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master). Les utilisateurs doivent migrer leurs charges de travail afin d'utiliser le [contrôleur de service ACK pour Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller).

### Comment puis-je migrer ma charge de travail vers les nouveaux opérateurs SageMaker AI pour Kubernetes à des fins de formation et d'inférence ?
<a name="kubernetes-sagemaker-operators-eos-faq-how"></a>

Pour plus d'informations sur la migration des ressources des anciens opérateurs d' SageMaker IA vers les nouveaux pour Kubernetes, suivez. [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md)

### Vers quelle version d’ACK dois-je migrer ?
<a name="kubernetes-sagemaker-operators-eos-faq-version"></a>

Les utilisateurs doivent migrer vers la version la plus récente du [contrôleur de service ACK pour Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller/tags).

### Les opérateurs d' SageMaker IA initiaux pour Kubernetes et les nouveaux opérateurs (contrôleur de service ACK pour Amazon SageMaker AI) sont-ils fonctionnellement équivalents ?
<a name="kubernetes-sagemaker-operators-eos-faq-parity"></a>

Oui, leurs fonctions sont égales.

Voici quelques-unes des principales différences notables entre les deux versions :
+ Les définitions de ressources personnalisées (CRD) utilisées par les opérateurs d' SageMaker IA basés sur ACK pour Kubernetes suivent la définition de l' AWS API, ce qui les rend incompatibles avec les spécifications de ressources personnalisées des opérateurs d' SageMaker IA pour Kubernetes dans leur version d'origine. Reportez-vous [CRDs](https://github.com/aws-controllers-k8s/sagemaker-controller/tree/main/helm/crds)au nouveau contrôleur ou utilisez le guide de migration pour adopter les ressources et utiliser le nouveau contrôleur. 
+ La `Hosting Autoscaling` politique ne fait plus partie des nouveaux opérateurs d' SageMaker IA pour Kubernetes et a été migrée vers le contrôleur ACK de mise à l'échelle automatique des [applications](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). [Pour savoir comment utiliser le contrôleur de mise à l'échelle automatique des applications pour configurer la mise à l'échelle automatique sur les points de terminaison SageMaker AI, suivez cet exemple de mise à l'échelle automatique.](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) 
+ La ressource `HostingDeployment` a été utilisée pour créer des modèles, des configurations de points de terminaison et des points de terminaison dans une seule définition CRD. Les nouveaux opérateurs d' SageMaker IA pour Kubernetes disposent d'un CRD distinct pour chacune de ces ressources. 

# SageMaker Composants d'IA pour les pipelines Kubeflow
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

Avec les composants d' SageMaker IA pour Kubeflow Pipelines, vous pouvez créer et surveiller des tâches natives SageMaker de formation, de réglage, de déploiement de terminaux et de transformation par lots à partir de vos pipelines Kubeflow. En exécutant des tâches Kubeflow Pipeline sur l' SageMaker IA, vous déplacez les tâches de traitement des données et de formation du cluster Kubernetes vers le service géré optimisé pour l'apprentissage automatique d' SageMaker AI. Ce document suppose une connaissance préalable de Kubernetes et Kubeflow. 

**Topics**
+ [Qu'est-ce que Kubeflow Pipelines ?](#what-is-kubeflow-pipelines)
+ [Que sont les composants de pipeline Kubeflow ?](#kubeflow-pipeline-components)
+ [Pourquoi utiliser des composants SageMaker AI pour Kubeflow Pipelines ?](#why-use-sagemaker-components)
+ [SageMaker Composants d'IA pour les versions de Kubeflow Pipelines](#sagemaker-components-versions)
+ [Liste des composants d' SageMaker IA pour les pipelines Kubeflow](#sagemaker-components-list)
+ [Autorisations IAM](#iam-permissions)
+ [Conversion de pipelines pour utiliser l' SageMaker IA](#converting-pipelines-to-use-amazon-sagemaker)
+ [Installation de Kubeflow Pipelines](kubernetes-sagemaker-components-install.md)
+ [Utiliser des composants d' SageMaker IA](kubernetes-sagemaker-components-tutorials.md)

## Qu'est-ce que Kubeflow Pipelines ?
<a name="what-is-kubeflow-pipelines"></a>

Kubeflow Pipelines (KFP) est une plateforme permettant de créer et de déployer des flux de machine learning (ML) portables et évolutifs basés sur des conteneurs Docker. La plateforme Kubeflow Pipelines comprend les éléments suivants :
+ Une interface utilisateur (UI) permettant de gérer et de suivre les expériences, les tâches et les exécutions. 
+ Un moteur (Argo) pour la planification de flux de ML en plusieurs étapes.
+ Un kit SDK pour définir et manipuler les pipelines et les composants.
+ Des blocs-notes pour interagir avec le système à l’aide du SDK.

Un pipeline est une description d'un flux de travail ML exprimée sous la forme d'un [graphe orienté acyclique](https://www.kubeflow.org/docs/pipelines/concepts/graph/). Chaque étape du flux de travail est exprimée sous la forme d'un [composant](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/) Kubeflow Pipeline, qui est un AWS SDK pour Python (Boto3) module.

Pour plus d’informations sur Kubeflow Pipelines, consultez la [documentation sur Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/). 

## Que sont les composants de pipeline Kubeflow ?
<a name="kubeflow-pipeline-components"></a>

Un composant de Kubeflow Pipeline est un ensemble de code utilisé pour exécuter une étape d’un pipeline Kubeflow. Les composants sont représentés par un module Python intégré à une image Docker. Lorsque le pipeline s'exécute, le conteneur du composant est instancié sur l'un des composants master du cluster Kubernetes exécutant Kubeflow, et votre logique est exécutée. Les composants du pipeline peuvent lire les sorties des composants précédents et créer des sorties que le composant suivant du pipeline pourra consommer. Ces composants permettent d’écrire rapidement et facilement des pipelines pour des environnements d’expérimentation et de production sans avoir à interagir avec l’infrastructure Kubernetes sous-jacente.

Vous pouvez utiliser des composants SageMaker AI dans votre pipeline Kubeflow. Plutôt que d’encapsuler votre logique dans un conteneur personnalisé, il vous suffit de charger les composants et de décrire votre pipeline à l’aide du kit SDK Kubeflow Pipelines. Lorsque le pipeline s'exécute, vos instructions sont traduites en une tâche ou un déploiement d' SageMaker IA. La charge de travail s'exécute ensuite sur l'infrastructure entièrement gérée de l' SageMaker IA. 

## Pourquoi utiliser des composants SageMaker AI pour Kubeflow Pipelines ?
<a name="why-use-sagemaker-components"></a>

SageMaker Les composants AI pour Kubeflow Pipelines offrent une alternative au lancement de vos tâches gourmandes en calcul à partir de l'IA. SageMaker Les composants intègrent l' SageMaker IA à la portabilité et à l'orchestration des pipelines Kubeflow. À l'aide des composants SageMaker AI pour Kubeflow Pipelines, vous pouvez créer et surveiller vos ressources d' SageMaker IA dans le cadre d'un flux de travail Kubeflow Pipelines. Chacune des tâches de vos pipelines s'exécute sur l' SageMaker IA plutôt que sur le cluster Kubernetes local, ce qui vous permet de tirer parti des fonctionnalités clés de l' SageMaker IA telles que l'étiquetage des données, le réglage des hyperparamètres à grande échelle et les tâches de formation distribuées, ou le déploiement de modèles sécurisé et évolutif en un clic. Les paramètres, le statut, les journaux et les résultats des tâches de l' SageMaker IA sont toujours accessibles depuis l'interface utilisateur de Kubeflow Pipelines. 

Les composants d' SageMaker IA intègrent des fonctionnalités d' SageMaker IA clés dans vos flux de travail de machine learning, qu'il s'agisse de la préparation des données, de la création, de la formation et du déploiement de modèles de machine learning. Vous pouvez créer un pipeline Kubeflow entièrement construit à l’aide de ces composants ou intégrer des composants individuels dans votre flux selon vos besoins. Les composants sont disponibles dans une ou deux versions. Chaque version d'un composant utilise un backend différent. Pour plus d’informations sur ces versions, consultez [SageMaker Composants d'IA pour les versions de Kubeflow Pipelines](#sagemaker-components-versions).

L'utilisation de composants SageMaker AI pour Kubeflow Pipelines est gratuite. Vous devez payer des frais pour toutes les ressources d' SageMaker IA que vous utilisez par le biais de ces composants.

## SageMaker Composants d'IA pour les versions de Kubeflow Pipelines
<a name="sagemaker-components-versions"></a>

SageMaker Les composants AI pour Kubeflow Pipelines sont disponibles en deux versions. Chaque version utilise un backend différent pour créer et gérer des ressources sur SageMaker l'IA.
+ Les composants SageMaker AI pour Kubeflow Pipelines version 1 (v1.x ou inférieure) utilisent **[Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)** () comme backend.AWS SDK pour Python (Boto3)
+ La version 2 (v2.0.0-alpha2 et versions ultérieures) de SageMaker AI Components for Kubeflow Pipelines utilise [ SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) Operator for Kubernetes (ACK). 

  AWS a introduit [ACK](https://aws-controllers-k8s.github.io/community/) pour faciliter une méthode native de Kubernetes de gérer les ressources du cloud. AWS ACK inclut un ensemble de contrôleurs AWS spécifiques au service, dont le contrôleur SageMaker AI. Le contrôleur SageMaker AI permet aux développeurs de machine learning et aux data scientists qui utilisent Kubernetes comme plan de contrôle de former, de régler et de déployer plus facilement des modèles d'apprentissage automatique (ML) dans l'IA. SageMaker Pour plus d'informations, consultez la section [Opérateurs SageMaker AI pour Kubernetes](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/) 

Les deux versions des composants SageMaker AI pour Kubeflow Pipelines sont prises en charge. Cependant, la version 2 offre des avantages supplémentaires. Plus particulièrement, elle propose : 

1. Une expérience cohérente pour gérer vos ressources d' SageMaker IA à partir de n'importe quelle application, que vous utilisiez des pipelines Kubeflow, la CLI Kubernetes `kubectl` () ou d'autres applications Kubeflow telles que les ordinateurs portables. 

1. La flexibilité nécessaire pour gérer et surveiller vos ressources d' SageMaker IA en dehors du flux de travail du pipeline Kubeflow. 

1. Aucun temps de configuration pour utiliser les composants d' SageMaker IA si vous avez déployé l'intégralité de [Kubeflow lors](https://awslabs.github.io/kubeflow-manifests/docs/about/) de sa AWS sortie, car l'opérateur SageMaker AI participe à son déploiement. 

## Liste des composants d' SageMaker IA pour les pipelines Kubeflow
<a name="sagemaker-components-list"></a>

Vous trouverez ci-dessous une liste de tous les composants SageMaker AI pour Kubeflow Pipelines et de leurs versions disponibles. Vous pouvez également trouver tous les [composants SageMaker AI pour Kubeflow Pipelines](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning) dans. GitHub

**Note**  
Nous encourageons les utilisateurs à utiliser la version 2 d'un composant d' SageMaker intelligence artificielle partout où elle est disponible.

### Composants Ground Truth
<a name="ground-truth-components"></a>
+ **Ground Truth**

  Le composant Ground Truth vous permet de soumettre des tâches d'étiquetage SageMaker AI Ground Truth directement à partir d'un flux de travail de Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Équipe de travail**

  Le composant Workteam vous permet de créer des tâches d'équipe de travail privées basées sur l' SageMaker IA directement à partir d'un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Composants de traitement de données
<a name="data-processing-components"></a>
+ **Traitement**

  Le composant Processing vous permet de soumettre des tâches de traitement à SageMaker AI directement à partir d'un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Composants d’entraînement
<a name="training-components"></a>
+ **Entrainement**

  Le composant Formation vous permet de soumettre des tâches de SageMaker formation directement depuis un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Optimisation des hyperparamètres**

  Le composant d'optimisation des hyperparamètres vous permet de soumettre des tâches de réglage d'hyperparamètres à SageMaker AI directement à partir d'un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Composants Inférence
<a name="inference-components-kfp"></a>
+ **Hébergement de déploiement**

  Les composants d'hébergement vous permettent de déployer un modèle à l'aide des services d'hébergement SageMaker AI à partir d'un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Transformation par lots**

  Le composant Batch Transform vous permet d'exécuter des tâches d'inférence pour un ensemble de données entier dans SageMaker AI à partir d'un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Model Monitor**

  Les composants Model Monitor vous permettent de surveiller la qualité des modèles d'apprentissage automatique basés sur l' SageMaker IA en production à partir d'un flux de travail Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## Autorisations IAM
<a name="iam-permissions"></a>

Le déploiement de pipelines Kubeflow avec des composants d' SageMaker IA nécessite les trois niveaux d'authentification suivants : 
+ Un rôle IAM octroyant à votre nœud de passerelle (qui peut être votre machine locale ou une instance distante) l’accès au cluster Amazon Elastic Kubernetes Service (Amazon EKS).

  L'utilisateur qui accède au nœud de passerelle endosse ce rôle pour :
  + Créer un cluster Amazon EKS et installer KFP
  + Créer des rôles IAM.
  + Créer des compartiments Amazon S3 pour vos exemples de données d’entrée

  Ce rôle requiert les autorisations suivantes :
  + CloudWatchLogsFullAccess 
  + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess) 
  + IAMFullAccès
  + Amazon S3 FullAccess
  + Amazon EC2 FullAccess
  + Amazon EKSAdmin Policy (créez cette politique à l'aide du schéma fourni par [Amazon EKS Identity-Based Policy Examples](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 
+ Rôle d'exécution de Kubernetes IAM assumé par Kubernetes pipeline pods (**kfp-example-pod-role**) ou par l'opérateur SageMaker AI pour le pod de contrôleur Kubernetes pour accéder à l'IA. SageMaker Ce rôle est utilisé pour créer et surveiller des jobs d' SageMaker IA à partir de Kubernetes.

  Ce rôle requiert l’autorisation suivante :
  + AmazonSageMakerFullAccess 

  Vous pouvez limiter les autorisations aux pods KFP et de contrôleur en créant et en attachant votre propre politique personnalisée.
+ Rôle d'exécution SageMaker AI IAM assumé par les tâches SageMaker AI pour accéder à AWS des ressources telles qu'Amazon S3 ou Amazon ECR (**kfp-example-sagemaker-execution-role**).

  SageMaker Les emplois liés à l'IA utilisent ce rôle pour :
  + Accédez aux ressources d' SageMaker IA
  + Données d’entrée d’Amazon S3
  + Stocker votre modèle de sortie sur Amazon S3

  Ce rôle requiert les autorisations suivantes :
  + AmazonSageMakerFullAccess 
  + Amazon S3 FullAccess 

## Conversion de pipelines pour utiliser l' SageMaker IA
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

Vous pouvez convertir un pipeline existant pour utiliser l' SageMaker IA en portant vos conteneurs de [traitement Python génériques et vos conteneurs](https://docs.aws.amazon.com/sagemaker/latest/dg/amazon-sagemaker-containers.html) de [formation](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html). Si vous utilisez l' SageMaker IA à des fins d'inférence, vous devez également associer des autorisations IAM à votre cluster et convertir un artefact en modèle.

# Installation de Kubeflow Pipelines
<a name="kubernetes-sagemaker-components-install"></a>

[Kubeflow Pipelines (KFP)](https://www.kubeflow.org/docs/components/pipelines/v2/introduction/) est le composant d'orchestration de pipelines de Kubeflow.

Vous pouvez déployer Kubeflow Pipelines (KFP) sur un cluster Amazon Elastic Kubernetes Service (Amazon EKS) existant ou créer un nouveau cluster Amazon EKS. Utilisez un nœud de passerelle pour interagir avec votre cluster. Le nœud de passerelle peut être votre machine locale ou une instance Amazon EC2.

La section suivante vous guide tout au long de la procédure d'installation et de configuration de ces ressources.

**Topics**
+ [Choisir une option d’installation](#choose-install-option)
+ [Configurez les autorisations de votre pipeline pour accéder à l' SageMaker IA](#configure-permissions-for-pipeline)
+ [Accès à l’interface utilisateur KFP (tableau de bord Kubeflow)](#access-the-kfp-ui)

## Choisir une option d’installation
<a name="choose-install-option"></a>

Kubeflow Pipelines est disponible en tant que composant principal de la distribution complète de Kubeflow AWS ou en tant qu'installation autonome.

Sélectionnez l’option qui s’applique à votre cas d’utilisation :

1. [Kubeflow complet lors du déploiement AWS](#full-kubeflow-deployment)

   Pour utiliser d'autres composants Kubeflow en plus de Kubeflow Pipelines, choisissez le déploiement complet [Distribution de Kubeflow sur AWS](https://awslabs.github.io/kubeflow-manifests). 

1. [Déploiement de Kubeflow Pipelines autonome](#kubeflow-pipelines-standalone)

   Pour utiliser Kubeflow Pipelines sans les autres composants de Kubeflow, installez les pipelines Kubeflow de manière autonome. 

### Kubeflow complet lors du déploiement AWS
<a name="full-kubeflow-deployment"></a>

Pour installer la version complète de Kubeflow AWS, choisissez l'option de déploiement standard dans le [guide de déploiement de Kubeflow on ou toute autre option de AWS déploiement](https://awslabs.github.io/kubeflow-manifests/docs/deployment/) prenant en charge les intégrations avec différents services ( AWS Amazon S3, Amazon RDS, Amazon Cognito).

### Déploiement de Kubeflow Pipelines autonome
<a name="kubeflow-pipelines-standalone"></a>

Cette section part du principe que votre utilisateur est autorisé à créer des rôles et à définir des politiques pour le rôle.

#### Configuration d’un nœud de passerelle
<a name="set-up-a-gateway-node"></a>

Vous pouvez utiliser votre machine locale ou une instance Amazon EC2 comme nœud de passerelle. Un nœud de passerelle est utilisé pour créer un cluster Amazon EKS et accéder à l’interface utilisateur de Kubeflow Pipelines. 

Suivez la procédure ci-dessous pour configurer votre nœud. 

1. 

**Créez un nœud de passerelle.**

   Vous pouvez utiliser une instance Amazon EC2 existante ou créer une nouvelle instance avec la dernière version de DLAMI Ubuntu 18.04 en suivant la procédure fournie dans [Lancement et configuration d'une DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/launch-config.html).

1. 

**Créez un rôle IAM pour accorder à votre nœud de passerelle l'accès aux AWS ressources.**

   Créez un rôle IAM avec des autorisations sur les ressources suivantes : CloudWatch,, IAM CloudFormation, Amazon EC2, Amazon S3, Amazon EKS.

   Attachez les politiques suivantes au rôle IAM :
   + CloudWatchLogsFullAccess 
   + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess)
   + IAMFullAccès 
   + Amazon S3 FullAccess 
   + Amazon EC2 FullAccess 
   + Amazon EKSAdmin Policy (créez cette politique à l'aide du schéma fourni par [Amazon EKS Identity-Based Policy Examples](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 

   Pour en savoir plus sur l'ajout d'autorisations IAM à un rôle IAM, consultez [Ajout et suppression d'autorisations basées sur l'identité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

1. 

**Installez les outils et clients suivants.**

   Installez et configurez les outils et ressources suivants sur votre nœud de passerelle pour accéder au cluster Amazon EKS et à l'interface utilisateur de KFP. 
   + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html): outil de ligne de commande permettant de travailler avec AWS les services. Pour obtenir des informations de configuration AWS CLI , consultez [Configuration d' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). 
   + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html)version 0.1.31 et supérieure : outil permettant d'utiliser les informations d'identification AWS IAM pour s'authentifier auprès d'un cluster Kubernetes.
   + [https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html) version supérieure à 0.15 : outil de ligne de commande permettant de travailler avec des clusters Amazon EKS.
   + [https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl) : outil de ligne de commande pour travailler avec des clusters Kubernetes. La version doit correspondre à votre version de Kubernetes dans une version mineure.
   + [https://aws.amazon.com/sdk-for-python/](https://aws.amazon.com/sdk-for-python/).

     ```
     pip install boto3
     ```

#### Configuration d’un cluster Amazon EKS
<a name="set-up-anamazon-eks-cluster"></a>

1. Si vous ne possédez pas de cluster Amazon EKS, exécutez les actions suivantes à partir de la ligne de commande de votre nœud de passerelle. Dans le cas contraire, ignorez cette étape.

   1. Exécutez la commande suivante pour créer un cluster Amazon EKS avec la version 1.17 ou ultérieure. Remplacez `<clustername>` par n’importe quel nom pour votre cluster. 

      ```
      eksctl create cluster --name <clustername> --region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1
      ```

   1. Une fois la création du cluster terminée, assurez-vous d'avoir accès à votre cluster en répertoriant les nœuds du cluster. 

      ```
      kubectl get nodes
      ```

1. Assurez-vous que le contexte `kubectl` actuel pointe vers votre cluster à l'aide de la commande suivante. Le contexte actuel est repéré par un astérisque (\$1) dans le résultat.

   ```
   kubectl config get-contexts
   
   CURRENT NAME     CLUSTER
   *   <username>@<clustername>.us-east-1.eksctl.io   <clustername>.us-east-1.eksctl.io
   ```

1. Si le cluster souhaité n'est pas configuré comme valeur par défaut actuelle, mettez à jour la valeur par défaut à l'aide de la commande suivante. 

   ```
   aws eks update-kubeconfig --name <clustername> --region us-east-1
   ```

#### Installation de Kubeflow Pipelines
<a name="install-kubeflow-pipelines"></a>

Exécutez les étapes suivantes à partir du terminal de votre nœud de passerelle pour installer Kubeflow Pipelines sur votre cluster.

1. Installez tous les [composants cert-manager](https://cert-manager.io/docs/installation/kubectl/).

   ```
   kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
   ```

1. Installez les pipelines Kubeflow.

   ```
   export PIPELINE_VERSION=2.0.0-alpha.5
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION"
   kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
   ```

1. Assurez-vous que le service Kubeflow Pipelines et d'autres ressources connexes sont en cours d'exécution.

   ```
   kubectl -n kubeflow get all | grep pipeline
   ```

   Le résultat doit être similaire à ce qui suit.

   ```
   pod/ml-pipeline-6b88c67994-kdtjv                      1/1     Running            0          2d
   pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk     1/1     Running            0          2d
   pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj    1/1     Running            0          2d
   pod/ml-pipeline-ui-66cc4cffb6-cmsdb                   1/1     Running            0          2d
   pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj            1/1     Running            0          2d
   pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4   1/1     Running            0          2d
   service/ml-pipeline                       ClusterIP   10.100.170.170   <none>        8888/TCP,8887/TCP   2d
   service/ml-pipeline-ui                    ClusterIP   10.100.38.71     <none>        80/TCP              2d
   service/ml-pipeline-visualizationserver   ClusterIP   10.100.61.47     <none>        8888/TCP            2d
   deployment.apps/ml-pipeline                       1/1     1            1           2d
   deployment.apps/ml-pipeline-persistenceagent      1/1     1            1           2d
   deployment.apps/ml-pipeline-scheduledworkflow     1/1     1            1           2d
   deployment.apps/ml-pipeline-ui                    1/1     1            1           2d
   deployment.apps/ml-pipeline-viewer-crd            1/1     1            1           2d
   deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           2d
   replicaset.apps/ml-pipeline-6b88c67994                      1         1         1       2d
   replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf     1         1         1       2d
   replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7    1         1         1       2d
   replicaset.apps/ml-pipeline-ui-66cc4cffb6                   1         1         1       2d
   replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4            1         1         1       2d
   replicaset.apps/ml-pipeline-visualizationserver-9c47576f4   1         1         1       2d
   ```

## Configurez les autorisations de votre pipeline pour accéder à l' SageMaker IA
<a name="configure-permissions-for-pipeline"></a>

Dans cette section, vous allez créer un rôle d'exécution IAM permettant aux pods Kubeflow Pipeline d'accéder aux SageMaker services d'IA. 

### Configuration pour les composants SageMaker AI version 2
<a name="permissions-for-SM-v2"></a>

Pour exécuter SageMaker AI Components version 2 pour Kubeflow Pipelines, vous devez installer [SageMaker AI Operator for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) et configurer le contrôle d'accès basé sur les rôles (RBAC) permettant aux pods Kubeflow Pipelines de créer des ressources IA personnalisées dans votre cluster Kubernetes. SageMaker 

**Important**  
Suivez cette section si vous utilisez le déploiement autonome de Kubeflow Pipelines. Si vous utilisez AWS la distribution de Kubeflow version 1.6.0-aws-b1.0.0 ou supérieure, SageMaker les composants AI version 2 sont déjà configurés.

1. Installez SageMaker AI Operator pour Kubernetes pour utiliser les composants SageMaker AI version 2.

   Suivez la section *Configuration* du [didacticiel Machine Learning with ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup).

1. Configurez les autorisations RBAC pour le rôle d’exécution (compte de service) utilisé par les pods de pipeline Kubeflow. Dans le déploiement autonome de Kubeflow Pipelines, les exécutions de pipeline s’effectuent dans l’espace de noms `kubeflow` à l’aide du compte de service `pipeline-runner`.

   1. Créez un [RoleBinding](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-example)qui autorise le compte de service à gérer les ressources personnalisées de l' SageMaker IA.

      ```
      cat > manage_sagemaker_cr.yaml <<EOF
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
      name: manage-sagemaker-cr  
      namespace: kubeflow
      subjects:
      - kind: ServiceAccount
      name: pipeline-runner
      namespace: kubeflow
      roleRef:
      kind: ClusterRole
      name: ack-sagemaker-controller 
      apiGroup: rbac.authorization.k8s.io
      EOF
      ```

      ```
      kubectl apply -f manage_sagemaker_cr.yaml
      ```

   1. Assurez-vous que la liaison de rôles a été créée en exécutant :

      ```
      kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml
      ```

### Configuration des composants SageMaker AI version 1
<a name="permissions-for-SM-v1"></a>

Pour exécuter SageMaker AI Components version 1 pour Kubeflow Pipelines, les pods Kubeflow Pipeline doivent avoir accès à l'IA. SageMaker 

**Important**  
Suivez cette section, que vous utilisiez le Kubeflow complet lors du AWS déploiement ou que vous utilisiez Kubeflow Pilepines en mode autonome.

Pour créer un rôle d'exécution IAM autorisant les pods du pipeline Kubeflow à accéder à l' SageMaker IA, procédez comme suit :

1. Exportez le nom de votre cluster (par exemple, *my-cluster-name*) et la région de votre cluster (par exemple, *us-east-1*).

   ```
   export CLUSTER_NAME=my-cluster-name
   export CLUSTER_REGION=us-east-1
   ```

1. Exportez l'espace de noms et le nom du compte de service en fonction de votre installation.
   + Pour accéder à l'intégralité de Kubeflow lors de AWS l'installation, exportez votre profil `namespace` (par exemple *kubeflow-user-example-com*) et votre *éditeur par défaut en tant que compte de service*.

     ```
     export NAMESPACE=kubeflow-user-example-com
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor
     ```
   + Pour le déploiement autonome de Pipelines, exportez *kubeflow* en tant que `namespace` et *pipeline-runner* en tant que compte de service.

     ```
     export NAMESPACE=kubeflow
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
     ```

1. Créez un [fournisseur OIDC IAM pour le cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) avec la commande suivante.

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
               --region ${CLUSTER_REGION} --approve
   ```

1. Créez un rôle d'exécution IAM pour que les pods KFP puissent accéder aux AWS services (SageMaker AI, CloudWatch).

   ```
   eksctl create iamserviceaccount \
   --name ${KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT} \
   --namespace ${NAMESPACE} --cluster ${CLUSTER_NAME} \
   --region ${CLUSTER_REGION} \
   --attach-policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess \
   --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
   --override-existing-serviceaccounts \
   --approve
   ```

Une fois que vos autorisations de pipeline sont configurées pour accéder à la version 1 d' SageMaker AI Components, suivez le guide des composants SageMaker AI pour les pipelines Kubeflow sur la documentation de [Kubeflow](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/). AWS 

## Accès à l’interface utilisateur KFP (tableau de bord Kubeflow)
<a name="access-the-kfp-ui"></a>

L’interface utilisateur de Kubeflow Pipelines sert à gérer et suivre les expériences, les tâches et les exécutions sur votre cluster. Pour obtenir des instructions sur l'accès à l'interface utilisateur de Kubeflow Pipelines à partir de votre nœud de passerelle, suivez les étapes qui s'appliquent à votre option de déploiement dans cette section.

### Kubeflow complet lors du déploiement AWS
<a name="access-kfp-ui-full-kubeflow-deployment"></a>

Suivez les instructions du [AWS site Web de Kubeflow on](https://awslabs.github.io/kubeflow-manifests/docs/deployment/connect-kubeflow-dashboard/) pour vous connecter au tableau de bord Kubeflow et accéder à l'onglet pipelines.

### Déploiement de Kubeflow Pipelines autonome
<a name="access-kfp-ui-standalone-kubeflow-pipelines-deployment"></a>

Utilisez le transfert de port pour accéder à l'interface utilisateur de Kubeflow Pipelines à partir de votre nœud de passerelle, en suivant ces étapes.

#### Configuration du transfert de port vers le service d’interface utilisateur de KFP
<a name="set-up-port-forwarding-to-the-kfp-ui-service"></a>

Exécutez la commande suivante à partir de la ligne de commande de votre nœud de passerelle.

1. Vérifiez que le service d'interface utilisateur de KFP est en cours d'exécution en utilisant la commande suivante :

   ```
   kubectl -n kubeflow get service ml-pipeline-ui
   
   NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
   ml-pipeline-ui   ClusterIP   10.100.38.71   <none>        80/TCP    2d22h
   ```

1. Exécutez la commande suivante pour configurer le transfert de port vers le service d’interface utilisateur de KFP. Cela transfère l'interface utilisateur de KFP vers le port 8080 de votre nœud de passerelle et vous permet d'accéder à l'interface utilisateur de KFP à partir de votre navigateur. 

   ```
   kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80
   ```

   Le transfert de port de votre machine distante s'arrête s'il n'y a pas d'activité. Exécutez à nouveau cette commande si votre tableau de bord ne parvient pas à obtenir des journaux ou des mises à jour. Si les commandes renvoient une erreur, assurez-vous qu'aucun processus n'est déjà en cours d'exécution sur le port que vous essayez d'utiliser. 

#### Accès au service d'interface utilisateur de KFP
<a name="set-up-port-forwarding-to-the-kfp-ui-service-access"></a>

Votre méthode d’accès à l’interface utilisateur de KFP dépend du type de nœud de passerelle.
+ Machine locale en tant que nœud de passerelle :

  1. Accédez au tableau de bord dans votre navigateur comme suit : 

     ```
     http://localhost:8080
     ```

  1. Choisissez **Pipelines** pour accéder à l’interface utilisateur de Pipelines. 
+ Instance Amazon EC2 en tant que nœud de passerelle :

  1. Vous devez configurer un tunnel SSH sur votre instance Amazon EC2 pour accéder au tableau de bord Kubeflow à partir du navigateur de votre machine locale. 

     À partir d’une nouvelle session de terminal sur votre machine locale, exécutez ce qui suit. Remplacez `<public-DNS-of-gateway-node>` par l'adresse IP de votre instance qui se trouve sur la console Amazon EC2. Vous pouvez également utiliser le DNS public. Remplacez `<path_to_key>` par le chemin d'accès à la clé PEM utilisée pour accéder au nœud de passerelle. 

     ```
     public_DNS_address=<public-DNS-of-gateway-node>
     key=<path_to_key>
     
     on Ubuntu:
     ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address}
     
     or on Amazon Linux:
     ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address}
     ```

  1. Accédez au tableau de bord dans votre navigateur. 

     ```
     http://localhost:9000
     ```

  1. Choisissez **Pipelines** pour accéder à l’interface utilisateur de KFP. 

#### (Facultatif) Accordez aux instances de bloc-notes SageMaker AI l'accès à Amazon EKS et exécutez des pipelines KFP depuis votre bloc-notes.
<a name="add-access-to-additional-iam-users-or-roles"></a>

Une instance de SageMaker bloc-notes est une instance de calcul Amazon EC2 entièrement gérée qui exécute l'application Jupyter Notebook. Vous utilisez une instance de bloc-notes pour créer et gérer les blocs-notes Jupyter, puis définir, compiler, déployer et exécuter vos pipelines KFP à l'aide du kit AWS SDK pour Python (Boto3) ou de l'interface de ligne de commande KFP. 

1. Suivez les étapes décrites dans [Créer une instance de SageMaker bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) pour créer votre instance de bloc-notes, puis associez la `S3FullAccess` politique à son rôle d'exécution IAM.

1. À partir de la ligne de commande de votre nœud de passerelle, exécutez la commande suivante pour récupérer l'ARN de rôle IAM de l'instance de bloc-notes que vous avez créée. Remplacez `<instance-name>` par le nom de votre instance.

   ```
   aws sagemaker describe-notebook-instance --notebook-instance-name <instance-name> --region <region> --output text --query 'RoleArn'
   ```

   Cette commande fournit en sortie l'ARN du rôle IAM au format `arn:aws:iam::<account-id>:role/<role-name>`. Notez cet ARN.

1. Exécutez cette commande pour associer les politiques suivantes (Amazon AmazonSageMakerFullAccess EKSWorkerNodePolicy, AmazonS3FullAccess) à ce rôle IAM. Remplacez `<role-name>` par le `<role-name>` dans votre ARN. 

   ```
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
   ```

1. Les clusters Amazon EKS utilisent des rôles IAM pour contrôler l'accès au cluster. Les règles sont implémentées dans une carte de configuration nommée `aws-auth`. `eksctl` fournit des commandes pour lire et modifier la carte de configuration `aws-auth`. Seuls les utilisateurs ayant accès au cluster peuvent modifier cette carte de configuration.

   `system:masters` est l'un des groupes d'utilisateurs par défaut dotés d'autorisations de super-utilisateur sur le cluster. Ajoutez votre utilisateur à ce groupe ou créez un groupe doté d'autorisations plus restrictives.

1. Liez le rôle à votre cluster en exécutant la commande suivante. Remplacez `<IAM-Role-arn>` par l’ARN du rôle IAM. `<your_username>` peut être n’importe quel nom d’utilisateur unique.

   ```
   eksctl create iamidentitymapping \
   --cluster <cluster-name> \
   --arn <IAM-Role-arn> \
   --group system:masters \
   --username <your-username> \
   --region <region>
   ```

1. Ouvrez un bloc-notes Jupyter sur votre instance SageMaker AI et exécutez la commande suivante pour vous assurer qu'il a accès au cluster.

   ```
   aws eks --region <region> update-kubeconfig --name <cluster-name>
   kubectl -n kubeflow get all | grep pipeline
   ```

# Utiliser des composants d' SageMaker IA
<a name="kubernetes-sagemaker-components-tutorials"></a>

Dans ce didacticiel, vous allez exécuter un pipeline à l'aide de composants SageMaker AI pour Kubeflow Pipelines afin d'entraîner un modèle de classification à l'aide de Kmeans avec le jeu de données MNIST sur l'IA. SageMaker Le flux de travail utilise Kubeflow Pipelines comme orchestrateur et l' SageMaker IA pour exécuter chaque étape du flux de travail. L'exemple a été tiré d'un [exemple d' SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/blob/8279abfcc78bad091608a4a7135e50a0bd0ec8bb/sagemaker-python-sdk/1P_kmeans_highlevel/kmeans_mnist.ipynb) existant et modifié pour fonctionner avec les composants SageMaker AI pour Kubeflow Pipelines.

Vous pouvez définir votre pipeline en Python en utilisant AWS SDK pour Python (Boto3) ensuite le tableau de bord KFP, la CLI KFP ou Boto3 pour compiler, déployer et exécuter vos flux de travail. Le code complet de l’exemple de pipeline de classification MNIST est disponible dans le [référentiel Github Kubeflow](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples/mnist-kmeans-sagemaker#mnist-classification-with-kmeans). Pour l’utiliser, clonez les fichiers Python sur votre nœud de passerelle.

Vous trouverez d'autres [exemples de pipelines SageMaker AI Kubeflow](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples) sur. GitHub Pour plus d'informations sur les composants utilisés, consultez le [ GitHub référentiel KubeFlow Pipelines](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker).

Pour exécuter l'exemple de pipeline de classification, créez un rôle d'exécution SageMaker AI IAM accordant à votre formation l'autorisation d'accéder aux AWS ressources, puis poursuivez les étapes correspondant à votre option de déploiement.

## Création d'un rôle d'exécution SageMaker basé sur l'IA
<a name="create-an-amazonsagemaker-execution-role"></a>

Le rôle `kfp-example-sagemaker-execution-role` IAM est un rôle d'exécution assumé par les tâches d' SageMaker IA pour accéder aux AWS ressources. Dans la commande suivante, vous créez un rôle d'exécution IAM nommé`kfp-example-sagemaker-execution-role`, vous associez deux politiques gérées (AmazonSageMakerFullAccess, AmazonS3FullAccess) et vous créez une relation de confiance avec l' SageMaker IA pour accorder SageMaker aux tâches d'IA l'accès à ces ressources. AWS 

Vous fournissez ce rôle en tant que paramètre d’entrée lors de l’exécution du pipeline.

Exécutez la commande suivante pour créer le rôle. Prenez note de l’ARN qui est renvoyé dans le résultat.

```
SAGEMAKER_EXECUTION_ROLE_NAME=kfp-example-sagemaker-execution-role

TRUST="{ \"Version\": \"2012-10-17		 	 	 \", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"sagemaker.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }"
aws iam create-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --assume-role-policy-document "$TRUST"
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess

aws iam get-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --output text --query 'Role.Arn'
```

## Kubeflow complet lors du déploiement AWS
<a name="run-pipelines-on-full-kubeflow-deployment"></a>

Suivez les instructions du [didacticiel SageMaker Training Pipeline pour la classification MNIST avec K-Means](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/).

## Déploiement de Kubeflow Pipelines autonome
<a name="run-pipelines-on-standalone-kubeflow-pipelines-deployment"></a>

### Préparation de jeux de données
<a name="prepare-datasets"></a>

Pour exécuter les pipelines, vous devez télécharger le script de prétraitement de l’extraction de données dans un compartiment Amazon S3. Ce compartiment et toutes les ressources pour cet exemple doivent se situer dans la région `us-east-1`. Pour en savoir plus sur la création d'un compartiment, consultez [Créer un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html).

Depuis le dossier `mnist-kmeans-sagemaker` du référentiel Kubeflow que vous avez cloné sur votre nœud de passerelle, exécutez la commande suivante pour télécharger le fichier `kmeans_preprocessing.py` dans votre compartiment Amazon S3. Modifiez `<bucket-name>` en spécifiant le nom de votre compartiment Amazon S3.

```
aws s3 cp mnist-kmeans-sagemaker/kmeans_preprocessing.py s3://<bucket-name>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
```

### Compiler et déployer votre pipeline
<a name="compile-and-deploy-your-pipeline"></a>

Après avoir défini le pipeline, vous devez le compiler en une représentation intermédiaire avant de pouvoir le soumettre au service Kubeflow Pipelines sur votre cluster. La représentation intermédiaire est une spécification de flux de travail sous la forme d'un fichier YAML compressé en fichier tar.gz. Vous avez besoin du kit SDK KFP pour compiler votre pipeline.

#### Installation du kit SDK KFP
<a name="install-kfp-sdk"></a>

Exécutez ce qui suit à partir de la ligne de commande de votre nœud de passerelle :

1. Installez le kit SDK KFP en suivant les instructions de la [Documentation sur les pipelines Kubeflow](https://www.kubeflow.org/docs/pipelines/sdk/install-sdk/).

1. Vérifiez que le kit SDK KFP est installé à l'aide de la commande suivante :

   ```
   pip show kfp
   ```

1. Vérifiez que `dsl-compile` a été installé correctement comme suit :

   ```
   which dsl-compile
   ```

#### Compilation de votre pipeline
<a name="compile-your-pipeline"></a>

Vous disposez de trois options pour interagir avec Kubeflow Pipelines : l'interface utilisateur de KFP, la CLI de KFP ou le kit SDK KFP. Les sections suivantes illustrent le flux à l’aide de l’interface utilisateur et de la CLI de KFP.

Procédez comme suit à partir de votre nœud de passerelle.

1. Modifiez votre fichier Python avec votre nom de compartiment Amazon S3 et ARN de rôle IAM.

1. Utilisez la commande `dsl-compile` à partir de la ligne de commande pour compiler votre pipeline comme suit. Remplacez `<path-to-python-file>` par le chemin d'accès à votre pipeline et `<path-to-output>` par l'emplacement où vous souhaitez avoir votre fichier tar.gz.

   ```
   dsl-compile --py <path-to-python-file> --output <path-to-output>
   ```

#### Téléchargement et exécution du pipeline à l'aide de la CLI de KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-cli"></a>

Procédez comme suit à partir de la ligne de commande de votre nœud de passerelle. KFP organise les exécutions de votre pipeline en tant qu'expériences. Vous avez la possibilité de spécifier un nom d'expérience. Si vous n'en spécifiez pas, l'exécution sera répertoriée sous expérience **par défaut**.

1. Téléchargez votre pipeline comme suit :

   ```
   kfp pipeline upload --pipeline-name <pipeline-name> <path-to-output-tar.gz>
   ```

   Le résultat doit être similaire à ce qui suit. Prenez note de l'`ID` du pipeline.

   ```
   Pipeline 29c3ff21-49f5-4dfe-94f6-618c0e2420fe has been submitted
   
   Pipeline Details
   ------------------
   ID           29c3ff21-49f5-4dfe-94f6-618c0e2420fe
   Name         sm-pipeline
   Description
   Uploaded at  2020-04-30T20:22:39+00:00
   ...
   ...
   ```

1. Créez une exécution à l’aide de la commande suivante. La commande d’exécution de la CLI de KFP ne prend actuellement pas en charge la spécification des paramètres d’entrée lors de la création de l’exécution. Vous devez mettre à jour vos paramètres dans le fichier de AWS SDK pour Python (Boto3) pipeline avant de procéder à la compilation. Remplacez `<experiment-name>` et `<job-name>` par des noms quelconques. Remplacez `<pipeline-id>` par l'ID de votre pipeline envoyé. Remplacez `<your-role-arn>` par l'ARN de `kfp-example-pod-role`. Remplacez `<your-bucket-name>` par le nom du compartiment Amazon S3 que vous avez créé. 

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --pipeline-id <pipeline-id> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   Vous pouvez également soumettre directement une exécution à l'aide du package de pipeline compilé créé en tant que sortie de la commande `dsl-compile`.

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --package-file <path-to-output> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   Le résultat doit être similaire à ce qui suit :

   ```
   Creating experiment aws.
   Run 95084a2c-f18d-4b77-a9da-eba00bf01e63 is submitted
   +--------------------------------------+--------+----------+---------------------------+
   | run id                               | name   | status   | created at                |
   +======================================+========+==========+===========================+
   | 95084a2c-f18d-4b77-a9da-eba00bf01e63 | sm-job |          | 2020-04-30T20:36:41+00:00 |
   +--------------------------------------+--------+----------+---------------------------+
   ```

1. Accédez à l'interface utilisateur pour vérifier la progression de la tâche.

#### Téléchargement et exécution du pipeline à l'aide de l'interface utilisateur de KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-ui"></a>

1. Dans le panneau de gauche, choisissez l'option **Pipelines**. 

1. **Dans le coin supérieur droit, choisissez \$1. UploadPipeline** 

1. Saisissez le nom du pipeline et sa description. 

1. Choisissez **Charger un fichier** et entrez le chemin d'accès au fichier tar.gz que vous avez créé à l'aide de l'interface de ligne de commande ou du kit AWS SDK pour Python (Boto3).

1. Dans le panneau de gauche, choisissez l’onglet **Pipelines**.

1. Recherchez le pipeline que vous avez créé.

1. Choisissez **\$1 CreateRun**.

1. Entrez vos paramètres d'entrée.

1. Cliquez sur **Exécuter**.

### Prédictions d’exécution
<a name="running-predictions"></a>

Une fois votre pipeline de classification déployé, vous pouvez exécuter des prédictions de classification par rapport au point de terminaison créé par le composant Déployer. Utilisez l’interface utilisateur KFP pour vérifier les artefacts de sortie pour `sagemaker-deploy-model-endpoint_name`. Téléchargez le fichier .tgz pour extraire le nom du point de terminaison ou vérifiez la console SageMaker AI dans la région que vous avez utilisée.

#### Configuration des autorisations pour exécuter les prédictions
<a name="configure-permissions-to-run-predictions"></a>

Si vous souhaitez exécuter des prédictions à partir de votre nœud de passerelle, ignorez cette section.

**Pour utiliser n'importe quelle autre machine pour exécuter des prédictions, affectez l'autorisation `sagemaker:InvokeEndpoint` au rôle IAM utilisé par l'ordinateur client.**

1. Sur votre nœud de passerelle, exécutez ce qui suit pour créer un fichier de politique IAM :

   ```
   cat <<EoF > ./sagemaker-invoke.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:InvokeEndpoint"
               ],
               "Resource": "*"
           }
       ]
   }
   EoF
   ```

1. Attachez la politique au rôle IAM du nœud client.

   Exécutez la commande suivante. Remplacez `<your-instance-IAM-role>` par le nom du rôle IAM. Remplacez `<path-to-sagemaker-invoke-json>` par le chemin d’accès au fichier de politique que vous avez créé.

   ```
   aws iam put-role-policy --role-name <your-instance-IAM-role> --policy-name sagemaker-invoke-for-worker --policy-document file://<path-to-sagemaker-invoke-json>
   ```

#### Prédictions d’exécution
<a name="run-predictions"></a>

1. Créez un AWS SDK pour Python (Boto3) fichier à partir de votre machine cliente nommé `mnist-predictions.py` avec le contenu suivant. Remplacez la variable `ENDPOINT_NAME`. Ce script charge le jeu de données MNIST, crée un fichier CSV à partir de ces chiffres, puis l'envoie au point de terminaison à des fins de prédiction et imprime les résultats.

   ```
   import boto3
   import gzip
   import io
   import json
   import numpy
   import pickle
   
   ENDPOINT_NAME='<endpoint-name>'
   region = boto3.Session().region_name
   
   # S3 bucket where the original mnist data is downloaded and stored
   downloaded_data_bucket = f"jumpstart-cache-prod-{region}"
   downloaded_data_prefix = "1p-notebooks-datasets/mnist"
   
   # Download the dataset
   s3 = boto3.client("s3")
   s3.download_file(downloaded_data_bucket, f"{downloaded_data_prefix}/mnist.pkl.gz", "mnist.pkl.gz")
   
   # Load the dataset
   with gzip.open('mnist.pkl.gz', 'rb') as f:
       train_set, valid_set, test_set = pickle.load(f, encoding='latin1')
   
   # Simple function to create a csv from our numpy array
   def np2csv(arr):
       csv = io.BytesIO()
       numpy.savetxt(csv, arr, delimiter=',', fmt='%g')
       return csv.getvalue().decode().rstrip()
   
   runtime = boto3.Session(region).client('sagemaker-runtime')
   
   payload = np2csv(train_set[0][30:31])
   
   response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                      ContentType='text/csv',
                                      Body=payload)
   result = json.loads(response['Body'].read().decode())
   print(result)
   ```

1. Exécutez le AWS SDK pour Python (Boto3) fichier comme suit :

   ```
   python mnist-predictions.py
   ```

### Affichage des résultats et des journaux
<a name="view-results-and-logs"></a>

Lorsque le pipeline est en cours d'exécution, vous pouvez choisir n'importe quel composant pour vérifier les détails d'exécution, tels que les entrées et les sorties. Cette liste répertorie les noms des ressources créées.

Si la demande KFP est traitée avec succès et qu'une tâche SageMaker AI est créée, les journaux du composant dans l'interface utilisateur KFP fournissent un lien vers la tâche créée dans SageMaker AI. Les CloudWatch journaux sont également fournis si la tâche est créée avec succès. 

Si vous exécutez trop de tâches de pipeline sur le même cluster, un message d'erreur peut s'afficher et indiquer que vous n'avez pas suffisamment de pods disponibles. Pour résoudre ce problème, connectez-vous à votre nœud de passerelle et supprimez les pods créés par les pipelines que vous n'utilisez pas :

```
kubectl get pods -n kubeflow
kubectl delete pods -n kubeflow <name-of-pipeline-pod>
```

### Nettoyage
<a name="cleanup"></a>

Lorsque vous n'avez plus besoin de votre pipeline, vous devez nettoyer vos ressources.

1. À partir du tableau de bord de KFP, mettez fin à l’exécution de vos pipelines si elles ne se ferment pas correctement en choisissant **Terminate (Résilier)**.

1. Si l’option **Résilier** ne fonctionne pas, connectez-vous à votre nœud de passerelle et résiliez manuellement tous les pods créés par votre exécution de pipeline, comme suit : 

   ```
   kubectl get pods -n kubeflow
   kubectl delete pods -n kubeflow <name-of-pipeline-pod>
   ```

1. À l'aide de votre AWS compte, connectez-vous au service SageMaker AI. Arrêtez manuellement toutes les tâches d’entraînement, de transformation par lots et de HPO. Supprimez les modèles, les compartiments de données et les points de terminaison pour éviter des coûts supplémentaires. L'arrêt des cycles de pipeline n'arrête pas les emplois dans le domaine de l' SageMaker IA.

# SageMaker Emplois sur ordinateur portable
<a name="notebook-auto-run"></a>

Vous pouvez utiliser Amazon SageMaker AI pour créer, former et déployer de manière interactive des modèles d'apprentissage automatique à partir de votre bloc-notes Jupyter dans n'importe quel environnement. JupyterLab Toutefois, il existe différents scénarios dans lesquels vous pouvez exécuter votre bloc-notes en tant que tâche planifiée non interactive. Par exemple, vous pouvez peut-être créer des rapports d’audit réguliers qui analysent toutes les tâches d’entraînement exécutées sur une certaine période et analysent la valeur commerciale du déploiement de ces modèles en production. Ou vous pouvez peut-être augmenter une tâche d'ingénierie des fonctionnalités après avoir testé la logique de transformation des données sur un petit sous-ensemble de données. Autres cas d'utilisation courants :
+ Planification des tâches pour la surveillance de la dérive des modèles
+ Exploration de l’espace des paramètres pour de meilleurs modèles

Dans ces scénarios, vous pouvez utiliser SageMaker Notebook Jobs pour créer une tâche non interactive (que l' SageMaker IA exécute en tant que tâche de formation sous-jacente) à exécuter à la demande ou selon un calendrier. SageMaker Notebook Jobs fournit une interface utilisateur intuitive qui vous permet de planifier vos tâches directement JupyterLab en choisissant le widget Notebook Jobs (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/notebook-schedule.png)) dans votre bloc-notes. Vous pouvez également planifier vos tâches à l'aide du SDK SageMaker AI Python, qui offre la flexibilité de planifier plusieurs tâches de bloc-notes dans un flux de travail en pipeline. Vous pouvez exécuter plusieurs blocs-notes en parallèle et paramétrer les cellules de vos blocs-notes afin de personnaliser les paramètres d’entrée.

Cette fonctionnalité tire parti des services Amazon EventBridge, SageMaker Training et Pipelines et peut être utilisée dans votre bloc-notes Jupyter dans l'un des environnements suivants :
+ Instances Studio, Studio Lab, Studio Classic ou de bloc-notes
+ Configuration locale, telle que votre machine locale, sur laquelle vous exécutez JupyterLab

**Conditions préalables**

Pour planifier une tâche de bloc-notes, vérifiez que vous respectez les critères suivants :
+ Assurez-vous que votre bloc-notes Jupyter et tous les scripts d’initialisation ou de démarrage sont autonomes en ce qui concerne le code et les packages logiciels. Dans le cas contraire, votre tâche non interactive risque de générer des erreurs.
+ Vérifiez [Contraintes et considérations](notebook-auto-run-constraints.md) pour vous assurer que vous avez correctement configuré votre bloc-notes Jupyter, les paramètres réseau et les paramètres du conteneur.
+ Assurez-vous que votre bloc-notes peut accéder aux ressources externes nécessaires, telles que les clusters Amazon EMR.
+ Si vous configurez la fonctionnalité Tâches de bloc-notes dans un bloc-notes Jupyter local, terminez l'installation. Pour obtenir des instructions, consultez [Guide d’installation](scheduled-notebook-installation.md). 
+ Si vous vous connectez à un cluster Amazon EMR dans votre bloc-notes et que vous souhaitez paramétrer votre commande de connexion Amazon EMR, vous devez appliquer une solution de contournement en utilisant des variables d’environnement pour transmettre des paramètres. Pour en savoir plus, consultez [Connexion à un cluster Amazon EMR à partir de votre bloc-notes](scheduled-notebook-connect-emr.md).
+ Si vous vous connectez à un cluster Amazon EMR à l'aide de l'authentification Kerberos, LDAP ou HTTP Basic Auth, vous devez utiliser le AWS Secrets Manager pour transmettre vos informations de sécurité à votre commande de connexion Amazon EMR. Pour en savoir plus, consultez [Connexion à un cluster Amazon EMR à partir de votre bloc-notes](scheduled-notebook-connect-emr.md).
+ (Facultatif) Si vous souhaitez que l'interface utilisateur précharge un script à exécuter au démarrage du bloc-notes, votre administrateur doit l'installer à l'aide d'une configuration de cycle de vie (LCC). Pour obtenir des informations sur l’utilisation d’un script LCC, consultez [Personnalisation d’une instance de bloc-notes à l’aide d’un script de configuration de cycle de vie](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html).

# Guide d’installation
<a name="scheduled-notebook-installation"></a>

Vous trouverez ci-dessous des informations sur ce que vous devez installer pour utiliser Notebook Jobs dans votre JupyterLab environnement.

**Pour Amazon SageMaker Studio et Amazon SageMaker Studio Lab**

Si votre bloc-notes se trouve dans Amazon SageMaker Studio ou Amazon SageMaker Studio Lab, vous n'avez pas besoin d'effectuer d'installation supplémentaire : SageMaker Notebook Jobs est intégré à la plateforme. Pour configurer les autorisations requises pour Studio, consultez [Configuration de politiques et d’autorisations pour Studio](scheduled-notebook-policies-studio.md).

**Pour les bloc-notes Jupyter locaux**

Si vous souhaitez utiliser SageMaker Notebook Jobs pour votre JupyterLab environnement local, vous devez effectuer une installation supplémentaire.

Pour installer SageMaker Notebook Jobs, procédez comme suit :

1. Installez Python 3. Pour plus d’informations, consultez [Installation de Python 3 et des packages Python](https://www.codecademy.com/article/install-python3).

1. Installez JupyterLab la version 4 ou supérieure. Pour plus de détails, consultez la [documentation du JupyterLab SDK](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html).

1. Installez le AWS CLI. Pour plus d'informations, consultez [Installation ou mise à jour de la dernière version d' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Installez deux ensembles d’autorisations. L'utilisateur IAM a besoin d'autorisations pour soumettre des tâches à l' SageMaker IA, et une fois soumises, la tâche du bloc-notes elle-même assume un rôle IAM qui nécessite des autorisations pour accéder aux ressources en fonction des tâches de la tâche.

   1. Si vous n’avez pas encore créé d’utilisateur IAM, consultez [Créer un utilisateur IAM dans votre compte AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

   1. Si vous n'avez pas encore créé votre rôle de tâche de bloc-notes, consultez [Création d'un rôle pour la délégation d'autorisations à un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

   1. Attachez les autorisations et la politique d'approbation nécessaires à attacher à votre utilisateur et à votre rôle. Pour step-by-step obtenir des instructions et des informations sur les autorisations, consultez[Installation de politiques et d'autorisations pour les environnements Jupyter locaux](scheduled-notebook-policies-other.md).

1. Générez des AWS informations d'identification pour votre nouvel utilisateur IAM et enregistrez-les dans le fichier d'informations d'identification (\$1/.aws/credentials) de votre environnement. JupyterLab Vous pouvez faire cela dans l'interface de ligne de commande à l'aide de la commande `aws configure`. Pour obtenir des instructions, consultez la section *Définition et affichage des paramètres de configuration à l’aide de commandes* dans [Paramètres des fichiers de configuration et d’informations d’identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

1. (facultatif) Par défaut, l'extension du planificateur utilise une image SageMaker AI Docker prédéfinie avec Python 2.0. Tout noyau autre que le noyau par défaut utilisé dans le bloc-notes doit être installé dans le conteneur. Si vous souhaitez exécuter votre bloc-notes dans un conteneur ou une image Docker, vous devez créer une image Amazon Elastic Container Registry (Amazon ECR). Pour en savoir plus sur la façon de transférer (push) une image Docker vers un référentiel Amazon ECR, consultez [Pousser une image Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

1. Ajoutez l' JupyterLab extension pour SageMaker Notebook Jobs. Vous pouvez l'ajouter à votre JupyterLab environnement à l'aide de la commande :`pip install amazon_sagemaker_jupyter_scheduler`. Vous devrez peut-être redémarrer votre serveur Jupyter avec la commande : `sudo systemctl restart jupyter-server`.

1.  JupyterLab Commencez par la commande : `jupyter lab`

1. Vérifiez que le widget Tâches de bloc-notes (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/notebook-schedule.png)) apparaît dans la barre des tâches de votre bloc-notes Jupyter.

# Configuration de politiques et d’autorisations pour Studio
<a name="scheduled-notebook-policies-studio"></a>

Vous devez installer les politiques et les autorisations appropriées avant de planifier votre première exécution de bloc-notes. Vous trouverez ci-dessous des instructions sur la configuration des autorisations suivantes :
+ Relations de confiance entre le rôle et l’exécution de la tâche
+ Autorisations IAM supplémentaires associées au rôle d'exécution des tâches
+ (facultatif) La politique AWS KMS d'autorisation pour utiliser une clé KMS personnalisée

**Important**  
Si votre AWS compte appartient à une organisation ayant mis en place des politiques de contrôle des services (SCP), vos autorisations effectives constituent l'intersection logique entre ce qui est autorisé par votre rôle IAM et les politiques utilisateur. SCPs Par exemple, si la politique SCP de votre organisation indique que vous ne pouvez accéder aux ressources que dans `us-east-1` et `us-west-1`, et que vos politiques vous autorisent uniquement à accéder aux ressources dans `us-west-1` et `us-west-2`, en fin de compte, vous pouvez accéder aux ressources uniquement dans `us-west-1`. Si vous souhaitez exercer toutes les autorisations autorisées dans votre rôle et vos politiques utilisateur, celles de votre organisation SCPs doivent accorder le même ensemble d'autorisations que vos propres politiques relatives aux utilisateurs et aux rôles IAM. Pour en savoir plus sur la manière de déterminer vos demandes autorisées, consultez [Identification d'une demande autorisée ou refusée dans un compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Relations d'approbation**

Pour modifier les relations d'approbation, procédez comme suit :

1. Ouvrez la [console IAM](https://console.aws.amazon.com/iam/).

1. Sélectionnez **Roles** (Rôles) dans le panneau de gauche.

1. Recherchez le rôle d'exécution de la tâche pour votre tâche de bloc-notes et choisissez le nom du rôle. 

1. Choisissez l’onglet **Relations de confiance**.

1. Choisissez **Modifier la politique d’approbation**.

1. Copiez-collez la politique suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "sagemaker.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "events.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Choisissez **Update Policy** (Mettre à jour la politique).

## Autorisations IAM supplémentaires
<a name="scheduled-notebook-policies-add"></a>

Il se peut que vous deviez inclure des autorisations IAM supplémentaires dans les situations suivantes :
+ Les rôles de vos tâches de bloc-notes et d'exécution Studio sont différents
+ Vous devez accéder aux ressources Amazon S3 via le point de terminaison d'un VPC S3
+ Vous souhaitez utiliser une clé KMS personnalisée pour chiffrer vos compartiments Amazon S3 d'entrée et de sortie

La discussion suivante fournit les politiques dont vous avez besoin pour chaque cas.

### Autorisations requises si les rôles de vos tâches de bloc-notes et d'exécution Studio sont différents
<a name="scheduled-notebook-policies-add-diffrole"></a>

L’extrait JSON suivant est un exemple de politique que vous devez ajouter aux rôles d’exécution Studio et de tâche de bloc-notes si vous n’utilisez pas le rôle d’exécution Studio comme rôle de tâche de bloc-notes. Passez en revue cette politique et modifiez-la si vous devez restreindre davantage les privilèges.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### Autorisations requises pour accéder aux ressources Amazon S3 via le point de terminaison d'un VPC S3
<a name="scheduled-notebook-policies-add-vpc"></a>

Si vous exécutez SageMaker Studio en mode VPC privé et que vous accédez à S3 via le point de terminaison VPC S3, vous pouvez ajouter des autorisations à la politique de point de terminaison VPC afin de contrôler quelles ressources S3 sont accessibles via le point de terminaison VPC. Ajoutez les autorisations suivantes à votre politique de point de terminaison de VPC. Vous pouvez modifier la politique si vous devez restreindre davantage les autorisations : par exemple, vous pouvez fournir une spécification plus précise pour le champ `Principal`.

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

Pour plus de détails sur la façon de configurer une politique de point de terminaison de VPC S3, consultez [Pour modifier la politique de point de terminaison de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3).

### Autorisations nécessaires pour utiliser une clé KMS personnalisée (facultatif)
<a name="scheduled-notebook-policies-add-kms"></a>

Par défaut, les compartiments Amazon S3 d'entrée et de sortie sont chiffrés à l'aide d'un chiffrement côté serveur, mais vous pouvez spécifier une clé KMS personnalisée pour chiffrer vos données dans le compartiment Amazon S3 de sortie et le volume de stockage attaché à la tâche de bloc-notes.

Si vous souhaitez utiliser une clé KMS personnalisée, joignez la politique suivante et fournissez votre propre ARN de clé KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

# Installation de politiques et d'autorisations pour les environnements Jupyter locaux
<a name="scheduled-notebook-policies-other"></a>

Vous devez configurer les autorisations et les politiques nécessaires pour planifier des tâches de bloc-notes dans un environnement Jupyter local. L'utilisateur IAM a besoin d'autorisations pour soumettre des tâches à l' SageMaker IA et le rôle IAM assumé par la tâche de bloc-notes elle-même nécessite des autorisations pour accéder aux ressources, en fonction des tâches de la tâche. Vous trouverez ci-dessous des instructions sur la configuration des autorisations et des politiques nécessaires.

Vous devez installer deux ensembles d’autorisations. Le schéma suivant montre la structure d’autorisation qui vous permet de planifier des tâches de bloc-notes dans un environnement Jupyter local. L'utilisateur IAM doit configurer les autorisations IAM afin de soumettre des tâches à SageMaker AI. Une fois que l’utilisateur a soumis la tâche de bloc-notes, la tâche elle-même endosse un rôle IAM qui nécessite des autorisations pour accéder aux ressources en fonction des tâches de la tâche.

![\[\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/notebook-jobs-permissions.png)


Les sections suivantes vous aident à installer les politiques et les autorisations nécessaires à la fois pour l’utilisateur IAM et pour le rôle d’exécution de tâche.

## Autorisations des utilisateurs IAM
<a name="scheduled-notebook-policies-other-user"></a>

**Autorisations pour soumettre des offres d'emploi à l' SageMaker IA**

Pour ajouter des autorisations pour soumettre des tâches, procédez comme suit :

1. Ouvrez la [console IAM](https://console.aws.amazon.com/iam/).

1. Sélectionnez **Utilisateurs** dans le panneau de gauche.

1. Trouvez l'utilisateur IAM pour votre tâche de bloc-notes et choisissez le nom d'utilisateur.

1. Choisissez **Ajouter des autorisations**, puis **Créer une politique en ligne** dans le menu déroulant.

1. Choisissez l’onglet **JSON**.

1. Copiez-collez la politique suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EventBridgeSchedule",
               "Effect": "Allow",
               "Action": [
                   "events:TagResource",
                   "events:DeleteRule",
                   "events:PutTargets",
                   "events:DescribeRule",
                   "events:EnableRule",
                   "events:PutRule",
                   "events:RemoveTargets",
                   "events:DisableRule"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "IAMPassrole",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "sagemaker.amazonaws.com",
                           "events.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "IAMListRoles",
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "*"
           },
           {
               "Sid": "S3ArtifactsAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:PutEncryptionConfiguration",
                   "s3:CreateBucket",
                   "s3:PutBucketVersioning",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetEncryptionConfiguration",
                   "s3:DeleteObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemaker-automated-execution-*"
               ]
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeTrainingJob",
                   "sagemaker:StopTrainingJob",
                   "sagemaker:DescribePipeline",
                   "sagemaker:CreateTrainingJob",
                   "sagemaker:DeletePipeline",
                   "sagemaker:CreatePipeline"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "AllowSearch",
               "Effect": "Allow",
               "Action": "sagemaker:Search",
               "Resource": "*"
           },
           {
               "Sid": "SagemakerTags",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListTags",
                   "sagemaker:AddTags"
               ],
               "Resource": [
                   "arn:aws:sagemaker:*:*:pipeline/*",
                   "arn:aws:sagemaker:*:*:space/*",
                   "arn:aws:sagemaker:*:*:training-job/*",
                   "arn:aws:sagemaker:*:*:user-profile/*"
               ]
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

**AWS KMS politique d'autorisation (facultatif)**

Par défaut, les compartiments Amazon S3 d'entrée et de sortie sont chiffrés à l'aide d'un chiffrement côté serveur, mais vous pouvez spécifier une clé KMS personnalisée pour chiffrer vos données dans le compartiment Amazon S3 de sortie et le volume de stockage attaché à la tâche de bloc-notes.

Si vous souhaitez utiliser une clé KMS personnalisée, répétez les instructions précédentes, attachez la politique suivante et fournissez votre propre ARN de clé KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

## Autorisations du rôle d'exécution de tâche
<a name="scheduled-notebook-policies-other-job"></a>

**Relations d'approbation**

Pour modifier les relations d'approbation du rôle d'exécution de tâche, procédez comme suit :

1. Ouvrez la [console IAM](https://console.aws.amazon.com/iam/).

1. Sélectionnez **Roles** (Rôles) dans le panneau de gauche.

1. Recherchez le rôle d'exécution de la tâche pour votre tâche de bloc-notes et choisissez le nom du rôle.

1. Choisissez l’onglet **Relations de confiance**.

1. Choisissez **Modifier la politique d’approbation**.

1. Copiez-collez la politique suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**Autorisations supplémentaires**

Une fois soumise, la tâche de bloc-notes a besoin d'autorisations pour accéder aux ressources. Les instructions suivantes vous montrent comment ajouter un ensemble minimal d'autorisations. Si nécessaire, ajoutez des autorisations supplémentaires en fonction des besoins de votre tâche de bloc-notes. Pour ajouter des autorisations à votre rôle d'exécution de tâche, procédez comme suit :

1. Ouvrez la [console IAM](https://console.aws.amazon.com/iam/).

1. Sélectionnez **Roles** (Rôles) dans le panneau de gauche.

1. Recherchez le rôle d’exécution de la tâche pour votre tâche de bloc-notes et choisissez le nom du rôle.

1. Choisissez **Ajouter des autorisations**, puis **Créer une politique en ligne** dans le menu déroulant.

1. Choisissez l’onglet **JSON**.

1. Copiez-collez la politique suivante :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassroleForJobCreation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "sagemaker.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "S3ForStoringArtifacts",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:StartPipelineExecution",
                   "sagemaker:CreateTrainingJob"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Ajoutez des autorisations aux autres ressources auxquelles votre tâche de bloc-notes accède.

1. Choisissez **Examiner une politique**.

1. Entrez un nom pour votre politique.

1. Choisissez **Create Policy** (Créer une politique).

# Emplacements possibles de création d’une tâche de bloc-notes
<a name="create-notebook-auto-run"></a>

Si vous souhaitez créer une tâche de bloc-notes, plusieurs options s’offrent à vous. Vous trouverez ci-dessous les options d' SageMaker intelligence artificielle qui vous permettent de créer une tâche de bloc-notes.

Vous pouvez créer une tâche dans votre JupyterLab bloc-notes dans l'interface utilisateur de Studio, ou vous pouvez créer une tâche par programmation avec le SDK SageMaker Python :
+ Si vous créez votre tâche de bloc-notes dans l’interface utilisateur de Studio, vous fournissez des informations sur l’image et le noyau, les configurations de sécurité et les variables ou scripts personnalisés, et votre tâche est planifiée. Pour plus d'informations sur la planification de votre travail à l'aide de SageMaker Notebook Jobs, consultez[Création d’une tâche de bloc-notes dans Studio](create-notebook-auto-run-studio.md).
+ Pour créer une tâche de bloc-notes avec le SDK SageMaker Python, vous devez créer un pipeline avec une étape Notebook Job et lancer une exécution à la demande ou éventuellement utiliser la fonctionnalité de planification de pipeline pour planifier les futures exécutions. Le SageMaker SDK vous donne la flexibilité de personnaliser votre pipeline : vous pouvez l'étendre à un flux de travail comportant plusieurs étapes de travail dans un bloc-notes. Comme vous créez à la fois une étape SageMaker Notebook Job et un pipeline, vous pouvez suivre l'état d'exécution de votre pipeline dans le tableau de bord des tâches SageMaker Notebook Jobs et également consulter le graphique de votre pipeline dans Studio. Pour plus de détails sur la planification de votre travail avec le SDK SageMaker Python et pour obtenir des liens vers des exemples de blocs-notes, consultez. [Exemple de création d'une tâche de bloc-notes avec le SDK SageMaker AI Python](create-notebook-auto-run-sdk.md)

# Exemple de création d'une tâche de bloc-notes avec le SDK SageMaker AI Python
<a name="create-notebook-auto-run-sdk"></a>

Pour exécuter un bloc-notes autonome à l'aide du SDK SageMaker Python, vous devez créer une étape Notebook Job, l'associer à un pipeline et utiliser les utilitaires fournis par Pipelines pour exécuter votre tâche à la demande ou éventuellement planifier une ou plusieurs tâches futures. Les sections suivantes décrivent les étapes de base pour créer une tâche de bloc-notes planifiée ou à la demande et suivre son exécution. En outre, reportez-vous à la discussion suivante si vous devez transmettre des paramètres à votre tâche de bloc-notes ou vous connecter à Amazon EMR dans votre bloc-notes. Dans ces cas, une préparation supplémentaire de votre bloc-notes Jupyter est requise. Vous pouvez également appliquer des valeurs par défaut à un sous-ensemble des arguments de `NotebookJobStep` afin de ne pas avoir à les spécifier chaque fois que vous créez une étape de tâche de bloc-notes.

Pour consulter des exemples de blocs-notes illustrant comment planifier des tâches de bloc-notes à l'aide du SDK SageMaker AI Python, consultez la section [Exemples de carnets de notes de blocs-notes](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

**Topics**
+ [Étapes de création d’une tâche de bloc-notes](#create-notebook-auto-run-overall)
+ [Visualisation de vos tâches de bloc-notes dans le tableau de bord de l’interface utilisateur de Studio](#create-notebook-auto-run-dash)
+ [Affichage de votre graphe de pipeline dans Studio](#create-notebook-auto-run-graph)
+ [Transmission de paramètres à votre bloc-notes](#create-notebook-auto-run-passparam)
+ [Connexion à cluster Amazon EMR dans votre bloc-notes d’entrée.](#create-notebook-auto-run-emr)
+ [Configuration des options par défaut](#create-notebook-auto-run-intdefaults)

## Étapes de création d’une tâche de bloc-notes
<a name="create-notebook-auto-run-overall"></a>

Vous pouvez créer une tâche de bloc-notes qui s’exécute immédiatement ou selon une planification. Les instructions suivantes décrivent les deux méthodes.

**Pour planifier une tâche de bloc-notes, effectuez les étapes élémentaires suivantes :**

1. Créez une instance `NotebookJobStep`. Pour plus de détails sur les `NotebookJobStep` paramètres, consultez [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep). Au minimum, vous pouvez fournir les arguments suivants comme indiqué dans l’extrait de code suivant :
**Important**  
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).

   ```
   notebook_job_step = NotebookJobStep(
       input_notebook=input-notebook,
       image_uri=image-uri,
       kernel_name=kernel-name
   )
   ```

1. Créez un pipeline avec votre étape `NotebookJobStep` comme étape unique, comme illustré dans l’extrait de code suivant :

   ```
   pipeline = Pipeline(
       name=pipeline-name,
       steps=[notebook_job_step],
       sagemaker_session=sagemaker-session,
   )
   ```

1. Exécutez le pipeline à la demande ou planifiez éventuellement les futures exécutions du pipeline. Pour lancer une exécution immédiate, utilisez la commande suivante :

   ```
   execution = pipeline.start(
       parameters={...}
   )
   ```

   Vous pouvez éventuellement planifier une seule future exécution de pipeline ou plusieurs exécutions à un intervalle prédéterminé. Vous spécifiez votre planification dans `PipelineSchedule`, puis transmettez l’objet de planification à votre pipeline avec `put_triggers`. Pour plus d’informations sur la planification d’un pipeline, consultez [Planifier un pipeline avec le SDK SageMaker Python](pipeline-eventbridge.md#build-and-manage-scheduling).

   L’exemple suivant planifie l’exécution de votre pipeline une seule fois le 12 décembre 2023 à 10:31:32 UTC.

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) 
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

   L’exemple suivant planifie l’exécution de votre pipeline à 10 h 15 UTC le dernier vendredi de chaque mois, pendant les années 2022 et 2023. Pour plus de détails sur la planification basée sur Cron, consultez [Planifications basées sur Cron](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#cron-based).

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       cron="15 10 ? * 6L 2022-2023"
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

1. (Facultatif) Consultez les tâches de votre bloc-notes dans le tableau de bord des tâches du SageMaker bloc-notes. Les valeurs que vous fournissez pour l’argument `tags` de votre étape de tâche de bloc-notes contrôlent la manière dont l’interface utilisateur de Studio capture et affiche la tâche. Pour de plus amples informations, veuillez consulter [Visualisation de vos tâches de bloc-notes dans le tableau de bord de l’interface utilisateur de Studio](#create-notebook-auto-run-dash).

## Visualisation de vos tâches de bloc-notes dans le tableau de bord de l’interface utilisateur de Studio
<a name="create-notebook-auto-run-dash"></a>

Les tâches de bloc-notes que vous créez sous forme d’étapes de pipeline apparaissent dans le tableau de bord des tâches de bloc-notes de Studio si vous spécifiez certaines balises.

**Note**  
Seules les tâches de bloc-notes créées dans Studio ou dans des JupyterLab environnements locaux créent des définitions de tâches. Par conséquent, si vous créez votre tâche de bloc-notes avec le SDK SageMaker Python, les définitions de tâches ne s'affichent pas dans le tableau de bord des tâches de bloc-notes. Vous pouvez toutefois visualiser vos tâches de bloc-notes comme décrit dans [Afficher les tâches de bloc-notes](view-notebook-jobs.md). 

Vous pouvez contrôler quels membres de l’équipe peuvent visualiser vos tâches de bloc-notes à l’aide des balises suivantes :
+ Pour afficher le bloc-notes sur tous les profils utilisateur ou [espaces](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html) d’un domaine, ajoutez la balise de domaine avec votre nom de domaine. Voici un exemple :
  + clé : `sagemaker:domain-name`, valeur : `d-abcdefghij5k`
+ Pour afficher la tâche de bloc-notes sur un certain profil utilisateur d’un domaine, ajoutez à la fois le profil utilisateur et les balises de domaine. Voici un exemple de balise de profil utilisateur :
  + clé : `sagemaker:user-profile-name`, valeur : `studio-user`
+ Pour afficher la tâche de bloc-notes dans un [espace](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html), ajoutez à la fois les balises d’espace et de domaine. Voici un exemple de balise d’espace :
  + clé : `sagemaker:shared-space-name`, valeur : `my-space-name`
+ Si vous n’attachez aucune balise de domaine, de profil utilisateur ni d’espace, l’interface utilisateur de Studio n’affiche pas la tâche de bloc-notes créée par l’étape du pipeline. Dans ce cas, vous pouvez visualiser la tâche d’entraînement sous-jacente dans la console des tâches d’entraînement ou vous pouvez visualiser le statut dans la [liste des exécutions de pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-studio-view-execution.html).

Une fois que vous avez configuré les balises nécessaires pour visualiser vos tâches dans le tableau de bord, consultez [Afficher les tâches de bloc-notes](view-notebook-jobs.md) pour obtenir des instructions de visualisation de vos tâches et de téléchargement des sorties.

## Affichage de votre graphe de pipeline dans Studio
<a name="create-notebook-auto-run-graph"></a>

Comme l’étape de votre tâche de bloc-notes fait partie d’un pipeline, vous pouvez visualiser le graphe (DAG) du pipeline dans Studio. Dans le graphe du pipeline, vous pouvez afficher le statut de l’exécution du pipeline et suivre sa traçabilité. Pour en savoir plus, consultez [Affichage des détails d’une exécution de pipeline](pipelines-studio-view-execution.md).

## Transmission de paramètres à votre bloc-notes
<a name="create-notebook-auto-run-passparam"></a>

Si vous souhaitez transmettre des paramètres à votre tâche de bloc-notes (en utilisant l’argument `parameters` de `NotebookJobStep`), vous devez préparer votre bloc-notes d’entrée pour recevoir les paramètres. 

L’exécuteur de tâches de bloc-notes basé sur Papermill recherche une cellule Jupyter balisée avec la balise `parameters` et applique les nouveaux paramètres ou les remplacements de paramètres immédiatement après cette cellule. Pour en savoir plus, consultez [Paramétrer votre bloc-notes](notebook-auto-run-troubleshoot-override.md). 

Une fois cette étape terminée, transmettez vos paramètres à votre `NotebookJobStep`, comme indiqué dans l’exemple suivant :

```
notebook_job_parameters = {
    "company": "Amazon"
}

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input-notebook,
    parameters=notebook_job_parameters,
    ...
)
```

## Connexion à cluster Amazon EMR dans votre bloc-notes d’entrée.
<a name="create-notebook-auto-run-emr"></a>

Si vous vous connectez à un cluster Amazon EMR à partir de votre bloc-notes Jupyter dans Studio, vous devrez peut-être modifier davantage votre bloc-notes Jupyter. Consultez [Connexion à un cluster Amazon EMR à partir de votre bloc-notes](scheduled-notebook-connect-emr.md) si vous devez effectuer l’une des tâches suivantes dans votre bloc-notes :
+ **Transmission de paramètres dans votre commande de connexion Amazon EMR.** Studio utilise Papermill pour exécuter des blocs-notes. Dans SparkMagic les noyaux, les paramètres que vous transmettez à votre commande de connexion Amazon EMR peuvent ne pas fonctionner comme prévu en raison de la manière dont Papermill transmet les informations. SparkMagic
+ **Transmission des informations d’identification utilisateur aux clusters Amazon EMR authentifiés par Kerberos, LDAP ou HTTP Basic Auth**. Vous devez transmettre les informations d’identification de l’utilisateur via AWS Secrets Manager.

## Configuration des options par défaut
<a name="create-notebook-auto-run-intdefaults"></a>

Le SageMaker SDK vous permet de définir des valeurs par défaut pour un sous-ensemble de paramètres afin que vous n'ayez pas à les spécifier à chaque fois que vous créez une instance. `NotebookJobStep` Ces paramètres sont `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` et `security_group_ids`. Utilisez le fichier de configuration SageMaker AI pour définir les valeurs par défaut de l'étape. Pour plus d'informations sur le fichier de configuration SageMaker AI, consultez [Configuration et utilisation des valeurs par défaut avec le SDK SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). .

Pour configurer les valeurs par défaut des tâches de bloc-notes, appliquez vos nouvelles valeurs par défaut à la section des tâches de bloc-notes du fichier de configuration, comme indiqué dans l’extrait de code suivant :

```
SageMaker:
  PythonSDK:
    Modules:
      NotebookJob:
        RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
        S3RootUri: 's3://amzn-s3-demo-bucket/my-project'
        S3KmsKeyId: 's3kmskeyid'
        VolumeKmsKeyId: 'volumekmskeyid1'
        VpcConfig:
          SecurityGroupIds:
            - 'sg123'
          Subnets:
            - 'subnet-1234'
```

# Création d’une tâche de bloc-notes dans Studio
<a name="create-notebook-auto-run-studio"></a>

**Note**  
Le planificateur de blocs-notes est conçu à partir des services Amazon EventBridge, SageMaker Training et Pipelines. Si vos tâches de bloc-notes échouent, des erreurs liées à ces services peuvent s’afficher. Vous trouverez ci-après des informations sur la manière de créer une tâche de bloc-notes dans l’interface utilisateur de Studio.

SageMaker Notebook Jobs vous fournit les outils nécessaires pour créer et gérer vos tâches de bloc-notes non interactives à l'aide du widget Notebook Jobs. Vous pouvez créer des tâches, consulter celles que vous avez créées et suspendre, arrêter ou reprendre des tâches existantes. Vous pouvez également modifier les planifications de bloc-notes.

Lorsque vous créez votre tâche de bloc-notes planifiée avec le widget, le planificateur tente de déduire une sélection d’options par défaut et remplit automatiquement le formulaire pour vous aider à démarrer rapidement. Si vous utilisez Studio, vous pouvez au moins soumettre une tâche à la demande sans définir d’options. Vous pouvez également soumettre une définition de tâche de bloc-notes (planifiée) en fournissant uniquement les informations de planification spécifiques à l'heure. Vous pouvez toutefois personnaliser d’autres champs si votre tâche planifiée nécessite des paramètres spécialisés. Si vous exécutez un bloc-notes Jupyter local, l’extension du planificateur fournit une fonctionnalité vous permettant de spécifier vos propres valeurs par défaut (pour un sous-ensemble d’options) pour ne pas avoir à insérer manuellement les mêmes valeurs à chaque fois.

Lorsque vous créez une tâche de bloc-notes, vous pouvez inclure des fichiers supplémentaires tels que des jeux de données, des images et des scripts locaux. Pour ce faire, choisissez **Exécuter la tâche avec le dossier d’entrée**. La tâche de bloc-notes aura désormais accès à tous les fichiers situés dans le dossier du fichier d’entrée. Pendant que la tâche de bloc-notes s’exécute, la structure des fichiers du répertoire reste inchangée.

Pour planifier une tâche de bloc-notes, procédez comme suit.

1. Ouvrez le formulaire **Créer une tâche**.

   Dans JupyterLab les environnements locaux, cliquez sur l'icône **Créer une tâche de bloc-notes** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/notebook-schedule.png)) dans la barre des tâches. Si vous ne voyez pas cette icône, suivez les instructions fournies dans [Guide d’installation](scheduled-notebook-installation.md) pour l'installer.

   Dans Studio, ouvrez le formulaire de l'une des deux façons suivantes :
   + Utilisation du **File Browser** (Navigateur de fichiers)

     1. Dans le **File Browser** (Navigateur de fichiers) du panneau de gauche, cliquez avec le bouton droit sur le bloc-notes que vous souhaitez exécuter en tant que tâche planifiée.

     1. Choisissez **Create Notebook Job** (Créer une tâche de bloc-notes).
   + Dans le bloc-notes Studio
     + Dans le bloc-notes Studio que vous souhaitez exécuter en tant que tâche planifiée, choisissez l'icône **Créer une tâche de bloc-notes** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/notebook-schedule.png)) dans la barre d'outils Studio.

1. Remplissez le formulaire contextuel. Le formulaire contient les champs suivants :
   + **Job name** (Nom de la tâche) : nom descriptif que vous spécifiez pour votre tâche.
   + **Fichier d'entrée** : nom du bloc-notes dont vous planifiez l'exécution en mode non interactif.
   + **Type de calcul** : type d’instance Amazon EC2 dans laquelle vous souhaitez exécuter votre bloc-notes.
   + **Paramètres** : paramètres personnalisés que vous pouvez éventuellement spécifier en tant qu’entrées dans votre bloc-notes. Pour utiliser cette fonctionnalité, vous pouvez éventuellement baliser une cellule spécifique de votre bloc-notes Jupyter avec la balise **parameters** pour contrôler où vos paramètres sont appliqués. Pour en savoir plus, consultez [Paramétrer votre bloc-notes](notebook-auto-run-troubleshoot-override.md).
   + (Facultatif) **Exécuter la tâche avec le dossier d’entrée** : si cette option est sélectionnée, la tâche planifiée aura accès à tous les fichiers présents dans le même dossier que le **fichier d’entrée**.
   + **Options supplémentaires** : vous pouvez spécifier des personnalisations supplémentaires pour votre tâche. Par exemple, vous pouvez spécifier une image ou un noyau, des dossiers d'entrée et de sortie, des options de relance de tâche et de délai d'expiration, des détails de chiffrement et des scripts d'initialisation personnalisés. Pour obtenir la liste complète des personnalisations que vous pouvez appliquer, consultez [Options disponibles](create-notebook-auto-execution-advanced.md).

1. Planifiez votre travail. Vous pouvez exécuter votre bloc-notes à la demande ou selon une planification fixe.
   + Pour exécuter le bloc-notes à la demande, effectuez les étapes suivantes :
     + Sélectionnez **Run Now** (Exécuter maintenant).
     + Choisissez **Créer**.
     + L'onglet **Notebook Jobs** (Tâches de bloc-notes) apparaît. Sélectionnez **Reload** (Recharger) pour charger votre tâche dans le tableau de bord.
   + Pour exécuter le bloc-notes selon un calendrier fixe, effectuez les étapes suivantes :
     + Sélectionnez **Run on a schedule** (Exécuter selon un calendrier).
     + Sélectionnez la liste déroulante **Interval** (Intervalle) et sélectionnez un intervalle. Les intervalles vont de toutes les minutes à une fois par mois. Vous pouvez également sélectionner **Custom schedule** (Planification personnalisée).
     + En fonction de l'intervalle que vous choisissez, des champs supplémentaires s'affichent pour vous aider à préciser le jour et l'heure souhaités pour l'exécution. Par exemple, si vous sélectionnez **Day** (Jour) pour une exécution quotidienne, un champ supplémentaire s'affiche pour vous permettre de spécifier l'heure souhaitée. Notez que toutes les heures que vous spécifiez sont au format UTC. Notez également que si vous choisissez un intervalle court, par exemple une minute, vos tâches se chevauchent si la tâche précédente n'est pas terminée lorsque la tâche suivante commence.

       Si vous sélectionnez un calendrier personnalisé, vous utilisez la syntaxe cron dans la zone d'expression pour spécifier la date et l'heure exactes de votre exécution. La syntaxe cron est une liste de chiffres séparés par des espaces, chacun représentant une unité de temps comprise entre les secondes et les années. Pour obtenir de l'aide concernant la syntaxe cron, vous pouvez sélectionner **Get help with cron syntax** (Obtenir de l'aide sur la syntaxe cron) dans la zone d'expression.
     + Choisissez **Créer**.
     + L'onglet **Notebook Jobs Definitions** (Définitions de tâches de bloc-notes) apparaît. Sélectionnez **Reload** (Recharger) pour charger votre définition tâche dans le tableau de bord.

# Configurer les options par défaut pour les blocs-notes locaux
<a name="create-notebook-auto-execution-advanced-default"></a>

**Important**  
Depuis le 30 novembre 2023, l'expérience Amazon SageMaker Studio précédente s'appelle désormais Amazon SageMaker Studio Classic. La section suivante est spécifique à l’utilisation de l’application Studio Classic. Pour en savoir plus sur l’utilisation de l’expérience Studio mise à jour, consultez [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic est toujours maintenu pour les charges de travail existantes mais n'est plus disponible pour l'intégration. Vous pouvez uniquement arrêter ou supprimer des applications Studio Classic existantes et vous ne pouvez pas en créer de nouvelles. Nous vous recommandons de [migrer votre charge de travail vers la nouvelle expérience Studio](studio-updated-migrate.md).

Vous pouvez configurer les options par défaut lorsque vous créez une tâche de bloc-notes. Cela peut vous faire gagner du temps si vous envisagez de créer plusieurs tâches de bloc-notes avec des options différentes de celles proposées par défaut. Vous trouverez ci-dessous des informations sur la façon de configurer les options par défaut pour les blocs-notes locaux.

Si vous devez saisir (ou coller) manuellement des valeurs personnalisées dans le formulaire **Créer une tâche**, vous pouvez stocker de nouvelles valeurs par défaut et l’extension du planificateur insère vos nouvelles valeurs chaque fois que vous créez une nouvelle définition de tâche. Cette fonctionnalité est disponible pour les options suivantes :
+ **Role ARN** (ARN de rôle)
+ **Dossier d'entrée S3**
+ **Dossier de sortie S3**
+ **Clé KMS de chiffrement de sortie** (si vous activez **Configurer le chiffrement des tâches**)
+ **Clé KMS de chiffrement du volume de l’instance de tâche** (si vous activez **Configurer le chiffrement des tâches**)

Cette fonctionnalité vous permet de gagner du temps si vous insérez des valeurs différentes des valeurs par défaut fournies et que vous continuez à utiliser ces valeurs pour les futures exécutions de tâches. Les paramètres utilisateur que vous avez choisis sont stockés sur la machine qui exécute votre JupyterLab serveur et sont récupérés à l'aide de l'API native. Si vous fournissez de nouvelles valeurs par défaut pour une ou plusieurs options, mais pas pour les cinq, les valeurs par défaut précédentes sont utilisées pour celles que vous ne personnalisez pas.

Les instructions suivantes vous montrent comment prévisualiser les valeurs par défaut existantes, définir de nouvelles valeurs par défaut et réinitialiser vos valeurs par défaut pour vos tâches de bloc-notes.

**Pour prévisualiser les valeurs par défaut existantes pour vos tâches de bloc-notes, procédez comme suit :**

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

1. Dans le **File Browser** (Navigateur de fichiers) du panneau de gauche, cliquez avec le bouton droit sur le bloc-notes que vous souhaitez exécuter en tant que tâche planifiée.

1. Choisissez **Create Notebook Job** (Créer une tâche de bloc-notes).

1. Choisissez **Options supplémentaires** pour développer l’onglet des paramètres des tâches de bloc-notes. Vous pouvez visualiser ici les paramètres par défaut. 

**Pour définir de nouvelles valeurs par défaut pour vos futures tâches de bloc-notes, procédez comme suit :**

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

1. Dans le menu supérieur de Studio Classic, choisissez **Paramètres**, puis choisissez **Éditeur de paramètres avancés**.

1. **Choisissez **Amazon SageMaker Scheduler** dans la liste ci-dessous Paramètres.** Il est possible qu’il soit déjà ouvert par défaut.

1. Vous pouvez mettre à jour les paramètres par défaut directement dans cette page d’interface utilisateur ou à l’aide de l’éditeur JSON.
   + Dans l’interface utilisateur, vous pouvez insérer de nouvelles valeurs pour **ARN de rôle**, **Dossier d’entrée S3**, **Dossier de sortie S3**, **Clé KMS de chiffrement de sortie** ou **Clé KMS de chiffrement du volume de l’instance de tâche**. Si vous modifiez ces valeurs, vous verrez les nouvelles valeurs par défaut pour ces champs lors de la création de votre prochaine tâche de bloc-notes sous **Options supplémentaires**.
   + (Facultatif) Pour mettre à jour les paramètres par défaut de l’utilisateur à l’aide de l’**Éditeur de paramètres JSON**, procédez comme suit :

     1. Dans le coin supérieur droit, choisissez **Éditeur de paramètres JSON**.

     1. Dans la barre latérale gauche des **paramètres**, choisissez **Amazon SageMaker AI Scheduler**. Il est possible qu’il soit déjà ouvert par défaut.

        Vous pouvez consulter vos valeurs par défaut actuelles dans le panneau **Préférences utilisateur**.

        Vous pouvez consulter vos valeurs par défaut du système dans le panneau **Paramètres par défaut du système**.

     1. Pour mettre à jour vos valeurs par défaut, copiez et collez l’extrait JSON à partir du panneau **Paramètres par défaut du système** vers le panneau **Préférences utilisateur**, puis mettez à jour les champs.

     1. Si vous avez mis à jour les valeurs par défaut, choisissez l’icône **Enregistrer les paramètres utilisateur** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/Notebook_save.png)) dans le coin supérieur droit. La fermeture de l’éditeur n’enregistre pas les modifications.

**Si vous avez précédemment modifié les valeurs par défaut définies par l’utilisateur et que vous souhaitez maintenant les réinitialiser, procédez comme suit :**

1. Dans le menu supérieur de Studio Classic, choisissez **Paramètres**, puis choisissez **Éditeur de paramètres avancés**.

1. **Choisissez **Amazon SageMaker Scheduler** dans la liste ci-dessous Paramètres.** Il est possible qu’il soit déjà ouvert par défaut.

1. Vous pouvez restaurer les valeurs par défaut en utilisant directement cette page d’interface utilisateur ou en utilisant l’éditeur JSON.
   + Dans l’interface utilisateur, vous pouvez choisir **Restaurer les valeurs par défaut** dans le coin supérieur droit. Vos valeurs par défaut sont restaurées en chaînes vides. Cette option ne s’affiche que si vous avez déjà modifié vos valeurs par défaut.
   + (Facultatif) Pour restaurer les paramètres par défaut à l’aide de l’**Éditeur de paramètres JSON**, procédez comme suit :

     1. Dans le coin supérieur droit, choisissez **Éditeur de paramètres JSON**.

     1. Dans la barre latérale gauche des **paramètres**, choisissez **Amazon SageMaker AI Scheduler**. Il est possible qu’il soit déjà ouvert par défaut.

        Vous pouvez consulter vos valeurs par défaut actuelles dans le panneau **Préférences utilisateur**.

        Vous pouvez consulter vos valeurs par défaut du système dans le panneau **Paramètres par défaut du système**.

     1. Pour restaurer vos paramètres par défaut actuels, copiez le contenu du panneau **Paramètres par défaut du système** vers le panneau **Préférences utilisateur**.

     1. Choisissez l’icône **Enregistrer les paramètres utilisateur** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/Notebook_save.png)) dans le coin supérieur droit. La fermeture de l’éditeur n’enregistre pas les modifications.

# Flux de travail des tâches de bloc-notes
<a name="create-notebook-auto-run-dag"></a>

Étant donné qu’une tâche de bloc-notes exécute votre code personnalisé, vous pouvez créer un pipeline incluant une ou plusieurs étapes de tâche de bloc-notes. Les flux de travail ML contiennent souvent plusieurs étapes, telles qu’une étape de traitement pour prétraiter les données, une étape d’entraînement pour générer votre modèle et une étape d’évaluation des modèles, entre autres. L’une des utilisations possibles des tâches de bloc-notes est de gérer le prétraitement. Vous pouvez avoir un bloc-notes qui effectue la transformation ou l’ingestion des données, une étape EMR qui effectue le nettoyage des données et une autre tâche de bloc-notes qui effectue la caractérisation de vos entrées avant de lancer une étape d’entraînement. Une tâche de bloc-notes peut nécessiter des informations issues des étapes précédentes du pipeline ou de la personnalisation spécifiée par l’utilisateur sous la forme de paramètres dans le bloc-notes d’entrée. Pour des exemples illustrant comment transmettre des variables et des paramètres d’environnement à votre bloc-notes et comment récupérer des informations à partir des étapes précédentes, consultez [Transmission d’informations vers et depuis votre étape de bloc-notes](create-notebook-auto-run-dag-seq.md).

Dans un autre cas d’utilisation, l’une de vos tâches de bloc-notes peut appeler un autre bloc-notes pour effectuer certaines tâches pendant l’exécution de votre bloc-notes. Dans ce scénario, vous devez spécifier ces blocs-notes sources en tant que dépendances avec votre étape de tâche de bloc-notes. Pour en savoir plus sur la manière d’appeler un autre bloc-notes, consultez [Invocation d’un autre bloc-notes dans votre tâche de bloc-notes](create-notebook-auto-run-dag-call.md).

Pour consulter des exemples de blocs-notes illustrant comment planifier des tâches de bloc-notes à l'aide du SDK SageMaker AI Python, consultez la section [Exemples de carnets de notes de blocs-notes](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

# Transmission d’informations vers et depuis votre étape de bloc-notes
<a name="create-notebook-auto-run-dag-seq"></a>

Les sections suivantes décrivent les méthodes permettant de transmettre des informations à votre bloc-notes sous forme de variables et de paramètres d’environnement.

## Transmission de variables d’environnement
<a name="create-notebook-auto-run-dag-seq-env-var"></a>

Transmettez des variables d’environnement sous forme de dictionnaire à l’argument `environment_variable` de votre `NotebookJobStep`, comme indiqué dans l’exemple suivant :

```
environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000}

notebook_job_step = NotebookJobStep(
    ...
    environment_variables=environment_variables,
    ...
)
```

Vous pouvez utiliser les variables d’environnement dans le bloc-notes en utilisant `os.getenv()`, comme illustré dans l’exemple suivant :

```
# inside your notebook
import os
print(f"ParentNotebook: env_key={os.getenv('env_key')}")
```

## Transmission de paramètres
<a name="create-notebook-auto-run-dag-seq-param"></a>

Lorsque vous transmettez des paramètres à la première étape de tâche de bloc-notes dans votre instance `NotebookJobStep`, vous pouvez éventuellement vouloir baliser une cellule dans votre bloc-notes Jupyter pour indiquer où appliquer les nouveaux paramètres ou les remplacements de paramètres. Pour obtenir des instructions de balisage d’une cellule dans votre bloc-notes Jupyter, consultez [Paramétrer votre bloc-notes](notebook-auto-run-troubleshoot-override.md).

Vous transmettez les paramètres via le paramètre `parameters` de l’étape de tâche de bloc-notes, comme illustré dans l’extrait de code suivant :

```
notebook_job_parameters = {
    "company": "Amazon",
}

notebook_job_step = NotebookJobStep(
    ...
    parameters=notebook_job_parameters,
    ...
)
```

Dans votre bloc-notes d’entrée, vos paramètres sont appliqués après la cellule balisée par `parameters` ou au début du bloc-notes si aucune cellule n’est balisée.

```
# this cell is in your input notebook and is tagged with 'parameters'
# your parameters and parameter overrides are applied after this cell
company='default'
```

```
# in this cell, your parameters are applied
# prints "company is Amazon"
print(f'company is {company}')
```

## Extraction d’informations depuis une étape précédente
<a name="create-notebook-auto-run-dag-seq-interstep"></a>

La discussion suivante explique comment extraire des données d’une étape précédente pour les transmettre à votre étape de tâche de bloc-notes.

**Utilisation de l’attribut `properties`**

Vous pouvez utiliser les propriétés suivantes avec l’attribut `properties` de l’étape précédente :
+ `ComputingJobName` : nom de la tâche d’entraînement
+ `ComputingJobStatus` : statut de la tâche d’entraînement
+ `NotebookJobInputLocation` : emplacement Amazon S3 d’entrée
+ `NotebookJobOutputLocationPrefix` : chemin vers les résultats de votre tâche d’entraînement, plus précisément vers `{NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz`, contenant les résultats
+ `InputNotebookName` : nom de fichier du bloc-notes en entrée
+ `OutputNotebookName` : nom de fichier du bloc-notes de sortie (qui n’existe peut-être pas dans le dossier de sortie de la tâche d’entraînement en cas d’échec de la tâche)

L’extrait de code suivant montre comment extraire des paramètres de l’attribut properties.

```
notebook_job_step2 = NotebookJobStep(
    ....
    parameters={
        "step1_JobName": notebook_job_step1.properties.ComputingJobName,
        "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus,
        "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation,
        "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix,
    }
```

**Utilisez JsonGet**

Si vous souhaitez transmettre des paramètres autres que ceux mentionnés précédemment et que les sorties JSON de votre étape précédente se trouvent dans Amazon S3, utilisez `JsonGet`. `JsonGet` est un mécanisme général capable d’extraire directement des données de fichiers JSON dans Amazon S3.

Pour extraire des fichiers JSON dans Amazon S3 avec `JsonGet`, procédez comme suit :

1. Chargez votre fichier JSON sur Amazon S3. Si vos données sont déjà chargées sur Amazon S3, ignorez cette étape. L’exemple suivant montre le chargement d’un fichier JSON sur Amazon S3.

   ```
   import json
   from sagemaker.s3 import S3Uploader
   
   output = {
       "key1": "value1", 
       "key2": [0,5,10]
   }
               
   json_output = json.dumps(output)
   
   with open("notebook_job_params.json", "w") as file:
       file.write(json_output)
   
   S3Uploader.upload(
       local_path="notebook_job_params.json",
       desired_s3_uri="s3://path/to/bucket"
   )
   ```

1. Indiquez votre URI S3 et le chemin JSON vers la valeur que vous souhaitez extraire. Dans l’exemple suivant, `JsonGet` renvoie un objet représentant l’index 2 de la valeur associée à la clé `key2` (`10`).

   ```
   NotebookJobStep(
       ....
       parameters={
           # the key job_key1 returns an object representing the value 10
           "job_key1": JsonGet(
               s3_uri=Join(on="/", values=["s3:/", ..]),
               json_path="key2[2]" # value to reference in that json file
           ), 
           "job_key2": "Amazon" 
       }
   )
   ```

# Invocation d’un autre bloc-notes dans votre tâche de bloc-notes
<a name="create-notebook-auto-run-dag-call"></a>

Vous pouvez configurer un pipeline dans lequel une tâche de bloc-notes appelle un autre bloc-notes. Voici un exemple de pipeline comportant une étape de tâche de bloc-notes dans laquelle le bloc-notes appelle deux autres blocs-notes. Le bloc-notes d’entrée contient les lignes suivantes :

```
%run 'subfolder/notebook_to_call_in_subfolder.ipynb'
%run 'notebook_to_call.ipynb'
```

Transmettez ces blocs-notes dans vos instances `NotebookJobStep` avec `additional_dependencies`, comme indiqué dans l’extrait de code suivant. Notez que les chemins fournis pour les blocs-notes dans `additional_dependencies` sont fournis à partir de l’emplacement racine. Pour plus d'informations sur la manière dont l' SageMaker IA télécharge vos fichiers et dossiers dépendants sur Amazon S3 afin que vous puissiez fournir correctement les chemins d'accès à vos dépendances, consultez la description `additional_dependencies` dans [NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep).

```
input_notebook = "inputs/input_notebook.ipynb"
simple_notebook_path = "inputs/notebook_to_call.ipynb"
folder_with_sub_notebook = "inputs/subfolder"

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input_notebook,
    additional_dependencies=[simple_notebook_path, folder_with_sub_notebook],
    tags=tags,
)
```

# Options disponibles
<a name="create-notebook-auto-execution-advanced"></a>

Le tableau suivant présente toutes les options disponibles que vous pouvez utiliser pour personnaliser votre tâche de bloc-notes, que vous exécutiez votre tâche de bloc-notes dans Studio, dans un environnement Jupyter local ou que vous utilisiez le SDK SageMaker Python. Le tableau inclut le type d'option personnalisée, une description, des instructions supplémentaires sur la façon d'utiliser l'option, un nom de champ pour l'option dans Studio (si disponible) et le nom du paramètre pour l'étape de travail du bloc-notes dans le SDK SageMaker Python (si disponible).

Pour certaines options, vous pouvez également prédéfinir des valeurs par défaut personnalisées afin de ne pas avoir à les spécifier chaque fois que vous configurez une tâche de bloc-notes. Pour Studio, ces options sont **Rôle**, **Dossier d’entrée**, **Dossier de sortie** et **ID de clé KMS**, et sont spécifiées dans le tableau suivant. Si vous prédéfinissez des valeurs par défaut personnalisées pour ces options, ces champs sont préremplis dans le formulaire **Créer une tâche** lorsque vous créez votre tâche de bloc-notes. Pour plus de détails sur la création de paramètres par défaut personnalisés dans Studio et les environnements Jupyter locaux, consultez [Configurer les options par défaut pour les blocs-notes locaux](create-notebook-auto-execution-advanced-default.md).

Le SageMaker SDK vous donne également la possibilité de définir des valeurs par défaut intelligentes afin que vous n'ayez pas à spécifier ces paramètres lorsque vous créez un. `NotebookJobStep` Ces paramètres sont `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` et `security_group_ids`, et ils sont spécifiés dans le tableau suivant. Pour en savoir plus sur la façon de définir des valeurs par défaut intelligentes, consultez [Configuration des options par défaut](create-notebook-auto-run-sdk.md#create-notebook-auto-run-intdefaults).


| Option personnalisée | Description | Directive spécifique à Studio | Directive environnementale locale de Jupyter | SageMaker Directive du SDK Python | 
| --- | --- | --- | --- | --- | 
| Nom du job | Le nom de votre tâche, tel qu’il doit apparaître dans le tableau de bord des tâches de bloc-notes. | Champ Nom de la tâche. | Identique à Studio. | Paramètre notebook\$1job\$1name. La valeur par défaut est None . | 
| Image | Image de conteneur utilisée pour exécuter le bloc-notes de manière non interactive sur le type de calcul choisi. | Champ Image. Ce champ contient par défaut l’image actuelle de votre bloc-notes. Remplacez la valeur par défaut de ce champ par une valeur personnalisée, si nécessaire. Si Studio ne peut pas déduire cette valeur, le formulaire affiche une erreur de validation vous demandant de la spécifier. Cette image peut être une image personnalisée, une [bring-your-own image](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html) ou une SageMaker image Amazon disponible. Pour obtenir la liste des SageMaker images disponibles prises en charge par le planificateur de bloc-notes, consultez. [Amazon SageMaker Images disponibles pour une utilisation avec les blocs-notes Studio Classic](notebooks-available-images.md) | Champ Image. Ce champ nécessite un URI ECR d’une image Docker capable d’exécuter le bloc-notes fourni sur le type de calcul sélectionné. Par défaut, l'extension du planificateur utilise une image SageMaker AI Docker prédéfinie, basée sur Python 2.0. Il s'agit de l'image officielle de Python 3.8 provenant de DockerHub boto3 et du noyau Python 3. AWS CLI Vous pouvez également fournir un URI ECR quelconque conforme à la spécification d'image personnalisée du bloc-notes. Pour en savoir plus, consultez [Spécifications SageMaker d'image personnalisées pour Amazon SageMaker Studio Classic](studio-byoi-specs.md). Cette image doit contenir tous les noyaux et bibliothèques nécessaires à l’exécution du bloc-notes. | Obligatoire. Paramètre image\$1uri. Emplacement URI d’une image Docker sur ECR. Vous pouvez utiliser des images de SageMaker distribution spécifiques ou une image personnalisée basée sur ces images, ou votre propre image préinstallée avec des dépendances entre les tâches du bloc-notes répondant à des exigences supplémentaires. Pour en savoir plus, consultez [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). | 
| Type d’instance | Type d’instance EC2 à utiliser pour exécuter la tâche de bloc-notes. La tâche de bloc-notes utilise une tâche d' SageMaker entraînement comme couche informatique. Le type d'instance spécifié doit donc être un type d'instance compatible avec la SageMaker formation. | Champ Type de calcul. La valeur par défaut est ml.m5.large . | Identique à Studio. | Paramètre instance\$1type. La valeur par défaut est ml.m5.large . | 
| Noyau | Le noyau Jupyter utilisé pour exécuter la tâche du bloc-notes. | Champ Noyau. Ce champ contient par défaut le noyau actuel de votre bloc-notes. Remplacez la valeur par défaut de ce champ par une valeur personnalisée, si nécessaire. Si Studio ne peut pas déduire cette valeur, le formulaire affiche une erreur de validation vous demandant de la spécifier. | Champ Noyau. Ce noyau doit être présent dans l’image et respecter les spécifications du noyau Jupyter. Ce champ correspond par défaut au noyau Python3 présent dans l'image de base de Python 2.0. SageMaker Modifiez ce champ en spécifiant une valeur personnalisée, si nécessaire. | Obligatoire. Paramètre kernel\$1name. Ce noyau doit être présent dans l’image et respecter les spécifications du noyau Jupyter. Pour voir les identifiants du noyau pour votre image, consultez (LIEN). | 
| SageMaker Séance d'IA | La session SageMaker AI sous-jacente à laquelle les appels de service SageMaker AI sont délégués. | N/A | N/A | Paramètre sagemaker\$1session. Si elle n’est pas spécifiée, elle est créée à l’aide d’une chaîne de configuration par défaut. | 
| Role ARN (ARN de rôle) | Amazon Resource Name (ARN) du rôle utilisé avec la tâche de bloc-notes. | Champ ARN du rôle. Ce champ utilise par défaut le rôle d’exécution Studio. Modifiez ce champ en spécifiant une valeur personnalisée, si nécessaire.  Si Studio ne peut pas déduire cette valeur, le champ **ARN du rôle** est vide. Dans ce cas, insérez l’ARN que vous souhaitez utiliser.  | Champ ARN du rôle. Ce champ contient par défaut n’importe quel rôle préfixé par SagemakerJupyterScheduler. Si vous avez plusieurs rôles avec le préfixe, l'extension en choisit un. Modifiez ce champ en spécifiant une valeur personnalisée, si nécessaire. Pour ce champ, vous pouvez définir votre propre valeur par défaut d'utilisateur qui est préremplie chaque fois que vous créez une nouvelle définition de tâche. Pour en savoir plus, consultez [Configurer les options par défaut pour les blocs-notes locaux](create-notebook-auto-execution-advanced-default.md). | Paramètre role. Par défaut, le rôle IAM par défaut de l' SageMaker IA est utilisé si le SDK est exécuté dans des ordinateurs portables ou des SageMaker blocs-notes Studio. SageMaker Sinon, il renvoie une erreur ValueError. Autorise les valeurs par défaut intelligentes. | 
| Bloc-notes d’entrée | Nom du bloc-notes que vous prévoyez d’exécuter. | Obligatoire. Champ Fichier d’entrée. | Identique à Studio. | Requis. Paramètre input\$1notebook. | 
| Input folder (Dossier d’entrée) | Dossier contenant vos entrées. Les entrées de tâche, y compris le bloc-notes d’entrée et tous les scripts de démarrage ou d’initialisation facultatifs, sont placées dans ce dossier. | Champ Dossier d’entrée. Si vous ne spécifiez pas de dossier, le planificateur crée un compartiment Amazon S3 par défaut pour vos entrées. | Identique à Studio. Pour ce champ, vous pouvez définir votre propre valeur par défaut d'utilisateur qui est préremplie chaque fois que vous créez une nouvelle définition de tâche. Pour en savoir plus, consultez [Configurer les options par défaut pour les blocs-notes locaux](create-notebook-auto-execution-advanced-default.md). | S/O. Le dossier d’entrée est placé dans l’emplacement spécifié par le paramètre s3\$1root\$1uri. | 
| Output folder (Dossier de sortie) | Le dossier contenant vos sorties. Les sorties de tâche, y compris le bloc-notes de sortie et les journaux, sont placées dans ce dossier. | Champ Dossier de sortie. Si vous ne spécifiez pas de dossier, le planificateur crée un compartiment Amazon S3 par défaut pour vos sorties. | Identique à Studio. Pour ce champ, vous pouvez définir votre propre valeur par défaut d'utilisateur qui est préremplie chaque fois que vous créez une nouvelle définition de tâche. Pour en savoir plus, consultez [Configurer les options par défaut pour les blocs-notes locaux](create-notebook-auto-execution-advanced-default.md). | S/O. Le dossier de sortie est placé dans l’emplacement spécifié par le paramètre s3\$1root\$1uri. | 
| Parameters | Dictionnaire de variables et de valeurs à transmettre à votre tâche de bloc-notes. | Champ Paramètres. Vous devez [paramétrer votre bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) pour accepter les paramètres. | Identique à Studio. | Paramètre parameters. Vous devez [paramétrer votre bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) pour accepter les paramètres. | 
| Dépendances supplémentaires (fichier ou dossier) | La liste des dépendances de fichiers ou de dossiers que la tâche de bloc-notes charge dans le dossier s3 intermédiaire. | Non pris en charge. | Non pris en charge. | Paramètre additional\$1dependencies. La tâche de bloc-notes charge ces dépendances dans un dossier S3 intermédiaire afin qu’elles puissent être consommées pendant l’exécution. | 
| URI racine S3 | Dossier contenant vos entrées. Les entrées de tâche, y compris le bloc-notes d’entrée et tous les scripts de démarrage ou d’initialisation facultatifs, sont placées dans ce dossier. Ce compartiment S3 doit se trouver dans le même Compte AWS que vous utilisez pour exécuter votre tâche de bloc-notes. | S/O. Utilisez le dossier d’entrée et le dossier de sortie. | Identique à Studio. | Paramètre s3\$1root\$1uri. Par défaut, il s’agit d’un compartiment S3 par défaut. Autorise les valeurs par défaut intelligentes. | 
| Variables d’environnement | Toutes les variables d’environnement existantes que vous souhaitez remplacer ou les nouvelles variables d’environnement que vous souhaitez introduire et utiliser dans votre bloc-notes. | Champ Variables d’environnement. | Identique à Studio. | Paramètre environment\$1variables. La valeur par défaut est None . | 
| Étiquettes | Liste des balises attachées à la tâche. | N/A | N/A | Paramètre tags. La valeur par défaut est None . Vos balises contrôlent la manière dont l’interface utilisateur de Studio capture et affiche la tâche créée par le pipeline. Pour en savoir plus, 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). | 
| Start-up script (Script de démarrage) | Script préchargé dans le menu de démarrage du bloc-notes que vous pouvez choisir d’exécuter avant d’exécuter le bloc-notes. | Champ Script de démarrage. Sélectionnez un script de configuration de cycle de vie (LCC) qui s’exécute sur l’image au démarrage. Un script de démarrage s’exécute dans un shell en dehors de l’environnement Studio. Ce script ne peut donc pas dépendre du stockage local de Studio, des variables d'environnement ni des métadonnées de l'application (dans `/opt/ml/metadata`). De même, si vous utilisez un script de démarrage et un script d’initialisation, le script de démarrage s’exécute en premier.   | Non pris en charge. | Non pris en charge. | 
| Initialization script (Script d’initialisation) | Chemin d’accès à un script local que vous pouvez exécuter au démarrage de votre bloc-notes. | Champ Script d’initialisation. Entrez le chemin du fichier EFS où se trouve un script local ou un script de configuration de cycle de vie (LCC). Si vous utilisez un script de démarrage et un script d'initialisation, le script de démarrage s'exécute en premier. Un script d'initialisation provient du même shell que la tâche de bloc-notes. Ce n’est pas le cas pour un script de démarrage décrit précédemment. De même, si vous utilisez un script de démarrage et un script d’initialisation, le script de démarrage s’exécute en premier.    | Champ Script d’initialisation. Entrez le chemin du fichier local où se trouve un script local ou un script de configuration de cycle de vie (LCC).  | Paramètre initialization\$1script. La valeur par défaut est None . | 
| Nombre maximal de nouvelles tentatives | Nombre de fois où Studio essaie de réexécuter une tâche qui a échoué. | Champ Nombre max. de nouvelles tentatives. La valeur par défaut est 1. | Identique à Studio. | Paramètre max\$1retry\$1attempts. La valeur par défaut est 1. | 
| Durée d’exécution maximale (en secondes) | Durée maximale, en secondes, pendant laquelle une tâche de bloc-notes peut s'exécuter avant d'être arrêtée. Si vous configurez à la fois la durée d'exécution maximale et le nombre maximal de nouvelles tentatives, la durée d'exécution s'applique à chaque nouvelle tentative. Si une tâche ne se termine pas dans ce délai, son statut est défini sur Failed. | Champ Durée d’exécution maximale (en secondes). La valeur par défaut est 172800 seconds (2 days) . | Identique à Studio. | Paramètre max\$1runtime\$1in\$1seconds. La valeur par défaut est 172800 seconds (2 days) . | 
| Politiques de nouvelles tentatives | Liste des politiques relatives aux nouvelles tentatives, qui régissent les actions à entreprendre en cas d’échec. | Non pris en charge. | Non pris en charge. | Paramètre retry\$1policies. La valeur par défaut est None . | 
| Ajout de dépendances Step ou StepCollection | Liste de noms ou d’instances Step ou StepCollection dont dépend la tâche. | Non pris en charge. | Non pris en charge. | Paramètre depends\$1on. La valeur par défaut est None . Utilisez-le pour définir des dépendances explicites entre les étapes de votre graphe de pipeline. | 
| Taille du volume | Taille en Go du volume de stockage des données d’entrée et de sortie pendant l’entraînement. | Non pris en charge. | Non pris en charge. | Paramètre volume\$1size. Correspond par défaut à 30 Go. | 
| Chiffrer le trafic entre les conteneurs | Indicateur qui spécifie si le trafic entre les conteneurs d’entraînement est chiffré pour la tâche d’entraînement. | S/O. Activé par défaut. | S/O. Activé par défaut. | Paramètre encrypt\$1inter\$1container\$1traffic. La valeur par défaut est True . | 
| Configure job encryption (Configurer le chiffrement des tâches) | Indicateur du fait que vous souhaitez chiffrer vos sorties de tâche de bloc-notes, votre volume d’instance de tâche, ou les deux. | Champ Configurer le chiffrement des tâches. Cochez cette case pour choisir le chiffrement. Si cette option n'est pas cochée, les sorties de tâche sont chiffrées avec la clé KMS par défaut du compte et le volume d'instance de tâche n'est pas chiffré. | Identique à Studio. | Non pris en charge. | 
| Output encryption KMS key (Clé de chiffrement KMS de sortie) | Une clé KMS à utiliser si vous souhaitez personnaliser la clé de chiffrement utilisée pour les sorties de tâche de bloc-notes. Ce champ n’est applicable que si vous avez activé l’option Configurer le chiffrement des tâches. | Champ Clé KMS de chiffrement de sortie. Si vous ne spécifiez pas ce champ, les sorties de tâche de bloc-notes sont chiffrées avec SSE-KMS à l’aide de la clé KMS Amazon S3 par défaut. De même, si vous créez vous-même le compartiment Amazon S3 et utilisez le chiffrement, votre méthode de chiffrement est préservée. | Identique à Studio. Pour ce champ, vous pouvez définir votre propre valeur par défaut d'utilisateur qui est préremplie chaque fois que vous créez une nouvelle définition de tâche. Pour en savoir plus, consultez [Configurer les options par défaut pour les blocs-notes locaux](create-notebook-auto-execution-advanced-default.md). | Paramètre s3\$1kms\$1key. La valeur par défaut est None . Autorise les valeurs par défaut intelligentes. | 
| Job instance volume encryption KMS key (Clé KMS de chiffrement du volume de l’instance de tâche) | Clé KMS à utiliser pour chiffrer votre volume d'instance de tâche. Ce champ n’est applicable que si vous avez activé l’option Configurer le chiffrement des tâches. | Champ Clé KMS de chiffrement du volume de l’instance de tâche. | Champ Clé KMS de chiffrement du volume de l’instance de tâche. Pour ce champ, vous pouvez définir votre propre valeur par défaut d’utilisateur qui est préremplie chaque fois que vous créez une nouvelle définition de tâche. Pour en savoir plus, consultez [Configurer les options par défaut pour les blocs-notes locaux](create-notebook-auto-execution-advanced-default.md). | Paramètre volume\$1kms\$1key. La valeur par défaut est None . Autorise les valeurs par défaut intelligentes. | 
| Utiliser un cloud privé virtuel pour exécuter cette tâche (pour les utilisateurs de VPC) | Indicateur du fait que vous souhaitez exécuter cette tâche dans un cloud privé virtuel (VPC). Pour une meilleure sécurité, il est recommandé d’utiliser un VPC privé. | Champ Utiliser un cloud privé virtuel pour exécuter cette tâche. Cochez cette case si vous souhaitez utiliser un VPC. Créez au minimum les points de terminaison VPC suivants pour permettre à votre tâche de bloc-notes de se connecter de manière privée à ces ressources : AWS [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/create-notebook-auto-execution-advanced.html)Si vous choisissez d’utiliser un VPC, vous devez spécifier au moins un sous-réseau privé et au moins un groupe de sécurité dans les options suivantes. Si vous n'utilisez aucun sous-réseau privé, vous devez envisager d'autres options de configuration. Pour plus de détails, consultez Sous-réseaux VPC publics non pris en charge dans [Contraintes et considérations](notebook-auto-run-constraints.md). | Identique à Studio. | N/A | 
| Sous-réseau(x) (pour les utilisateurs de VPC) | Vos sous-réseaux. Ce champ doit contenir au moins une entrée et cinq au maximum, et tous les sous-réseaux que vous fournissez doivent être privés. Pour plus de détails, consultez Sous-réseaux VPC publics non pris en charge dans [Contraintes et considérations](notebook-auto-run-constraints.md). | Champ Sous-réseau(x). Ce champ contient par défaut les sous-réseaux associés au domaine Studio, mais vous pouvez modifier ce champ si nécessaire. | Champ Sous-réseau(x). Le planificateur ne peut pas détecter vos sous-réseaux. Vous devez donc saisir tous les sous-réseaux que vous avez configurés pour votre VPC. | Paramètre subnets. La valeur par défaut est None . Autorise les valeurs par défaut intelligentes. | 
| Groupe(s) de sécurité (pour les utilisateurs de VPC) | Vos groupes de sécurité. Ce champ doit contenir au moins une entrée et quinze au maximum. Pour plus de détails, consultez Sous-réseaux VPC publics non pris en charge dans [Contraintes et considérations](notebook-auto-run-constraints.md). | Champ Groupes de sécurité. Ce champ contient par défaut les groupes de sécurité associés au VPC du domaine, mais vous pouvez modifier ce champ si nécessaire. | Champ Groupes de sécurité. Le planificateur ne peut pas détecter vos groupes de sécurité. Vous devez donc saisir tous les groupes de sécurité que vous avez configurés pour votre VPC. | Paramètre security\$1group\$1ids. La valeur par défaut est None . Autorise les valeurs par défaut intelligentes. | 
| Nom | Nom de l’étape de tâche de bloc-notes. | N/A | N/A | Paramètre name. S’il n’est pas spécifié, il est dérivé du nom du fichier de bloc-notes. | 
| Nom d’affichage | Votre nom de tâche tel qu’il doit apparaître dans votre liste d’exécutions de pipeline. | N/A | N/A | Paramètre display\$1name. La valeur par défaut est None . | 
| Description | Description de votre tâche. | N/A | N/A | Paramètre description. | 

# Paramétrer votre bloc-notes
<a name="notebook-auto-run-troubleshoot-override"></a>

Pour transmettre de nouveaux paramètres ou des remplacements de paramètres à votre tâche de bloc-notes planifiée, vous pouvez éventuellement modifier votre bloc-notes Jupyter si vous souhaitez que vos nouvelles valeurs de paramètres soient appliquées après une cellule. Lorsque vous transmettez un paramètre, l’exécuteur de tâches de bloc-notes utilise la méthodologie appliquée par Papermill. L’exécuteur de tâches de bloc-notes recherche une cellule Jupyter balisée avec la balise `parameters` et applique les nouveaux paramètres ou les remplacements de paramètres immédiatement après cette cellule. Si aucune cellule n’est balisée avec `parameters`, les paramètres sont appliqués au début du bloc-notes. Si plusieurs cellules sont balisées avec `parameters`, les paramètres sont appliqués après la première cellule balisée avec `parameters`.

Pour baliser une cellule de votre bloc-notes avec la balise `parameters`, procédez comme suit :

1. Sélectionnez la cellule à paramétrer.

1. Dans la barre latérale droite, choisissez l’icône **Inspecteur des propriétés** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio/icons/gears.png)).

1. Tapez **parameters** dans la zone **Add Tag** (Ajouter une balise).

1. Choisissez le signe **\$1**.

1. La balise `parameters` apparaît sous **Cell Tags** (Étiquettes de cellule) avec une coche, ce qui signifie que la balise est appliquée à la cellule.

# Connexion à un cluster Amazon EMR à partir de votre bloc-notes
<a name="scheduled-notebook-connect-emr"></a>

Si vous vous connectez à un cluster Amazon EMR à partir de votre bloc-notes Jupyter dans Studio, vous devrez peut-être effectuer une configuration supplémentaire. La discussion suivante aborde en particulier deux questions :
+ **Transmission de paramètres à votre commande de connexion EMR dans votre bloc-notes**. Dans SparkMagic les noyaux, les paramètres que vous transmettez à votre commande de connexion Amazon EMR peuvent ne pas fonctionner comme prévu en raison des différences entre la manière dont Papermill transmet les paramètres et SparkMagic reçoit les paramètres. La solution de contournement pour remédier à cette limitation consiste à transmettre des paramètres sous forme de variables d'environnement. Pour plus d’informations sur le problème et la solution de contournement, consultez [Transmettez des paramètres à votre commande de connexion EMR](#scheduled-notebook-connect-emr-pass-param).
+ **Transmission des informations d’identification utilisateur aux clusters Amazon EMR authentifiés par Kerberos, LDAP ou HTTP Basic Auth**. En mode interactif, Studio demande des informations d'identification dans un formulaire contextuel dans lequel vous pouvez saisir vos informations d'identification de connexion. Dans votre bloc-notes planifié non interactif, vous devez les transmettre via AWS Secrets Manager. Pour plus de détails sur l'utilisation des tâches planifiées AWS Secrets Manager dans votre bloc-notes, consultez[Transmettre des informations d'identification utilisateur à votre cluster Amazon EMR authentifié par Kerberos, LDAP ou HTTP Basic Auth](#scheduled-notebook-connect-emr-credentials).

## Transmettez des paramètres à votre commande de connexion EMR
<a name="scheduled-notebook-connect-emr-pass-param"></a>

Si vous utilisez des images avec les noyaux SparkMagic PySpark et Spark et que vous souhaitez paramétrer votre commande de connexion EMR, entrez vos paramètres dans le champ **Variables d'environnement** plutôt que dans le champ Paramètres du formulaire Create Job (dans le menu déroulant Options **supplémentaires**). Assurez-vous que votre commande de connexion EMR dans le bloc-notes Jupyter transmet ces paramètres en tant que variables d'environnement. Supposons, par exemple, que vous transmettiez `cluster-id` en tant que variable d’environnement lorsque vous créez votre tâche. Votre commande de connexion EMR devrait ressembler à l'exemple suivant :

```
%%local
import os
```

```
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
```

Vous avez besoin de cette solution pour répondre aux exigences de Papermill SparkMagic et de Papermill. Pour le contexte d'arrière-plan, le SparkMagic noyau s'attend à ce que la commande `%%local` magique accompagne toutes les variables locales que vous définissez. Cependant, Papermill ne transmet pas la commande magique `%%local` avec vos remplacements. Pour contourner cette limitation de Papermill, vous devez fournir vos paramètres sous forme de variables d'environnement dans le champ **Environment variables** (Variables d'environnement).

## Transmettre des informations d'identification utilisateur à votre cluster Amazon EMR authentifié par Kerberos, LDAP ou HTTP Basic Auth
<a name="scheduled-notebook-connect-emr-credentials"></a>

Pour établir une connexion sécurisée à un cluster Amazon EMR qui utilise l'authentification Kerberos, LDAP ou HTTP Basic Auth, vous utilisez la commande AWS Secrets Manager pour transmettre les informations d'identification utilisateur à votre commande de connexion. Pour plus d’informations sur la création d’un secret Secrets Manager, consultez [Création d’un secret AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). Votre secret doit contenir votre nom d’utilisateur et votre mot de passe. Vous transmettez le secret avec l’argument `--secrets`, comme le montre l’exemple suivant :

```
%sm_analytics emr connect --cluster-id j_abcde12345 
    --auth Kerberos 
    --secret aws_secret_id_123
```

Votre administrateur peut définir une politique d'accès flexible à l'aide d'une méthode attribute-based-access-control (ABAC), qui attribue l'accès en fonction de balises spéciales. Vous pouvez configurer un accès flexible afin de créer un secret unique pour tous les utilisateurs du compte ou un secret pour chaque utilisateur. Les exemples de code suivants illustrent ces scénarios :

**Créer un secret unique pour tous les utilisateurs du compte**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

**Créer un secret différent pour chaque utilisateur**

Vous pouvez créer un secret différent pour chaque utilisateur à l’aide de la balise `PrincipleTag`, comme illustré dans l’exemple suivant :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}"
                }
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

# Informations détaillées sur les tâches liées aux blocs-notes dans Amazon SageMaker Studio
<a name="track-jobs-jobdefs"></a>

SageMaker Les tableaux de bord de Notebook Jobs permettent d'organiser les définitions de tâches que vous planifiez et de suivre les tâches réelles exécutées à partir de vos définitions de tâches. Lorsque vous planifiez des tâches de bloc-notes, vous devez comprendre deux concepts importants : les *définitions de tâches* et les *exécutions de tâches*. Les définitions des tâches sont des planifications que vous définissez pour exécuter des blocs-notes spécifiques. Par exemple, vous pouvez créer une définition de tâche qui exécute le bloc-notes XYZ.ipynb tous les mercredis. Cette définition de tâche lance les exécutions de tâches réelles qui auront lieu ce mercredi, mercredi prochain, le mercredi suivant, etc. 

**Note**  
L'étape de travail du bloc-notes du SDK SageMaker Python ne crée pas de définitions de tâches. Toutefois, vous pouvez visualiser vos tâches dans le tableau de bord des tâches de bloc-notes. Les tâches et les définitions de tâches sont disponibles si vous planifiez votre tâche dans un JupyterLab environnement.

L’interface propose deux onglets principaux qui vous permettent de suivre vos définitions et exécutions de tâches existantes :
+ Onglet **Notebook Jobs** (Tâches du bloc-notes) : cet onglet affiche la liste de toutes vos tâches exécutées parmi vos tâches à la demande et les définitions de tâches. À partir de cet onglet, vous pouvez accéder directement aux détails d'une seule exécution de tâche. Par exemple, vous pouvez consulter une seule exécution de tâche qui a eu lieu il y a deux mercredis.
+ Onglet **Notebook Job Definitions** (Définition de l'exécution du bloc-notes) : cet onglet affiche la liste de toutes vos définitions de tâches. À partir de cet onglet, vous pouvez accéder directement aux détails d'une seule définition de tâche. Par exemple, vous pouvez consulter le calendrier que vous avez créé pour exécuter XYZ.ipynb tous les mercredis.

Pour plus de détails sur l’onglet **Tâches de bloc-notes**, consultez [Afficher les tâches de bloc-notes](view-notebook-jobs.md).

Pour plus de détails sur l’onglet **Définitions de tâches de bloc-notes**, consultez [Afficher les définitions des tâches de bloc-notes](view-def-detail-notebook-auto-run.md).

# Afficher les tâches de bloc-notes
<a name="view-notebook-jobs"></a>

**Note**  
Vous pouvez visualiser automatiquement vos tâches de bloc-notes si vous les avez planifiées à partir de l’interface utilisateur de Studio. Si vous avez utilisé le SDK SageMaker Python pour planifier votre tâche de bloc-notes, vous devez fournir des balises supplémentaires lorsque vous créez l'étape de tâche de bloc-notes. Pour en savoir plus, 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).

La rubrique suivante fournit des informations sur l’onglet **Tâches de bloc-notes** et explique comment visualiser les détails d’une tâche de bloc-notes individuelle. L’onglet **Tâches de bloc-notes** (auquel vous pouvez accéder en choisissant l’icône **Créer une tâche de bloc-notes** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/notebook-schedule.png)) dans la barre d’outils de Studio) affiche l’historique de vos tâches à la demande et de toutes les tâches exécutées à partir des définitions de tâches que vous avez créées. Cet onglet s’ouvre une fois que vous avez créé une tâche à la demande, ou vous pouvez simplement consulter cet onglet vous-même pour afficher l’historique des tâches passées et actuelles. Si vous sélectionnez **Job name** (Nom de tâche) pour n'importe quelle tâche, vous pouvez consulter les détails d'une seule tâche sur la page **Job Detail** (Détails de la tâche). Pour plus d’informations sur la page **Détails de la tâche**, consultez la section suivante [Afficher une seule tâche](#view-jobs-detail-notebook-auto-run).

L'onglet **Notebook Jobs** (Tâches de bloc-notes) contient les informations suivantes pour chaque tâche :
+ **Output files** (Fichiers de sortie) : affiche la disponibilité des fichiers de sortie. Cette colonne peut contenir l’un des éléments suivants :
  + Une icône de téléchargement (![\[Cloud icon with downward arrow, representing download or cloud storage functionality.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/icons/File_download.png)) : le bloc-notes et le journal de sortie peuvent être téléchargés ; choisissez ce bouton pour les télécharger. Notez qu’une tâche ayant échoué peut toujours générer des fichiers de sortie si l’échec s’est produit après la création des fichiers. Dans ce cas, il est utile de consulter le bloc-notes de sortie pour identifier le point de défaillance.
  + Liens vers le **bloc-notes** et le **journal de sortie** : Le bloc-notes et le journal de sortie sont téléchargés. Cliquez sur les liens pour afficher leur contenu.
  + (vide) : la tâche a été arrêtée par l'utilisateur, ou une défaillance s'est produite lors de l'exécution de la tâche, avant qu'elle ne puisse générer des fichiers de sortie. Par exemple, des défaillances du réseau ont pu empêcher le démarrage de la tâche.

  Le bloc-notes de sortie est le résultat de l'exécution de toutes les cellules du bloc-notes et intègre également tous les paramètres ou variables d'environnement nouveaux ou de remplacement que vous avez inclus. Le journal de sortie capture les détails de la tâche exécutée pour vous aider à dépanner les tâches ayant échoué.
+ **Created at** (Créée à) : heure de création de la tâche à la demande ou planifiée.
+ **Status** (État) : état actuel de la tâche, à savoir l'une des valeurs suivantes :
  + **In progress** (En cours) : la tâche est en cours d'exécution
  + **Failed** (Échec) : la tâche a échoué en raison d'erreurs de configuration ou de logique du bloc-notes
  + **Stopped** (Arrêtée) : la tâche a été arrêtée par l'utilisateur
  + **Completed** (Terminée) : la tâche est terminée
+ **Actions** : cette colonne fournit des raccourcis pour vous aider à arrêter ou à supprimer une tâche directement dans l'interface.

## Afficher une seule tâche
<a name="view-jobs-detail-notebook-auto-run"></a>

Dans l'onglet **Notebook Jobs** (Tâches du bloc-notes), vous pouvez sélectionner le nom d'une tâche pour afficher la page **Job Detail** (Détails de la tâche) correspondant à une tâche spécifique. La page **Job Details** (Détails de la tâche) inclut tous les détails que vous avez fournis dans le formulaire **Create Job** (Créer une tâche). Utilisez cette page pour confirmer les paramètres que vous avez spécifiés lors de la création de la définition de tâche. 

En outre, vous pouvez accéder à des raccourcis qui vous aideront à effectuer les actions suivantes sur la page elle-même :
+ **Delete Job** (Supprimer la tâche) : supprimez la tâche de l'onglet **Notebook Jobs** (Tâches de bloc-notes).
+ **Stop Job** (Arrêter la tâche) : arrêtez votre tâche en cours d'exécution.

# Afficher les définitions des tâches de bloc-notes
<a name="view-def-detail-notebook-auto-run"></a>

**Note**  
Si vous avez planifié votre tâche de bloc-notes avec le SDK SageMaker Python, ignorez cette section. Seules les tâches de bloc-notes créées dans Studio ou dans des JupyterLab environnements locaux créent des définitions de tâches. Par conséquent, si vous avez créé votre tâche de bloc-notes avec le SDK SageMaker Python, les définitions de tâches ne s'afficheront pas dans le tableau de bord des tâches de bloc-notes. Vous pouvez toutefois visualiser vos tâches de bloc-notes comme décrit dans [Afficher les tâches de bloc-notes](view-notebook-jobs.md). 

Lorsque vous créez une définition de tâche, vous créez une planification pour une tâche. L’onglet **Définitions de tâches de bloc-notes** répertorie ces planifications, ainsi que des informations sur les définitions de tâches de bloc-notes spécifiques. Par exemple, vous pouvez créer une définition de tâche qui exécute un bloc-notes spécifique toutes les minutes. Une fois que cette définition de tâche est active, une nouvelle tâche s’affiche chaque minute dans l’onglet **Notebook Jobs** (Tâches de bloc-notes). La page suivante fournit des informations sur l’onglet **Définitions de tâches de bloc-notes**, ainsi que sur la façon d’afficher une définition de tâche de bloc-notes.

L’onglet **Notebook Job Definitions** (Définitions de tâches de bloc-notes) affiche un tableau de bord contenant toutes vos définitions de tâches et inclut le bloc-notes d’entrée, l’heure de création, la planification et le statut de chaque définition de tâche. La valeur dans la colonne **Status** (Statut) contient l'une des valeurs suivantes :
+ **Paused** (Suspendue) : vous avez suspendu la définition de la tâche. Studio ne lance aucune tâche tant que vous n'avez pas repris la définition.
+ **Active** (Active) : la planification est activée et Studio peut exécuter le bloc-notes selon la planification que vous avez spécifiée.

En outre, la colonne **Actions** propose des raccourcis qui vous permettent d'effectuer les tâches suivantes directement dans l'interface :
+ Pause : met en pause la définition de la tâche. Studio ne lancera aucune tâche tant que vous n'aurez pas repris la définition.
+ Delete (Supprimer) : supprime la définition de tâche de l'onglet **Notebook Job Definitions** (Définitions de tâches de bloc-notes).
+ Resume (Reprendre) : poursuit une définition de tâche en pause afin de pouvoir démarrer des tâches.

Si vous avez créé une définition de tâche, mais qu’elle ne lance pas de tâches, consultez [La définition de la tâche ne crée pas de tâches](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) dans le [Guide de dépannage](notebook-auto-run-troubleshoot.md).

## Afficher une définition de tâche unique
<a name="view-job-definition-detail-page"></a>

Si vous sélectionnez le nom d'une définition de tâche dans l'onglet **Notebook Job Definitions** (Définitions de tâches de bloc-notes), la page **Job Definition** (Définition de tâche) s'affiche. Vous pouvez y consulter les détails spécifiques d'une définition de tâche. Utilisez cette page pour confirmer les paramètres que vous avez spécifiés lors de la création de la définition de tâche. Si vous ne voyez aucune tâche créée à partir de votre définition de tâche, consultez [La définition de la tâche ne crée pas de tâches](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) dans le [Guide de dépannage](notebook-auto-run-troubleshoot.md).

Cette page contient également une section répertoriant les tâches exécutées à partir de cette définition de tâche. L'affichage de vos tâches sur la page **Job Definition** (Définition des tâches) peut être un moyen plus productif de vous aider à organiser vos tâches au lieu de les consulter dans l'onglet **Notebook Jobs** (Tâches du bloc-notes), qui regroupe toutes les tâches issues de toutes vos définitions de tâches.

En outre, cette page fournit des raccourcis pour les actions suivantes :
+ **Pause/Resume** (Pause/Reprise) : suspendez la définition de votre tâche ou reprenez une définition en pause. Notez que si une tâche est en cours d'exécution pour cette définition, Studio ne l'arrête pas.
+ **Run** (Exécuter) : exécutez une seule tâche à la demande à partir de cette définition de tâche. Cette option vous permet également de spécifier différents paramètres d'entrée dans votre bloc-notes avant de démarrer la tâche.
+ **Edit Job Definition** (Modifier la définition de la tâche) : modifiez la planification de la définition de votre tâche. Vous pouvez sélectionner un intervalle de temps différent ou opter pour un calendrier personnalisé en utilisant la syntaxe cron.
+ **Delete Job Definition** (Supprimer la définition de la tâche) : supprimez la définition de tâche de l'onglet **Notebook Job Definitions** (Définitions de tâches de bloc-notes). Notez que si une tâche est en cours d'exécution pour cette définition, Studio ne l'arrête pas.

# Guide de dépannage
<a name="notebook-auto-run-troubleshoot"></a>

Reportez-vous à ce guide de dépannage pour résoudre les problèmes que vous pourriez rencontrer lors de l'exécution d'une tâche de bloc-notes planifiée.

## La définition de la tâche ne crée pas de tâches
<a name="notebook-auto-run-troubleshoot-no-jobs"></a>

**Si votre définition de tâche ne lance aucune tâche, il est possible que le carnet de notes ou le travail de formation ne s'affiche pas dans la section Tâches de la barre de navigation de gauche d'Amazon SageMaker Studio.** Si tel est le cas, vous pouvez rechercher des messages d’erreur dans la section **Pipelines** de la barre de navigation de gauche dans Studio. Chaque définition de bloc-notes ou de tâche d’entraînement appartient à un pipeline d’exécution. Voici les causes courantes de l’échec du lancement de tâches de bloc-notes.

**Missing permissions** (Autorisations manquantes)
+ Le rôle attribué à la définition du poste n'a aucune relation de confiance avec Amazon EventBridge. C'est-à-dire qu'il EventBridge ne peut pas assumer le rôle.
+ Le rôle attribué à la définition de la tâche n'est pas autorisé à appeler `SageMaker AI:StartPipelineExecution`.
+ Le rôle attribué à la définition de la tâche n'est pas autorisé à appeler `SageMaker AI:CreateTrainingJob`.

**EventBridge quota dépassé**

Si un `Put*` message d'erreur tel que l'exemple suivant s'affiche, cela signifie que vous avez dépassé un EventBridge quota. Pour résoudre ce problème, vous pouvez nettoyer les EventBridge séries non utilisées ou demander AWS Support à augmenter votre quota.

```
LimitExceededException) when calling the PutRule operation: 
The requested resource exceeds the maximum number allowed
```

Pour plus d'informations sur les EventBridge quotas, consultez [Amazon EventBridge Quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

**Pipeline quota limit exceeded** (Limite de quota de pipeline dépassée)

Si une erreur telle que l'exemple suivant s'affiche, cela signifie que vous avez dépassé le nombre de pipelines que vous pouvez exécuter. Pour résoudre ce problème, vous pouvez nettoyer les pipelines inutilisés de votre compte ou demander à AWS Support d’augmenter votre quota.

```
ResourceLimitExceeded: The account-level service limit 
'Maximum number of pipelines allowed per account' is XXX Pipelines, 
with current utilization of XXX Pipelines and a request delta of 1 Pipelines.
```

Pour plus d'informations sur les quotas de pipeline, consultez la section [Points de terminaison et quotas Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

**Training job limit exceeded** (Limite de tâches d’entraînement dépassée)

Si une erreur telle que l'exemple suivant s'affiche, cela signifie que vous avez dépassé le nombre de tâches d'entraînement que vous pouvez exécuter. Pour résoudre ce problème, réduisez le nombre d'offres de formation sur votre compte ou demandez AWS Support à augmenter votre quota.

```
ResourceLimitExceeded: The account-level service limit 
'ml.m5.2xlarge for training job usage' is 0 Instances, with current 
utilization of 0 Instances and a request delta of 1 Instances. 
Please contact AWS support to request an increase for this limit.
```

Pour plus d'informations sur les quotas de postes de formation, consultez [Amazon SageMaker AI Endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

## Visualisations automatiques désactivées dans SparkMagic les blocs-notes
<a name="notebook-auto-run-troubleshoot-visualization"></a>

Si votre bloc-notes utilise le SparkMagic PySpark noyau et que vous l'exécutez en tant que Notebook Job, il se peut que vos visualisations automatiques soient désactivées dans la sortie. L’activation de la visualisation automatique entraîne le blocage du noyau. L’exécuteur de tâches de bloc-notes désactive donc les visualisations automatiques comme solution de contournement.

# Contraintes et considérations
<a name="notebook-auto-run-constraints"></a>

Passez en revue les contraintes suivantes pour vous assurer que vos tâches de bloc-notes se terminent correctement. Studio utilise Papermill pour exécuter des blocs-notes. Vous devrez peut-être mettre à jour les blocs-notes Jupyter pour les adapter aux exigences de Papermill. Il existe également des restrictions sur le contenu des scripts LCC et des détails importants à comprendre concernant la configuration du VPC.

## JupyterLab version
<a name="notebook-auto-run-constraints-jpt"></a>

JupyterLab la version 4.0 est prise en charge.

## Installation de packages nécessitant le redémarrage du noyau
<a name="notebook-auto-run-constraints-pmill-pkg"></a>

Papermill ne prend pas en charge l’appel de `pip install` pour installer des packages nécessitant un redémarrage du noyau. Dans ce cas, utilisez `pip install` dans un script d'initialisation. Pour l’installation d’un package qui ne nécessite pas de redémarrage du noyau, vous pouvez toujours inclure `pip install` dans le bloc-notes. 

## Noms de noyau et de langage enregistrés auprès de Jupyter
<a name="notebook-auto-run-constraints-pmill-names"></a>

Papermill enregistre un traducteur pour des noyaux et des langues spécifiques. Si vous apportez votre propre instance (BYOI), utilisez un nom de noyau standard, comme indiqué dans l’extrait suivant :

```
papermill_translators.register("python", PythonTranslator)
papermill_translators.register("R", RTranslator)
papermill_translators.register("scala", ScalaTranslator)
papermill_translators.register("julia", JuliaTranslator)
papermill_translators.register("matlab", MatlabTranslator)
papermill_translators.register(".net-csharp", CSharpTranslator)
papermill_translators.register(".net-fsharp", FSharpTranslator)
papermill_translators.register(".net-powershell", PowershellTranslator)
papermill_translators.register("pysparkkernel", PythonTranslator)
papermill_translators.register("sparkkernel", ScalaTranslator)
papermill_translators.register("sparkrkernel", RTranslator)
papermill_translators.register("bash", BashTranslator)
```

## Paramètres et limites des variables d’environnement
<a name="notebook-auto-run-constraints-var-limits"></a>

**Paramètres et limites des variables d’environnement.** Lorsque vous créez votre tâche de bloc-notes, elle reçoit les paramètres et les variables d'environnement que vous spécifiez. Vous pouvez transmettre jusqu'à 100 paramètres. Chaque nom de paramètre peut comporter jusqu'à 256 caractères et la valeur associée peut comporter jusqu'à 2 500 caractères. Si vous transmettez des variables d'environnement, vous pouvez transmettre jusqu'à 28 variables. Le nom de la variable et la valeur associée peuvent contenir jusqu'à 512 caractères. Si vous avez besoin de plus de 28 variables d’environnement, utilisez des variables d’environnement supplémentaires dans un script d’initialisation qui ne limite pas le nombre de variables d’environnement que vous pouvez utiliser.

## Visualisation des tâches et des définitions de tâches
<a name="notebook-auto-run-constraints-view-job"></a>

**Visualisation des tâches et des définitions de tâches.** Si vous planifiez votre tâche de bloc-notes dans l'interface utilisateur de Studio dans le JupyterLab bloc-notes, vous pouvez [consulter les tâches de votre bloc-notes et les définitions de tâches](https://docs.aws.amazon.com/sagemaker/latest/dg/view-notebook-jobs.html) [de votre bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/view-def-detail-notebook-auto-run.html) dans l'interface utilisateur de Studio. Si vous avez planifié votre tâche de bloc-notes avec le SDK SageMaker Python, vous pouvez uniquement consulter vos tâches. L'étape de tâche de bloc-notes du SDK SageMaker Python ne crée pas de définitions de tâches. Pour visualiser vos tâches, vous devez également fournir des balises supplémentaires à l’instance d’étape de votre tâche de bloc-notes. Pour en savoir plus, 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).

## Image
<a name="notebook-auto-run-constraints-image"></a>

Vous devez gérer les contraintes d'image selon que vous exécutez les tâches de bloc-notes dans Studio ou l'étape de tâche de bloc-notes du SDK SageMaker Python dans un pipeline.

### Contraintes d'image pour les tâches liées à SageMaker AI Notebook (Studio)
<a name="notebook-auto-run-constraints-image-studio"></a>

**Support des images et du noyau.** Le pilote qui lance votre tâche de bloc-notes suppose ce qui suit :
+ Un environnement d'exécution Python de base est installé dans les images Studio ou bring-your-own (BYO) et constitue l'environnement par défaut dans le shell.
+ L'environnement d'exécution Python de base inclut le client Jupyter avec les spécifications du noyau correctement configurées.
+ L'environnement d'exécution Python de base inclut la fonction `pip` permettant à la tâche du bloc-notes d'installer des dépendances système.
+ Pour les images comportant plusieurs environnements, votre script d'initialisation doit passer à l'environnement spécifique au noyau approprié avant d'installer les packages spécifiques au bloc-notes. Vous devez revenir à l'environnement d'exécution Python par défaut, s'il est différent de l'environnement d'exécution du noyau, après avoir configuré l'environnement d'exécution Python du noyau.

Le pilote qui lance votre tâche de bloc-notes est un script bash, et Bash v4 doit être disponible dans /bin/bash. 

**Privilèges root activés bring-your-own-images (BYOI).** Vous devez disposer de privilèges root sur vos propres images Studio, soit en tant qu'utilisateur root, soit par un accès `sudo`. Si vous n’êtes pas un utilisateur racine mais que vous accédez aux privilèges racine via `sudo`, utilisez **1000/100** en tant qu’`UID/GID`.

### Contraintes d'image pour les SageMaker tâches de bloc-notes du SDK AI Python
<a name="notebook-auto-run-constraints-image-sdk"></a>

L’étape de tâche de bloc-notes prend en charge les images suivantes :
+ SageMaker Images de distribution répertoriées dans[Amazon SageMaker Images disponibles pour une utilisation avec les blocs-notes Studio Classic](notebooks-available-images.md).
+ Une image personnalisée basée sur les images SageMaker de distribution de la liste précédente. Utilisez une [image de SageMaker distribution](https://github.com/aws/sagemaker-distribution) comme base.
+ Une image personnalisée (BYOI) préinstallée avec les dépendances des tâches du bloc-notes (par exemple,. [sagemaker-headless-execution-driver](https://pypi.org/project/sagemaker-headless-execution-driver/) Votre image doit répondre aux exigences suivantes :
  + L’image est préinstallée avec les dépendances des tâches de bloc-notes.
  + Un environnement d’exécution Python de base est installé et est utilisé par défaut dans l’environnement shell.
  + L’environnement d’exécution Python de base inclut le client Jupyter avec les spécifications du noyau correctement configurées.
  + Vous disposez de privilèges racine, en tant qu’utilisateur racine ou via l’accès `sudo`. Si vous n’êtes pas un utilisateur racine mais que vous accédez aux privilèges racine via `sudo`, utilisez **1000/100** en tant qu’`UID/GID`.

## Sous-réseaux VPC utilisés lors de la création de tâches
<a name="notebook-auto-run-constraints-vpc"></a>

Si vous utilisez un VPC, Studio utilise vos sous-réseaux privés pour créer votre tâche. Spécifiez 1 à 5 sous-réseaux privés (et 1 à 15 groupes de sécurité).

Si vous utilisez un VPC avec des sous-réseaux privés, vous devez choisir l'une des options suivantes pour vous assurer que la tâche du bloc-notes peut se connecter aux services ou ressources dépendants :
+ Si la tâche nécessite l'accès à un AWS service qui prend en charge les points de terminaison VPC d'interface, créez un point de terminaison pour vous connecter au service. Pour obtenir la liste des services qui prennent en charge les points de terminaison d'interface, consultez la section [AWS Services intégrés à AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html). Pour plus d'informations sur la création d'un point de terminaison VPC d'interface, consultez [Accéder à un AWS service à l'aide d'un point de terminaison VPC d'](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)interface. Au minimum, une passerelle de point de terminaison d'un VPC Amazon S3 doit être fournie.
+ Si une tâche de bloc-notes doit accéder à un AWS service qui ne prend pas en charge les points de terminaison VPC d'interface ou à une ressource extérieure AWS, créez une passerelle NAT et configurez vos groupes de sécurité pour autoriser les connexions sortantes. Pour obtenir des informations sur la configuration d’une passerelle NAT pour votre VPC, consultez *VPC avec des sous-réseaux publics et privés (NAT)* dans le [Guide de l’utilisateur Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Service Limits
<a name="notebook-auto-run-constraints-service-limit"></a>

Étant donné que le planificateur de tâches de bloc-notes est conçu à partir de Pipelines, de SageMaker Training et EventBridge des services Amazon, les tâches de votre bloc-notes sont soumises à des quotas spécifiques au service. Si vous dépassez ces quotas, des messages d’erreur liés à ces services peuvent s’afficher. Par exemple, le nombre de pipelines que vous pouvez exécuter simultanément et le nombre de règles que vous pouvez configurer pour un seul bus d’événements sont limités. Pour plus d'informations sur les quotas d' SageMaker IA, consultez [Amazon SageMaker AI Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html). Pour plus d'informations sur les EventBridge quotas, consultez [Amazon EventBridge Quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

# Tarification des tâches liées aux SageMaker ordinateurs portables
<a name="notebook-auto-run-pricing"></a>

Lorsque vous planifiez des tâches de bloc-notes, vos blocs-notes Jupyter s'exécutent sur SageMaker des instances d'entraînement. Une fois que vous avez sélectionné une **image** et un **noyau** dans votre formulaire **Create Job** (Créer une tâche), le formulaire fournit une liste des types de calcul disponibles. Vous êtes facturé pour le type de calcul que vous choisissez, sur la base de la durée d’utilisation combinée pour toutes les tâches de blocs-notes exécutées à partir de la définition de tâche. Si vous ne spécifiez aucun type de calcul, SageMaker AI vous assigne un type d'instance Amazon EC2 par défaut de. `ml.m5.large` Pour une ventilation de la tarification de l' SageMaker IA par type de calcul, consultez [Amazon SageMaker AI Pricing](https://aws.amazon.com/sagemaker/pricing).

# Planification de vos flux de travail ML
<a name="workflow-scheduling"></a>

Avec Amazon SageMaker AI, vous pouvez gérer l'ensemble de votre flux de travail ML lorsque vous créez des ensembles de données, effectuez des transformations de données, créez des modèles à partir de données et déployez vos modèles sur des points de terminaison à des fins d'inférence. Si vous effectuez régulièrement un sous-ensemble d’étapes de votre flux de travail, vous pouvez également choisir d’exécuter ces étapes selon une planification. Par exemple, vous pouvez planifier une tâche dans SageMaker Canvas pour exécuter une transformation sur de nouvelles données toutes les heures. Dans un autre scénario, vous pouvez planifier une tâche hebdomadaire pour surveiller la dérive du modèle que vous avez déployé. Vous pouvez spécifier une planification récurrente d’un intervalle de temps quelconque : vous pouvez itérer toutes les secondes, toutes les minutes, tous les jours, toutes les semaines, tous les mois ou le 3e vendredi de chaque mois à 15h00.

**Les scénarios suivants récapitulent les options qui s’offrent à vous en fonction de votre cas d’utilisation.**
+ Cas d’utilisation 1 : **génération et planification de votre flux de travail ML dans un environnement sans programmation**. Pour les débutants ou les novices en matière d' SageMaker IA, vous pouvez utiliser Amazon SageMaker Canvas pour créer votre flux de travail ML et créer des exécutions planifiées à l'aide du planificateur basé sur l'interface utilisateur de Canvas.
+ Cas d’utilisation 2 : **génération de votre flux de travail dans un bloc-notes Jupyter unique et utilisation d’un planificateur sans programmation**. Les praticiens ML expérimentés peuvent utiliser du code pour générer leur flux de travail ML dans un bloc-notes Jupyter et utiliser l’option de planification sans programmation disponible avec le widget Tâches de bloc-notes. Si votre flux de travail ML se compose de plusieurs blocs-notes Jupyter, vous pouvez utiliser la fonctionnalité de planification du kit SDK Python de Pipelines, décrite dans le cas d’utilisation 3.
+ Cas d’utilisation 3 : **génération et planification de votre flux de travail ML à l’aide de Pipelines**. Les utilisateurs avancés peuvent utiliser le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), l'éditeur visuel Amazon SageMaker Pipelines ou les options de EventBridge planification Amazon disponibles avec Pipelines. Vous pouvez créer un flux de travail ML composé d'étapes comprenant des opérations avec divers AWS services et fonctionnalités d' SageMaker IA, tels qu'Amazon EMR.


| Descripteur | Cas d’utilisation 1 | Cas d’utilisation 2 | Cas d’utilisation 3 | 
| --- | --- | --- | --- | 
| SageMaker Fonctionnalité d'IA | Traitement des données Amazon SageMaker Canvas et planification du flux de travail ML | Widget de planification des tâches de bloc-notes (interface utilisateur) | Options de planification du kit SDK Python de Pipelines | 
| Description | Avec Amazon SageMaker Canvas, vous pouvez planifier des exécutions automatiques des étapes de traitement des données et, dans le cadre d'une procédure distincte, des mises à jour automatiques des ensembles de données. Vous pouvez également planifier de façon indirecte l’intégralité de votre flux de travail ML en paramétrant une configuration qui exécute une prédiction par lots chaque fois qu’un jeu de données spécifique est mis à jour. Pour le traitement automatique des données et les mises à jour des ensembles de données, SageMaker Canvas fournit un formulaire de base dans lequel vous sélectionnez une heure et une date de début ainsi qu'un intervalle de temps entre les exécutions (ou une expression cron si vous planifiez une étape de traitement des données). Pour en savoir plus sur la planification des étapes de traitement des données, consultez [Création d’une planification pour traiter automatiquement les nouvelles données](canvas-data-export-schedule-job.md). Pour plus d’informations sur la planification des mises à jour des jeux de données et des prédictions par lots, consultez [Comment gérer les automatisations](canvas-manage-automations.md). | Si vous avez généré votre flux de travail de traitement des données et de pipeline dans un bloc-notes Jupyter individuel, vous pouvez utiliser le widget Tâches de bloc-notes pour exécuter votre bloc-notes à la demande ou selon une planification. Le widget Tâches de bloc-notes affiche un formulaire de base dans lequel vous spécifiez le type de calcul, la planification d’exécution et des paramètres personnalisés facultatifs. Vous définissez votre planification d’exécution en sélectionnant un intervalle basé sur le temps ou en insérant une expression cron. Le widget est automatiquement installé dans Studio. Vous pouvez également effectuer une installation supplémentaire pour utiliser cette fonctionnalité dans votre JupyterLab environnement local. Pour plus d’informations sur les tâches de bloc-notes, consultez [SageMaker Emplois sur ordinateur portable](notebook-auto-run.md). | Vous pouvez utiliser les fonctionnalités de planification du SageMaker SDK si vous avez implémenté votre flux de travail ML avec Pipelines. Votre pipeline peut inclure des étapes telles que le peaufinage, le traitement des données et le déploiement. Pipelines prend en charge deux méthodes de planification de votre pipeline. Vous pouvez créer une EventBridge règle Amazon ou utiliser le [PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.triggers.PipelineSchedule)constructeur du SageMaker SDK ou l'éditeur visuel Amazon SageMaker Pipelines pour définir un calendrier. Pour plus d’informations sur les options de planification disponibles dans Pipelines, consultez [Planification d’exécutions d’un pipeline](pipeline-eventbridge.md). | 
| Optimisé pour | Fournit une option de planification pour un flux de travail SageMaker Canvas ML | Fournit une option de planification basée sur l’interface utilisateur pour les flux de travail ML basés sur un bloc-notes Jupyter | Fournit un SageMaker SDK ou une option de EventBridge planification pour les flux de travail ML | 
| Considérations | Vous pouvez planifier votre flux de travail avec le cadre sans programmation Canvas, mais les mises à jour des jeux de données et les mises à jour des transformations par lots peuvent gérer jusqu’à 5 Go de données. | Vous pouvez planifier un bloc-notes à l’aide du formulaire de planification basé sur l’interface utilisateur, mais pas plusieurs blocs-notes dans la même tâche. Pour planifier plusieurs blocs-notes, utilisez la solution basée sur le code du kit SDK Pipelines décrite dans le cas d’utilisation 3. | Vous pouvez utiliser les fonctionnalités de planification plus avancées (basées sur le kit SDK) fournies par Pipelines, mais vous devez vous référer à la documentation de l’API pour spécifier les options correctes plutôt que de les sélectionner dans un menu d’options basé sur l’interface utilisateur. | 
| Environnement recommandé | Amazon SageMaker Canvas | Studio, JupyterLab environnement local | Studio, JupyterLab environnement local, n'importe quel éditeur de code | 

## Ressources supplémentaires
<a name="workflow-scheduling-addit"></a>

**SageMaker L'IA propose les options supplémentaires suivantes pour planifier vos flux de travail.**
+ [Qu'est-ce qu'Amazon EventBridge Scheduler ?](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html) . Les options de planification décrites dans cette section incluent des options prédéfinies disponibles dans SageMaker Canvas, Studio et le SDK SageMaker AI Python. Toutes les options étendent les fonctionnalités d'Amazon EventBridge, et vous pouvez également créer votre propre solution de planification personnalisée avec EventBridge.
+ [Exécutions planifiées et basées sur des événements pour les pipelines d’intégrateur de caractéristiques](feature-store-feature-processor-schedule-pipeline.md). Avec Amazon SageMaker Feature Store Feature Processing, vous pouvez configurer vos pipelines de traitement des fonctionnalités pour qu'ils s'exécutent selon un calendrier ou à la suite d'un autre événement de AWS service.

# AWS Batch soutien aux emplois de formation en SageMaker IA
<a name="training-job-queues"></a>

Une [file d’attente de tâches AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html) stocke et hiérarchise les tâches soumises avant qu’elles s’exécutent sur des ressources de calcul. Vous pouvez soumettre des tâches de formation à l' SageMaker IA à une file d'attente de tâches afin de tirer parti des outils de planification et de priorisation des tâches sans serveur fournis par. AWS Batch

## Comment ça marche
<a name="training-job-queues-how-it-works"></a>

Les étapes suivantes décrivent le flux de travail relatif à l'utilisation d'une file d'attente de AWS Batch tâches avec des tâches de formation basées sur l' SageMaker IA. Pour des didacticiels et des exemples de blocs-notes plus détaillés, consultez la section [Mise en route](#training-job-queues-get-started).
+ Configuration AWS Batch et toutes les autorisations nécessaires. Pour plus d’informations, consultez [Configuration d’ AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/get-set-up-for-aws-batch.html) dans le *Guide de l’utilisateur AWS Batch *.
+ Créez les AWS Batch ressources suivantes dans la console ou à l'aide de AWS CLI :
  + [Environnement de service](https://docs.aws.amazon.com/batch/latest/userguide/service-environments.html) : contient des paramètres de configuration pour l'intégration à l' SageMaker IA.
  + [SageMaker File d'attente de formation basée sur l'IA](https://docs.aws.amazon.com/batch/latest/userguide/create-sagemaker-job-queue.html) — S'intègre à l' SageMaker IA pour soumettre des offres de formation.
+ Configurez vos informations et demandez une tâche de formation à l' SageMaker IA, telle que l'image de votre conteneur de formation. Pour soumettre une tâche de formation à une AWS Batch file d'attente, vous pouvez utiliser le AWS CLI SDK AWS SDK pour Python (Boto3), le ou le SDK SageMaker AI Python.
+ Soumettez vos tâches d’entraînement à la file d’attente de tâches. Vous pouvez utiliser les options suivantes pour soumettre des tâches :
  + Utilisez l'API AWS Batch [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html).
  + Utilisez le [`aws_batch`module](https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/aws_batch) du SDK SageMaker AI Python. Après avoir créé un TrainingQueue objet et un modèle d'objet d'entraînement (tel qu'un estimateur ou ModelTrainer), vous pouvez soumettre des tâches de formation à l' TrainingQueue `queue.submit()`aide de cette méthode.
+ Après avoir soumis des tâches, consultez votre file d'attente et le statut des tâches à l'aide de la AWS Batch console, de l' AWS Batch [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)API ou de l'[DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)API SageMaker AI.

## Coût et disponibilité
<a name="training-job-queues-cost-availability"></a>

Pour obtenir des informations détaillées sur les tarifs des offres de formation, consultez la [tarification d'Amazon SageMaker AI](https://aws.amazon.com/sagemaker-ai/pricing/). Avec AWS Batch, vous ne payez que pour les AWS ressources utilisées, telles que les instances Amazon EC2. Pour en savoir plus, consultez [Pricing AWS Batch](https://aws.amazon.com/batch/pricing/) (Tarification).

Vous pouvez l'utiliser AWS Batch pour les emplois de formation à l' SageMaker IA partout Région AWS où des emplois de formation sont disponibles. Pour plus d'informations, consultez la section [Points de terminaison et quotas Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

Pour vous assurer de disposer de la capacité requise lorsque vous en avez besoin, vous pouvez utiliser les plans de formation flexibles (FTP) basés sur l' SageMaker IA. Ces plans vous permettent de réserver des capacités pour vos tâches d’entraînement. Associée aux fonctionnalités AWS Batch de mise en file d'attente, vous pouvez optimiser l'utilisation pendant la durée de votre plan. Pour plus d'informations, consultez la section [Réservez des plans de formation pour vos jobs ou HyperPod clusters](https://docs.aws.amazon.com/sagemaker/latest/dg/reserve-capacity-with-training-plans.html) de formation.

## Mise en route
<a name="training-job-queues-get-started"></a>

Pour un didacticiel sur la façon de configurer une file d'attente de AWS Batch tâches et de soumettre des tâches de formation sur l' SageMaker IA, voir [Getting started with AWS Batch on SageMaker AI](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html) dans le *guide de AWS Batch l'utilisateur*.

Pour les blocs-notes Jupyter qui montrent comment utiliser le `aws_batch` module du SDK AI SageMaker Python, consultez les [exemples de blocs-notes AWS Batch pour les tâches de formation en SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/tree/default/%20%20%20%20%20%20build_and_train_models/sm-training-queues) dans le référentiel. amazon-sagemaker-examples GitHub 