

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

# SageMaker Componenti AI per Kubeflow Pipelines
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

Con i componenti SageMaker AI per Kubeflow Pipelines, puoi creare e monitorare processi nativi di formazione, ottimizzazione, implementazione degli endpoint e trasformazione in batch dell' SageMaker IA dalle tue Kubeflow Pipelines. Eseguendo i job Kubeflow Pipeline sull' SageMaker intelligenza artificiale, sposti i lavori di elaborazione e formazione dei dati dal cluster Kubernetes al servizio gestito ottimizzato per l'apprendimento automatico di AI. SageMaker Questo documento presuppone una conoscenza preliminare di Kubernetes e Kubeflow. 

**Topics**
+ [Cos’è Kubeflow Pipelines?](#what-is-kubeflow-pipelines)
+ [Cosa sono i componenti Kubeflow Pipelines?](#kubeflow-pipeline-components)
+ [Perché usare SageMaker AI Components per Kubeflow Pipelines?](#why-use-sagemaker-components)
+ [SageMaker Componenti AI per le versioni di Kubeflow Pipelines](#sagemaker-components-versions)
+ [Elenco dei componenti SageMaker AI per Kubeflow Pipelines](#sagemaker-components-list)
+ [autorizzazioni IAM](#iam-permissions)
+ [Conversione delle pipeline per utilizzare l'intelligenza artificiale SageMaker](#converting-pipelines-to-use-amazon-sagemaker)
+ [Installazione di Kubeflow Pipelines](kubernetes-sagemaker-components-install.md)
+ [Usa componenti AI SageMaker](kubernetes-sagemaker-components-tutorials.md)

## Cos’è Kubeflow Pipelines?
<a name="what-is-kubeflow-pipelines"></a>

Kubeflow Pipelines (KFP) è una piattaforma per la creazione e la distribuzione di flussi di lavoro di machine learning (ML) portatili e scalabili basati su container Docker. La piattaforma Kubeflow Pipelines comprende i seguenti elementi:
+ Un'interfaccia utente (UI) per la gestione e il monitoraggio di esperimenti, processi ed esecuzioni. 
+ Un motore (Argo) per la pianificazione di flussi di lavoro ML in più fasi.
+ Un SDK per definire e manipolare pipeline e componenti.
+ Notebook per interagire con il sistema tramite SDK.

Una pipeline è una descrizione di un flusso di lavoro ML espressa come [grafico aciclico diretto](https://www.kubeflow.org/docs/pipelines/concepts/graph/). [Ogni fase del flusso di lavoro è espressa come componente Kubeflow Pipeline, che è un modulo.](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/) AWS SDK per Python (Boto3) 

Per ulteriori informazioni su Kubeflow Pipelines, consulta la [Documentazione di Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/). 

## Cosa sono i componenti Kubeflow Pipelines?
<a name="kubeflow-pipeline-components"></a>

Un componente Kubeflow Pipelines è un insieme di codice utilizzato per eseguire una fase di una pipeline Kubeflow. I componenti sono rappresentati da un modulo Python integrato in un'immagine Docker. Quando la pipeline viene eseguita, il container del componente viene istanziato su uno dei nodi di processo del cluster Kubernetes che esegue Kubeflow e la logica viene eseguita. I componenti della pipeline possono leggere gli output dei componenti precedenti e creare output utilizzabili dal componente successivo della pipeline. Questi componenti semplificano e velocizzano la scrittura di pipeline per ambienti di sperimentazione e produzione senza dover interagire con l'infrastruttura Kubernetes sottostante.

Puoi utilizzare SageMaker AI Components nella tua pipeline Kubeflow. Invece di incapsulare la logica in un container personalizzato, è sufficiente caricare i componenti e descrivere la pipeline utilizzando Kubeflow Pipelines SDK. Quando la pipeline viene eseguita, le tue istruzioni vengono tradotte in un lavoro o implementazione di SageMaker intelligenza artificiale. Il carico di lavoro viene quindi eseguito sull'infrastruttura di intelligenza artificiale completamente gestita. SageMaker 

## Perché usare SageMaker AI Components per Kubeflow Pipelines?
<a name="why-use-sagemaker-components"></a>

SageMaker I componenti AI per Kubeflow Pipelines offrono un'alternativa all'avvio di lavori ad alta intensità di calcolo dall'intelligenza artificiale. SageMaker I componenti integrano l' SageMaker intelligenza artificiale con la portabilità e l'orchestrazione di Kubeflow Pipelines. Utilizzando i componenti SageMaker AI per Kubeflow Pipelines, puoi creare e monitorare le tue risorse SageMaker AI come parte di un flusso di lavoro Kubeflow Pipelines. Ciascuno dei processi nelle tue pipeline viene eseguito sull' SageMaker intelligenza artificiale anziché sul cluster Kubernetes locale, consentendoti di sfruttare le funzionalità chiave dell' SageMaker IA come l'etichettatura dei dati, l'ottimizzazione degli iperparametri su larga scala e i lavori di formazione distribuiti o l'implementazione di modelli sicuri e scalabili con un clic. I parametri, lo stato, i log e gli output del processo di intelligenza artificiale sono ancora accessibili dall'interfaccia utente di Kubeflow Pipelines. SageMaker 

I componenti SageMaker AI integrano le principali funzionalità di SageMaker intelligenza artificiale nei flussi di lavoro ML, dalla preparazione dei dati alla creazione, all'addestramento e all'implementazione di modelli ML. È possibile costruire un’intera pipeline Kubeflow utilizzando questi componenti o integrare singoli componenti nel flusso di lavoro in base alle esigenze. I componenti sono disponibili in una o due versioni. Ogni versione di un componente sfrutta un backend diverso. Per ulteriori informazioni sulle versioni, consulta [SageMaker Componenti AI per le versioni di Kubeflow Pipelines](#sagemaker-components-versions).

Non sono previsti costi aggiuntivi per l'utilizzo dei componenti SageMaker AI per Kubeflow Pipelines. Tutte le risorse di SageMaker intelligenza artificiale utilizzate tramite questi componenti comportano costi aggiuntivi.

## SageMaker Componenti AI per le versioni di Kubeflow Pipelines
<a name="sagemaker-components-versions"></a>

SageMaker I componenti AI per Kubeflow Pipelines sono disponibili in due versioni. Ogni versione sfrutta un backend diverso per creare e gestire risorse sull'intelligenza artificiale. SageMaker 
+ **[I componenti SageMaker AI per Kubeflow Pipelines versione 1 (v1.x o precedente) utilizzano Boto3 () come backend.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)**AWS SDK per Python (Boto3)
+ [La versione 2 (v2.0.0-alpha2 e successive) di AI Components for Kubeflow Pipelines utilizza AI Operator for Kubernetes (ACK). SageMaker SageMaker ](https://github.com/aws-controllers-k8s/sagemaker-controller) 

  AWS [ha introdotto ACK per facilitare un modo nativo di Kubernetes di gestire le risorse cloud.](https://aws-controllers-k8s.github.io/community/) AWS ACK include un set di controller AWS specifici per il servizio, uno dei quali è il controller AI. SageMaker Il controller SageMaker AI semplifica l'utilizzo di Kubernetes come piano di controllo da parte degli sviluppatori di machine learning e dei data scientist per addestrare, ottimizzare e implementare modelli di machine learning (ML) nell'IA. SageMaker [Per ulteriori informazioni, consulta SageMaker AI Operators for Kubernetes](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/) 

Sono supportate entrambe le versioni di SageMaker AI Components for Kubeflow Pipelines. Tuttavia, la versione 2 offre alcuni vantaggi aggiuntivi. In particolare, offre: 

1. Un'esperienza coerente per gestire le risorse SageMaker AI da qualsiasi applicazione, indipendentemente dal fatto che tu stia utilizzando le pipeline Kubeflow, la CLI di Kubernetes (`kubectl`) o altre applicazioni Kubeflow come Notebooks. 

1. La flessibilità necessaria per gestire e monitorare le risorse di intelligenza artificiale al di fuori del flusso di lavoro della pipeline Kubeflow. SageMaker 

1. Zero tempi di configurazione per utilizzare i componenti SageMaker AI se hai distribuito la versione completa di [Kubeflow](https://awslabs.github.io/kubeflow-manifests/docs/about/) al momento del AWS rilascio, poiché l'operatore SageMaker AI fa parte della sua implementazione. 

## Elenco dei componenti SageMaker AI per Kubeflow Pipelines
<a name="sagemaker-components-list"></a>

Di seguito è riportato un elenco di tutti i componenti SageMaker AI per Kubeflow Pipelines e le relative versioni disponibili. In alternativa, puoi trovare tutti i [componenti SageMaker AI per Kubeflow](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning) Pipelines in. GitHub

**Nota**  
Incoraggiamo gli utenti a utilizzare la versione 2 di un componente SageMaker AI ovunque sia disponibile.

### Componenti Ground Truth
<a name="ground-truth-components"></a>
+ **Ground Truth**

  Il componente Ground Truth consente di inviare lavori di etichettatura SageMaker AI Ground Truth direttamente da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Workteam**

  Il componente Workteam consente di creare lavori di team di lavoro privati basati sull' SageMaker intelligenza artificiale direttamente da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componenti di elaborazione dei dati
<a name="data-processing-components"></a>
+ **Processing**

  Il componente Processing consente di inviare lavori di elaborazione all' SageMaker IA direttamente da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componenti per l’addestramento
<a name="training-components"></a>
+ **Addestramento**

  Il componente Training consente di inviare lavori di SageMaker formazione direttamente da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Hyperparameter Optimization**

  Il componente Hyperparameter Optimization consente di inviare lavori di ottimizzazione degli iperparametri all' SageMaker IA direttamente da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componenti di inferenza
<a name="inference-components-kfp"></a>
+ **Hosting Deploy**

  I componenti di hosting consentono di implementare un modello utilizzando i servizi di hosting SageMaker AI da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Batch Transform**

  Il componente Batch Transform consente di eseguire lavori di inferenza per un intero set di dati in SageMaker AI da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Model Monitor**

  I componenti Model Monitor consentono di monitorare la qualità dei modelli di machine learning SageMaker AI in produzione da un flusso di lavoro Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## autorizzazioni IAM
<a name="iam-permissions"></a>

L'implementazione di Kubeflow Pipelines con componenti SageMaker AI richiede i seguenti tre livelli di autenticazione: 
+ Un ruolo IAM che garantisce al nodo gateway (che può corrispondere al computer locale o a un'istanza remota) l'accesso al cluster Amazon Elastic Kubernetes Service (Amazon EKS).

  L'utente che accede al nodo gateway assume questo ruolo per svolgere le seguenti operazioni:
  + Creazione di un cluster Amazon EKS e installazione di KFP
  + Creazione di ruoli IAM
  + Creazione di bucket Amazon S3 per i dati di input di esempio

  Il ruolo richiede le seguenti autorizzazioni:
  + 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) 
  + IAMFullAccesso
  + Amazon S3 FullAccess
  + Amazon EC2 FullAccess
  + Amazon EKSAdmin Policy (crea questa policy utilizzando lo schema di [Amazon EKS Identity-Based](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html) Policy Examples) 
+ Un ruolo di esecuzione IAM di Kubernetes assunto da Kubernetes pipeline pods (**kfp-example-pod-role**) o dal controller pod AI Operator for Kubernetes per accedere all'IA. SageMaker SageMaker Questo ruolo viene utilizzato per creare e monitorare lavori di intelligenza artificiale da Kubernetes. SageMaker 

  Il ruolo richiede le seguenti autorizzazioni:
  + AmazonSageMakerFullAccess 

  Puoi limitare le autorizzazioni ai pod KFP e controller creando e collegando policy personalizzate.
+ **Un ruolo di esecuzione SageMaker AI IAM assunto dai job SageMaker AI per accedere a AWS risorse come Amazon S3 o Amazon ECR (kfp-example-sagemaker-execution-role).**

  SageMaker I lavori di intelligenza artificiale utilizzano questo ruolo per:
  + Accedere alle risorse di SageMaker intelligenza artificiale
  + Inserimento di dati da Amazon S3
  + Archiviazione del modello di output su Amazon S3

  Il ruolo richiede le seguenti autorizzazioni:
  + AmazonSageMakerFullAccess 
  + Amazon S3 FullAccess 

## Conversione delle pipeline per utilizzare l'intelligenza artificiale SageMaker
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

[Puoi convertire una pipeline esistente per utilizzare l' SageMaker intelligenza artificiale trasferendo i contenitori di [elaborazione Python generici e i contenitori](https://docs.aws.amazon.com/sagemaker/latest/dg/amazon-sagemaker-containers.html) di formazione.](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html) Se utilizzi l' SageMaker intelligenza artificiale per l'inferenza, devi anche allegare le autorizzazioni IAM al cluster e convertire un artefatto in un modello.

# Installazione di Kubeflow Pipelines
<a name="kubernetes-sagemaker-components-install"></a>

[Kubeflow Pipelines (KFP)](https://www.kubeflow.org/docs/components/pipelines/v2/introduction/) è il componente di orchestrazione delle pipeline di Kubeflow.

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'istanza Amazon EC2.

La seguente sezione illustra le fasi necessarie per impostare e configurare queste risorse.

**Topics**
+ [Selezione di un'opzione di installazione](#choose-install-option)
+ [Configura le autorizzazioni della pipeline per accedere all'IA SageMaker](#configure-permissions-for-pipeline)
+ [Accesso all'interfaccia utente KFP (dashboard Kubeflow)](#access-the-kfp-ui)

## Selezione di un'opzione di installazione
<a name="choose-install-option"></a>

Kubeflow Pipelines è disponibile come componente principale della distribuzione completa di Kubeflow su o come installazione autonoma. AWS 

Seleziona l'opzione applicabile al tuo caso d'uso:

1. [Kubeflow completo su Deployment AWS](#full-kubeflow-deployment)

   Per utilizzare altri componenti Kubeflow oltre a Kubeflow Pipelines, scegli l’implementazione completa [AWS per la distribuzione di Kubeflow](https://awslabs.github.io/kubeflow-manifests). 

1. [Implementazione standalone di Kubeflow Pipelines](#kubeflow-pipelines-standalone)

   Per utilizzare Kubeflow Pipelines senza gli altri componenti di Kubeflow, installa Kubeflow Pipelines standalone. 

### Kubeflow completo su Deployment AWS
<a name="full-kubeflow-deployment"></a>

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](https://awslabs.github.io/kubeflow-manifests/docs/deployment/) che supporti le integrazioni con vari servizi ( AWS Amazon S3, Amazon RDS, Amazon Cognito).

### Implementazione standalone di Kubeflow Pipelines
<a name="kubeflow-pipelines-standalone"></a>

Questa sezione presuppone che l'utente disponga delle autorizzazioni per creare ruoli e definire le policy per gli stessi.

#### Configurazione di un nodo gateway
<a name="set-up-a-gateway-node"></a>

Il nodo gateway può essere il computer locale o un'istanza Amazon EC2 come noto 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. 

1. 

**Crea un nodo gateway.**

   Puoi usare un'istanza Amazon EC2 esistente o creare una nuova istanza con l'ultima versione di Ubuntu 18.04 DLAMI seguendo le fasi descritte in [Avvio e configurazione di DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/launch-config.html).

1. 

**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 CloudFormation, Amazon EC2, Amazon S3, Amazon EKS.

   Collega al ruolo IAM le policy seguenti:
   + 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)
   + IAMFullAccesso 
   + Amazon S3 FullAccess 
   + Amazon EC2 FullAccess 
   + Amazon EKSAdmin Policy (crea questa policy utilizzando lo schema di [Amazon EKS Identity-Based](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html) Policy Examples) 

   Per informazioni sull'aggiunta di autorizzazioni IAM a un ruolo IAM, consulta [Aggiunta e rimozione di autorizzazioni per identità IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

1. 

**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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html): Lo strumento da riga di comando per lavorare con i servizi. AWS Per informazioni sulla configurazione di AWS CLI , consulta [Configurazione di 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)versione 0.1.31 e successive: uno strumento per utilizzare le credenziali AWS IAM per l'autenticazione in un cluster Kubernetes.
   + [https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html) versione 0.15 e successive: strumento a riga di comando per lavorare con i cluster Amazon EKS.
   + [https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl): strumento a riga di comando per lavorare con cluster Kubernetes. La versione deve corrispondere all’installazione di Kubernetes in una versione secondaria.
   + [https://aws.amazon.com/sdk-for-python/](https://aws.amazon.com/sdk-for-python/).

     ```
     pip install boto3
     ```

#### Configurazione di un cluster Amazon EKS
<a name="set-up-anamazon-eks-cluster"></a>

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

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

   1. Una volta completata la creazione del cluster, assicurati di poter accedere al cluster elencandone i nodi. 

      ```
      kubectl get nodes
      ```

1. Assicurati che il contesto `kubectl` corrente punti al cluster con il comando seguente. Il contesto corrente è contrassegnato da un asterisco (\$1) nell'output.

   ```
   kubectl config get-contexts
   
   CURRENT NAME     CLUSTER
   *   <username>@<clustername>.us-east-1.eksctl.io   <clustername>.us-east-1.eksctl.io
   ```

1. 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
<a name="install-kubeflow-pipelines"></a>

Esegui la seguente procedura dal terminale del nodo gateway per installare Kubeflow Pipelines sul tuo cluster.

1. Installa tutti i [componenti 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. 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"
   ```

1. 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
<a name="configure-permissions-for-pipeline"></a>

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
<a name="permissions-for-SM-v2"></a>

Per eseguire la versione 2 di SageMaker AI Components per Kubeflow Pipelines, devi installare [SageMaker AI Operator for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) e configurare Role-Based Access Control (RBAC) che consenta ai pod Kubeflow Pipelines di creare risorse AI personalizzate nel tuo cluster Kubernetes. SageMaker 

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

1. 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](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup).

1. 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 servizio `pipeline-runner`.

   1. Creane uno [RoleBinding](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-example)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
      ```

   1. 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)
<a name="permissions-for-SM-v1"></a>

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 

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

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

1. Crea un [provider di identità OIDC IAM per il cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) con il comando seguente.

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
               --region ${CLUSTER_REGION} --approve
   ```

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

[Una volta configurate le autorizzazioni della pipeline per accedere alla versione 1 di SageMaker AI Components, segui la guida ai componenti SageMaker AI per le pipeline Kubeflow sulla documentazione di Kubeflow. AWS](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/)

## Accesso all'interfaccia utente KFP (dashboard Kubeflow)
<a name="access-the-kfp-ui"></a>

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.

### Kubeflow on Deployment completo AWS
<a name="access-kfp-ui-full-kubeflow-deployment"></a>

Segui le istruzioni sul [AWS sito web di Kubeflow on](https://awslabs.github.io/kubeflow-manifests/docs/deployment/connect-kubeflow-dashboard/) per connetterti alla dashboard di Kubeflow e vai alla scheda pipelines.

### Implementazione standalone di Kubeflow Pipelines
<a name="access-kfp-ui-standalone-kubeflow-pipelines-deployment"></a>

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
<a name="set-up-port-forwarding-to-the-kfp-ui-service"></a>

Esegui il comando seguente dalla riga di comando del nodo gateway.

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

1. 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
<a name="set-up-port-forwarding-to-the-kfp-ui-service-access"></a>

Il metodo di accesso all'interfaccia utente KFP dipende dal tipo di nodo gateway.
+ Computer locale come nodo gateway:

  1. Accedi al dashboard del tuo browser nel modo seguente: 

     ```
     http://localhost:8080
     ```

  1. Scegli **Pipelines** per accedere all'interfaccia utente di Pipelines. 
+ Istanza Amazon EC2 come nodo gateway:

  1. È necessario configurare un tunnel SSH sulla propria istanza Amazon EC2 per accedere al dashboard di Kubeflow dal browser del 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 dell'istanza trovato sulla console Amazon EC2. 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}
     ```

  1. Accedi al dashboard del tuo browser nel browser. 

     ```
     http://localhost:9000
     ```

  1. 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.
<a name="add-access-to-additional-iam-users-or-roles"></a>

Un'istanza SageMaker notebook è un'istanza di calcolo Amazon EC2 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 per Python (Boto3) o la CLI KFP. 

1. Segui la procedura descritta in [Crea un'istanza SageMaker Notebook per creare un'istanza](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) notebook, quindi collega la `S3FullAccess` policy al relativo ruolo di esecuzione IAM.

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

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

1. 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 configurazione `aws-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.

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

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

# Usa componenti AI SageMaker
<a name="kubernetes-sagemaker-components-tutorials"></a>

In questo tutorial, esegui una pipeline utilizzando SageMaker AI Components for Kubeflow Pipelines per addestrare un modello di classificazione utilizzando Kmeans con il set di dati MNIST su AI. SageMaker Il flusso di lavoro utilizza Kubeflow Pipelines come orchestratore e l'intelligenza artificiale per eseguire ogni fase del flusso di lavoro. SageMaker L'esempio è stato tratto da un esempio di [ SageMaker intelligenza artificiale esistente e modificato per funzionare con SageMaker AI Components](https://github.com/aws/amazon-sagemaker-examples/blob/8279abfcc78bad091608a4a7135e50a0bd0ec8bb/sagemaker-python-sdk/1P_kmeans_highlevel/kmeans_mnist.ipynb) for Kubeflow Pipelines.

Puoi definire la tua pipeline in Python AWS SDK per Python (Boto3) utilizzando quindi la dashboard KFP, la CLI KFP o Boto3 per compilare, distribuire ed eseguire i flussi di lavoro. Il codice completo per l'esempio della pipeline di classificazione MNIST è disponibile nel [Repository Github di Kubeflo.](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples/mnist-kmeans-sagemaker#mnist-classification-with-kmeans). Per usarlo, clona i file Python sul tuo nodo gateway.

Puoi trovare altri esempi GitHub di AI Kubeflow [ SageMaker Pipelines](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples) su. [Per informazioni sui componenti utilizzati, consulta il repository Pipelines. KubeFlow GitHub ](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker)

Per eseguire l'esempio della pipeline di classificazione, crea un ruolo di esecuzione IAM SageMaker AI che conceda al tuo processo di formazione l'autorizzazione ad accedere alle AWS risorse, quindi continua con i passaggi corrispondenti all'opzione di implementazione che hai scelto.

## Crea un ruolo di SageMaker esecuzione AI
<a name="create-an-amazonsagemaker-execution-role"></a>

Il ruolo `kfp-example-sagemaker-execution-role` IAM è un ruolo di runtime assunto dai lavori di SageMaker intelligenza artificiale per accedere alle AWS risorse. Nel comando seguente, crei un ruolo di esecuzione IAM denominato`kfp-example-sagemaker-execution-role`, alleghi due policy gestite (AmazonSageMakerFullAccessAmazonS3FullAccess) e crei una relazione di fiducia con l' SageMaker IA per concedere SageMaker ai lavori di IA l'accesso a tali risorse. AWS 

Fornisci questo ruolo come parametro di input durante l'esecuzione della pipeline.

Per creare un ruolo, esegui il comando seguente. Tieni presente che l'ARN viene restituito nell'output.

```
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 completo su Deployment AWS
<a name="run-pipelines-on-full-kubeflow-deployment"></a>

Segui le istruzioni del [tutorial SageMaker Training Pipeline per la classificazione MNIST](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/) con K-Means.

## Implementazione standalone di Kubeflow Pipelines
<a name="run-pipelines-on-standalone-kubeflow-pipelines-deployment"></a>

### Preparazione di set di dati
<a name="prepare-datasets"></a>

Per eseguire le pipeline, è necessario caricare lo script di pre-elaborazione dell'estrazione dei dati in un bucket Amazon S3. Questo bucket e tutte le risorse esemplificative devono trovarsi nella Regione `us-east-1`. Per informazioni sulla creazione di un bucket, consulta [Creazione di un bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html).

Dalla cartella `mnist-kmeans-sagemaker` del repository Kubeflow che hai clonato sul nodo gateway, esegui il comando seguente per caricare il file `kmeans_preprocessing.py` nel tuo bucket Amazon S3. Cambia con `<bucket-name>` il nome del bucket Amazon S3.

```
aws s3 cp mnist-kmeans-sagemaker/kmeans_preprocessing.py s3://<bucket-name>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
```

### Compilazione e implementazione della pipeline
<a name="compile-and-deploy-your-pipeline"></a>

Dopo aver definito la pipeline, è necessario compilarla in una rappresentazione intermedia prima di sottoporla al servizio Kubeflow Pipelines sul cluster. La rappresentazione intermedia è una specifica del flusso di lavoro sotto forma di file YAML compresso in un file tar.gz. È necessario l'SDK KFP per compilare la pipeline.

#### Installazione dell'SDK KFP
<a name="install-kfp-sdk"></a>

Svolgi le seguenti operazioni dalla riga di comando del nodo gateway:

1. Installa l'SDK KFP seguendo le istruzioni contenute nella [Documentazione di Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/sdk/install-sdk/).

1. Verificare che l'SDK KFP sia installato con il seguente comando:

   ```
   pip show kfp
   ```

1. Verifica che `dsl-compile` sia stato installato correttamente, secondo quanto segue:

   ```
   which dsl-compile
   ```

#### Compilazione della pipeline
<a name="compile-your-pipeline"></a>

Sono disponibili tre opzioni per interagire con Kubeflow Pipelines: UI, CLI o SDK di KFP. Le seguenti sezioni illustrano il flusso di lavoro utilizzando l'interfaccia utente e la CLI di KFP.

Completa la seguente procedura dal nodo gateway.

1. Modifica il tuo file Python con il nome del bucket Amazon S3 e l'ARN del ruolo IAM.

1. Usa il comando `dsl-compile` dalla riga di comando per compilare la pipeline come segue. Sostituisci `<path-to-python-file>` con il percorso della pipeline e `<path-to-output>` con la posizione in cui desideri che si trovi il file tar.gz.

   ```
   dsl-compile --py <path-to-python-file> --output <path-to-output>
   ```

#### Caricamento ed esecuzione della pipeline utilizzando la CLI KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-cli"></a>

Completa la seguente procedura dalla riga di comando del nodo gateway. KFP organizza le esecuzioni della pipeline sotto forma di esperimenti. Hai la possibilità di specificare il nome di un esperimento. Se non ne specifichi uno, l'esecuzione verrà elencata nell’esperimento **Predefinito**.

1. Carica la tua pipeline come segue:

   ```
   kfp pipeline upload --pipeline-name <pipeline-name> <path-to-output-tar.gz>
   ```

   L'aspetto dell'output sarà simile al seguente. Prendi nota della pipeline `ID`.

   ```
   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. Crea un’esecuzione utilizzando il comando seguente. Il comando di esecuzione della CLI di KFP attualmente non supporta la specifica dei parametri di input durante la creazione dell'esecuzione. È necessario aggiornare i parametri nel file della AWS SDK per Python (Boto3) pipeline prima della compilazione. Sostituisci `<experiment-name>` e `<job-name>` con qualsiasi nome. Sostituisci `<pipeline-id>` con l'ID della pipeline inviata. Sostituisci `<your-role-arn>` con l'ARN di `kfp-example-pod-role`. Sostituisci `<your-bucket-name>` con il nome del bucket Amazon S3 creato. 

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

   È inoltre possibile inviare direttamente un'esecuzione utilizzando il pacchetto di pipeline compilato creato come output del comando `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>"
   ```

   L'aspetto dell'output deve essere simile al seguente:

   ```
   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. Accedi all'interfaccia utente per verificare lo stato di avanzamento del processo.

#### Caricamento ed esecuzione della pipeline utilizzando l’UI di KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-ui"></a>

1. Nel pannello a sinistra, scegli la scheda **Pipelines**. 

1. **Nell'angolo in alto a destra, scegli \$1. UploadPipeline** 

1. Inserisci il nome e la descrizione della pipeline. 

1. Scegli **Carica file** e inserisci il percorso del file tar.gz creato utilizzando la CLI o AWS SDK per Python (Boto3).

1. Nel pannello a sinistra, scegli la scheda **Pipelines**.

1. Trova la pipeline creata.

1. **Scegli \$1. CreateRun**

1. Inserisci i parametri di input.

1. Scegli **Esegui**.

### Esecuzione di previsioni
<a name="running-predictions"></a>

Una volta implementata la pipeline di classificazione, puoi eseguire previsioni di classificazione sull'endpoint creato dal componente Deploy. Usa l'interfaccia utente KFP per controllare gli artefatti di output per `sagemaker-deploy-model-endpoint_name`. Scarica il file.tgz per estrarre il nome dell'endpoint o controlla la console SageMaker AI nella regione che hai utilizzato.

#### Configurazione delle autorizzazioni per l’esecuzione di previsioni
<a name="configure-permissions-to-run-predictions"></a>

Se desideri eseguire previsioni dal tuo nodo gateway, ignora questa sezione.

**Per utilizzare qualsiasi altro computer per eseguire previsioni, assegna l'autorizzazione `sagemaker:InvokeEndpoint` al ruolo IAM usato dal computer client.**

1. Sul nodo gateway, svolgi le seguenti operazioni per creare un file di policy IAM:

   ```
   cat <<EoF > ./sagemaker-invoke.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:InvokeEndpoint"
               ],
               "Resource": "*"
           }
       ]
   }
   EoF
   ```

1. Collega la policy al ruolo IAM del nodo client.

   Eseguire il seguente comando seguente. Sostituisci `<your-instance-IAM-role>` con il nome del ruolo IAM. Sostituisci `<path-to-sagemaker-invoke-json>` con il percorso del file di policy creato.

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

#### Esecuzione di previsioni
<a name="run-predictions"></a>

1. Crea un AWS SDK per Python (Boto3) file dal tuo computer client denominato `mnist-predictions.py` con il seguente contenuto. Sostituisci la variabile `ENDPOINT_NAME`. Lo script carica il set di dati MNIST, crea un file CSV a partire da quelle cifre, quindi invia il file CSV all'endpoint per la previsione e stampa i risultati.

   ```
   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. Esegui il AWS SDK per Python (Boto3) file come segue:

   ```
   python mnist-predictions.py
   ```

### Visualizzazione di risultati e registri
<a name="view-results-and-logs"></a>

Quando la pipeline è in esecuzione, puoi scegliere qualsiasi componente per controllare i dettagli di esecuzione, come input e output. Vengono elencati i nomi delle risorse create.

Se la richiesta KFP viene elaborata correttamente e viene creato un lavoro SageMaker AI, i registri dei componenti nell'interfaccia utente KFP forniscono un collegamento al lavoro creato in AI. SageMaker I CloudWatch log vengono forniti anche se il lavoro viene creato correttamente. 

Se esegui troppi processi relativi alla pipeline sullo stesso cluster, potresti visualizzare un messaggio di errore, a indicare la mancata disponibilità di un numero sufficiente di pod. Per risolvere questo problema, accedi al tuo nodo gateway ed elimina i pod creati dalle pipeline che non stai utilizzando:

```
kubectl get pods -n kubeflow
kubectl delete pods -n kubeflow <name-of-pipeline-pod>
```

### Rimozione
<a name="cleanup"></a>

Al termine del processo relativo alla pipeline, è necessario rimuovere le risorse.

1. Dal dashboard di KFP, interrompi i percorsi della pipeline se non è possibile uscirne correttamente selezionando **Termina**.

1. Se l'opzione **Termina** non funziona, accedi al nodo gateway e interrompi manualmente tutti i pod creati dalla pipeline, svolgendo le seguenti operazioni: 

   ```
   kubectl get pods -n kubeflow
   kubectl delete pods -n kubeflow <name-of-pipeline-pod>
   ```

1. Utilizzando il tuo AWS account, accedi al servizio SageMaker AI. Interrompi manualmente tutti i processi di addestramento, trasformazione in batch e HPO. Elimina modelli, bucket di dati ed endpoint per evitare che influiscano sulle tue risorse. L'interruzione delle operazioni della pipeline non interrompe i lavori nell' SageMaker intelligenza artificiale.