SageMaker Components for Kubeflow Pipelines - Amazon SageMaker

SageMaker Components for Kubeflow Pipelines

Ce document explique comment utiliser SageMaker Components for Kubeflow Pipelines (KFP). Avec ces composants de pipeline, vous pouvez créer et contrôler des tâches d'entraînement, de réglage, de déploiement de point de terminaison et de transformation par lots dans SageMaker. En exécutant des tâches Kubeflow Pipeline sur SageMaker, vous déplacez les tâches de traitement des données et d'entraînement du cluster Kubernetes vers le service géré optimisé pour le machine learning de SageMaker. Ce document suppose une connaissance préalable de Kubernetes et Kubeflow.

Qu'est-ce que Kubeflow Pipelines ?

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 Python pour définir et manipuler des pipelines et des composants.

  • Des blocs-notes pour interagir avec le système à l'aide du SDK.

Un pipeline est une description d'un flux de ML exprimé sous la forme d'un graphe acyclique dirigé tel qu'illustré dans le diagramme suivant. Chaque étape du flux est exprimée sous la forme d'un composant de pipeline Kubeflow, qui est un module Python.

Si vos données ont été prétraitées, le pipeline standard prend un sous-ensemble des données et exécute l'optimisation d'hyperparamètre du modèle. Le pipeline entraîne ensuite un modèle avec le jeu de données complet en utilisant les hyperparamètres optimaux. Ce modèle est utilisé à la fois pour l'inférence par lots et la création de point de terminaison.

Pour de plus amples informations sur Kubeflow Pipelines, veuillez consulter la Documentation sur Kubeflow Pipelines.

Composants de Kubeflow Pipelines

Un composant de Kubeflow Pipelines est un ensemble de code utilisé pour exécuter une étape dans un pipeline Kubeflow. Les composants sont représentés par un module Python qui est converti en une image Docker. 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.

Que fournit SageMaker Components for Kubeflow Pipelines ?

SageMaker Components for Kubeflow Pipelines offre une alternative au lancement de tâches de calcul intensif dans SageMaker. Ces composants intègrent SageMaker à la portabilité et à l'orchestration de Kubeflow Pipelines. À l'aide des composants SageMaker, chacune des tâches du flux de pipeline s'exécute sur SageMaker au lieu du cluster Kubernetes local. Les paramètres de tâche, l'état, les journaux et les résultats de SageMaker sont toujours accessibles à partir de l'interface utilisateur de Kubeflow Pipelines. Les composants SageMaker suivants ont été créés pour intégrer six fonctions clés de SageMaker dans vos flux de ML. 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.

L'utilisation de SageMaker Components for Kubeflow Pipelines n'entraîne pas de frais supplémentaires. Vous engagez des frais pour toutes les ressources SageMaker que vous utilisez via ces composants.

Composants d'entraînement

Entrainement

Le composant d'entraînement vous permet d'envoyer des tâches SageMaker Training directement à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker Training Kubeflow Pipelines component.

Optimisation des hyperparamètres

Le composant Optimisation d'hyperparamètre vous permet d'envoyer des tâches de réglage d'hyperparamètre à SageMaker directement à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker hyperparameter optimization Kubeflow Pipeline component.

En cours

Le composant Traitement vous permet d'envoyer des tâches de traitement à SageMaker directement à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker Processing Kubeflow Pipeline component.

Composants Inférence

Hébergement de déploiement

Le composant Déployer vous permet de déployer un modèle dans SageMaker Hosting à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker Hosting Services - Create Endpoint Kubeflow Pipeline component.

Composant Batch Transform

Le composant Transformation par lots vous permet d'exécuter des tâches d'inférence pour un jeu de données entier dans SageMaker à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker Batch Transform Kubeflow Pipeline component.

Composants Ground Truth

Ground Truth Le composant Ground Truth vous permet d'envoyer des tâches d'étiquetage SageMaker Ground Truth directement à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker Ground Truth Kubeflow Pipelines component.

Équipe de travail

Le composant Équipe de travail vous permet de créer des tâches d'équipe de travail privée SageMaker directement à partir d'un flux Kubeflow Pipelines. Pour de plus amples informations, veuillez consulter SageMaker create private workteam Kubeflow Pipelines component.

Autorisations IAM

Le déploiement de composants Kubeflow Pipelines with SageMaker nécessite les trois niveaux d'autorisations IAM suivants :

  • Un utilisateur/rôle IAM pour accéder à votre compte AWS (vos informations d'identification). Remarque : vous n'en avez pas du tout besoin si vous avez déjà accès à l'interface utilisateur web KFP et que vous avez vos données d'entrée dans Amazon S3, ou si vous disposez déjà d'un cluster Amazon Elastic Kubernetes Service (Amazon EKS) avec KFP.

    Vous utilisez cet utilisateur/ce rôle à partir de votre nœud de passerelle, qui peut être votre machine locale ou une instance distante, pour effectuer les actions suivantes :

    • Créer un cluster Amazon EKS et installer KFP

    • Créer des rôles/utilisateurs IAM

    • Créer des compartiments Amazon S3 pour vos exemples de données d'entrée

    L'utilisateur/le rôle IAM nécessite les autorisations suivantes :

  • Rôle IAM utilisé par les pods KFP pour accéder à SageMaker (kfp-example-pod-role) Les pods KFP utilisent cette autorisation pour créer des tâches SageMaker à partir de composants KFP. Remarque : si vous souhaitez limiter les autorisations aux pods KFP, créez votre propre politique personnalisée et attachez-la.

    Le nouveau rôle nécessite l'autorisation suivante :

    • AmazonSageMakerFullAccess

  • Rôle IAM utilisé par les tâches SageMaker pour accéder à des ressources telles qu'Amazon S3 et Amazon ECR, etc. (kfp-example-sagemaker-execution-role).

    Vos tâches SageMaker utilisent ce rôle pour effectuer les actions suivantes :

    • Accéder aux ressources SageMaker

    • Données d'entrée d'Amazon S3

    • Stocker votre modèle de sortie sur Amazon S3

    Le rôle nécessite les autorisations suivantes :

    • AmazonSageMakerFullAccess

    • AmazonS3FullAccess

Ce sont tous les utilisateurs/rôles IAM dont vous avez besoin pour exécuter les composants KFP pour SageMaker.

Lorsque vous avez exécuté les composants et que vous avez créé le point de terminaison SageMaker, vous avez également besoin d'un rôle avec l'autorisation sagemaker:InvokeEndpoint afin d'interroger les points de terminaison d'inférence.

Conversion de pipelines pour utiliser SageMaker

Vous pouvez convertir un pipeline existant pour utiliser SageMaker en portant vos conteneurs de traitement et vos conteneurs d'entraînement Python génériques. Si vous utilisez SageMaker pour l'inférence, vous devez également attacher des autorisations IAM à votre cluster et convertir un artefact en modèle.