Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Kubeflow Pipelines (KFP)
Puoi distribuire Kubeflow Pipelines (KFP) su un Amazon Elastic Kubernetes Service (Amazon EKS) esistente o creare un nuovo cluster Amazon EKS. Usa un nodo gateway per interagire con il cluster. Il nodo gateway può essere il computer locale o un' EC2 istanza Amazon.
La seguente sezione illustra le fasi necessarie per impostare e configurare queste risorse.
Argomenti
Selezione di un'opzione di installazione
Kubeflow Pipelines è disponibile come componente principale della distribuzione completa di Kubeflow su AWS o come installazione autonoma.
Seleziona l'opzione applicabile al tuo caso d'uso:
-
Kubeflow completo su Deployment AWS
Per utilizzare altri componenti Kubeflow oltre a Kubeflow Pipelines, scegli l’implementazione completa AWS per la distribuzione di Kubeflow
. -
Implementazione standalone di Kubeflow Pipelines
Per utilizzare Kubeflow Pipelines senza gli altri componenti di Kubeflow, installa Kubeflow Pipelines standalone.
Per installare la versione completa di Kubeflow su AWS, scegli l'opzione di distribuzione vanilla dalla guida alla distribuzione Kubeflow on o qualsiasi altra opzione di AWS distribuzione
Questa sezione presuppone che l'utente disponga delle autorizzazioni per creare ruoli e definire le policy per gli stessi.
Configurazione di un nodo gateway
Puoi usare il tuo computer locale o un' EC2 istanza Amazon come nodo gateway. Un nodo gateway viene utilizzato per creare un cluster Amazon EKS e accedere all'interfaccia utente di Kubeflow Pipelines.
Completa la seguente procedura per configurare il nodo.
-
Crea un nodo gateway.
Puoi usare un' EC2 istanza Amazon esistente o creare una nuova istanza con l'ultima versione di Ubuntu 18.04 DLAMI seguendo i passaggi descritti in Avvio e configurazione di un DLAMI.
-
Crea un ruolo IAM per concedere al nodo gateway l'accesso alle risorse AWS .
Crea un ruolo IAM con autorizzazioni per le seguenti risorse: CloudWatch,, IAM AWS CloudFormation, Amazon EC2, Amazon S3, Amazon EKS.
Collega al ruolo IAM le policy seguenti:
-
CloudWatchLogsFullAccess
-
IAMFullAccesso
-
Amazon S3 FullAccess
-
Amazon EC2 FullAccess
-
Amazon EKSAdmin Policy (crea questa policy utilizzando lo schema di Amazon EKS Identity-Based Policy Examples)
Per informazioni sull'aggiunta di autorizzazioni IAM a un ruolo IAM, consulta Aggiunta e rimozione di autorizzazioni per identità IAM.
-
-
Installazione di strumenti e client
Installa e configura i seguenti strumenti e risorse sul nodo gateway per accedere al cluster Amazon EKS e all'interfaccia utente (UI) KFP.
-
AWS CLI: Lo strumento da riga di comando per lavorare con i servizi. AWS Per informazioni sulla configurazione di AWS CLI , consulta Configurazione di AWS CLI.
-
aws-iam-authenticatorversione 0.1.31 e successive: uno strumento per utilizzare le credenziali AWS IAM per l'autenticazione in un cluster Kubernetes.
-
eksctl
versione 0.15 e successive: strumento a riga di comando per lavorare con i cluster Amazon EKS. -
kubectl
: strumento a riga di comando per lavorare con cluster Kubernetes. La versione deve corrispondere all’installazione di Kubernetes in una versione secondaria. -
pip install boto3
-
Configurazione di un cluster Amazon EKS
-
Se non disponi di un cluster Amazon EKS esistente, esegui le seguenti fasi dalla riga di comando del nodo gateway; in caso contrario, ignora questa fase.
-
Esegui il comando seguente per creare un cluster Amazon EKS con la versione 1.17 o successiva. Sostituisci
<clustername>
con un nome da assegnare al cluster.eksctl create cluster --name
<clustername>
--region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1 -
Una volta completata la creazione del cluster, assicurati di poter accedere al cluster elencandone i nodi.
kubectl get nodes
-
-
Assicurati che il contesto
kubectl
corrente punti al cluster con il comando seguente. Il contesto corrente è contrassegnato da un asterisco (*) nell'output.kubectl config get-contexts CURRENT NAME CLUSTER *
<username>
@<clustername>
.us-east-1.eksctl.io<clustername>
.us-east-1.eksctl.io -
Se il cluster desiderato non è configurato come quello attualmente predefinito, aggiorna il cluster predefinito con il seguente comando.
aws eks update-kubeconfig --name
<clustername>
--region us-east-1
Installazione di Kubeflow Pipelines
Esegui la seguente procedura dal terminale del nodo gateway per installare Kubeflow Pipelines sul tuo cluster.
-
Installa tutti i componenti cert-manager
. kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
-
Installa Kubeflow Pipelines.
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"
-
Assicurati che il servizio Kubeflow Pipelines e le altre risorse correlate siano in esecuzione.
kubectl -n kubeflow get all | grep pipeline
L'aspetto dell'output sarà simile al seguente.
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
Configura le autorizzazioni della pipeline per accedere all'IA SageMaker
In questa sezione, crei un ruolo di esecuzione IAM che concede ai pod Kubeflow Pipeline l'accesso ai servizi di intelligenza artificiale. SageMaker
Configurazione per i componenti AI versione 2 SageMaker
Per eseguire la versione 2 di SageMaker AI Components per Kubeflow Pipelines, devi installare SageMaker AI Operator for Kubernetes
Importante
Attieniti a questa sezione per l’implementazione standalone di Kubeflow Pipelines. Se utilizzi AWS la distribuzione della versione 1.6.0-aws-b1.0.0 o successiva di Kubeflow, la versione 2 dei componenti AI è già configurata. SageMaker
-
Installa SageMaker AI Operator for Kubernetes per utilizzare la versione 2 dei componenti AI. SageMaker
Segui la sezione Configurazione del tutorial Machine Learning with ACK SageMaker AI Controller
. -
Configura le autorizzazioni RBAC per il ruolo di esecuzione (account di servizio) utilizzato dai pod Kubeflow Pipelines. Nell’implementazione standalone di Kubeflow Pipelines, le esecuzioni della pipeline vengono eseguite nello spazio dei nomi
kubeflow
utilizzando l'account di serviziopipeline-runner
.-
Creane uno RoleBinding
che dia all'account del servizio l'autorizzazione a gestire le risorse personalizzate SageMaker AI. 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
-
Assicurati che il RoleBinding sia stato creato eseguendo:
kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml
-
Configurazione per i componenti SageMaker AI (versione 1)
Per eseguire la versione 1 di SageMaker AI Components per Kubeflow Pipelines, i pod Kubeflow Pipeline devono accedere all'IA. SageMaker
Importante
Segui questa sezione se stai utilizzando la versione completa di Kubeflow on deployment o Kubeflow Pilepines standalone. AWS
Per creare un ruolo di esecuzione IAM che consenta ai pod della pipeline Kubeflow di accedere all'intelligenza artificiale, segui questi passaggi: SageMaker
-
Esporta il nome del cluster (ad es. my-cluster-name) e la regione del cluster (ad es. us-east-1).
export CLUSTER_NAME=
my-cluster-name
export CLUSTER_REGION=us-east-1
-
Esporta lo spazio dei nomi e il nome dell'account di servizio in base all'installazione.
-
Per l' AWS installazione completa di Kubeflow, esporta il tuo profilo
namespace
(ad esempio kubeflow-user-example-com) e l'editor predefinito come account di servizio.export NAMESPACE=
kubeflow-user-example-com
export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor -
Per l’implementazione standalone di Pipelines, esporta kubeflow come
namespace
e pipeline-runner come account di servizio.export NAMESPACE=kubeflow export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
-
-
Crea un provider di identità OIDC IAM per il cluster Amazon EKS con il comando seguente.
eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${CLUSTER_REGION} --approve
-
Crea un ruolo di esecuzione IAM per i pod KFP per accedere ai servizi (AI,). AWS 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
Accesso all'interfaccia utente KFP (dashboard Kubeflow)
L'interfaccia utente di Kubeflow Pipelines viene utilizzata per gestire e monitorare esperimenti, processi ed esecuzioni sul cluster. Per istruzioni su come accedere all'interfaccia utente di Kubeflow Pipelines dal nodo gateway, segui le fasi relative all'opzione di implementazione in questa sezione.
Segui le istruzioni sul AWS sito web di Kubeflow on per connetterti alla dashboard di Kubeflow
Utilizza l’inoltro delle porte per accedere all'interfaccia utente di Kubeflow Pipelines dal nodo gateway seguendo questa procedura.
Configurazione dell’inoltro delle porte verso il servizio dell’interfaccia utente KFP
Esegui il comando seguente dalla riga di comando del nodo gateway.
-
Verifica che il servizio dell'interfaccia utente KFP sia in esecuzione utilizzando il comando riportato di seguito.
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
-
Esegui il comando riportato di seguito per configurare l’inoltro delle porte verso il servizio dell'interfaccia utente KFP. In questo modo, l'interfaccia utente KFP viene inoltrata alla porta 8080 sul nodo gateway, consentendo di accedere all'interfaccia utente KFP dal browser.
kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80
L’inoltro delle porte dal computer remoto si interrompe in caso di inattività. Esegui nuovamente questo comando se il dashboard non è in grado di ricevere registri o aggiornamenti. Se i comandi restituiscono un errore, assicurati che non vi siano processi in esecuzione sulla porta che stai cercando di utilizzare.
Accesso al servizio dell’interfaccia utente KFP
Il metodo di accesso all'interfaccia utente KFP dipende dal tipo di nodo gateway.
-
Computer locale come nodo gateway:
-
Accedi al dashboard del tuo browser nel modo seguente:
http://localhost:8080
-
Scegli Pipelines per accedere all'interfaccia utente di Pipelines.
-
-
EC2 Istanza Amazon come nodo gateway:
-
Devi configurare un tunnel SSH sulla tua EC2 istanza Amazon per accedere alla dashboard di Kubeflow dal browser del tuo computer locale.
Da una nuova sessione di terminale nel computer locale, svolgi le seguenti operazioni. Sostituisci
<public-DNS-of-gateway-node>
con l'indirizzo IP della tua istanza trovato sulla EC2 console Amazon. Puoi anche usare il DNS pubblico. Sostituisci<path_to_key>
con il percorso della chiave pem utilizzata per accedere al nodo gateway.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} -
Accedi al dashboard del tuo browser nel browser.
http://localhost:9000
-
Scegli Pipelines per accedere all'interfaccia utente di KFP.
-
(Facoltativo) Concedi alle istanze di notebook SageMaker AI l'accesso ad Amazon EKS ed esegui pipeline KFP dal tuo notebook.
Un'istanza SageMaker notebook è un'istanza di EC2 calcolo Amazon completamente gestita che esegue l'app Jupyter Notebook. È possibile utilizzare un'istanza del notebook per creare e gestire notebook Jupyter, quindi definire, compilare, distribuire ed eseguire le pipeline KFP utilizzando AWS SDK for Python (Boto3) o la CLI KFP.
-
Segui la procedura descritta in Crea un'istanza SageMaker Notebook per creare un'istanza notebook, quindi collega la
S3FullAccess
policy al relativo ruolo di esecuzione IAM. -
Dalla riga di comando del nodo gateway, esegui il comando seguente per recuperare l'ARN del ruolo IAM dell'istanza del notebook creato. Sostituisci
<instance-name>
con il nome dell’istanza.aws sagemaker describe-notebook-instance --notebook-instance-name
<instance-name>
--region<region>
--output text --query 'RoleArn'Questo comando restituisce l'ARN del ruolo IAM nel formato
arn:aws:iam::<account-id>:role/<role-name>
. Annota l'ARN. -
Esegui questo comando per allegare le seguenti politiche (AmazonSageMakerFullAccess, Amazon EKSWorkerNodePolicy, AmazonS3FullAccess) a questo ruolo IAM. Nell’ARN, sostituisci
<role-name>
con<role-name>
.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 -
I cluster Amazon EKS utilizzano i ruoli IAM per controllare l'accesso al cluster. Le regole sono implementate in una mappa di configurazione denominata
aws-auth
.eksctl
fornisce comandi per leggere e modificare la mappa di configurazioneaws-auth
. Solo gli utenti che hanno accesso al cluster possono modificare questa mappa di configurazione.system:masters
rappresenta uno dei gruppi di utenti predefiniti con privilegi per il cluster. Aggiungi il tuo utente a questo gruppo o crea un gruppo con autorizzazioni più restrittive. -
Collega il ruolo al cluster eseguendo il seguente comando. Sostituisci
<IAM-Role-arn>
con l'ARN del ruolo IAM.<your_username>
può essere qualsiasi nome utente univoco.eksctl create iamidentitymapping \ --cluster
<cluster-name>
\ --arn<IAM-Role-arn>
\ --group system:masters \ --username<your-username>
\ --region<region>
-
Apri un notebook Jupyter sulla tua istanza SageMaker AI ed esegui il comando seguente per assicurarti che abbia accesso al cluster.
aws eks --region
<region>
update-kubeconfig --name<cluster-name>
kubectl -n kubeflow get all | grep pipeline