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.
Installation de Kubeflow Pipelines
Kubeflow Pipelines (KFP)
Vous pouvez déployer Kubeflow Pipelines (KFP) sur un Amazon Elastic Kubernetes Service EKS (Amazon) 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 EC2 instance Amazon.
La section suivante vous guide tout au long de la procédure d'installation et de configuration de ces ressources.
Rubriques
Choisir une option d'installation
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 :
-
Kubeflow complet lors du déploiement AWS
Pour utiliser d'autres composants Kubeflow en plus de Kubeflow Pipelines, choisissez le déploiement complet Distribution de Kubeflow sur AWS
. -
Déploiement de Kubeflow Pipelines autonome
Pour utiliser Kubeflow Pipelines sans les autres composants de Kubeflow, installez les pipelines Kubeflow de manière autonome.
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
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
Vous pouvez utiliser votre machine locale ou une EC2 instance Amazon comme nœud de passerelle. Un nœud de passerelle est utilisé pour créer un EKS cluster Amazon et accéder à l'interface utilisateur de Kubeflow Pipelines.
Suivez la procédure ci-dessous pour configurer votre nœud.
-
Créez un nœud de passerelle.
Vous pouvez utiliser une EC2 instance Amazon existante ou créer une nouvelle instance avec la dernière DLAMI version d'Ubuntu 18.04 en suivant les étapes décrites dans Lancement et configuration d'un DLAMI.
-
Créez un IAM rôle pour accorder à votre nœud de passerelle l'accès aux AWS ressources.
Créez un IAM rôle avec des autorisations d'accès aux ressources suivantes : CloudWatch AWS CloudFormation,IAM,, AmazonEC2, Amazon S3, AmazonEKS.
Associez les politiques suivantes au IAM rôle :
-
CloudWatchLogsFullAccess
-
IAMFullAccess
-
Amazon S3 FullAccess
-
Amazon EC2FullAccess
-
Une mazonEKSAdmin politique (créez cette politique à l'aide du schéma d'Amazon EKS Identity-Based Policy Examples)
Pour plus d'informations sur l'ajout d'IAMautorisations à un IAM rôle, consultez la section Ajouter et supprimer des autorisations IAM d'identité.
-
-
Installez les outils et clients suivants.
Installez et configurez les outils et ressources suivants sur votre nœud de passerelle pour accéder au EKS cluster Amazon et à KFP l'interface utilisateur (UI).
-
AWS CLI: 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.
-
aws-iam-authenticatorversion 0.1.31 et supérieure : outil permettant d'utiliser les informations d' AWS IAMidentification pour s'authentifier auprès d'un cluster Kubernetes.
-
eksctl
version supérieure à 0.15 : outil de ligne de commande permettant de travailler avec les EKS clusters Amazon. -
kubectl
: outil de ligne de commande pour travailler avec des clusters Kubernetes. La version doit correspondre à votre version de Kubernetes dans une version mineure. -
pip install boto3
-
Configuration d'un EKS cluster Amazon
-
Si vous ne possédez pas de EKS cluster Amazon existant, exécutez les étapes suivantes depuis la ligne de commande de votre nœud de passerelle. Sinon, ignorez cette étape.
-
Exécutez la commande suivante pour créer un EKS cluster Amazon avec la version 1.17 ou supé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 -
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
-
-
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 (*) dans le résultat.kubectl config get-contexts CURRENT NAME CLUSTER *
<username>
@<clustername>
.us-east-1.eksctl.io<clustername>
.us-east-1.eksctl.io -
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
Exécutez les étapes suivantes à partir du terminal de votre nœud de passerelle pour installer Kubeflow Pipelines sur votre cluster.
-
Installez tous les composants cert-manager
. kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
-
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"
-
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 d'accès à votre pipeline SageMaker
Dans cette section, vous allez créer un rôle d'IAMexécution permettant aux pods Kubeflow Pipeline d'accéder aux SageMaker services.
Configuration pour les SageMaker composants version 2
Pour exécuter SageMaker Components version 2 pour Kubeflow Pipelines, vous devez installer SageMaker Operator for Kubernetes
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, les composants version 2 sont déjà configurés. SageMaker
-
Installez SageMaker Operator for Kubernetes pour utiliser les SageMaker composants version 2.
Suivez la section Configuration du didacticiel Machine Learning with ACK SageMaker Controller
. -
Configurez RBAC les autorisations pour le rôle d'exécution (compte de service) utilisé par les pods Kubeflow Pipelines. 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 servicepipeline-runner
.-
Créez un RoleBinding
qui autorise le compte de service à gérer des ressources SageMaker personnalisées. 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
-
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 pour les SageMaker composants version 1
Pour exécuter la version 1 de SageMaker Components pour Kubeflow Pipelines, les pods Kubeflow Pipeline doivent avoir accès à. 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 IAM d'exécution autorisant l'accès aux pods du pipeline Kubeflow SageMaker, procédez comme suit :
-
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
-
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
-
-
Créez un IAMOIDCfournisseur pour le EKS cluster Amazon à l'aide de la commande suivante.
eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${CLUSTER_REGION} --approve
-
Créez un rôle IAM d'exécution pour que les KFP pods accèdent aux AWS services (SageMaker, 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 de SageMaker Components, suivez le guide SageMaker des composants pour les pipelines Kubeflow sur la documentation de Kubeflow
Accédez à l'KFPinterface utilisateur (tableau de bord Kubeflow)
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.
Suivez les instructions du AWS site Web de Kubeflow on
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.
Configurer la redirection de port vers le service d'KFPinterface utilisateur
Exécutez la commande suivante à partir de la ligne de commande de votre nœud de passerelle.
-
Vérifiez que le service d'KFPinterface utilisateur est en cours d'exécution à l'aide de 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
-
Exécutez la commande suivante pour configurer la redirection de port vers le service d'KFPinterface utilisateur. Cela transmet l'KFPinterface utilisateur au port 8080 de votre nœud de passerelle et vous permet d'accéder à l'KFPinterface utilisateur depuis 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édez au service d'KFPinterface utilisateur
La méthode d'accès à l'KFPinterface utilisateur dépend du type de nœud de passerelle.
-
Machine locale en tant que nœud de passerelle :
-
Accédez au tableau de bord dans votre navigateur comme suit :
http://localhost:8080
-
Choisissez Pipelines pour accéder à l'interface utilisateur de Pipelines.
-
-
EC2Instance Amazon en tant que nœud de passerelle :
-
Vous devez configurer un SSH tunnel sur votre EC2 instance Amazon pour accéder au tableau de bord Kubeflow depuis le 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 EC2 console Amazon. Vous pouvez également utiliser le publicDNS. 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} -
Accédez au tableau de bord dans votre navigateur.
http://localhost:9000
-
Choisissez Pipelines pour accéder à l'KFPinterface utilisateur.
-
(Facultatif) Accordez aux instances de SageMaker bloc-notes l'accès à Amazon EKS et exécutez des KFP pipelines à partir de votre bloc-notes.
Une instance de SageMaker bloc-notes est une instance de EC2 calcul Amazon entièrement gérée qui exécute l'application Jupyter Notebook. Vous pouvez utiliser une instance de bloc-notes pour créer et gérer des blocs-notes Jupyter, puis définir, compiler, déployer et exécuter vos KFP pipelines à l'aide AWS SDK for Python (Boto3) du. KFP CLI
-
Suivez les étapes décrites dans Créer une instance de SageMaker bloc-notes pour créer votre instance de bloc-notes, puis associez la
S3FullAccess
politique à son rôle IAM d'exécution. -
À partir de la ligne de commande de votre nœud de passerelle, exécutez la commande suivante pour récupérer le IAM rôle ARN 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 affiche le IAM rôle ARN au
arn:aws:iam::<account-id>:role/<role-name>
format. Prenez note de celaARN. -
Exécutez cette commande pour associer les politiques suivantes (AmazonSageMakerFullAccess, A mazonEKSWorkerNodePolicy, AmazonS3FullAccess) à ce IAM rôle.
<role-name>
Remplacez-le par le<role-name>
dans votreARN.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 -
EKSLes clusters Amazon utilisent IAM des rôles 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 configurationaws-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. -
Liez le rôle à votre cluster en exécutant la commande suivante. Remplacez
<IAM-Role-arn>
par le ARN du IAM rôle.<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>
-
Ouvrez un bloc-notes Jupyter sur votre SageMaker instance 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