

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 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.