

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

# IMPLEMENTA MLOps
<a name="mlops"></a>

Amazon SageMaker AI supporta funzionalità per implementare modelli di machine learning in ambienti di produzione con integrazione e distribuzione continue. I seguenti argomenti forniscono informazioni su come configurare l' MLOps infrastruttura quando si utilizza l' SageMaker intelligenza artificiale.

**Topics**
+ [Perché dovresti usare MLOps?](sagemaker-projects-why.md)
+ [SageMaker Esperimenti](experiments-mlops.md)
+ [SageMaker Flussi di lavoro AI](workflows.md)
+ [Monitoraggio del lignaggio di Amazon SageMaker ML](lineage-tracking.md)
+ [Implementazione della registrazione del modello con il registro dei modelli](model-registry.md)
+ [Implementazione di modelli nell' SageMaker IA](model-deploy-mlops.md)
+ [SageMaker Model Monitor](model-monitor-mlops.md)
+ [MLOps Automazione con SageMaker progetti](sagemaker-projects.md)
+ [MLOps Risoluzione dei problemi di Amazon SageMaker AI](mlopsfaq.md)

# Perché dovresti usare MLOps?
<a name="sagemaker-projects-why"></a>

Man mano che passi dall'utilizzo individuale dell'intelligenza artificiale e dell'apprendimento automatico (AI/ML) projects to using AI/ML to transform your business at scale, the discipline of ML Operations (MLOps) can help. MLOps accounts for the unique aspects of AI/ML projects in project management, CI/CDe del controllo della qualità), puoi migliorare i tempi di consegna, ridurre i difetti e rendere più produttiva la scienza dei dati. MLOps si riferisce a una metodologia basata sull'applicazione di DevOps pratiche ai carichi di lavoro di machine learning. Per una discussione DevOps sui principi, vedere il white paper [Introduzione a DevOps on AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/welcome.html?did=wp_card). Per ulteriori informazioni sull'implementazione tramite AWS i servizi, consulta [Practicing CI/CD on AWS](https://d1.awsstatic.com/whitepapers/DevOps/practicing-continuous-integration-continuous-delivery-on-AWS.pdf) and [Infrastructure as Code.](https://d1.awsstatic.com/whitepapers/DevOps/infrastructure-as-code.pdf)

Like DevOps, MLOps si basa su un approccio collaborativo e semplificato al ciclo di vita di sviluppo dell'apprendimento automatico, in cui l'intersezione di persone, processi e tecnologia ottimizza le end-to-end attività necessarie per sviluppare, creare e gestire carichi di lavoro di machine learning.

MLOps si concentra sull'intersezione tra scienza dei dati e ingegneria dei dati in combinazione con le DevOps pratiche esistenti per semplificare la distribuzione dei modelli durante il ciclo di vita dello sviluppo dell'apprendimento automatico. MLOps è la disciplina che integra i carichi di lavoro ML nella gestione dei rilasci, nella CI/CD e nelle operazioni. MLOps richiede l'integrazione dello sviluppo del software, delle operazioni, dell'ingegneria dei dati e della scienza dei dati.

## Sfide con MLOps
<a name="sagemaker-projects-why-challenges"></a>

Sebbene MLOps possa fornire strumenti preziosi per aiutarvi a far crescere la vostra attività, potreste incontrare alcuni problemi durante l' MLOps integrazione nei vostri carichi di lavoro di machine learning.

**Gestione progettuale**
+ I progetti di machine learning coinvolgono i data scientist, i quali ricoprono un ruolo relativamente nuovo e spesso non integrato adeguatamente in team interfunzionali. Questi nuovi membri del team spesso parlano un linguaggio tecnico molto diverso da quello dei proprietari dei prodotti e degli ingegneri del software, il che aggrava il problema comune di tradurre le normative aziendali in requisiti tecnici. 

**Comunicazione e collaborazione**
+ Aumentare la visibilità sui progetti di machine learning e consentire la collaborazione tra diverse parti interessate, come ingegneri dei dati, data scientist, ingegneri di machine learning, DevOps sta diventando sempre più importante per garantire risultati di successo.



**Il codice è tutto**
+ Utilizzo di dati di produzione nelle attività di sviluppo, cicli di vita di sperimentazione più lunghi, dipendenza dalle pipeline di dati, riqualificazione delle pipeline di implementazione e metriche univoche per la valutazione delle prestazioni di un modello:
+ i modelli hanno spesso un ciclo di vita indipendente dalle applicazioni e dai sistemi con cui si integrano. 
+ L'intero end-to-end sistema è riproducibile tramite codice e artefatti con versioni diverse. DevOps i progetti utilizzano Infrastructure-as-Code (IaC) e Configuration-as-Code (CaC) per creare ambienti e Pipelines-as-Code (PaC) per garantire modelli coerenti. CI/CD Le pipeline devono integrarsi con i flussi di lavoro di addestramento su big data e ML. Ciò significa spesso che la pipeline è una combinazione di uno CI/CD strumento tradizionale e un altro motore di flusso di lavoro. Molti progetti di machine learning sono soggetti a violazione delle policy, quindi potrebbe essere necessario che anche la pipeline applichi tali policy. Dati di input distorti producono risultati anomali, il che rappresenta una preoccupazione sempre più grande per le parti interessate aziendali.

**CI/CD**
+ Nel MLOps, i dati di origine sono un input di prima classe, insieme al codice sorgente. Ecco perché MLOps le richieste per il controllo delle versioni dei dati di origine e l'avvio della pipeline vengono eseguite quando i dati di origine o di inferenza cambiano. 
+ Le pipeline devono inoltre modificare i modelli ML, insieme agli input e ad altri output, per garantire la tracciabilità. 
+ I test automatizzati devono includere la corretta convalida del modello ML durante le fasi di costruzione e produzione del modello.
+ Le fasi di creazione possono includere l'addestramento e la riqualifica del modello, un processo che richiede molto tempo e risorse. Le pipeline devono essere sufficientemente granulari da eseguire un ciclo di addestramento completo solo quando i dati di origine o il codice ML cambiano, ma non quando variano i componenti correlati.
+ Poiché il codice di machine learning rappresenta in genere una piccola parte di una soluzione globale, una pipeline di implementazione può includere anche le fasi aggiuntive necessarie per confezionare un modello da utilizzare come API da parte di altre applicazioni e sistemi.

**Monitoraggio e registrazione**
+ Le fasi di progettazione delle funzionalità e di addestramento dei modelli sono necessarie per acquisire le metriche di addestramento dei modelli e gli esperimenti sui modelli. L'ottimizzazione di un modello di machine learning richiede la manipolazione della forma dei dati di input e degli iperparametri dell'algoritmo, nonché l'acquisizione sistematica di tali esperimenti. Il tracciamento degli esperimenti aiuta i data scientist a lavorare in modo più efficace e fornisce un'istantanea riproducibile del loro lavoro.
+ I modelli ML implementati richiedono il monitoraggio dei dati trasmessi al modello per l'inferenza, oltre alle metriche standard di stabilità e prestazioni degli endpoint. Il sistema di monitoraggio deve inoltre acquisire la qualità dell'output del modello, valutata mediante metriche ML appropriate. 

## Vantaggi di MLOps
<a name="sagemaker-projects-benefits"></a>

L'adozione di MLOps pratiche consente di velocizzare time-to-market i progetti di machine learning offrendo i seguenti vantaggi.
+ **Produttività**: la fornitura di ambienti self-service con accesso a set di dati selezionati consente ai data engineer e ai data scientist di muoversi più velocemente e di perdere meno tempo con dati mancanti o non validi.
+ **Ripetibilità**: l'automazione di tutte le fasi in MLDC aiuta a garantire un processo ripetibile, incluso il modo in cui il modello viene addestrato, valutato, sottoposto al controllo delle versioni e distribuito. 
+ **Affidabilità**: l’integrazione delle pratiche CI/CD consente non solo una rapida implementazione, ma anche di aumentare la qualità e la coerenza. 
+ **Verificabilità**: il controllo delle versioni di tutti gli input e gli output, dagli esperimenti di data science ai dati di origine fino al modello addestrato, permette di dimostrare esattamente come il modello è stato creato e dove è stato implementato.
+ **Qualità dei dati e dei modelli**: ci MLOps consente di applicare politiche che proteggono dalle distorsioni dei modelli e di tenere traccia delle modifiche alle proprietà statistiche dei dati e alla qualità del modello nel tempo. 

# SageMaker Esperimenti
<a name="experiments-mlops"></a>

La creazione di modelli ML richiede numerose iterazioni di addestramento durante l’ottimizzazione dell'algoritmo, dell'architettura del modello e dei relativi parametri per ottenere un'elevata precisione di previsione. Puoi tenere traccia degli input e degli output di queste iterazioni di formazione per migliorare la ripetibilità delle prove e la collaborazione all'interno del tuo team utilizzando Amazon Experiments. SageMaker Puoi anche tenere traccia di parametri, metriche, set di dati e altri elementi relativi ai tuoi lavori di formazione sui modelli. SageMaker Experiments offre un'unica interfaccia in cui è possibile visualizzare i lavori di formazione in corso, condividere esperimenti all'interno del team e distribuire modelli direttamente da un esperimento.

Per ulteriori informazioni sugli SageMaker esperimenti, consulta. [SageMaker Esperimenti di Amazon in Studio Classic](experiments.md)

# SageMaker Flussi di lavoro AI
<a name="workflows"></a>

Man mano che ridimensioni le tue operazioni di machine learning (ML), puoi utilizzare i servizi di flusso di lavoro completamente gestiti di Amazon SageMaker AI per implementare pratiche di integrazione e distribuzione continue (CI/CD) per il tuo ciclo di vita ML. Con l’SDK Pipelines, puoi scegliere e integrare le fasi della pipeline in una soluzione unificata che automatizza il processo di creazione del modello dalla preparazione dei dati all’implementazione del modello. Per le architetture basate su Kubernetes, puoi installare SageMaker AI Operators sul tuo cluster Kubernetes per creare lavori di intelligenza artificiale in modo nativo utilizzando l'API Kubernetes e strumenti Kubernetes a riga di SageMaker comando come. `kubectl` Con i componenti SageMaker AI per le pipeline Kubeflow, puoi creare e monitorare lavori di intelligenza artificiale nativi dalle tue pipeline Kubeflow. SageMaker I parametri, lo stato e gli output del processo di SageMaker intelligenza artificiale sono accessibili dall'interfaccia utente di Kubeflow Pipelines. Infine, se desideri pianificare i lavori in batch, puoi utilizzare l'integrazione della coda di lavoro o il servizio di flussi di AWS Batch lavoro basato su notebook Jupyter per avviare esecuzioni autonome o regolari secondo una pianificazione definita dall'utente.

 SageMaker In sintesi, l'intelligenza artificiale offre le seguenti tecnologie per il flusso di lavoro:
+ [Pipelines](pipelines.md): strumento per la creazione e la gestione di pipeline ML.
+ [Orchestrazione Kubernetes](kubernetes-workflows.md): Operatori di SageMaker intelligenza artificiale personalizzati per il cluster Kubernetes e componenti per Kubeflow Pipelines.
+ [SageMaker Lavori su notebook](notebook-auto-run.md): esecuzioni in batch non interattive su richiesta o pianificate del notebook Jupyter.

Puoi anche sfruttare altri servizi che si integrano con l'intelligenza artificiale per creare il tuo flusso di lavoro. SageMaker Le opzioni includono i seguenti servizi:
+ [Flussi di lavoro Airflow](https://sagemaker.readthedocs.io/en/stable/workflows/airflow/index.html): SageMaker APIs per esportare le configurazioni per la creazione e la gestione dei flussi di lavoro Airflow.
+ [AWS Step Functions](https://sagemaker.readthedocs.io/en/stable/workflows/step_functions/index.html): flussi di lavoro ML in più fasi in Python che orchestrano l'infrastruttura SageMaker AI senza dover fornire le risorse separatamente.
+ [AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html): Invia i lavori di formazione sull' SageMaker intelligenza artificiale a una coda di AWS Batch lavoro, dove puoi dare priorità e pianificare i lavori da eseguire in un ambiente di elaborazione.

Per ulteriori informazioni sulla gestione della SageMaker formazione e dell'inferenza, consulta [Amazon SageMaker Python SDK Workflows](https://sagemaker.readthedocs.io/en/stable/workflows/index.html).

**Topics**
+ [Pipelines](pipelines.md)
+ [Orchestrazione Kubernetes](kubernetes-workflows.md)
+ [SageMaker Lavori su notebook](notebook-auto-run.md)
+ [Pianificazione dei flussi di lavoro di ML](workflow-scheduling.md)
+ [AWS Batch supporto per lavori di formazione SageMaker sull'intelligenza artificiale](training-job-queues.md)

# Pipelines
<a name="pipelines"></a>

Amazon SageMaker Pipelines è un servizio di orchestrazione del flusso di lavoro creato appositamente per automatizzare lo sviluppo dell'apprendimento automatico (ML).

Le pipeline offrono i seguenti vantaggi rispetto ad altre offerte di flussi di lavoro: AWS 

Infrastruttura **serverless con scalabilità automatica Non è necessario gestire l'infrastruttura** di orchestrazione sottostante per eseguire Pipelines, il che consente di concentrarsi sulle attività di machine learning principali. SageMaker L'intelligenza artificiale fornisce, ridimensiona e chiude automaticamente le risorse di elaborazione di orchestrazione della pipeline in base alle esigenze del carico di lavoro ML.

**Esperienza utente intuitiva** Le pipeline possono essere create e gestite tramite l'interfaccia che preferisci: editor visivo, SDK o JSON. APIs Puoi seguire drag-and-drop le varie fasi di machine learning per creare le tue pipeline nell'interfaccia visiva di Amazon SageMaker Studio. Lo screenshot seguente mostra l’editor visivo di Studio per le pipeline.

![\[Schermata dell' drag-and-dropinterfaccia visiva di Pipelines in Studio.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Se preferisci gestire i flussi di lavoro ML in modo programmatico, SageMaker Python SDK offre funzionalità di orchestrazione avanzate. Per ulteriori informazioni, consulta [Amazon SageMaker Pipelines](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html) nella documentazione di SageMaker Python SDK.

**AWS integrazioni** Pipelines offre una perfetta integrazione con tutte le funzionalità di SageMaker intelligenza artificiale e altri AWS servizi per automatizzare l'elaborazione dei dati, la formazione dei modelli, la messa a punto, la valutazione, l'implementazione e il monitoraggio dei lavori. Puoi incorporare le funzionalità di SageMaker intelligenza artificiale nelle tue pipeline e navigare tra di esse utilizzando collegamenti diretti per creare, monitorare ed eseguire il debug dei flussi di lavoro ML su larga scala.

**Costi ridotti** Con Pipelines, paghi solo per l'ambiente SageMaker Studio e i lavori sottostanti orchestrati da Pipelines (ad esempio, SageMaker Training, SageMaker Processing, SageMaker AI Inference e storage dati Amazon S3).

**Verificabilità e monitoraggio del lineage** Con Pipelines, puoi tenere traccia della cronologia degli aggiornamenti e delle esecuzioni delle pipeline utilizzando il controllo delle versioni integrato. Amazon SageMaker ML Lineage Tracking ti aiuta ad analizzare le fonti di dati e i consumatori di dati nel ciclo di vita dello sviluppo end-to-end ML.

**Topics**
+ [Panoramica su Pipelines](pipelines-overview.md)
+ [Azioni di Pipelines](pipelines-build.md)

# Panoramica su Pipelines
<a name="pipelines-overview"></a>

[Una pipeline Amazon SageMaker AI è una serie di passaggi interconnessi in grafo aciclico diretto (DAG) definiti utilizzando l'interfaccia utente o l' drag-and-dropSDK Pipelines.](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html) Puoi anche creare la tua pipeline con lo [schema JSON di definizione della pipeline](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). La definizione JSON di DAG fornisce informazioni sui requisiti e sulle relazioni tra ogni fase della pipeline. La struttura del DAG di una pipeline è determinata dalle dipendenze dei dati tra le varie fasi. Queste dipendenze tra i dati vengono create quando le proprietà dell'output di una fase vengono trasmesse come input a un'altra fase. L'immagine seguente è un esempio di DAG di pipeline:

![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipeline-full.png)


**Questo DAG di esempio include le fasi seguenti:**

1. `AbaloneProcess`, un’istanza della fase di [elaborazione](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), esegue uno script di pre-elaborazione sui dati utilizzati per l’addestramento. Ad esempio, lo script può inserire i valori mancanti, normalizzare i dati numerici o suddividere i dati nei set di dati di addestramento, convalida e test.

1. `AbaloneTrain`, un’istanza della fase di [addestramento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-training), configura gli iperparametri e addestra un modello a partire dai dati di input pre-elaborati.

1. `AbaloneEval`, un’altra istanza della fase di [elaborazione](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), valuta l’accuratezza del modello. Questa fase mostra un esempio di dipendenza dai dati: questa fase utilizza l’output del set di dati di test di `AbaloneProcess`.

1. `AbaloneMSECond`è un'istanza di una fase [Condition](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-condition) che, in questo esempio, verifica che il mean-square-error risultato della valutazione del modello sia inferiore a un determinato limite. Se il modello non soddisfa i criteri, l’esecuzione della pipeline si arresta.

1. L’esecuzione della pipeline procede con le fasi seguenti:

   1. `AbaloneRegisterModel`, dove l' SageMaker intelligenza artificiale richiede una [RegisterModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-register-model)fase per registrare il modello come gruppo di pacchetti di modelli con versioni nell'Amazon SageMaker Model Registry.

   1. `AbaloneCreateModel`, dove l' SageMaker intelligenza artificiale prevede una [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-create-model)fase per creare il modello in preparazione della trasformazione in batch. Nel`AbaloneTransform`, l' SageMaker intelligenza artificiale richiama una fase di [trasformazione](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-transform) per generare previsioni del modello su un set di dati specificato dall'utente.

Gli argomenti seguenti descrivono i concetti fondamentali di Pipelines. Per un tutorial che descrive l'implementazione di questi concetti, consulta [Azioni di Pipelines](pipelines-build.md).

**Topics**
+ [Struttura ed esecuzione della pipeline](build-and-manage-pipeline.md)
+ [Gestione degli accessi IAM](build-and-manage-access.md)
+ [Configurazione del supporto multi-account per Pipelines](build-and-manage-xaccount.md)
+ [Parametri della pipeline](build-and-manage-parameters.md)
+ [Fasi delle pipeline](build-and-manage-steps.md)
+ [Lift-and-shift Codice Python con il decoratore @step](pipelines-step-decorator.md)
+ [Passaggio dei dati tra le fasi](build-and-manage-propertyfile.md)
+ [Caching delle fasi della pipeline](pipelines-caching.md)
+ [Policy di ripetizione per la fasi della pipeline](pipelines-retry-policy.md)
+ [Esecuzione selettiva di fasi della pipeline](pipelines-selective-ex.md)
+ [Calcolo di base, rilevamento della deriva e ciclo di vita con e ClarifyCheck fasi QualityCheck in Amazon Pipelines SageMaker](pipelines-quality-clarify-baseline-lifecycle.md)
+ [Pianificazione delle esecuzioni della pipeline](pipeline-eventbridge.md)
+ [Integrazione con Amazon SageMaker Experiments](pipelines-experiments.md)
+ [Esecuzione delle pipeline con la modalità locale](pipelines-local-mode.md)
+ [Risoluzione dei problemi di Amazon SageMaker Pipelines](pipelines-troubleshooting.md)

# Struttura ed esecuzione della pipeline
<a name="build-and-manage-pipeline"></a>

**Topics**
+ [Struttura della pipeline](#build-and-manage-pipeline-structure)
+ [Esecuzione della pipeline utilizzando la configurazione del parallelismo](#build-and-manage-pipeline-execution)

## Struttura della pipeline
<a name="build-and-manage-pipeline-structure"></a>

Un'istanza Amazon SageMaker Pipelines è composta da un `name``parameters`, e`steps`. I nomi delle pipeline devono essere univoci all'interno di una coppia `(account, region)`. Tutti i parametri utilizzati nelle definizioni delle fasi devono essere definiti nella pipeline. Le fasi della pipeline elencate determinano automaticamente il loro ordine di esecuzione in base alle reciproche dipendenze dei dati. Il servizio Pipelines risolve le relazioni tra le fasi del DAG di dipendenza dai dati per creare una serie di fasi completate dall’esecuzione. Il seguente è un esempio di struttura di pipeline.

**avvertimento**  
Quando crei una pipeline tramite l'editor visivo o l'SDK SageMaker AI Python, non includere informazioni sensibili nei parametri della pipeline o in alcun campo di definizione dei passaggi (come le variabili di ambiente). Questi campi saranno visibili in futuro quando verranno restituiti in una richiesta `DescribePipeline`.

```
from sagemaker.workflow.pipeline import Pipeline
  
  pipeline_name = f"AbalonePipeline"
  pipeline = Pipeline(
      name=pipeline_name,
      parameters=[
          processing_instance_type, 
          processing_instance_count,
          training_instance_type,
          model_approval_status,
          input_data,
          batch_data,
      ],
      steps=[step_process, step_train, step_eval, step_cond],
  )
```

## Esecuzione della pipeline utilizzando la configurazione del parallelismo
<a name="build-and-manage-pipeline-execution"></a>

Per impostazione predefinita, una pipeline esegue tutte le fasi disponibili per l'esecuzione in parallelo. È possibile controllare questo comportamento utilizzando la proprietà `ParallelismConfiguration` durante la creazione o l'aggiornamento di una pipeline, nonché quando si avvia o si ritenta l'esecuzione di una pipeline. 

Le configurazioni di parallelismo vengono applicate per ogni esecuzione. Ad esempio, se vengono avviate due esecuzioni, ciascuna può eseguire un massimo di 50 passaggi contemporaneamente, per un totale di 100 fasi in esecuzione simultanea. Inoltre, qualsiasi `ParallelismConfiguration` all'avvio, al nuovo tentativo o all'aggiornamento di un'esecuzione ha la precedenza sulle configurazioni di parallelismo definite nella pipeline.

**Example Creazione di un'esecuzione di pipeline con `ParallelismConfiguration`**  

```
pipeline = Pipeline(
        name="myPipeline",
        steps=[step_process, step_train]
    )

  pipeline.create(role, parallelism_config={"MaxParallelExecutionSteps": 50})
```

# Gestione degli accessi IAM
<a name="build-and-manage-access"></a>

Le seguenti sezioni descrivono i requisiti AWS Identity and Access Management (IAM) per Amazon SageMaker Pipelines. Per un esempio di implementazione delle autorizzazioni, consulta [Prerequisiti](define-pipeline.md#define-pipeline-prereq).

**Topics**
+ [Autorizzazioni relative ai ruoli della pipeline](#build-and-manage-role-permissions)
+ [Autorizzazioni relative alle fasi della pipeline](#build-and-manage-step-permissions)
+ [Configurazione CORS con bucket Amazon S3](#build-and-manage-cors-s3)
+ [Personalizzazione della gestione degli accessi per i processi Pipelines](#build-and-manage-step-permissions-prefix)
+ [Personalizzazione dell’accesso alle versioni della pipeline](#build-and-manage-step-permissions-version)
+ [Policy di controllo dei servizi con Pipelines](#build-and-manage-scp)

## Autorizzazioni relative ai ruoli della pipeline
<a name="build-and-manage-role-permissions"></a>

La tua pipeline richiede un ruolo di esecuzione della pipeline IAM che viene passato a Pipelines quando crei una pipeline. Il ruolo per l'istanza di SageMaker intelligenza artificiale che stai utilizzando per creare la pipeline deve avere una policy con l'`iam:PassRole`autorizzazione che specifichi il ruolo di esecuzione della pipeline. Questo perché l'istanza necessita dell'autorizzazione per passare il ruolo di esecuzione della pipeline al servizio Pipelines da utilizzare nella creazione e nell'esecuzione di pipeline. Per ulteriori informazioni sui ruoli IAM, consulta [Ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

Il ruolo di esecuzione della pipeline richiede le seguenti autorizzazioni:
+ Puoi utilizzare un ruolo unico o personalizzato per qualsiasi fase del processo di SageMaker intelligenza artificiale nella tua pipeline (anziché il ruolo di esecuzione della pipeline, che viene utilizzato per impostazione predefinita). Assicurati che al tuo ruolo di esecuzione della pipeline sia stata aggiunta una policy con l'`iam:PassRole`autorizzazione che specifichi ciascuno di questi ruoli.
+  Autorizzazioni `Create` e `Describe` per ogni tipo di processo nella pipeline. 
+  Autorizzazioni Amazon S3 per utilizzare la funzione `JsonGet`. È possibile controllare l’accesso alle risorse Amazon S3 utilizzando policy basate sulle identità e sulle risorse. Al bucket Amazon S3 viene applicata una policy basata sulle risorse, che consente a Pipelines di accedere al bucket. Una policy basata sull'identità offre alla tua pipeline la possibilità di effettuare chiamate Amazon S3 dal tuo account. Per ulteriori informazioni sulle differenze basate sulle risorse e sulle identità, consulta [Policy basate sulle identità e policy basate su risorse](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html). 

  ```
  {
      "Action": [
          "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::<your-bucket-name>/*",
      "Effect": "Allow"
  }
  ```

## Autorizzazioni relative alle fasi della pipeline
<a name="build-and-manage-step-permissions"></a>

Le pipeline includono passaggi che SageMaker eseguono lavori di intelligenza artificiale. Affinché le fasi della pipeline eseguano questi processi, è richiesto un ruolo IAM nell'account che fornisca l'accesso alla risorsa necessaria. Questo ruolo viene trasferito al responsabile del servizio di SageMaker intelligenza artificiale dalla tua pipeline. Per ulteriori informazioni sui ruoli IAM, consulta [Ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). 

Per impostazione predefinita, ogni fase assume il ruolo di esecuzione della pipeline. Facoltativamente, puoi assegnare un ruolo diverso a qualsiasi fase della pipeline. Ciò garantisce che il codice di ogni fase non abbia la possibilità di influire sulle risorse utilizzate in altre fasi, a meno che non esista una relazione diretta tra le due fasi specificate nella definizione della pipeline. Questi ruoli vengono trasmessi quando si definisce lo strumento di elaborazione o valutazione per la propria fase. Per esempi su come includere questi ruoli in queste definizioni, consulta la documentazione di [SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/overview.html#using-estimators). 

## Configurazione CORS con bucket Amazon S3
<a name="build-and-manage-cors-s3"></a>

Per garantire che le immagini vengano importate nelle pipeline da un bucket Amazon S3 in modo prevedibile, è necessario aggiungere una configurazione CORS ai bucket Amazon S3 da cui vengono importate le immagini. Questa sezione fornisce istruzioni su come impostare la configurazione CORS richiesta per il bucket Amazon S3. La `CORSConfiguration` XML richiesta per Pipelines è diversa da quella in [Requisito CORS per i dati delle immagini di input](sms-cors-update.md). In alternativa, consulta queste informazioni per saperne di più sul requisito CORS per i bucket Amazon S3.

Utilizza il codice di configurazione CORS seguente per i bucket Amazon S3 che ospitano le tue immagini. Per istruzioni sulla configurazione CORS, consulta [Configuring cross-origin resource sharing (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html) in Amazon Simple Storage Service User Guide. Se utilizzi la console Amazon S3 per aggiungere la policy al tuo bucket, devi utilizzare il formato JSON.

**JSON**

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedHeader>*</AllowedHeader>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

La seguente GIF illustra le istruzioni contenute nella documentazione di Amazon S3 per aggiungere una policy di intestazione CORS utilizzando la console Amazon S3.

![\[Gif su come aggiungere una policy di intestazione CORS utilizzando la console di Amazon S3.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


## Personalizzazione della gestione degli accessi per i processi Pipelines
<a name="build-and-manage-step-permissions-prefix"></a>

Puoi personalizzare ulteriormente le tue policy IAM in modo che membri selezionati della tua organizzazione possano eseguire alcune o tutte le fasi della pipeline. Ad esempio, puoi concedere a determinati utenti l'autorizzazione a creare processi di addestramento, a un altro gruppo di utenti l'autorizzazione a creare processi di elaborazione e a tutti gli utenti l'autorizzazione a eseguire le fasi rimanenti. Per utilizzare questa funzionalità, seleziona una stringa personalizzata con il prefisso del nome del processo. L'amministratore aggiunge il prefisso a «permesso ARNs », mentre il data scientist include questo prefisso nelle istanze della pipeline. Poiché la policy IAM per gli utenti autorizzati contiene un ARN di processo con il prefisso specificato, i processi successivi della fase della pipeline dispongono delle autorizzazioni necessarie per procedere. Il prefisso del processo è disattivato per impostazione predefinita: devi attivare questa opzione nella tua classe `Pipeline` per utilizzarla. 

Per i processi con il prefisso disattivato, il nome del processo è formattato come mostrato e rappresentato da una concatenazione di campi, come descritto nella tabella seguente:

`pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>`


| Campo | Definizione | 
| --- | --- | 
|  pipelines   |  Una stringa statica sempre anteposta. Questa stringa identifica il servizio di orchestrazione della pipeline come origine del processo.  | 
|  executionId  |  Un buffer randomizzato per l'istanza in esecuzione della pipeline.  | 
|  stepNamePrefix  |  Il nome della fase specificato dall'utente (fornito nell'argomento `name` della fase della pipeline), limitato ai primi 20 caratteri.  | 
|  entityToken  |  Un token randomizzato per garantire l'idempotenza dell'entità della fase.  | 
|  failureCount  |  Il numero attuale di tentativi effettuati per completare il lavoro.  | 

In questo caso, al nome del processo non viene aggiunto alcun prefisso personalizzato; la policy IAM corrispondente deve corrispondere a questa stringa.

Per gli utenti che attivano il prefisso del processo, il nome del processo sottostante assume la forma seguente, con il prefisso personalizzato specificato come `MyBaseJobName`:

*<MyBaseJobName>*-*<executionId>*-*<entityToken>*-*<failureCount>*

Il prefisso personalizzato sostituisce la `pipelines` stringa statica per aiutarti a restringere la selezione di utenti che possono eseguire il job AI come parte di una pipeline. SageMaker 

**Restrizioni sulla lunghezza del prefisso**

I nomi dei processi hanno vincoli di lunghezza interni specifici per le singole fasi della pipeline. I vincoli limitano anche la lunghezza consentita del prefisso. I requisiti di lunghezza del prefisso sono i seguenti:


| Fase della pipeline | Lunghezza del prefisso | 
| --- | --- | 
|   `[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`, `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`, `[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`, `[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`, `[ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)`, `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)`, `[RegisterModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`   |  38  | 
|  `[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`, `[AutoML](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`  |  6  | 

### Applicazione di prefissi dei processi a una policy IAM
<a name="build-and-manage-step-permissions-prefix-iam"></a>

L’amministratore crea policy IAM che consentono agli utenti con prefissi specifici di creare lavori. La seguente policy di esempio consente ai data scientist di creare processi di addestramento se utilizzano il prefisso `MyBaseJobName`. 

```
{
    "Action": "sagemaker:CreateTrainingJob",
    "Effect": "Allow",
    "Resource": [
        "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*"
    ]
}
```

### Applicazione di prefissi dei processi alle istanze della pipeline
<a name="build-and-manage-step-permissions-prefix-inst"></a>

Specifica il prefisso con l'argomento `*base_job_name` della classe dell’istanza di processo.

**Nota**  
Trasmetti il prefisso del processo con l'argomento `*base_job_name` all'istanza del processo prima di creare una fase della pipeline. Questa istanza di processo contiene le informazioni necessarie affinché il processo venga eseguito come fase di una pipeline. Questo argomento varia a seconda dell'istanza di processo utilizzata. L'elenco seguente mostra quale argomento utilizzare per ogni tipo di fase della pipeline:  
`base_job_name` per le classi `[Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html)` (`[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`), `[Processor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html)` (`[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`) e `[AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html)` (`[AutoMLStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`)
`tuning_base_job_name` per la classe `[Tuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)` (`[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`)
`transform_base_job_name` per la classe `[Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html)` (`[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`)
`base_job_name` su `[CheckJobConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#checkjobconfig)` per le classi `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)` (Quality Check) e `[ClarifyCheckstep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)` (Clarify Check)
Per la classe `[Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html)`, l'argomento utilizzato dipende dal fatto che si esegua `create` o `register` dal modello prima di trasmettere il risultato a `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`  
Se si chiama `create`, il prefisso personalizzato deriva dall'argomento `name`quando si costruisce il modello (ad esempio, `Model(name=)`)
Se si chiama `register`, il prefisso personalizzato deriva dall'argomento `model_package_name` della chiamata a `register` (ad esempio, `my_model.register(model_package_name=)`)

L'esempio seguente mostra come specificare un prefisso per una nuova istanza del processo di addestramento.

```
# Create a job instance
xgb_train = Estimator(
    image_uri=image_uri,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=model_path,
    role=role,
    subnets=["subnet-0ab12c34567de89f0"],
    base_job_name="MyBaseJobName"
    security_group_ids=["sg-1a2bbcc3bd4444e55"],
    tags = [ ... ]
    encrypt_inter_container_traffic=True, 
)

# Attach your job instance to a pipeline step
step_train = TrainingStep(
    name="TestTrainingJob",
    estimator=xgb_train, 
    inputs={
        "train": TrainingInput(...), 
        "validation": TrainingInput(...) 
    }
)
```

Per impostazione predefinita, l'aggiunta del prefisso al processo è disattivata. Per attivare questa funzionalità, utilizza l'opzione `use_custom_job_prefix` di `PipelineDefinitionConfig` come mostrato nel seguente frammento:

```
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
        
# Create a definition configuration and toggle on custom prefixing
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True);

# Create a pipeline with a custom prefix
 pipeline = Pipeline(
     name="MyJobPrefixedPipeline",
     parameters=[...]
     steps=[...]
     pipeline_definition_config=definition_config
)
```

Crea ed esegui la tua pipeline. L'esempio seguente crea ed esegue una pipeline e illustra anche come disattivare l'aggiunta del prefisso ai progetti e rieseguire la pipeline.

```
pipeline.create(role_arn=sagemaker.get_execution_role())

# Optionally, call definition() to confirm your prefixed job names are in the built JSON
pipeline.definition()
pipeline.start()
      
# To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline 
# via upsert() or update(), and start a new run
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Allo stesso modo, è possibile attivare la funzionalità per le pipeline esistenti e iniziare una nuova esecuzione che utilizza i prefissi dei processi.

```
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Infine, puoi visualizzare il tuo processo con prefisso personalizzato chiamando `list_steps` sull'esecuzione della pipeline.

```
steps = execution.list_steps()

prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
```

## Personalizzazione dell’accesso alle versioni della pipeline
<a name="build-and-manage-step-permissions-version"></a>

Puoi concedere un accesso personalizzato a versioni specifiche di Amazon SageMaker Pipelines utilizzando la chiave di `sagemaker:PipelineVersionId` condizione. Ad esempio, la policy riportata di seguito consente l’accesso per avviare esecuzioni o aggiornare la versione della pipeline solo per la versione con ID 6 e superiore.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowStartPipelineExecution",
        "Effect": "Allow",
        "Action": [
            "sagemaker:StartPipelineExecution",
            "sagemaker:UpdatePipelineVersion"
        ],
        "Resource": "*",
        "Condition": {
            "NumericGreaterThanEquals": {
                "sagemaker:PipelineVersionId": 6
            }
        }
    }
}
```

------

Per ulteriori informazioni sulle chiavi di condizione supportate, consulta [Condition keys for Amazon SageMaker AI](https://docs.aws.amazon.com//service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys).

## Policy di controllo dei servizi con Pipelines
<a name="build-and-manage-scp"></a>

Le policy di controllo dei servizi (SCPs) sono un tipo di politica organizzativa che puoi utilizzare per gestire le autorizzazioni all'interno della tua organizzazione. SCPs offrono il controllo centralizzato sulle autorizzazioni massime disponibili per tutti gli account dell'organizzazione. Utilizzando Pipelines all'interno della vostra organizzazione, potete assicurarvi che i data scientist gestiscano le esecuzioni della pipeline senza dover interagire con la console. AWS  

Se utilizzi un VPC con SCP che limita l'accesso ad Amazon S3, devi eseguire le fasi necessarie per consentire alla pipeline di accedere ad altre risorse Amazon S3. 

Per consentire a Pipelines di accedere ad Amazon S3 al di fuori del VPC con la funzione `JsonGet`, aggiorna la SCP dell’organizzazione per garantire che il ruolo che utilizza Pipelines possa accedere ad Amazon S3. Per farlo, crea un’eccezione per i ruoli utilizzati dall’esecutore di Pipelines tramite il ruolo di esecuzione della pipeline includendo un tag principale e una chiave di condizione. 

**Per consentire a Pipelines di accedere ad Amazon S3 al di fuori del tuo VPC**

1. Crea un tag unico per il tuo ruolo di esecuzione della pipeline seguendo la procedura descritta in [Tagging di utenti e ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html). 

1. Concedi un'eccezione nel tuo SCP utilizzando la chiave di condizione `Aws:PrincipalTag IAM` per il tag che hai creato. Per ulteriori informazioni, consulta [Creazione, aggiornamento ed eliminazione delle policy di controllo del servizio](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html). 

# Configurazione del supporto multi-account per Pipelines
<a name="build-and-manage-xaccount"></a>

Il supporto multiaccount per Amazon SageMaker Pipelines ti consente di collaborare su pipeline di machine learning con altri team o organizzazioni che operano con account diversi. AWS Configurando la condivisione della pipeline multi-account, puoi concedere l’accesso controllato alle pipeline, consentire ad altri account di visualizzare i dettagli della pipeline e attivare e monitorare le esecuzioni. L'argomento seguente illustra come configurare la condivisione della pipeline tra account, le diverse politiche di autorizzazione disponibili per le risorse condivise e come accedere e interagire con entità di pipeline condivise tramite chiamate API dirette all'IA. SageMaker 

## Configurazione della condivisione multi-account di pipeline
<a name="build-and-manage-xaccount-set-up"></a>

SageMaker L'intelligenza artificiale utilizza [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) (AWS RAM) per aiutarti a condividere in modo sicuro le entità della pipeline tra gli account. 

### Creare una condivisione di risorse
<a name="build-and-manage-xaccount-set-up-console"></a>

1. Seleziona **Crea una condivisione di risorse** tramite la console [AWS RAM](https://console.aws.amazon.com/ram/home).

1. Quando specifichi i dettagli della condivisione di risorse, scegli il tipo di risorsa Pipelines e seleziona una o più pipeline da condividere. Quando condividi una pipeline con qualsiasi altro account, anche tutte le sue esecuzioni vengono condivise implicitamente.

1. Associare autorizzazioni alla condivisione di risorse. Scegli la policy di autorizzazione di sola lettura predefinita o la policy di autorizzazione all'esecuzione della pipeline estesa. Per informazioni più dettagliate, consulta [Policy di autorizzazione per le risorse Pipelines](#build-and-manage-xaccount-permissions). 
**Nota**  
Se selezioni la politica di esecuzione della pipeline estesa, tieni presente che tutti i comandi di avvio, arresto e riprova richiamati dagli account condivisi utilizzano le risorse dell' AWS account che ha condiviso la pipeline.

1. Utilizza AWS account IDs per specificare gli account a cui desideri concedere l'accesso alle tue risorse condivise.

1. Controlla la configurazione della condivisione di risorse e seleziona **Crea condivisione di risorse**. Il completamento dell'associazione tra la condivisione di risorse e il principale potrebbe richiedere alcuni minuti.

Per ulteriori informazioni, consulta la sezione [Condivisione delle risorse AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) nella *Guida per l'utente di AWS Resource Access Manager*.

### Ottenere risposte all'invito alla condivisione di risorse
<a name="build-and-manage-xaccount-set-up-responses"></a>

Una volta impostate le associazioni tra la condivisione di risorse e il principale, gli account AWS specificati ricevono un invito a partecipare alla condivisione di risorse. Gli AWS account devono accettare l'invito per accedere a qualsiasi risorsa condivisa.

Per ulteriori informazioni sull'accettazione di un invito alla condivisione di risorse tramite AWS RAM, vedere [Using shared AWS resources](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) nella *AWS Resource Access Manager User Guide*.

## Policy di autorizzazione per le risorse Pipelines
<a name="build-and-manage-xaccount-permissions"></a>

Quando crei la tua condivisione di risorse, scegli una delle due politiche di autorizzazione supportate da associare al tipo di risorsa della pipeline SageMaker AI. Entrambe le policy concedono l'accesso a qualsiasi pipeline selezionata e a tutte le sue esecuzioni. 

### Autorizzazioni di sola lettura predefinite
<a name="build-and-manage-xaccount-permissions-default"></a>

La policy `AWSRAMDefaultPermissionSageMakerPipeline` seguente consente le seguenti operazioni in sola lettura:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"
```

### Autorizzazioni all'esecuzione della pipeline estese
<a name="build-and-manage-xaccount-permissions-extended"></a>

La policy `AWSRAMPermissionSageMakerPipelineAllowExecution` include tutte le autorizzazioni di sola lettura previste dalla policy predefinita e consente inoltre agli account condivisi di avviare, arrestare e riprovare le esecuzioni della pipeline.

**Nota**  
Fai attenzione all'utilizzo delle AWS risorse quando utilizzi la politica di autorizzazione all'esecuzione della pipeline estesa. Con questa policy, gli account condivisi possono avviare, arrestare e riprovare le esecuzioni della pipeline. Tutte le risorse utilizzate per le esecuzioni condivise della pipeline vengono consumate dall'account proprietario. 

La policy di autorizzazione all'esecuzione della pipeline estesa consente le seguenti operazioni:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"
```

## Accesso alle entità pipeline condivise tramite chiamate API dirette
<a name="build-and-manage-xaccount-api-calls"></a>

Una volta configurata la condivisione della pipeline tra account, puoi chiamare le seguenti azioni SageMaker API utilizzando un ARN della pipeline:

**Nota**  
È possibile chiamare i comandi API solo se sono inclusi nelle autorizzazioni associate alla condivisione di risorse. Se selezioni la `AWSRAMPermissionSageMakerPipelineAllowExecution` policy, i comandi start, stop e retry utilizzano le risorse dell' AWS account che ha condiviso la pipeline.
+ [DescribePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipeline.html)
+ [DescribePipelineDefinitionForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineDefinitionForExecution.html)
+ [DescribePipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineExecution.html)
+ [ListPipelineExecutions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutions.html)
+ [ListPipelineExecutionSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutionSteps.html)
+ [ListPipelineParametersForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineParametersForExecution.html)
+ [StartPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html)
+ [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)
+ [RetryPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryPipelineExecution.html)

# Parametri della pipeline
<a name="build-and-manage-parameters"></a>

È possibile introdurre variabili nella definizione della pipeline utilizzando i parametri. È possibile fare riferimento ai parametri definiti durante la definizione di pipeline. I parametri hanno un valore predefinito, che è possibile sostituire specificando i valori dei parametri all'avvio dell'esecuzione di una pipeline. Il valore predefinito deve essere un'istanza che corrisponde al tipo di parametro. Tutti i parametri utilizzati nelle definizioni delle fasi devono essere definiti nella definizione di pipeline. Questo argomento descrive i parametri che è possibile definire e come implementarli.

Amazon SageMaker Pipelines supporta i seguenti tipi di parametri: 
+  `ParameterString`: rappresenta un parametro di stringa. 
+  `ParameterInteger`: rappresenta un parametro con numero intero. 
+  `ParameterFloat`: rappresenta un parametro float.
+  `ParameterBoolean`: rappresenta un tipo booleano Python.

I parametri assumono il seguente formato:

```
<parameter> = <parameter_type>(
    name="<parameter_name>",
    default_value=<default_value>
)
```

Di seguito è mostrata un'implementazione di parametri di esempio.

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
    ParameterFloat,
    ParameterBoolean
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
```

Si passa il parametro durante la creazione della pipeline, come nell'esempio seguente.

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_count
    ],
    steps=[step_process]
)
```

È possibile anche passare un valore di parametro diverso dal valore predefinito all'esecuzione di una pipeline, come mostrato nell'esempio seguente.

```
execution = pipeline.start(
    parameters=dict(
        ProcessingInstanceCount="2",
        ModelApprovalStatus="Approved"
    )
)
```

Puoi manipolare i parametri con funzioni SageMaker Python SDK come. `[ sagemaker.workflow.functions.Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.functions.Join)` [Per ulteriori informazioni sui parametri, consulta SageMaker Pipelines Parameters.](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parameters)

Per le limitazioni note dei parametri di Pipelines, consulta *[Limitazioni - Parametrizzazione nell'SDK](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#parameterization)* Amazon [Python SageMaker ](https://sagemaker.readthedocs.io/en/stable).

# Fasi delle pipeline
<a name="build-and-manage-steps"></a>

Le pipeline sono costituite da fasi. Queste fasi definiscono le operazioni intraprese dalla pipeline e le relazioni tra le fasi utilizzando le proprietà. La pagina seguente descrive i tipi di fasi, le relative proprietà e le relazioni tra di esse.

**Topics**
+ [Aggiunta di una fase](build-and-manage-steps-types.md)
+ [Aggiungi integrazione](build-and-manage-steps-integration.md)
+ [Proprietà della fase](#build-and-manage-properties)
+ [Parallelizzazione delle fasi](#build-and-manage-parallelism)
+ [Dipendenza dei dati tra le fasi](#build-and-manage-data-dependency)
+ [Dipendenza personalizzata tra le fasi](#build-and-manage-custom-dependency)
+ [Immagini personalizzate in una fase](#build-and-manage-images)

# Aggiunta di una fase
<a name="build-and-manage-steps-types"></a>

Di seguito vengono descritti i requisiti di ogni tipo di fase e viene fornita un’implementazione di esempio della fase, nonché informazioni su come aggiungere la fase a una pipeline. Non si tratta di implementazioni funzionali perché non forniscono le risorse e gli input necessari. Per un tutorial che implementa queste fasi, consulta [Azioni di Pipelines](pipelines-build.md).

**Nota**  
Puoi anche creare una fase dal codice di machine learning locale convertendola in una fase Pipelines con il decoratore `@step`. Per ulteriori informazioni, consulta [Decoratore @step](#step-type-custom).

Amazon SageMaker Pipelines supporta i seguenti tipi di passaggi:
+ [Esecuzione di codice](#step-type-executecode)

  [Processing](#step-type-processing)
+ [Addestramento](#step-type-training)
+ [Ottimizzazione](#step-type-tuning)
+ [AutoML](#step-type-automl)
+ [`Model`](#step-type-model)
+ [`Create model`](#step-type-create-model)
+ [`Register model`](#step-type-register-model)
+ [`Deploy model (endpoint)`](#step-type-deploy-model-endpoint)
+ [Trasformazione](#step-type-transform)
+ [Condizione](#step-type-condition)
+ [`Callback`](#step-type-callback)
+ [Lambda](#step-type-lambda)
+ [`ClarifyCheck`](#step-type-clarify-check)
+ [`QualityCheck`](#step-type-quality-check)
+ [EMR](#step-type-emr)
+ [Processo del notebook](#step-type-notebook-job)
+ [Fail](#step-type-fail)

## Decoratore @step
<a name="step-type-custom"></a>

Se desideri orchestrare un processo di machine learning personalizzato che sfrutti funzionalità di SageMaker intelligenza artificiale avanzate o altri AWS servizi nell'interfaccia utente di drag-and-drop Pipelines, utilizza il. [Fase Esecuzione di codice](#step-type-executecode)

Puoi creare una fase dal codice di machine learning locale utilizzando il decoratore `@step`. Dopo aver testato il codice, puoi convertire la funzione in una fase di pipeline SageMaker AI annotandola con il decoratore. `@step` Pipelines crea ed esegue una pipeline quando passi alla pipeline l’output della funzione decorata con `@step` come fase. Puoi anche creare una pipeline DAG in più fasi che includa una o più funzioni `@step` decorate oltre ai tradizionali passaggi della pipeline AI. SageMaker Per ulteriori dettagli su come creare una fase con il decoratore `@step`, consulta [Lift-and-shift Codice Python con il decoratore @step](pipelines-step-decorator.md).

## Fase Esecuzione di codice
<a name="step-type-executecode"></a>

Nell' drag-and-dropinterfaccia utente di Pipelines, puoi utilizzare un passaggio di codice Execute per **eseguire il tuo codice** come passaggio della pipeline. Puoi caricare una funzione, uno script o un notebook Python da eseguire come parte della tua pipeline. È necessario utilizzare questo passaggio se si desidera orchestrare un processo di machine learning personalizzato che sfrutti funzionalità di SageMaker intelligenza artificiale avanzate o altri servizi. AWS 

La fase **Execute Code** carica i file nel bucket Amazon S3 predefinito per SageMaker Amazon AI. Questo bucket potrebbe non disporre del set di autorizzazioni Condivisione delle risorse multiorigine (CORS) richiesto. Per ulteriori informazioni sulla configurazione delle autorizzazioni CORS, consulta [Requisito CORS per i dati delle immagini di input](sms-cors-update.md).

La fase **Execute Code** utilizza un processo di SageMaker formazione Amazon per eseguire il codice. Verifica che il tuo ruolo IAM disponga delle autorizzazioni API `sagemaker:DescribeTrainingJob` e `sagemaker:CreateTrainingJob`. Per ulteriori informazioni su tutte le autorizzazioni richieste per Amazon SageMaker AI e su come configurarle, consulta[Autorizzazioni API Amazon SageMaker AI: riferimento ad azioni, autorizzazioni e risorse](api-permissions-reference.md).

Per aggiungere una fase Esecuzione di codice a una pipeline utilizzando Pipeline Designer, procedi come descritto di seguito:

1. Apri la console Amazon SageMaker Studio seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Esecuzione di codice** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Esecuzione di codice** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**.

1. Puoi caricare un singolo file da eseguire o caricare una cartella compressa che contiene più artefatti.

1. Per i caricamenti di singoli file, puoi fornire parametri facoltativi per notebook, funzioni Python o script.

1. Quando fornisci funzioni Python, devi specificare un gestore in formato `file.py:<function_name>`.

1. Per i caricamenti di cartelle compresse, è necessario fornire i percorsi relativi per il codice e, facoltativamente, i percorsi per un file `requirements.txt` o uno script di inizializzazione all’interno della cartella compressa.

1. Se il canvas include una fase immediatamente precedente alla fase **Esecuzione di codice** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Esecuzione di codice** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Esecuzione di codice** che hai aggiunto, fai clic e trascina il cursore dalla fase **Esecuzione di codice** all’altra fase per creare un arco. Puoi fare riferimento agli output delle fasi **Esecuzione di codice** per le funzioni Python.

## Fase di elaborazione
<a name="step-type-processing"></a>

Utilizza una fase di elaborazione per creare un processo di elaborazione per l'elaborazione dei dati. Per ulteriori informazioni sull'elaborazione dei processi, consulta [Elaborazione di dati e valutazione di modelli](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html).

------
#### [ Pipeline Designer ]

Per aggiungere una fase di elaborazione a una pipeline con Pipeline Designer, procedi come descritto di seguito:

1. Apri la console Amazon SageMaker Studio seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Nella barra laterale sinistra, scegli **Elaborazione di dati** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Elaborazione di dati** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

1. Se il canvas include una fase immediatamente precedente alla fase **Elaborazione di dati** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Elaborazione di dati** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Elaborazione di dati** che hai aggiunto, fai clic e trascina il cursore dalla fase **Elaborazione di dati** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

Una fase di elaborazione richiede un processore, uno script Python che definisce il codice di elaborazione, gli output per l'elaborazione e gli argomenti del processo. L'esempio seguente mostra come creare una definizione di `ProcessingStep`. 

```
from sagemaker.sklearn.processing import SKLearnProcessor

sklearn_processor = SKLearnProcessor(framework_version='1.0-1',
                                     role=<role>,
                                     instance_type='ml.m5.xlarge',
                                     instance_count=1)
```

```
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

inputs = [
    ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),
]

outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args = sklearn_processor.run(inputs=inputs, outputs=outputs,
        code="abalone/preprocessing.py")
)
```

**Passaggio di parametri di runtime**

L'esempio seguente mostra come passare i parametri di runtime da un PySpark processore a un`ProcessingStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.spark.processing import PySparkProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

pipeline_session = PipelineSession()

pyspark_processor = PySparkProcessor(
    framework_version='2.4',
    role=<role>,
    instance_type='ml.m5.xlarge',
    instance_count=1,
    sagemaker_session=pipeline_session,
)

step_args = pyspark_processor.run(
    inputs=[ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
    ],
    code="preprocess.py",
    arguments=None,
)


step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args=step_args,
)
```

Per ulteriori informazioni sui requisiti delle fasi di elaborazione, consulta [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep)documentazione. Per un esempio approfondito, consulta il notebook di esempio [Orchestrate Jobs to Train and Evaluate Models with Amazon SageMaker Pipelines](https://github.com/aws/amazon-sagemaker-examples/blob/62de6a1fca74c7e70089d77e36f1356033adbe5f/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.ipynb). La sezione *Define a Processing Step for Feature Engineering* include ulteriori informazioni.

------

## Fase di addestramento
<a name="step-type-training"></a>

Si utilizza una fase di addestramento per creare un processo di addestramento per addestrare un modello. Per ulteriori informazioni sui lavori di formazione, consulta [Train a Model with Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

Una fase di addestramento richiede uno strumento di valutazione e input di dati di addestramento e convalida.

------
#### [ Pipeline Designer ]

Per aggiungere una fase di addestramento a una pipeline utilizzando Pipeline Designer, procedi come descritto di seguito:

1. Apri la console Amazon SageMaker Studio seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Addestramento di un modello** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Addestramento di un modello** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Se il canvas include una fase immediatamente precedente alla fase **Addestramento di un modello** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Addestramento di un modello** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Addestramento di un modello** che hai aggiunto, fai clic e trascina il cursore dalla fase **Addestramento di un modello** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

L'esempio seguente mostra come creare una definizione di `TrainingStep`. Per ulteriori informazioni sui requisiti delle fasi di formazione, consulta [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep)documentazione.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TrainingStep

from sagemaker.xgboost.estimator import XGBoost

pipeline_session = PipelineSession()

xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session)

step_args = xgb_estimator.fit(
    inputs={
        "train": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv"
        ),
        "validation": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv"
        )
    }
)

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=step_args,
)
```

------

## Fase di ottimizzazione
<a name="step-type-tuning"></a>

Si utilizza una fase di ottimizzazione per creare un processo di ottimizzazione degli iperparametri, noto anche come ottimizzazione degli iperparametri (HPO). Un processo di ottimizzazione degli iperparametri esegue più job di addestramento, ognuno dei quali produce una versione del modello. Per ulteriori informazioni sull'ottimizzazione degli iperparametri, consulta [Ottimizzazione automatica dei modelli con AI SageMaker](automatic-model-tuning.md).

Il lavoro di ottimizzazione è associato all'esperimento di SageMaker intelligenza artificiale per la pipeline, mentre i lavori di formazione vengono creati come prove. Per ulteriori informazioni, consulta [Integrazione di Esperimenti](pipelines-experiments.md).

Una fase di ottimizzazione richiede un input di formazione [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html). È possibile addestrare nuovamente processi di ottimizzazione precedenti specificando il parametro `warm_start_config` del `HyperparameterTuner`. Per ulteriori informazioni sull'ottimizzazione degli iperparametri e sull'avvio a caldo, consulta [Eseguire un processo di ottimizzazione degli iperparametri con avvio a caldo](automatic-model-tuning-warm-start.md).

[Utilizzate il [metodo get\$1top\$1model\$1s3\$1uri di sagemaker.workflow.steps](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep.get_top_model_s3_uri). TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)classe per ottenere l'artefatto del modello da una delle versioni del modello con le migliori prestazioni. [Per un taccuino che mostra come utilizzare una fase di ottimizzazione in una pipeline di SageMaker intelligenza artificiale, consulta .ipynb. sagemaker-pipelines-tuning-step](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/tuning-step/sagemaker-pipelines-tuning-step.ipynb)

**Importante**  
Le fasi di ottimizzazione sono state introdotte in Amazon SageMaker Python SDK v2.48.0 e Amazon Studio Classic v3.8.0. SageMaker Devi aggiornare Studio Classic prima di utilizzare una fase di ottimizzazione, in caso contrario il DAG della pipeline non viene visualizzato. Per aggiornare Studio Classic, consulta [Chiudi e aggiorna Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

L'esempio seguente mostra come creare una definizione di `TuningStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.tuner import HyperparameterTuner
from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TuningStep

tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession())
    
step_tuning = TuningStep(
    name = "HPTuning",
    step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data"))
)
```

**Ottenere la versione migliore del modello**

Nell'esempio seguente viene illustrato come ottenere la versione migliore del modello dal processo di ottimizzazione mediante il metodo `get_top_model_s3_uri`. Al massimo, le 50 versioni con le migliori prestazioni sono disponibili classificate in base a. [HyperParameterTuningJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobObjective.html) L'argomento `top_k` è un indice delle versioni, dove `top_k=0` indica la versione con le migliori prestazioni e `top_k=49` quella con le prestazioni peggiori.

```
best_model = Model(
    image_uri=image_uri,
    model_data=step_tuning.get_top_model_s3_uri(
        top_k=0,
        s3_bucket=sagemaker_session.default_bucket()
    ),
    ...
)
```

[Per ulteriori informazioni sui requisiti delle fasi di ottimizzazione, consulta sagemaker.workflow.steps. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)documentazione.

## Fase Fine-tuning
<a name="step-type-fine-tuning"></a>

La messa a punto consente di addestrare un modello di base preaddestrato di Amazon SageMaker JumpStart su un nuovo set di dati. Questo processo, noto anche come trasferimento dell'apprendimento, può produrre modelli accurati con set di dati più piccoli e tempi di addestramento ridotti. Quando esegui il fine-tuning di un modello, puoi utilizzare il set di dati predefinito o scegliere i tuoi dati. Per ulteriori informazioni sulla messa a punto di un modello di base di, consulta. JumpStart [Ottimizzare un modello](jumpstart-fine-tune.md)

La fase di messa a punto utilizza un processo di SageMaker formazione di Amazon per personalizzare il modello. Verifica che il tuo ruolo IAM disponga delle autorizzazioni API `sagemaker:DescribeTrainingJob` e `sagemaker:CreateTrainingJob` necessarie per eseguire il processo di fine-tuning nella tua pipeline. Per ulteriori informazioni sulle autorizzazioni richieste per Amazon SageMaker AI e su come configurarle, consulta[Autorizzazioni API Amazon SageMaker AI: riferimento ad azioni, autorizzazioni e risorse](api-permissions-reference.md).

Per aggiungere una fase del **modello Fine-tune** alla tua pipeline utilizzando l' drag-and-dropeditor, segui questi passaggi:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Fine-tuning di un modello** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Fine-tuning di un modello** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**.

1. Se il canvas include una fase immediatamente precedente alla fase **Fine-tuning di un modello** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Fine-tuning di un modello** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Fine-tuning di un modello** che hai aggiunto, fai clic e trascina il cursore dalla fase **Fine-tuning di un modello** all’altra fase per creare un arco.

## Fase AutoML
<a name="step-type-automl"></a>

Utilizza l'API [AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html) per creare un processo AutoML per addestrare automaticamente un modello. Per ulteriori informazioni sui job AutoML, consulta [Automatizza lo sviluppo di modelli con Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html) Autopilot. SageMaker 

**Nota**  
Attualmente, la fase AutoML supporta solo la [modalità di addestramento di raggruppamento](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html).

L'esempio seguente mostra come creare una definizione utilizzando `AutoMLStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.automl_step import AutoMLStep

pipeline_session = PipelineSession()

auto_ml = AutoML(...,
    role="<role>",
    target_attribute_name="my_target_attribute_name",
    mode="ENSEMBLING",
    sagemaker_session=pipeline_session) 

input_training = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-training-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="training",
)
input_validation = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-validation-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="validation",
)

step_args = auto_ml.fit(
    inputs=[input_training, input_validation]
)

step_automl = AutoMLStep(
    name="AutoMLStep",
    step_args=step_args,
)
```

**Ottenere la versione migliore del modello**

La fase AutoML addestra automaticamente diversi candidati modello. È possibile ottenere il modello con la metrica obiettivo ottimale dal processo AutoML utilizzando il metodo `get_best_auto_ml_model` come segue. È inoltre necessario utilizzare un `role` IAM per accedere agli artefatti del modello.

```
best_model = step_automl.get_best_auto_ml_model(role=<role>)
```

Per ulteriori informazioni, consulta il passaggio [AutoML](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.automl_step.AutoMLStep) in Python SageMaker SDK.

## Fase del modello
<a name="step-type-model"></a>

Usa `ModelStep` a per creare o registrare un SageMaker modello di intelligenza artificiale. Per ulteriori informazioni sui `ModelStep` requisiti, consulta [sagemaker.workflow.model\$1step. ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.model_step.ModelStep)documentazione.

### Creazione di un modello
<a name="step-type-model-create"></a>

Puoi usare `ModelStep` a per creare un modello di SageMaker intelligenza artificiale. A `ModelStep` richiede artefatti del modello e informazioni sul tipo di istanza SageMaker AI da utilizzare per creare il modello. Per ulteriori informazioni sui modelli di SageMaker intelligenza artificiale, consulta [Train a Model with Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

L'esempio seguente mostra come creare una definizione di `ModelStep`.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.model import Model
from sagemaker.workflow.model_step import ModelStep

step_train = TrainingStep(...)
model = Model(
    image_uri=pytorch_estimator.training_image_uri(),
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    sagemaker_session=PipelineSession(),
    role=role,
)

step_model_create = ModelStep(
   name="MyModelCreationStep",
   step_args=model.create(instance_type="ml.m5.xlarge"),
)
```

### Registrazione di un modello
<a name="step-type-model-register"></a>

Puoi usare `ModelStep` a per registrare un `sagemaker.model.Model` o un `sagemaker.pipeline.PipelineModel` con Amazon SageMaker Model Registry. Un `PipelineModel` rappresenta una pipeline di inferenza, che è un modello composto da una sequenza lineare di container che elaborano richieste di inferenza. Per ulteriori informazioni su come eseguire la registrazione di un modello, consulta [Implementazione della registrazione del modello con il registro dei modelli](model-registry.md).

L'esempio seguente mostra come creare una `ModelStep` per registrare un `PipelineModel`.

```
import time

from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

pipeline_session = PipelineSession()

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(
   model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
   entry_point='inference.py',
   source_dir='sklearn_source_dir/',
   code_location=code_location,
   framework_version='1.0-1',
   role=role,
   sagemaker_session=pipeline_session,
   py_version='py3'
)

xgboost_model = XGBoostModel(
   model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
   entry_point='inference.py',
   source_dir='xgboost_source_dir/',
   code_location=code_location,
   framework_version='0.90-2',
   py_version='py3',
   sagemaker_session=pipeline_session,
   role=role
)

from sagemaker.workflow.model_step import ModelStep
from sagemaker import PipelineModel

pipeline_model = PipelineModel(
   models=[sklearn_model, xgboost_model],
   role=role,sagemaker_session=pipeline_session,
)

register_model_step_args = pipeline_model.register(
    content_types=["application/json"],
   response_types=["application/json"],
   inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
   transform_instances=["ml.m5.xlarge"],
   model_package_group_name='sipgroup',
)

step_model_registration = ModelStep(
   name="AbaloneRegisterModel",
   step_args=register_model_step_args,
)
```

## Fase Creazione di un modello
<a name="step-type-create-model"></a>

Utilizza una fase di creazione del modello per creare un modello di SageMaker intelligenza artificiale. Per ulteriori informazioni sui modelli di SageMaker intelligenza artificiale, consulta[Addestra un modello con Amazon SageMaker](how-it-works-training.md).

Una fase di creazione del modello richiede artefatti del modello e informazioni sul tipo di istanza SageMaker AI da utilizzare per creare il modello. Gli esempi seguenti mostrano come creare una definizione della fase Creazione di un modello. [Per ulteriori informazioni sui requisiti della fase di creazione del modello, consulta sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep)documentazione.

------
#### [ Pipeline Designer ]

Per aggiungere una fase di creazione del modello alla pipeline, procedi come descritto di seguito:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Creazione di un modello** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Creazione di un modello** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep).

1. Se il canvas include una fase immediatamente precedente alla fase **Creazione di un modello** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Creazione di un modello** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Creazione di un modello** che hai aggiunto, fai clic e trascina il cursore dalla fase **Creazione di un modello** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

**Importante**  
Ti consigliamo di [Fase del modello](#step-type-model) utilizzarlo per creare modelli a partire dalla v2.90.0 di AI SageMaker Python SDK. `CreateModelStep`continuerà a funzionare nelle versioni precedenti di SageMaker Python SDK, ma non è più supportato attivamente.

```
from sagemaker.workflow.steps import CreateModelStep

step_create_model = CreateModelStep(
    name="AbaloneCreateModel",
    model=best_model,
    inputs=inputs
)
```

------

## Fase Registrazione di un modello
<a name="step-type-register-model"></a>

La fase Register model registra un modello nel Model Registry. SageMaker 

------
#### [ Pipeline Designer ]

Per registrare un modello da una pipeline utilizzando Pipeline Designer, procedi come descritto di seguito:

1. Apri la console Amazon SageMaker Studio seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Registrazione di un modello** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Registrazione di un modello** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Se il canvas include una fase immediatamente precedente alla fase **Registrazione di un modello** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Registrazione di un modello** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Registrazione di un modello** che hai aggiunto, fai clic e trascina il cursore dalla fase **Registrazione di un modello** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

**Importante**  
Si consiglia di utilizzare [Fase del modello](#step-type-model) per registrare i modelli a partire dalla v2.90.0 di AI SageMaker Python SDK. `RegisterModel`continuerà a funzionare nelle versioni precedenti di SageMaker Python SDK, ma non è più supportato attivamente.

[Si utilizza un `RegisterModel` passaggio per registrare un SageMaker.model.model o un [sagemaker.pipeline](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html). PipelineModel](https://sagemaker.readthedocs.io/en/stable/api/inference/pipeline.html#pipelinemodel)con Amazon SageMaker Model Registry. Un `PipelineModel` rappresenta una pipeline di inferenza, che è un modello composto da una sequenza lineare di container che elaborano richieste di inferenza.

Per ulteriori informazioni su come eseguire la registrazione di un modello, consulta [Implementazione della registrazione del modello con il registro dei modelli](model-registry.md). Per ulteriori informazioni sui requisiti dei `RegisterModel` passaggi, consulta [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel)documentazione.

L'esempio seguente mostra come creare una fase `RegisterModel` per registrare un `PipelineModel`.

```
import time
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
 entry_point='inference.py',
 source_dir='sklearn_source_dir/',
 code_location=code_location,
 framework_version='1.0-1',
 role=role,
 sagemaker_session=sagemaker_session,
 py_version='py3')

xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
 entry_point='inference.py',
 source_dir='xgboost_source_dir/',
 code_location=code_location,
 framework_version='0.90-2',
 py_version='py3',
 sagemaker_session=sagemaker_session,
 role=role)

from sagemaker.workflow.step_collections import RegisterModel
from sagemaker import PipelineModel
pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session)

step_register = RegisterModel(
 name="AbaloneRegisterModel",
 model=pipeline_model,
 content_types=["application/json"],
 response_types=["application/json"],
 inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
 transform_instances=["ml.m5.xlarge"],
 model_package_group_name='sipgroup',
)
```

Se `model` non viene fornito, la fase di registrazione del modello richiede uno strumento di valutazione come mostrato nell'esempio seguente.

```
from sagemaker.workflow.step_collections import RegisterModel

step_register = RegisterModel(
    name="AbaloneRegisterModel",
    estimator=xgb_train,
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    content_types=["text/csv"],
    response_types=["text/csv"],
    inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
    transform_instances=["ml.m5.xlarge"],
    model_package_group_name=model_package_group_name,
    approval_status=model_approval_status,
    model_metrics=model_metrics
)
```

------

## Fase Implementazione di un modello (endpoint)
<a name="step-type-deploy-model-endpoint"></a>

In Pipeline Designer, utilizza la fase Implementazione di un modello (endpoint) per implementare il modello in un endpoint. Puoi creare un nuovo endpoint o utilizzarne uno esistente. L’inferenza in tempo reale è ideale per carichi di lavoro di inferenza in cui sono previsti requisiti in tempo reale, interattivi e a bassa latenza. Puoi implementare il tuo modello nei servizi di hosting SageMaker AI e ottenere un endpoint in tempo reale che può essere utilizzato per l'inferenza. Questi endpoint sono completamente gestiti e supportano il dimensionamento automatico. Per ulteriori informazioni sull'inferenza in tempo reale nell' SageMaker intelligenza artificiale, consulta. [Inferenza in tempo reale](realtime-endpoints.md)

Prima di aggiungere una fase Implementazione di un modello alla pipeline, verifica che il tuo ruolo IAM abbia le autorizzazioni seguenti:
+ `sagemaker:CreateModel`
+ `sagemaker:CreateEndpointConfig`
+ `sagemaker:CreateEndpoint`
+ `sagemaker:UpdateEndpoint`
+ `sagemaker:DescribeModel`
+ `sagemaker:DescribeEndpointConfig`
+ `sagemaker:DescribeEndpoint`

Per saperne di più su tutte le autorizzazioni richieste per l' SageMaker IA e su come configurarle, consulta. [Autorizzazioni API Amazon SageMaker AI: riferimento ad azioni, autorizzazioni e risorse](api-permissions-reference.md)

Per aggiungere una fase di implementazione del modello alla tua Pipeline nell' drag-and-dropeditor, completa i seguenti passaggi:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Implementazione di un modello (endpoint)** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Implementazione di un modello (endpoint)** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**.

1. Se il canvas include una fase immediatamente precedente alla fase **Implementazione di un modello (endpoint)** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Implementazione di un modello (endpoint)** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Implementazione di un modello (endpoint)** che hai aggiunto, fai clic e trascina il cursore dalla fase **Implementazione di un modello (endpoint)** all’altra fase per creare un arco.

## Fase di trasformazione
<a name="step-type-transform"></a>

Si utilizza una fase di trasformazione in modo che la trasformazione in batch esegua inferenza su un intero set di dati. Per ulteriori informazioni sulla trasformazione in batch, consulta [Trasformazioni in batch con pipeline di inferenza](inference-pipeline-batch.md).

Una fase di trasformazione richiede un trasformatore e i dati su cui eseguire la trasformazione in batch. L’esempio seguente mostra come creare una definizione della fase Trasformazione. Per ulteriori informazioni sui requisiti delle fasi di trasformazione, consulta [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep)documentazione.

------
#### [ Pipeline Designer ]

Per aggiungere una fase di trasformazione in batch alla pipeline utilizzando l'editor drag-and-drop visivo, procedi come segue:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Implementazione di un modello (trasformazione di batch)** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Implementazione di un modello (trasformazione batch)** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. [Per informazioni sui campi di queste schede, consulta sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep).

1. Se il canvas include una fase immediatamente precedente alla fase **Implementazione di un modello (trasformazione di batch)** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Implementazione di un modello (trasformazione di batch)** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Implementazione di un modello (trasformazione di batch)** che hai aggiunto, fai clic e trascina il cursore dalla fase **Implementazione di un modello (trasformazione di batch)** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.transformer import Transformer
from sagemaker.inputs import TransformInput
from sagemaker.workflow.steps import TransformStep

transformer = Transformer(..., sagemaker_session=PipelineSession())

step_transform = TransformStep(
    name="AbaloneTransform",
    step_args=transformer.transform(data="s3://amzn-s3-demo-bucket/my-data"),
)
```

------

## Fase Condizione
<a name="step-type-condition"></a>

Si utilizza una fase condizionale per valutare la condizione delle proprietà della fase per valutare quale azione deve essere intrapresa successivamente nella pipeline.

Una fase di condizione richiede:
+ Un elenco di condizioni.
+ Un elenco di fasi da eseguire se la condizione restituisce `true`.
+ Un elenco di fasi da eseguire se la condizione restituisce `false`.

------
#### [ Pipeline Designer ]

Per aggiungere una fase di condizione a una pipeline utilizzando Pipeline Designer, procedi come descritto di seguito:

1. Apri la console Amazon SageMaker Studio seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Condizione** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Condizione** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.condition_step.ConditionStep).

1. Se il canvas include una fase immediatamente precedente alla fase **Condizione** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Condizione** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Condizione** che hai aggiunto, fai clic e trascina il cursore dalla fase **Condizione** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

 L'esempio seguente mostra come creare una definizione di `ConditionStep`. 

**Limitazioni**
+ Pipelines non supporta l’utilizzo di fasi di condizione annidate. Non è possibile passare una fase condizionale come input per un'altra fase condizionale.
+ Una fase condizionale non può utilizzare fasi identiche in entrambi i rami. Se hai bisogno della stessa funzionalità di fase in entrambi i rami, duplica la fase e assegnale un nome diverso.

```
from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.functions import JsonGet

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value"
    ),
    right=6.0
)

step_cond = ConditionStep(
    name="AbaloneMSECond",
    conditions=[cond_lte],
    if_steps=[step_register, step_create_model, step_transform],
    else_steps=[]
)
```

Per ulteriori informazioni sui `ConditionStep` requisiti, consulta [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#conditionstep) Riferimento API. Per ulteriori informazioni sulle condizioni supportate, consulta *[Amazon SageMaker Pipelines - Conditions](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#conditions)* nella documentazione di SageMaker AI Python SDK. 

------

## Fase di callback
<a name="step-type-callback"></a>

Utilizza un `Callback` passaggio per aggiungere processi e AWS servizi aggiuntivi al tuo flusso di lavoro che non sono forniti direttamente da Amazon SageMaker Pipelines. Quando viene eseguita una fase di `Callback`, si verifica la seguente procedura:
+ Pipelines invia un messaggio a una coda Amazon Simple Queue Service (Amazon SQS) specificata dal cliente. Il messaggio contiene un token generato da Pipelines e un elenco di parametri di input fornito dal cliente. Dopo aver inviato il messaggio, Pipelines attende una risposta dal cliente.
+ Il cliente recupera il messaggio dalla coda Amazon SQS e avvia il processo personalizzato.
+ Al termine del processo, il cliente chiama una delle seguenti persone APIs e invia il token generato da Pipelines:
  +  [SendPipelineExecutionStepSuccess](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepSuccess.html), insieme a un elenco di parametri di output
  +  [SendPipelineExecutionStepFailure](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepFailure.html), insieme a un motivo del fallimento
+ La chiamata API fa sì che Pipelines continui o interrompa il processo della pipeline.

Per ulteriori informazioni sui requisiti dei `Callback` passaggi, consulta [sagemaker.workflow.callback\$1step. CallbackStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.callback_step.CallbackStep)documentazione. Per una soluzione completa, consulta [Extend SageMaker Pipelines per includere passaggi personalizzati utilizzando passaggi di callback](https://aws.amazon.com/blogs/machine-learning/extend-amazon-sagemaker-pipelines-to-include-custom-steps-using-callback-steps/).

**Importante**  
`Callback`i passaggi sono stati introdotti in Amazon SageMaker Python SDK v2.45.0 e Amazon Studio Classic v3.6.2. SageMaker Devi aggiornare Studio Classic prima di utilizzare una fase `Callback`, in caso contrario il DAG della pipeline non viene visualizzato. Per aggiornare Studio Classic, consulta [Chiudi e aggiorna Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

L’esempio seguente illustra un’implementazione della procedura precedente.

```
from sagemaker.workflow.callback_step import CallbackStep

step_callback = CallbackStep(
    name="MyCallbackStep",
    sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue",
    inputs={...},
    outputs=[...]
)

callback_handler_code = '
    import boto3
    import json

    def handler(event, context):
        sagemaker_client=boto3.client("sagemaker")

        for record in event["Records"]:
            payload=json.loads(record["body"])
            token=payload["token"]

            # Custom processing

            # Call SageMaker AI to complete the step
            sagemaker_client.send_pipeline_execution_step_success(
                CallbackToken=token,
                OutputParameters={...}
            )
'
```

**Nota**  
I parametri di output per `CallbackStep` non devono essere nidificati. Ad esempio, se si utilizza un dizionario nidificato come parametro di output, il dizionario viene trattato come una singola stringa (ad es. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Se fornisci un valore annidato, quando provi a fare riferimento a un particolare parametro di output, l' SageMaker IA genera un errore client non riproducibile.

**Comportamento di arresto**

Un processo di pipeline non si arresta durante l'esecuzione di una fase di `Callback`.

Quando [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)richiami un processo di pipeline con una `Callback` fase in esecuzione, Pipelines invia un messaggio Amazon SQS alla coda SQS. Il corpo del messaggio SQS contiene un campo **Stato**, impostato su `Stopping`. Nell'esempio seguente viene mostrato il corpo di un messaggio SQS.

```
{
  "token": "26vcYbeWsZ",
  "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a",
  "arguments": {
    "number": 5,
    "stringArg": "some-arg",
    "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv"
  },
  "status": "Stopping"
}
```

È opportuno aggiungere una logica al consumer del messaggio Amazon SQS affinché intraprenda le eventuali azioni necessarie (ad esempio, la pulizia delle risorse) al momento della ricezione del messaggio. Quindi, aggiungi una chiamata a `SendPipelineExecutionStepSuccess` o `SendPipelineExecutionStepFailure`.

Solo quando Pipelines riceve una di queste chiamate arresta il processo della pipeline.

## Fase Lambda
<a name="step-type-lambda"></a>

Si utilizza un passaggio Lambda per eseguire una AWS Lambda funzione. Puoi eseguire una funzione Lambda esistente oppure l' SageMaker IA può creare ed eseguire una nuova funzione Lambda. Se scegli di utilizzare una funzione Lambda esistente, questa deve essere nella Regione AWS stessa pipeline SageMaker AI. [Per un taccuino che mostra come utilizzare una fase Lambda in una pipeline SageMaker AI, consulta .ipynb. sagemaker-pipelines-lambda-step](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/lambda-step/sagemaker-pipelines-lambda-step.ipynb)

**Importante**  
Le fasi Lambda sono state introdotte in Amazon SageMaker Python SDK v2.51.0 e Amazon Studio Classic v3.9.1. SageMaker Devi aggiornare Studio Classic prima di utilizzare una fase Lambda, in caso contrario il DAG della pipeline non viene visualizzato. Per aggiornare Studio Classic, consulta [Chiudi e aggiorna Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

SageMaker L'intelligenza artificiale fornisce la classe [SageMaker.lambda\$1helper.lambda per creare, aggiornare, richiamare ed eliminare funzioni Lambda](https://sagemaker.readthedocs.io/en/stable/api/utility/lambda_helper.html). `Lambda`ha la seguente firma.

```
Lambda(
    function_arn,       # Only required argument to invoke an existing Lambda function

    # The following arguments are required to create a Lambda function:
    function_name,
    execution_role_arn,
    zipped_code_dir,    # Specify either zipped_code_dir and s3_bucket, OR script
    s3_bucket,          # S3 bucket where zipped_code_dir is uploaded
    script,             # Path of Lambda function script
    handler,            # Lambda handler specified as "lambda_script.lambda_handler"
    timeout,            # Maximum time the Lambda function can run before the lambda step fails
    ...
)
```

Il [sagemaker.workflow.lambda\$1step. LambdaStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.lambda_step.LambdaStep)la classe ha un argomento di tipo. `lambda_func` `Lambda` Per richiamare una funzione Lambda esistente, l'unico requisito è fornire il nome della risorsa Amazon (ARN) della funzione a `function_arn`. Se non fornisci un valore per `function_arn`, devi specificare `handler` e uno dei seguenti parametri:
+ `zipped_code_dir`: il percorso della funzione Lambda compressa

  `s3_bucket`: bucket Amazon S3 dove deve essere caricato `zipped_code_dir`
+ `script`: il percorso del file di script della funzione Lambda

L'esempio seguente mostra come creare una definizione di fase `Lambda` che richiami una funzione Lambda esistente.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
        function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda"
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

L'esempio seguente mostra come creare una definizione di fase `Lambda` che crei e richiami una funzione Lambda utilizzando uno script di funzione Lambda.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
      function_name="split-dataset-lambda",
      execution_role_arn=execution_role_arn,
      script="lambda_script.py",
      handler="lambda_script.lambda_handler",
      ...
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

**Input e output**

Se la funzione `Lambda` ha input o output, anche questi devono essere definiti nella fase `Lambda`.

**Nota**  
I parametri di input e output non devono essere nidificati. Ad esempio, se si utilizza un dizionario nidificato come parametro di output, il dizionario viene trattato come una singola stringa (ad es. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Se si fornisce un valore nidificato e si tenta di farvi riferimento in un secondo momento, viene generato un errore irreversibile del client.

Quando si definisce la fase `Lambda`, `inputs` deve essere un dizionario di coppie chiave-valore. Ogni valore del dizionario `inputs` deve essere di tipo primitivo (stringa, numero intero o float). Gli oggetti nidificati non sono supportati. Se non viene definito, il valore `inputs` predefinito è `None`.

Il valore `outputs` deve essere un elenco di chiavi. Queste chiavi si riferiscono a un dizionario definito nell'output della funzione `Lambda`. Come per `inputs`, queste chiavi devono essere di tipo primitivo e gli oggetti nidificati non sono supportati.

**Comportamento di timeout e arresto**

La classe `Lambda` ha un argomento `timeout` che specifica il tempo massimo di esecuzione della funzione Lambda. Il valore predefinito è 120 secondi con un valore massimo di 10 minuti. Se la funzione Lambda è in esecuzione quando viene raggiunto il timeout, la fase Lambda ha esito negativo; tuttavia, la funzione Lambda continua a essere in esecuzione.

Un processo di pipeline non può essere arrestato mentre è in esecuzione una fase Lambda perché la funzione Lambda richiamata dalla fase Lambda non può essere arrestata. Se provi ad arrestare il processo mentre la funzione Lambda è in esecuzione, la pipeline attende che la funzione venga completata o raggiunga il timeout, a seconda dell’evento che si verifica per primo. A questo punto, il processo si arresta. Se la funzione Lambda termina, lo stato del processo di pipeline è `Stopped`. Se viene raggiunto il timeout, lo stato del processo di pipeline è `Failed`.

## ClarifyCheck passo
<a name="step-type-clarify-check"></a>

Si può utilizzare la fase `ClarifyCheck` per eseguire controlli della deviazione dalla baseline rispetto alle baseline precedenti per l'analisi dei bias e la spiegabilità del modello. È quindi possibile generare e [registrare le proprie baseline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) con il metodo `model.register()` e passare l'output di tale metodo a [Fase del modello](#step-type-model) utilizzando `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`. Queste linee di base per il controllo della deriva possono essere utilizzate da Amazon SageMaker Model Monitor per gli endpoint del modello. Di conseguenza, non è necessario eseguire separatamente un suggerimento [baseline](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html). 

La fase `ClarifyCheck` può anche estrarre le baseline per il controllo della deviazione dal registro dei modelli. La `ClarifyCheck` fase utilizza il contenitore predefinito Clarify SageMaker . Questo container offre una gamma di funzionalità di monitoraggio dei modelli, tra cui suggerimenti e convalida dei vincoli rispetto a una determinata baseline. Per ulteriori informazioni, consulta [Contenitori Clarify predefiniti SageMaker](clarify-processing-job-configure-container.md).

### Configurazione della fase ClarifyCheck
<a name="configuring-step-type-clarify"></a>

È possibile configurare la fase `ClarifyCheck` per eseguire solo uno dei seguenti tipi di controllo ogni volta che viene utilizzata in una pipeline.
+ Controllo dei bias nei dati
+ Controllo dei bias nel modello
+ Controllo della spiegabilità del modello

Per farlo, imposta il parametro `clarify_check_config` con uno dei valori del tipo di controllo seguenti:
+ `DataBiasCheckConfig`
+ `ModelBiasCheckConfig`
+ `ModelExplainabilityCheckConfig`

La `ClarifyCheck` fase avvia un processo di elaborazione che esegue il contenitore precostruito SageMaker AI Clarify e richiede [configurazioni dedicate per il controllo e il](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-configure-processing-jobs.html) processo di elaborazione. `ClarifyCheckConfig`e `CheckJobConfig` sono funzioni di supporto per queste configurazioni. Queste funzioni di supporto sono in linea con il modo in cui viene calcolato il processo di elaborazione di SageMaker Clarify per verificare la distorsione del modello, la distorsione dei dati o la spiegabilità del modello. Per ulteriori informazioni, consulta [Esegui SageMaker Clarify Processing Jobs per l'analisi e la spiegabilità dei pregiudizi](clarify-processing-job-run.md). 

### Controllo dei comportamenti della fase per il controllo della deviazione
<a name="controlling-step-type-clarify"></a>

La fase `ClarifyCheck` richiede i seguenti due flag booleani per controllarne il comportamento:
+ `skip_check`: questo parametro indica se il controllo della deriva rispetto alla baseline precedente viene saltato o meno. Se è impostato su `False`, deve essere disponibile la baseline precedente del tipo di controllo configurato.
+ `register_new_baseline`: questo parametro indica se è possibile accedere a una baseline appena calcolata tramite la proprietà di fase `BaselineUsedForDriftCheckConstraints`. Se è impostato su `False`, deve essere disponibile anche la baseline precedente del tipo di controllo configurato. È possibile accedervi tramite la proprietà `BaselineUsedForDriftCheckConstraints`. 

Per ulteriori informazioni, consulta [Calcolo di base, rilevamento della deriva e ciclo di vita con e ClarifyCheck fasi QualityCheck in Amazon Pipelines SageMaker](pipelines-quality-clarify-baseline-lifecycle.md).

### Utilizzo delle baseline
<a name="step-type-clarify-working-with-baselines"></a>

Puoi anche specificare `model_package_group_name` per individuare la baseline esistente. Quindi, la fase `ClarifyCheck` estrae `DriftCheckBaselines` nell’ultimo pacchetto di modelli approvato nel gruppo di pacchetti di modelli. 

In alternativa, è possibile fornire una baseline precedente tramite il parametro `supplied_baseline_constraints`. Se si specificano sia `model_package_group_name` che `supplied_baseline_constraints`, la fase `ClarifyCheck` utilizza la baseline specificata dal parametro `supplied_baseline_constraints`.

[Per ulteriori informazioni sull'utilizzo dei requisiti dei passaggi, consultate sagemaker.workflow.steps. `ClarifyCheck` ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.clarify_check_step.ClarifyCheckStep)nell'*SDK Amazon SageMaker AI SageMaker AI per Python*. Per un notebook Amazon SageMaker Studio Classic che mostra come usare `ClarifyCheck` step in Pipelines, consulta [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb).

**Example Crea una fase `ClarifyCheck` per il controllo dei bias nei dati**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_bias_data_config = DataConfig(
    s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep']),
    label=0,
    dataset_type="text/csv",
    s3_analysis_config_output_path=data_bias_analysis_cfg_output_path,
)

data_bias_config = BiasConfig(
    label_values_or_threshold=[15.0], facet_name=[8], facet_values_or_threshold=[[0.5]]  
)

data_bias_check_config = DataBiasCheckConfig(
    data_config=data_bias_data_config,
    data_bias_config=data_bias_config,
)h

data_bias_check_step = ClarifyCheckStep(
    name="DataBiasCheckStep",
    clarify_check_config=data_bias_check_config,
    check_job_config=check_job_config,
    skip_check=False,
    register_new_baseline=False
   supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## QualityCheck passaggio
<a name="step-type-quality-check"></a>

Utilizza la fase `QualityCheck` per eseguire [suggerimenti baseline](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) e controlli della deriva rispetto a una baseline precedente per verificare la qualità dei dati o del modello in una pipeline. Puoi quindi generare e [registrare le tue baseline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) con il metodo `model.register()` e passare l’output di tale metodo a [Fase del modello](#step-type-model) utilizzando `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`.

Model Monitor può usare queste baseline per il controllo della deviazione per gli endpoint del modello in modo da non dover eseguire un suggerimento di baseline separatamente. La fase `QualityCheck` può anche estrarre le baseline per il controllo della deviazione dal registro dei modelli. La `QualityCheck` fase sfrutta il container precostruito Amazon SageMaker AI Model Monitor. Questo container offre una gamma di funzionalità di monitoraggio dei modelli, tra cui la generazione di statistiche e i suggerimenti e la convalida dei vincoli rispetto a una determinata baseline. Per ulteriori informazioni, consulta [Contenitore precostruito Amazon SageMaker Model Monitor](model-monitor-pre-built-container.md).

### Configurazione della fase QualityCheck
<a name="configuring-step-type-quality"></a>

Puoi configurare la fase `QualityCheck` per eseguire solo uno dei seguenti tipi di controllo ogni volta che viene utilizzato in una pipeline.
+ Controllo della qualità dei dati
+ Controllo della qualità del modello

È possibile eseguire questa operazione impostando il parametro `quality_check_config` con uno dei valori di tipo di controllo seguenti:
+ `DataQualityCheckConfig`
+ `ModelQualityCheckConfig`

La fase `QualityCheck` avvia un processo di elaborazione che esegue il container esistente di Model Monitor e richiede configurazioni dedicate per il controllo e il processo di elaborazione. `QualityCheckConfig` e `CheckJobConfig` sono funzioni di supporto per queste configurazioni. Queste funzioni di supporto sono in linea con il modo in cui Model Monitor crea una baseline per il monitoraggio della qualità del modello o dei dati. Per ulteriori informazioni sui suggerimenti di baseline di Model Monitor, consulta [Creazione di una linea di base](model-monitor-create-baseline.md) e [Creazione di una baseline per la qualità del modello](model-monitor-model-quality-baseline.md).

### Controllo dei comportamenti della fase per il controllo della deviazione
<a name="controlling-step-type-quality"></a>

La fase `QualityCheck` richiede i seguenti due flag booleani per controllarne il comportamento:
+ `skip_check`: questo parametro indica se il controllo della deriva rispetto alla baseline precedente viene saltato o meno. Se è impostato su `False`, deve essere disponibile la baseline precedente del tipo di controllo configurato.
+ `register_new_baseline`: questo parametro indica se è possibile accedere a una baseline appena calcolata tramite le proprietà di fase `BaselineUsedForDriftCheckConstraints` e `BaselineUsedForDriftCheckStatistics`. Se è impostato su `False`, deve essere disponibile anche la baseline precedente del tipo di controllo configurato. È possibile accedervi tramite le proprietà `BaselineUsedForDriftCheckConstraints` e `BaselineUsedForDriftCheckStatistics`.

Per ulteriori informazioni, consulta [Calcolo di base, rilevamento della deriva e ciclo di vita con e ClarifyCheck fasi QualityCheck in Amazon Pipelines SageMaker](pipelines-quality-clarify-baseline-lifecycle.md).

### Utilizzo delle baseline
<a name="step-type-quality-working-with-baselines"></a>

Puoi specificare una baseline precedente direttamente tramite i parametri `supplied_baseline_statistics` e `supplied_baseline_constraints`. Puoi anche specificare `model_package_group_name` per far sì che la fase `QualityCheck` estragga `DriftCheckBaselines` nell’ultimo pacchetto di modelli approvato nel gruppo di pacchetti di modelli. 

Quando specifichi quanto segue, la fase `QualityCheck` utilizza la baseline indicata da `supplied_baseline_constraints` e `supplied_baseline_statistics` sul tipo di controllo della fase `QualityCheck`.
+ `model_package_group_name`
+ `supplied_baseline_constraints`
+ `supplied_baseline_statistics`

Per ulteriori informazioni sull'utilizzo dei requisiti dei `QualityCheck` passaggi, consulta [sagemaker.workflow.steps. QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.quality_check_step.QualityCheckStep)nell'*SDK Amazon SageMaker AI SageMaker AI per Python*. Per un notebook Amazon SageMaker Studio Classic che mostra come usare `QualityCheck` step in Pipelines, consulta [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb). 

**Example Crea una fase `QualityCheck` per il controllo della qualità dei dati**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_quality_check_config = DataQualityCheckConfig(
    baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"),
    output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep'])
)

data_quality_check_step = QualityCheckStep(
    name="DataQualityCheckStep",
    skip_check=False,
    register_new_baseline=False,
    quality_check_config=data_quality_check_config,
    check_job_config=check_job_config,
    supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json",
    supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## Fase EMR
<a name="step-type-emr"></a>

Utilizza la fase [EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html) di Amazon SageMaker Pipelines per:
+ Elaborare le [fasi di Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) in un cluster Amazon EMR in esecuzione.
+ Far sì che la pipeline crei e gestisca un cluster Amazon EMR per te.

Per ulteriori informazioni su Amazon EMR, consulta [ Nozioni di base su Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).

La fase EMR richiede che `EMRStepConfig` includa la posizione del file JAR utilizzato dal cluster Amazon EMR e tutti gli argomenti da passare. Fornisci anche l’ID del cluster Amazon EMR se intendi eseguire la fase su un cluster EMR in esecuzione. Puoi anche passare la configurazione del cluster per eseguire la fase EMR su un cluster creato, gestito e terminato al posto tuo. Le sezioni seguenti includono esempi e collegamenti a notebook di esempio che illustrano entrambi i metodi.

**Nota**  
Le fasi EMR richiedono che il ruolo passato alla pipeline disponga di autorizzazioni aggiuntive. Collega la [policy gestita da AWS : `AmazonSageMakerPipelinesIntegrations`](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-pipelines.html#security-iam-awsmanpol-AmazonSageMakerPipelinesIntegrations) al tuo ruolo della pipeline o verifica che il ruolo includa le autorizzazioni specificate nella policy.
Se elabori una fase EMR su un cluster in esecuzione, puoi utilizzare solo un cluster che si trova in uno dei seguenti stati:   
`STARTING`
`BOOTSTRAPPING`
`RUNNING`
`WAITING`
Se si elaborano fasi EMR su un cluster in esecuzione, è possibile avere al massimo 256 fasi EMR in uno stato `PENDING` su un cluster EMR. Le fasi EMR inviate oltre questo limite provocano un errore di esecuzione della pipeline. Puoi valutare l'utilizzo di [Policy di ripetizione per la fasi della pipeline](pipelines-retry-policy.md).
È possibile specificare l'ID o la configurazione del cluster, ma non entrambi.
La fase EMR si affida EventBridge ad Amazon per monitorare le modifiche nella fase EMR o nello stato del cluster. Se elabori il tuo processo Amazon EMR su un cluster in esecuzione, la fase EMR utilizza la regola `SageMakerPipelineExecutionEMRStepStatusUpdateRule` per monitorare lo stato della fase EMR. Se elabori il processo su un cluster creato per te dalla fase EMR, la fase utilizza la regola `SageMakerPipelineExecutionEMRClusterStatusRule` per monitorare le modifiche allo stato del cluster. Se vedi una di queste EventBridge regole nel tuo AWS account, non eliminarla, altrimenti la fase EMR potrebbe non essere completata.

**Aggiungi una fase di Amazon EMR alla tua pipeline**

Per aggiungere una fase EMR alla pipeline, procedi come segue:
+ Apri la console Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.
+ Scegli **Create** (Crea).
+ Scegli **Vuoto**.
+ Nella barra laterale sinistra, scegli **Elaborazione di dati** e trascinalo sul canvas.
+ Nel canvas, scegli la fase **Elaborazione di dati** che hai aggiunto.
+ Nella barra laterale destra, sotto modalità, scegli **EMR (**gestito).
+ Nella barra laterale destra, completa i moduli nelle schede **Impostazioni e Dettagli**. [Per informazioni sui campi di queste schede, consulta sagemaker.workflow.fail\$1step. EMRstep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.emr_step.EMRStep).

**Avvio di un nuovo processo su un cluster Amazon EMR in esecuzione**

Per avviare un nuovo processo su un cluster Amazon EMR in esecuzione, passa l’ID cluster come stringa all’argomento `cluster_id` di `EMRStep`. L'esempio seguente illustra questa procedura.

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

step_emr = EMRStep (
    name="EMRSampleStep", # required
    cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster
    step_config=emr_config, # required
    display_name="My EMR Step",
    description="Pipeline step to execute EMR job"
)
```

Per un notebook di esempio con indicazioni dettagliate per l’esempio completo, consulta [Fase EMR di Pipelines con cluster EMR in esecuzione](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-running-emr-cluster.ipynb).

**Avvio di un nuovo processo su un nuovo cluster Amazon EMR**

Per avviare un nuovo processo su un nuovo cluster creato per te da `EMRStep`, fornisci la configurazione del cluster come dizionario, Il dizionario deve avere la stessa struttura di una [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html)richiesta. Tuttavia, non includere i seguenti campi nella configurazione del cluster:
+ [`Name`]
+ [`Steps`]
+ [`AutoTerminationPolicy`]
+ [`Instances`][`KeepJobFlowAliveWhenNoSteps`]
+ [`Instances`][`TerminationProtected`]

Tutti gli altri argomenti `RunJobFlow` sono disponibili per l'uso nella configurazione del cluster. Per i dettagli sulla sintassi della richiesta, vedere [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html).

L’esempio seguente passa una configurazione del cluster a una definizione della fase EMR. Alla fase viene richiesto di avviare un nuovo processo su un nuovo cluster EMR. La configurazione del cluster EMR in questo esempio include le specifiche per i nodi primari e principali del cluster EMR. Per ulteriori informazioni sui tipi di nodo Amazon EMR, consulta [Informazioni sui tipi di nodi: nodi primari, principali e attività](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html).

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_step_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

# include your cluster configuration as a dictionary
emr_cluster_config = {
    "Applications": [
        {
            "Name": "Spark", 
        }
    ],
    "Instances":{
        "InstanceGroups":[
            {
                "InstanceRole": "MASTER",
                "InstanceCount": 1,
                "InstanceType": "m5.2xlarge"
            },
            {
                "InstanceRole": "CORE",
                "InstanceCount": 2,
                "InstanceType": "m5.2xlarge"
            }
        ]
    },
    "BootstrapActions":[],
    "ReleaseLabel": "emr-6.6.0",
    "JobFlowRole": "job-flow-role",
    "ServiceRole": "service-role"
}

emr_step = EMRStep(
    name="emr-step",
    cluster_id=None,
    display_name="emr_step",
    description="MyEMRStepDescription",
    step_config=emr_step_config,
    cluster_config=emr_cluster_config
)
```

Per un notebook di esempio con indicazioni dettagliate per l’esempio completo, consulta [Fase EMR di Pipelines con gestione del ciclo di vita del cluster](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-cluster-lifecycle-management.ipynb).

## Fase EMR senza server
<a name="step-type-serverless"></a>

Per aggiungere una fase EMR serverless alla pipeline, procedi come segue:
+ Apri la console Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.
+ Scegli **Create** (Crea).
+ Scegli **Vuoto**.
+ Nella barra laterale sinistra, scegli **Elaborazione di dati** e trascinalo sul canvas.
+ Nel canvas, scegli la fase **Elaborazione di dati** che hai aggiunto.
+ Nella barra laterale destra, sotto modalità, scegli **EMR (**serverless).
+ Nella barra laterale destra, compila i moduli nelle schede **Impostazioni** e Dettagli.

## Fase Processo del notebook
<a name="step-type-notebook-job"></a>

Usa `NotebookJobStep` a per eseguire SageMaker Notebook Job in modo non interattivo come fase della pipeline. Se crei la tua pipeline nell' drag-and-dropinterfaccia utente di Pipelines, usa la per eseguire il [Fase Esecuzione di codice](#step-type-executecode) tuo notebook. Per ulteriori informazioni su SageMaker Notebook Jobs, consulta. [SageMaker Lavori su notebook](notebook-auto-run.md)

`NotebookJobStep` richiede almeno un notebook di input, un URI dell’immagine e un nome del kernel. Per ulteriori informazioni sui requisiti dei passaggi di Notebook Job e su altri parametri che è possibile impostare per personalizzare il passaggio, vedere [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep).

L’esempio seguente utilizza un numero minimo di argomenti per definire `NotebookJobStep`.

```
from sagemaker.workflow.notebook_job_step import NotebookJobStep


notebook_job_step = NotebookJobStep(
    input_notebook=input_notebook,
    image_uri=image_uri,
    kernel_name=kernel_name
)
```

La fase `NotebookJobStep` della pipeline viene considerata come un lavoro svolto da un SageMaker notebook. Di conseguenza, monitora lo stato di esecuzione nella dashboard dei processi del notebook nell’interfaccia utente di Studio Classic includendo tag specifici con argomento `tags`. Per ulteriori informazioni sui tag da utilizzare, consulta [Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

Inoltre, se pianifichi il lavoro sul notebook utilizzando l'SDK SageMaker Python, puoi specificare solo determinate immagini per eseguire il lavoro sul notebook. Per ulteriori informazioni, consulta [Vincoli di immagine per i lavori su notebook AI SageMaker Python SDK](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

## Fase Errore
<a name="step-type-fail"></a>

Utilizza un passaggio Fail per interrompere l'esecuzione di Amazon SageMaker Pipelines quando non viene raggiunta la condizione o lo stato desiderato. La fase Errore consente inoltre di inserire un messaggio di errore personalizzato, che indica la causa dell’errore di esecuzione della pipeline.

**Nota**  
Quando una fase Errore e altre fasi della pipeline vengono eseguite simultaneamente, la pipeline non termina fino al completamento di tutte le fasi simultanee.

### Limitazioni all’utilizzo della fase Errore
<a name="step-type-fail-limitations"></a>
+ Non è possibile aggiungere una fase Errore all’elenco `DependsOn` di altre fasi. Per ulteriori informazioni, consulta [Dipendenza personalizzata tra le fasi](build-and-manage-steps.md#build-and-manage-custom-dependency).
+ Le altre fasi non possono fare riferimento alla fase Errore. È *sempre* l'ultima fase dell'esecuzione di una pipeline.
+ Non puoi riprovare l’esecuzione di una pipeline che termina con una fase Errore.

Puoi creare il messaggio di errore della fase Errore sotto forma di stringa di testo statica. In alternativa, puoi anche utilizzare i [Parametri della pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-parameters.html), un’operazione [Esegui join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html?highlight=Join#sagemaker.workflow.functions.Join) o altre [proprietà della fase](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#build-and-manage-properties) per creare un messaggio di errore più informativo, se utilizzi l’SDK.

------
#### [ Pipeline Designer ]

Per aggiungere una fase Errore alla pipeline, procedi come descritto di seguito:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Errore** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Errore** che hai aggiunto.

1. Nella barra laterale destra, completa i moduli nelle schede **Impostazioni** e **Dettagli**. [Per informazioni sui campi di queste schede, consulta sagemaker.workflow.fail\$1step. FailStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.fail_step.FailStep).

1. Se il canvas include una fase immediatamente precedente alla fase **Errore** che hai aggiunto, fai clic e trascina il cursore da tale fase alla fase **Errore** per creare un arco.

1. Se il canvas include una fase immediatamente successiva alla fase **Errore** che hai aggiunto, fai clic e trascina il cursore dalla fase **Errore** all’altra fase per creare un arco.

------
#### [ SageMaker Python SDK ]

**Example**  
Il frammento di codice di esempio seguente utilizza una `FailStep` con un `ErrorMessage` configurato con Parametri della pipeline e un'operazione `Join`.  

```
from sagemaker.workflow.fail_step import FailStep
from sagemaker.workflow.functions import Join
from sagemaker.workflow.parameters import ParameterInteger

mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5)
step_fail = FailStep(
    name="AbaloneMSEFail",
    error_message=Join(
        on=" ", values=["Execution failed due to MSE >", mse_threshold_param]
    ),
)
```

------

# Aggiungi integrazione
<a name="build-and-manage-steps-integration"></a>

MLflow l'integrazione consente di utilizzare MLflow le pipeline per selezionare un server di tracciamento o un'applicazione serverless, scegliere un esperimento e registrare i parametri.

## Concetti chiave
<a name="add-integration-key-concepts"></a>

**Creazione di app predefinite**: quando si accede all'editor visivo della pipeline, verrà creata MLflow un'applicazione predefinita.

**Pannello Integrazioni**: include un nuovo pannello di integrazioni MLflow, che puoi selezionare e configurare.

**Aggiorna app ed esperimento**: l'opzione per sovrascrivere l'applicazione e l'esperimento selezionati durante l'esecuzione della pipeline.

## Come funziona
<a name="add-integration-how-it-works"></a>
+ Vai a **Pipeline Visual Editor**
+ Scegli **Integrazione** nella barra degli strumenti
+ Scegliere **MLflow**
+ Configura l' MLflow app e sperimenta

## Schermate di esempio
<a name="add-integration-example-screenshots"></a>

Pannello laterale delle integrazioni

![\[La descrizione delle cose da fare.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/screenshot-pipeline-1.png)


MLflow configurazione

![\[La descrizione delle cose da fare.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/screenshot-pipeline-2.png)


Come sovrascrivere l'esperimento durante l'esecuzione della pipeline

![\[La descrizione delle cose da fare.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/screenshot-pipeline-3.png)


## Proprietà della fase
<a name="build-and-manage-properties"></a>

Utilizza l’attributo `properties` per aggiungere dipendenze dei dati tra le fasi della pipeline. Le pipeline utilizzano queste dipendenze dei dati per costruire il DAG a partire dalla definizione della pipeline. È possibile fare riferimento a queste proprietà come valori segnaposto e vengono risolte in fase di runtime. 

L'`properties`attributo di un passo Pipelines corrisponde all'oggetto restituito da una `Describe` chiamata per il tipo di lavoro SageMaker AI corrispondente. Per ogni tipo di processo, la chiamata `Describe` restituisce il seguente oggetto di risposta:
+ `ProcessingStep` – [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)
+ `TrainingStep` – [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)
+ `TransformStep` – [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)

[Per verificare quali proprietà sono riferibili per ogni tipo di passaggio durante la creazione della dipendenza dei dati, consulta Data *[Dependency - Property Reference nell'SDK](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable)

## Parallelizzazione delle fasi
<a name="build-and-manage-parallelism"></a>

Quando una fase non dipende da nessuna altra fase, viene eseguita immediatamente dopo l’esecuzione della pipeline. Tuttavia, l'esecuzione di troppe fasi della pipeline in parallelo può esaurire rapidamente le risorse disponibili. Controlla il numero di fasi simultanee per l'esecuzione di una pipeline con `ParallelismConfiguration`.

L'esempio seguente utilizza `ParallelismConfiguration` per impostare il limite di fasi simultanee a cinque.

```
pipeline.create(
    parallelism_config=ParallelismConfiguration(5),
)
```

## Dipendenza dei dati tra le fasi
<a name="build-and-manage-data-dependency"></a>

È possibile definire la struttura del DAG specificando le relazioni dei dati tra le fasi. Per creare dipendenze dei dati tra le fasi, passa le proprietà di una fase come input a un'altra fase della pipeline. La fase che riceve l'input viene avviata solo dopo il termine dell'esecuzione della fase che fornisce l'input.

Una dipendenza dai dati utilizza la notazione nel seguente formato. JsonPath Questo formato attraversa il file delle proprietà JSON. Ciò significa che è possibile aggiungere tutte *<property>* le istanze necessarie per raggiungere la proprietà annidata desiderata nel file. [Per ulteriori informazioni sulla JsonPath notazione, consulta il repository. JsonPath ](https://github.com/json-path/JsonPath)

```
<step_name>.properties.<property>.<property>
```

Di seguito viene illustrato come specificare un bucket Amazon S3 utilizzando la proprietà `ProcessingOutputConfig` di una fase di elaborazione.

```
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
```

Per creare la dipendenza dei dati, passa il bucket a una fase di addestramento come segue.

```
from sagemaker.workflow.pipeline_context import PipelineSession

sklearn_train = SKLearn(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="CensusTrain",
    step_args=sklearn_train.fit(inputs=TrainingInput(
        s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
            "train_data"].S3Output.S3Uri
    ))
)
```

[Per verificare quali proprietà sono riferibili per ogni tipo di passaggio durante la creazione della dipendenza dei dati, consulta Data *[Dependency - Property Reference nell'SDK](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable)

## Dipendenza personalizzata tra le fasi
<a name="build-and-manage-custom-dependency"></a>

Quando specifichi una dipendenza dei dati, Pipelines fornisce la connessione dati tra le fasi. In alternativa, una fase può accedere ai dati di una fase precedente senza utilizzare direttamente Pipelines. In questo caso, puoi creare una dipendenza personalizzata che indichi a Pipelines di iniziare una fase solo dopo il termine dell’esecuzione di un’altra fase. Si crea una dipendenza personalizzata specificando l'attributo `DependsOn` di una fase.

Ad esempio, quanto segue definisce una fase `C` che inizia solo dopo la fine dell'esecuzione sia della fase `A` che della fase `B`.

```
{
  'Steps': [
    {'Name':'A', ...},
    {'Name':'B', ...},
    {'Name':'C', 'DependsOn': ['A', 'B']}
  ]
}
```

Pipelines genera un’eccezione di convalida se la dipendenza crea una dipendenza ciclica.

L'esempio seguente crea una fase di addestramento che inizia al termine di una fase di elaborazione.

```
processing_step = ProcessingStep(...)
training_step = TrainingStep(...)

training_step.add_depends_on([processing_step])
```

L'esempio seguente crea una fase di addestramento che non si avvia fino al termine dell'esecuzione di due diverse fasi di elaborazione.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(...)

training_step.add_depends_on([processing_step_1, processing_step_2])
```

Di seguito viene fornito un modo alternativo per creare la dipendenza personalizzata.

```
training_step.add_depends_on([processing_step_1])
training_step.add_depends_on([processing_step_2])
```

L'esempio seguente crea una fase di addestramento che riceve input da una fase di elaborazione e attende il termine dell'esecuzione di una diversa fase di elaborazione.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(
    ...,
    inputs=TrainingInput(
        s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[
            "train_data"
        ].S3Output.S3Uri
    )

training_step.add_depends_on([processing_step_2])
```

Nell'esempio seguente viene illustrato come recuperare un elenco di stringhe delle dipendenze personalizzate di una fase.

```
custom_dependencies = training_step.depends_on
```

## Immagini personalizzate in una fase
<a name="build-and-manage-images"></a>

 Puoi utilizzare una qualsiasi delle [immagini disponibili dell' SageMaker AI Deep Learning Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) quando crei una fase della tua pipeline. 

Inoltre puoi utilizzare il tuo container con le fasi della pipeline. Poiché non puoi creare un’immagine dall’interno di Studio Classic, devi crearla con un altro metodo prima di utilizzarla con Pipelines.

Per utilizzare il tuo container personale durante la creazione delle fasi per la pipeline, includi l'URI dell'immagine nella definizione dello strumento di valutazione. Per ulteriori informazioni sull'utilizzo del tuo contenitore con l' SageMaker intelligenza artificiale, consulta [Usare i contenitori Docker con SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html) l'intelligenza artificiale.

# Lift-and-shift Codice Python con il decoratore @step
<a name="pipelines-step-decorator"></a>

Il decoratore `@step` è una funzionalità che converte il codice locale di machine learning (ML) in una o più fasi della pipeline. Puoi scrivere la tua funzione di ML come faresti per qualsiasi progetto di ML. Una volta testata localmente o come lavoro di formazione utilizzando il `@remote` decoratore, puoi convertire la funzione in una fase della pipeline SageMaker AI aggiungendo un decoratore. `@step` Puoi quindi passare a Pipelines l’output della chiamata alla funzione decorata con `@step` come fase per creare ed eseguire una pipeline. Puoi concatenare una serie di funzioni con il decoratore `@step` anche per creare una pipeline con grafo aciclico orientato (DAG) con più fasi.

La configurazione per utilizzare il decoratore `@step` è uguale a quella per il decoratore `@remote`. Puoi fare riferimento alla documentazione della funzione remota per dettagli su come [configurare l’ambiente](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator.html#train-remote-decorator-env) e [utilizzare un file di configurazione](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html) per impostare i valori predefiniti. Per ulteriori informazioni sul decoratore `@step`, consulta [sagemaker.workflow.function\$1step.step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.step).

Per visualizzare alcuni esempi di notebook che mostrano l’utilizzo del decoratore `@step`, consulta [@step decorator sample notebooks](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/step-decorator).

Le sezioni seguenti spiegano come annotare il codice di ML locale con un decoratore `@step` per creare una fase, creare ed eseguire una pipeline con tale fase e personalizzare l’esperienza in base al tuo caso d’uso.

**Topics**
+ [Creazione di una pipeline con funzioni decorate con `@step`](pipelines-step-decorator-create-pipeline.md)
+ [Esecuzione di una pipeline](pipelines-step-decorator-run-pipeline.md)
+ [Configurazione della pipeline](pipelines-step-decorator-cfg-pipeline.md)
+ [Best practice](pipelines-step-decorator-best.md)
+ [Limitazioni](pipelines-step-decorator-limit.md)

# Creazione di una pipeline con funzioni decorate con `@step`
<a name="pipelines-step-decorator-create-pipeline"></a>

Puoi creare una pipeline convertendo le funzioni Python in fasi della pipeline con il decoratore `@step`, creando dipendenze tra tali funzioni per creare un grafo di pipeline (o un grafo aciclico orientato, DAG) e passando i nodi foglia del grafo come elenco di fasi alla pipeline. Le sezioni seguenti spiegano questa procedura in dettaglio con esempi.

**Topics**
+ [Conversione di una funzione in una fase](#pipelines-step-decorator-run-pipeline-convert)
+ [Creazione di dipendenze tra le fasi](#pipelines-step-decorator-run-pipeline-link)
+ [Utilizzo di `ConditionStep` con fasi decorate con `@step`](#pipelines-step-decorator-condition)
+ [Definizione di una pipeline con l’output `DelayedReturn` delle fasi](#pipelines-step-define-delayed)
+ [Crea una pipeline](#pipelines-step-decorator-pipeline-create)

## Conversione di una funzione in una fase
<a name="pipelines-step-decorator-run-pipeline-convert"></a>

Per creare una fase con il decoratore `@step`, annota la funzione con `@step`. L’esempio seguente mostra una funzione decorata con `@step` che pre-elabora i dati.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
    
step_process_result = preprocess(raw_data)
```

Quando richiami una funzione `@step` -decorated, SageMaker AI restituisce un'`DelayedReturn`istanza invece di eseguire la funzione. Un’istanza `DelayedReturn` è un proxy per la restituzione effettiva della funzione. L’istanza `DelayedReturn` può essere passata a un’altra funzione come argomento o direttamente a un’istanza di pipeline come fase. [Per informazioni sulla `DelayedReturn` classe, vedete sagemaker.workflow.function\$1step. DelayedReturn](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.DelayedReturn).

## Creazione di dipendenze tra le fasi
<a name="pipelines-step-decorator-run-pipeline-link"></a>

Quando crei una dipendenza tra due fasi, crei una connessione tra le fasi nel grafo della pipeline. Le sezioni seguenti introducono diversi modi per creare una dipendenza tra le fasi della pipeline.

### Dipendenze dei dati tramite argomenti di input
<a name="pipelines-step-decorator-run-pipeline-link-interstep"></a>

Il passaggio nell’output `DelayedReturn` di una funzione come input in un’altra funzione crea automaticamente una dipendenza dei dati nel DAG della pipeline. Nell’esempio seguente, il passaggio dell’output `DelayedReturn` della funzione `preprocess` alla funzione `train` crea una dipendenza tra `preprocess` e `train`.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe

@step
def train(training_data):
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train(step_process_result)
```

L’esempio precedente definisce una funzione di addestramento decorata con `@step`. Quando questa funzione viene invocata, riceve come input l’output `DelayedReturn` della fase della pipeline di pre-elaborazione. L’invocazione della funzione di addestramento restituisce un’altra istanza `DelayedReturn`. Questa istanza contiene le informazioni su tutti le fasi precedenti definite in quella funzione (ad esempio, la fase `preprocess` in questo esempio) che formano il DAG della pipeline.

Nell’esempio precedente, la funzione `preprocess` restituisce un valore singolo. Per tipi di restituzione più complessi come elenchi o tuple, consulta [Limitazioni](pipelines-step-decorator-limit.md)

### Definizione delle dipendenze personalizzate
<a name="pipelines-step-decorator-run-pipeline-link-custom"></a>

Nell’esempio precedente, la funzione `train` ha ricevuto l’output `DelayedReturn` di `preprocess` e ha creato una dipendenza. Se desideri definire la dipendenza in modo esplicito senza passare l’output della fase precedente, utilizza la funzione `add_depends_on` con la fase. Puoi utilizzare la funzione `get_step()` per recuperare la fase sottostante dalla relativa istanza `DelayedReturn` e quindi chiamare `add_depends_on` con la dipendenza come input. Per visualizzare la definizione della funzione `get_step()`, consulta [sagemaker.workflow.step\$1outputs.get\$1step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_outputs.get_step). L’esempio seguente mostra come creare una dipendenza tra `preprocess` e `train` utilizzando `get_step()` e`add_depends_on()`.

```
from sagemaker.workflow.step_outputs import get_step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    processed_data = ..
    return s3.upload(processed_data)

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train()

get_step(step_train_result).add_depends_on([step_process_result])
```

### Passaggio dei dati da e verso una funzione decorata con `@step` in una fase della pipeline tradizionale
<a name="pipelines-step-decorator-run-pipeline-link-pass"></a>

Puoi creare una pipeline che include una fase decorata con `@step` e una fase della pipeline tradizionale e trasferire i dati tra le fasi. Ad esempio, puoi utilizzare per `ProcessingStep` elaborare i dati e passare il risultato alla funzione di addestramento decorata con `@step`. Nell’esempio seguente, una fase di addestramento decorata con `@step` fa riferimento all’output di una fase di elaborazione.

```
# Define processing step

from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

sklearn_processor = SKLearnProcessor(
    framework_version='1.2-1',
    role='arn:aws:iam::123456789012:role/SagemakerExecutionRole',
    instance_type='ml.m5.large',
    instance_count='1',
)

inputs = [
    ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
]
outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

process_step = ProcessingStep(
    name="MyProcessStep",
    step_args=sklearn_processor.run(inputs=inputs, outputs=outputs,code='preprocessing.py'),
)
```

```
# Define a @step-decorated train step which references the 
# output of a processing step

@step
def train(train_data_path, test_data_path):
    ...
    return trained_model
    
step_train_result = train(
   process_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
   process_step.properties.ProcessingOutputConfig.Outputs["test"].S3Output.S3Uri,
)
```

## Utilizzo di `ConditionStep` con fasi decorate con `@step`
<a name="pipelines-step-decorator-condition"></a>

Pipelines supporta una classe `ConditionStep` che valuta i risultati delle fasi precedenti per decidere quali azioni intraprendere nella pipeline. Puoi utilizzare `ConditionStep` anche con una fase decorata con `@step`. Per utilizzare l’output di qualsiasi fase decorata con `@step` con `ConditionStep`, inserisci l’output della fase come argomento in `ConditionStep`. Nell’esempio seguente, la fase di condizione riceve l’output della fase di valutazione del modello decorata con `@step`.

```
# Define steps

@step(name="evaluate")
def evaluate_model():
    # code to evaluate the model
    return {
        "rmse":rmse_value
    }
    
@step(name="register")
def register_model():
    # code to register the model
    ...
```

```
# Define ConditionStep

from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.fail_step import FailStep

conditionally_register = ConditionStep(
    name="conditional_register",
    conditions=[
        ConditionGreaterThanOrEqualTo(
            # Output of the evaluate step must be json serializable
            left=evaluate_model()["rmse"],  # 
            right=5,
        )
    ],
    if_steps=[FailStep(name="Fail", error_message="Model performance is not good enough")],
    else_steps=[register_model()],
)
```

## Definizione di una pipeline con l’output `DelayedReturn` delle fasi
<a name="pipelines-step-define-delayed"></a>

Definisci una pipeline allo stesso modo, indipendentemente dal fatto che utilizzi o meno un decoratore `@step`. Quando passi un’istanza `DelayedReturn` alla pipeline, non è necessario passare un elenco completo di fasi per creare la pipeline. L’SDK deduce automaticamente le fasi precedenti in base alle dipendenze definite. Tutte le fasi precedenti degli oggetti `Step` passati alla pipeline o agli oggetti `DelayedReturn` sono incluse nel grafo della pipeline. Nell’esempio seguente, la pipeline riceve l’oggetto `DelayedReturn` per la funzione `train`. SageMaker L'intelligenza artificiale aggiunge il `preprocess` passaggio, come passaggio precedente di`train`, al grafico della pipeline.

```
from sagemaker.workflow.pipeline import Pipeline

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=<sagemaker-session>,
)
```

Se non ci sono dati o dipendenze personalizzate tra le fasi e si eseguono più fasi in parallelo, il grafo della pipeline ha più di un nodo foglia. Passa tutti questi nodi foglia in un elenco all’argomento `steps` nella definizione della pipeline, come mostrato nell’esempio seguente:

```
@step
def process1():
    ...
    return data
    
@step
def process2():
   ...
   return data
   
step_process1_result = process1()
step_process2_result = process2()

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_process1_result, step_process2_result],
    sagemaker_session=sagemaker-session,
)
```

Quando la pipeline è in esecuzione, entrambi le fasi vengono eseguite in parallelo.

Passa solo i nodi foglia del grafico alla pipeline perché contengono informazioni su tutti le fasi precedenti definite tramite dipendenze dei dati o personalizzate. Quando compila la pipeline, l' SageMaker intelligenza artificiale deduce anche tutti i passaggi successivi che formano il grafico della pipeline e aggiunge ciascuno di essi come passaggio separato alla pipeline.

## Crea una pipeline
<a name="pipelines-step-decorator-pipeline-create"></a>

Crea una pipeline chiamando `pipeline.create()`, come mostrato nel frammento seguente. Per ulteriori informazioni su `create()`, consulta [sagemaker.workflow.pipeline.Pipeline.create](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.create).

```
role = "pipeline-role"
pipeline.create(role)
```

Quando chiami`pipeline.create()`, l' SageMaker IA compila tutti i passaggi definiti come parte dell'istanza della pipeline. SageMaker L'intelligenza artificiale carica la funzione serializzata, gli argomenti e tutti gli altri artefatti relativi ai passaggi su Amazon S3.

I dati risiedono nel bucket S3 in base alla seguente struttura:

```
s3_root_uri/
    pipeline_name/
        sm_rf_user_ws/
            workspace.zip  # archive of the current working directory (workdir)
        step_name/
            timestamp/
                arguments/                # serialized function arguments
                function/                 # serialized function
                pre_train_dependencies/   # any dependencies and pre_execution scripts provided for the step       
        execution_id/
            step_name/
                results     # returned output from the serialized function including the model
```

`s3_root_uri`è definito nel file di configurazione SageMaker AI e si applica all'intera pipeline. Se non definito, viene utilizzato il bucket SageMaker AI predefinito.

**Nota**  
Ogni volta che l' SageMaker intelligenza artificiale compila una pipeline, l' SageMaker intelligenza artificiale salva le funzioni, gli argomenti e le dipendenze serializzati dei passaggi in una cartella con l'ora corrente. Questo si verifica ogni volta che esegui `pipeline.create()`, `pipeline.update()`, `pipeline.upsert()` o `pipeline.definition()`.

# Esecuzione di una pipeline
<a name="pipelines-step-decorator-run-pipeline"></a>

La pagina seguente descrive come eseguire una pipeline con Amazon SageMaker Pipelines, con risorse SageMaker AI o localmente.

Avvia una nuova pipeline con la `pipeline.start()` funzione come faresti per l'esecuzione di una pipeline SageMaker AI tradizionale. Per informazioni sulla funzione `start()`, consulta [sagemaker.workflow.pipeline.Pipeline.start](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.start).

**Nota**  
Una fase definita con il decoratore `@step` viene eseguita come job di addestramento. Pertanto, tieni presente le limitazioni seguenti:  
Limiti relativi alle istanze e ai job di addestramento nei tuoi account. Aggiorna i limiti di conseguenza per evitare problemi di limitazione della larghezza di banda della rete o delle risorse.
I costi monetari associati a ogni esecuzione di una fase di addestramento nella pipeline. Per maggiori dettagli, consulta la pagina [ SageMaker dei prezzi di Amazon](https://aws.amazon.com/sagemaker/pricing/).

## Recupero dei risultati da una pipeline eseguita localmente
<a name="pipelines-step-decorator-run-pipeline-retrieve"></a>

Per visualizzare il risultato di qualsiasi fase dell’esecuzione di una pipeline, utilizza [execution.result ()](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline._PipelineExecution.result           ), come mostrato nel seguente frammento:

```
execution = pipeline.start()
execution.result(step_name="train")
```

**Nota**  
Pipelines non supporta `execution.result()` in modalità locale.

Puoi recuperare i risultati di una sola fase alla volta. Se il nome della fase è stato generato dall' SageMaker intelligenza artificiale, puoi recuperarlo chiamando `list_steps` come segue:

```
execution.list_step()
```

## Esecuzione di una pipeline in locale
<a name="pipelines-step-decorator-run-pipeline-local"></a>

Puoi eseguire localmente una pipeline con fasi decorate con `@step` con la stessa modalità utilizzata per le fasi della pipeline tradizionali. Per informazioni dettagliate sull’esecuzione della pipeline in modalità locale, consulta [Esecuzione delle pipeline con la modalità locale](pipelines-local-mode.md). Per utilizzare la modalità locale, inserisci `LocalPipelineSession` invece di `SageMakerSession` nella definizione della pipeline, come illustrato nell’esempio seguente:

```
from sagemaker.workflow.function_step import step
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_context import LocalPipelineSession

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model
    
step_train_result = train()

local_pipeline_session = LocalPipelineSession()

local_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=local_pipeline_session # needed for local mode
)

local_pipeline.create(role_arn="role_arn")

# pipeline runs locally
execution = local_pipeline.start()
```

# Configurazione della pipeline
<a name="pipelines-step-decorator-cfg-pipeline"></a>

Si consiglia di utilizzare il file di configurazione SageMaker AI per impostare i valori predefiniti per la pipeline. Per informazioni sul file di configurazione SageMaker AI, consulta [Configurazione e utilizzo dei valori predefiniti con Python SageMaker SDK](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). Qualsiasi configurazione aggiunta al file di configurazione si applica a tutte le fasi della pipeline. Per sostituire le opzioni di una qualsiasi fase, fornisci nuovi valori negli argomenti decoratore `@step`. L’argomento seguente descrive come impostare un file di configurazione.

La configurazione del decoratore `@step` nel file di configurazione è identica a quella del decoratore `@remote`. Per impostare l’ARN del ruolo della pipeline e i tag della pipeline nel file di configurazione, utilizza la sezione `Pipeline` mostrata nel seguente frammento:

```
SchemaVersion: '1.0'
SageMaker:
  Pipeline:
    RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
    Tags:
    - Key: 'tag_key'
      Value: 'tag_value'
```

Per la maggior parte delle impostazioni predefinite nel file di configurazione, puoi eseguire la sostituzione anche passando nuovi valori al decoratore `@step`. Ad esempio, puoi sostituire il tipo di istanza impostato nel file di configurazione per la fase di pre-elaborazione, come illustrato nell’esempio seguente:

```
@step(instance_type="ml.m5.large")
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
```

Alcuni argomenti non fanno parte dell'elenco dei parametri del `@step` decoratore: possono essere configurati per l'intera pipeline solo tramite il file di configurazione AI. SageMaker Sono elencati qui di seguito:
+ `sagemaker_session`(`sagemaker.session.Session`): La sessione SageMaker AI sottostante a cui l'IA delega le chiamate di servizio SageMaker . Se non è specificata, viene creata una sessione con una configurazione predefinita come descritto di seguito:

  ```
  SageMaker:
    PythonSDK:
      Modules:
        Session:
          DefaultS3Bucket: 'default_s3_bucket'
          DefaultS3ObjectKeyPrefix: 'key_prefix'
  ```
+ `custom_file_filter` (`CustomFileFilter)`: un oggetto `CustomFileFilter` che specifica le directory e i file locali da includere nella fase della pipeline. Se non è specificato, il valore predefinito è `None`. Affinché `custom_file_filter` abbia effetto, è necessario impostare `IncludeLocalWorkdir` su `True`. L’esempio seguente mostra una configurazione che ignora tutti i file del notebook, nonché i file e le directory denominati `data`.

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          IncludeLocalWorkDir: true
          CustomFileFilter: 
            IgnoreNamePatterns: # files or directories to ignore
            - "*.ipynb" # all notebook files
            - "data" # folder or file named "data"
  ```

  Per ulteriori dettagli su come utilizzare `IncludeLocalWorkdir` con `CustomFileFilter`, consulta [Utilizzo del codice modulare con il decoratore @remote](train-remote-decorator-modular.md).
+ `s3_root_uri (str)`: La cartella principale di Amazon S3 in cui SageMaker AI carica gli archivi e i dati del codice. Se non specificato, viene utilizzato il bucket SageMaker AI predefinito.
+ `s3_kms_key (str)`: la chiave utilizzata per crittografare i dati di input e output. È possibile configurare questo argomento solo nel file di configurazione SageMaker AI e l'argomento si applica a tutti i passaggi definiti nella pipeline. Se non specificato, il valore predefinito è `None`. Vedi il frammento seguente per un esempio di configurazione della chiave S3 KMS:

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          S3KmsKeyId: 's3kmskeyid'
          S3RootUri: 's3://amzn-s3-demo-bucket/my-project
  ```

# Best practice
<a name="pipelines-step-decorator-best"></a>

Le sezioni seguenti suggeriscono le best practice da seguire quando utilizzi il decoratore `@step` per le fasi della pipeline.

## Utilizzo dei warm pool
<a name="pipelines-step-decorator-best-warmpool"></a>

Per velocizzare l’esecuzione delle fasi della pipeline, utilizza la funzionalità warm pool fornita per i job di addestramento. Puoi attivare la funzionalità warm pool fornendo l’argomento `keep_alive_period_in_seconds` al decoratore `@step`, come illustrato nel frammento seguente:

```
@step(
   keep_alive_period_in_seconds=900
)
```

Per ulteriori informazioni sui warm pool, consulta [SageMaker Piscine calde gestite dall'IA](train-warm-pools.md). 

## Struttura della directory
<a name="pipelines-step-decorator-best-dir"></a>

Consigliamo di utilizzare moduli di codice quando lavori con il decoratore `@step`. Inserisci il modulo `pipeline.py`, nel quale vengono invocate le funzioni della fase e viene definita la pipeline, nella root dello spazio di lavoro. La struttura consigliata viene mostrata di seguito:

```
.
├── config.yaml # the configuration file that define the infra settings
├── requirements.txt # dependencies
├── pipeline.py  # invoke @step-decorated functions and define the pipeline here
├── steps/
| ├── processing.py
| ├── train.py
├── data/
├── test/
```

# Limitazioni
<a name="pipelines-step-decorator-limit"></a>

Le sezioni seguenti descrivono le limitazioni da tenere presenti quando utilizzi il decoratore `@step` per le fasi della pipeline.

## Limitazioni degli argomenti delle funzioni
<a name="pipelines-step-decorator-arg"></a>

Quando passi un argomento di input alla funzione decorata con `@step`, si applicano le seguenti limitazioni:
+ Puoi passare come argomenti gli oggetti `DelayedReturn`, `Properties` (di altri tipi di fasi), `Parameter` e `ExecutionVariable` alle funzioni decorate con `@step`. Tuttavia, le funzioni decorate con `@step` non supportano gli oggetti `JsonGet` e `Join` come argomenti.
+ Non puoi accedere direttamente a una variabile della pipeline da una funzione `@step`. L’esempio seguente genera un errore:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func():
      print(param)
  
  func() # this raises a SerializationError
  ```
+ Non puoi annidare una variabile della pipeline in un altro oggetto e passarla a una funzione `@step`. L’esempio seguente genera un errore:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func(arg):
      print(arg)
  
  func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  ```
+ Poiché gli input e gli output di una funzione sono serializzati, esistono limitazioni sui tipi di dati che possono essere passati come input o output da una funzione. Per maggiori dettagli, consulta la sezione *Serializzazione e deserializzazione dei dati* di [Invocare una funzione remota](train-remote-decorator-invocation.md). Le stesse limitazioni si applicano alle funzioni decorate con `@step`.
+ Tutti gli oggetti con un client boto non possono essere serializzati, quindi non puoi passare tali oggetti come input o output da una funzione decorata con `@step`. Ad esempio, le classi client SageMaker Python SDK come `Estimator``Predictor`, e non `Processor` possono essere serializzate.

## Importazioni di funzioni
<a name="pipelines-step-decorator-best-import"></a>

Devi importare le librerie richieste dalla fase all’interno e non all’esterno della funzione. Se le importi a livello globale, rischi un conflitto di importazione durante la serializzazione della funzione. Ad esempio, `sklearn.pipeline.Pipeline` potrebbe essere sovrascritto da `sagemaker.workflow.pipeline.Pipeline`.

## Riferimento ai membri secondari del valore restituito dalla funzione
<a name="pipelines-step-decorator-best-child"></a>

Se fai riferimento ai membri secondari di un valore restituito dalla funzione decorata con `@step`, si applicano le seguenti limitazioni:
+ Puoi fare riferimento ai membri secondari utilizzando `[]` se l’oggetto `DelayedReturn` rappresenta una tupla, un elenco o un dict, come mostrato nell’esempio seguente:

  ```
  delayed_return[0]
  delayed_return["a_key"]
  delayed_return[1]["a_key"]
  ```
+ Non puoi decomprimere l’output di una tupla o di un elenco perché la lunghezza esatta della tupla o dell’elenco sottostante non può essere nota quando invochi la funzione. L’esempio seguente genera un errore:

  ```
  a, b, c = func() # this raises ValueError
  ```
+ Non puoi eseguire iterazioni su un oggetto `DelayedReturn`. L’esempio seguente genera un errore:

  ```
  for item in func(): # this raises a NotImplementedError
  ```
+ Non è possibile fare riferimento ai membri secondari arbitrari con “`.`”. L’esempio seguente genera un errore:

  ```
  delayed_return.a_child # raises AttributeError
  ```

## Funzionalità delle pipeline esistenti che non sono supportate
<a name="pipelines-step-decorator-best-unsupported"></a>

Non è possibile utilizzare il decoratore `@step` con le funzionalità della pipeline seguenti:
+ [Caching delle fasi della pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-caching.html)
+ [File delle proprietà](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html#build-and-manage-propertyfile-property)

# Passaggio dei dati tra le fasi
<a name="build-and-manage-propertyfile"></a>

Quando crei pipeline con Amazon SageMaker Pipelines, potresti dover passare i dati da una fase all'altra. Ad esempio, potresti voler utilizzare gli artefatti del modello generati da una fase di addestramento come input per una fase di valutazione o implementazione del modello. Puoi utilizzare questa funzionalità per creare fasi della pipeline interdipendenti e flussi di lavoro di ML.

Quando devi recuperare informazioni dall’output di una fase della pipeline, puoi utilizzare `JsonGet`. `JsonGet` ti aiuta a estrarre informazioni da Amazon S3 o dai file delle proprietà. Le sezioni seguenti spiegano i metodi con cui estrarre gli output delle fasi con `JsonGet`.

## Passaggio dei dati tra le fasi con Amazon S3
<a name="build-and-manage-propertyfile-s3"></a>

Puoi utilizzare `JsonGet` in `ConditionStep` per recuperare l’output JSON direttamente da Amazon S3. L’URI di Amazon S3 può essere una funzione `Std:Join` che contiene stringhe primitive, variabili di esecuzione della pipeline o parametri della pipeline. L’esempio seguente mostra come utilizzare `JsonGet` in `ConditionStep`.

```
# Example json file in s3 bucket generated by a processing_step
{
   "Output": [5, 10]
}

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name="<step-name>",
        s3_uri="<s3-path-to-json>",
        json_path="Output[1]"
    ),
    right=6.0
)
```

Se utilizzi `JsonGet` con un percorso Amazon S3 nella fase di condizione, devi aggiungere esplicitamente una dipendenza tra la fase di condizione e la fase che genera l’output JSON. Nell’esempio seguente, la fase di condizione viene creata con una dipendenza dalla fase di elaborazione:

```
cond_step = ConditionStep(
        name="<step-name>",
        conditions=[cond_lte],
        if_steps=[fail_step],
        else_steps=[register_model_step],
        depends_on=[processing_step],
)
```

## Passaggio dei dati tra le fasi con file delle proprietà
<a name="build-and-manage-propertyfile-property"></a>

Utilizza i file di proprietà per archiviare informazioni dall'output di una fase di elaborazione. Ciò è particolarmente utile quando si analizzano i risultati di una fase di elaborazione per decidere come eseguire una fase condizionale. La `JsonGet` funzione elabora un file di proprietà e consente di utilizzare la JsonPath notazione per interrogare il file JSON della proprietà. [Per ulteriori informazioni sulla JsonPath notazione, consulta il repository. JsonPath ](https://github.com/json-path/JsonPath)

Per archiviare un file di proprietà per un uso successivo, devi prima creare un'istanza `PropertyFile` con il seguente formato. Il parametro `path` è il nome del file JSON in cui viene salvato il file di proprietà. Qualsiasi `output_name` deve corrispondere al `output_name` del `ProcessingOutput` definito nella fase di elaborazione. Ciò consente al file di proprietà di acquisire `ProcessingOutput` durante la fase.

```
from sagemaker.workflow.properties import PropertyFile

<property_file_instance> = PropertyFile(
    name="<property_file_name>",
    output_name="<processingoutput_output_name>",
    path="<path_to_json_file>"
)
```

Quando crei l'`ProcessingStep`istanza, aggiungi il `property_files` parametro per elencare tutti i file di parametri che il servizio Amazon SageMaker Pipelines deve indicizzare. In questo modo il file di proprietà viene salvato per un uso successivo.

```
property_files=[<property_file_instance>]
```

Per utilizzare il file di proprietà in una fase condizionale, aggiungi `property_file` alla condizione che passi alla fase condizionale, come illustrato nell'esempio seguente, per eseguire query sul file JSON per la proprietà desiderata utilizzando il parametro `json_path`.

```
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=<property_file_instance>,
        json_path="mse"
    ),
    right=6.0
)
```

Per esempi più approfonditi, consulta *[Property File](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#property-file)* nell'SDK [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

# Caching delle fasi della pipeline
<a name="pipelines-caching"></a>

In Amazon SageMaker Pipelines, puoi utilizzare la memorizzazione nella cache degli step per risparmiare tempo e risorse durante la riesecuzione delle pipeline. Il caching delle fasi riutilizza l’output dell’esecuzione di una fase precedente riuscita (invece di ricalcolarlo) quando la fase ha la stessa configurazione e gli stessi input. Questo consente di ottenere risultati coerenti tra le riesecuzioni di pipeline con parametri identici. L’argomento seguente mostra come configurare e attivare il caching delle fasi per le pipeline.

Quando utilizzi il caching delle firme delle fasi, Pipelines cerca di trovare un’esecuzione precedente della fase corrente della pipeline con gli stessi valori per determinati attributi. Se la trova, Pipelines propaga gli output dell’esecuzione precedente anziché ricalcolare la fase. Gli attributi controllati sono specifici del tipo di fase e sono elencati in [Attributi chiave della cache predefiniti per tipo di fase della pipeline](pipelines-default-keys.md).

È necessario attivare la memorizzazione nella cache delle fasi: per impostazione predefinita è disattivata. Quando attivi la memorizzazione nella cache delle fasi, devi anche definire un timeout. Questo timeout definisce quanto tempo può essere passato dall'esecuzione precedente perché questa rimanga utilizzabile.

La memorizzazione nella cache delle fasi considera solo le esecuzioni riuscite e non riutilizza mai le esecuzioni non riuscite. Se esistono più esecuzioni riuscite prima del timeout, Pipelines utilizza il risultato dell’esecuzione riuscita più recente. Se non viene trovata alcuna esecuzione riuscita prima del timeout, Pipelines esegue nuovamente la fase. Se l'executor trova un'esecuzione precedente che soddisfa i criteri ma è ancora in corso, entrambe le fasi continuano a essere eseguite e aggiorna la cache se hanno esito positivo.

La memorizzazione nella cache delle fasi è riservata solo alle singole pipeline, quindi non è possibile riutilizzare una fase di un'altra pipeline anche se la firma delle fasi corrisponde.

La memorizzazione nella cache delle fasi è disponibile per i seguenti tipi di fase: 
+ [Processing](build-and-manage-steps-types.md#step-type-processing)
+ [Addestramento](build-and-manage-steps-types.md#step-type-training)
+ [Ottimizzazione](build-and-manage-steps-types.md#step-type-tuning)
+ [AutoML](build-and-manage-steps-types.md#step-type-automl)
+ [Trasformazione](build-and-manage-steps-types.md#step-type-transform)
+ [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check)
+ [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)
+ [EMR](build-and-manage-steps-types.md#step-type-emr)

**Topics**
+ [Attivazione della memorizzazione nella cache delle fasi](pipelines-caching-enabling.md)
+ [Disattivazione della memorizzazione nella cache delle fasi](pipelines-caching-disabling.md)
+ [Attributi chiave della cache predefiniti per tipo di fase della pipeline](pipelines-default-keys.md)
+ [Controllo dell'accesso ai dati nella cache](pipelines-access-control.md)

# Attivazione della memorizzazione nella cache delle fasi
<a name="pipelines-caching-enabling"></a>

Per attivare il caching delle fasi, devi aggiungere una proprietà `CacheConfig` alla definizione della fase. Le proprietà `CacheConfig` utilizzano il seguente formato nel file di definizione della pipeline:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

Il campo `Enabled` indica se la memorizzazione nella cache è attivata per la fase specifica. Puoi impostare il campo su`true`, che indica all' SageMaker IA di cercare di trovare un'esecuzione precedente del passaggio con gli stessi attributi. In alternativa, puoi impostare il campo su`false`, che indica all' SageMaker IA di eseguire il passaggio ogni volta che viene eseguita la pipeline. `ExpireAfter`è una stringa in formato di [durata ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) che definisce il periodo di timeout. La durata `ExpireAfter` può essere un valore espresso in anni, mesi, settimane, giorni, ore o minuti. Ogni valore è costituito da un numero seguito da una lettera che indica l'unità di durata. Esempio:
+ "30d" = 30 giorni
+ "5y" = 5 anni
+ "T16m" = 16 minuti
+ "30DT5h" = 30 giorni e 5 ore.

La discussione seguente descrive la procedura per attivare la memorizzazione nella cache per pipeline nuove o preesistenti utilizzando l'SDK Amazon Python SageMaker .

**Attivazione della memorizzazione nella cache per nuove pipeline**

Per le nuove pipeline, inizializza un'istanza `CacheConfig` con `enable_caching=True` e forniscila come input per la fase della pipeline. L'esempio seguente attiva la memorizzazione nella cache con un periodo di timeout di 1 ora per una fase di addestramento: 

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
      
cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)
```

**Attivazione della memorizzazione nella cache per pipeline preesistenti**

Per attivare la memorizzazione nella cache per pipeline preesistenti e già definite, attiva la proprietà `enable_caching` per la fase e imposta un valore di timeout per `expire_after`. Infine, aggiorna la pipeline con `pipeline.upsert()` o `pipeline.update()`. Una volta eseguito di nuovo, il seguente esempio di codice attiva la memorizzazione nella cache con un periodo di timeout di 1 ora per una fase di addestramento:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

In alternativa, aggiorna la configurazione della cache dopo aver già definito la pipeline (preesistente), consentendo l'esecuzione continua del codice. Il seguente esempio di codice illustra questo metodo:

```
# turn on caching with timeout period of one hour
pipeline.steps[0].cache_config.enable_caching = True 
pipeline.steps[0].cache_config.expire_after = "PT1H" 

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Per esempi di codice più dettagliati e una discussione su come i parametri di Python SDK influiscono sulla memorizzazione nella cache, consulta Caching [Configuration nella documentazione](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) di Amazon Python SDK. SageMaker 

# Disattivazione della memorizzazione nella cache delle fasi
<a name="pipelines-caching-disabling"></a>

Una fase della pipeline non viene rieseguita se si modificano gli attributi che non sono elencati in [Attributi chiave della cache predefiniti per tipo di fase della pipeline](pipelines-default-keys.md) per il tipo di fase corrispondente. Tuttavia, puoi decidere di voler rieseguire comunque la fase della pipeline. In questo caso, è necessario disattivare la memorizzazione nella cache delle fasi.

Per disattivare la memorizzazione nella cache delle fasi, imposta l'attributo `Enabled` nella proprietà `CacheConfig` della definizione della fase su `false`, come mostrato nel seguente frammento di codice:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

Nota che l'attributo `ExpireAfter` viene ignorato quando `Enabled` è `false`.

Per disattivare la memorizzazione nella cache per un passaggio della pipeline utilizzando l'SDK Amazon SageMaker Python, definisci la pipeline del passaggio della pipeline, disattiva la proprietà e aggiorna la `enable_caching` pipeline.

Una volta eseguito di nuovo, il seguente esempio di codice disattiva la memorizzazione nella cache per una fase di addestramento:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=False, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

In alternativa, disattiva la proprietà `enable_caching` dopo aver già definito la pipeline, consentendo l'esecuzione di un codice continuo. Il seguente esempio di codice illustra questa soluzione:

```
# turn off caching for the training step
pipeline.steps[0].cache_config.enable_caching = False

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Per esempi di codice più dettagliati e una discussione su come i parametri di Python SDK influiscono sulla memorizzazione nella cache, consulta Caching [Configuration nella documentazione](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) di Amazon Python SDK. SageMaker 

# Attributi chiave della cache predefiniti per tipo di fase della pipeline
<a name="pipelines-default-keys"></a>

Quando decide se riutilizzare una fase della pipeline precedente o rieseguire la fase, Pipelines verifica se alcuni attributi sono stati modificati. Se il set di attributi è diverso da tutte le esecuzioni precedenti nel periodo di timeout, la fase viene eseguita nuovamente. Questi attributi includono artefatti di input, specifiche di app o algoritmi e variabili di ambiente. L'elenco seguente mostra ogni tipo di fase della pipeline e gli attributi che, se modificati, avviano una nuova esecuzione della fase. Per ulteriori informazioni su quali parametri Python SDK vengono utilizzati per creare i seguenti attributi, consulta [Caching Configuration nella](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) documentazione di Amazon SageMaker Python SDK.

## [Fase di elaborazione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)
<a name="collapsible-caching-section-1"></a>
+ AppSpecification
+ Ambiente
+ ProcessingInputs. Questo attributo contiene informazioni sullo script di preelaborazione.

  

## [Fase di addestramento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
<a name="collapsible-caching-section-2"></a>
+ AlgorithmSpecification
+ CheckpointConfig
+ DebugHookConfig
+ DebugRuleConfigurations
+ Ambiente
+ HyperParameters
+ InputDataConfig. Questo attributo contiene informazioni sullo script di addestramento.

  

## [Fase di ottimizzazione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)
<a name="collapsible-caching-section-3"></a>
+ HyperParameterTuningJobConfig
+ TrainingJobDefinition. Questo attributo è composto da più attributi secondari, non tutti i quali causano la riesecuzione del passaggio. Gli attributi figlio che potrebbero comportare una riesecuzione (se modificati) sono:
  + AlgorithmSpecification
  + HyperParameterRanges
  + InputDataConfig
  + StaticHyperParameters
  + TuningObjective
+ TrainingJobDefinitions

  

## [Fase AutoML](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobConfig.html)
<a name="collapsible-caching-section-4"></a>
+ MLJobConfig automatico. Questo attributo è composto da più attributi figlio, non tutti i quali determinano la riesecuzione della fase. Gli attributi figlio che potrebbero comportare una riesecuzione (se modificati) sono:
  + CompletionCriteria
  + CandidateGenerationConfig
  + DataSplitConfig
  + Modalità
+ Obiettivo automatico MLJob
+ InputDataConfig
+ ProblemType

  

## [Fase di trasformazione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)
<a name="collapsible-caching-section-5"></a>
+ DataProcessing
+ Ambiente
+ ModelName
+ TransformInput

  

## [ClarifyCheck passo](build-and-manage-steps-types.md#step-type-clarify-check)
<a name="collapsible-caching-section-6"></a>
+ ClarifyCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints

  

## [QualityCheck passaggio](build-and-manage-steps-types.md#step-type-quality-check)
<a name="collapsible-caching-section-7"></a>
+ QualityCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints
+ SuppliedBaselineStatistics

  

## [Fase EMR](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-emr)
<a name="collapsible-caching-section-8"></a>
+ ClusterId
+ StepConfig

  

# Controllo dell'accesso ai dati nella cache
<a name="pipelines-access-control"></a>

Quando viene eseguita una pipeline di SageMaker intelligenza artificiale, memorizza nella cache i parametri e i metadati associati SageMaker ai lavori di intelligenza artificiale avviati dalla pipeline e li salva per riutilizzarli nelle esecuzioni successive. Questi metadati sono accessibili attraverso una varietà di origini oltre alle fasi della pipeline memorizzate nella cache e includono i seguenti tipi:
+ Richieste `Describe*Job`
+ CloudWatch Registri
+ CloudWatch Eventi
+ CloudWatch Metriche
+ SageMaker Ricerca AI

Tieni presente che l'accesso a ciascuna origine dati nell'elenco è controllato dal relativo set di autorizzazioni IAM. La rimozione dell'accesso di un ruolo particolare a un'origine dati non influisce sul livello di accesso alle altre. Ad esempio, un amministratore di account potrebbe rimuovere le autorizzazioni IAM per le richieste `Describe*Job` dal ruolo di un chiamante. Sebbene il chiamante non possa più effettuare richieste `Describe*Job`, può comunque recuperare i metadati da una pipeline eseguita con fasi memorizzate nella cache purché disponga dell'autorizzazione per eseguire la pipeline. Se un amministratore dell'account desidera rimuovere completamente l'accesso ai metadati da un particolare lavoro di SageMaker intelligenza artificiale, deve rimuovere le autorizzazioni per ciascuno dei servizi pertinenti che forniscono l'accesso ai dati. 

# Policy di ripetizione per la fasi della pipeline
<a name="pipelines-retry-policy"></a>

Le policy di ripetizione ti aiutano a riprovare automaticamente le fasi di Pipelines dopo che si è verificato un errore. Qualsiasi fase della pipeline può presentare eccezioni, che si verificano per vari motivi. In alcuni casi, un nuovo tentativo può risolvere questi problemi. Con una policy di ripetizione per le fasi della pipeline, è possibile scegliere se riprovare o meno una particolare fase della pipeline.

La policy di ripetizione supporta solo le seguenti fasi della pipeline:
+ [Fase di elaborazione](build-and-manage-steps-types.md#step-type-processing) 
+ [Fase di addestramento](build-and-manage-steps-types.md#step-type-training) 
+ [Fase di ottimizzazione](build-and-manage-steps-types.md#step-type-tuning) 
+ [Fase AutoML](build-and-manage-steps-types.md#step-type-automl) 
+ [Fase Creazione di un modello](build-and-manage-steps-types.md#step-type-create-model) 
+ [Fase Registrazione di un modello](build-and-manage-steps-types.md#step-type-register-model) 
+ [Fase di trasformazione](build-and-manage-steps-types.md#step-type-transform) 
+ [Fase Processo del notebook](build-and-manage-steps-types.md#step-type-notebook-job) 

**Nota**  
I processi eseguiti all'interno delle fasi di ottimizzazione e AutoML eseguono nuovi tentativi internamente e non riproveranno il tipo di eccezione `SageMaker.JOB_INTERNAL_ERROR`, anche se è configurata una policy di ripetizione. Puoi programmare la tua [strategia Retry utilizzando l'API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryStrategy.html). SageMaker 

## Tipi di eccezioni supportati per la policy di ripetizione
<a name="pipelines-retry-policy-supported-exceptions"></a>

La policy di ripetizione per le fasi della pipeline supporta i seguenti tipi di eccezione:
+ `Step.SERVICE_FAULT`: queste eccezioni si verificano quando si verifica un errore interno del server o un errore temporaneo durante la chiamata di servizi downstream. Pipelines riprova automaticamente dopo questo tipo di errore. Con una policy di ripetizione, è possibile ignorare l'operazione di nuovo tentativo predefinita per questo tipo di eccezione.
+ `Step.THROTTLING`: durante la chiamata ai servizi downstream possono verificarsi eccezioni di throttling. Pipelines riprova automaticamente dopo questo tipo di errore. Con una policy di ripetizione, è possibile ignorare l'operazione di nuovo tentativo predefinita per questo tipo di eccezione.
+ `SageMaker.JOB_INTERNAL_ERROR`: Queste eccezioni si verificano quando il job SageMaker AI ritorna. `InternalServerError` In questo caso, l'avvio di un nuovo processo può risolvere un problema temporaneo.
+ `SageMaker.CAPACITY_ERROR`: Il job di SageMaker intelligenza artificiale può incontrare Amazon EC2`InsufficientCapacityErrors`, il che porta al fallimento del processo di SageMaker intelligenza artificiale. Puoi riprovare avviando un nuovo processo di SageMaker intelligenza artificiale per evitare il problema. 
+ `SageMaker.RESOURCE_LIMIT`: È possibile superare la quota limite di risorse durante l'esecuzione di un job SageMaker AI. Puoi aspettare e riprovare a eseguire il job SageMaker AI dopo un breve periodo e vedere se le risorse vengono rilasciate.

## Lo schema JSON per la policy di ripetizione
<a name="pipelines-retry-policy-json-schema"></a>

La policy di ripetizione per Pipeline include lo schema JSON seguente:

```
"RetryPolicy": {
   "ExceptionType": [String]
   "IntervalSeconds": Integer
   "BackoffRate": Double
   "MaxAttempts": Integer
   "ExpireAfterMin": Integer
}
```
+ `ExceptionType`: questo campo richiede i seguenti tipi di eccezione in un formato di matrice di stringhe.
  + `Step.SERVICE_FAULT`
  + `Step.THROTTLING`
  + `SageMaker.JOB_INTERNAL_ERROR`
  + `SageMaker.CAPACITY_ERROR`
  + `SageMaker.RESOURCE_LIMIT`
+ `IntervalSeconds` (opzionale): il numero di secondi prima del primo nuovo tentativo (1 per impostazione predefinita). `IntervalSeconds` ha un valore massimo di 43200 secondi (12 ore).
+ `BackoffRate` (opzionale): il moltiplicatore di cui l'intervallo aumenta a ogni tentativo (2,0 per impostazione predefinita).
+ `MaxAttempts` (opzionale): un numero intero positivo che rappresenta il numero massimo di tentativi (5 per impostazione predefinita). Se l'errore si ripete più volte di quanto specificato in `MaxAttempts`, i tentativi cessano e viene ripristinata la gestione normale degli errori. Il valore 0 indica che dopo gli errori non si effettua mai un nuovo tentativo. `MaxAttempts` ha un valore massimo di 20.
+ `ExpireAfterMin` (opzionale): un numero intero positivo che rappresenta l'intervallo massimo per il nuovo tentativo. Se l'errore si ripresenta dopo `ExpireAfterMin` minuti dall'esecuzione della fase, i nuovi tentativi cessano e riprende la normale gestione degli errori. Il valore 0 indica che dopo gli errori non si effettua mai un nuovo tentativo. `ExpireAfterMin ` ha un valore massimo di 14.400 minuti (10 giorni).
**Nota**  
È possibile fornire solo uno tra `MaxAttempts` e `ExpireAfterMin`, ma non entrambi; se entrambi *non* sono specificati, `MaxAttempts` diventa l'impostazione predefinita. Se entrambe le proprietà sono identificate all'interno di una policy, la policy di ripetizione genera un errore di convalida.

# Configurazione di una policy di ripetizione
<a name="pipelines-configuring-retry-policy"></a>

Sebbene SageMaker Pipelines offra un modo affidabile e automatizzato per orchestrare i flussi di lavoro di machine learning, potresti riscontrare errori durante la loro esecuzione. Per gestire al meglio questi scenari e migliorare l’affidabilità delle pipeline, puoi configurare policy di ripetizione che definiscono come e quando ripetere automaticamente determinate fasi in seguito a un’eccezione. La policy di ripetizione consente di specificare i tipi di eccezioni per i tentativi, il numero massimo di tentativi, l’intervallo tra i tentativi e la frequenza di backoff per allungare gli intervalli tra i tentativi. La sezione seguente fornisce esempi di come configurare una politica di riprova per una fase di formazione nella pipeline, sia in JSON che utilizzando Python SageMaker SDK.

L'esempio seguente mostra una fase di addestramento con una policy di ripetizione.

```
{
    "Steps": [
        {
            "Name": "MyTrainingStep",
            "Type": "Training",
            "RetryPolicies": [
                {
                    "ExceptionType": [
                        "SageMaker.JOB_INTERNAL_ERROR",
                        "SageMaker.CAPACITY_ERROR"
                    ],
                    "IntervalSeconds": 1,
                    "BackoffRate": 2,
                    "MaxAttempts": 5
                }
            ]
        }
    ]
}
```



Di seguito è riportato un esempio di come creare una `TrainingStep` in SDK per Python (Boto3) con una policy di ripetizione.

```
from sagemaker.workflow.retry import (
    StepRetryPolicy, 
    StepExceptionTypeEnum,
    SageMakerJobExceptionTypeEnum,
    SageMakerJobStepRetryPolicy
)

step_train = TrainingStep(
    name="MyTrainingStep",
    xxx,
    retry_policies=[
        // override the default 
        StepRetryPolicy(
            exception_types=[
                StepExceptionTypeEnum.SERVICE_FAULT, 
                StepExceptionTypeEnum.THROTTLING
            ],
            expire_after_mins=5,
            interval_seconds=10,
            backoff_rate=2.0 
        ),
        // retry when resource limit quota gets exceeded
        SageMakerJobStepRetryPolicy(
            exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT],
            expire_after_mins=120,
            interval_seconds=60,
            backoff_rate=2.0
        ),
        // retry when job failed due to transient error or EC2 ICE.
        SageMakerJobStepRetryPolicy(
            failure_reason_types=[
                SageMakerJobExceptionTypeEnum.INTERNAL_ERROR,
                SageMakerJobExceptionTypeEnum.CAPACITY_ERROR,
            ],
            max_attempts=10,
            interval_seconds=30,
            backoff_rate=2.0
        )
    ]
)
```

Per ulteriori informazioni sulla configurazione del comportamento dei tentativi per determinati tipi di passaggi, consulta *[Amazon SageMaker Pipelines - Retry Policy nella](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#retry-policy)* documentazione di Amazon Python SageMaker SDK.

# Esecuzione selettiva di fasi della pipeline
<a name="pipelines-selective-ex"></a>

Poiché utilizzi Pipelines per creare flussi di lavoro e orchestrare le fasi di addestramento di ML, potresti aver bisogno di più fasi di sperimentazione. Invece di eseguire l’intera pipeline ogni volta, potrebbe essere utile ripetere solo alcune fasi. Con Pipelines, puoi eseguire le fasi della pipeline in modo selettivo. Questo aiuta a ottimizzare l’addestramento di ML. L'esecuzione selettiva è utile nei seguenti scenari: 
+ Desideri riavviare una fase specifica con il tipo di istanza, gli iperparametri o altre variabili aggiornati e mantenendo i parametri delle fasi precedenti.
+ La tua pipeline non riesce in una fase intermedia. Le fasi precedenti dell'esecuzione, come la preparazione dei dati o l'estrazione delle funzionalità, sono costose da rieseguire. Potrebbe essere necessario introdurre una correzione e rieseguire alcune fasi manualmente per completare la pipeline. 

Utilizzando l'esecuzione selettiva, è possibile scegliere di eseguire qualsiasi sottoinsieme di fasi purché siano collegate nel grafo aciclico orientato (DAG) della pipeline. Il seguente DAG mostra un esempio di flusso di lavoro della pipeline:

![\[Un grafo aciclico orientato (DAG) di una pipeline di esempio.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipeline-full.png)


Puoi selezionare le fasi `AbaloneTrain` e `AbaloneEval` in un’esecuzione selettiva, ma non puoi selezionare solo le fasi `AbaloneTrain` e `AbaloneMSECond` perché non sono collegate nel DAG. Per le fasi non selezionate del flusso di lavoro, l’esecuzione selettiva riutilizza gli output dell’esecuzione di una pipeline di riferimento anziché ricalcolare le fasi. Inoltre, le fasi non selezionate che sono a valle delle fasi selezionate non vengono eseguite in un'esecuzione selettiva. 

Se scegli di eseguire un sottoinsieme di passaggi intermedi nella tua pipeline, i passaggi potrebbero dipendere dai passaggi precedenti. SageMaker L'intelligenza artificiale necessita di un'esecuzione della pipeline di riferimento dalla quale attingere a queste dipendenze. Ad esempio, se scegli di eseguire le fasi `AbaloneTrain` e `AbaloneEval`, sono necessari gli output dalla fase `AbaloneProcess`. Puoi fornire un ARN di esecuzione di riferimento o indirizzare l' SageMaker IA a utilizzare l'ultima esecuzione della pipeline, che è il comportamento predefinito. Se disponi di un’esecuzione di riferimento, puoi anche creare i parametri di runtime a partire da tale esecuzione e fornirli all’esecuzione selettiva con eventuali sostituzioni. Per informazioni dettagliate, vedi [Riutilizzo dei valori dei parametri di runtime da un'esecuzione di riferimento](#pipelines-selective-ex-reuse).

Nello specifico, selezioni una configurazione per l’esecuzione selettiva della pipeline con `SelectiveExecutionConfig`. Se includi un ARN per l'esecuzione di una pipeline di riferimento (con l'`source_pipeline_execution_arn`argomento), SageMaker AI utilizza le dipendenze del passaggio precedente dall'esecuzione della pipeline che hai fornito. Se non includi un ARN ed esiste un'esecuzione della pipeline più recente, SageMaker AI la utilizza come riferimento per impostazione predefinita. Se non includi un ARN e non desideri che l' SageMaker IA utilizzi l'ultima esecuzione della pipeline, imposta su. `reference_latest_execution` `False` L'esecuzione della pipeline che l' SageMaker IA utilizza in ultima analisi come riferimento, sia essa più recente o specificata dall'utente, deve essere attiva o in stato. `Success` `Failed`

La tabella seguente riassume il modo in cui l' SageMaker IA sceglie un'esecuzione di riferimento.


| Il valore dell'argomento `source_pipeline_execution_arn` | Il valore dell'argomento `reference_latest_execution` | L'esecuzione di riferimento utilizzata | 
| --- | --- | --- | 
| Un ARN della pipeline | `True` o non specificato | L'ARN della pipeline specificata | 
| Un ARN della pipeline | `False` | L'ARN della pipeline specificata | 
| null o non specificato | `True` o non specificato | L'ultima esecuzione della pipeline | 
| null o non specificato | `False` | Nessuna: in questo caso, seleziona le fasi senza dipendenze a monte | 

[Per ulteriori informazioni sui requisiti di configurazione dell'esecuzione selettiva, consulta sagemaker.workflow.selective\$1execution\$1config. SelectiveExecutionConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#selective-execution-config)documentazione.

La discussione seguente include esempi per i casi in cui si desidera specificare un'esecuzione di riferimento della pipeline, utilizzare l'ultima esecuzione della pipeline come riferimento o eseguire un'esecuzione selettiva senza un'esecuzione della pipeline di riferimento.

## Esecuzione selettiva con un riferimento di pipeline specificato dall'utente
<a name="pipelines-selective-ex-arn"></a>

L’esempio seguente mostra un’esecuzione selettiva delle fasi `AbaloneTrain` e `AbaloneEval` con un’esecuzione della pipeline di riferimento.

```
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig

selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", 
    selected_steps=["AbaloneTrain", "AbaloneEval"]
)

selective_execution = pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Esecuzione selettiva con l'ultima esecuzione della pipeline come riferimento
<a name="pipelines-selective-ex-latest"></a>

L’esempio seguente mostra un’esecuzione selettiva delle fasi `AbaloneTrain` e `AbaloneEval` con l’esecuzione della pipeline più recente come riferimento. Poiché l' SageMaker IA utilizza l'ultima esecuzione della pipeline per impostazione predefinita, puoi facoltativamente impostare l'`reference_latest_execution`argomento su. `True`

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneTrain", "AbaloneEval"],
    # optional
    reference_latest_execution=True
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Esecuzione selettiva senza una pipeline di riferimento
<a name="pipelines-selective-ex-none"></a>

L'esempio seguente dimostra un'esecuzione selettiva dei passaggi `AbaloneTrain` senza fornire un ARN di riferimento `AbaloneProcess` e disattivare l'opzione per utilizzare l'ultima esecuzione della pipeline come riferimento. SageMaker L'intelligenza artificiale consente questa configurazione poiché questo sottoinsieme di passaggi non dipende dai passaggi precedenti.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneProcess", "AbaloneTrain"],
    reference_latest_execution=False
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Riutilizzo dei valori dei parametri di runtime da un'esecuzione di riferimento
<a name="pipelines-selective-ex-reuse"></a>

È possibile creare i parametri dall'esecuzione della pipeline di riferimento utilizzando `build_parameters_from_execution` e fornire il risultato alla pipeline di esecuzione selettiva. È possibile utilizzare i parametri originali dell'esecuzione di riferimento o applicare eventuali sostituzioni utilizzando l'argomento `parameter_value_overrides`.

L'esempio seguente mostra come creare parametri da un'esecuzione di riferimento e applicare una sostituzione per il parametro `MseThreshold`.

```
# Prepare a new selective execution.
selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    selected_steps=["AbaloneTrain", "AbaloneEval", "AbaloneMSECond"],
)
# Define a new parameters list to test.
new_parameters_mse={
    "MseThreshold": 5,
}

# Build parameters from reference execution and override with new parameters to test.
new_parameters = pipeline.build_parameters_from_execution(
    pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    parameter_value_overrides=new_parameters_mse
)

# Start pipeline execution with new parameters.
execution = pipeline.start(
    selective_execution_config=selective_execution_config,
    parameters=new_parameters
)
```

# Calcolo di base, rilevamento della deriva e ciclo di vita con e ClarifyCheck fasi QualityCheck in Amazon Pipelines SageMaker
<a name="pipelines-quality-clarify-baseline-lifecycle"></a>

L'argomento seguente illustra come le linee di base e le versioni del modello si evolvono in Amazon SageMaker Pipelines quando si utilizzano i passaggi e. [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check) [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)

Per la fase `ClarifyCheck`, una baseline è un singolo file che si trova nelle proprietà della fase con il suffisso `constraints`. Per la fase `QualityCheck`, una baseline è una combinazione di due file che si trovano nelle proprietà della fase: uno con il suffisso `statistics` e l'altro con il suffisso `constraints`. Negli argomenti seguenti vengono illustrate queste proprietà con un prefisso che descrive come vengono utilizzate, influendo sul comportamento delle baseline e sul ciclo di vita in queste due fasi della pipeline. Ad esempio, la fase `ClarifyCheck` calcola e assegna sempre le nuove baseline nella proprietà `CalculatedBaselineConstraints` e la fase `QualityCheck` fa lo stesso nelle proprietà `CalculatedBaselineConstraints` e `CalculatedBaselineStatistics`.

## Calcolo di base, registrazione e fasi ClarifyCheck QualityCheck
<a name="pipelines-quality-clarify-baseline-calculations"></a>

Entrambe le fasi `ClarifyCheck` e `QualityCheck` calcolano sempre le nuove baseline in base agli input delle fasi attraverso l'esecuzione del processo di elaborazione sottostante. È possibile accedere a queste baseline appena calcolate tramite le proprietà con il prefisso `CalculatedBaseline`. È possibile registrare queste proprietà come `ModelMetrics` del pacchetto del modello in [Fase del modello](build-and-manage-steps-types.md#step-type-model). Questo pacchetto del modello può essere registrato con 5 diverse baseline. È possibile registrarlo con uno per ogni tipo di controllo: bias nei dati, bias nel modello e spiegabilità del modello dall'esecuzione della fase `ClarifyCheck` e qualità del modello e qualità dei dati dall'esecuzione della fase `QualityCheck`. Il parametro `register_new_baseline` determina il valore impostato nelle proprietà con il prefisso `BaselineUsedForDriftCheck` dopo l'esecuzione di una fase.

La seguente tabella dei potenziali casi d'uso mostra i diversi comportamenti derivanti dai parametri delle fasi che è possibile impostare per le fasi `ClarifyCheck` e `QualityCheck`:


| Possibile caso d'uso da prendere in considerazione per la selezione di questa configurazione  | `skip_check` / `register_new_baseline` | La fase esegue un controllo della deviazione? | Valore della proprietà di fase `CalculatedBaseline` | Valore della proprietà di fase `BaselineUsedForDriftCheck` | 
| --- | --- | --- | --- | --- | 
| Stai effettuando una riqualificazione regolare con i controlli abilitati per ottenere una nuova versione del modello, ma *desideri mantenere le baseline precedenti* come `DriftCheckBaselines` nel registro dei modelli per la nuova versione del modello. | False/ False | Il controllo della deviazione viene eseguito in base alle baseline esistenti | Nuove baseline calcolate eseguendo la fase | Baseline basata sull'ultimo modello approvato nel registro dei modelli o sulla baseline fornita come parametro di fase | 
| Stai effettuando una riqualificazione regolare con i controlli abilitati per ottenere una nuova versione del modello, ma *desideri aggiornare `DriftCheckBaselines` con le baseline appena calcolate nel registro dei modelli* per la nuova versione del modello. | False/ True | Il controllo della deviazione viene eseguito in base alle baseline esistenti | Nuove baseline calcolate eseguendo la fase | Baseline appena calcolata eseguendo la fase (valore della proprietà CalculatedBaseline) | 
| Stai avviando la pipeline per riqualificare una nuova versione del modello perché Amazon SageMaker Model Monitor ha rilevato una violazione su un endpoint per un particolare tipo di controllo e desideri *saltare questo tipo di controllo rispetto alla baseline precedente, ma riprendere la baseline precedente come `DriftCheckBaselines` nel registro dei modelli per la tua nuova versione del modello*. | True/ False | Nessun controllo di deviazione | Nuove baseline calcolate eseguendo | Baseline basata sull'ultimo modello approvato nel registro dei modelli o sulla baseline fornita come parametro di fase | 
| Questo succede nei seguenti casi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html)  | True/ True | Nessun controllo di deviazione | Nuove baseline calcolate eseguendo la fase | Baseline appena calcolata eseguendo la fase (valore della proprietà CalculatedBaseline) | 

**Nota**  
Se utilizzi la notazione scientifica nel vincolo, devi convertirlo in valore con virgola mobile. Per un esempio di script di preelaborazione su come eseguire questa operazione, consulta [Creazione di una baseline di qualità del modello](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-baseline.html).

Quando si registra un modello con [Fase del modello](build-and-manage-steps-types.md#step-type-model), è possibile registrare la proprietà `BaselineUsedForDriftCheck` come `DriftCheckBaselines`. Questi file di baseline possono quindi essere utilizzati da Model Monitor per i controlli di qualità dei modelli e dei dati. Inoltre, queste linee di base possono essere utilizzate anche nella `QualityCheck` fase ClarifyCheckStep e per confrontare i modelli appena addestrati con i modelli esistenti registrati nel registro dei modelli per future esecuzioni della pipeline.

## Rilevamento della deriva rispetto alle baseline precedenti in Pipelines
<a name="pipelines-quality-clarify-baseline-drift-detection"></a>

Nel caso della fase `QualityCheck`, quando si avvia la pipeline per la riqualificazione regolare per ottenere una nuova versione del modello, è preferibile non eseguire la fase di addestramento se la qualità dei dati e il bias nei dati presentano [Schema per violazioni (file constraint\$1violations.json)](model-monitor-interpreting-violations.md) nelle baseline della precedente versione del modello approvata. Inoltre, potresti non voler registrare la versione del modello appena addestrata se la qualità del modello, il bias del modello o la spiegabilità del modello violano la baseline registrata della precedente versione del modello approvata durante l'esecuzione della fase `ClarifyCheck`. In questi casi, è possibile abilitare i controlli desiderati impostando la proprietà `skip_check` della fase di controllo corrispondente su `False`. Se viene rilevata una violazione rispetto alle baseline precedenti, le fasi `ClarifyCheck` e `QualityCheck` non riescono. Il processo di pipeline quindi non procede in modo che il modello che devia dalla baseline non venga registrato. Le fasi `ClarifyCheck` e `QualityCheck` sono in grado di ottenere le `DriftCheckBaselines` dell'ultima versione approvata del modello di un determinato gruppo di pacchetti di modelli per fare un confronto. Le baseline precedenti possono anche essere fornite direttamente tramite `supplied_baseline_constraints` (in aggiunta a `supplied_baseline_statistics` se si tratta di una fase `QualityCheck`) e hanno sempre la priorità rispetto a qualsiasi baseline estratta dal gruppo di pacchetti di modelli. 

## Ciclo di vita ed evoluzione della baseline e delle versioni del modello con Pipelines
<a name="pipelines-quality-clarify-baseline-evolution"></a>

Impostando `register_new_baseline` delle fasi `ClarifyCheck` e `QualityCheck` su `False`, la baseline precedente è accessibile tramite il prefisso della proprietà di fase `BaselineUsedForDriftCheck`. È quindi possibile registrare queste baseline come `DriftCheckBaselines` nella nuova versione del modello quando si registra un modello con [Fase del modello](build-and-manage-steps-types.md#step-type-model). Una volta approvata questa nuova versione del modello nel registro dei modelli, la `DriftCheckBaseline` in questa versione del modello diventa disponibile per le fasi `ClarifyCheck` e `QualityCheck` del prossimo processo di pipeline. Se si desidera aggiornare la baseline di un determinato tipo di controllo per le versioni future del modello, è possibile impostare `register_new_baseline` su `True` in modo che le proprietà con prefisso `BaselineUsedForDriftCheck` diventino la nuova baseline calcolata. In questo modo, è possibile conservare le baseline preferite per un modello addestrato in futuro o aggiornare le baseline per i controlli di deviazione quando necessario, gestendo l'evoluzione e il ciclo di vita della baseline durante le iterazioni di addestramento del modello. 

Il diagramma seguente illustra una model-version-centric panoramica dell'evoluzione e del ciclo di vita di base.

![\[Una model-version-centric panoramica dell'evoluzione e del ciclo di vita di base.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipelines/Baseline-Lifecycle.png)


# Pianificazione delle esecuzioni della pipeline
<a name="pipeline-eventbridge"></a>

[Puoi pianificare le tue esecuzioni di Amazon SageMaker Pipelines utilizzando Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) Amazon SageMaker Pipelines è supportato come destinazione in [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html). Ciò consente di avviare l'esecuzione della pipeline per la costruzione di modelli in base a qualsiasi evento nel bus di eventi. Con EventBridge, puoi automatizzare le esecuzioni della pipeline e rispondere automaticamente a eventi come le modifiche allo stato dei lavori di formazione o degli endpoint. Gli eventi includono il caricamento di un nuovo file nel tuo bucket Amazon S3, una modifica dello stato dell'endpoint Amazon SageMaker AI dovuta a una deriva e argomenti di *Amazon Simple Notification Service (SNS*).

Le azioni di Pipelines seguenti possono essere avviate automaticamente:  
+  `StartPipelineExecution` 

Per ulteriori informazioni sulla pianificazione dei lavori di SageMaker intelligenza artificiale, consulta [Automating SageMaker AI with Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/automating-sagemaker-with-eventbridge.html). EventBridge 

**Topics**
+ [Pianifica una pipeline con Amazon EventBridge](#pipeline-eventbridge-schedule)
+ [Pianifica una pipeline con SageMaker Python SDK](#build-and-manage-scheduling)

## Pianifica una pipeline con Amazon EventBridge
<a name="pipeline-eventbridge-schedule"></a>

Per avviare l'esecuzione di una pipeline con Amazon CloudWatch Events, devi creare una EventBridge [regola](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Rule.html). Quando crei una regola per gli eventi, specifichi un'azione mirata da intraprendere quando EventBridge riceve un evento che corrisponde alla regola. Quando un evento corrisponde alla regola, EventBridge invia l'evento alla destinazione specificata e avvia l'azione definita nella regola. 

 I seguenti tutorial mostrano come pianificare l'esecuzione di una pipeline EventBridge utilizzando la console o il EventBridge. AWS CLI  

### Prerequisiti
<a name="pipeline-eventbridge-schedule-prerequisites"></a>
+ Un ruolo che EventBridge può assumere con il permesso. `SageMaker::StartPipelineExecution` Questo ruolo può essere creato automaticamente se crei una regola dalla EventBridge console; in caso contrario, devi crearlo tu stesso. Per informazioni sulla creazione di un ruolo SageMaker AI, vedi [SageMaker Ruoli](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).
+ Una Amazon SageMaker AI Pipeline da pianificare. Per creare una Amazon SageMaker AI Pipeline, consulta [Define a Pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html).

### Crea una EventBridge regola utilizzando la console EventBridge
<a name="pipeline-eventbridge-schedule-console"></a>

 La procedura seguente mostra come creare una EventBridge regola utilizzando la EventBridge console.  

1. Passare alla [console EventBridge ](https://console.aws.amazon.com/events). 

1. Seleziona **Regole** sul lato sinistro. 

1.  Seleziona `Create Rule`. 

1. Immettere un nome e una descrizione per la regola.

1.  Seleziona come desideri avviare questa regola. Sono disponibili le seguenti opzioni per la regola: 
   + **Modello di evento**: la regola viene avviata quando si verifica un evento corrispondente al modello. È possibile scegliere un modello predefinito che corrisponda a un determinato tipo di evento oppure creare un modello personalizzato. Se selezioni un modello predefinito, puoi modificarlo per personalizzarlo. Per ulteriori informazioni sui modelli di eventi, consulta [Modelli di CloudWatch eventi negli eventi](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html). 
   + **Pianificazione**: la regola viene avviata regolarmente in base a una pianificazione specificata. È possibile utilizzare una pianificazione a frequenza fissa che viene avviata regolarmente per un determinato numero di minuti, ore o settimane. Puoi anche usare un'[espressione cron](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) per creare una pianificazione più dettagliata, ad esempio "il primo lunedì di ogni mese alle 8:00". La pianificazione non è supportata su un bus di eventi partner o personalizzato. 

1. Seleziona il bus di eventi desiderato. 

1. Seleziona uno o più destinazioni da richiamare quando un evento corrisponde al tuo modello di evento o quando viene avviata la pianificazione. È possibile aggiungere fino a 5 destinazioni per regola. Seleziona `SageMaker Pipeline` nell'elenco a discesa delle destinazioni. 

1. Seleziona la pipeline che desideri avviare dall'elenco a discesa delle pipeline. 

1. Aggiungi parametri da passare all'esecuzione della pipeline utilizzando una coppia nome e valore. I valori dei parametri possono essere statici o dinamici. Per ulteriori informazioni sui parametri di Amazon SageMaker AI Pipeline, consulta [AWS::Events::Rule SagemakerPipelineParameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html#aws-resource-sagemaker-pipeline-properties).
   + I valori statici vengono passati all'esecuzione della pipeline ogni volta che viene avviata la pipeline. Ad esempio, se `{"Name": "Instance_type", "Value": "ml.4xlarge"}` è specificato nell'elenco dei parametri, viene passato come parametro `StartPipelineExecutionRequest` ogni volta che EventBridge avvia la pipeline. 
   + I valori dinamici vengono specificati utilizzando un percorso JSON. EventBridge analizza il valore dal payload di un evento, quindi lo passa all'esecuzione della pipeline. Ad esempio: *`$.detail.param.value`* 

1. Seleziona il ruolo da utilizzare per questa regola. Puoi utilizzare un ruolo esistente o crearne uno nuovo. 

1. (Opzionale) Aggiungi dei tag. 

1. Seleziona `Create` per finalizzare la tua regola. 

 La tua regola è ora in vigore e pronta per avviare le esecuzioni della pipeline. 

### Crea una regola utilizzando il EventBridge [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/events/index.html)
<a name="pipeline-eventbridge-schedule-cli"></a>

 La procedura seguente mostra come creare una EventBridge regola utilizzando AWS CLI. 

1. Crea una regola da avviare. Quando si crea una EventBridge regola utilizzando il AWS CLI, sono disponibili due opzioni per la modalità di avvio della regola, lo schema degli eventi e la pianificazione.
   +  **Modello di evento**: la regola viene avviata quando si verifica un evento corrispondente al modello. È possibile scegliere un modello predefinito che corrisponda a un determinato tipo di evento oppure creare un modello personalizzato. Se selezioni un modello predefinito, puoi modificarlo per personalizzarlo.  È possibile creare una regola con modello di evento utilizzando il seguente comando: 

     ```
     aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```
   +  **Pianificazione**: la regola viene avviata regolarmente in base a una pianificazione specificata. È possibile utilizzare una pianificazione a frequenza fissa che viene avviata regolarmente per un determinato numero di minuti, ore o settimane. Puoi anche usare un'espressione cron per creare una pianificazione più dettagliata, ad esempio "il primo lunedì di ogni mese alle 8:00". La pianificazione non è supportata su un bus di eventi partner o personalizzato. È possibile creare una regola con pianificazione utilizzando il seguente comando: 

     ```
     aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```

1. Aggiungi una o più destinazioni da richiamare quando un evento corrisponde al tuo modello di evento o quando viene avviata la pianificazione. È possibile aggiungere fino a 5 destinazioni per regola.  Per ciascuna destinazione, occorre specificare:  
   +  ARN: l'ARN della risorsa della tua pipeline. 
   +  Ruolo ARN: l'ARN del ruolo EventBridge deve assumere per eseguire la pipeline. 
   +  Parametri: parametri della pipeline Amazon SageMaker AI da passare. 

1. Esegui il comando seguente per passare una pipeline Amazon SageMaker AI come destinazione alla tua regola utilizzando [put-targets](https://docs.aws.amazon.com/cli/latest/reference/events/put-targets.html): 

   ```
   aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 
   ```

## Pianifica una pipeline con SageMaker Python SDK
<a name="build-and-manage-scheduling"></a>

Le sezioni seguenti mostrano come impostare le autorizzazioni per accedere alle EventBridge risorse e creare la pianificazione della pipeline utilizzando Python SageMaker SDK. 

### Autorizzazioni richieste
<a name="build-and-manage-scheduling-permissions"></a>

Per eseguire lo scheduler per le pipeline, devi disporre delle autorizzazioni necessarie. Completa la procedura seguente per configurare le autorizzazioni:

1. Allega la seguente politica di privilegi minimi al ruolo IAM utilizzato per creare i trigger della pipeline o utilizza la policy gestita. AWS `AmazonEventBridgeSchedulerFullAccess`

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Action":
               [
                   "scheduler:ListSchedules",
                   "scheduler:GetSchedule",
                   "scheduler:CreateSchedule",
                   "scheduler:UpdateSchedule",
                   "scheduler:DeleteSchedule"
               ],
               "Effect": "Allow",
               "Resource":
               [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*", 
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "scheduler.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Stabilisci una relazione di fiducia con EventBridge aggiungendo il service principal `scheduler.amazonaws.com` alla policy di fiducia di questo ruolo. Assicurati di allegare la seguente politica di fiducia al ruolo di esecuzione se avvii il notebook in SageMaker Studio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "scheduler.amazonaws.com",
                    "sagemaker.amazonaws.com"
                ]
            },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

### Creazione di una pianificazione della pipeline
<a name="build-and-manage-scheduling-create"></a>

Utilizzando il costruttore `PipelineSchedule`, puoi pianificare l’esecuzione di una pipeline una tantum o a intervalli predeterminati. Una pianificazione della pipeline deve essere di tipo `at`, `rate` o `cron`. Questo set di tipi di pianificazione è un'estensione delle opzioni di [EventBridge pianificazione.](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html) [Per ulteriori informazioni su come utilizzare la `PipelineSchedule` classe, vedete sagemaker.workflow.triggers. PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#pipeline-schedule). L’esempio seguente mostra come creare ciascun tipo di pianificazione con `PipelineSchedule`.

```
from sagemaker.workflow.triggers import PipelineSchedule

# schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC
my_datetime_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(2023, 12, 13, 10, 15, 20)
)

# schedules a pipeline run every 5 minutes
my_rate_schedule = PipelineSchedule(
    name="<schedule-name>", 
    rate=(5, "minutes")
)

# schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023
my_cron_schedule = PipelineSchedule(
    name="<schedule-name>", 
    cron="15 10 ? * 6L 2022-2023"
)
```

**Nota**  
Se crei una pianificazione una tantum e devi accedere alla funzionalità per l’ora corrente, utilizza `datetime.utcnow()` invece di `datetime.now()`. Quest'ultimo non memorizza il contesto della zona corrente e determina un intervallo di tempo errato passato a EventBridge.

### Collegamento del trigger alla pipeline
<a name="build-and-manage-scheduling-attach"></a>

Per collegare `PipelineSchedule` alla pipeline, invoca la chiamata `put_triggers` all’oggetto della pipeline creato con un elenco di trigger. Se ricevi un ARN di risposta, hai creato correttamente la pianificazione nel tuo account e hai EventBridge iniziato a richiamare la pipeline di destinazione all'ora o alla frequenza specificate. Devi specificare un ruolo con le autorizzazioni corrette per collegare i trigger a una pipeline principale. Se non lo fornisci, Pipelines recupera il ruolo predefinito utilizzato per creare la pipeline dal [file di configurazione](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html).

L’esempio seguente illustra come collegare una pianificazione a una pipeline.

```
scheduled_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[...],
    sagemaker_session=<sagemaker-session>,
)
custom_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30)
)
scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)
```

### Descrizione dei trigger correnti
<a name="build-and-manage-scheduling-describe"></a>

Per recuperare informazioni sui trigger della pipeline creati, puoi invocare l’API `describe_trigger()` con il nome del trigger. Questo comando restituisce i dettagli sull’espressione di pianificazione creata, ad esempio l’ora di inizio, lo stato di abilitazione e altre informazioni utili. Il frammento seguente mostra un’invocazione di esempio:

```
scheduled_pipeline.describe_trigger(name="<schedule-name>")
```

### Pulizia delle risorse del trigger
<a name="build-and-manage-scheduling-clean"></a>

Prima di eliminare la pipeline, pulisci i trigger esistenti per evitare di perdere risorse del tuo account. Devi eliminare i trigger prima di distruggere la pipeline principale. Puoi eliminare i trigger passando un elenco di nomi di trigger all’API `delete_triggers`. Il frammento seguente mostra come eliminare i trigger.

```
pipeline.delete_triggers(trigger_names=["<schedule-name>"])
```

**Nota**  
Quando elimini i trigger, tieni presente le limitazioni seguenti:  
L'opzione per eliminare i trigger specificando i nomi dei trigger è disponibile solo in Python SageMaker SDK. L’eliminazione della pipeline nella CLI o con una chiamata API `DeletePipeline` non elimina i trigger. Di conseguenza, i trigger diventano orfani e l' SageMaker IA tenta di avviare un'esecuzione per una pipeline inesistente.
Inoltre, se stai utilizzando un'altra sessione del notebook o hai già eliminato la destinazione della pipeline, pulisci le pianificazioni orfane tramite la [CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/delete-schedule.html) o la console dello scheduler. EventBridge 

# Integrazione con Amazon SageMaker Experiments
<a name="pipelines-experiments"></a>

Amazon SageMaker Pipelines è strettamente integrato con Amazon SageMaker Experiments. Per impostazione predefinita, quando Pipelines crea ed esegue una pipeline, vengono create le seguenti entità SageMaker Experiments se non esistono:
+ Un esperimento per la pipeline
+ Un gruppo di esecuzioni per ogni esecuzione della pipeline
+ Una corsa che viene aggiunta al gruppo di esecuzione per ogni processo di SageMaker intelligenza artificiale creato in una fase di esecuzione della pipeline

Puoi confrontare metriche come la precisione dell'addestramento dei modelli tra più esecuzioni di pipeline così come puoi confrontare tali metriche tra più gruppi di esecuzioni di un SageMaker esperimento di addestramento basato su modelli di intelligenza artificiale.

L'esempio seguente mostra i parametri pertinenti della classe [Pipeline](https://github.com/aws/sagemaker-python-sdk/blob/v2.41.0/src/sagemaker/workflow/pipeline.py) nell'SDK [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

```
Pipeline(
    name="MyPipeline",
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[...]
)
```

Se non desideri creare un esperimento ed eseguire un gruppo per la pipeline, imposta `pipeline_experiment_config` su `None`.

**Nota**  
L'integrazione degli esperimenti è stata introdotta nell'Amazon SageMaker Python SDK v2.41.0.

Le seguenti regole di denominazione si applicano in base a ciò che specifichi per i parametri `ExperimentName` e `TrialName` di `pipeline_experiment_config`:
+ Se non specifichi `ExperimentName`, la pipeline `name` viene utilizzata per il nome dell'esperimento.

  Se specifichi `ExperimentName`, viene utilizzato per il nome dell'esperimento. Se esiste un esperimento con quel nome, i gruppi di esecuzioni creati dalla pipeline vengono aggiunti all'esperimento esistente. Se non esiste un esperimento con quel nome, viene creato un nuovo esperimento.
+ Se non specifichi `TrialName`, l'ID di esecuzione della pipeline viene utilizzato per il nome del gruppo di esecuzioni.

  Se specifichi `TrialName`, viene utilizzato per il nome del gruppo di esecuzioni. Se esiste un gruppo di esecuzioni con quel nome, le esecuzioni create dalla pipeline vengono aggiunte al gruppo di esecuzioni esistente. Se non esiste un gruppo di esecuzioni con quel nome, viene creato un nuovo gruppo di esecuzioni.

**Nota**  
Le entità dell'esperimento non vengono eliminate quando viene eliminata la pipeline che ha creato le entità. Puoi utilizzare l'API SageMaker Experiments per eliminare le entità.

Per informazioni su come visualizzare le entità dell'esperimento SageMaker AI associate a una pipeline, consulta[Accesso ai dati dell’esperimento da una pipeline](pipelines-studio-experiments.md). Per ulteriori informazioni sugli SageMaker esperimenti, consulta[SageMaker Esperimenti di Amazon in Studio Classic](experiments.md).

Le sezioni seguenti illustrano esempi delle regole precedenti e mostrano come le stesse sono rappresentate nel file di definizione della pipeline. Per ulteriori informazioni sui file di definizione delle pipeline, consulta [Panoramica su Pipelines](pipelines-overview.md).

**Topics**
+ [Comportamento predefinito](pipelines-experiments-default.md)
+ [Disattivazione dell’integrazione di Esperimenti](pipelines-experiments-none.md)
+ [Specifica un nome personalizzato per l'esperimento](pipelines-experiments-custom-experiment.md)
+ [Specifica un nome di gruppo di esecuzioni personalizzato](pipelines-experiments-custom-trial.md)

# Comportamento predefinito
<a name="pipelines-experiments-default"></a>

**Creazione di una pipeline**

Il comportamento predefinito durante la creazione di una pipeline SageMaker AI consiste nell'integrarla automaticamente con SageMaker Experiments. Se non specifichi alcuna configurazione personalizzata, SageMaker AI crea un esperimento con lo stesso nome della pipeline, un gruppo di esecuzione per ogni esecuzione della pipeline utilizzando l'ID di esecuzione della pipeline come nome e singole esecuzioni all'interno di ciascun gruppo di esecuzione per ogni lavoro di SageMaker intelligenza artificiale lanciato come parte delle fasi della pipeline. Puoi monitorare e confrontare senza problemi le metriche di diverse esecuzioni della pipeline, analogamente a come analizzeresti un esperimento di addestramento dei modelli. La sezione seguente illustra il comportamento predefinito quando definisci una pipeline senza configurare esplicitamente l’integrazione dell’esperimento.

Il `pipeline_experiment_config` viene omesso. Per impostazione predefinita `ExperimentName` è `name` della pipeline. Per impostazione predefinita `TrialName` è l'ID di esecuzione.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    steps=[step_train]
)
```

**File di definizione della pipeline**

```
{
  "Version": "2020-12-01",
  "Parameters": [
    {
      "Name": "InputDataSource"
    },
    {
      "Name": "InstanceCount",
      "Type": "Integer",
      "DefaultValue": 1
    }
  ],
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Disattivazione dell’integrazione di Esperimenti
<a name="pipelines-experiments-none"></a>

**Creazione di una pipeline**

Puoi disabilitare l'integrazione della pipeline con SageMaker Experiments impostando il `pipeline_experiment_config` parametro su `None` quando definisci la pipeline. In questo modo, l' SageMaker intelligenza artificiale non creerà automaticamente un esperimento, eseguirà gruppi o singole esecuzioni per tracciare le metriche e gli artefatti associati alle esecuzioni della pipeline. L’esempio seguente imposta il parametro di configurazione della pipeline su `None`.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=None,
    steps=[step_train]
)
```

**File di definizione della pipeline**

È lo stesso dell'esempio predefinito precedente, senza `PipelineExperimentConfig`.

# Specifica un nome personalizzato per l'esperimento
<a name="pipelines-experiments-custom-experiment"></a>

Sebbene il comportamento predefinito consista nell'utilizzare il nome della pipeline come nome dell'esperimento in SageMaker Experiments, puoi sovrascriverlo e specificare invece un nome di esperimento personalizzato. Questo può essere utile se intendi raggruppare più esecuzioni della pipeline nello stesso esperimento per semplificare l’analisi e il confronto. Il nome del gruppo di esecuzione continuerà a utilizzare per impostazione predefinita l’ID di esecuzione della pipeline, a meno che non imposti esplicitamente anche un nome personalizzato. La sezione seguente mostra come creare una pipeline con un nome di esperimento personalizzato lasciando il nome del gruppo di esecuzione come ID di esecuzione predefinito.

**Creazione di una pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      "CustomExperimentName",
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[step_train]
)
```

**File di definizione della pipeline**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": "CustomExperimentName",
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Specifica un nome di gruppo di esecuzioni personalizzato
<a name="pipelines-experiments-custom-trial"></a>

Oltre a impostare un nome personalizzato per l'esperimento, puoi anche specificare un nome personalizzato per i gruppi di esecuzione creati da SageMaker Experiments durante le esecuzioni della pipeline. Questo nome viene aggiunto all’ID di esecuzione della pipeline per garantirne l’unicità. Puoi specificare un nome personalizzato per il gruppo di esecuzione per identificare e analizzare le esecuzioni di pipeline correlate all’interno dello stesso esperimento. La sezione seguente mostra come definire una pipeline con un nome personalizzato per il gruppo di esecuzione utilizzando il nome della pipeline predefinito come nome dell’esperimento.

**Creazione di una pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      Join(on="-", values=["CustomTrialName", ExecutionVariables.PIPELINE_EXECUTION_ID])
    ),
    steps=[step_train]
)
```

**File di definizione della pipeline**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {
      "On": "-",
      "Values": [
         "CustomTrialName",
         {"Get": "Execution.PipelineExecutionId"}
       ]
    }
  },
  "Steps": [...]
}
```

# Esecuzione delle pipeline con la modalità locale
<a name="pipelines-local-mode"></a>

SageMaker La modalità locale di Pipelines è un modo semplice per testare gli script di addestramento, elaborazione e inferenza, nonché la compatibilità in fase di runtime dei [parametri della pipeline prima di eseguire la pipeline](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#pipeline-parameters) sul servizio di intelligenza artificiale gestito. SageMaker Utilizzando la modalità locale, puoi testare la tua pipeline SageMaker AI localmente utilizzando un set di dati più piccolo. Ciò consente il debug rapido e semplice degli errori negli script utente e nella definizione della pipeline stessa senza costi di utilizzo del servizio gestito. L’argomento seguente mostra come definire ed eseguire le pipeline localmente.

La modalità locale di Pipelines sfrutta la [modalità locale dei lavori SageMaker AI sotto](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) il cofano. Questa è una funzionalità dell'SDK SageMaker Python che consente di eseguire immagini SageMaker AI integrate o personalizzate localmente utilizzando contenitori Docker. La modalità locale di Pipelines si basa sulla modalità locale dei lavori SageMaker AI. Pertanto, ci si può aspettare gli stessi risultati come se si eseguissero quei lavori separatamente. Ad esempio, la modalità locale utilizza ancora Amazon S3 per caricare gli artefatti del modello e gli output di elaborazione. Se desideri che i dati generati dai processi locali risiedano sul disco locale, puoi utilizzare la configurazione indicata nella [modalità locale](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode).

La modalità locale pipeline attualmente supporta i seguenti tipi di fasi:
+ [Fase di addestramento](build-and-manage-steps-types.md#step-type-training)
+ [Fase di elaborazione](build-and-manage-steps-types.md#step-type-processing)
+ [Fase di trasformazione](build-and-manage-steps-types.md#step-type-transform)
+ [Fase del modello](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-model-create) (solo con argomenti Crea modello)
+ [Fase Condizione](build-and-manage-steps-types.md#step-type-condition)
+ [Fase Errore](build-and-manage-steps-types.md#step-type-fail)

A differenza del servizio Pipeline gestito che consente l'esecuzione di più fasi in parallelo utilizzando la [configurazione del parallelismo](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parallelism-configuration), l’executor della pipeline locale esegue le fasi in sequenza. Pertanto, le prestazioni complessive di esecuzione di una pipeline locale potrebbero essere inferiori rispetto a quelle eseguite sul cloud: ciò dipende soprattutto dalle dimensioni del set di dati, dall'algoritmo e dalla potenza del computer locale. [Si noti inoltre che le Pipelines eseguite in modalità locale non vengono registrate in SageMaker Experiments.](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-experiments.html)

**Nota**  
La modalità locale di Pipelines non è compatibile con algoritmi di SageMaker intelligenza artificiale come. XGBoost Se si desidera utilizzare questi algoritmi, è necessario utilizzarli in [modalità script.](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html)

Per eseguire una pipeline a livello locale, i campi `sagemaker_session` associati alle fasi della pipeline e alla pipeline stessa devono essere di tipo `LocalPipelineSession`. L'esempio seguente mostra come definire una pipeline SageMaker AI da eseguire localmente.

```
from sagemaker.workflow.pipeline_context import LocalPipelineSession
from sagemaker.pytorch import PyTorch
from sagemaker.workflow.steps import TrainingStep
from sagemaker.workflow.pipeline import Pipeline

local_pipeline_session = LocalPipelineSession()

pytorch_estimator = PyTorch(
    sagemaker_session=local_pipeline_session,
    role=sagemaker.get_execution_role(),
    instance_type="ml.c5.xlarge",
    instance_count=1,
    framework_version="1.8.0",
    py_version="py36",
    entry_point="./entry_point.py",
)

step = TrainingStep(
    name="MyTrainingStep",
    step_args=pytorch_estimator.fit(
        inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data/train"),
    )
)

pipeline = Pipeline(
    name="MyPipeline",
    steps=[step],
    sagemaker_session=local_pipeline_session
)

pipeline.create(
    role_arn=sagemaker.get_execution_role(), 
    description="local pipeline example"
)

// pipeline will execute locally
execution = pipeline.start()

steps = execution.list_steps()

training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

step_outputs = pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)
```

Quando siete pronti per eseguire la pipeline sul servizio SageMaker Pipelines gestito, potete farlo sostituendo il frammento di codice precedente con `PipelineSession` (come illustrato `LocalPipelineSession` nell'esempio di codice seguente) ed eseguendo nuovamente il codice.

```
from sagemaker.workflow.pipeline_context import PipelineSession

pipeline_session = PipelineSession()
```

# Risoluzione dei problemi di Amazon SageMaker Pipelines
<a name="pipelines-troubleshooting"></a>

Quando usi Amazon SageMaker Pipelines, potresti riscontrare problemi per vari motivi. In questo argomento vengono fornite informazioni sugli errori comuni e su come risolverli. 

 **Problemi relativi alla definizione della pipeline** 

La definizione della pipeline potrebbe essere formattata in modo errato. Ciò può comportare la mancata esecuzione  o un’imprecisione nel processo. Tali errori possono essere rilevati quando viene creata la pipeline o quando si verifica un'esecuzione. Se la definizione non viene convalidata, Pipelines restituisce un messaggio di errore che identifica il carattere in cui il file JSON è in un formato non valido. Per risolvere questo problema, esamina i passaggi creati utilizzando SageMaker AI Python SDK per verificarne la precisione. 

È possibile includere le fasi in una definizione di pipeline solo una volta. Per questo motivo, le fasi non possono esistere all’interno di una fase condizionale *e* di una pipeline nella stessa pipeline. 

 **Esame dei file di log della pipeline** 

È possibile visualizzare lo stato delle tue fasi con il comando seguente: 

```
execution.list_steps()
```

Ogni fase include le seguenti informazioni:
+ L'ARN dell'entità lanciata dalla pipeline, ad esempio AI SageMaker job ARN, model ARN o model package ARN. 
+ Il motivo dell'errore comprende una breve spiegazione del mancato successo della fase.
+ Se si tratta di una fase condizionale, questa indica se la condizione viene valutata come vera o falsa.  
+ Se l'esecuzione riutilizza un'esecuzione di un processo precedente, `CacheHit` elenca l'esecuzione di origine.  

Puoi anche visualizzare i messaggi di errore e i log nell'interfaccia di Amazon SageMaker Studio. Per informazioni su come visualizzare i file di log in Studio, consulta [Visualizzazione dei dettagli dell’esecuzione di una pipeline](pipelines-studio-view-execution.md).

 **Autorizzazioni mancanti** 

Sono necessarie le autorizzazioni corrette per il ruolo che crea l'esecuzione della pipeline e le fasi che creano ciascuno dei processi nell'esecuzione della pipeline. Senza queste autorizzazioni, potresti non essere in grado di inviare l'esecuzione della pipeline o eseguire i lavori di SageMaker intelligenza artificiale come previsto. Per garantire che le autorizzazioni siano configurate correttamente, consulta [Gestione degli accessi IAM](build-and-manage-access.md). 

 **Errori di esecuzione del processo ** 

Potresti riscontrare problemi durante l'esecuzione dei passaggi a causa di problemi negli script che definiscono la funzionalità dei tuoi SageMaker lavori di intelligenza artificiale. Ogni lavoro ha una serie di CloudWatch log. Per visualizzare questi registri da Studio, vedi. [Visualizzazione dei dettagli dell’esecuzione di una pipeline](pipelines-studio-view-execution.md) Per informazioni sull'utilizzo dei CloudWatch log con SageMaker AI, consulta. [CloudWatch Registri per Amazon SageMaker AI](logging-cloudwatch.md) 

 **Errori dei file di proprietà** 

Potreste avere problemi in caso di implementazione errata dei file di proprietà nella tua pipeline. Per garantire che l'implementazione dei file di proprietà funzioni come previsto, consulta [Passaggio dei dati tra le fasi](build-and-manage-propertyfile.md). 

 **Problemi durante la copia dello script nel container nel Dockerfile** 

No, puoi copiare lo script nel container o passarlo tramite l’argomento `entry_point` (dell’entità dello strumento di stima) o `code` (dell’entità del processore), come illustrato nell’esempio di codice seguente.

```
step_process = ProcessingStep(
    name="PreprocessAbaloneData",
    processor=sklearn_processor,
    inputs = [
        ProcessingInput(
            input_name='dataset',
            source=...,
            destination="/opt/ml/processing/code",
        )
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path),
    ],
    code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument
    cache_config = cache_config,
    job_arguments = ['--input', 'arg1']
)

sklearn_estimator = SKLearn(
    entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point
    framework_version="0.23-1",
    instance_type=training_instance_type,
    role=role,
    output_path=model_path, # New
    sagemaker_session=sagemaker_session, # New
    instance_count=1, # New
    base_job_name=f"{base_job_prefix}/pilot-train",
    metric_definitions=[
        {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'},
        {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'}
    ],
)
```

# Azioni di Pipelines
<a name="pipelines-build"></a>

Puoi utilizzare l'SDK Amazon SageMaker Pipelines Python o drag-and-drop il visual designer di SageMaker Amazon Studio per creare, visualizzare, modificare, eseguire e monitorare i flussi di lavoro ML.

La schermata seguente mostra il visual designer che puoi utilizzare per creare e gestire Amazon SageMaker Pipelines.

![\[Schermata dell' drag-and-dropinterfaccia visiva di Pipelines in Studio.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Una volta implementata la pipeline, puoi visualizzare il Direct Acyclic Graph (DAG) della pipeline e gestire le esecuzioni utilizzando Amazon Studio. SageMaker Con SageMaker Studio, puoi ottenere informazioni sulle tue pipeline attuali e storiche, confrontare le esecuzioni, visualizzare il DAG per le tue esecuzioni, ottenere informazioni sui metadati e altro ancora. Per informazioni su come visualizzare le pipeline da Studio, consulta [Visualizzazione dei dettagli di una pipeline](pipelines-studio-list.md). 

**Topics**
+ [Definizione di una pipeline](define-pipeline.md)
+ [Modifica di una pipeline](edit-pipeline-before-execution.md)
+ [Esecuzione di una pipeline](run-pipeline.md)
+ [Arresto di una pipeline](pipelines-studio-stop.md)
+ [Visualizzazione dei dettagli di una pipeline](pipelines-studio-list.md)
+ [Visualizzazione dei dettagli dell’esecuzione di una pipeline](pipelines-studio-view-execution.md)
+ [Download di un file di definizione della pipeline](pipelines-studio-download.md)
+ [Accesso ai dati dell’esperimento da una pipeline](pipelines-studio-experiments.md)
+ [Monitoraggio del lineage di una pipeline](pipelines-lineage-tracking.md)

# Definizione di una pipeline
<a name="define-pipeline"></a>

Per orchestrare i flussi di lavoro con Amazon SageMaker Pipelines, devi generare un grafo aciclico diretto (DAG) sotto forma di definizione di pipeline JSON. Il DAG specifica le diverse fasi coinvolte nel processo di ML, come la pre-elaborazione dei dati, l’addestramento dei modelli, la valutazione del modello e l’implementazione dei modelli, nonché le dipendenze e il flusso di dati tra queste fasi. L’argomento seguente mostra come generare una definizione della pipeline.

Puoi generare la definizione della tua pipeline JSON utilizzando l'SDK SageMaker Python o la funzionalità visiva drag-and-drop Pipeline Designer in Amazon Studio. SageMaker L’immagine seguente è una rappresentazione del DAG della pipeline creato in questo tutorial:

![\[Schermata dell'interfaccia visiva drag-and-drop per Pipelines in Studio.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


La pipeline definita nelle sezioni seguenti risolve un problema di regressione per determinare l’età di un abalone in base alle sue misurazioni fisiche. Per un notebook Jupyter eseguibile che include il contenuto di questo tutorial, consulta Orchestrating [Jobs](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) with Amazon Model Building Pipelines. SageMaker 

**Nota**  
[Puoi fare riferimento alla posizione del modello come proprietà della fase di addestramento, come mostrato nella pipeline di esempio in Github. end-to-end CustomerChurn ](https://github.com/aws-samples/customer-churn-sagemaker-pipelines-sample/blob/main/pipelines/customerchurn/pipeline.py)

**Topics**

## Definizione di una pipeline (Pipeline Designer)
<a name="create-pipeline-designer"></a>

La seguente procedura dettagliata illustra i passaggi per creare una pipeline barebone utilizzando Pipeline Designer. drag-and-drop Se devi mettere in pausa o terminare la sessione di modifica della pipeline nel designer visivo, fai clic sull’opzione **Esporta**. Questa operazione consente di scaricare la definizione corrente della pipeline nell’ambiente locale. Per riprendere il processo di modifica della pipeline in un secondo momento, puoi importare lo stesso file di definizione JSON nel designer visivo.

### Creazione di una fase di elaborazione
<a name="create-processing-step"></a>

Per creare una fase del processo di elaborazione dati, procedi come descritto di seguito:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. Scegli **Create** (Crea).

1. Scegli **Vuoto**.

1. Nella barra laterale sinistra, scegli **Elaborazione di dati** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Elaborazione di dati** che hai aggiunto.

1. Per aggiungere un set di dati di input, scegli **Aggiungi** in **Dati (input)** nella barra laterale destra e seleziona un set di dati.

1. Per aggiungere una posizione in cui salvare i set di dati di output, scegli **Aggiungi** in **Dati (output)** nella barra laterale destra e vai alla destinazione.

1. Completa i campi rimanenti nella barra laterale destra. [Per informazioni sui campi di queste schede, consulta sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

### Creazione di una fase di addestramento
<a name="create-training-step"></a>

Per configurare una fase di addestramento dei modelli, procedi come descritto di seguito:

1. Nella barra laterale sinistra, scegli **Addestramento di un modello** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Addestramento di un modello** che hai aggiunto.

1. Per aggiungere un set di dati di input, scegli **Aggiungi** in **Dati (input)** nella barra laterale destra e seleziona un set di dati.

1. Per scegliere una posizione in cui salvare gli artefatti del modello, inserisci un URI Amazon S3 nel campo **Posizione (URI S3)** oppure scegli **Sfoglia S3** per passare alla posizione di destinazione.

1. Completa i campi rimanenti nella barra laterale destra. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Fai clic e trascina il cursore dalla fase **Elaborazione di dati** che hai aggiunto nella sezione precedente alla fase **Addestramento di un modello** per creare un arco che colleghi le due fasi.

### Creazione di un pacchetto di modelli con una fase Registrazione di un modello
<a name="create-register-model-step"></a>

Per creare un pacchetto di modelli con una fase di registrazione del modello, procedi come descritto di seguito:

1. Nella barra laterale sinistra, scegli **Registrazione di un modello** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Registrazione di un modello** che hai aggiunto.

1. Per selezionare un modello da registrare, scegli **Aggiungi** in **Modello (input)**.

1. Scegli **Crea un gruppo di modelli** per aggiungere il modello a un nuovo gruppo di modelli.

1. Completa i campi rimanenti nella barra laterale destra. Per informazioni sui campi di queste schede, consulta [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Fai clic e trascina il cursore dalla fase **Addestramento di un modello** che hai aggiunto nella sezione precedente alla fase **Registrazione di un modello** per creare un arco che colleghi le due fasi.

### Implementazione del modello su un endpoint con una fase Implementazione di un modello (endpoint)
<a name="create-deploy-endpoint-step"></a>

Per implementare il modello utilizzando una fase di implementazione del modello, procedi come descritto di seguito:

1. Nella barra laterale sinistra, scegli **Implementazione di un modello (endpoint)** e trascinalo sul canvas.

1. Nel canvas, scegli la fase **Implementazione di un modello (endpoint)** che hai aggiunto.

1. Per scegliere un modello da implementare, scegli **Aggiungi** in **Modello (input)**.

1. Scegli il pulsante di opzione **Crea endpoint** per creare un nuovo endpoint.

1. Immetti un **nome** e una **descrizione** per l’endpoint.

1. Fai clic e trascina il cursore dalla fase **Registrazione di un modello** che hai aggiunto nella sezione precedente alla fase **Implementazione di un modello (endpoint)** per creare un arco che colleghi le due fasi.

1. Completa i campi rimanenti nella barra laterale destra.

### Definizione dei parametri della pipeline
<a name="define-pipeline-parameters"></a>

Puoi configurare un set di parametri della pipeline i cui valori possono essere aggiornati per ogni esecuzione. Per definire i parametri della pipeline e impostare i valori predefiniti, fai clic sull’icona a forma di ingranaggio nella parte inferiore del designer visivo.

### Salvataggio della pipeline
<a name="save-pipeline"></a>

Dopo aver inserito tutte le informazioni richieste per creare la pipeline, fai clic su **Salva** nella parte inferiore del designer visivo. In questo modo la pipeline viene convalidata per eventuali errori al runtime e ti viene inviata una notifica. L’operazione **Salva** non riesce finché non correggi tutti gli errori segnalati dai controlli di convalida automatici. Per riprendere la modifica in un secondo momento, puoi salvare la pipeline in corso come definizione JSON nell’ambiente locale. Puoi esportare la tua pipeline come file di definizione JSON facendo clic sul pulsante **Esporta** nella parte inferiore del designer visivo. Successivamente, per riprendere l’aggiornamento della pipeline, carica il file di definizione JSON facendo clic sul pulsante **Importa**.

## Definire una pipeline (SageMaker Python SDK)
<a name="create-pipeline-wrap"></a>

### Prerequisiti
<a name="define-pipeline-prereq"></a>

 Per eseguire il tutorial seguente, procedi come descritto di seguito: 
+ Configura l'istanza del notebook come illustrato in [Creare un'istanza del notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html). Ciò conferisce al tuo ruolo le autorizzazioni per leggere e scrivere su Amazon S3 e creare processi di formazione, trasformazione in batch ed elaborazione nell'intelligenza artificiale. SageMaker 
+ Concedi al notebook le autorizzazioni per acquisire e svolgere il proprio ruolo, come illustrato in [Modifica della policy di autorizzazione di un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy). Aggiungi il seguente frammento JSON per collegare questa policy al tuo ruolo. Sostituisci `<your-role-arn>` con l'ARN usato per creare l'istanza del notebook. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/role-name"
          }
      ]
  }
  ```

------
+  Affidati al responsabile del servizio di SageMaker intelligenza artificiale seguendo i passaggi descritti in [Modifica di una politica di fiducia dei ruoli](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli). Aggiungi il seguente frammento di dichiarazione alla relazione di attendibilità del tuo ruolo: 

  ```
  {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "sagemaker.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
  ```

#### Configurare l'ambiente
<a name="define-pipeline-prereq-setup"></a>

Crea una nuova sessione di SageMaker intelligenza artificiale utilizzando il seguente blocco di codice. Ciò restituisce l'ARN del ruolo per la sessione. Questo ARN del ruolo dovrebbe essere l'ARN del ruolo di esecuzione impostato come prerequisito. 

```
import boto3
import sagemaker
import sagemaker.session
from sagemaker.workflow.pipeline_context import PipelineSession

region = boto3.Session().region_name
sagemaker_session = sagemaker.session.Session()
role = sagemaker.get_execution_role()
default_bucket = sagemaker_session.default_bucket()

pipeline_session = PipelineSession()

model_package_group_name = f"AbaloneModelPackageGroupName"
```

### Crea una pipeline
<a name="define-pipeline-create"></a>

**Importante**  
Le politiche IAM personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L’autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic applicano automaticamente tag a tutte le risorse che creano. Se una policy IAM consente a Studio e Studio Classic di creare risorse ma non consente l'etichettatura, possono verificarsi errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta [Fornisci le autorizzazioni per etichettare SageMaker le risorse AI](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md)che danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Esegui i seguenti passaggi dall'istanza del tuo notebook SageMaker AI per creare una pipeline che includa passaggi per:
+ pre-elaborazione
+ addestramento
+ valutazione
+ valutazione condizionale
+ registrazione del modello

**Nota**  
È possibile utilizzare [ExecutionVariables](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables)e la funzione [Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables) per specificare la posizione di output. `ExecutionVariables`viene risolto in fase di esecuzione. Ad esempio, `ExecutionVariables.PIPELINE_EXECUTION_ID` viene risolto nell'ID dell'esecuzione corrente, che può essere utilizzato come identificatore univoco in diverse esecuzioni.

#### Fase 1. Scarica il set di dati
<a name="define-pipeline-data-download"></a>

Questo notebook utilizza il set di dati Abalone per UCI Machine Learning. Il set di dati contiene le seguenti caratteristiche: 
+ `length` - La misurazione del guscio più lungo dell'abalone.
+ `diameter` - Il diametro dell'abalone perpendicolare alla sua lunghezza.
+ `height` - L'altezza dell'abalone con la carne nel guscio.
+ `whole_weight` - Il peso dell'abalone intero.
+ `shucked_weight` - Il peso della carne estratta dall'abalone.
+ `viscera_weight` - Il peso delle viscere dell'abalone dopo la perdita di sangue.
+ `shell_weight` - Il peso del guscio dell’abalone dopo la rimozione della carne e l'essiccazione.
+ `sex` - Il sesso dell'abalone. Uno tra “M”, “F” o “I”, dove “I” è un abalone neonato.
+ `rings` - Il numero di anelli nel guscio dell’abalone.

Il numero di anelli nel guscio dell’abalone è una buona approssimazione della sua età secondo la formula `age=rings + 1.5`. Tuttavia, ottenere questo numero è un’operazione che richiede molto tempo. È necessario tagliare il guscio attraverso il cono, colorare la sezione e contare il numero di anelli al microscopio. Tuttavia, le altre misurazioni fisiche sono più facili da determinare. Questo notebook utilizza il set di dati per creare un modello predittivo degli anelli variabili utilizzando le altre misurazioni fisiche.

**Per scaricare i set di dati**

1. Scarica il set di dati nel bucket Amazon S3 predefinito del tuo account.

   ```
   !mkdir -p data
   local_path = "data/abalone-dataset.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset.csv",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   input_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(input_data_uri)
   ```

1. Scarica un secondo set di dati per la trasformazione in batch dopo la creazione del modello.

   ```
   local_path = "data/abalone-dataset-batch.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset-batch",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   batch_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(batch_data_uri)
   ```

#### Fase 2. Definisci i parametri delle pipeline
<a name="define-pipeline-parameters"></a>

 Questo blocco di codice definisce i seguenti parametri per la pipeline: 
+  `processing_instance_count` - Il numero di istanze del processo di elaborazione. 
+  `input_data` - La posizione su Amazon S3 dei dati di input. 
+  `batch_data` - La posizione su Amazon S3 dei dati di input per la trasformazione in batch. 
+  `model_approval_status` - Lo stato di approvazione con cui registrare il modello addestrato per CI/CD. Per ulteriori informazioni, consulta [MLOps Automazione con SageMaker progetti](sagemaker-projects.md).

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
model_approval_status = ParameterString(
    name="ModelApprovalStatus",
    default_value="PendingManualApproval"
)
input_data = ParameterString(
    name="InputData",
    default_value=input_data_uri,
)
batch_data = ParameterString(
    name="BatchData",
    default_value=batch_data_uri,
)
```

#### Fase 3. Definisci una fase di elaborazione per l’ingegneria delle caratteristiche
<a name="define-pipeline-processing-feature"></a>

Questa sezione mostra come creare una fase di elaborazione per preparare i dati del set di dati per l'addestramento.

**Per creare una fase di elaborazione**

1.  Crea una directory per lo script di elaborazione.

   ```
   !mkdir -p abalone
   ```

1. Nella directory `/abalone`, crea un file denominato `preprocessing.py` con il contenuto seguente. Questo script di pre-elaborazione viene passato alla fase di elaborazione per l’esecuzione sui dati di input. La fase di addestramento utilizza quindi le funzionalità e le etichette di addestramento pre-elaborate per addestrare un modello. La fase di valutazione utilizza il modello addestrato e le etichette di test pre-elaborate per valutare il modello. Lo script utilizza `scikit-learn` per effettuare quanto segue:
   +  Inserire i dati categorici `sex` mancanti e codificarli in modo che siano adatti all’addestramento. 
   +  Ridimensionare e normalizzare tutti i campi numerici ad eccezione di `rings` e `sex`. 
   +  Suddividere i dati in set di dati di addestramento, test e convalida. 

   ```
   %%writefile abalone/preprocessing.py
   import argparse
   import os
   import requests
   import tempfile
   import numpy as np
   import pandas as pd
   
   
   from sklearn.compose import ColumnTransformer
   from sklearn.impute import SimpleImputer
   from sklearn.pipeline import Pipeline
   from sklearn.preprocessing import StandardScaler, OneHotEncoder
   
   
   # Because this is a headerless CSV file, specify the column names here.
   feature_columns_names = [
       "sex",
       "length",
       "diameter",
       "height",
       "whole_weight",
       "shucked_weight",
       "viscera_weight",
       "shell_weight",
   ]
   label_column = "rings"
   
   feature_columns_dtype = {
       "sex": str,
       "length": np.float64,
       "diameter": np.float64,
       "height": np.float64,
       "whole_weight": np.float64,
       "shucked_weight": np.float64,
       "viscera_weight": np.float64,
       "shell_weight": np.float64
   }
   label_column_dtype = {"rings": np.float64}
   
   
   def merge_two_dicts(x, y):
       z = x.copy()
       z.update(y)
       return z
   
   
   if __name__ == "__main__":
       base_dir = "/opt/ml/processing"
   
       df = pd.read_csv(
           f"{base_dir}/input/abalone-dataset.csv",
           header=None, 
           names=feature_columns_names + [label_column],
           dtype=merge_two_dicts(feature_columns_dtype, label_column_dtype)
       )
       numeric_features = list(feature_columns_names)
       numeric_features.remove("sex")
       numeric_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="median")),
               ("scaler", StandardScaler())
           ]
       )
   
       categorical_features = ["sex"]
       categorical_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="constant", fill_value="missing")),
               ("onehot", OneHotEncoder(handle_unknown="ignore"))
           ]
       )
   
       preprocess = ColumnTransformer(
           transformers=[
               ("num", numeric_transformer, numeric_features),
               ("cat", categorical_transformer, categorical_features)
           ]
       )
       
       y = df.pop("rings")
       X_pre = preprocess.fit_transform(df)
       y_pre = y.to_numpy().reshape(len(y), 1)
       
       X = np.concatenate((y_pre, X_pre), axis=1)
       
       np.random.shuffle(X)
       train, validation, test = np.split(X, [int(.7*len(X)), int(.85*len(X))])
   
       
       pd.DataFrame(train).to_csv(f"{base_dir}/train/train.csv", header=False, index=False)
       pd.DataFrame(validation).to_csv(f"{base_dir}/validation/validation.csv", header=False, index=False)
       pd.DataFrame(test).to_csv(f"{base_dir}/test/test.csv", header=False, index=False)
   ```

1.  Creare un'istanza di un `SKLearnProcessor` da passare alla fase di elaborazione. 

   ```
   from sagemaker.sklearn.processing import SKLearnProcessor
   
   
   framework_version = "0.23-1"
   
   sklearn_processor = SKLearnProcessor(
       framework_version=framework_version,
       instance_type="ml.m5.xlarge",
       instance_count=processing_instance_count,
       base_job_name="sklearn-abalone-process",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Creare una fase di elaborazione. Questa fase comprende  `SKLearnProcessor`, i canali di input e output e lo script `preprocessing.py` che hai creato. È molto simile al `run` metodo di un'istanza del processore nell'SDK SageMaker AI Python. Il parametro `input_data` passato a `ProcessingStep` è costituito dai dati di input della fase stessa. Questi dati di input vengono utilizzati dall'istanza del processore durante l'esecuzione. 

    Notate `"train` i `"validation` canali con `"test"` nome e specificati nella configurazione di output per il processo di elaborazione. Le fasi `Properties` come queste possono essere utilizzate nelle fasi successive e si risolvono nei rispettivi valori di runtime al runtime. 

   ```
   from sagemaker.processing import ProcessingInput, ProcessingOutput
   from sagemaker.workflow.steps import ProcessingStep
      
   
   processor_args = sklearn_processor.run(
       inputs=[
         ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),  
       ],
       outputs=[
           ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
           ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
           ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
       ],
       code="abalone/preprocessing.py",
   ) 
   
   step_process = ProcessingStep(
       name="AbaloneProcess",
       step_args=processor_args
   )
   ```

#### Fase 4. Definisci una fase di addestramento
<a name="define-pipeline-training"></a>

Questa sezione mostra come utilizzare l'[XGBoostalgoritmo SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) AI per addestrare un modello sui dati di addestramento in uscita dalle fasi di elaborazione. 

**Per definire una fase di addestramento**

1.  Specifica il percorso del modello in cui desideri salvare i modelli dall'addestramento. 

   ```
   model_path = f"s3://{default_bucket}/AbaloneTrain"
   ```

1. Configura uno stimatore per l' XGBoost algoritmo e il set di dati di input. Il tipo di istanza di addestramento viene passato allo strumento di valutazione. Uno script di addestramento tipico:
   + carica i dati dai canali di input
   + configura l’addestramento con iperparametri
   + addestra un modello
   + salva un modello in `model_dir` così che possa essere ospitato in un secondo momento

   SageMaker L'intelligenza artificiale carica il modello su Amazon S3 sotto forma di `model.tar.gz` un processo di formazione alla fine del processo di formazione.

   ```
   from sagemaker.estimator import Estimator
   
   
   image_uri = sagemaker.image_uris.retrieve(
       framework="xgboost",
       region=region,
       version="1.0-1",
       py_version="py3",
       instance_type="ml.m5.xlarge"
   )
   xgb_train = Estimator(
       image_uri=image_uri,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=model_path,
       sagemaker_session=pipeline_session,
       role=role,
   )
   xgb_train.set_hyperparameters(
       objective="reg:linear",
       num_round=50,
       max_depth=5,
       eta=0.2,
       gamma=4,
       min_child_weight=6,
       subsample=0.7,
       silent=0
   )
   ```

1. Crea `TrainingStep` utilizzando l’istanza dello strumento di stima e le proprietà di `ProcessingStep`. In particolare, passa `S3Uri` di `"train"` e il canale di uscita `"validation"` a `TrainingStep`.  

   ```
   from sagemaker.inputs import TrainingInput
   from sagemaker.workflow.steps import TrainingStep
   
   
   train_args = xgb_train.fit(
       inputs={
           "train": TrainingInput(
               s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                   "train"
               ].S3Output.S3Uri,
               content_type="text/csv"
           ),
           "validation": TrainingInput(
               s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                   "validation"
               ].S3Output.S3Uri,
               content_type="text/csv"
           )
       },
   )
   
   step_train = TrainingStep(
       name="AbaloneTrain",
       step_args = train_args
   )
   ```

#### Fase 5. Definisci una fase di elaborazione per la valutazione del modello
<a name="define-pipeline-processing-model"></a>

Questa sezione mostra come creare una fase di elaborazione per valutare l'accuratezza del modello. Il risultato di questa valutazione del modello viene utilizzato nella fase di condizione per determinare il percorso di esecuzione da seguire.

**Per definire una fase di elaborazione per la valutazione del modello**

1. Nella directory `/abalone`, crea un file denominato `evaluation.py`. Questo script viene usato in una fase di elaborazione per eseguire la valutazione del modello. Prende come input un modello addestrato e il set di dati di test, quindi produce un file JSON contenente le metriche di valutazione della classificazione.

   ```
   %%writefile abalone/evaluation.py
   import json
   import pathlib
   import pickle
   import tarfile
   import joblib
   import numpy as np
   import pandas as pd
   import xgboost
   
   
   from sklearn.metrics import mean_squared_error
   
   
   if __name__ == "__main__":
       model_path = f"/opt/ml/processing/model/model.tar.gz"
       with tarfile.open(model_path) as tar:
           tar.extractall(path=".")
       
       model = pickle.load(open("xgboost-model", "rb"))
   
       test_path = "/opt/ml/processing/test/test.csv"
       df = pd.read_csv(test_path, header=None)
       
       y_test = df.iloc[:, 0].to_numpy()
       df.drop(df.columns[0], axis=1, inplace=True)
       
       X_test = xgboost.DMatrix(df.values)
       
       predictions = model.predict(X_test)
   
       mse = mean_squared_error(y_test, predictions)
       std = np.std(y_test - predictions)
       report_dict = {
           "regression_metrics": {
               "mse": {
                   "value": mse,
                   "standard_deviation": std
               },
           },
       }
   
       output_dir = "/opt/ml/processing/evaluation"
       pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
       
       evaluation_path = f"{output_dir}/evaluation.json"
       with open(evaluation_path, "w") as f:
           f.write(json.dumps(report_dict))
   ```

1.  Crea un'istanza di un `ScriptProcessor` che viene utilizzata per creare un `ProcessingStep`. 

   ```
   from sagemaker.processing import ScriptProcessor
   
   
   script_eval = ScriptProcessor(
       image_uri=image_uri,
       command=["python3"],
       instance_type="ml.m5.xlarge",
       instance_count=1,
       base_job_name="script-abalone-eval",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1.  Crea `ProcessingStep` utilizzando l’istanza del processore, i canali di input e output e lo script `evaluation.py`. Passa:
   + la proprietà `S3ModelArtifacts` dalla fase di addestramento `step_train`
   + `S3Uri` del canale di output `"test"` della fase di elaborazione `step_process`

   È molto simile al `run` metodo di un'istanza del processore nell'SDK SageMaker AI Python.  

   ```
   from sagemaker.workflow.properties import PropertyFile
   
   
   evaluation_report = PropertyFile(
       name="EvaluationReport",
       output_name="evaluation",
       path="evaluation.json"
   )
   
   eval_args = script_eval.run(
           inputs=[
           ProcessingInput(
               source=step_train.properties.ModelArtifacts.S3ModelArtifacts,
               destination="/opt/ml/processing/model"
           ),
           ProcessingInput(
               source=step_process.properties.ProcessingOutputConfig.Outputs[
                   "test"
               ].S3Output.S3Uri,
               destination="/opt/ml/processing/test"
           )
       ],
       outputs=[
           ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
       ],
       code="abalone/evaluation.py",
   )
   
   step_eval = ProcessingStep(
       name="AbaloneEval",
       step_args=eval_args,
       property_files=[evaluation_report],
   )
   ```

#### Fase 6: Definizione di una trasformazione in CreateModelStep batch
<a name="define-pipeline-create-model"></a>

**Importante**  
Si consiglia di [Fase del modello](build-and-manage-steps-types.md#step-type-model) utilizzarlo per creare modelli a partire dalla v2.90.0 di Python SageMaker SDK. `CreateModelStep`continuerà a funzionare nelle versioni precedenti di SageMaker Python SDK, ma non è più supportato attivamente.

Questa sezione mostra come creare un modello di SageMaker intelligenza artificiale a partire dall'output della fase di formazione. Questo modello viene usato per la trasformazione in batch su un nuovo set di dati. Questa fase viene passata alla fase Condizione e viene eseguita solo se tale fase restituisce `true`.

**Per definire una CreateModelStep trasformazione in batch**

1.  Crea un modello di SageMaker intelligenza artificiale. Passa alla proprietà `S3ModelArtifacts` sin dalla fase di addestramento `step_train`.

   ```
   from sagemaker.model import Model
   
   
   model = Model(
       image_uri=image_uri,
       model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Definisci l'input del modello per il tuo modello di SageMaker intelligenza artificiale.

   ```
   from sagemaker.inputs import CreateModelInput
   
   
   inputs = CreateModelInput(
       instance_type="ml.m5.large",
       accelerator_type="ml.eia1.medium",
   )
   ```

1. Crea il tuo `CreateModelStep` utilizzando l'`CreateModelInput`istanza del modello SageMaker AI che hai definito.

   ```
   from sagemaker.workflow.steps import CreateModelStep
   
   
   step_create_model = CreateModelStep(
       name="AbaloneCreateModel",
       model=model,
       inputs=inputs,
   )
   ```

#### Fase 7: TransformStep Definire una trasformazione in batch
<a name="define-pipeline-transform"></a>

Questa sezione mostra come creare un `TransformStep` per eseguire una trasformazione in batch su un set di dati dopo l'addestramento del modello. Questa fase viene passata alla fase Condizione e viene eseguita solo se tale fase restituisce `true`.

**TransformStep Definire una trasformazione in batch**

1. Crea un'istanza Transformer con il tipo di istanza di calcolo appropriato, il numero di istanze e l'URI del bucket Amazon S3 di output desiderati. Passa alla proprietà `ModelName` sin dalla fase `step_create_model` `CreateModel`. 

   ```
   from sagemaker.transformer import Transformer
   
   
   transformer = Transformer(
       model_name=step_create_model.properties.ModelName,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=f"s3://{default_bucket}/AbaloneTransform"
   )
   ```

1. Crea un `TransformStep` utilizzando l'istanza del transformer che hai definito e il parametro pipeline `batch_data`.

   ```
   from sagemaker.inputs import TransformInput
   from sagemaker.workflow.steps import TransformStep
   
   
   step_transform = TransformStep(
       name="AbaloneTransform",
       transformer=transformer,
       inputs=TransformInput(data=batch_data)
   )
   ```

#### Fase 8: Definire una RegisterModel fase per creare un pacchetto modello
<a name="define-pipeline-register"></a>

**Importante**  
Si consiglia di utilizzare [Fase del modello](build-and-manage-steps-types.md#step-type-model) per registrare i modelli a partire dalla v2.90.0 di Python SageMaker SDK. `RegisterModel`continuerà a funzionare nelle versioni precedenti di SageMaker Python SDK, ma non è più supportato attivamente.

Questa sezione illustra come creare un’istanza di `RegisterModel`. Il risultato dell’esecuzione di `RegisterModel` in una pipeline è un pacchetto di modelli. Un pacchetto di modelli è un'astrazione riutilizzabile di artefatti del modello che racchiude tutti gli ingredienti necessari per l'inferenza. Consiste in una specifica di inferenza che definisce l'immagine di inferenza da usare insieme a una posizione opzionale dei pesi del modello. Un gruppo di pacchetti di modelli è una raccolta di pacchetti di modelli. Puoi utilizzare `ModelPackageGroup` in Pipelines per aggiungere una nuova versione e un nuovo pacchetto di modelli al gruppo per ogni esecuzione della pipeline. Per ulteriori informazioni sulla registrazione dei modelli, consulta [Implementazione della registrazione del modello con il registro dei modelli](model-registry.md).

Questa fase viene passata alla fase Condizione e viene eseguita solo se tale fase restituisce `true`.

**Per definire un RegisterModel passaggio per creare un pacchetto modello**
+  Costruisci una fase `RegisterModel` utilizzando l'istanza dello strumento di valutazione che hai usato per la fase di addestramento. Passa alla proprietà `S3ModelArtifacts` sin dalla fase di addestramento `step_train` e specifica un `ModelPackageGroup`. Pipelines crea `ModelPackageGroup` per te.

  ```
  from sagemaker.model_metrics import MetricsSource, ModelMetrics 
  from sagemaker.workflow.step_collections import RegisterModel
  
  
  model_metrics = ModelMetrics(
      model_statistics=MetricsSource(
          s3_uri="{}/evaluation.json".format(
              step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
          ),
          content_type="application/json"
      )
  )
  step_register = RegisterModel(
      name="AbaloneRegisterModel",
      estimator=xgb_train,
      model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
      content_types=["text/csv"],
      response_types=["text/csv"],
      inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
      transform_instances=["ml.m5.xlarge"],
      model_package_group_name=model_package_group_name,
      approval_status=model_approval_status,
      model_metrics=model_metrics
  )
  ```

#### Fase 9. Definisci una fase condizionale per verificare l’accuratezza del modello
<a name="define-pipeline-condition"></a>

`ConditionStep` consente a Pipelines di supportare l’esecuzione condizionale nel DAG della pipeline in base alla condizione nelle proprietà delle fasi. In questo caso, intendi registrare un pacchetto di modelli solo se l’accuratezza del modello supera il valore richiesto. L’accuratezza del modello è determinata dalla fase di valutazione del modello. Se la precisione supera il valore richiesto, la pipeline crea anche un modello SageMaker AI ed esegue la trasformazione in batch su un set di dati. Questa sezione mostra come definire la fase condizionale.

**Per definire una fase condizionale per verificare l'accuratezza del modello**

1.  Definisci una condizione `ConditionLessThanOrEqualTo` utilizzando il valore di accuratezza trovato nell'output della fase di elaborazione della valutazione del modello, `step_eval`. Ottieni questo risultato utilizzando il file delle proprietà che hai indicizzato nella fase di elaborazione e il rispettivo valore dell'errore JSONPath quadratico medio,. `"mse"`

   ```
   from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
   from sagemaker.workflow.condition_step import ConditionStep
   from sagemaker.workflow.functions import JsonGet
   
   
   cond_lte = ConditionLessThanOrEqualTo(
       left=JsonGet(
           step_name=step_eval.name,
           property_file=evaluation_report,
           json_path="regression_metrics.mse.value"
       ),
       right=6.0
   )
   ```

1.  Costruisci un `ConditionStep`. Passa la condizione `ConditionEquals`, quindi imposta le fasi di registrazione del pacchetto di modelli e di trasformazione in batch come fasi successive, se la condizione viene soddisfatta. 

   ```
   step_cond = ConditionStep(
       name="AbaloneMSECond",
       conditions=[cond_lte],
       if_steps=[step_register, step_create_model, step_transform],
       else_steps=[], 
   )
   ```

#### Fase 10: creazione di una pipeline
<a name="define-pipeline-pipeline"></a>

Ora che hai creato tutte le fasi, combinale in una pipeline.

**Come creare una pipeline**

1.  Definisci quanto segue per la tua pipeline: `name`, `parameters` e `steps`. I nomi devono essere univoci all'interno di una coppia `(account, region)`.
**Nota**  
Una fase può apparire solo una volta nell'elenco delle fasi della pipeline o negli elenchi delle fasi if/else della fase condizionale. Non può apparire in entrambi. 

   ```
   from sagemaker.workflow.pipeline import Pipeline
   
   
   pipeline_name = f"AbalonePipeline"
   pipeline = Pipeline(
       name=pipeline_name,
       parameters=[
           processing_instance_count,
           model_approval_status,
           input_data,
           batch_data,
       ],
       steps=[step_process, step_train, step_eval, step_cond],
   )
   ```

1.  (Facoltativo) Esamina la definizione della pipeline JSON per assicurarti che sia ben formata.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

 Questa definizione della pipeline è pronta per essere inviata all'IA. SageMaker Nel prossimo tutorial, invii questa pipeline all' SageMaker IA e inizi una corsa. 

## Definizione di una pipeline (JSON)
<a name="collapsible-section-1"></a>

Puoi anche utilizzare [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_pipeline) o [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html) per creare una pipeline. La creazione di una pipeline richiede la definizione della pipeline, che è un oggetto JSON che definisce ogni fase della pipeline. L' SageMaker SDK offre un modo semplice per costruire la definizione della pipeline, che puoi utilizzare con qualsiasi delle opzioni menzionate APIs in precedenza per creare la pipeline stessa. Senza utilizzare l'SDK, gli utenti devono scrivere la definizione JSON non elaborata per creare la pipeline senza nessuno dei controlli di errore forniti dall'SDK Python SageMaker . [Per visualizzare lo schema per la definizione JSON della pipeline, consulta AI Pipeline Definition JSON Schema. SageMaker ](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/) Il seguente esempio di codice mostra un esempio di oggetto JSON per la definizione di una pipeline SageMaker AI:

```
{'Version': '2020-12-01',
 'Metadata': {},
 'Parameters': [{'Name': 'ProcessingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ProcessingInstanceCount', 'Type': 'Integer', 'DefaultValue': 1},
  {'Name': 'TrainingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ModelApprovalStatus',
   'Type': 'String',
   'DefaultValue': 'PendingManualApproval'},
  {'Name': 'ProcessedData',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
{'Name': 'InputDataUrl',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'},
  'TrialName': {'Get': 'Execution.PipelineExecutionId'}},
 'Steps': [{'Name': 'ReadTrainDataFromFS',
   'Type': 'Processing',
   'Arguments': {'ProcessingResources': {'ClusterConfig': {'InstanceType': 'ml.m5.4xlarge',
      'InstanceCount': 2,
      'VolumeSizeInGB': 30}},
    'AppSpecification': {'ImageUri': 'IMAGE_URI',
     'ContainerArguments': [....]},
    'RoleArn': 'ROLE',
      'ProcessingInputs': [...],
    'ProcessingOutputConfig': {'Outputs': [.....]},
    'StoppingCondition': {'MaxRuntimeInSeconds': 86400}},
   'CacheConfig': {'Enabled': True, 'ExpireAfter': '30d'}},
   ...
   ...
   ...
  }
```

 **Prossima fase:** [Esecuzione di una pipeline](run-pipeline.md) 

# Modifica di una pipeline
<a name="edit-pipeline-before-execution"></a>

Per modificare una pipeline prima di eseguirla, procedi come descritto di seguito:

1. Apri SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra di Studio, seleziona **Pipeline**.

1. Seleziona il nome di una pipeline per visualizzare i dettagli sulla pipeline.

1. Scegli la scheda **Esecuzioni**.

1. Seleziona il nome di un’esecuzione della pipeline.

1. Scegli **Modifica** per aprire Pipeline Designer.

1. Aggiorna gli edge tra le fasi o la configurazione delle fasi come richiesto e fai clic su **Salva**. 

   Il salvataggio di una pipeline dopo la modifica genera automaticamente un nuovo numero di versione.

1. Scegli **Esegui**.

# Esecuzione di una pipeline
<a name="run-pipeline"></a>

Dopo aver definito le fasi della pipeline come grafo aciclico orientato (DAG), puoi avviare la pipeline, che esegue le fasi definite nel DAG. Le seguenti procedure dettagliate mostrano come eseguire una pipeline Amazon SageMaker AI utilizzando l' drag-and-dropeditor visivo di Amazon Studio SageMaker o l'SDK Amazon Python. SageMaker 

## Esecuzione di una pipeline (Pipeline Designer)
<a name="run-pipeline-designer"></a>

Per iniziare una nuova esecuzione della pipeline, procedi come descritto di seguito:

------
#### [ Studio ]

1. Apri SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipelines** (Pipeline).

1. (Facoltativo) Per filtrare l’elenco delle pipeline per nome, digita il nome completo o parziale di una pipeline nel campo di ricerca.

1. Scegli il nome di una pipeline per visualizzarne i dettagli.

1. Scegli **Editor visivo** in alto a destra.

1. Per avviare un’esecuzione dalla versione più recente, scegli **Esecuzioni**.

1. Per avviare un’esecuzione da una versione specifica, procedi come descritto di seguito:
   + Scegli l’icona della versione nella barra degli strumenti in basso per aprire il pannello della versione.
   + Scegli la versione della pipeline da eseguire.
   + Passa il mouse sulla voce della versione per visualizzare il menu con tre puntini, quindi seleziona **Esegui**.
   + (Facoltativo) Per visualizzare una versione precedente della pipeline, scegli **Anteprima** dal menu con tre puntini nel pannello delle versioni. Puoi anche modificare la versione scegliendo **Modifica** nella barra delle notifiche.

**Nota**  
Se la pipeline non riesce, il banner di stato mostrerà lo stato **Non riuscito**. Dopo aver risolto il problema relativo alla fase non riuscita, scegli **Riprova** nel banner che indica lo stato per riprendere l'esecuzione della pipeline da quella fase.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Pipeline** dal menu.

1. Per limitare l’elenco delle pipeline per nome, inserisci un nome completo o parziale della pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline.

1. Dalla scheda **Esecuzioni** o **Grafico** dell'elenco delle esecuzioni, scegli **Crea esecuzione**.

1. Inserisci o aggiorna le seguenti informazioni necessarie:
   + **Nome**: il nome deve essere univoco per l’account nella Regione AWS .
   + **ProcessingInstanceCount**— Il numero di istanze da utilizzare per l'elaborazione.
   + **ModelApprovalStatus**— Per la vostra comodità.
   + **InputDataUrl**— L'URI Amazon S3 dei dati di input.

1. Scegli **Avvia**.

Una volta che la pipeline è in esecuzione, puoi visualizzare i dettagli dell’esecuzione scegliendo **Visualizza dettagli** nel banner di stato.

Per arrestare l’esecuzione, scegli **Arresta** nel banner di stato. Per riprendere l'esecuzione dal punto in cui era stata interrotta, scegli **Riprendi** nel banner che indica lo stato.

**Nota**  
Se la pipeline non riesce, il banner di stato mostrerà lo stato **Non riuscito**. Dopo aver risolto il problema relativo alla fase non riuscita, scegli **Riprova** nel banner che indica lo stato per riprendere l'esecuzione della pipeline da quella fase.

------

## Esegui una pipeline (SageMaker Python SDK)
<a name="run-pipeline-sdk"></a>

Dopo aver creato una definizione di pipeline utilizzando SageMaker AI Python SDK, puoi inviarla SageMaker all'IA per avviare l'esecuzione. Il seguente tutorial mostra come inviare una pipeline, avviare un'esecuzione, esaminare i risultati di tale esecuzione ed eliminare la pipeline. 

**Topics**
+ [Prerequisiti](#run-pipeline-prereq)
+ [Fase 1: avvio della pipeline](#run-pipeline-submit)
+ [Fase 2: esame dell'esecuzione di una pipeline](#run-pipeline-examine)
+ [Fase 3: sostituzione dei parametri predefiniti per l'esecuzione di una pipeline](#run-pipeline-parametrized)
+ [Fase 4: interruzione ed eliminazione dell'esecuzione di una pipeline](#run-pipeline-delete)

### Prerequisiti
<a name="run-pipeline-prereq"></a>

Questo tutorial richiede quanto segue: 
+  Un' SageMaker istanza di notebook.  
+  Una definizione della pipeline Pipelines. Questo tutorial presuppone che tu stia utilizzando la definizione della pipeline creata completando il tutorial [Definizione di una pipeline](define-pipeline.md). 

### Fase 1: avvio della pipeline
<a name="run-pipeline-submit"></a>

Per prima cosa dovrai avviare la pipeline. 

**Per avviare la pipeline**

1. Esamina la definizione della pipeline JSON per assicurarti che sia ben formata.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

1. Invia la definizione della pipeline al servizio Pipelines per creare una pipeline se non esiste o aggiornarla se esiste. Il ruolo passato viene utilizzato da Pipelines per creare tutti i processi definiti nelle fasi. 

   ```
   pipeline.upsert(role_arn=role)
   ```

1. Avvio dell'esecuzione di una pipeline.

   ```
   execution = pipeline.start()
   ```

### Fase 2: esame dell'esecuzione di una pipeline
<a name="run-pipeline-examine"></a>

Successivamente, è necessario esaminare l'esecuzione della pipeline. 

**Per esaminare l'esecuzione di una pipeline**

1.  Descrivi lo stato di esecuzione della pipeline per assicurarti che sia stata creata e avviata correttamente.

   ```
   execution.describe()
   ```

1. Attendi la fine dell'esecuzione. 

   ```
   execution.wait()
   ```

1. Elenca le fasi di esecuzione e il loro stato.

   ```
   execution.list_steps()
   ```

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

   ```
   [{'StepName': 'AbaloneTransform',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}},
    {'StepName': 'AbaloneRegisterModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}},
    {'StepName': 'AbaloneCreateModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}},
    {'StepName': 'AbaloneMSECond',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Condition': {'Outcome': 'True'}}},
    {'StepName': 'AbaloneEval',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}},
    {'StepName': 'AbaloneTrain',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}},
    {'StepName': 'AbaloneProcess',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
   ```

1. Una volta completata l'esecuzione della pipeline, scarica il file  `evaluation.json`risultante da Amazon S3 per esaminare il report. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Fase 3: sostituzione dei parametri predefiniti per l'esecuzione di una pipeline
<a name="run-pipeline-parametrized"></a>

È possibile eseguire esecuzioni aggiuntive della pipeline specificando diversi parametri della pipeline per sovrascrivere i valori predefiniti.

**Per sovrascrivere i parametri predefiniti**

1. Crea l'esecuzione della pipeline. Ciò avvia un'altra esecuzione della pipeline con la sovrascrittura dello stato di approvazione del modello impostata su “Approvato”. Ciò significa che la versione del pacchetto modello generata dalla `RegisterModel` fase è automaticamente pronta per la distribuzione tramite CI/CD pipeline, ad esempio con SageMaker Projects. Per ulteriori informazioni, consulta [MLOps Automazione con SageMaker progetti](sagemaker-projects.md).

   ```
   execution = pipeline.start(
       parameters=dict(
           ModelApprovalStatus="Approved",
       )
   )
   ```

1. Attendi la fine dell'esecuzione. 

   ```
   execution.wait()
   ```

1. Elenca le fasi di esecuzione e il loro stato.

   ```
   execution.list_steps()
   ```

1. Una volta completata l'esecuzione della pipeline, scarica il file  `evaluation.json`risultante da Amazon S3 per esaminare il report. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Fase 4: interruzione ed eliminazione dell'esecuzione di una pipeline
<a name="run-pipeline-delete"></a>

Quando hai terminato con la pipeline, puoi interrompere le esecuzioni in corso ed eliminare la pipeline.

**Per interropere ed eliminare l'esecuzione di una pipeline**

1. Interrompi l'esecuzione della pipeline.

   ```
   execution.stop()
   ```

1. Elimina la pipeline

   ```
   pipeline.delete()
   ```

# Arresto di una pipeline
<a name="pipelines-studio-stop"></a>

Puoi interrompere l'esecuzione di una pipeline nella console Amazon SageMaker Studio.

Per interrompere l'esecuzione di una pipeline nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. (Facoltativo) Per filtrare l’elenco delle pipeline per nome, digita il nome completo o parziale di una pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline.

1. Scegli la scheda **Esecuzioni**.

1. Seleziona l’esecuzione da arrestare.

1. Scegli **Stop (Arresta)**. Per riprendere l’esecuzione dal punto in cui era stata interrotta, scegli **Riprendi**.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Pipeline** dal menu.

1. Per limitare l’elenco delle pipeline per nome, inserisci un nome completo o parziale della pipeline nel campo di ricerca.

1. Per arrestare l’esecuzione di una pipeline, scegli **Visualizza dettagli** nella barra di stato della pipeline, quindi scegli **Arresta**. Per riprendere l’esecuzione dal punto in cui era stata interrotta, scegli **Riprendi**.

------

# Visualizzazione dei dettagli di una pipeline
<a name="pipelines-studio-list"></a>

Puoi visualizzare i dettagli di una pipeline di SageMaker intelligenza artificiale per comprenderne i parametri, le dipendenze delle sue fasi o monitorarne l'avanzamento e lo stato. Questo può aiutarti a risolvere i problemi o ottimizzare il flusso di lavoro. Puoi accedere ai dettagli di una determinata pipeline utilizzando la console Amazon SageMaker Studio ed esplorarne la cronologia di esecuzione, la definizione, i parametri e i metadati.

In alternativa, se la tua pipeline è associata a un progetto SageMaker AI, puoi accedere ai dettagli della pipeline dalla pagina dei dettagli del progetto. Per ulteriori informazioni, consulta [Visualizzazione delle risorse di progetto](sagemaker-projects-resources.md).

Per visualizzare i dettagli di una pipeline di SageMaker intelligenza artificiale, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

**Nota**  
Il reimballaggio del modello avviene quando la pipeline deve includere uno script personalizzato nel file di modello compresso (model.tar.gz) da caricare su Amazon S3 e utilizzare per distribuire un modello su un endpoint AI. SageMaker Quando la pipeline SageMaker AI addestra un modello e lo registra nel registro dei modelli, introduce una fase di repack *se* il modello addestrato risultante dal processo di formazione deve includere uno script di inferenza personalizzato. La fase di nuova compressione decomprime il modello, aggiunge un nuovo script e ricomprime il modello. L'esecuzione della pipeline aggiunge la fase di nuova compressione come processo di addestramento.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. (Facoltativo) Per filtrare l’elenco delle pipeline per nome, digita il nome completo o parziale di una pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline per visualizzare i dettagli sulla pipeline.

1. Per visualizzare i dettagli della pipeline, scegli una delle seguenti schede:
   + **Esecuzioni**: dettagli sulle esecuzioni.
   + **Grafo**: il grafo della pipeline, incluse tutte le fasi.
   + **Parametri**: i parametri e le metriche di esecuzione relativi alla pipeline.
   + **Informazioni**: i metadati associati alla pipeline, come i tag, il nome della risorsa Amazon (ARN) della pipeline e l’ARN del ruolo. In questa pagina puoi anche modificare la descrizione della pipeline.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Pipeline** dal menu.

1. Per limitare l’elenco delle pipeline per nome, inserisci un nome completo o parziale della pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline per visualizzare i dettagli sulla pipeline. La scheda dei dettagli della pipeline si apre mostrando un elenco di esecuzioni della pipeline. Puoi avviare un'esecuzione o scegliere una delle altre schede per ulteriori informazioni sulla pipeline. Utilizza l’icona **Controllo proprietà** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/gears.png)) per scegliere le colonne da visualizzare.

1. Dalla pagina dei dettagli della pipeline, scegli una delle seguenti schede per visualizzare i dettagli sulla pipeline:
   + **Esecuzioni**: dettagli sulle esecuzioni. È possibile creare un'esecuzione da questa scheda o dalla scheda **Grafico**.
   + **Grafico**: il DAG per la pipeline.
   + **Parametri**: comprende lo stato di approvazione del modello.
   + **Impostazioni**: i metadati associati alla pipeline. È possibile scaricare il file di definizione della pipeline e modificare il nome e la descrizione della pipeline da questa scheda.

------

# Visualizzazione dei dettagli dell’esecuzione di una pipeline
<a name="pipelines-studio-view-execution"></a>

Puoi esaminare i dettagli di una particolare pipeline di SageMaker intelligenza artificiale eseguita. Questo ti consente di:
+ Identificare e risolvere i possibili problemi durante l’esecuzione, ad esempio fasi non riuscite o errori imprevisti.
+ Confrontare i risultati di diverse esecuzioni della pipeline per capire in che modo le modifiche dei dati o dei parametri di input influiscono sul flusso di lavoro complessivo.
+ Identificare i colli di bottiglia e le opportunità di ottimizzazione.

Per visualizzare i dettagli dell’esecuzione di una pipeline, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. (Facoltativo) Per filtrare l’elenco delle pipeline per nome, digita il nome completo o parziale di una pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline per visualizzare i dettagli sulla pipeline.

1. Scegli la scheda **Esecuzioni**.

1. Seleziona il nome di un’esecuzione della pipeline da visualizzare. Viene visualizzato il grafo della pipeline per l’esecuzione specificata.

1. Scegli una delle fasi della pipeline nel grafo per visualizzarne le impostazioni nella barra laterale destra.

1. Per visualizzare ulteriori dettagli della pipeline, scegli una delle seguenti schede:
   + **Definizione**: il grafo della pipeline, incluse tutte le fasi.
   + **Parametri**: comprende lo stato di approvazione del modello.
   + **Dettagli**: i metadati associati alla pipeline, come i tag, il nome della risorsa Amazon (ARN) della pipeline e l’ARN del ruolo. In questa pagina puoi anche modificare la descrizione della pipeline.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Pipeline** dal menu.

1. Per limitare l’elenco delle pipeline per nome, inserisci un nome completo o parziale della pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline. Si apre la pagina **Esecuzioni** della pipeline.

1. Nell’elenco **Esecuzioni**, seleziona il nome di un’esecuzione per visualizzarne i dettagli. La scheda dei dettagli dell’esecuzione si apre mostrando un grafico delle fasi nella pipeline.

1. Per cercare una fase per nome, digita i caratteri che corrispondono al nome della fase nel campo di ricerca. Utilizza le icone di ridimensionamento nella parte inferiore destra del grafo per ingrandire e ridurre il grafo, adattarlo allo schermo e visualizzarlo a schermo intero. Per concentrarti su una parte specifica del grafo, puoi selezionare un’area vuota del grafo e trascinare il grafico al centro dell’area.   
![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/yosemite/execution-graph-w-input.png)

1. Scegli una delle fasi nel grafo per visualizzarne i dettagli. Nella schermata precedente, viene scelta una fase di addestramento e vengono visualizzate le seguenti schede:
   + **Input**: gli input dell’addestramento. Se una fonte di input proviene da Amazon Simple Storage Service (Amazon S3), seleziona il link per visualizzare il file nella console Amazon S3.
   + **Output**: i risultati dell’addestramento, come metriche, grafici, file e risultati della valutazione. I grafici vengono prodotti utilizzando il [ APIsTracker](https://sagemaker-experiments.readthedocs.io/en/latest/tracker.html#smexperiments.tracker.Tracker.log_precision_recall).
   + **Registri: i** CloudWatch log di Amazon prodotti passo dopo passo.
   + **Informazioni**: i parametri e i metadati associati alla fase.  
![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/yosemite/execution-graph-info.png)

------

# Download di un file di definizione della pipeline
<a name="pipelines-studio-download"></a>

Puoi scaricare il file di definizione per la tua pipeline SageMaker AI direttamente dall'interfaccia utente di Amazon SageMaker Studio. Puoi utilizzare questo file di definizione della pipeline per azioni di:
+ Backup e ripristino: utilizza il file scaricato per creare un backup della configurazione della pipeline, che puoi ripristinare in caso di guasti dell’infrastruttura o modifiche accidentali.
+ Controllo delle versioni: archivia il file di definizione della pipeline in un sistema di controllo dell’origine per tenere traccia delle modifiche alla pipeline e ripristinare le versioni precedenti, se necessario.
+ Interazioni programmatiche: utilizza il file di definizione della pipeline come input per l' SageMaker SDK o. AWS CLI
+ Integrazione con i processi di automazione: integra la definizione della pipeline nei CI/CD flussi di lavoro o in altri processi di automazione.

Per scaricare il file di definizione di una pipeline, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. (Facoltativo) Per filtrare l’elenco delle pipeline per nome, digita il nome completo o parziale di una pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline. Si apre la pagina **Esecuzioni** che contiene un elenco di esecuzioni della pipeline.

1. Rimani nella pagina **Esecuzioni** o scegli la pagina **Grafico**, **Informazioni** o **Parametri** a sinistra della tabella delle esecuzioni della pipeline. Puoi scaricare la definizione della pipeline da una qualsiasi di queste pagine.

1. In alto a destra nella pagina, scegli l’icona con tre puntini verticali, quindi seleziona **Scarica la definizione della pipeline (JSON)**.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Pipeline** dal menu.

1. Per limitare l’elenco delle pipeline per nome, inserisci un nome completo o parziale della pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline.

1. Seleziona la scheda **Impostazioni**.

1. Scegli **Scarica il file di definizione della pipeline**.

------

# Accesso ai dati dell’esperimento da una pipeline
<a name="pipelines-studio-experiments"></a>

**Nota**  
SageMaker Experiments è una funzionalità disponibile solo in Studio Classic.

Quando create una pipeline e specificate [pipeline\$1experiment\$1config](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.pipeline_experiment_config), Pipelines crea le seguenti entità SageMaker Experiments per impostazione predefinita, se non esistono:
+ Un esperimento per la pipeline
+ Un gruppo di esecuzioni per ogni esecuzione della pipeline
+ Un'esecuzione per ogni lavoro di intelligenza artificiale creato in una fase della pipeline SageMaker 

Per informazioni sull’integrazione degli esperimenti con le pipeline, consulta [Integrazione con Amazon SageMaker Experiments](pipelines-experiments.md). Per ulteriori informazioni sugli SageMaker esperimenti, consulta[SageMaker Esperimenti di Amazon in Studio Classic](experiments.md).

È possibile accedere all'elenco delle esecuzioni associate a una pipeline dall'elenco delle esecuzioni della pipeline o da quello degli esperimenti.

**Per visualizzare l'elenco delle esecuzioni dalla lista delle esecuzioni della pipeline**

1. Per visualizzare l’elenco delle esecuzioni della pipeline, segui le prime cinque fasi riportate nella tabella *Studio Classic* di [Visualizzazione dei dettagli di una pipeline](pipelines-studio-list.md).

1. Nella parte in alto a destra dello schermo, scegli l’icona **Filtro** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)).

1. Scegli **Esperimento**. Se l'integrazione dell'esperimento non è stata disattivata durante la creazione della pipeline, il nome dell'esperimento viene visualizzato nell'elenco delle esecuzioni. 
**Nota**  
L'integrazione degli esperimenti è stata introdotta nella versione 2.41.0 dell'SDK Amazon [Python SageMaker ](https://sagemaker.readthedocs.io/en/stable). Per impostazione predefinita, le pipeline create con una versione precedente dell'SDK non sono integrate con Esperimenti.

1. Seleziona un esperimento a scelta per visualizzare i gruppi di esecuzioni e le esecuzioni relative a quell'esperimento.

**Per visualizzare l'elenco delle esecuzioni dall'elenco degli esperimenti**

1. Nella barra laterale sinistra di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Dal menu seleziona **Esperimenti**.

1. Utilizza la barra di ricerca o l’icona **Filtro** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)) per filtrare l’elenco in base agli esperimenti creati da una pipeline.

1. Apri il nome di un esperimento e visualizza l’elenco di esecuzioni create dalla pipeline.

# Monitoraggio del lineage di una pipeline
<a name="pipelines-lineage-tracking"></a>

In questo tutorial, usi Amazon SageMaker Studio per tracciare la genealogia di una pipeline di Amazon SageMaker AI ML.

[La pipeline è stata creata dal notebook [Orchestrating Jobs with Amazon SageMaker Model Building Pipelines nel repository](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) di esempio Amazon. SageMaker GitHub ](https://github.com/awslabs/amazon-sagemaker-examples) Per informazioni dettagliate sulla creazione della pipeline, consulta [Definizione di una pipeline](define-pipeline.md).

Il tracciamento della discendenza in Studio è incentrato su un grafo aciclico orientato (DAG). Il DAG rappresenta le fasi di una pipeline. Dal DAG è possibile tracciare la discendenza da qualsiasi fase a qualsiasi altra fase. Il diagramma seguente mostra le fasi della pipeline. Queste fasi vengono visualizzate come un DAG in Studio.

![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-steps.png)


Per tracciare la genealogia di una pipeline nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

**Per tracciare la discendenza di una pipeline**

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, seleziona **Pipeline**.

1. (Facoltativo) Per filtrare l’elenco delle pipeline per nome, digita il nome completo o parziale di una pipeline nel campo di ricerca.

1. Seleziona il nome di una pipeline nella colonna **Nome** per visualizzarne i dettagli.

1. Scegli la scheda **Esecuzioni**.

1. Nella colonna **Nome** della tabella **Esecuzioni**, seleziona il nome di un’esecuzione della pipeline da visualizzare.

1. In alto a destra nella pagina **Esecuzioni**, scegli l’icona con tre puntini verticali, quindi seleziona **Scarica la definizione della pipeline (JSON)**. È possibile visualizzare il file per vedere come è stato definito il grafico della pipeline. 

1. Scegli **Modifica** per aprire Pipeline Designer.

1. Utilizzate i controlli di ridimensionamento e zoom nell’angolo in alto a destra del canvas per ingrandire e ridurre il grafo, adattarlo allo schermo o visualizzarlo a schermo intero.

1. Per visualizzare i set di dati di addestramento, convalida e test, procedi come descritto di seguito:

   1. Scegli la fase di elaborazione nel grafo della pipeline.

   1. Nella barra laterale destra, scegli la scheda **Panoramica**.

   1. Trova i percorsi Amazon S3 per i set di dati di addestramento, convalida e test nella sezione **File**.

1. Per visualizzare gli artefatti del modello, completa le seguenti fasi:

   1. Scegli la fase di addestramento nel grafo della pipeline.

   1. Nella barra laterale destra, scegli la scheda **Panoramica**.

   1. Nella sezione **File**, trova i percorsi di Amazon S3 per l’artefatto del modello.

1. Per trovare l’ARN del pacchetto di modelli, procedi come descritto di seguito:

   1. Scegli la fase Registrazione di un modello.

   1. Nella barra laterale destra, scegli la scheda **Panoramica**.

   1. Nella sezione **File**, trova l’ARN del pacchetto di modelli.

------
#### [ Studio Classic ]

**Per tracciare la discendenza di una pipeline**

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nella barra laterale sinistra di Studio, scegli l'icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Nel menu, seleziona **Pipeline**.

1. Utilizza la casella di **ricerca** per filtrare l'elenco delle pipeline.

1. Scegli la pipeline `AbalonePipeline` per visualizzare l’elenco di esecuzioni e altri dettagli sulla pipeline.

1. Seleziona l’icona **Controllo proprietà** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/gears.png)) nella barra laterale destra per aprire il riquadro **TABLE PROPERTIES**, dove puoi scegliere quali proprietà visualizzare.

1. Seleziona la scheda **Impostazioni**, quindi scegli **Scarica file di definizione della pipeline**. È possibile visualizzare il file per vedere come è stato definito il grafico della pipeline.

1. Nella scheda **Esecuzione**, seleziona la prima riga dell’elenco di esecuzioni per visualizzarne il grafo di esecuzione e altri dettagli sull’esecuzione. Ricorda che il grafico corrisponde al diagramma visualizzato all'inizio del tutorial.

   Utilizza le icone di ridimensionamento nella parte inferiore destra del grafo per ingrandire e ridurre il grafo, adattarlo allo schermo o visualizzarlo a schermo intero. Per concentrarti su una parte specifica del grafo, puoi selezionare un’area vuota del grafo e trascinare il grafico al centro dell’area. L'inserto nella parte inferiore destra del grafico mostra la tua posizione all'interno del grafico.  
![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-execution-graph.png)

1. Nella scheda **Grafico**, scegli la fase `AbaloneProcess` per visualizzarne i dettagli.

1. Trova i percorsi Amazon S3 per i set di dati di addestramento, convalida e test nella scheda **Output**, da **File**.
**Nota**  
Per visualizzare i percorsi completi, fai clic con il pulsante destro del mouse sul percorso, quindi scegli **Copia il contenuto della cella**.

   ```
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/train
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/validation
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/test
   ```

1. Scegli la fase `AbaloneTrain`.

1. Trova il percorso Amazon S3 verso l'artefatto del modello nella scheda **Output**, da **File**:

   ```
   s3://sagemaker-eu-west-1-acct-id/AbaloneTrain/pipelines-6locnsqz4bfu-AbaloneTrain-NtfEpI0Ahu/output/model.tar.gz
   ```

1. Scegli la fase `AbaloneRegisterModel`.

1. Trova l'ARN del pacchetto di modelli nella scheda **Output**, da **File**:

   ```
   arn:aws:sagemaker:eu-west-1:acct-id:model-package/abalonemodelpackagegroupname/2
   ```

------

# Orchestrazione Kubernetes
<a name="kubernetes-workflows"></a>

Puoi orchestrare i tuoi lavori di SageMaker formazione e inferenza con SageMaker AI Operators for Kubernetes e AI Components for Kubeflow Pipelines. SageMaker SageMaker AI Operators for Kubernetes facilita agli sviluppatori e ai data scientist l'utilizzo di Kubernetes per addestrare, ottimizzare e implementare modelli di machine learning (ML) nell'intelligenza artificiale. SageMaker SageMaker I componenti AI per Kubeflow Pipelines ti consentono di spostare i processi di elaborazione e formazione dei dati dal cluster Kubernetes al servizio gestito ottimizzato per l'apprendimento automatico di AI. SageMaker 

**Topics**
+ [SageMaker Operatori di intelligenza artificiale per Kubernetes](kubernetes-sagemaker-operators.md)
+ [SageMaker Componenti AI per Kubeflow Pipelines](kubernetes-sagemaker-components-for-kubeflow-pipelines.md)

# SageMaker Operatori di intelligenza artificiale per Kubernetes
<a name="kubernetes-sagemaker-operators"></a>

SageMaker Gli operatori di intelligenza artificiale per Kubernetes semplificano agli sviluppatori e ai data scientist l'utilizzo di Kubernetes per addestrare, ottimizzare e implementare modelli di machine learning (ML) nell'intelligenza artificiale. SageMaker Puoi installare questi operatori SageMaker AI sul tuo cluster Kubernetes in Amazon Elastic Kubernetes Service (Amazon EKS SageMaker ) per creare lavori di intelligenza artificiale in modo nativo utilizzando l'API Kubernetes e strumenti Kubernetes a riga di comando come. `kubectl` Questa guida mostra come configurare e utilizzare gli operatori per eseguire l'addestramento dei modelli, l'ottimizzazione degli iperparametri o l'inferenza (in tempo reale e in batch) sull'intelligenza artificiale da un cluster Kubernetes. SageMaker Le procedure e le linee guida in questo capitolo presuppongono che l'utente abbia familiarità con Kubernetes e i suoi comandi di base.

**Importante**  
[Stiamo interrompendo lo sviluppo e il supporto tecnico della versione originale di Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)  
Se attualmente utilizzi una versione `v1.2.2` o precedente di [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), ti consigliamo di migrare le tue risorse al [controller di servizio ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) per Amazon. SageMaker [Il controller di servizio ACK è una nuova generazione di SageMaker Operators for Kubernetes basata su AWS Controllers for Kubernetes (ACK).](https://aws-controllers-k8s.github.io/community/)  
Per informazioni sulle fasi di migrazione, consulta [Migrazione di risorse verso gli operatori più recenti](kubernetes-sagemaker-operators-migrate.md).  
Per le risposte alle domande frequenti sulla fine del supporto della versione originale di Operators for Kubernetes, consulta SageMaker [Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Nota**  
L'utilizzo di questi operatori non comporta costi aggiuntivi. Tutte le risorse di SageMaker intelligenza artificiale utilizzate tramite questi operatori comportano costi aggiuntivi.

## Che cos'è un operatore?
<a name="kubernetes-sagemaker-operators-overview"></a>

Un operatore Kubernetes è un controller di applicazioni che gestisce le applicazioni per conto di un utente Kubernetes. I controller del piano di controllo comprendono vari loop di controllo che ascoltano un Central State Manager (ETCD) per regolare lo stato dell'applicazione che controllano. Esempi di tali applicazioni includono [C loud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) e. `[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)` Gli operatori in genere forniscono un'astrazione di livello superiore rispetto all'API Kubernetes raw, semplificando la distribuzione e la gestione delle applicazioni da parte degli utenti. Per aggiungere nuove funzionalità a Kubernetes, gli sviluppatori possono estendere l'API Kubernetes creando una **risorsa personalizzata** che contenga la logica e i componenti specifici dell'applicazione o del dominio. Gli operatori di Kubernetes consentono agli utenti di richiamare in modo nativo queste risorse personalizzate e automatizzare i flussi di lavoro associati.

### Come funziona AWS Controllers for Kubernetes (ACK)?
<a name="kubernetes-sagemaker-operators-explained"></a>

Gli operatori SageMaker AI per Kubernetes ti consentono di gestire i lavori nell'IA dal tuo cluster Kubernetes. SageMaker L'ultima versione di SageMaker AI Operators for Kubernetes è basata su Controllers for Kubernetes (ACK). AWS ACK include un runtime comune per i controller, un generatore di codice e un set di controller AWS specifici per il servizio, uno dei quali è il controller AI. SageMaker 

Lo schema seguente illustra come funziona ACK.

![\[Spiegazione dell'operatore SageMaker AI per Kubernetes basato su ACK.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


In questo diagramma, un utente Kubernetes desidera eseguire la formazione dei modelli sull' SageMaker intelligenza artificiale dall'interno del cluster Kubernetes utilizzando l'API Kubernetes. L'utente effettua una chiamata a`kubectl apply`, passando un file che descrive una risorsa personalizzata Kubernetes che descrive il processo di formazione. SageMaker `kubectl apply`*passa questo file, chiamato manifesto, al server API Kubernetes in esecuzione nel nodo controller Kubernetes (Fase 1 nel diagramma del flusso di lavoro).* *Il server API Kubernetes riceve il manifesto con le specifiche del lavoro di SageMaker formazione e determina se l'utente dispone delle autorizzazioni per creare un tipo di risorsa personalizzata e se la risorsa personalizzata è formattata correttamente (`sageMaker.services.k8s.aws/TrainingJob`Fase 2).* Se l'utente è autorizzato e la risorsa personalizzata è valida, il server API Kubernetes scrive (fase *3*) la risorsa personalizzata nel suo datastore etcd e quindi risponde (fase *4*) all'utente informandolo che la risorsa personalizzata è stata creata. Il controller SageMaker AI, che è in esecuzione su un nodo di lavoro Kubernetes nel contesto di un normale Kubernetes Pod, riceve una notifica (Fase *5*) che è stata creata una nuova risorsa personalizzata di tipo. `sageMaker.services.k8s.aws/TrainingJob` Il controller SageMaker AI comunica quindi (Fase *6*) con l' SageMaker API, chiamando l'`CreateTrainingJob`API SageMaker AI per creare il processo di formazione in. AWS Dopo aver comunicato con l' SageMaker API, il controller SageMaker AI chiama il server dell'API Kubernetes per aggiornare (Fase *7*) lo stato della risorsa personalizzata con le informazioni ricevute dall'IA. SageMaker Il controller SageMaker AI fornisce quindi agli sviluppatori le stesse informazioni che avrebbero ricevuto utilizzando l'SDK. AWS 

### Panoramica delle autorizzazioni
<a name="kubernetes-sagemaker-operators-authentication"></a>

Gli operatori accedono alle risorse di SageMaker intelligenza artificiale per tuo conto. Il ruolo IAM che l'operatore assume per interagire con AWS le risorse è diverso dalle credenziali utilizzate per accedere al cluster Kubernetes. Il ruolo è inoltre diverso da quello che AWS assume quando si eseguono i processi di machine learning. 

La seguente immagine spiega i vari livelli di autenticazione.

![\[SageMaker Operatore AI per Kubernetes, vari livelli di autenticazione.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)


# Operatori SageMaker AI più recenti per Kubernetes
<a name="kubernetes-sagemaker-operators-ack"></a>

Questa sezione si basa sulla versione più recente di SageMaker AI Operators for Kubernetes che utilizzano Controllers for Kubernetes (ACK). AWS 

**Importante**  
Se attualmente utilizzi una versione `v1.2.2` o precedente di [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), ti consigliamo di migrare le tue risorse al [controller di servizio ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) per Amazon. SageMaker [Il controller di servizio ACK è una nuova generazione di SageMaker Operators for Kubernetes basata su AWS Controllers for Kubernetes (ACK).](https://aws-controllers-k8s.github.io/community/)  
Per informazioni sulle fasi di migrazione, consulta [Migrazione di risorse verso gli operatori più recenti](kubernetes-sagemaker-operators-migrate.md).  
Per le risposte alle domande frequenti sulla fine del supporto della versione originale di Operators for Kubernetes, consulta SageMaker [Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

L'ultima versione di [SageMaker AI Operators for Kubernetes si basa su AWS Controllers for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) [(ACK), un framework per la creazione di controller personalizzati Kubernetes](https://aws-controllers-k8s.github.io/community/ ) in cui ogni controller comunica con un'API di servizio. AWS Questi controller consentono agli utenti Kubernetes di fornire risorse AWS come database o code di messaggi utilizzando l'API Kubernetes.

Utilizza i seguenti passaggi per installare e utilizzare ACK per addestrare, ottimizzare e distribuire modelli di machine learning con Amazon SageMaker AI.

**Topics**
+ [Installa SageMaker AI Operators per Kubernetes](#kubernetes-sagemaker-operators-ack-install)
+ [Usa SageMaker AI Operators per Kubernetes](#kubernetes-sagemaker-operators-ack-use)
+ [Documentazione di riferimento](#kubernetes-sagemaker-operators-ack-reference)

## Installa SageMaker AI Operators per Kubernetes
<a name="kubernetes-sagemaker-operators-ack-install"></a>

Per configurare l'ultima versione disponibile di SageMaker AI Operators for Kubernetes, consulta la sezione *Configurazione* in [Machine Learning con il controller ACK SageMaker ](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) AI.

## Usa SageMaker AI Operators per Kubernetes
<a name="kubernetes-sagemaker-operators-ack-use"></a>

Per un tutorial su come addestrare un modello di machine learning con il controller di servizio ACK per Amazon SageMaker AI utilizzando Amazon EKS, consulta [Machine Learning with the ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

Per un esempio di [scalabilità automatica, consulta Scalare i carichi di lavoro SageMaker AI](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) con Application Auto Scaling

## Documentazione di riferimento
<a name="kubernetes-sagemaker-operators-ack-reference"></a>

Consulta anche il [controller di servizio ACK per l' GitHub archivio Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) o leggi la documentazione di [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/docs/community/overview/). 

# Vecchi operatori di intelligenza artificiale per Kubernetes SageMaker
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Questa sezione è basata sulla versione originale di [SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s) for Kubernetes.

**Importante**  
[Stiamo interrompendo lo sviluppo e il supporto tecnico della versione originale di Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)  
Se attualmente utilizzi una versione `v1.2.2` o precedente di [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), ti consigliamo di migrare le tue risorse al [controller di servizio ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) per Amazon. SageMaker [Il controller di servizio ACK è una nuova generazione di SageMaker Operators for Kubernetes basata su AWS Controllers for Kubernetes (ACK).](https://aws-controllers-k8s.github.io/community/)  
Per informazioni sulle fasi di migrazione, consulta [Migrazione di risorse verso gli operatori più recenti](kubernetes-sagemaker-operators-migrate.md).  
Per le risposte alle domande frequenti sulla fine del supporto della versione originale di Operators for Kubernetes, consulta SageMaker [Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Installa SageMaker AI Operators for Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Usa Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migrazione di risorse verso gli operatori più recenti](kubernetes-sagemaker-operators-migrate.md)
+ [Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Installa SageMaker AI Operators for Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Utilizza i seguenti passaggi per installare e utilizzare SageMaker AI Operators for Kubernetes per addestrare, ottimizzare e distribuire modelli di machine learning con Amazon AI. SageMaker 

**Topics**
+ [Configurazione basata su ruoli IAM e distribuzione dell'operatore](#iam-role-based-setup-and-operator-deployment)
+ [Eseguire la pulizia delle risorse](#cleanup-operator-resources)
+ [Eliminazione degli operatori](#delete-operators)
+ [Risoluzione dei problemi](#troubleshooting)
+ [Immagini e SMlogs in ogni regione](#images-and-smlogs-in-each-region)

### Configurazione basata su ruoli IAM e distribuzione dell'operatore
<a name="iam-role-based-setup-and-operator-deployment"></a>

Le sezioni seguenti descrivono le fasi della configurazione e della distribuzione della versione originale dell'operatore.

**avvertimento**  
**Promemoria:** i seguenti passaggi non installano la versione più recente di AI Operators for Kubernetes. SageMaker Per installare i nuovi operatori SageMaker AI basati su ACK per Kubernetes, consulta. [Operatori SageMaker AI più recenti per Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Prerequisiti
<a name="prerequisites"></a>

Questa guida presuppone che siano stati soddisfatti i prerequisiti seguenti: 
+ Installa i seguenti strumenti sul computer client utilizzato per accedere al cluster Kubernetes: 
  + [https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) Versione 1.13 o successiva. Utilizza una versione `kubectl` immediatamente precedente a quella del piano di controllo del cluster Amazon EKS. Ad esempio, un client `kubectl` 1.13 deve funzionare con cluster Kubernetes 1.13 e 1.14. OpenID Connect (OIDC) non è supportato nelle versioni precedenti alla 1.13. 
  + [https://github.com/weaveworks/eksctl](https://github.com/weaveworks/eksctl) Versione 0.7.0 o successiva 
  + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) versione 1.16.232 o successiva 
  + (opzionale) [Helm](https://helm.sh/docs/intro/install/) Versione 3.0 o successiva 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ Verifica di avere le autorizzazioni IAM per creare ruoli e collegare le policy ai ruoli.
+ Creato un cluster Kubernetes su cui eseguire gli operatori. Dovrebbe essere la versione 1.13 o 1.14 di Kubernetes. Per la creazione automatica di cluster utilizzando `eksctl`, consulta [Nozioni di base su eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). Il provisioning di un cluster richiede 20-30 minuti. 

#### Distribuzione in ambito cluster
<a name="cluster-scoped-deployment"></a>

Prima di poter distribuire il tuo operatore utilizzando un ruolo IAM, associa un provide di identità (IdP) OpenID Connect (OIDC) al tuo ruolo per l'autenticazione con il servizio IAM.

##### Per creare un provider di identità OIDC per il cluster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

Le seguenti istruzioni illustrano come creare e associare un provider OIDC al tuo cluster Amazon EKS.

1. Imposta le variabili di ambiente locali `CLUSTER_NAME` e `AWS_REGION` come segue:

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Utilizza il comando seguente per associare il provider OIDC al cluster. Per ulteriori informazioni, consulta [Abilitazione dei ruoli IAM per gli account di servizio nel cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

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

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

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Ora che il cluster dispone di un provider di identità OIDC, puoi creare un ruolo e concedere a Kubernetes l'autorizzazione ad ServiceAccount assumerlo.

##### Ottieni l'ID OIDC
<a name="get-the-oidc-id"></a>

Per configurare ServiceAccount, ottieni l'URL dell'emittente OIDC utilizzando il seguente comando:

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

Questo comando restituisce un URL simile al seguente: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

In questo URL, il valore `D48675832CA65BD10A532F597OIDCID` è l'ID OIDC. L'ID OIDC del tuo cluster è diverso. È necessario questo valore ID OIDC per creare un ruolo. 

 Se l’output è `None`, significa che il client è di una versione precedente. Per aggirare questo problema, esegui il seguente comando: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

L'URL OIDC viene restituito come segue: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Creazione di un ruolo IAM
<a name="create-an-iam-role"></a>

1. Crea un file denominato `trust.json` e inserisci il seguente blocco di codice di relazione di attendibilità al suo interno. Assicurati di sostituire tutti i placeholder `<OIDC ID>`, `<AWS account number>` e `<EKS Cluster region>` con i valori corrispondenti al tuo cluster. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Esegui il seguente comando per creare un ruolo con relazione di attendibilità definita in `trust.json`. Questo ruolo consente al cluster Amazon EKS di ottenere e aggiornare le credenziali da IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

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

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Prendi nota di `ROLE ARN`; passerai questo valore al tuo operatore. 

##### Allega la AmazonSageMakerFullAccess policy al ruolo
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Per consentire al ruolo di accedere all' SageMaker intelligenza artificiale, allega la [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)policy. Se desideri limitare le autorizzazioni all'operatore, puoi creare una policy personalizzata e collegarla. 

 Per collegare `AmazonSageMakerFullAccess`, esegui il comando seguente: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Kubernetes ServiceAccount `sagemaker-k8s-operator-default` dovrebbe avere le autorizzazioni. `AmazonSageMakerFullAccess` Confermalo mentre installi l'operatore. 

##### Distribuzione dell'operatore
<a name="deploy-the-operator"></a>

Quando si distribuisce l'operatore, è possibile utilizzare un file YAML o grafici Helm. 

##### Distribuzione dell'operatore utilizzando YAML
<a name="deploy-the-operator-using-yaml"></a>

Questo è il modo più semplice per distribuire i propri operatori. Di seguito è riportato il procedimento: 

1. Scarica lo script del programma di installazione tramite il seguente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Modifica il file `installer.yaml` per sostituire `eks.amazonaws.com/role-arn`. Sostituisci l'ARN qui con il nome della risorsa Amazon (ARN) per il ruolo basato su OIDC che hai creato. 

1. Usa il comando seguente per distribuire il cluster: 

   ```
   kubectl apply -f installer.yaml
   ```

##### Distribuisci l'operatore utilizzando i grafici Helm
<a name="deploy-the-operator-using-helm-charts"></a>

Usa il grafico Helm fornito per installare l'operatore. 

1. Clona la directory del programma di installazione Helm utilizzando il seguente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accedi alla cartella `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Modifica il file `rolebased/values.yaml`, che include i parametri di alto livello per il grafico. Sostituisci l'ARN del ruolo qui con il nome della risorsa Amazon (ARN) per il ruolo basato su OIDC che hai creato. 

1. Installare il grafico Helm utilizzando il seguente comando: 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Se decidi di installare l'operatore in uno spazio dei nomi diverso da quello specificato, devi modificare lo spazio dei nomi definito nel file `trust.json` del ruolo IAM in modo che corrispondano. 

1. Dopo un instante, il grafico viene installato con un nome generato casualmente. Verifica che l’installazione sia andata a buon fine eseguendo il comando riportato di seguito: 

   ```
   helm ls
   ```

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

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verifica la distribuzione dell'operatore
<a name="verify-the-operator-deployment"></a>

1. Dovresti essere in grado di vedere le SageMaker AI Custom Resource Definitions (CRDs) per ogni operatore distribuito nel tuo cluster eseguendo il seguente comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

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

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Assicurati che il pod dell’operatore sia in esecuzione correttamente. Utilizza il seguente comando per elencare tutti i pod: 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Dovresti vedere un pod denominato `sagemaker-k8s-operator-controller-manager-*****` nello spazio dei nomi `sagemaker-k8s-operator-system` come segue: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Distribuzione nell'ambito dello spazio dei nomi
<a name="namespace-scoped-deployment"></a>

Hai la possibilità di installare il tuo operatore nell'ambito di un singolo spazio dei nomi Kubernetes. In questa modalità, il controller monitora e riconcilia le risorse con l' SageMaker IA solo se le risorse vengono create all'interno di quel namespace. Ciò consente di effettuare un controllo più preciso su quale controller gestisce quali risorse. Ciò è utile per l'implementazione su più AWS account o per controllare quali utenti hanno accesso a determinati lavori. 

Questa guida descrive come installare un operatore in un particolare spazio dei nomi predefinito. Per distribuire un controller in un secondo spazio dei nomi, segui la guida dall'inizio alla fine e modifica lo spazio dei nomi in ogni fase. 

##### Per creare un provider di identità OIDC per il cluster Amazon EKS
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

Le seguenti istruzioni illustrano come creare e associare un provider OIDC al tuo cluster Amazon EKS. 

1. Imposta le variabili di ambiente locali `CLUSTER_NAME` e `AWS_REGION` come segue: 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Utilizza il comando seguente per associare il provider OIDC al cluster. Per ulteriori informazioni, consulta [Abilitazione dei ruoli IAM per gli account di servizio nel cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

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

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

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Ora che il cluster dispone di un provider di identità OIDC, crea un ruolo e concedi a Kubernetes ServiceAccount l'autorizzazione ad assumere il ruolo. 

##### Ottieni il tuo ID OIDC
<a name="get-your-oidc-id"></a>

Per configurare ServiceAccount, ottenete innanzitutto l'URL dell'emittente OpenID Connect utilizzando il seguente comando: 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

Questo comando restituisce un URL simile al seguente: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

In questo URL, il valore D48675832 CA65 BD10 A532F597OIDCID è l'ID OIDC. L'ID OIDC del tuo cluster è diverso. È necessario questo valore ID OIDC per creare un ruolo. 

 Se l’output è `None`, significa che il client è di una versione precedente. Per aggirare questo problema, esegui il seguente comando: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

L'URL OIDC viene restituito come segue: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Creazione del ruolo IAM
<a name="create-your-iam-role"></a>

1. Crea un file denominato `trust.json` e inserisci il seguente blocco di codice di relazione di attendibilità al suo interno. Assicurati di sostituire tutti i placeholder `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>` e `<Namespace>` con i valori corrispondenti al tuo cluster. Ai fini di questa guida, `my-namespace` viene utilizzato per il valore `<Namespace>`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Esegui il seguente comando per creare un ruolo con relazione di attendibilità definita in `trust.json`. Questo ruolo consente al cluster Amazon EKS di ottenere e aggiornare le credenziali da IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

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

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Prendi nota di `ROLE ARN`. Passerai questo valore al tuo operatore. 

##### AmazonSageMakerFullAccess Allega la politica al tuo ruolo
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Per consentire al ruolo di accedere all' SageMaker intelligenza artificiale, allega la [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)policy. Se desideri limitare le autorizzazioni all'operatore, puoi creare una policy personalizzata e collegarla. 

 Per collegare `AmazonSageMakerFullAccess`, esegui il comando seguente: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Kubernetes ServiceAccount `sagemaker-k8s-operator-default` dovrebbe avere le autorizzazioni. `AmazonSageMakerFullAccess` Confermalo mentre installi l'operatore. 

##### Distribuisci l'operatore nel tuo spazio dei nomi
<a name="deploy-the-operator-to-your-namespace"></a>

Quando si distribuisce l'operatore, è possibile utilizzare un file YAML o grafici Helm. 

##### Distribuisci l'operatore nel tuo spazio dei nomi utilizzando YAML
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

La distribuzione di un operatore nell'ambito di uno spazio dei nomi prevede due fasi. Il primo è l'insieme di CRDs quelli installati a livello di cluster. Queste definizioni di risorse devono essere installate solo una volta per cluster Kubernetes. La seconda parte riguarda le autorizzazioni dell'operatore e la distribuzione stessa. 

 Se non lo avete già installato nel cluster, applicate il programma di installazione CRD YAML usando il seguente comando: CRDs 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Per installare l'operatore nel cluster: 

1. Scarica il programma di installazione dell’operatore YALM tramite il seguente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Aggiorna il programma di installazione YAML per inserire le risorse nello spazio dei nomi specificato utilizzando il seguente comando: 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
   ```

1. Modifica il file `operator.yaml` per inserire le risorse nel tuo `eks.amazonaws.com/role-arn`. Sostituisci l'ARN qui con il nome della risorsa Amazon (ARN) per il ruolo basato su OIDC che hai creato. 

1. Usa il comando seguente per distribuire il cluster: 

   ```
   kubectl apply -f operator.yaml
   ```

##### Distribuisci l'operatore nel tuo spazio dei nomi utilizzando i grafici Helm
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

La distribuzione di un operatore nell'ambito di uno spazio dei nomi prevede due fasi necessarie. Il primo è l'insieme di CRDs quelli installati a livello di cluster. Queste definizioni di risorse devono essere installate solo una volta per cluster Kubernetes. La seconda parte riguarda le autorizzazioni dell'operatore e la distribuzione stessa. Per usare i grafici Helm devi prima creare lo spazio dei nomi usando `kubectl`. 

1. Clona la directory del programma di installazione Helm utilizzando il seguente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accedi alla cartella `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Modifica il file `rolebased/values.yaml`, che include i parametri di alto livello per il grafico. Sostituisci l'ARN del ruolo qui con il nome della risorsa Amazon (ARN) per il ruolo basato su OIDC che hai creato. 

1. Installare il grafico Helm utilizzando il seguente comando: 

   ```
   helm install crds crd_chart/
   ```

1. Crea lo spazio dei nomi richiesto e installa l'operatore utilizzando il seguente comando: 

   ```
   kubectl create namespace <namespace>
   helm install --n <namespace> op operator_chart/
   ```

1. Dopo un instante, il grafico viene installato con il nome `sagemaker-operator`. Verifica che l’installazione sia andata a buon fine eseguendo il comando riportato di seguito: 

   ```
   helm ls
   ```

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

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verifica la distribuzione dell'operatore nel tuo spazio dei nomi
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Dovresti essere in grado di vedere le SageMaker AI Custom Resource Definitions (CRDs) per ogni operatore distribuito nel tuo cluster eseguendo il seguente comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

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

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Assicurati che il pod dell’operatore sia in esecuzione correttamente. Utilizza il seguente comando per elencare tutti i pod: 

   ```
   kubectl -n my-namespace get pods
   ```

   Dovresti vedere un pod denominato `sagemaker-k8s-operator-controller-manager-*****` nello spazio dei nomi `my-namespace` come segue: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Installa il plug-in SageMaker AI logs `kubectl`
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 [Come parte di SageMaker AI Operators for Kubernetes, puoi utilizzare il plugin per. `smlogs`](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) `kubectl` Ciò consente lo SageMaker streaming CloudWatch dei log AI. `kubectl` `kubectl`[deve essere installato sul tuo PATH.](http://www.linfo.org/path_env_var.html) I seguenti comandi inseriscono il file binario nella directory `sagemaker-k8s-bin` della home directory e aggiungono tale directory a `PATH`. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Utilizza il comando seguente per verificare che il plugin `kubectl` sia installato correttamente: 

```
kubectl smlogs
```

Se il plugin `kubectl` è installato correttamente, l'output deve essere simile al seguente: 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### Eseguire la pulizia delle risorse
<a name="cleanup-operator-resources"></a>

Per disinstallare l'operatore dal cluster, devi prima assicurarti di eliminare tutte le risorse SageMaker AI dal cluster. In caso contrario, l'operazione di eliminazione dell'operatore si arresta. Esegui i comandi seguenti per arrestare tutti i processi: 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Verrà visualizzato un output simile al seguente: 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Dopo aver eliminato tutti i job SageMaker AI, consulta l'articolo [Eliminazione degli operatori](#delete-operators) per eliminare l'operatore dal cluster.

### Eliminazione degli operatori
<a name="delete-operators"></a>

#### Eliminazione degli operatori basati sul cluster
<a name="delete-cluster-based-operators"></a>

##### Operatori installati con YAML
<a name="operators-installed-using-yaml"></a>

Per disinstallare l'operatore dal cluster, assicurati che tutte le risorse SageMaker AI siano state eliminate dal cluster. In caso contrario, l'operazione di eliminazione dell'operatore si arresta.

**Nota**  
Prima di eliminare il cluster, assicurati di eliminare tutte le risorse SageMaker AI dal cluster. Per ulteriori informazioni, consulta [Eseguire la pulizia delle risorse](#cleanup-operator-resources).

Dopo aver eliminato tutti i lavori SageMaker AI, utilizza `kubectl` per eliminare l'operatore dal cluster:

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Verrà visualizzato un output simile al seguente: 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Operatori installati utilizzando grafici Helm
<a name="operators-installed-using-helm-charts"></a>

Per eliminare l'operatore CRDs, elimina prima tutti i lavori in esecuzione. Quindi, elimina il grafico Helm utilizzato per distribuire gli operatori tramite i seguenti comandi: 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete <chart_name>
```

#### Elimina gli operatori basati sullo spazio dei nomi
<a name="delete-namespace-based-operators"></a>

##### Operatori installati con YAML
<a name="operators-installed-with-yaml"></a>

Per disinstallare l'operatore dal cluster, assicurati innanzitutto che tutte le risorse SageMaker AI siano state eliminate dal cluster. In caso contrario, l'operazione di eliminazione dell'operatore si arresta.

**Nota**  
Prima di eliminare il cluster, assicurati di eliminare tutte le risorse SageMaker AI dal cluster. Per ulteriori informazioni, consulta [Eseguire la pulizia delle risorse](#cleanup-operator-resources).

Dopo aver eliminato tutti i lavori SageMaker AI, utilizza `kubectl` per eliminare prima l'operatore dallo spazio dei nomi e poi il CRDs dal cluster. Esegui i comandi seguenti per eliminare l'operatore dal cluster: 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace <namespace>
```

##### Operatori installati con grafici Helm
<a name="operators-installed-with-helm-charts"></a>

Per eliminare l'operatore CRDs, elimina prima tutti i lavori in esecuzione. Quindi, elimina il grafico Helm utilizzato per distribuire gli operatori tramite i seguenti comandi: 

```
# Delete the operator
helm delete <chart_name>
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace <namespace>
```

### Risoluzione dei problemi
<a name="troubleshooting"></a>

#### Esecuzione del debug di un processo non riuscito
<a name="debugging-a-failed-job"></a>

Completa la seguente procedura per eseguire il debug di un processo non riuscito.
+ Controlla lo stato del processo eseguendo quanto segue: 

  ```
  kubectl get <CRD Type> <job name>
  ```
+ Se il lavoro è stato creato in SageMaker AI, puoi usare il seguente comando per visualizzare il `STATUS` e il`SageMaker Job Name`: 

  ```
  kubectl get <crd type> <job name>
  ```
+ È possibile utilizzare `smlogs` per trovare la causa del problema utilizzando il seguente comando: 

  ```
  kubectl smlogs <crd type> <job name>
  ```
+  È inoltre possibile utilizzare il comando `describe` per ricevere ulteriori dettagli sul processo utilizzando il comando seguente. L'output ha un campo `additional` che contiene ulteriori informazioni sullo stato del processo. 

  ```
  kubectl describe <crd type> <job name>
  ```
+ Se il lavoro non è stato creato in SageMaker AI, utilizza i log del pod dell'operatore per trovare la causa del problema nel modo seguente: 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system
  ```

#### Eliminazione di un CRD dell'operatore
<a name="deleting-an-operator-crd"></a>

Se l'eliminazione di un processo non funziona, controlla se l'operatore è in esecuzione. Se l'operatore non è in esecuzione, è necessario eliminare il finalizzatore completando la seguente procedura: 

1. In un nuovo terminale, apri il processo in un editor usando `kubectl edit` come segue: 

   ```
   kubectl edit <crd type> <job name>
   ```

1. Modifica il processo per eliminare il finalizzatore rimuovendo le due righe seguenti dal file. Salva il file e il processo verrà eliminato. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Immagini e SMlogs in ogni regione
<a name="images-and-smlogs-in-each-region"></a>

La tabella seguente elenca le immagini dell'operatore disponibili SMLogs in ciascuna regione. 


|  Region  |  Immagine del controller  |  Linux SMLogs  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 

# Usa Amazon SageMaker AI Jobs
<a name="kubernetes-sagemaker-jobs"></a>

Questa sezione è basata sulla versione originale di [SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s) for Kubernetes.

**Importante**  
[Stiamo interrompendo lo sviluppo e il supporto tecnico della versione originale di Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)  
Se attualmente utilizzi una versione `v1.2.2` o precedente di [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), ti consigliamo di migrare le tue risorse al [controller di servizio ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) per Amazon. SageMaker [Il controller di servizio ACK è una nuova generazione di SageMaker Operators for Kubernetes basata su AWS Controllers for Kubernetes (ACK).](https://aws-controllers-k8s.github.io/community/)  
Per informazioni sulle fasi di migrazione, consulta [Migrazione di risorse verso gli operatori più recenti](kubernetes-sagemaker-operators-migrate.md).  
Per le risposte alle domande frequenti sulla fine del supporto della versione originale di Operators for Kubernetes, consulta SageMaker [Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Per eseguire un job Amazon SageMaker AI utilizzando Operators for Kubernetes, puoi applicare un file YAML o utilizzare gli Helm Charts forniti. 

Tutti i processi di esempio degli operatori nei seguenti tutorial utilizzano dati di esempio presi da un set di dati MNIST pubblico. Per eseguire tali esempi, scarica il set di dati nel bucket Amazon S3. Puoi trovare il set di dati in [Scarica il set di dati MNIST](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html). 

**Topics**
+ [TrainingJob L'operatore](#trainingjob-operator)
+ [L' HyperParameterTuningJob operatore](#hyperparametertuningjobs-operator)
+ [L' BatchTransformJob operatore](#batchtransformjobs-operator)
+ [L' HostingDeployment operatore](#hosting-deployment-operator)
+ [L'operatore ProcessingJob](#kubernetes-processing-job-operator)
+ [HostingAutoscalingPolicy (HAP) Operatore](#kubernetes-hap-operator)

## TrainingJob L'operatore
<a name="trainingjob-operator"></a>

Gli addetti alla formazione riconciliano le specifiche del lavoro di formazione specificato con l' SageMaker intelligenza artificiale lanciandola per te nell'IA. SageMaker [Puoi saperne di più sui lavori di SageMaker formazione nella documentazione dell' SageMaker API AI. CreateTrainingJob ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html) 

**Topics**
+ [Crea un file TrainingJob utilizzando un file YAML](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Crea un TrainingJob diagramma utilizzando un Helm](#create-a-trainingjob-using-a-helm-chart)
+ [Elenco TrainingJobs](#list-training-jobs)
+ [Descrivi un TrainingJob](#describe-a-training-job)
+ [Visualizza i registri da TrainingJobs](#view-logs-from-training-jobs)
+ [Elimina TrainingJobs](#delete-training-jobs)

### Crea un file TrainingJob utilizzando un file YAML
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

1. Scarica il file YAML di esempio per l’addestramento utilizzando il seguente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
   ```

1. Modifica il `xgboost-mnist-trainingjob.yaml` file per sostituire il `roleArn` parametro con il tuo `<sagemaker-execution-role>` e `outputPath` con il tuo bucket Amazon S3 a cui il ruolo di esecuzione SageMaker AI ha accesso in scrittura. `roleArn`Devono disporre delle autorizzazioni affinché l' SageMaker IA possa accedere ad Amazon S3, CloudWatch Amazon e altri servizi per tuo conto. Per ulteriori informazioni sulla creazione di un' SageMaker IA ExecutionRole, consulta [SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms) Roles. Applica il file YAML usando il comando seguente: 

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Crea un TrainingJob diagramma utilizzando un Helm
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Puoi usare Helm Charts per correre. TrainingJobs 

1. Clona il GitHub repository per ottenere il codice sorgente usando il seguente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vai alla cartella `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` e modifica il file `values.yaml` per sostituire valori come `rolearn` e `outputpath` con valori che corrispondono al tuo account. Il RoLearn deve disporre delle autorizzazioni affinché l' SageMaker IA possa accedere ad Amazon S3 CloudWatch, Amazon e altri servizi per tuo conto. [Per ulteriori informazioni sulla creazione di un' SageMaker intelligenza artificiale ExecutionRole, consulta SageMaker AI Roles.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms) 

#### Crea il TrainingJob
<a name="create-the-training-job"></a>

Dopo aver sostituito i ruoli e i bucket Amazon S3 con i valori appropriati in `values.yaml`, puoi creare un processo di addestramento utilizzando il seguente comando: 

```
helm install . --generate-name
```

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

```
NAME: chart-12345678
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-trainingjob.
```

#### Verifica il tuo grafico Helm di addestramento
<a name="verify-your-training-helm-chart"></a>

Per verificare che Helm Chart sia stato creato correttamente, esegui quanto segue: 

```
helm ls
```

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

```
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
chart-12345678        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-12345678    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` crea una risorsa `TrainingJob` Kubernetes. L'operatore avvia l'effettivo processo di formazione sull' SageMaker intelligenza artificiale e aggiorna la risorsa `TrainingJob` Kubernetes in modo che rifletta lo stato del lavoro nell'IA. SageMaker Ti verranno addebitati dei costi per le risorse di SageMaker intelligenza artificiale utilizzate durante la durata del tuo lavoro. I processi interrotti o completati non influiscono in alcun modo sulle risorse. 

**Nota**: l' SageMaker intelligenza artificiale non consente di aggiornare un lavoro di formazione in corso. Non è possibile modificare alcun parametro e riapplicare il file di configurazione. Modifica il nome dei metadati o elimina il processo esistente e creane uno nuovo. Analogamente agli operatori di formazione esistenti, come TFJob in Kubeflow, non `update` è supportato. 

### Elenco TrainingJobs
<a name="list-training-jobs"></a>

Utilizza il seguente comando per elencare tutti i processi creati utilizzando l'operatore Kubernetes: 

```
kubectl get TrainingJob
```

L'output con l’elenco di tutti i processi deve essere simile al seguente: 

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

Un processo di addestramento continua a essere elencato dopo il completamento o l'esito negativo del processo. È possibile rimuovere un `TrainingJob`processo dall'elenco seguendo le fasi [Elimina TrainingJobs](#delete-training-jobs). I lavori completati o interrotti non comportano alcun addebito per le risorse di SageMaker intelligenza artificiale. 

#### TrainingJob valori di stato
<a name="training-job-status-values"></a>

Il campo `STATUS` può corrispondere a uno dei seguenti valori: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Questi stati provengono direttamente dalla [documentazione ufficiale dell'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus) AI. 

Oltre allo status ufficiale di SageMaker IA, è possibile `STATUS` `SynchronizingK8sJobWithSageMaker` esserlo. Ciò significa che l'operatore non ha ancora elaborato il processo. 

#### Valori di stato secondari
<a name="secondary-status-values"></a>

Gli stati secondari provengono direttamente dalla [documentazione ufficiale dell'API SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus) AI. Contengono informazioni più dettagliate sullo stato del processo. 

### Descrivi un TrainingJob
<a name="describe-a-training-job"></a>

È possibile ricevere maggiori dettagli sul processo di addestramento utilizzando il comando `describe` `kubectl`. Viene in genere utilizzato per il debug di un problema o il controllo dei parametri di un processo di addestramento. Per ottenere informazioni sul processo di addestramento, usa il comando seguente: 

```
kubectl describe trainingjob xgboost-mnist-from-for-s3
```

L'output per il processo di addestramento deve essere simile al seguente: 

```
Name:         xgboost-mnist-from-for-s3
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  sagemaker.aws.amazon.com/v1
Kind:         TrainingJob
Metadata:
  Creation Timestamp:  2019-11-20T23:42:35Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  23119
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3
  UID:               6d7uiui-0bef-11ea-b94e-0ed467example
Spec:
  Algorithm Specification:
    Training Image:       8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
    Training Input Mode:  File
  Hyper Parameters:
    Name:   eta
    Value:  0.2
    Name:   gamma
    Value:  4
    Name:   max_depth
    Value:  5
    Name:   min_child_weight
    Value:  6
    Name:   num_class
    Value:  10
    Name:   num_round
    Value:  10
    Name:   objective
    Value:  multi:softmax
    Name:   silent
    Value:  0
  Input Data Config:
    Channel Name:      train
    Compression Type:  None
    Content Type:      text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
    Channel Name:                    validation
    Compression Type:                None
    Content Type:                    text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
  Output Data Config:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/
  Region:             us-east-2
  Resource Config:
    Instance Count:     1
    Instance Type:      ml.m4.xlarge
    Volume Size In GB:  5
  Role Arn:             arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole
  Stopping Condition:
    Max Runtime In Seconds:  86400
  Training Job Name:         xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example
Status:
  Cloud Watch Log URL:           https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix
  Last Check Time:               2019-11-20T23:44:29Z
  Sage Maker Training Job Name:  xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample
  Secondary Status:              Downloading
  Training Job Status:           InProgress
Events:                          <none>
```

### Visualizza i registri da TrainingJobs
<a name="view-logs-from-training-jobs"></a>

Utilizza il seguente comando per visualizzare i registri del processo di addestramento `kmeans-mnist`: 

```
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
```

L'aspetto dell'output sarà simile al seguente. I log delle istanze sono disposti in ordine cronologico. 

```
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting"
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training.
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ','
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
```

### Elimina TrainingJobs
<a name="delete-training-jobs"></a>

Utilizza il seguente comando per interrompere un processo di formazione su Amazon SageMaker AI: 

```
kubectl delete trainingjob xgboost-mnist-from-for-s3
```

Questo comando rimuove il processo SageMaker di formazione da Kubernetes. Questo comando restituisce il seguente output: 

```
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
```

Se il processo è ancora in corso sull' SageMaker intelligenza artificiale, il processo si interrompe. Non è previsto alcun addebito per le risorse di SageMaker intelligenza artificiale dopo l'interruzione o il completamento del lavoro. 

**Nota**: l' SageMaker IA non elimina i lavori di formazione. I lavori interrotti continuano a essere visualizzati sulla console SageMaker AI. Il `delete` comando impiega circa 2 minuti per ripulire le risorse dall' SageMaker IA. 

## L' HyperParameterTuningJob operatore
<a name="hyperparametertuningjobs-operator"></a>

Gli operatori del processo di ottimizzazione degli iperparametri riconciliano le specifiche del lavoro di ottimizzazione degli iperparametri specificato con l'intelligenza artificiale avviandola nell'IA. SageMaker SageMaker [Puoi saperne di più sui lavori di ottimizzazione degli iperparametri AI nella documentazione SageMaker dell'API AI. SageMaker CreateHyperParameterTuningJob ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html) 

**Topics**
+ [Crea un file HyperparameterTuningJob utilizzando un file YAML](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Crea un grafico HyperparameterTuningJob utilizzando un Helm Chart](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [Elenco HyperparameterTuningJobs](#list-hyperparameter-tuning-jobs)
+ [Descrivi un HyperparameterTuningJob](#describe-a-hyperparameter-tuning-job)
+ [Visualizza i log da HyperparameterTuningJobs](#view-logs-from-hyperparametertuning-jobs)
+ [Eliminare un HyperparameterTuningJob](#delete-hyperparametertuning-jobs)

### Crea un file HyperparameterTuningJob utilizzando un file YAML
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

1. Scarica il file YAML di esempio per il processo di ottimizzazione degli iperparametri utilizzando il seguente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
   ```

1. Modifica il file `xgboost-mnist-hpo.yaml` per sostituire il parametro `roleArn` con il tuo `sagemaker-execution-role`. Affinché il processo di ottimizzazione degli iperparametri abbia esito positivo, devi anche modificare `s3InputPath` e `s3OutputPath` con valori che corrispondano al tuo account. Applica il file YAML degli aggiornamenti usando il comando seguente: 

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Crea un grafico HyperparameterTuningJob utilizzando un Helm Chart
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

È possibile utilizzare i grafici Helm per eseguire processi di ottimizzazione degli iperparametri. 

1. Clona il GitHub repository per ottenere il codice sorgente usando il seguente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accedi alla cartella `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/`. 

1. Modifica il file `values.yaml` per sostituire il parametro `roleArn` con il tuo `sagemaker-execution-role`. Affinché il processo di ottimizzazione degli iperparametri abbia esito positivo, devi anche modificare `s3InputPath` e `s3OutputPath` con valori che corrispondano al tuo account. 

#### Crea il HyperparameterTuningJob
<a name="create-the-hpo-job"></a>

Dopo aver sostituito i ruoli e i percorsi Amazon S3 con i valori appropriati in `values.yaml`, puoi creare un processo di ottimizzazione degli iperparametri utilizzando il seguente comando: 

```
helm install . --generate-name
```

L'aspetto dell'output sarà simile al seguente: 

```
NAME: chart-1574292948
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
```

#### Verifica dell'installazione del grafico
<a name="verify-chart-installation"></a>

Per verificare che Helm Chart sia stato creato correttamente, esegui il comando seguente: 

```
helm ls
```

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

```
NAME                    NAMESPACE       REVISION        UPDATED
chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0                               STATUS          CHART                           APP VERSION
chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` crea una risorsa `HyperParameterTuningJob` Kubernetes. L'operatore avvia l'effettivo processo di ottimizzazione degli iperparametri nell' SageMaker intelligenza artificiale e aggiorna la risorsa `HyperParameterTuningJob` Kubernetes in modo che rifletta lo stato del lavoro nell'IA. SageMaker Ti verranno addebitati dei costi per le risorse di SageMaker intelligenza artificiale utilizzate durante la durata del tuo lavoro. I processi interrotti o completati non influiscono in alcun modo sulle risorse. 

**Nota**: l' SageMaker intelligenza artificiale non consente di aggiornare un processo di ottimizzazione iperparametrica in esecuzione. Non è possibile modificare alcun parametro e riapplicare il file di configurazione. È necessario modificare il nome dei metadati o eliminare il processo esistente e crearne uno nuovo. Analogamente agli operatori di addestramento esistenti, come `TFJob` in Kubeflow, `update` non è supportato. 

### Elenco HyperparameterTuningJobs
<a name="list-hyperparameter-tuning-jobs"></a>

Utilizza il seguente comando per elencare tutti i processi creati utilizzando l'operatore Kubernetes: 

```
kubectl get hyperparametertuningjob
```

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

```
NAME         STATUS      CREATION-TIME          COMPLETED   INPROGRESS   ERRORS   STOPPED   BEST-TRAINING-JOB                               SAGEMAKER-JOB-NAME
xgboost-mnist-hpo   Completed   2019-10-17T01:15:52Z   10          0            0        0         xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123   xgboostha92f5e3cf07b11e9bf6c123
```

Un processo di ottimizzazione degli iperparametri continua a essere elencato dopo il completamento o l'esito negativo del processo. È possibile rimuovere un file `hyperparametertuningjob` dall'elenco seguendo le fasi in [Eliminare un HyperparameterTuningJob](#delete-hyperparametertuning-jobs). I lavori completati o interrotti non comportano alcun addebito per le risorse di SageMaker intelligenza artificiale.

#### Valori dello stato del processo di ottimizzazione degli iperparametri
<a name="hyperparameter-tuning-job-status-values"></a>

Il campo `STATUS` può corrispondere a uno dei seguenti valori: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

[Questi stati provengono direttamente dalla documentazione ufficiale dell' SageMaker API AI.](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) 

Oltre allo status ufficiale di SageMaker IA, è possibile `STATUS` `SynchronizingK8sJobWithSageMaker` esserlo. Ciò significa che l'operatore non ha ancora elaborato il processo. 

#### Contatori di stato
<a name="status-counters"></a>

L’output ha vari contatori, come `COMPLETED` e `INPROGRESS`. Questi rappresentano rispettivamente quanti processi di addestramento sono stati completati e sono in corso. Per ulteriori informazioni su come vengono determinati, [TrainingJobStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)consulta la documentazione dell' SageMaker API. 

#### Migliore TrainingJob
<a name="best-training-job"></a>

Questa colonna contiene il nome di `TrainingJob` che meglio ha ottimizzato la metrica selezionata. 

Per visualizzare un riepilogo degli iperparametri ottimizzati, esegui: 

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Per visualizzare informazioni dettagliate su `TrainingJob`, esegui: 

```
kubectl describe trainingjobs <job name>
```

#### Generato TrainingJobs
<a name="spawned-training-jobs"></a>

Puoi anche tracciare tutti i 10 processi di addestramento in Kubernetes avviati da `HyperparameterTuningJob` eseguendo il seguente comando: 

```
kubectl get trainingjobs
```

### Descrivi un HyperparameterTuningJob
<a name="describe-a-hyperparameter-tuning-job"></a>

È possibile consultare i dettagli di debug utilizzando il comando `describe` `kubectl`.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Oltre alle informazioni sul processo di ottimizzazione, SageMaker AI Operator for Kubernetes presenta nell'output anche il [miglior processo di formazione trovato dal processo](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job) di ottimizzazione degli iperparametri, come segue: `describe` 

```
Name:         xgboost-mnist-hpo
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HyperparameterTuningJob
Metadata:
  Creation Timestamp:  2019-10-17T01:15:52Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  8167
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo
  UID:               a92f5e3c-f07b-11e9-bf6c-06d6f303uidu
Spec:
  Hyper Parameter Tuning Job Config:
    Hyper Parameter Tuning Job Objective:
      Metric Name:  validation:error
      Type:         Minimize
    Parameter Ranges:
      Integer Parameter Ranges:
        Max Value:     20
        Min Value:     10
        Name:          num_round
        Scaling Type:  Linear
    Resource Limits:
      Max Number Of Training Jobs:     10
      Max Parallel Training Jobs:      10
    Strategy:                          Bayesian
    Training Job Early Stopping Type:  Off
  Hyper Parameter Tuning Job Name:     xgboostha92f5e3cf07b11e9bf6c06d6
  Region:                              us-east-2
  Training Job Definition:
    Algorithm Specification:
      Training Image:       12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
      Training Input Mode:  File
    Input Data Config:
      Channel Name:  train
      Content Type:  text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
      Channel Name:                validation
      Content Type:                text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
    Output Data Config:
      s3OutputPath:  https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost
    Resource Config:
      Instance Count:     1
      Instance Type:      ml.m4.xlarge
      Volume Size In GB:  5
    Role Arn:             arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Static Hyper Parameters:
      Name:   base_score
      Value:  0.5
      Name:   booster
      Value:  gbtree
      Name:   csv_weights
      Value:  0
      Name:   dsplit
      Value:  row
      Name:   grow_policy
      Value:  depthwise
      Name:   lambda_bias
      Value:  0.0
      Name:   max_bin
      Value:  256
      Name:   max_leaves
      Value:  0
      Name:   normalize_type
      Value:  tree
      Name:   objective
      Value:  reg:linear
      Name:   one_drop
      Value:  0
      Name:   prob_buffer_row
      Value:  1.0
      Name:   process_type
      Value:  default
      Name:   rate_drop
      Value:  0.0
      Name:   refresh_leaf
      Value:  1
      Name:   sample_type
      Value:  uniform
      Name:   scale_pos_weight
      Value:  1.0
      Name:   silent
      Value:  0
      Name:   sketch_eps
      Value:  0.03
      Name:   skip_drop
      Value:  0.0
      Name:   tree_method
      Value:  auto
      Name:   tweedie_variance_power
      Value:  1.5
    Stopping Condition:
      Max Runtime In Seconds:  86400
Status:
  Best Training Job:
    Creation Time:  2019-10-17T01:16:14Z
    Final Hyper Parameter Tuning Job Objective Metric:
      Metric Name:        validation:error
      Value:
    Objective Status:     Succeeded
    Training End Time:    2019-10-17T01:20:24Z
    Training Job Arn:     arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample
    Training Job Name:    xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059
    Training Job Status:  Completed
    Training Start Time:  2019-10-17T01:18:35Z
    Tuned Hyper Parameters:
      Name:                                    num_round
      Value:                                   18
  Hyper Parameter Tuning Job Status:           Completed
  Last Check Time:                             2019-10-17T01:21:01Z
  Sage Maker Hyper Parameter Tuning Job Name:  xgboostha92f5e3cf07b11e9bf6c06d6
  Training Job Status Counters:
    Completed:            10
    In Progress:          0
    Non Retryable Error:  0
    Retryable Error:      0
    Stopped:              0
    Total Error:          0
Events:                   <none>
```

### Visualizza i log da HyperparameterTuningJobs
<a name="view-logs-from-hyperparametertuning-jobs"></a>

I processi di ottimizzazione degli iperparametri non dispongono di log, ma tutti i processi di addestramento da essi avviati li contengono. È possibile accedere a questi log come se si trattasse di un normale processo di addestramento. Per ulteriori informazioni, consulta [Visualizza i registri da TrainingJobs](#view-logs-from-training-jobs).

### Eliminare un HyperparameterTuningJob
<a name="delete-hyperparametertuning-jobs"></a>

Usa il seguente comando per interrompere un lavoro iperparametrico in SageMaker AI. 

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

Questo comando rimuove il processo di ottimizzazione degli iperparametri e i lavori di formazione associati dal cluster Kubernetes e li interrompe nell'IA. SageMaker I lavori interrotti o completati non comportano alcun addebito per le risorse AI. SageMaker SageMaker L'intelligenza artificiale non elimina i lavori di ottimizzazione degli iperparametri. I lavori interrotti continuano a essere visualizzati sulla console SageMaker AI. 

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

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

**Nota**: il comando delete impiega circa 2 minuti per ripulire le risorse dall' SageMaker IA. 

## L' BatchTransformJob operatore
<a name="batchtransformjobs-operator"></a>

Gli operatori del processo di trasformazione in batch riconciliano le specifiche del lavoro di trasformazione in batch specificato con l' SageMaker intelligenza artificiale lanciandola nell'IA. SageMaker [Puoi saperne di più sul processo di trasformazione in batch SageMaker AI nella documentazione dell' SageMaker API AI. CreateTransformJob ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html) 

**Topics**
+ [Crea un file BatchTransformJob utilizzando un file YAML](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Crea un grafico BatchTransformJob utilizzando un Helm Chart](#create-a-batchtransformjob-using-a-helm-chart)
+ [Elenco BatchTransformJobs](#list-batch-transform-jobs)
+ [Descrivi un BatchTransformJob](#describe-a-batch-transform-job)
+ [Visualizza i registri da BatchTransformJobs](#view-logs-from-batch-transform-jobs)
+ [Eliminare un BatchTransformJob](#delete-a-batch-transform-job)

### Crea un file BatchTransformJob utilizzando un file YAML
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

1. Scarica il file YAML di esempio per il processo di trasformazione in batch utilizzando il seguente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
   ```

1. Modifica il file `xgboost-mnist-batchtransform.yaml` per modificare i parametri necessari per sostituirlo `inputdataconfig` con i tuoi dati di input e `s3OutputPath` con i bucket Amazon S3 a cui il ruolo di esecuzione SageMaker AI ha accesso in scrittura. 

1. Applica il file YAML usando il comando seguente: 

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Crea un grafico BatchTransformJob utilizzando un Helm Chart
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

È possibile utilizzare Helm Chart per eseguire processi di trasformazione in batch. 

#### Ottenimento della directory del programma di installazione Helm
<a name="get-the-helm-installer-directory"></a>

Clona il GitHub repository per ottenere il codice sorgente usando il seguente comando: 

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Configurazione di Helm Chart
<a name="configure-the-helm-chart"></a>

Accedi alla cartella `amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/`. 

Modifica il `values.yaml` file per sostituirlo `inputdataconfig` con i tuoi dati di input e OutputPath con i bucket S3 a cui il ruolo di esecuzione SageMaker AI ha accesso in scrittura. 

#### Crea un BatchTransformJob
<a name="create-a-batch-transform-job"></a>

1. Per creare un processo di trasformazione in batch, utilizza il comando seguente: 

   ```
   helm install . --generate-name
   ```

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

   ```
   NAME: chart-1574292948
   LAST DEPLOYED: Wed Nov 20 23:35:49 2019
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   NOTES:
   Thanks for installing the sagemaker-k8s-batch-transform-job.
   ```

1. Per verificare che Helm Chart sia stato creato correttamente, esegui il comando seguente: 

   ```
   helm ls
   NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-batchtransformjob-0.1.0
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0
   chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
   rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

   Questo comando crea una risorsa `BatchTransformJob` Kubernetes. L'operatore avvia l'effettivo processo di trasformazione in SageMaker AI e aggiorna la risorsa `BatchTransformJob` Kubernetes in modo che rifletta lo stato del lavoro nell'IA. SageMaker Ti verranno addebitati dei costi per le risorse di SageMaker intelligenza artificiale utilizzate durante la durata del tuo lavoro. I processi interrotti o completati non influiscono in alcun modo sulle risorse. 

**Nota**: l' SageMaker intelligenza artificiale non consente di aggiornare un processo di trasformazione in batch in esecuzione. Non è possibile modificare alcun parametro e riapplicare il file di configurazione. È necessario modificare il nome dei metadati o eliminare il processo esistente e crearne uno nuovo. Analogamente agli operatori di addestramento esistenti, come `TFJob` in Kubeflow, `update` non è supportato. 

### Elenco BatchTransformJobs
<a name="list-batch-transform-jobs"></a>

Utilizza il seguente comando per elencare tutti i processi creati utilizzando l'operatore Kubernetes: 

```
kubectl get batchtransformjob
```

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

```
NAME                                STATUS      CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-batch-transform       Completed   2019-11-18T03:44:00Z   xgboost-mnist-a88fb19809b511eaac440aa8axgboost
```

Un processo di trasformazione in batch continua a essere elencato dopo il completamento o l'esito negativo del processo. È possibile rimuovere un file `hyperparametertuningjob` dall'elenco seguendo le fasi [Eliminare un BatchTransformJob](#delete-a-batch-transform-job). I lavori completati o interrotti non comportano alcun addebito per le risorse di SageMaker intelligenza artificiale. 

#### Valori dello stato di trasformazione in batch
<a name="batch-transform-status-values"></a>

Il campo `STATUS` può corrispondere a uno dei seguenti valori: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

[Questi stati provengono direttamente dalla documentazione ufficiale dell' SageMaker API AI.](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) 

Oltre allo status ufficiale di SageMaker IA, è possibile `STATUS` `SynchronizingK8sJobWithSageMaker` esserlo. Ciò significa che l'operatore non ha ancora elaborato il processo.

### Descrivi un BatchTransformJob
<a name="describe-a-batch-transform-job"></a>

È possibile consultare i dettagli di debug utilizzando il comando `describe` `kubectl`.

```
kubectl describe batchtransformjob xgboost-mnist-batch-transform
```

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

```
Name:         xgboost-mnist-batch-transform
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         BatchTransformJob
Metadata:
  Creation Timestamp:  2019-11-18T03:44:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21990924
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist
  UID:               a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM
Spec:
  Model Name:  TrainingJob-20190814SMJOb-IKEB
  Region:      us-east-1
  Transform Input:
    Content Type:  text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Type:  S3Prefix
        S 3 Uri:        s3://amzn-s3-demo-bucket/mnist_kmeans_example/input
  Transform Job Name:   xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB
  Transform Output:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/mnist_kmeans_example/output
  Transform Resources:
    Instance Count:  1
    Instance Type:   ml.m4.xlarge
Status:
  Last Check Time:                2019-11-19T22:50:40Z
  Sage Maker Transform Job Name:  xgboost-mnist-a88fb19809b511eaac440aaSMJOB
  Transform Job Status:           Completed
Events:                           <none>
```

### Visualizza i registri da BatchTransformJobs
<a name="view-logs-from-batch-transform-jobs"></a>

Utilizza il seguente comando per visualizzare i registri del processo di trasformazione in batch `xgboost-mnist`: 

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### Eliminare un BatchTransformJob
<a name="delete-a-batch-transform-job"></a>

Usa il seguente comando per interrompere un processo di trasformazione in batch in SageMaker AI. 

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

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

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

Questo comando rimuove il processo di trasformazione in batch dal cluster Kubernetes e lo interrompe nell'IA. SageMaker I lavori interrotti o completati non comportano alcun addebito per le risorse AI. SageMaker L'eliminazione richiede circa 2 minuti per ripulire le risorse dall' SageMaker IA. 

**Nota**: l' SageMaker intelligenza artificiale non elimina i lavori di trasformazione in batch. I lavori interrotti continuano a essere visualizzati sulla console SageMaker AI. 

## L' HostingDeployment operatore
<a name="hosting-deployment-operator"></a>

HostingDeployment gli operatori supportano la creazione e l'eliminazione di un endpoint, nonché l'aggiornamento di un endpoint esistente, per l'inferenza in tempo reale. L'operatore di distribuzione dell'hosting riconcilia le specifiche del lavoro di distribuzione di hosting specificato con l'intelligenza artificiale creando modelli, configurazioni di endpoint ed endpoint nell' SageMaker intelligenza artificiale. SageMaker [Puoi saperne di più sull' SageMaker inferenza dell'IA nella documentazione dell'API AI. SageMaker CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html) 

**Topics**
+ [Configura una risorsa HostingDeployment](#configure-a-hostingdeployment-resource)
+ [Crea un HostingDeployment](#create-a-hostingdeployment)
+ [Elenco HostingDeployments](#list-hostingdeployments)
+ [Descrivi un HostingDeployment](#describe-a-hostingdeployment)
+ [Richiamo dell'endpoint](#invoking-the-endpoint)
+ [Aggiorna HostingDeployment](#update-hostingdeployment)
+ [Elimina il HostingDeployment](#delete-the-hostingdeployment)

### Configura una risorsa HostingDeployment
<a name="configure-a-hostingdeployment-resource"></a>

Scarica il file YAML di esempio per il processo di implementazione in hosting utilizzando il seguente comando: 

```
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
```

Il file `xgboost-mnist-hostingdeployment.yaml` contiene i seguenti componenti, che possono essere modificati in base alle esigenze: 
+ *ProductionVariants*. Una variante di produzione è un insieme di istanze che servono un singolo modello. SageMaker L'IA bilancia il carico tra tutte le varianti di produzione in base ai pesi impostati. 
+ *Modelli*. Un modello è costituito dai container e dal ruolo di esecuzione ARN necessario per servire un modello. Richiede almeno un singolo container. 
+ *Container*. Un container specifica il set di dati e l'immagine di servizio. Se utilizzi un algoritmo personalizzato anziché un algoritmo fornito dall' SageMaker IA, il codice di inferenza deve soddisfare i requisiti dell'IA. SageMaker Per ulteriori informazioni, consulta [Using Your Own Algorithms with SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html). 

### Crea un HostingDeployment
<a name="create-a-hostingdeployment"></a>

Per creare un HostingDeployment, usa `kubectl` per applicare il file `hosting.yaml` con il seguente comando: 

```
kubectl apply -f hosting.yaml
```

SageMaker L'IA crea un endpoint con la configurazione specificata. Sono previsti costi per le risorse di SageMaker intelligenza artificiale utilizzate durante il ciclo di vita dell'endpoint. L’eliminazione dell'endpoint non influisce in alcun modo sulle risorse. 

La procedura di creazione richiede circa 10 minuti. 

### Elenco HostingDeployments
<a name="list-hostingdeployments"></a>

Per verificare che sia HostingDeployment stato creato, utilizzare il seguente comando: 

```
kubectl get hostingdeployments
```

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

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### HostingDeployment valori di stato
<a name="hostingdeployment-status-values"></a>

Il campo di stato può avere uno dei seguenti valori: 
+ `SynchronizingK8sJobWithSageMaker`: l'operatore si sta preparando a creare l'endpoint. 
+ `ReconcilingEndpoint`: l'operatore sta creando, aggiornando o eliminando le risorse dell'endpoint. Se HostingDeployment rimane in questo stato, usa `kubectl describe` per vedere il motivo nel `Additional` campo. 
+ `OutOfService`: l'endpoint non è disponibile per accettare le richieste in arrivo. 
+ `Creating`: [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)è in esecuzione. 
+ `Updating`: [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)o [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)è in esecuzione. 
+ `SystemUpdating`: l'endpoint è in fase di manutenzione e non può essere aggiornato, eliminato o ridimensionato fino al suo completamento. Questa operazione di manutenzione non modifica i valori specificati dal cliente come la configurazione del VPC, la AWS KMS crittografia, il modello, il tipo di istanza o il numero di istanze. 
+ `RollingBack`: l'endpoint non è in grado di aumentare o ridurre il peso della variante o di modificare il peso della variante ed è in procinto di ripristinare la configurazione precedente. Una volta completato il ripristino, l'endpoint torna allo stato `InService`. Questo stato transitorio si applica solo a un endpoint con scalabilità automatica attivata e che sta subendo variazioni di peso o capacità delle varianti nell'ambito di una chiamata o quando l'operazione viene richiamata in modo esplicito. [UpdateEndpointWeightsAndCapacities[UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html) 
+ `InService`: l'endpoint è disponibile per elaborare le richieste in arrivo. 
+ `Deleting`[DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html): è in esecuzione. 
+ `Failed`: l'endpoint non può essere creato, aggiornato o ridimensionato. Usa [DescribeEndpoint: FailureReason](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason) per informazioni sull'errore. [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)è l'unica operazione che può essere eseguita su un endpoint guasto. 

### Descrivi un HostingDeployment
<a name="describe-a-hostingdeployment"></a>

È possibile consultare i dettagli di debug utilizzando il comando `describe` `kubectl`.

```
kubectl describe hostingdeployment
```

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

```
Name:         host-xgboost
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..."
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HostingDeployment
Metadata:
  Creation Timestamp:  2019-11-22T19:40:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        1
  Resource Version:  4258134
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost
  UID:               def0e83e-0d5f-11ea-aa45-0a3507uiduid
Spec:
  Containers:
    Container Hostname:  xgboost
    Image:               123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
    Model Data URL:      s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
  Models:
    Containers:
      xgboost
    Execution Role Arn:  arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Name:                xgboost-model
    Primary Container:   xgboost
  Production Variants:
    Initial Instance Count:  1
    Instance Type:           ml.c5.large
    Model Name:              xgboost-model
    Variant Name:            all-traffic
  Region:                    us-east-2
Status:
  Creation Time:         2019-11-22T19:40:04Z
  Endpoint Arn:          arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample
  Endpoint Config Name:  host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample
  Endpoint Name:         host-xgboost-def0e83e0d5f11eaaa450a350733ba06
  Endpoint Status:       Creating
  Endpoint URL:          https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations
  Last Check Time:       2019-11-22T19:43:57Z
  Last Modified Time:    2019-11-22T19:40:04Z
  Model Names:
    Name:   xgboost-model
    Value:  xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample
Events:     <none>
```

Il campo di stato fornisce ulteriori informazioni utilizzando i seguenti campi: 
+ `Additional`: ulteriori informazioni sullo stato dell’implementazione in hosting. Questo campo è facoltativo e viene compilato solo in caso di errore. 
+ `Creation Time`: Quando l'endpoint è stato creato in SageMaker AI. 
+ `Endpoint ARN`: L'ARN dell'endpoint SageMaker AI. 
+ `Endpoint Config Name`: il nome SageMaker AI della configurazione dell'endpoint. 
+ `Endpoint Name`: il nome SageMaker AI dell'endpoint. 
+ `Endpoint Status`: lo stato dell'endpoint. 
+ `Endpoint URL`: l'URL HTTPS che può essere utilizzato per accedere all'endpoint. Per ulteriori informazioni, consulta [Implementare un modello sui servizi di hosting SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html). 
+ `FailureReason`: se un comando di creazione, aggiornamento o eliminazione non riesce, la causa viene mostrata di seguito. 
+ `Last Check Time`: l'ultima volta in cui l'operatore ha verificato lo stato dell'endpoint. 
+ `Last Modified Time`: l'ultima volta in cui l'endpoint è stato modificato. 
+ `Model Names`: coppia chiave-valore di nomi di HostingDeployment modelli per nomi di modelli SageMaker AI. 

### Richiamo dell'endpoint
<a name="invoking-the-endpoint"></a>

Una volta raggiunto lo stato dell'endpoint`InService`, puoi richiamarlo in due modi: utilizzando la AWS CLI, che esegue l'autenticazione e la firma delle richieste URL, o utilizzando un client HTTP come cURL. Se utilizzi il tuo client, devi eseguire autonomamente la firma e l'autenticazione degli URL AWS v4. 

Per richiamare l'endpoint utilizzando la AWS CLI, esegui il comando seguente. Assicurati di sostituire la regione e il nome dell'endpoint con la regione e il nome dell'endpoint AI del tuo endpoint. SageMaker Queste informazioni possono essere ottenute dall'output di `kubectl describe`. 

```
# Invoke the endpoint with mock input data.
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name <endpoint name> \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
```

Ad esempio, se la Regione è `us-east-2` e il nome di configurazione dell'endpoint è `host-xgboost-f56b6b280d7511ea824b129926example`, il comando seguente richiamerà l'endpoint: 

```
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
4.95847082138
```

Di seguito si riporta la previsione `4.95847082138` tratta dal modello per i dati fittizi. 

### Aggiorna HostingDeployment
<a name="update-hostingdeployment"></a>

1. Una volta HostingDeployment che a ha uno stato di`InService`, può essere aggiornato. Potrebbero essere necessari circa 10 minuti HostingDeployment per essere in servizio. Utilizza il seguente comando per verificare che lo stato sia `InService`: 

   ```
   kubectl get hostingdeployments
   ```

1.  HostingDeployment Può essere aggiornato prima che lo stato sia`InService`. L'operatore attende l'arrivo dell'endpoint SageMaker AI `InService` prima di applicare l'aggiornamento. 

   Per applicare un aggiornamento, modifica il file `hosting.yaml`. Ad esempio, modifica il campo `initialInstanceCount` da 1 a 2 come segue: 

   ```
   apiVersion: sagemaker.aws.amazon.com/v1
   kind: HostingDeployment
   metadata:
     name: host-xgboost
   spec:
       region: us-east-2
       productionVariants:
           - variantName: all-traffic
             modelName: xgboost-model
             initialInstanceCount: 2
             instanceType: ml.c5.large
       models:
           - name: xgboost-model
             executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
             primaryContainer: xgboost
             containers:
               - xgboost
       containers:
           - containerHostname: xgboost
             modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. Salva il file, quindi usa `kubectl` per applicare l'aggiornamento come segue. Dovresti vedere lo stato cambiare da `InService` a `ReconcilingEndpoint`, quindi `Updating`. 

   ```
   $ kubectl apply -f hosting.yaml
   hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured
   
   $ kubectl get hostingdeployments
   NAME           STATUS                SAGEMAKER-ENDPOINT-NAME
   host-xgboost   ReconcilingEndpoint   host-xgboost-def0e83e0d5f11eaaa450a350abcdef
   
   $ kubectl get hostingdeployments
   NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
   host-xgboost   Updating   host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
   ```

SageMaker L'intelligenza artificiale implementa un nuovo set di istanze con i tuoi modelli, modifica il traffico per utilizzare le nuove istanze e prosciuga le vecchie istanze. Non appena questo processo inizia, lo stato diventa `Updating`. Una volta completato l'aggiornamento, l'endpoint diventa `InService`. La procedura richiede circa 10 minuti. 

### Elimina il HostingDeployment
<a name="delete-the-hostingdeployment"></a>

1. Usa `kubectl` per eliminare un HostingDeployment con il seguente comando: 

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

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

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. Per verificare che l’implementazione in hosting sia stata eliminata, utilizza il seguente comando: 

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

Gli endpoint che sono stati eliminati non comportano alcun addebito per SageMaker le risorse AI. 

## L'operatore ProcessingJob
<a name="kubernetes-processing-job-operator"></a>

ProcessingJob gli operatori vengono utilizzati per avviare i processi di SageMaker elaborazione di Amazon. Per ulteriori informazioni sui SageMaker processi di elaborazione, consulta [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html). 

**Topics**
+ [Creare un file ProcessingJob utilizzando un file YAML](#kubernetes-processing-job-yaml)
+ [Elenco ProcessingJobs](#kubernetes-processing-job-list)
+ [Descrivi un ProcessingJob](#kubernetes-processing-job-description)
+ [Eliminare un ProcessingJob](#kubernetes-processing-job-delete)

### Creare un file ProcessingJob utilizzando un file YAML
<a name="kubernetes-processing-job-yaml"></a>

Segui questi passaggi per creare un processo di SageMaker elaborazione Amazon utilizzando un file YAML:

1. Scarica lo script `kmeans_preprocessing.py` di pre-elaborazione.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. In uno dei bucket Amazon Simple Storage Service (Amazon S3), crea una cartella `mnist_kmeans_example/processing_code` e carica lo script nella cartella.

1. Scarica il file `kmeans-mnist-processingjob.yaml`.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. Modifica il file YAML per specificare `sagemaker-execution-role` e sostituisci tutte le istanze di `amzn-s3-demo-bucket` con il bucket S3.

   ```
   ...
   metadata:
     name: kmeans-mnist-processing
   ...
     roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role>
     ...
     processingOutputConfig:
       outputs:
         ...
             s3Output:
               s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/
     ...
     processingInputs:
       ...
           s3Input:
             s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
   ```

   `sagemaker-execution-role`Devono disporre delle autorizzazioni affinché l' SageMaker IA possa accedere al tuo bucket S3, ad Amazon CloudWatch e ad altri servizi per tuo conto. [Per ulteriori informazioni sulla creazione di un ruolo di esecuzione, consulta SageMaker AI Roles.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)

1. Applica il file YAML usando uno dei comandi seguenti.

   Per l'installazione nell’ambito del cluster:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

   Per l'installazione nell’ambito dello spazio dei nomi:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>
   ```

### Elenco ProcessingJobs
<a name="kubernetes-processing-job-list"></a>

Utilizzate uno dei seguenti comandi per elencare tutti i lavori creati utilizzando l' ProcessingJob operatore. `SAGEMAKER-JOB-NAME `proviene dalla `metadata` sezione del file YAML.

Per l'installazione nell’ambito del cluster:

```
kubectl get ProcessingJob kmeans-mnist-processing
```

Per l'installazione nell’ambito dello spazio dei nomi:

```
kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing
```

L'aspetto dell'output sarà simile al seguente:

```
NAME                    STATUS     CREATION-TIME        SAGEMAKER-JOB-NAME
kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
```

L'output elenca tutti i processi, indipendentemente dal loro stato. Per rimuovere un processo dall'elenco, consulta [Eliminazione di un processo di elaborazione](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete).

**ProcessingJob Stato**
+ `SynchronizingK8sJobWithSageMaker`: il processo viene innanzitutto trasmesso al cluster. L'operatore ha ricevuto la richiesta e si sta preparando per creare il processo di elaborazione.
+ `Reconciling`: l'operatore sta inizializzando o ripristinando errori transitori, insieme ad altri. Se il processo di elaborazione rimane in questo stato, utilizza il comando `kubectl` `describe` per visualizzare il motivo nel campo `Additional`.
+ `InProgress | Completed | Failed | Stopping | Stopped`— Stato del SageMaker processo di elaborazione. Per ulteriori informazioni, consulta [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus).
+ `Error`: l'operatore non può eseguire il ripristino mediante riconciliazione.

I lavori completati, interrotti o non riusciti non comportano ulteriori addebiti per le risorse di SageMaker intelligenza artificiale.

### Descrivi un ProcessingJob
<a name="kubernetes-processing-job-description"></a>

Utilizza uno dei seguenti comandi per ottenere maggiori dettagli su un processo di elaborazione. Questi comandi vengono in genere utilizzati per il debug di un problema o il controllo dei parametri di un processo di elaborazione.

Per l'installazione nell’ambito del cluster:

```
kubectl describe processingjob kmeans-mnist-processing
```

Per l'installazione nell’ambito dello spazio dei nomi:

```
kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>
```

L'aspetto dell'output del processo di elaborazione sarà simile al seguente.

```
$ kubectl describe ProcessingJob kmeans-mnist-processing
Name:         kmeans-mnist-processing
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         ProcessingJob
Metadata:
  Creation Timestamp:  2020-09-22T21:13:25Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21746658
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing
  UID:               7410ed52-fd18-11ea-b19a-165ae9f9e385
Spec:
  App Specification:
    Container Entrypoint:
      python
      /opt/ml/processing/code/kmeans_preprocessing.py
    Image Uri:  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04
  Environment:
    Name:   MYVAR
    Value:  my_value
    Name:   MYVAR2
    Value:  my_value2
  Network Config:
  Processing Inputs:
    Input Name:  mnist_tar
    s3Input:
      Local Path:   /opt/ml/processing/input
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz
    Input Name:     source_code
    s3Input:
      Local Path:   /opt/ml/processing/code
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
  Processing Output Config:
    Outputs:
      Output Name:  train_data
      s3Output:
        Local Path:    /opt/ml/processing/output_train/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     test_data
      s3Output:
        Local Path:    /opt/ml/processing/output_test/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     valid_data
      s3Output:
        Local Path:    /opt/ml/processing/output_valid/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
  Processing Resources:
    Cluster Config:
      Instance Count:     1
      Instance Type:      ml.m5.xlarge
      Volume Size In GB:  20
  Region:                 us-west-2
  Role Arn:               arn:aws:iam::<acct-id>:role/m-sagemaker-role
  Stopping Condition:
    Max Runtime In Seconds:  1800
  Tags:
    Key:    tagKey
    Value:  tagValue
Status:
  Cloud Watch Log URL:             https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix
  Last Check Time:                 2020-09-22T21:14:29Z
  Processing Job Status:           InProgress
  Sage Maker Processing Job Name:  kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
Events:                            <none>
```

### Eliminare un ProcessingJob
<a name="kubernetes-processing-job-delete"></a>

Quando elimini un processo di elaborazione, il processo di SageMaker elaborazione viene rimosso da Kubernetes ma non viene eliminato dall'AI. SageMaker Se lo stato del processo in SageMaker AI è, `InProgress` il processo viene interrotto. I processi di elaborazione interrotti non comportano alcun addebito per le risorse SageMaker AI. Utilizza uno dei seguenti comandi per eliminare un processo di elaborazione. 

Per l'installazione nell’ambito del cluster:

```
kubectl delete processingjob kmeans-mnist-processing
```

Per l'installazione nell’ambito dello spazio dei nomi:

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

L'aspetto dell'output del processo di elaborazione sarà simile al seguente.

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**Nota**  
SageMaker L'IA non elimina il processo di elaborazione. I lavori interrotti continuano a essere visualizzati nella console SageMaker AI. Il `delete` comando impiega alcuni minuti per ripulire le risorse dall' SageMaker IA.

## HostingAutoscalingPolicy (HAP) Operatore
<a name="kubernetes-hap-operator"></a>

L'operatore HostingAutoscalingPolicy (HAP) utilizza un elenco di risorse come input e applica la stessa politica a ciascuna di esse IDs . Ogni ID di risorsa è una combinazione di un nome di endpoint e un nome di variante. L'operatore HAP esegue due passaggi: registra la risorsa IDs e quindi applica la politica di scalabilità a ciascun ID di risorsa. `Delete`annulla entrambe le azioni. [Puoi applicare l'HAP a un endpoint SageMaker AI esistente oppure puoi creare un nuovo endpoint SageMaker AI utilizzando l'operatore. HostingDeployment ](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment) [Puoi leggere ulteriori informazioni sull'autoscaling dell' SageMaker IA nella documentazione dell'Application Autoscaling Policy.](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html)

**Nota**  
Nei comandi `kubectl`, è possibile utilizzare la forma breve `hap` anziché `hostingautoscalingpolicy`.

**Topics**
+ [Crea un file utilizzando un file YAML HostingAutoscalingPolicy](#kubernetes-hap-job-yaml)
+ [Elenco HostingAutoscalingPolicies](#kubernetes-hap-list)
+ [Descrivi un HostingAutoscalingPolicy](#kubernetes-hap-describe)
+ [Aggiorna un HostingAutoscalingPolicy](#kubernetes-hap-update)
+ [Eliminare un HostingAutoscalingPolicy](#kubernetes-hap-delete)
+ [Aggiorna o elimina un endpoint con un HostingAutoscalingPolicy](#kubernetes-hap-update-delete-endpoint)

### Crea un file utilizzando un file YAML HostingAutoscalingPolicy
<a name="kubernetes-hap-job-yaml"></a>

Usa un file YAML per creare un HostingAutoscalingPolicy (HAP) che applichi una metrica predefinita o personalizzata a uno o più endpoint AI. SageMaker 

Amazon SageMaker AI richiede valori specifici per applicare la scalabilità automatica alla tua variante. Se questi valori non vengono configurati nelle specifiche YAML, l'operatore HAP applica i seguenti valori predefiniti.

```
# Do not change
Namespace                    = "sagemaker"
# Do not change
ScalableDimension            = "sagemaker:variant:DesiredInstanceCount"
# Only one supported
PolicyType                   = "TargetTrackingScaling"
# This is the default policy name but can be changed to apply a custom policy
DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
```

Utilizza i seguenti esempi per creare un HAP che applichi una metrica predefinita o personalizzata a uno o più endpoint.

#### Esempio 1: applicazione di una metrica predefinita a una singola variante di endpoint
<a name="kubernetes-hap-predefined-metric"></a>

1. Scarica il file YAML di esempio per una metrica predefinita utilizzando il seguente comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Modifica il file YAML per specificare `endpointName`, `variantName` e `Region`.

1. Utilizza uno dei seguenti comandi per applicare una metrica predefinita a un singolo ID di risorsa (combinazione di nome dell'endpoint e nome della variante).

   Per l'installazione nell’ambito del cluster:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Per l'installazione nell’ambito dello spazio dei nomi:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Esempio 2: applicazione di una metrica personalizzata a una singola variante di endpoint
<a name="kubernetes-hap-custom-metric"></a>

1. Scarica il file YAML di esempio per una metrica personalizzata utilizzando il seguente comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. Modifica il file YAML per specificare `endpointName`, `variantName` e `Region`.

1. Utilizza uno dei seguenti comandi per applicare una metrica personalizzata a un singolo ID di risorsa (combinazione di nome dell'endpoint e nome della variante) al posto di `SageMakerVariantInvocationsPerInstance` (consigliato).
**Nota**  
Amazon SageMaker AI non verifica la validità delle tue specifiche YAML.

   Per l'installazione nell’ambito del cluster:

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

   Per l'installazione nell’ambito dello spazio dei nomi:

   ```
   kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>
   ```

#### Esempio 3: applicazione di una policy di scalabilità a più endpoint e varianti
<a name="kubernetes-hap-scaling-policy"></a>

Puoi utilizzare l'operatore HAP per applicare la stessa politica di scalabilità a più risorse. IDs Viene creata una richiesta `scaling_policy` separata per ogni ID di risorsa (combinazione di nome dell'endpoint e nome della variante).

1. Scarica il file YAML di esempio per una metrica predefinita utilizzando il seguente comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Modifica il file YAML per specificare `Region` e più valori `endpointName` e `variantName`.

1. Utilizzate uno dei seguenti comandi per applicare una metrica predefinita a più risorse IDs (combinazioni di nome dell'endpoint e nome della variante).

   Per l'installazione nell’ambito del cluster:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Per l'installazione nell’ambito dello spazio dei nomi:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Considerazioni relative a più endpoint e HostingAutoscalingPolicies varianti
<a name="kubernetes-hap-scaling-considerations"></a>

Le seguenti considerazioni si applicano quando si utilizzano più risorse: IDs
+ Se si applica una singola politica a più risorse IDs, viene creato un PolicYarn per ID di risorsa. Cinque endpoint hanno cinque policy. ARNs Quando si esegue il comando `describe` sulla policy, le risposte vengono visualizzate come un unico processo e includono un singolo stato del processo.
+ Se applichi una metrica personalizzata a più risorse IDs, viene utilizzata la stessa dimensione o lo stesso valore per tutti i valori dell'ID della risorsa (variante). Ad esempio, se si applica una metrica relativa al cliente per le istanze 1-5 e la dimensione della variante dell'endpoint viene mappata alla variante 1, quando la variante 1 supera le metriche, tutti gli endpoint vengono ridimensionati verso l'alto o verso il basso.
+ L'operatore HAP supporta l'aggiornamento dell'elenco delle risorse. IDs Se si modifica, si aggiunge o si elimina una risorsa IDs alla specifica, la politica di scalabilità automatica viene rimossa dall'elenco precedente di varianti e applicata alle nuove combinazioni di ID di risorsa specificate. Utilizzate il [https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe)comando per elencare la risorsa IDs a cui è attualmente applicata la politica.

### Elenco HostingAutoscalingPolicies
<a name="kubernetes-hap-list"></a>

Utilizzate uno dei seguenti comandi per elencare tutti i HostingAutoscalingPolicies (HAPs) creati utilizzando l'operatore HAP.

Per l'installazione nell’ambito del cluster:

```
kubectl get hap
```

Per l'installazione nell’ambito dello spazio dei nomi:

```
kubectl get hap -n <NAMESPACE>
```

L'aspetto dell'output sarà simile al seguente:

```
NAME             STATUS   CREATION-TIME
hap-predefined   Created  2021-07-13T21:32:21Z
```

Usa il seguente comando per controllare lo stato del tuo HostingAutoscalingPolicy (HAP).

```
kubectl get hap <job-name>
```

Viene restituito uno dei seguenti valori:
+ `Reconciling`: alcuni tipi di errori mostrano lo stato `Reconciling` anziché `Error`. Ne sono un esempio gli errori lato server e gli endpoint con stato `Creating` o `Updating`. Controlla il campo `Additional` dello stato o dei registri dell'operatore per ulteriori dettagli.
+ `Created`
+ `Error`

**Per visualizzare l'endpoint di scalabilità automatica a cui hai applicato la policy:**

1. Apri la console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Nel pannello laterale sinistro, espandi **Inferenza**.

1. Scegli **Endpoint**.

1. Seleziona il nome dell'endpoint di interesse.

1. Scorri fino alla sezione **Impostazioni di configurazione degli endpoint**.

### Descrivi un HostingAutoscalingPolicy
<a name="kubernetes-hap-describe"></a>

Usa il seguente comando per ottenere maggiori dettagli su a HostingAutoscalingPolicy (HAP). Questi comandi vengono in genere utilizzati per risolvere un problema o controllare la risorsa IDs (nome dell'endpoint e combinazioni di nomi delle varianti) di un HAP.

```
kubectl describe hap <job-name>
```

### Aggiorna un HostingAutoscalingPolicy
<a name="kubernetes-hap-update"></a>

L'operatore HostingAutoscalingPolicy (HAP) supporta gli aggiornamenti. È possibile cambiare le specifiche YAML per modificare i valori, quindi riapplicare la policy. L'operatore HAP elimina la policy esistente e applica quella nuova.

### Eliminare un HostingAutoscalingPolicy
<a name="kubernetes-hap-delete"></a>

Utilizzare uno dei seguenti comandi per eliminare una politica HostingAutoscalingPolicy (HAP).

Per l'installazione nell’ambito del cluster:

```
kubectl delete hap hap-predefined
```

Per l'installazione nell’ambito dello spazio dei nomi:

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

Questo comando elimina la policy di scalabilità e annulla la registrazione della destinazione di scalabilità da Kubernetes. Questo comando restituisce il seguente output:

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### Aggiorna o elimina un endpoint con un HostingAutoscalingPolicy
<a name="kubernetes-hap-update-delete-endpoint"></a>

Per aggiornare un endpoint che dispone di un HostingAutoscalingPolicy (HAP), utilizzare il `kubectl` `delete` comando per rimuovere l'HAP, aggiornare l'endpoint e quindi riapplicare l'HAP.

Per eliminare un endpoint con HAP, utilizza il comando `kubectl` `delete` per rimuovere l'HAP prima di eliminare l'endpoint.

# Migrazione di risorse verso gli operatori più recenti
<a name="kubernetes-sagemaker-operators-migrate"></a>

[Stiamo interrompendo lo sviluppo e il supporto tecnico della versione originale di Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)

Se attualmente utilizzi una versione `v1.2.2` o precedente di [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), ti consigliamo di migrare le tue risorse al [controller di servizio ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) per Amazon. SageMaker [Il controller di servizio ACK è una nuova generazione di SageMaker Operators for Kubernetes basata su AWS Controllers for Kubernetes (ACK).](https://aws-controllers-k8s.github.io/community/)

Per le risposte alle domande frequenti sulla fine del supporto della versione originale di Operators for Kubernetes, consulta SageMaker [Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Utilizza i seguenti passaggi per migrare le tue risorse e utilizzare ACK per addestrare, ottimizzare e distribuire modelli di apprendimento automatico con Amazon SageMaker AI.

**Nota**  
I più recenti operatori SageMaker AI per Kubernetes non sono retrocompatibili.

**Topics**
+ [Prerequisiti](#migrate-resources-to-new-operators-prerequisites)
+ [Adozione di risorse](#migrate-resources-to-new-operators-steps)
+ [Rimozione delle risorse obsolete](#migrate-resources-to-new-operators-cleanup)
+ [Usa i nuovi operatori SageMaker AI per Kubernetes](#migrate-resources-to-new-operators-tutorials)

## Prerequisiti
<a name="migrate-resources-to-new-operators-prerequisites"></a>

Per migrare correttamente le risorse agli ultimi SageMaker AI Operators for Kubernetes, devi fare quanto segue:

1. Installa gli operatori SageMaker AI più recenti per Kubernetes. Per step-by-step istruzioni, consulta [Configurazione](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) in *Machine Learning con il controller ACK SageMaker AI*.

1. Se usi [HostingAutoscalingPolicy risorse](#migrate-resources-to-new-operators-hap), installa i nuovi Application Auto Scaling Operators. Per istruzioni, consulta [Configurazione](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/#setup) dei *carichi di lavoro SageMaker AI in scala con Application Auto* Scaling. step-by-step Questo passaggio è facoltativo se non si utilizzano HostingAutoScalingPolicy risorse.

Se le autorizzazioni sono configurate correttamente, il controller di servizio ACK SageMaker AI può determinare le specifiche e lo stato della AWS risorsa e riconciliare la risorsa come se fosse stato il controller ACK a crearla originariamente.

## Adozione di risorse
<a name="migrate-resources-to-new-operators-steps"></a>

I nuovi operatori SageMaker AI per Kubernetes offrono la possibilità di adottare risorse che non sono state originariamente create dal controller di servizio ACK. Per ulteriori informazioni, consulta [Adopt Existing AWS Resources](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/) nella documentazione ACK.

I passaggi seguenti mostrano come i nuovi operatori SageMaker AI per Kubernetes possono adottare un endpoint AI esistente SageMaker . Salva l’esempio seguente in un file denominato `adopt-endpoint-sample.yaml`. 

```
apiVersion: services.k8s.aws/v1alpha1
kind: AdoptedResource
metadata:
  name: adopt-endpoint-sample
spec:  
  aws:
    # resource to adopt, not created by ACK
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      # target K8s CR name
      name: xgboost-endpoint
```

Invia la risorsa personalizzata (CR) utilizzando `kubectl apply`:

```
kubectl apply -f adopt-endpoint-sample.yaml
```

Usa `kubectl describe` per verificare le condizioni di stato della risorsa adottata.

```
kubectl describe adoptedresource adopt-endpoint-sample
```

Verifica che la condizione `ACK.Adopted` sia `True`. L'output visualizzato dovrebbe essere simile al seguente esempio:

```
---
kind: AdoptedResource
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}'
  creationTimestamp: '2021-04-27T02:49:14Z'
  finalizers:
  - finalizers.services.k8s.aws/AdoptedResource
  generation: 1
  name: adopt-endpoint-sample
  namespace: default
  resourceVersion: '12669876'
  selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample"
  uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b
spec:
  aws:
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      name: xgboost-endpoint
status:
  conditions:
  - status: 'True'
    type: ACK.Adopted
```

Verifica che la risorsa esista nel cluster:

```
kubectl describe endpoints.sagemaker xgboost-endpoint
```

### HostingAutoscalingPolicy risorse
<a name="migrate-resources-to-new-operators-hap"></a>

La risorsa `HostingAutoscalingPolicy` (HAP) è composta da più risorse Application Auto Scaling: `ScalableTarget` e `ScalingPolicy`. Quando si adotta una risorsa HAP con ACK, è necessario innanzitutto installare il controller [Application Auto Scaling](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). Per l’adozione delle risorse HAP, è necessario adottare sia `ScalableTarget` sia `ScalingPolicy`. È possibile trovare l'identificativo di risorsa per queste risorse nello stato della risorsa `HostingAutoscalingPolicy` (`status.ResourceIDList`).

### HostingDeployment risorse
<a name="migrate-resources-to-new-operators-hosting-deployment"></a>

La `HostingDeployment` risorsa è composta da più risorse SageMaker AI: `Endpoint``EndpointConfig`, e ciascuna`Model`. Se si adotta un endpoint di SageMaker intelligenza artificiale in ACK, è necessario adottare i `Endpoint``EndpointConfig`, e ciascuno `Model` separatamente. I nomi `Endpoint`, `EndpointConfig` e `Model` si trovano nello stato `HostingDeployment` della risorsa (`status.endpointName`, `status.endpointConfigName` e `status.modelNames`).

Per un elenco di tutte le risorse SageMaker AI supportate, consulta l'[ACK API Reference.](https://aws-controllers-k8s.github.io/community/reference/)

## Rimozione delle risorse obsolete
<a name="migrate-resources-to-new-operators-cleanup"></a>

Dopo che i nuovi operatori SageMaker AI per Kubernetes avranno adottato le tue risorse, potrai disinstallare i vecchi operatori e ripulire le vecchie risorse.

### Fase 1: disinstallazione del precedente operatore
<a name="migrate-resources-to-new-operators-uninstall"></a>

Per disinstallare il precedente operatore, consulta [Eliminazione degli operatori](kubernetes-sagemaker-operators-end-of-support.md#delete-operators).

**avvertimento**  
Disinstalla il precedente operatore prima di eliminare le risorse obsolete.

### Fase 2: rimozione dei finalizer ed eliminazione delle risorse obsolete
<a name="migrate-resources-to-new-operators-delete-resources"></a>

**avvertimento**  
Prima di eliminare le risorse obsolete, assicurati di aver disinstallato il precedente operatore.

Dopo aver disinstallato il precedente operatore, è necessario rimuovere esplicitamente i finalizer per eliminare le risorse obsolete dell'operatore. Lo script di esempio seguente mostra come eliminare tutti i processi di addestramento gestiti dal precedente operatore in un determinato spazio dei nomi. È possibile utilizzare uno schema simile per eliminare risorse aggiuntive una volta adottate dal nuovo operatore.

**Nota**  
È necessario utilizzare i nomi completi delle risorse per ottenerle. Ad esempio, utilizza `kubectl get trainingjobs.sagemaker.aws.amazon.com` anziché `kubectl get trainingjob`.

```
namespace=sagemaker_namespace
training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name')
 
for job in $training_jobs
do
    echo "Deleting $job resource in $namespace namespace"
    kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge
    kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace
done
```

## Usa i nuovi operatori SageMaker AI per Kubernetes
<a name="migrate-resources-to-new-operators-tutorials"></a>

Per guide approfondite sull'utilizzo dei nuovi operatori SageMaker AI per Kubernetes, consulta [Usa SageMaker AI Operators per Kubernetes](kubernetes-sagemaker-operators-ack.md#kubernetes-sagemaker-operators-ack-use)

# Annuncio della fine del supporto della versione originale di SageMaker AI Operators for Kubernetes
<a name="kubernetes-sagemaker-operators-eos-announcement"></a>

Questa pagina annuncia la fine del supporto per la versione originale di [SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s) e fornisce risposte alle domande frequenti e informazioni sulla migrazione sul [controller di servizio ACK per Amazon SageMaker AI, una nuova generazione di operatori AI](https://github.com/aws-controllers-k8s/sagemaker-controller) completamente supportati SageMaker per Kubernetes. Per informazioni generali sui nuovi SageMaker operatori AI per Kubernetes, consulta. [Operatori SageMaker AI più recenti per Kubernetes](kubernetes-sagemaker-operators-ack.md) 

## Domande frequenti sulla fine del supporto
<a name="kubernetes-sagemaker-operators-eos-faq"></a>

**Topics**
+ [Perché stiamo terminando il supporto per la versione originale di SageMaker AI Operators for Kubernetes?](#kubernetes-sagemaker-operators-eos-faq-why)
+ [Dove posso trovare ulteriori informazioni sui nuovi operatori SageMaker AI per Kubernetes e ACK?](#kubernetes-sagemaker-operators-eos-faq-more)
+ [Cosa implica la fine del supporto (EOS)?](#kubernetes-sagemaker-operators-eos-faq-definition)
+ [Come posso migrare il mio carico di lavoro verso il nuovo SageMaker AI Operators for Kubernetes per la formazione e l'inferenza?](#kubernetes-sagemaker-operators-eos-faq-how)
+ [A quale versione di ACK occorre effettuare la migrazione?](#kubernetes-sagemaker-operators-eos-faq-version)
+ [Gli operatori SageMaker AI iniziali per Kubernetes e i nuovi operatori (controller di servizio ACK per Amazon SageMaker AI) sono funzionalmente equivalenti?](#kubernetes-sagemaker-operators-eos-faq-parity)

### Perché stiamo terminando il supporto per la versione originale di SageMaker AI Operators for Kubernetes?
<a name="kubernetes-sagemaker-operators-eos-faq-why"></a>

Gli utenti possono ora sfruttare il [controller di servizio ACK per Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller). Il service controller ACK è una nuova generazione di operatori SageMaker AI per Kubernetes basata su [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK), un progetto guidato dalla comunità ottimizzato per la produzione, che standardizza il modo di esporre i servizi tramite un operatore Kubernetes. AWS [Stiamo quindi annunciando la fine del supporto (EOS) per la versione originale (non basata su ACK) di AI Operators for Kubernetes. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s) Il supporto terminerà il **15 febbraio 2023** insieme ad [Amazon Elastic Kubernetes Service Kubernetes 1.21](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar). 

Per ulteriori informazioni su ACK, consulta [Cronologia e tenet di ACK](https://aws-controllers-k8s.github.io/community/docs/community/background/).

### Dove posso trovare ulteriori informazioni sui nuovi operatori SageMaker AI per Kubernetes e ACK?
<a name="kubernetes-sagemaker-operators-eos-faq-more"></a>
+ Per ulteriori informazioni sui nuovi operatori SageMaker AI per Kubernetes, consulta il GitHub repository del controller di [servizio ACK per Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) o leggi la documentazione di [AWS Controllers](https://aws-controllers-k8s.github.io/community/docs/community/overview/) for Kubernetes.
+ Per un tutorial su come addestrare un modello di machine learning con il controller di servizio ACK per Amazon SageMaker AI utilizzando Amazon EKS, guarda questo [esempio di SageMaker intelligenza artificiale](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

  Per un esempio di [scalabilità automatica, consulta Scalare i carichi di lavoro SageMaker AI con Application Auto Scaling](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/).
+ Per informazioni su AWS Controller for Kubernetes (ACK), consulta la documentazione [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).
+ [Per un elenco delle risorse SageMaker AI supportate, consulta ACK API Reference.](https://aws-controllers-k8s.github.io/community/reference/)

### Cosa implica la fine del supporto (EOS)?
<a name="kubernetes-sagemaker-operators-eos-faq-definition"></a>

Sebbene gli utenti possano continuare a utilizzare i loro operatori attuali, non stiamo più sviluppando nuove funzionalità per gli operatori, né rilasceremo patch o aggiornamenti di sicurezza per eventuali problemi riscontrati. `v1.2.2`è l'ultima versione di [SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master). Gli utenti devono migrare i propri carichi di lavoro per utilizzare il [controller di servizio ACK per Amazon SageMaker ](https://github.com/aws-controllers-k8s/sagemaker-controller) AI.

### Come posso migrare il mio carico di lavoro verso il nuovo SageMaker AI Operators for Kubernetes per la formazione e l'inferenza?
<a name="kubernetes-sagemaker-operators-eos-faq-how"></a>

Per informazioni sulla migrazione delle risorse dal vecchio al nuovo SageMaker AI Operators for Kubernetes, segui. [Migrazione di risorse verso gli operatori più recenti](kubernetes-sagemaker-operators-migrate.md)

### A quale versione di ACK occorre effettuare la migrazione?
<a name="kubernetes-sagemaker-operators-eos-faq-version"></a>

Gli utenti devono migrare alla versione rilasciata più recente del [controller di servizio ACK per Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller/tags).

### Gli operatori SageMaker AI iniziali per Kubernetes e i nuovi operatori (controller di servizio ACK per Amazon SageMaker AI) sono funzionalmente equivalenti?
<a name="kubernetes-sagemaker-operators-eos-faq-parity"></a>

Sì, sono uguali dal punto di vista della funzionalità.

Alcuni punti salienti delle principali differenze tra le due versioni includono:
+ Le Custom Resources Definitions (CRD) utilizzate dagli operatori SageMaker AI basati su ACK per Kubernetes seguono la definizione dell' AWS API, rendendola incompatibile con le specifiche delle risorse personalizzate di AI Operators for Kubernetes nella versione originale. SageMaker Fai riferimento al nuovo controller o utilizza la guida alla migrazione per adottare le risorse e utilizzare il nuovo controller. [CRDs](https://github.com/aws-controllers-k8s/sagemaker-controller/tree/main/helm/crds) 
+ La `Hosting Autoscaling` policy non fa più parte del nuovo SageMaker AI Operators for Kubernetes ed è stata migrata al controller ACK [Application](https://github.com/aws-controllers-k8s/applicationautoscaling-controller) autoscaling. [Per scoprire come utilizzare il controller di scalabilità automatica dell'applicazione per configurare la scalabilità automatica sugli endpoint AI, segui questo esempio di scalabilità automatica. SageMaker ](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) 
+ La risorsa `HostingDeployment` è stata utilizzata per creare modelli, configurazioni di endpoint ed endpoint in un unico CRD. Il nuovo SageMaker AI Operators for Kubernetes dispone di un CRD separato per ciascuna di queste risorse. 

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

# SageMaker Lavori su notebook
<a name="notebook-auto-run"></a>

Puoi usare Amazon SageMaker AI per creare, addestrare e distribuire in modo interattivo modelli di machine learning dal tuo notebook Jupyter in qualsiasi ambiente. JupyterLab Tuttavia, esistono diversi scenari in cui potresti voler eseguire il tuo notebook come un processo pianificato e non interattivo. Ad esempio, è possibile creare rapporti di controllo periodici che analizzino tutti i processi di addestramento eseguiti in un determinato periodo di tempo e analizzino il valore aziendale derivante dall'implementazione di tali modelli in produzione. Potresti anche voler ampliare un processo di progettazione delle funzionalità dopo aver testato la logica di trasformazione dei dati su un sottoinsieme di dati ridotto. Altri casi d’uso comuni comprendono:
+ Pianificazione dei processi per il monitoraggio delle variazioni dei modelli
+ Esplorazione dello spazio dei parametri per modelli ottimizzati

In questi scenari, puoi utilizzare SageMaker Notebook Jobs per creare un processo non interattivo (che l' SageMaker intelligenza artificiale esegue come processo di formazione sottostante) da eseguire su richiesta o secondo una pianificazione. SageMaker Notebook Jobs offre un'interfaccia utente intuitiva che consente di pianificare i lavori direttamente JupyterLab scegliendo il widget Notebook Jobs (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/notebook-schedule.png)) nel notebook. Puoi anche pianificare i tuoi lavori utilizzando l'SDK SageMaker AI Python, che offre la flessibilità di pianificare più lavori su notebook in un flusso di lavoro di pipeline. È possibile eseguire più notebook in parallelo e parametrizzare le celle dei notebook per personalizzare i parametri di input.

Questa funzionalità sfrutta i servizi Amazon EventBridge, SageMaker Training e Pipelines ed è disponibile per l'uso nel notebook Jupyter in uno dei seguenti ambienti:
+ Studio, Studio Lab, Studio Classic o Istanze del notebook
+ Configurazione locale, ad esempio sul computer locale, su cui si esegue JupyterLab

**Prerequisiti**

Per pianificare un processo relativo al notebook, verifica che siano soddisfatti i seguenti criteri:
+ Assicurati che il tuo notebook Jupyter e tutti gli script di inizializzazione o avvio siano autonomi per quanto riguarda il codice e i pacchetti software. In caso contrario, il processo non interattivo potrebbe comportare errori.
+ Controlla [Vincoli e considerazioni](notebook-auto-run-constraints.md) per assicurarti di aver configurato correttamente il notebook Jupyter, le impostazioni di rete e le impostazioni del container.
+ Assicurati che il tuo notebook possa accedere alle risorse esterne necessarie, come i cluster Amazon EMR.
+ Se stai configurando Notebook Jobs su un notebook Jupyter locale, completa l'installazione. Per istruzioni, consulta [Guida all’installazione](scheduled-notebook-installation.md). 
+ Se ti connetti a un cluster Amazon EMR sul tuo notebook e desideri parametrizzare il comando di connessione Amazon EMR, devi applicare una soluzione alternativa utilizzando le variabili di ambiente per trasmettere i parametri. Per informazioni dettagliate, vedi [Connessione a un cluster Amazon EMR dal notebook](scheduled-notebook-connect-emr.md).
+ Se ti connetti a un cluster Amazon EMR utilizzando l'autenticazione Kerberos, LDAP o HTTP Basic Auth, devi utilizzare l' Gestione dei segreti AWS per passare le credenziali di sicurezza al comando di connessione Amazon EMR. Per informazioni dettagliate, vedi [Connessione a un cluster Amazon EMR dal notebook](scheduled-notebook-connect-emr.md).
+ (Facoltativo) Se desideri che l'interfaccia utente precarichi uno script da eseguire all'avvio del notebook, l'amministratore deve installarlo con una configurazione del ciclo di vita (LCC). Per informazioni su come utilizzare uno script LCC, consulta [Personalizzazione di un'istanza del notebook utilizzando uno script di configurazione del ciclo di vita](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html).

# Guida all’installazione
<a name="scheduled-notebook-installation"></a>

Di seguito vengono fornite informazioni su cosa è necessario installare per utilizzare Notebook Jobs nel proprio ambiente. JupyterLab 

**Per Amazon SageMaker Studio e Amazon SageMaker Studio Lab**

Se il notebook è in Amazon SageMaker Studio o Amazon SageMaker Studio Lab, non è necessario eseguire installazioni aggiuntive: SageMaker Notebook Jobs è integrato nella piattaforma. Per configurare le autorizzazioni necessarie per Studio, consulta [Configurazione di policy e autorizzazioni per Studio](scheduled-notebook-policies-studio.md).

**Per i notebook Jupyter locali**

Se desideri utilizzare SageMaker Notebook Jobs per il tuo JupyterLab ambiente locale, devi eseguire un'installazione aggiuntiva.

Per installare SageMaker Notebook Jobs, completa i seguenti passaggi:

1. Installa Python 3. Per i dettagli, consulta [Installazione dei pacchetti Python 3 e Python](https://www.codecademy.com/article/install-python3).

1. Installa JupyterLab la versione 4 o successiva. Per i dettagli, consulta la [documentazione JupyterLab SDK](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html).

1. Installa il. AWS CLI Per informazioni, consulta [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Installa due set di autorizzazioni. L'utente IAM necessita delle autorizzazioni per inviare lavori all' SageMaker IA e, una volta inviato, il lavoro notebook stesso assume un ruolo IAM che richiede le autorizzazioni per accedere alle risorse a seconda delle attività lavorative.

   1. Se non è ancora stato creato un utente IAM, consulta [Creazione di un utente IAM nel tuo account AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

   1. Se non hai ancora creato il ruolo di un notebook, consulta [Creazione di un ruolo per delegare le autorizzazioni a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

   1. Collega le autorizzazioni e la policy di attendibilità necessarie al tuo utente e ruolo. Per step-by-step istruzioni e dettagli sulle autorizzazioni, consulta. [Installazione di policy e autorizzazioni per gli ambienti Jupyter locali](scheduled-notebook-policies-other.md)

1. Genera AWS credenziali per il tuo utente IAM appena creato e salvale nel file delle credenziali (\$1/.aws/credentials) del tuo ambiente. JupyterLab È possibile farlo tramite il comando CLI `aws configure`. Per le istruzioni, consulta la sezione *Impostazione e visualizzazione delle impostazioni di configurazione utilizzando i comandi* in [Configurazione e impostazioni dei file di credenziali](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

1. (opzionale) Per impostazione predefinita, l'estensione scheduler utilizza un'immagine Docker SageMaker AI predefinita con Python 2.0. Qualsiasi kernel non predefinito utilizzato nel notebook deve essere installato nel container. Se desideri eseguire il notebook in un container o un'immagine Docker, devi creare un'immagine Amazon Elastic Container Registry (Amazon ECR). Per informazioni su come inviare un'immagine Docker a un'immagine Amazon ECR, consulta [Invio di un’immagine Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

1. Aggiungi l' JupyterLab estensione per Notebook Jobs. SageMaker Puoi aggiungerlo al tuo JupyterLab ambiente con il comando:`pip install amazon_sagemaker_jupyter_scheduler`. Potrebbe essere necessario riavviare il server Jupyter con il comando: `sudo systemctl restart jupyter-server`.

1. Inizia JupyterLab con il comando:`jupyter lab`.

1. Verifica che il widget Notebook Jobs (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/notebook-schedule.png)) appaia nella barra delle operazioni del notebook Jupyter.

# Configurazione di policy e autorizzazioni per Studio
<a name="scheduled-notebook-policies-studio"></a>

Prima di pianificare la tua prima esecuzione del notebook, devi installare le policy e le autorizzazioni appropriate. Di seguito vengono fornite istruzioni sulla configurazione delle autorizzazioni seguenti:
+ Relazioni di attendibilità per il ruolo di esecuzione del processo
+ Autorizzazioni IAM aggiuntive collegate al ruolo di esecuzione del processo
+ (opzionale) La politica di AWS KMS autorizzazione per l'utilizzo di una chiave KMS personalizzata

**Importante**  
Se il tuo AWS account appartiene a un'organizzazione con policy di controllo dei servizi (SCP), le tue autorizzazioni effettive sono l'intersezione logica tra ciò che è consentito dal tuo ruolo IAM SCPs e ciò che è consentito dal tuo ruolo IAM e dalle politiche utente. Ad esempio, se l'SCP dell'organizzazione specifica che è possibile accedere solo alle risorse in `us-east-1` e `us-west-1`, e le policy consentono solo di accedere alle risorse contenute in `us-west-1` e `us-west-2`, in ultima analisi, è possibile accedere solo alle risorse contenute in `us-west-1`. Se desideri esercitare tutte le autorizzazioni consentite nelle tue policy relative al ruolo e agli utenti, la tua organizzazione SCPs dovrebbe concedere lo stesso set di autorizzazioni delle tue policy IAM relative agli utenti e ai ruoli. Per informazioni su come determinare le richieste consentite, consulta la sezione [Determinazione della concessione o del rifiuto di una richiesta in un account](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Relazioni di attendibilità**

Per modificare le relazioni di attendibilità, completa la seguente procedura:

1. Apri la [console IAM](https://console.aws.amazon.com/iam/).

1. Seleziona **Ruoli** nel pannello a sinistra.

1. Trova il ruolo di esecuzione del processo per il processo relativo al notebook e scegli il nome del ruolo. 

1. Seleziona la scheda **Relazioni di attendibilità**

1. Seleziona **Modifica policy di attendibilità**.

1. Copia e incolla la seguente policy:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "sagemaker.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "events.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Scegli **Aggiorna policy**.

## Autorizzazioni aggiuntive per IAM
<a name="scheduled-notebook-policies-add"></a>

Potrebbe essere necessario includere autorizzazioni IAM aggiuntive nelle seguenti situazioni:
+ I ruoli di esecuzione in Studio e dei processi relativi ai notebook sono diversi
+ Devi accedere alle risorse Amazon S3 tramite un endpoint VPC S3
+ Desideri utilizzare una chiave KMS personalizzata per crittografare i bucket Amazon S3 di input e output

La discussione seguente fornisce le policy necessarie per ogni caso.

### Autorizzazioni necessarie se i ruoli di esecuzione in Studio e dei processi relativi ai notebook sono diversi
<a name="scheduled-notebook-policies-add-diffrole"></a>

Il seguente frammento di codice JSON è un esempio di policy da aggiungere ai ruoli di esecuzione in Studio e dei processi relativi ai notebook se non si utilizza il ruolo di esecuzione di Studio come ruolo di processo relativo al notebook. Rivedi e modifica questa policy se devi limitare ulteriormente i privilegi.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### Autorizzazioni necessarie per accedere alle risorse Amazon S3 tramite un endpoint VPC S3
<a name="scheduled-notebook-policies-add-vpc"></a>

Se esegui SageMaker Studio in modalità VPC privata e accedi a S3 tramite l'endpoint VPC S3, puoi aggiungere autorizzazioni alla policy degli endpoint VPC per controllare quali risorse S3 sono accessibili tramite l'endpoint VPC. Aggiungi le seguenti autorizzazioni alla tua policy sugli endpoint VPC. Puoi modificare la policy se devi limitare ulteriormente le autorizzazioni, ad esempio fornendo specifiche più restrittive per il campo `Principal`.

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

Per informazioni dettagliate su come configurare una policy per gli endpoint VPC di S3, consulta [Modifica della policy degli endpoint VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3).

### Autorizzazioni necessarie per utilizzare una chiave KMS personalizzata (opzionale)
<a name="scheduled-notebook-policies-add-kms"></a>

Per impostazione predefinita, i bucket Amazon S3 di input e output sono crittografati utilizzando la crittografia lato server; tuttavia, puoi specificare una chiave KMS personalizzata per crittografare i dati nel bucket Amazon S3 di output e nel volume di storage collegato al processo relativo al notebook.

Se desideri utilizzare una chiave KMS personalizzata, collega la seguente policy e fornisci l’ARN della chiave KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

# Installazione di policy e autorizzazioni per gli ambienti Jupyter locali
<a name="scheduled-notebook-policies-other"></a>

Devi configurare le autorizzazioni e le policy necessarie per pianificare i processi del notebook negli ambienti Jupyter locali. L'utente IAM necessita delle autorizzazioni per inviare lavori all' SageMaker IA e il ruolo IAM che il job notebook stesso assume richiede le autorizzazioni per accedere alle risorse, a seconda delle attività lavorative. Di seguito vengono fornite istruzioni sulla configurazione delle autorizzazioni e delle policy necessarie.

Dovrai installare due set di autorizzazioni. Il diagramma seguente mostra la struttura delle autorizzazioni per pianificare i processi del notebook in un ambiente Jupyter locale. L'utente IAM deve configurare le autorizzazioni IAM per inviare lavori all'IA. SageMaker Dopo l'invio del processo del notebook da parte dell'utente, il processo stesso assume un ruolo IAM che ha l’autorizzazione per accedere alle risorse a seconda delle attività del processo.

![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/notebook-jobs-permissions.png)


Le seguenti sezioni aiutano a installare le policy e le autorizzazioni necessarie sia per l'utente IAM che per il ruolo di esecuzione del processo.

## Autorizzazioni degli utenti IAM
<a name="scheduled-notebook-policies-other-user"></a>

**Autorizzazioni per inviare lavori all'IA SageMaker **

Per aggiungere le autorizzazioni per inviare i processi, completa la seguente procedura:

1. Apri la [console IAM](https://console.aws.amazon.com/iam/).

1. Seleziona **Utenti** nel pannello a sinistra.

1. Trova l'utente IAM per il tuo processo relativo al notebook e scegli il nome utente.

1. Scegli **Aggiungi autorizzazioni**, quindi seleziona **Crea policy inline** dal menu a discesa.

1. Scegli la scheda **JSON**.

1. Copia e incolla la policy seguente:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EventBridgeSchedule",
               "Effect": "Allow",
               "Action": [
                   "events:TagResource",
                   "events:DeleteRule",
                   "events:PutTargets",
                   "events:DescribeRule",
                   "events:EnableRule",
                   "events:PutRule",
                   "events:RemoveTargets",
                   "events:DisableRule"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "IAMPassrole",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "sagemaker.amazonaws.com",
                           "events.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "IAMListRoles",
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "*"
           },
           {
               "Sid": "S3ArtifactsAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:PutEncryptionConfiguration",
                   "s3:CreateBucket",
                   "s3:PutBucketVersioning",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetEncryptionConfiguration",
                   "s3:DeleteObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemaker-automated-execution-*"
               ]
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeTrainingJob",
                   "sagemaker:StopTrainingJob",
                   "sagemaker:DescribePipeline",
                   "sagemaker:CreateTrainingJob",
                   "sagemaker:DeletePipeline",
                   "sagemaker:CreatePipeline"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "AllowSearch",
               "Effect": "Allow",
               "Action": "sagemaker:Search",
               "Resource": "*"
           },
           {
               "Sid": "SagemakerTags",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListTags",
                   "sagemaker:AddTags"
               ],
               "Resource": [
                   "arn:aws:sagemaker:*:*:pipeline/*",
                   "arn:aws:sagemaker:*:*:space/*",
                   "arn:aws:sagemaker:*:*:training-job/*",
                   "arn:aws:sagemaker:*:*:user-profile/*"
               ]
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

**AWS KMS politica di autorizzazione (opzionale)**

Per impostazione predefinita, i bucket Amazon S3 di input e output sono crittografati utilizzando la crittografia lato server; tuttavia, puoi specificare una chiave KMS personalizzata per crittografare i dati nel bucket Amazon S3 di output e nel volume di archiviazione collegato al processo relativo al notebook.

Se desideri utilizzare una chiave KMS personalizzata, ripeti le istruzioni precedenti collegando la policy seguente e fornisci l’ARN della chiave KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

## Autorizzazioni del ruolo di esecuzione del processo
<a name="scheduled-notebook-policies-other-job"></a>

**Relazioni di attendibilità**

Per modificare le relazioni di attendibilità del ruolo di esecuzione del processo, completa la seguente procedura:

1. Apri la [console IAM](https://console.aws.amazon.com/iam/).

1. Seleziona **Ruoli** nel pannello a sinistra.

1. Trova il ruolo di esecuzione del processo per il processo relativo al notebook e scegli il nome del ruolo.

1. Seleziona la scheda **Relazioni di attendibilità**

1. Seleziona **Modifica policy di attendibilità**.

1. Copia e incolla la policy seguente:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**Autorizzazioni aggiuntive**

Una volta inviato, il processo relativo al notebook necessita delle autorizzazioni per accedere alle risorse. Le seguenti istruzioni mostrano come aggiungere un set minimo di autorizzazioni. Se necessario, aggiungi altre autorizzazioni in base alle esigenze del tuo processo relativo al notebook. Per aggiungere autorizzazioni al ruolo di esecuzione del processo, completa la seguente procedura:

1. Apri la [console IAM](https://console.aws.amazon.com/iam/).

1. Seleziona **Ruoli** nel pannello a sinistra.

1. Trova il ruolo di esecuzione del processo per il processo relativo al notebook e scegli il nome del ruolo.

1. Scegli **Aggiungi autorizzazioni**, quindi seleziona **Crea policy inline** dal menu a discesa.

1. Scegli la scheda **JSON**.

1. Copia e incolla la policy seguente:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassroleForJobCreation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "sagemaker.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "S3ForStoringArtifacts",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:StartPipelineExecution",
                   "sagemaker:CreateTrainingJob"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Aggiungi le autorizzazioni ad altre risorse a cui accede il processo relativo al notebook.

1. Scegliere **Esamina policy**.

1. Immetti un nome da assegnare alla policy.

1. Scegli **Crea policy**.

# Dove creare un processo del notebook
<a name="create-notebook-auto-run"></a>

Per creare un processo del notebook, sono disponibili diverse opzioni. Di seguito vengono fornite le opzioni di SageMaker intelligenza artificiale per creare un lavoro su notebook.

Puoi creare un lavoro nel tuo JupyterLab notebook nell'interfaccia utente di Studio oppure puoi creare un lavoro a livello di codice con Python SageMaker SDK:
+ Se crei il processo del notebook nell’interfaccia utente di Studio, il processo viene pianificato dopo che fornisci dettagli sull’immagine e sul kernel, le configurazioni di sicurezza e le eventuali variabili o script personalizzati. Per i dettagli su come pianificare il lavoro utilizzando SageMaker Notebook Jobs, consulta. [Creazione di un processo del notebook in Studio](create-notebook-auto-run-studio.md)
+ Per creare un lavoro notebook con SageMaker Python SDK, si crea una pipeline con un passaggio Notebook Job e si avvia un'esecuzione su richiesta o, facoltativamente, si utilizza la funzionalità di pianificazione della pipeline per pianificare le esecuzioni future. L' SageMaker SDK offre la flessibilità necessaria per personalizzare la pipeline: è possibile espandere la pipeline trasformandola in un flusso di lavoro con più fasi di lavoro su notebook. Poiché crei sia una fase di SageMaker Notebook Job che una pipeline, puoi tenere traccia dello stato di esecuzione della pipeline nella dashboard del lavoro di SageMaker Notebook Jobs e anche visualizzare il grafico della pipeline in Studio. Per dettagli su come pianificare il lavoro con l'SDK SageMaker Python e collegamenti a taccuini di esempio, consulta. [Crea un lavoro su notebook con l' SageMaker esempio di AI Python SDK](create-notebook-auto-run-sdk.md)

# Crea un lavoro su notebook con l' SageMaker esempio di AI Python SDK
<a name="create-notebook-auto-run-sdk"></a>

Per eseguire un notebook autonomo utilizzando SageMaker Python SDK, è necessario creare un passaggio Notebook Job, collegarlo a una pipeline e utilizzare le utilità fornite da Pipelines per eseguire il lavoro su richiesta o, facoltativamente, pianificare uno o più lavori futuri. Le sezioni seguenti descrivono le fasi di base per creare un processo del notebook on demand o pianificato e monitorarne l’esecuzione. Inoltre, fai riferimento alle sezioni seguenti se devi passare parametri al tuo processo del notebook o se devi connetterti ad Amazon EMR dal tuo notebook: in questi casi è necessaria una preparazione aggiuntiva del tuo notebook Jupyter. Puoi anche applicare i valori predefiniti a un sottoinsieme degli argomenti di `NotebookJobStep`, in modo da non doverli specificare ogni volta che crei una fase Processo del notebook.

[Per visualizzare alcuni notebook di esempio che mostrano come pianificare i lavori relativi ai notebook con AI SageMaker Python SDK, consulta Notebooks di esempio per notebook job.](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step)

**Topics**
+ [Procedura per creare un processo del notebook](#create-notebook-auto-run-overall)
+ [Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio](#create-notebook-auto-run-dash)
+ [Visualizzazione del grafo della pipeline in Studio](#create-notebook-auto-run-graph)
+ [Passaggio dei parametri al notebook](#create-notebook-auto-run-passparam)
+ [Connessione a un cluster Amazon EMR nel notebook di input](#create-notebook-auto-run-emr)
+ [Configurazione delle opzioni predefinite](#create-notebook-auto-run-intdefaults)

## Procedura per creare un processo del notebook
<a name="create-notebook-auto-run-overall"></a>

Puoi creare un processo del notebook che venga eseguito immediatamente o in base a una pianificazione. Le istruzioni seguenti descrivono entrambi i metodi.

**Per pianificare un processo del notebook, procedi come descritto di seguito:**

1. Crea un’istanza `NotebookJobStep`. [Per i dettagli sui parametri, consulta sagemaker.workflow.steps. `NotebookJobStep` NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep). Come minimo, puoi fornire gli argomenti seguenti, come mostrato nel seguente frammento di codice:
**Importante**  
Se pianifichi il lavoro sul notebook utilizzando l'SDK SageMaker Python, puoi specificare solo determinate immagini per eseguire il lavoro sul notebook. Per ulteriori informazioni, consulta [Vincoli di immagine per i lavori su notebook AI SageMaker Python SDK](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

   ```
   notebook_job_step = NotebookJobStep(
       input_notebook=input-notebook,
       image_uri=image-uri,
       kernel_name=kernel-name
   )
   ```

1. Crea una pipeline utilizzando `NotebookJobStep` come fase singola, come mostrato nel seguente frammento:

   ```
   pipeline = Pipeline(
       name=pipeline-name,
       steps=[notebook_job_step],
       sagemaker_session=sagemaker-session,
   )
   ```

1. Esegui la pipeline on demand o, facoltativamente, pianifica le future esecuzioni della pipeline. Per avviare un’esecuzione immediata, utilizza il comando seguente:

   ```
   execution = pipeline.start(
       parameters={...}
   )
   ```

   Facoltativamente, puoi pianificare un’esecuzione futura una tantum della pipeline o più esecuzioni a intervalli predeterminati. Specifica la pianificazione in `PipelineSchedule`, quindi passa l’oggetto di pianificazione alla pipeline con `put_triggers`. Per ulteriori informazioni sulla pianificazione delle pipeline, consulta [Pianifica una pipeline con SageMaker Python SDK](pipeline-eventbridge.md#build-and-manage-scheduling).

   L’esempio seguente pianifica l’esecuzione una tantum della pipeline il 12 dicembre 2023 alle 10:31:32 UTC.

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) 
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

   L’esempio successivo pianifica l’esecuzione della pipeline alle 10:15 UTC dell’ultimo venerdì di ogni mese dal 2022 al 2023. Per dettagli sulla pianificazione basata su CRON, consulta [Pianificazioni basate su CRON](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#cron-based).

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       cron="15 10 ? * 6L 2022-2023"
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

1. (Facoltativo) Visualizza i lavori eseguiti sul notebook nella dashboard di SageMaker Notebook Jobs. I valori forniti per l’argomento `tags` nella fase Processo del notebook definiscono il modo in cui l’interfaccia utente di Studio acquisisce e visualizza il processo. Per ulteriori informazioni, consulta [Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio](#create-notebook-auto-run-dash).

## Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio
<a name="create-notebook-auto-run-dash"></a>

I processi del notebook che crei come fasi della pipeline vengono visualizzati nella dashboard Processi del notebook di Studio se specifichi determinati tag.

**Nota**  
Solo i lavori su notebook creati in Studio o in JupyterLab ambienti locali creano definizioni di job. Pertanto, se crei il tuo lavoro notebook con SageMaker Python SDK, non vedrai le definizioni dei lavori nella dashboard di Notebook Jobs. Tuttavia, puoi visualizzare i processi del notebook come descritto in [Visualizza i processi relativi al notebook](view-notebook-jobs.md). 

Puoi controllare quali membri del team possono visualizzare i tuoi processi del notebook con i seguenti tag:
+ Per visualizzare il notebook su tutti i profili utente o gli [spazi](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html) di un dominio, aggiungi il tag di dominio con il tuo nome di dominio. Di seguito viene riportato un esempio:
  + chiave: `sagemaker:domain-name`, valore: `d-abcdefghij5k`
+ Per visualizzare il processo del notebook su un determinato profilo utente in un dominio, aggiungi i tag sia del profilo utente che del dominio. Di seguito viene riportato un esempio di tag del profilo utente:
  + chiave: `sagemaker:user-profile-name`, valore: `studio-user`
+ Per visualizzare il processo del notebook in uno [spazio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html), aggiungi i tag sia dello spazio che del dominio. Di seguito viene riportato un esempio di tag dello spazio:
  + chiave: `sagemaker:shared-space-name`, valore: `my-space-name`
+ Se non colleghi alcun tag per il dominio, il profilo utente o lo spazio, l’interfaccia utente di Studio non mostra il processo del notebook creato dalla fase della pipeline. In questo caso, puoi visualizzare il job di addestramento sottostante nella relativa console oppure puoi visualizzarne lo stato nell’[elenco delle esecuzioni della pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-studio-view-execution.html).

Dopo aver configurato i tag necessari per visualizzare i processi nella dashboard, consulta [Visualizza i processi relativi al notebook](view-notebook-jobs.md) per istruzioni su come visualizzare i processi e scaricare gli output.

## Visualizzazione del grafo della pipeline in Studio
<a name="create-notebook-auto-run-graph"></a>

Poiché la fase del processo del notebook fa parte di una pipeline, puoi visualizzare il grafo della pipeline (DAG) in Studio. Nel grafo della pipeline, puoi visualizzare lo stato di esecuzione della pipeline e monitorarne il lineage. Per informazioni dettagliate, vedi [Visualizzazione dei dettagli dell’esecuzione di una pipeline](pipelines-studio-view-execution.md).

## Passaggio dei parametri al notebook
<a name="create-notebook-auto-run-passparam"></a>

Per passare i parametri al processo del notebook (con l’argomento `parameters` di `NotebookJobStep`), devi preparare il notebook di input per ricevere i parametri. 

L’esecutore di processi del notebook basati su Papermill cerca una cella Jupyter a cui è applicato il tag `parameters` e applica i nuovi parametri o le sostituzioni dei parametri subito dopo questa cella. Per informazioni dettagliate, vedi [Parametrizzare il notebook](notebook-auto-run-troubleshoot-override.md). 

Dopo aver eseguito questa fase, passa i parametri a `NotebookJobStep`, come mostrato nell’esempio seguente:

```
notebook_job_parameters = {
    "company": "Amazon"
}

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input-notebook,
    parameters=notebook_job_parameters,
    ...
)
```

## Connessione a un cluster Amazon EMR nel notebook di input
<a name="create-notebook-auto-run-emr"></a>

Se ti connetti a un cluster Amazon EMR dal tuo notebook Jupyter in Studio, potresti dover modificare ulteriormente tale notebook. Consulta [Connessione a un cluster Amazon EMR dal notebook](scheduled-notebook-connect-emr.md) se devi eseguire una di queste attività sul tuo notebook:
+ **Passaggio dei parametri al comando di connessione Amazon EMR**. Studio utilizza Papermill per eseguire notebook. Nei SparkMagic kernel, i parametri passati al comando di connessione Amazon EMR potrebbero non funzionare come previsto a causa del modo in cui Papermill trasmette le informazioni. SparkMagic
+ **Passaggio delle credenziali utente a cluster Amazon EMR autenticati con Kerberos, LDAP o HTTP Basic Auth**. Devi passare le credenziali utente tramite Gestione dei segreti AWS.

## Configurazione delle opzioni predefinite
<a name="create-notebook-auto-run-intdefaults"></a>

L' SageMaker SDK ti offre la possibilità di impostare i valori predefiniti per un sottoinsieme di parametri in modo da non dover specificare questi parametri ogni volta che crei un'istanza. `NotebookJobStep` Questi parametri sono `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` e `security_group_ids`. Utilizza il file di configurazione SageMaker AI per impostare i valori predefiniti per il passaggio. Per informazioni sul file di configurazione SageMaker AI, consulta [Configurazione e utilizzo dei valori predefiniti con Python SageMaker SDK](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). .

Per configurare le impostazioni predefinite del processo del notebook, applica le nuove impostazioni predefinite alla sezione relativa al processo del notebook del file di configurazione, come mostrato nel seguente frammento:

```
SageMaker:
  PythonSDK:
    Modules:
      NotebookJob:
        RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
        S3RootUri: 's3://amzn-s3-demo-bucket/my-project'
        S3KmsKeyId: 's3kmskeyid'
        VolumeKmsKeyId: 'volumekmskeyid1'
        VpcConfig:
          SecurityGroupIds:
            - 'sg123'
          Subnets:
            - 'subnet-1234'
```

# Creazione di un processo del notebook in Studio
<a name="create-notebook-auto-run-studio"></a>

**Nota**  
Lo scheduler per notebook è basato sui servizi Amazon EventBridge, SageMaker Training e Pipelines. Se i processi relativi al notebook non riescono, è possibile che vengano visualizzati degli errori relativi a questi servizi. Di seguito vengono fornite informazioni su come creare un processo del notebook nell’interfaccia utente di Studio.

SageMaker Notebook Jobs ti offre gli strumenti per creare e gestire i tuoi lavori notebook non interattivi utilizzando il widget Notebook Jobs. È possibile creare processi, visualizzare i processi creati e mettere in pausa, arrestare o riprendere i processi esistenti. È inoltre possibile modificare le pianificazioni del notebook.

Quando crei un processo del notebook pianificato nel widget, lo scheduler tenta di dedurre una selezione di opzioni predefinite e compila automaticamente il modulo per aiutarti a iniziare rapidamente. Se utilizzi Studio, come minimo puoi inviare un processo on demand senza impostare alcuna opzione. È inoltre possibile inviare una definizione di processo (pianificato) relativo al notebook che fornisca solo le informazioni sulla pianificazione specifiche dell'ora. Tuttavia, è possibile personalizzare altri campi se il processo pianificato richiede impostazioni specializzate. Se utilizzi un Jupyter Notebook locale, l'estensione del pianificatore offre una funzionalità che ti consente di specificare i tuoi valori predefiniti (per un sottoinsieme di opzioni) in modo da non dover inserire manualmente gli stessi valori ogni volta.

Quando crei un processo del notebook, puoi includere file aggiuntivi come set di dati, immagini e script locali. Per farlo, scegli **Esegui il processo con la cartella di input**. Il processo del notebook avrà ora accesso a tutti i file nella cartella del file di input. Mentre il processo del notebook è in esecuzione, la struttura dei file della directory rimane invariata.

Per pianificare un processo relativo al notebook, completa la seguente procedura.

1. Apri il modulo **Crea processo**.

   Negli JupyterLab ambienti locali, scegli l'icona **Crea un lavoro su notebook** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/notebook-schedule.png)) nella barra delle applicazioni. Se non vedi l'icona, segui le istruzioni in [Guida all’installazione](scheduled-notebook-installation.md) per l'installazione.

   In Studio, apri il modulo in uno dei due modi seguenti:
   + Utilizzando il **Browser di file**

     1. Nel **Browser di file** nel pannello di sinistra, fai clic con il pulsante destro del mouse sul notebook che desideri eseguire come processo pianificato.

     1. Scegli **Crea un processo relativo al notebook**.
   + All'interno del notebook Studio
     + All'interno del notebook Studio che desideri eseguire come processo pianificato, scegli l'icona **Crea un processo relativo al notebook** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/notebook-schedule.png)) nella barra degli strumenti di Studio.

1. Completa il modulo popup. Il modulo contiene i seguenti campi:
   + **Nome processo**: un nome descrittivo che specifichi per il tuo processo.
   + **File di input**: il nome del notebook che stai pianificando per l'esecuzione in modalità non interattiva.
   + **Tipo di elaborazione**: il tipo di istanza Amazon EC2 in cui desideri eseguire il notebook.
   + **Parametri**: parametri personalizzati che puoi specificare facoltativamente come input per il tuo notebook. Per utilizzare questa funzionalità, puoi facoltativamente taggare una cella specifica del tuo notebook Jupyter con **parameters** per controllare dove vengono applicati i parametri. Per ulteriori dettagli, consultare [Parametrizzare il notebook](notebook-auto-run-troubleshoot-override.md).
   + (Facoltativo) **Esegui il processo con la cartella di input**: se selezionato, il processo pianificato avrà accesso a tutti i file presenti nella stessa cartella del **file di input**.
   + **Opzioni aggiuntive**: puoi specificare personalizzazioni aggiuntive per il tuo processo. Ad esempio, è possibile specificare un'immagine o un kernel, cartelle di input e output, opzioni di ripetizione e timeout del processo, dettagli di crittografia e script di inizializzazione personalizzati. Per l'elenco completo delle personalizzazioni che si possono applicare, consulta [Opzioni disponibili](create-notebook-auto-execution-advanced.md).

1. Pianifica il tuo processo. È possibile utilizzare il notebook on demand o in base a una pianificazione fissa.
   + Per eseguire il notebook on demand, completa la seguente procedura:
     + Seleziona **Esegui ora**.
     + Scegli **Create** (Crea).
     + Viene visualizzata la scheda **Processi relativi al notebook**. Scegli **Ricarica** per caricare il processo nel pannello di controllo.
   + Per eseguire il notebook in base a una pianificazione fissa, completa la seguente procedura:
     + Scegli **Esegui secondo una pianificazione**.
     + Scegli l'elenco a discesa **Intervallo** e seleziona un intervallo. Gli intervalli vanno da ogni minuto a una volta al mese. Puoi inoltre selezionare **Pianificazione personalizzata**.
     + In base all'intervallo scelto, vengono visualizzati campi aggiuntivi per aiutarti a specificare ulteriormente il giorno e l'ora di esecuzione desiderati. Ad esempio, se si seleziona **Giorno** per un'esecuzione giornaliera, viene visualizzato un campo aggiuntivo per specificare l'ora desiderata. Tieni presente che ogni orario specificato è in formato UTC. Tieni presente inoltre che se scegli un intervallo ridotto, ad esempio un minuto, i processi si sovrappongono se il processo precedente non è completo all'avvio del processo successivo.

       Se si seleziona una pianificazione personalizzata, si utilizza la sintassi cron nella casella di espressione per specificare la data e l'ora esatte di esecuzione. La sintassi cron è un elenco di cifre separate da spazi, ognuna delle quali rappresenta un'unità di tempo da secondi ad anni. Per informazioni sulla sintassi cron, puoi scegliere **Assistenza relativa alla sintassi cron** sotto la casella di espressione.
     + Scegli **Create** (Crea).
     + Viene visualizzata la scheda **Definizioni di processo relative al notebook**. Scegli **Ricarica** per caricare la definizione del processo nel pannello di controllo.

# Configurazione delle opzioni predefinite per i notebook locali
<a name="create-notebook-auto-execution-advanced-default"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’applicazione Studio Classic. Per informazioni sull’utilizzo dell’esperienza Studio aggiornata, consulta [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic viene ancora mantenuto per i carichi di lavoro esistenti, ma non è più disponibile per l'onboarding. È possibile solo interrompere o eliminare le applicazioni Studio Classic esistenti e non è possibile crearne di nuove. Ti consigliamo di [migrare il tuo carico di lavoro alla nuova esperienza Studio](studio-updated-migrate.md).

Puoi configurare le opzioni predefinite quando crei un processo del notebook. Se intendi creare più processi del notebook con opzioni diverse da quelle predefinite, questa opzione ti permette di risparmiare tempo. Di seguito vengono fornite informazioni su come configurare le opzioni predefinite per i notebook locali.

Se è necessario digitare (o incollare) manualmente valori personalizzati nel modulo **Crea processo**, è possibile archiviare nuovi valori predefiniti e l'estensione del pianificatore inserisce i nuovi valori ogni volta che si crea una nuova definizione di processo. Questa funzionalità è disponibile per le seguenti opzioni:
+ **ARN del ruolo**
+ **Cartella di input S3**
+ **Cartella di output S3**
+ **Chiave KMS di crittografia di output** (se attivi **Configura crittografia del processo**)
+ **Chiave KMS di crittografia del volume dell’istanza del processo** (se attivi **Configura crittografia del processo**)

Questa funzionalità consente di risparmiare tempo se si inseriscono valori diversi da quelli predefiniti forniti e si continua a utilizzare tali valori per future esecuzioni di processo. Le impostazioni utente scelte vengono archiviate sul computer su cui è in esecuzione il JupyterLab server e recuperate con l'aiuto dell'API nativa. Se fornisci nuovi valori predefiniti per una o più opzioni (ma non per tutte e cinque), alle opzioni non personalizzate vengono applicati i valori predefiniti precedenti.

Le istruzioni seguenti mostrano come visualizzare in anteprima i valori predefiniti esistenti, impostare nuovi valori predefiniti e reimpostare i valori predefiniti per i processi del notebook.

**Per visualizzare in anteprima i valori predefiniti esistenti per i processi del notebook, procedi come descritto di seguito:**

1. Apri la console Amazon SageMaker Studio Classic seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio Classic](studio-launch.md).

1. Nel **Browser di file** nel pannello di sinistra, fai clic con il pulsante destro del mouse sul notebook che desideri eseguire come processo pianificato.

1. Scegli **Crea un processo relativo al notebook**.

1. Scegli **Opzioni aggiuntive** per espandere la scheda delle impostazioni del processo del notebook. Puoi visualizzare le impostazioni predefinite qui. 

**Per impostare nuovi valori predefiniti per i futuri processi del notebook, procedi come descritto di seguito:**

1. Apri la console Amazon SageMaker Studio Classic seguendo le istruzioni riportate in[Avvia Amazon SageMaker Studio Classic](studio-launch.md).

1. Dal menu in alto di Studio Classic, scegli **Impostazioni**, quindi scegli **Editor delle impostazioni avanzate**.

1. Scegli **Amazon SageMaker Scheduler** dall'elenco seguente **Impostazioni**. L’opzione potrebbe essere già aperta per impostazione predefinita.

1. Puoi aggiornare le impostazioni predefinite direttamente in questa pagina dell’interfaccia utente oppure utilizzando l’editor JSON.
   + Nell’interfaccia utente puoi inserire nuovi valori per **ARN ruolo**, **Cartella di input S3**, **Cartella di output S3**, **Chiave KMS di crittografia di output** o **Chiave KMS di crittografia del volume dell’istanza del processo**. Se modifichi questi valori, vedrai le nuove impostazioni predefinite per questi campi quando crei il tuo prossimo processo del notebook in **Opzioni aggiuntive**.
   + (Facoltativo) Per aggiornare le impostazioni predefinite dell’utente con l’**Editor delle impostazioni JSON**, procedi come descritto di seguito:

     1. Nell'angolo in alto a destra, scegli **Editor delle impostazioni JSON**.

     1. Nella barra laterale sinistra **delle Impostazioni**, scegli **Amazon SageMaker AI Scheduler**. L’opzione potrebbe essere già aperta per impostazione predefinita.

        Puoi vedere i tuoi valori predefiniti attuali nel pannello **Preferenze utente**.

        Puoi vedere i valori predefiniti del sistema nel pannello **Impostazioni predefinite di sistema**.

     1. Per aggiornare i valori predefiniti, copia e incolla lo snippet JSON dal pannello **Impostazioni predefinite di sistema** al pannello **Preferenze utente** e aggiorna i campi.

     1. Se hai aggiornato i valori predefiniti, scegli l’icona **Salva impostazioni utente** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/Notebook_save.png)) nell’angolo in alto a destra. La chiusura dell'editor non salva le modifiche.

**Se hai apportato modifiche in precedenza e ora desideri ripristinare i valori predefiniti dall'utente, completa la seguente procedura:**

1. Dal menu in alto di Studio Classic, scegli **Impostazioni**, quindi scegli **Editor delle impostazioni avanzate**.

1. Scegli **Amazon SageMaker Scheduler** dall'elenco seguente **Impostazioni**. L’opzione potrebbe essere già aperta per impostazione predefinita.

1. Puoi ripristinare le impostazioni predefinite direttamente in questa pagina dell’interfaccia utente oppure utilizzando l’editor JSON.
   + Nell’interfaccia utente, puoi scegliere **Ripristina ai valori predefiniti** nell’angolo in alto a destra. Le impostazioni predefinite vengono ripristinate su stringhe vuote. Questa opzione viene visualizzata solo se in precedenza sono stati modificati i valori predefiniti.
   + (Facoltativo) Per riavviare l’impostazione predefinita con l’**Editor delle impostazioni JSON**, procedi come descritto di seguito:

     1. Nell'angolo in alto a destra, scegli **Editor delle impostazioni JSON**.

     1. Nella barra laterale sinistra **delle Impostazioni**, scegli **Amazon SageMaker AI Scheduler**. L’opzione potrebbe essere già aperta per impostazione predefinita.

        Puoi vedere i tuoi valori predefiniti attuali nel pannello **Preferenze utente**.

        Puoi vedere i valori predefiniti del sistema nel pannello **Impostazioni predefinite di sistema**.

     1. Per ripristinare le impostazioni predefinite correnti, copia il contenuto dal pannello **Impostazioni predefinite di sistema** al pannello **Preferenze utente**.

     1. Scegli l’icona **Salva impostazioni utente** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/Notebook_save.png)) nell’angolo in alto a destra. La chiusura dell'editor non salva le modifiche.

# Flussi di lavoro del processo del notebook
<a name="create-notebook-auto-run-dag"></a>

Poiché un processo del notebook esegue il codice personalizzato, puoi creare una pipeline che includa una o più fasi dei processi del notebook. I flussi di lavoro di ML spesso contengono più fasi, ad esempio una fase di elaborazione per la pre-elaborazione dei dati, una fase di addestramento per creare il modello e una fase di valutazione del modello. Un possibile utilizzo dei processi del notebook è la gestione della pre-elaborazione: prima di iniziare una fase di addestramento, potresti avere un notebook che esegue la trasformazione o l’importazione dei dati, una fase EMR che esegue la pulizia dei dati e un altro processo del notebook che esegue la personalizzazione degli input. Un processo del notebook può richiedere informazioni relative ai passaggi precedenti della pipeline o alla personalizzazione specificata dall’utente come parametri nel notebook di input. Per esempi che mostrano come passare variabili e parametri di ambiente al notebook e recuperare informazioni dalle fasi precedenti, consulta [Fase Passaggio delle informazioni da e verso il tuo notebook](create-notebook-auto-run-dag-seq.md).

In un altro caso d’uso, uno dei processi del notebook potrebbe richiamare un altro notebook per eseguire alcune attività durante l’esecuzione del notebook. In questo scenario è necessario specificare questi notebook di origine come dipendenze dalla fase dei processi del notebook. Per informazioni su come chiamare un altro notebook, consulta [Invocazione di un altro notebook nel processo del notebook](create-notebook-auto-run-dag-call.md).

[Per visualizzare alcuni notebook di esempio che mostrano come pianificare i lavori relativi ai notebook con AI SageMaker Python SDK, consulta Notebooks di esempio per notebook job.](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step)

# Fase Passaggio delle informazioni da e verso il tuo notebook
<a name="create-notebook-auto-run-dag-seq"></a>

Le sezioni seguenti descrivono i modi per passare informazioni al notebook come variabili e parametri di ambiente.

## Passaggio delle variabili di ambiente
<a name="create-notebook-auto-run-dag-seq-env-var"></a>

Passa le variabili di ambiente come dizionario all’argomento `environment_variable` di `NotebookJobStep`, come mostrato nell’esempio seguente:

```
environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000}

notebook_job_step = NotebookJobStep(
    ...
    environment_variables=environment_variables,
    ...
)
```

Puoi utilizzare le variabili di ambiente nel notebook tramite `os.getenv()`, come mostrato nell’esempio seguente:

```
# inside your notebook
import os
print(f"ParentNotebook: env_key={os.getenv('env_key')}")
```

## Passaggio dei parametri
<a name="create-notebook-auto-run-dag-seq-param"></a>

Quando passi i parametri alla prima fase Processo del notebook nell’istanza `NotebookJobStep`, puoi facoltativamente taggare una cella del notebook Jupyter per indicare dove applicare i nuovi parametri o i parametri sostitutivi. Per istruzioni su come taggare una cella nel notebook Jupyter, consulta [Parametrizzare il notebook](notebook-auto-run-troubleshoot-override.md).

I parametri vengono passati tramite il parametro `parameters` della fase Processo del notebook, come mostrato nel frammento seguente:

```
notebook_job_parameters = {
    "company": "Amazon",
}

notebook_job_step = NotebookJobStep(
    ...
    parameters=notebook_job_parameters,
    ...
)
```

All’interno del notebook di input, i parametri vengono applicati dopo la cella taggata con `parameters` oppure all’inizio del notebook se non è disponibile una cella taggata.

```
# this cell is in your input notebook and is tagged with 'parameters'
# your parameters and parameter overrides are applied after this cell
company='default'
```

```
# in this cell, your parameters are applied
# prints "company is Amazon"
print(f'company is {company}')
```

## Recupero di informazioni da un fase precedente
<a name="create-notebook-auto-run-dag-seq-interstep"></a>

La sezione seguente spiega come estrarre i dati da una fase precedente per passarli alla fase Processo del notebook.

**Utilizzo dell’attributo `properties`**

Puoi utilizzare le proprietà seguenti con l’attributo `properties` del passaggio precedente:
+ `ComputingJobName`: il nome del job di addestramento
+ `ComputingJobStatus`: lo stato del job di addestramento
+ `NotebookJobInputLocation`: la posizione di input di Amazon S3
+ `NotebookJobOutputLocationPrefix`: il percorso degli output del job di addestramento, in particolare `{NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz` in cui sono contenuti gli output
+ `InputNotebookName`: il nome del file del notebook di input
+ `OutputNotebookName`: il nome del file del notebook di output (che potrebbe non esistere nella cartella di output del job di addestramento se il processo non riesce)

Il frammento di codice seguente mostra come estrarre i parametri dall’attributo properties.

```
notebook_job_step2 = NotebookJobStep(
    ....
    parameters={
        "step1_JobName": notebook_job_step1.properties.ComputingJobName,
        "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus,
        "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation,
        "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix,
    }
```

**Utilizza JsonGet**

Se intendi passare parametri diversi da quelli menzionati in precedenza e se gli output JSON della fase precedente risiedono in Amazon S3, utilizza `JsonGet`. `JsonGet` è un meccanismo generale in grado di estrarre direttamente i dati dai file JSON in Amazon S3.

Per estrarre i file JSON in Amazon S3 con `JsonGet`, procedi come descritto di seguito:

1. Carica i file JSON su Amazon S3. Se i dati sono già caricati su Amazon S3, salta questa fase. L’esempio seguente mostra il caricamento di un file JSON in Amazon S3.

   ```
   import json
   from sagemaker.s3 import S3Uploader
   
   output = {
       "key1": "value1", 
       "key2": [0,5,10]
   }
               
   json_output = json.dumps(output)
   
   with open("notebook_job_params.json", "w") as file:
       file.write(json_output)
   
   S3Uploader.upload(
       local_path="notebook_job_params.json",
       desired_s3_uri="s3://path/to/bucket"
   )
   ```

1. Fornisci il tuo URI S3 e il percorso JSON per il valore da estrarre. Nell’esempio seguente, `JsonGet` restituisce un oggetto che rappresenta l’indice 2 del valore associato alla chiave `key2` (`10`).

   ```
   NotebookJobStep(
       ....
       parameters={
           # the key job_key1 returns an object representing the value 10
           "job_key1": JsonGet(
               s3_uri=Join(on="/", values=["s3:/", ..]),
               json_path="key2[2]" # value to reference in that json file
           ), 
           "job_key2": "Amazon" 
       }
   )
   ```

# Invocazione di un altro notebook nel processo del notebook
<a name="create-notebook-auto-run-dag-call"></a>

Puoi configurare una pipeline in cui un processo del notebook richiama un altro notebook. Di seguito viene impostato un esempio di pipeline con una fase Processo del notebook in cui il notebook chiama altri due notebook. Il notebook di input contiene le seguenti righe:

```
%run 'subfolder/notebook_to_call_in_subfolder.ipynb'
%run 'notebook_to_call.ipynb'
```

Passa questi notebook alle tue istanze `NotebookJobStep` con `additional_dependencies`, come mostrato nel frammento seguente. Tieni presente che i percorsi per i notebook in `additional_dependencies` vengono forniti dalla posizione root. Per informazioni su come l' SageMaker intelligenza artificiale carica i file e le cartelle dipendenti su Amazon S3 in modo da poter fornire correttamente i percorsi alle dipendenze, consulta la descrizione di in. `additional_dependencies` [NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep)

```
input_notebook = "inputs/input_notebook.ipynb"
simple_notebook_path = "inputs/notebook_to_call.ipynb"
folder_with_sub_notebook = "inputs/subfolder"

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input_notebook,
    additional_dependencies=[simple_notebook_path, folder_with_sub_notebook],
    tags=tags,
)
```

# Opzioni disponibili
<a name="create-notebook-auto-execution-advanced"></a>

La tabella seguente mostra tutte le opzioni disponibili che è possibile utilizzare per personalizzare il lavoro del notebook, indipendentemente dal fatto che si esegua Notebook Job in Studio, in un ambiente Jupyter locale o utilizzando l'SDK Python SageMaker . La tabella include il tipo di opzione personalizzata, una descrizione, linee guida aggiuntive su come utilizzare l'opzione, un nome di campo per l'opzione in Studio (se disponibile) e il nome del parametro per la fase di lavoro del notebook in SageMaker Python SDK (se disponibile).

Per alcune opzioni, puoi anche preimpostare valori predefiniti personalizzati in modo da non doverli specificare ogni volta che configuri un processo del notebook. Per Studio, queste opzioni sono **Ruolo**, **Cartella di input**, **Cartella di output** e **ID chiave KMS** e sono specificate nella tabella seguente. Se preimposti valori predefiniti personalizzati per queste opzioni, questi campi vengono precompilati nel modulo **Crea processo** quando crei il processo del notebook. Per informazioni dettagliate su come creare impostazioni predefinite personalizzate in ambienti Studio e Jupyter locali, consulta [Configurazione delle opzioni predefinite per i notebook locali](create-notebook-auto-execution-advanced-default.md).

L' SageMaker SDK offre anche la possibilità di impostare impostazioni predefinite intelligenti in modo da non dover specificare questi parametri quando si crea un. `NotebookJobStep` Questi parametri sono `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` e `security_group_ids` e sono specificati nella tabella seguente. Per informazioni su come configurare impostazioni predefinite intelligenti, consulta [Configurazione delle opzioni predefinite](create-notebook-auto-run-sdk.md#create-notebook-auto-run-intdefaults).


| Opzione personalizzata | Description | Linee guida specifiche per Studio | Linee guida per l'ambiente Jupyter locale | SageMaker Linee guida Python SDK | 
| --- | --- | --- | --- | --- | 
| Nome del lavoro | La visualizzazione prevista del nome del processo nella dashboard Processi del notebook. | Campo Nome processo. | Come per Studio. | Parametro notebook\$1job\$1name. L’impostazione predefinita è None. | 
| Immagine | L'immagine del container utilizzata per eseguire il notebook in modo non interattivo sul tipo di elaborazione scelto. | Campo Immagine. L'impostazione predefinita di questo campo è l'immagine corrente del notebook. Se necessario, modifica questo campo dal valore predefinito a un valore personalizzato. Se Studio non è in grado di dedurre questo valore, nel modulo viene visualizzato un errore di convalida che richiede di specificarlo. Questa immagine può essere un'[bring-your-own immagine](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html) personalizzata o un' SageMaker immagine Amazon disponibile. Per un elenco delle SageMaker immagini disponibili supportate dal notebook scheduler, consulta[SageMaker Immagini Amazon disponibili per l'uso con i notebook Studio Classic](notebooks-available-images.md). | Campo Immagine. Questo campo richiede un URI ECR di un'immagine Docker in grado di eseguire il notebook fornito sul tipo di elaborazione selezionato. Per impostazione predefinita, l'estensione scheduler utilizza un'immagine SageMaker AI Docker basata su Python 2.0 predefinita. Questa è l'immagine ufficiale di Python 3.8 DockerHub con boto3 AWS CLI e il kernel Python 3. Puoi anche fornire qualsiasi URI ECR che soddisfi le specifiche dell'immagine personalizzata del notebook. Per informazioni dettagliate, vedi [Specifiche di SageMaker immagine personalizzate per Amazon SageMaker Studio Classic](studio-byoi-specs.md). Questa immagine dovrebbe contenere tutti i kernel e le librerie necessari per l'esecuzione del notebook. | Campo obbligatorio. Parametro image\$1uri. Posizione URI di un’immagine Docker su ECR. È possibile utilizzare immagini di SageMaker distribuzione specifiche o immagini personalizzate basate su tali immagini, oppure un'immagine personalizzata preinstallata con le dipendenze dei job del notebook che soddisfino requisiti aggiuntivi. Per informazioni dettagliate, vedi [Vincoli di immagine per i lavori su notebook AI SageMaker Python SDK](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk). | 
| Tipo di istanza | Il tipo di istanza EC2 da utilizzare per eseguire il processo del notebook. Il job notebook utilizza un SageMaker Training Job come livello di elaborazione, quindi il tipo di istanza specificato deve essere un tipo di istanza supportato da SageMaker Training. | Campo Tipo di calcolo. L’impostazione predefinita è ml.m5.large. | Come per Studio. | Parametro instance\$1type. L’impostazione predefinita è ml.m5.large. | 
| Kernel | Il kernel Jupyter utilizzato per eseguire il processo relativo al notebook. | Campo Kernel. L'impostazione predefinita di questo campo è il kernel corrente del notebook. Se necessario, modifica questo campo dal valore predefinito a un valore personalizzato. Se Studio non è in grado di dedurre questo valore, nel modulo viene visualizzato un errore di convalida che richiede di specificarlo. | Campo Kernel. Questo kernel dovrebbe essere presente nell'immagine e seguire le specifiche del kernel Jupyter. Il valore predefinito di questo campo è il kernel Python3 che si trova nell'immagine base di Python 2.0. SageMaker Se necessario, modifica questo campo a un valore personalizzato. | Campo obbligatorio. Parametro kernel\$1name. Questo kernel dovrebbe essere presente nell'immagine e seguire le specifiche del kernel Jupyter. Per vedere gli identificatori del kernel per la tua immagine, consulta (LINK). | 
| SageMaker Sessione AI | La sessione SageMaker AI sottostante a cui vengono delegate le chiamate di servizio SageMaker AI. | N/D | N/D | Parametro sagemaker\$1session. Se non specificato, ne viene creato uno con una catena di configurazione predefinita. | 
| ARN del ruolo | Il nome della risorsa Amazon (ARN) del ruolo utilizzato con il processo relativo al notebook. | Campo ARN ruolo. Il valore predefinito di questo campo è il ruolo di esecuzione di Studio. Se necessario, modifica questo campo a un valore personalizzato.  Se Studio non è in grado di dedurre questo valore, il campo **ARN del ruolo** è vuoto. In questo caso, inserisci l'ARN che desideri utilizzare.  | Campo ARN ruolo. Il valore predefinito di questo campo è qualsiasi ruolo preceduto da SagemakerJupyterScheduler. Se hai più ruoli con il prefisso, l'estensione ne sceglie uno. Se necessario, modifica questo campo a un valore personalizzato. Per questo campo, puoi impostare i tuoi valori predefiniti utente che vengono precompilati ogni volta che crei una nuova definizione di processo. Per informazioni dettagliate, vedi [Configurazione delle opzioni predefinite per i notebook locali](create-notebook-auto-execution-advanced-default.md). | Parametro role. Il valore predefinito è il ruolo IAM predefinito di SageMaker AI se l'SDK è in esecuzione su notebook o SageMaker notebook da studio. SageMaker In caso contrario, restituisce ValueError. Consente impostazioni predefinite intelligenti. | 
| Notebook di input | Il nome del notebook che stai pianificando per l’esecuzione. | Campo obbligatorio. Campo File di input. | Come per Studio. | Required.Parameter input\$1notebook. | 
| Cartella di input | La cartella che contiene i tuoi input. Gli input di processo, incluso il notebook di input e gli eventuali script di avvio o inizializzazione opzionali, vengono inseriti in questa cartella. | Campo Cartella di input. Se non fornisci una cartella, il pianificatore crea un bucket Amazon S3 predefinito per i tuoi input. | Come per Studio. Per questo campo, puoi impostare i tuoi valori predefiniti utente che vengono precompilati ogni volta che crei una nuova definizione di processo. Per informazioni dettagliate, vedi [Configurazione delle opzioni predefinite per i notebook locali](create-notebook-auto-execution-advanced-default.md). | N/D. La cartella di input viene inserita nella posizione specificata dal parametro s3\$1root\$1uri. | 
| Cartella di output | La cartella che contiene i tuoi output. Gli output di processo, inclusi il notebook di output e i log, vengono inseriti in questa cartella. | Campo Cartella di output. Se non specifichi una cartella, il pianificatore crea un bucket Amazon S3 predefinito per i tuoi output. | Come per Studio. Per questo campo, puoi impostare i tuoi valori predefiniti utente che vengono precompilati ogni volta che crei una nuova definizione di processo. Per informazioni dettagliate, vedi [Configurazione delle opzioni predefinite per i notebook locali](create-notebook-auto-execution-advanced-default.md). | N/D. La cartella di output viene inserita nella posizione specificata dal parametro s3\$1root\$1uri. | 
| Parameters | Un dizionario di variabili e valori da passare al tuo processo del notebook. | Campo Parametri. È necessario [definire i parametri del notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) per accettare i parametri. | Come per Studio. | Parametro parameters. È necessario [definire i parametri del notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) per accettare i parametri. | 
| Dipendenze aggiuntive (file o cartella) | L’elenco delle dipendenze di file o cartelle caricato dal processo del notebook nella cartella di staging s3. | Non supportato. | Non supportato. | Parametro additional\$1dependencies. Il processo del notebook carica queste dipendenze in una cartella di staging S3 in modo che possano essere utilizzate durante l’esecuzione. | 
| URI root S3 | La cartella che contiene i tuoi input. Gli input di processo, incluso il notebook di input e gli eventuali script di avvio o inizializzazione opzionali, vengono inseriti in questa cartella. Questo bucket S3 deve trovarsi nello stesso Account AWS utilizzato per eseguire il processo del notebook. | N/D. Utilizza Cartella di input e Cartella di output. | Come per Studio. | Parametro s3\$1root\$1uri. Il valore predefinito è un bucket S3 predefinito. Consente impostazioni predefinite intelligenti. | 
| Variabili di ambiente | Qualsiasi variabile di ambiente esistente che desideri sostituire o nuove variabili di ambiente che desideri introdurre e utilizzare nel tuo notebook. | Campo Variabili di ambiente. | Come per Studio. | Parametro environment\$1variables. L’impostazione predefinita è None. | 
| Tag | Un elenco di tag collegati al processo. | N/D | N/D | Parametro tags. L’impostazione predefinita è None. I tag controllano il modo in cui l’interfaccia utente di Studio acquisisce e visualizza il processo creato dalla pipeline. Per informazioni dettagliate, vedi [Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash). | 
| Script di avvio | Uno script precaricato nel menu di avvio del notebook che è possibile scegliere di eseguire prima di eseguire il notebook. | Campo Script di avvio. Seleziona uno script di configurazione del ciclo di vita (LCC) da eseguire sull'immagine all'avvio. Uno script di avvio viene eseguito in una shell esterna all'ambiente di Studio. Pertanto, questo script non può dipendere dall'archiviazione locale di Studio, dalle variabili di ambiente o dai metadati dell'app (in `/opt/ml/metadata`). Inoltre, se si utilizza uno script di avvio e uno script di inizializzazione, lo script di avvio viene eseguito per primo.   | Non supportato. | Non supportato. | 
| Script di inizializzazione | Un percorso verso uno script locale che è possibile eseguire all'avvio del notebook. | Campo Script di inizializzazione. Immettere il percorso del file EFS in cui si trova uno script locale o uno script di configurazione del ciclo di vita (LCC). Se si utilizza uno script di avvio e uno script di inizializzazione, lo script di avvio viene eseguito per primo. Uno script di inizializzazione proviene dalla stessa shell del processo relativo al notebook. Questo non è il caso di uno script di avvio descritto in precedenza. Inoltre, se si utilizza uno script di avvio e uno script di inizializzazione, lo script di avvio viene eseguito per primo.    | Campo Script di inizializzazione. Immettere il percorso del file locale in cui si trova uno script locale o uno script di configurazione del ciclo di vita (LCC).  | Parametro initialization\$1script. L’impostazione predefinita è None. | 
| Numero massimo di tentativi | Il numero di volte in cui Studio tenta di rieseguire l'esecuzione di un processo non riuscita. | Campo Numero massimo di nuovi tentativi. L'impostazione predefinita è 2. | Come per Studio. | Parametro max\$1retry\$1attempts. L'impostazione predefinita è 2. | 
| Tempo di esecuzione massimo (in secondi) | La durata massima, espressa in secondi, di esecuzione di un processo relativo al notebook prima di essere arrestato. Se si configurano sia il Tempo di esecuzione massimo che il Numero massimo di tentativi, il tempo di esecuzione si applica a ogni nuovo tentativo. Se un processo non viene completato entro questo lasso di tempo, il suo stato viene impostato su Failed. | Campo Runtime massimo (in secondi). L’impostazione predefinita è 172800 seconds (2 days). | Come per Studio. | Parametro max\$1runtime\$1in\$1seconds. L’impostazione predefinita è 172800 seconds (2 days). | 
| Policy di ripetizione | Un elenco di policy di ripetizione, che regolano le azioni da intraprendere in caso di errore. | Non supportato. | Non supportato. | Parametro retry\$1policies. L’impostazione predefinita è None. | 
| Aggiunta di dipendenze Step o StepCollection | Un elenco di nomi o istanze Step o StepCollection da cui dipende il processo. | Non supportato. | Non supportato. | Parametro depends\$1on. L’impostazione predefinita è None. Utilizzalo per definire le dipendenze esplicite tra le fasi del grafo della pipeline. | 
| Volume size (Dimensione dei volumi) | La dimensione in GB del volume di archiviazione dove archiviare i dati di input e output durante l’addestramento. | Non supportato. | Non supportato. | Parametro volume\$1size. L’impostazione predefinita è 30 GB. | 
| Crittografia del traffico tra container | Un flag che specifica se il traffico tra i container di addestramento è crittografato per il job di addestramento. | N/D. Abilitata per impostazione predefinita. | N/D. Abilitata per impostazione predefinita. | Parametro encrypt\$1inter\$1container\$1traffic. L’impostazione predefinita è True. | 
| Configurazione della crittografia dei processi | Un indicatore che indica che si desidera crittografare gli output del processo relativo al notebook, il volume dell'istanza del processo o entrambi. | Campo Configura crittografia del processo. Seleziona questa casella per scegliere la crittografia. Se non viene selezionata, gli output del processo vengono crittografati con la chiave KMS predefinita dell'account e il volume dell'istanza del processo non viene crittografato. | Come per Studio. | Non supportato. | 
| Chiave KMS di crittografia di output | Una chiave KMS da utilizzare se si desidera personalizzare la chiave di crittografia utilizzata per gli output del processo relativo al notebook. Questo campo è applicabile solo se è stata selezionata l'opzione Configurazione della crittografia dei processi. | Campo Chiave KMS di crittografia di output Se non specifichi questo campo, gli output del processo relativo al notebook vengono crittografati con SSE-KMS utilizzando la chiave KMS Amazon S3 predefinita. Inoltre, se crei tu stesso il bucket Amazon S3 e utilizzi la crittografia, il metodo di crittografia viene conservato. | Come per Studio. Per questo campo, puoi impostare i tuoi valori predefiniti utente che vengono precompilati ogni volta che crei una nuova definizione di processo. Per informazioni dettagliate, vedi [Configurazione delle opzioni predefinite per i notebook locali](create-notebook-auto-execution-advanced-default.md). | Parametro s3\$1kms\$1key. L’impostazione predefinita è None. Consente impostazioni predefinite intelligenti. | 
| Chiave KMS di crittografia del volume dell'istanza del processo | Una chiave KMS da utilizzare se desideri crittografare il volume dell'istanza del processo. Questo campo è applicabile solo se è stata selezionata l'opzione Configurazione della crittografia dei processi. | Campo Chiave KMS di crittografia del volume dell’istanza del processo. | Campo Chiave KMS di crittografia del volume dell’istanza del processo. Per questo campo, puoi impostare i tuoi valori predefiniti utente che vengono precompilati ogni volta che crei una nuova definizione di processo. Per informazioni dettagliate, vedi [Configurazione delle opzioni predefinite per i notebook locali](create-notebook-auto-execution-advanced-default.md). | Parametro volume\$1kms\$1key. L’impostazione predefinita è None. Consente impostazioni predefinite intelligenti. | 
| Utilizzo di un Cloud privato virtuale per eseguire questo processo (per utenti VPC) | Un indicatore che indica che desideri eseguire questo processo in un cloud privato virtuale (VPC). Per una maggiore sicurezza, si consiglia di utilizzare un VPC privato. | Campo Utilizza un cloud privato virtuale per eseguire questo processo. Seleziona questa casella se desideri utilizzare un VPC. Crea almeno i seguenti endpoint VPC per consentire al tuo notebook job di connettersi privatamente a tali risorse: AWS [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/create-notebook-auto-execution-advanced.html)Se scegli di utilizzare un VPC, devi specificare almeno una sottorete privata e almeno un gruppo di sicurezza nelle seguenti opzioni. Se non utilizzi alcuna sottorete privata, devi prendere in considerazione altre opzioni di configurazione. Per i dettagli, consulta Sottoreti VPC pubbliche non supportate in [Vincoli e considerazioni](notebook-auto-run-constraints.md). | Come per Studio. | N/D | 
| Sottoreti (per utenti VPC) | Le tue sottoreti. Questo campo deve contenerne almeno una e al massimo cinque e tutte le sottoreti fornite devono essere private. Per i dettagli, consulta Sottoreti VPC pubbliche non supportate in [Vincoli e considerazioni](notebook-auto-run-constraints.md). | Campo Sottoreti. Questo campo utilizza per impostazione predefinita le sottoreti associate al dominio Studio, ma è possibile modificare questo campo se necessario. | Campo Sottoreti. Il pianificatore non è in grado di rilevare le tue sottoreti, quindi devi inserire tutte le sottoreti configurate per il tuo VPC. | Parametro subnets. L’impostazione predefinita è None. Consente impostazioni predefinite intelligenti. | 
| Gruppi di sicurezza (per utenti VPC) | I tuoi gruppi di sicurezza. Questo campo deve contenerne almeno uno e al massimo 15. Per i dettagli, consulta Sottoreti VPC pubbliche non supportate in [Vincoli e considerazioni](notebook-auto-run-constraints.md). | Campo Gruppi di sicurezza. Questo campo utilizza per impostazione predefinita i gruppi di sicurezza associati al dominio VPC, ma è possibile modificare questo campo se necessario. | Campo Gruppi di sicurezza. Il pianificatore non è in grado di rilevare i tuoi gruppi di sicurezza, quindi devi inserire tutti i gruppi di sicurezza configurati per il tuo VPC. | Parametro security\$1group\$1ids. L’impostazione predefinita è None. Consente impostazioni predefinite intelligenti. | 
| Name | Il nome della fase dei processi del notebook. | N/D | N/D | Parametro name. Se non specificato, viene derivato dal nome del file del notebook. | 
| Display name (Nome visualizzato) | Il nome del processo così come dovrebbe apparire nell’elenco delle esecuzioni della pipeline. | N/D | N/D | Parametro display\$1name. L’impostazione predefinita è None. | 
| Description | Una descrizione del tuo processo. | N/D | N/D | Parametro description. | 

# Parametrizzare il notebook
<a name="notebook-auto-run-troubleshoot-override"></a>

Per passare nuovi parametri o sostituzioni dei parametri al processo del notebook pianificato, puoi modificare il tuo notebook Jupyter per applicare i nuovi valori dei parametri dopo una cella. Quando passi un parametro, l’esecutore di processi del notebook utilizza la metodologia applicata da Papermill. L’esecutore di processi del notebook cerca una cella Jupyter a cui è applicato il tag `parameters` e applica i nuovi parametri o le sostituzioni dei parametri subito dopo questa cella. Se non sono presenti celle taggate con `parameters`, i parametri vengono applicati all’inizio del notebook. Se più celle sono taggate con `parameters`, i parametri vengono applicati dopo la prima cella con taggata con `parameters`.

Per applicare il tag `parameters` a una cella del notebook, completa la seguente procedura:

1. Seleziona la cella da parametrizzare.

1. Seleziona l’icona **Controllo proprietà** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/gears.png)) nella barra laterale destra.

1. Digita **parameters** nella casella **Aggiungi tag**.

1. Scegli il segno **\$1**.

1. Il tag `parameters` viene visualizzato sotto **Tag della cella** con un segno di spunta, il che significa che il tag è applicato alla cella.

# Connessione a un cluster Amazon EMR dal notebook
<a name="scheduled-notebook-connect-emr"></a>

Se ti connetti a un cluster Amazon EMR dal tuo notebook Jupyter in Studio, potresti dover eseguire una configurazione aggiuntiva. In particolare, la discussione seguente affronta due questioni:
+ **Passaggio dei parametri al comando di connessione Amazon EMR**. Nei SparkMagic kernel, i parametri passati al comando di connessione Amazon EMR potrebbero non funzionare come previsto a causa delle differenze nel modo in cui Papermill passa i parametri e SparkMagic come li riceve. La soluzione alternativa per ovviare a questa limitazione consiste nel passare i parametri come variabili di ambiente. Per ulteriori dettagli sul problema e sulla soluzione alternativa, consulta [Passa i parametri al comando di connessione EMR](#scheduled-notebook-connect-emr-pass-param).
+ **Passaggio delle credenziali utente a cluster Amazon EMR autenticati con Kerberos, LDAP o HTTP Basic Auth**. In modalità interattiva, Studio richiede le credenziali in un modulo popup in cui è possibile inserire le credenziali di accesso. Nel tuo notebook pianificato non interattivo, devi passarle attraverso Gestione dei segreti AWS. Per ulteriori dettagli su come utilizzare i processi pianificati Gestione dei segreti AWS del notebook, consulta. [Passa le credenziali utente al cluster Amazon EMR autenticato con Kerberos, LDAP o HTTP Basic Auth](#scheduled-notebook-connect-emr-credentials)

## Passa i parametri al comando di connessione EMR
<a name="scheduled-notebook-connect-emr-pass-param"></a>

**Se utilizzi immagini con i kernel SparkMagic PySpark e Spark e desideri parametrizzare il comando di connessione EMR, fornisci i parametri nel campo Variabili di **ambiente anziché nel** campo Parametri nel modulo Create Job (nel menu a discesa Opzioni aggiuntive).** Assicurati che il comando di connessione EMR nel notebook Jupyter passi questi parametri come variabili di ambiente. Ad esempio, supponiamo che tu passi `cluster-id` come variabile di ambiente quando crei il tuo processo. Il comando di connessione EMR dovrebbe essere simile a quello riportato di seguito:

```
%%local
import os
```

```
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
```

Questa soluzione alternativa è necessaria per soddisfare i requisiti di and Papermill. SparkMagic Per quanto riguarda il contesto di base, il SparkMagic kernel si aspetta che il comando `%%local` magic accompagni tutte le variabili locali definite. Tuttavia, Papermill non passa il comando magic `%%local` con le sostituzioni. Per aggirare questa limitazione di Papermill, è necessario fornire i parametri come variabili di ambiente nel campo **Variabili di ambiente**.

## Passa le credenziali utente al cluster Amazon EMR autenticato con Kerberos, LDAP o HTTP Basic Auth
<a name="scheduled-notebook-connect-emr-credentials"></a>

Per stabilire una connessione sicura a un cluster Amazon EMR che utilizza l'autenticazione Kerberos, LDAP o HTTP Basic Auth, usi Gestione dei segreti AWS per passare le credenziali utente al comando di connessione. Per informazioni sulla creazione di un segreto in Secrets Manager, consulta la pagina [Crea un segreto Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). Il segreto deve contenere un nome utente e una password. Si passa il segreto con l'argomento `--secrets`, come illustrato nell'esempio seguente:

```
%sm_analytics emr connect --cluster-id j_abcde12345 
    --auth Kerberos 
    --secret aws_secret_id_123
```

L'amministratore può impostare una politica di accesso flessibile utilizzando un metodo attribute-based-access-control (ABAC), che assegna l'accesso in base a tag speciali. È possibile configurare un accesso flessibile per creare un unico segreto per tutti gli utenti dell'account o un segreto per ogni utente. I seguenti esempi di codice illustrano questi scenari:

**Crea un unico segreto per tutti gli utenti dell'account**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

**Crea un segreto diverso per ogni utente**

Puoi creare un segreto diverso per ogni utente utilizzando il tag `PrincipleTag`, come mostrato nell'esempio seguente:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}"
                }
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

# Dettagli sulle offerte di lavoro con notebook in Amazon SageMaker Studio
<a name="track-jobs-jobdefs"></a>

SageMaker Le dashboard di Notebook Jobs aiutano a organizzare le definizioni dei lavori che pianifichi e inoltre tengono traccia dei lavori effettivi che vengono eseguiti dalle definizioni dei lavori. Ci sono due concetti importanti da comprendere quando si pianificano processi relativi al notebook: le *definizioni di processo* e le *esecuzioni di processo*. Le definizioni di processo sono pianificazioni impostate per eseguire notebook specifici. Ad esempio, è possibile creare una definizione di processo che esegua il notebook XYZ.ipynb ogni mercoledì. Questa definizione di processo avvia le esecuzioni di processo effettive che si verificano mercoledì prossimo, il mercoledì successivo, il mercoledì dopo ancora e così via. 

**Nota**  
La fase di lavoro del notebook SageMaker Python SDK non crea definizioni di lavoro. Tuttavia, puoi visualizzare i tuoi processi nella dashboard Processi del notebook. Sia i lavori che le definizioni dei lavori sono disponibili se si pianifica il lavoro in un JupyterLab ambiente.

L'interfaccia offre due schede principali che consentono di tenere traccia delle definizioni e delle esecuzioni di processo esistenti:
+ Scheda **Processi relativi al notebook**: questa scheda mostra un elenco di tutte le esecuzioni di processo dai processi on demand e dalle definizioni di processo. Da questa scheda è possibile accedere direttamente ai dettagli relativi a una singola esecuzione di processo. Ad esempio, è possibile visualizzare un singolo processo eseguito due mercoledì fa.
+ Scheda **Definizioni di processo relative al notebook**: questa scheda mostra un elenco di tutte le definizioni di processo. Da questa scheda è possibile accedere direttamente ai dettagli relativi a una singola definizione di processo. Ad esempio, è possibile visualizzare la pianificazione creata per eseguire xyz.ipynb ogni mercoledì.

Per informazioni dettagliate sulla scheda **Processi relativi al notebook**, consulta [Visualizza i processi relativi al notebook](view-notebook-jobs.md).

Per informazioni dettagliate sulla scheda **Definizioni di processo relative al notebook**, consulta [Visualizza le definizioni di processo relative al notebook](view-def-detail-notebook-auto-run.md).

# Visualizza i processi relativi al notebook
<a name="view-notebook-jobs"></a>

**Nota**  
Puoi visualizzare automaticamente i processi del notebook se li hai pianificati dall’interfaccia utente di Studio. Se hai usato SageMaker Python SDK per pianificare il lavoro del notebook, devi fornire tag aggiuntivi quando crei la fase di lavoro del notebook. Per informazioni dettagliate, vedi [Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

L’argomento seguente fornisce informazioni sulla scheda **Processi del notebook** e su come visualizzare i dettagli di un singolo processo del notebook. La scheda **Processi del notebook** (a cui puoi accedere scegliendo l’icona **Crea un processo del notebook** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/notebook-schedule.png)) nella barra degli strumenti di Studio) mostra una cronologia dei processi on demand e di tutti i processi eseguiti dalle definizioni dei processi create. Questa scheda si apre dopo aver creato un processo on demand, oppure puoi semplicemente visualizzarla tu stesso per vedere una cronologia dei processi passati e attuali. Se si seleziona il **Nome del processo** per qualsiasi processo, è possibile visualizzare i dettagli di un singolo processo nella relativa pagina **Dettagli del processo**. Per ulteriori informazioni sulla pagina **Dettagli del processo**, consulta la sezione seguente [Visualizza un singolo processo](#view-jobs-detail-notebook-auto-run).

La scheda **Processi relativi al notebook** include le seguenti informazioni per ogni processo:
+ **File di output**: visualizza la disponibilità dei file di output. Questa colonna può contenere uno dei seguenti elementi:
  + Un’icona di download (![\[Cloud icon with downward arrow, representing download or cloud storage functionality.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/File_download.png)): il notebook e il log di output sono disponibili per il download. Scegli questo pulsante per scaricarli. Tieni presente che un processo non riuscito può comunque generare file di output se l'errore si è verificato dopo la creazione dei file. In questo caso, è utile visualizzare il notebook di output per identificare il punto di errore.
  + Collegamenti al **Notebook** e al **Log di output**: il notebook e il log di output vengono scaricati. Scegli i collegamenti per visualizzare i loro contenuti.
  + (vuoto): Il processo è stato arrestato dall'utente oppure si è verificato un errore durante l'esecuzione del processo prima che potesse generare file di output. Ad esempio, errori di rete potrebbero impedire l'avvio del processo.

  Il notebook di output è il risultato dell'esecuzione di tutte le celle del notebook e incorpora anche tutti i parametri o le variabili di ambiente nuovi o sostituiti che hai incluso. Il log di output acquisisce i dettagli dell'esecuzione del processo per aiutarti a risolvere i problemi relativi ai processi non riusciti.
+ **Ora di creazione**: l'ora in cui è stato creato il processo on demand o il processo pianificato.
+ **Stato**: lo stato corrente del processo, che è uno dei seguenti valori:
  + **In corso**: il processo è in esecuzione
  + **Non riuscito**: il processo non è riuscito a causa di errori logici della configurazione o del notebook
  + **Arrestato**: il processo è stato arrestato dall'utente
  + **Completato**: il processo è stato completato
+ **Azioni**: questa colonna fornisce tasti di scelta rapida per aiutarti ad arrestare o rimuovere qualsiasi processo direttamente nell'interfaccia.

## Visualizza un singolo processo
<a name="view-jobs-detail-notebook-auto-run"></a>

Dalla scheda **Processi relativi al notebook**, è possibile selezionare un nome di processo per visualizzare la pagina **Dettagli del processo** per un processo specifico. La pagina **Dettagli del processo** include tutti i dettagli forniti nel modulo **Crea processo**. Utilizza questa pagina per confermare le impostazioni specificate al momento della creazione della definizione del processo. 

Inoltre, è possibile accedere ai tasti di scelta rapida che ti aiutano a eseguire le seguenti operazioni nella pagina stessa:
+ **Elimina processo**: rimuove il processo dalla scheda **Processi relativi al notebook**.
+ **Arresta processo**: interrompe il processo in esecuzione.

# Visualizza le definizioni di processo relative al notebook
<a name="view-def-detail-notebook-auto-run"></a>

**Nota**  
Se hai pianificato il tuo lavoro sul notebook con SageMaker Python SDK, salta questa sezione. Solo i lavori su notebook creati in Studio o in JupyterLab ambienti locali creano definizioni di lavoro. Pertanto, se hai creato il tuo lavoro notebook con SageMaker Python SDK, non vedrai le definizioni dei lavori nella dashboard di Notebook Jobs. Tuttavia, puoi visualizzare i processi del notebook come descritto in [Visualizza i processi relativi al notebook](view-notebook-jobs.md). 

Quando si crea una definizione di processo, si crea una pianificazione per un processo. La scheda **Definizioni dei processi del notebook** elenca queste pianificazioni, oltre a informazioni su specifiche definizioni dei processi del notebook. Ad esempio, è possibile creare una definizione di processo che esegua un notebook specifico ogni minuto. Una volta che questa definizione di processo è attiva, nella scheda **Processi relativi al notebook** viene visualizzato un nuovo processo ogni minuto. La pagina seguente fornisce informazioni sulla scheda **Definizioni dei processi del notebook** e su come visualizzare una definizione dei processi del notebook.

La scheda **Definizioni di processo relative al notebook** visualizza un pannello di controllo con tutte le definizioni di processo e include il notebook di input, la data di creazione, la pianificazione e lo stato di ogni definizione di processo. Il valore nella colonna **Stato** è uno dei seguenti valori:
+ **In pausa**: è stata messa in pausa la definizione del processo. Studio non avvia alcun processo finché non riprendi la definizione.
+ **Attiva**: la pianificazione è attiva e Studio può eseguire il notebook in base alla pianificazione specificata.

Inoltre, la colonna **Azioni** fornisce tasti di scelta rapida che aiutano a eseguire le seguenti attività direttamente nell'interfaccia:
+ Pausa: sospende la definizione del processo. Studio non creerà alcun processo finché non riprendi la definizione.
+ Elimina: rimuove la definizione del processo dalla scheda **Definizioni di processo relative al notebook**.
+ Riprendi: continua una definizione di processo messa in pausa in modo che possa avviare i processi.

Se hai creato una definizione del processo ma questa non avvia processi, consulta [La definizione del processo non crea processi](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) in [Guida alla risoluzione dei problemi](notebook-auto-run-troubleshoot.md).

## Visualizza una singola definizione del processo
<a name="view-job-definition-detail-page"></a>

Se si seleziona un nome della definizione del processo nella scheda **Definizioni di processo relative al notebook**, viene visualizzata la pagina **Definizione del processo** in cui è possibile visualizzare dettagli specifici per una definizione del processo. Utilizza questa pagina per confermare le impostazioni specificate al momento della creazione della definizione del processo. Se non vedi nessun processo creato dalla tua definizione del processo, consulta [La definizione del processo non crea processi](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) in [Guida alla risoluzione dei problemi](notebook-auto-run-troubleshoot.md).

Questa pagina contiene anche una sezione che elenca i processi che vengono eseguiti a partire da questa definizione del processo. La visualizzazione dei processi nella pagina **Definizione del processo** può essere un modo più produttivo per aiutarti a organizzare i tuoi processi invece di visualizzare i processi nella scheda **Processi relativi al notebook**, che combina tutti i processi di tutte le tue definizioni di processo.

Inoltre, questa pagina fornisce tasti di scelta rapida per le seguenti operazioni:
+ **Pausa/Riprendi**: mette in pausa la definizione del processo o riprende una definizione in pausa. Tieni presente che se è attualmente in esecuzione un processo per questa definizione, Studio non lo arresta.
+ **Esegui**: esegui un singolo processo on demand da questa definizione del processo. Questa opzione consente inoltre di specificare parametri di input diversi sul notebook prima di avviare il processo.
+ **Modifica definizione del processo**: modifica la pianificazione della definizione del processo. Puoi selezionare un intervallo di tempo diverso oppure puoi optare per una pianificazione personalizzata utilizzando la sintassi cron.
+ **Elimina definizione del processo**: rimuovi la definizione del processo dalla scheda **Definizioni di processo relative al notebook**. Tieni presente che se è attualmente in esecuzione un processo per questa definizione, Studio non lo arresta.

# Guida alla risoluzione dei problemi
<a name="notebook-auto-run-troubleshoot"></a>

Fai riferimento a questa guida alla risoluzione dei problemi per aiutarti a eseguire il debug degli errori che potresti riscontrare durante le esecuzioni dei processi pianificati relativi al notebook.

## La definizione del processo non crea processi
<a name="notebook-auto-run-troubleshoot-no-jobs"></a>

Se la definizione del lavoro non avvia alcun processo, il notebook o il lavoro di formazione potrebbero non essere visualizzati nella sezione **Lavori** sulla barra di navigazione a sinistra di Amazon SageMaker Studio. In tal caso, puoi trovare i messaggi di errore nella sezione **Pipelines** sulla barra di navigazione a sinistra di Studio. Ogni definizione dei processi del notebook o dei job di addestramento appartiene a una pipeline di esecuzione. Le seguenti sono le cause più comuni del mancato avvio dei processi del notebook.

**Autorizzazioni mancanti**
+ Il ruolo assegnato alla definizione del lavoro non ha un rapporto di fiducia con Amazon EventBridge. Cioè, EventBridge non può assumere il ruolo.
+ Il ruolo assegnato alla definizione del processo non dispone dell'autorizzazione per chiamare `SageMaker AI:StartPipelineExecution`.
+ Il ruolo assegnato alla definizione del processo non dispone dell'autorizzazione per chiamare `SageMaker AI:CreateTrainingJob`.

**EventBridge quota superata**

Se viene visualizzato un `Put*` errore come quello riportato nell'esempio seguente, significa che è stata superata una EventBridge quota. Per risolvere il problema, puoi eliminare le EventBridge esecuzioni inutilizzate o chiedere di Supporto AWS aumentare la quota.

```
LimitExceededException) when calling the PutRule operation: 
The requested resource exceeds the maximum number allowed
```

Per ulteriori informazioni sulle EventBridge quote, consulta la sezione [ EventBridge Quote Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

**Limite di quota delle pipeline superato**

Se compare un errore simile all'esempio seguente, significa che è stato superato il numero di pipeline eseguibili. Per risolvere il problema, è possibile eliminare le pipeline non utilizzate nell'account o chiedere a Supporto AWS di aumentare la quota.

```
ResourceLimitExceeded: The account-level service limit 
'Maximum number of pipelines allowed per account' is XXX Pipelines, 
with current utilization of XXX Pipelines and a request delta of 1 Pipelines.
```

Per ulteriori informazioni sulle quote della pipeline, consulta [Endpoints e quote di Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

**Limite di processi di addestramento superato**

Se compare un errore simile all'esempio seguente, significa che è stato superato il numero di processi di addestramento eseguibili. Per risolvere questo problema, riduci il numero di lavori di formazione nel tuo account o chiedi Supporto AWS di aumentare la tua quota.

```
ResourceLimitExceeded: The account-level service limit 
'ml.m5.2xlarge for training job usage' is 0 Instances, with current 
utilization of 0 Instances and a request delta of 1 Instances. 
Please contact AWS support to request an increase for this limit.
```

Per ulteriori informazioni sulle quote dei lavori di formazione, consulta [Endpoints e quote di Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

## Le visualizzazioni automatiche sono disattivate nei notebook SparkMagic
<a name="notebook-auto-run-troubleshoot-visualization"></a>

Se il tuo notebook utilizza il SparkMagic PySpark kernel e lo esegui come Notebook Job, potresti notare che le tue visualizzazioni automatiche sono disabilitate nell'output. L’attivazione della visualizzazione automatica causa il blocco del kernel, quindi l’esecutore di processi del notebook disabilita le visualizzazioni automatiche come soluzione alternativa.

# Vincoli e considerazioni
<a name="notebook-auto-run-constraints"></a>

Esamina i seguenti vincoli per assicurarti che i processi relativi al notebook vengano completati correttamente. Studio utilizza Papermill per eseguire notebook. Potrebbe essere necessario aggiornare i notebook Jupyter per adattarli ai requisiti di Papermill. Esistono anche restrizioni sul contenuto degli script LCC e dettagli importanti da comprendere sulla configurazione del VPC.

## JupyterLab versione
<a name="notebook-auto-run-constraints-jpt"></a>

JupyterLab è supportata la versione 4.0.

## Installazione di pacchetti che richiedono il riavvio del kernel
<a name="notebook-auto-run-constraints-pmill-pkg"></a>

Papermill non supporta le chiamate `pip install` per installare pacchetti che richiedono il riavvio del kernel. In questa situazione, utilizza `pip install` in uno script di inizializzazione. Per l'installazione di un pacchetto che non richiede il riavvio del kernel, è comunque possibile includere `pip install` nel notebook. 

## Nomi del kernel e delle lingue registrati con Jupyter
<a name="notebook-auto-run-constraints-pmill-names"></a>

Papermill registra un traduttore per kernel e lingue specifici. Se porti la tua istanza personale (BYOI), utilizza un nome kernel standard come mostrato nel seguente snippet:

```
papermill_translators.register("python", PythonTranslator)
papermill_translators.register("R", RTranslator)
papermill_translators.register("scala", ScalaTranslator)
papermill_translators.register("julia", JuliaTranslator)
papermill_translators.register("matlab", MatlabTranslator)
papermill_translators.register(".net-csharp", CSharpTranslator)
papermill_translators.register(".net-fsharp", FSharpTranslator)
papermill_translators.register(".net-powershell", PowershellTranslator)
papermill_translators.register("pysparkkernel", PythonTranslator)
papermill_translators.register("sparkkernel", ScalaTranslator)
papermill_translators.register("sparkrkernel", RTranslator)
papermill_translators.register("bash", BashTranslator)
```

## Limiti relativi a parametri e variabili di ambiente
<a name="notebook-auto-run-constraints-var-limits"></a>

**Limiti relativi a parametri e variabili di ambiente.** Quando crei il processo relativo al notebook, questo riceve i parametri e le variabili di ambiente specificati. È possibile passare fino a 100 parametri. Ogni nome di parametro può contenere fino a 256 caratteri e il valore associato può contenere fino a 2500 caratteri. Se si passano variabili di ambiente, è possibile passarne fino a 28. Il nome della variabile e il valore associato possono contenere fino a 512 caratteri. Se hai bisogno di più di 28 variabili di ambiente, usa variabili di ambiente aggiuntive in uno script di inizializzazione che non ha limiti al numero di variabili di ambiente che puoi usare.

## Visualizzazione dei processi e delle definizioni dei processi
<a name="notebook-auto-run-constraints-view-job"></a>

**Visualizzazione dei processi e delle definizioni dei processi**. Se si pianifica il lavoro relativo al JupyterLab notebook nell'interfaccia utente di Studio, è possibile [visualizzare i lavori relativi al notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/view-notebook-jobs.html) [e le relative definizioni](https://docs.aws.amazon.com/sagemaker/latest/dg/view-def-detail-notebook-auto-run.html) nell'interfaccia utente di Studio. Se hai pianificato il tuo lavoro sul notebook con SageMaker Python SDK, puoi solo visualizzare i tuoi lavori: la fase di lavoro del notebook SageMaker Python SDK non crea definizioni di lavoro. Per visualizzare i processi, è inoltre necessario fornire tag aggiuntivi all’istanza della fase dei processi del notebook. Per informazioni dettagliate, vedi [Visualizzazione dei processi del notebook nella dashboard dell’interfaccia utente di Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

## Immagine
<a name="notebook-auto-run-constraints-image"></a>

È necessario gestire i vincoli relativi all'immagine a seconda che si eseguano i processi notebook in Studio o la fase di lavoro del notebook SageMaker Python SDK in una pipeline.

### Vincoli di immagine per AI Notebook Jobs (Studio) SageMaker
<a name="notebook-auto-run-constraints-image-studio"></a>

**Supporto per immagini e kernel.** Il driver che avvia il processo relativo al notebook presuppone quanto segue:
+ Un ambiente di runtime Python di base è installato nelle immagini Studio o bring-your-own (BYO) ed è l'impostazione predefinita nella shell.
+ L'ambiente di runtime Python di base include il client Jupyter con le specifiche del kernel configurate correttamente.
+ L'ambiente di runtime Python di base include la funzione `pip` che consente al processo relativo al notebook di installare le dipendenze del sistema.
+ Per immagini con più ambienti, lo script di inizializzazione dovrebbe passare all'ambiente corretto specifico del kernel prima di installare pacchetti specifici per il notebook. È necessario tornare all'ambiente di runtime Python predefinito, se diverso dall'ambiente di runtime del kernel, dopo aver configurato l'ambiente di runtime Python del kernel.

Il driver che avvia il processo relativo al notebook è uno script bash e Bash v4 deve essere disponibile in /bin/bash. 

**Privilegi di root attivi bring-your-own-images (BYOI).** È necessario disporre dei privilegi root sulle proprie immagini di Studio, come utente root o tramite accesso `sudo`. Se non sei un utente root ma accedi ai privilegi di root tramite `sudo`, usa **1000/100** come `UID/GID`.

### Vincoli di immagine per i lavori su notebook AI SageMaker Python SDK
<a name="notebook-auto-run-constraints-image-sdk"></a>

La fase dei processi del notebook supporta le seguenti immagini:
+ SageMaker Immagini di distribuzione elencate in. [SageMaker Immagini Amazon disponibili per l'uso con i notebook Studio Classic](notebooks-available-images.md)
+ Un'immagine personalizzata basata sulle immagini di SageMaker distribuzione nell'elenco precedente. Utilizzate un'[immagine di SageMaker distribuzione](https://github.com/aws/sagemaker-distribution) come base.
+ Un'immagine personalizzata (BYOI) preinstallata con le dipendenze dei job del notebook (ad es. [sagemaker-headless-execution-driver](https://pypi.org/project/sagemaker-headless-execution-driver/) L’immagine deve soddisfare i seguenti requisiti:
  + L’immagine è preinstallata con le dipendenze dei processi del notebook.
  + Nell’ambiente shell è installato e impostato come predefinito un ambiente di runtime Python di base.
  + L'ambiente di runtime Python di base include il client Jupyter con le specifiche del kernel configurate correttamente.
  + Disponi di privilegi root, come utente root o tramite l’accesso `sudo`. Se non sei un utente root ma accedi ai privilegi di root tramite `sudo`, usa **1000/100** come `UID/GID`.

## Sottoreti VPC utilizzate durante la creazione dei processi
<a name="notebook-auto-run-constraints-vpc"></a>

Se utilizzi un VPC, Studio utilizza le tue sottoreti private per creare il tuo processo. Specifica da una a cinque sottoreti private (e da 1 a 15 gruppi di sicurezza).

Se utilizzi un VPC con sottoreti private, devi scegliere una delle seguenti opzioni per assicurarti che il processo relativo al notebook possa connettersi a servizi o risorse dipendenti:
+ Se il job richiede l'accesso a un AWS servizio che supporta gli endpoint VPC di interfaccia, crea un endpoint per connetterti al servizio. Per un elenco di servizi che supportano gli endpoint di interfaccia, consulta [AWS Servizi](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html) che si integrano con. AWS PrivateLink Per informazioni sulla creazione di un endpoint VPC di interfaccia, consulta [Accedere a un AWS servizio utilizzando un endpoint VPC di interfaccia](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). Come minimo, deve essere fornito un gateway di endpoint VPC Amazon S3.
+ Se un notebook job richiede l'accesso a un AWS servizio che non supporta gli endpoint VPC di interfaccia o a una risorsa esterna AWS, crea un gateway NAT e configura i tuoi gruppi di sicurezza per consentire le connessioni in uscita. Per informazioni sulla configurazione di un gateway NAT per il VPC, consulta *VPC con sottoreti pubbliche e private (NAT)* nella [Guida per l'utente di Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Limiti del servizio
<a name="notebook-auto-run-constraints-service-limit"></a>

Poiché il notebook Job Scheduler è basato EventBridge sui servizi Pipelines, SageMaker Training e Amazon, i tuoi lavori notebook sono soggetti alle quote specifiche del servizio. Se si superano queste quote, è possibile che vengano visualizzati messaggi di errore relativi a questi servizi. Ad esempio, esistono dei limiti relativi al numero di pipeline che è possibile eseguire contemporaneamente e al numero di regole che è possibile configurare per un singolo bus di eventi. Per ulteriori informazioni sulle quote SageMaker AI, consulta [Amazon SageMaker AI Endpoints and](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html) Quotas. Per ulteriori informazioni sulle EventBridge quote, consulta [Amazon EventBridge Quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

# Prezzi per Notebook Jobs SageMaker
<a name="notebook-auto-run-pricing"></a>

Quando pianifichi lavori con i notebook, i tuoi notebook Jupyter vengono eseguiti su istanze di formazione. SageMaker Dopo aver selezionato un'**Immagine** e un **Kernel** nel modulo **Crea processo**, il modulo fornisce un elenco dei tipi di calcolo disponibili. I costi vengono addebitati in base al tipo di calcolo scelto, in base alla durata combinata di utilizzo per tutti i processi relativi al notebook che vengono eseguiti dalla definizione del processo. Se non specifichi un tipo di elaborazione, SageMaker AI ti assegna un tipo di istanza Amazon EC2 predefinito di. `ml.m5.large` Per un'analisi dettagliata dei prezzi dell' SageMaker AI per tipo di elaborazione, consulta la pagina dei prezzi di [Amazon SageMaker AI](https://aws.amazon.com/sagemaker/pricing).

# Pianificazione dei flussi di lavoro di ML
<a name="workflow-scheduling"></a>

Con Amazon SageMaker AI puoi gestire l'intero flusso di lavoro ML mentre crei set di dati, esegui trasformazioni dei dati, costruisci modelli a partire dai dati e distribuisci i tuoi modelli sugli endpoint per l'inferenza. Se esegui periodicamente un sottoinsieme di fasi del flusso di lavoro, puoi anche scegliere di eseguire questi fasi in base a una pianificazione. Ad esempio, potresti voler pianificare un lavoro in SageMaker Canvas per eseguire una trasformazione su nuovi dati ogni ora. In un altro scenario, potresti voler pianificare un processo settimanale per monitorare la deriva del modello implementato. Puoi specificare una pianificazione ricorrente con qualsiasi intervallo di tempo: ogni secondo, ogni minuto, ogni giorno, ogni settimana, ogni mese o il terzo venerdì di ogni mese alle 15:00.

**Gli scenari seguenti riepilogano le opzioni disponibili a seconda del caso d’uso.**
+ Caso d’uso 1: **crea e pianifica il flusso di lavoro di ML in un ambiente no code**. Per i principianti o per chi è alle prime armi con l' SageMaker intelligenza artificiale, puoi utilizzare Amazon SageMaker Canvas sia per creare il tuo flusso di lavoro ML sia per creare esecuzioni pianificate utilizzando lo scheduler basato sull'interfaccia utente di Canvas.
+ Caso d’uso 2: **crea il flusso di lavoro in un unico notebook Jupyter e utilizza uno scheduler no code**. I professionisti esperti di ML possono utilizzare il codice per creare il proprio flusso di lavoro di ML in un notebook Jupyter e utilizzare l’opzione di pianificazione no code disponibile con il widget Processi del notebook. Se il flusso di lavoro di ML è composto da più notebook Jupyter, puoi utilizzare la funzionalità di pianificazione in Pipelines Python SDK descritta nel caso d’uso 3.
+ Caso d’uso 3: **crea e pianifica il tuo flusso di lavoro di ML con Pipelines**. Gli utenti esperti possono utilizzare l'[SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), l'editor visivo di Amazon SageMaker Pipelines o le opzioni di EventBridge pianificazione di Amazon disponibili con Pipelines. Puoi creare un flusso di lavoro ML composto da passaggi che includono operazioni con varie funzionalità e AWS servizi di SageMaker intelligenza artificiale, come Amazon EMR.


| Descrittore | Caso d'uso 1 | Caso d'uso 2 | Caso d'uso 3 | 
| --- | --- | --- | --- | 
| SageMaker Funzionalità AI | Elaborazione dei dati e pianificazione del flusso di lavoro ML di Amazon SageMaker Canvas | Widget di pianificazione Processi del notebook (interfaccia utente) | Opzioni di pianificazione di Pipelines Python SDK | 
| Description | Con Amazon SageMaker Canvas, puoi pianificare esecuzioni automatiche delle fasi di elaborazione dei dati e, in una procedura separata, aggiornamenti automatici dei set di dati. Puoi anche pianificare indirettamente l’intero flusso di lavoro di ML impostando una configurazione che esegue una previsione in batch ogni volta che viene aggiornato uno specifico set di dati. Sia per l'elaborazione automatica dei dati che per gli aggiornamenti dei set di dati, SageMaker Canvas fornisce un modulo di base in cui è possibile selezionare un'ora e una data di inizio e un intervallo di tempo tra le esecuzioni (o un'espressione cron se si pianifica una fase di elaborazione dei dati). Per ulteriori informazioni su come pianificare le fasi di elaborazione dei dati, consulta [Creazione di una pianificazione per elaborare automaticamente i nuovi dati](canvas-data-export-schedule-job.md). Per ulteriori informazioni su come pianificare gli aggiornamenti dei set di dati e delle previsioni in batch, consulta [Come gestire le automazioni](canvas-manage-automations.md). | Se hai creato il flusso di lavoro per l’elaborazione dei dati e la pipeline in un unico notebook Jupyter, puoi utilizzare il widget Processi del notebook per eseguire il notebook on demand o in base a una pianificazione. Il widget Processi del notebook visualizza un modulo di base in cui puoi specificare il tipo di calcolo, la pianificazione dell’esecuzione e le impostazioni personalizzate facoltative. Puoi definire la pianificazione dell’esecuzione selezionando un intervallo temporale o inserendo un’espressione Cron. Il widget viene installato automaticamente in Studio oppure è possibile eseguire un'installazione aggiuntiva per utilizzare questa funzionalità nell'ambiente locale. JupyterLab Per ulteriori informazioni su Processi del notebook, consulta [SageMaker Lavori su notebook](notebook-auto-run.md). | Puoi utilizzare le funzionalità di pianificazione dell' SageMaker SDK se hai implementato il flusso di lavoro ML con Pipelines. La tua pipeline può includere fasi come il fine-tuning, l’elaborazione dei dati e l’implementazione. Pipelines supporta due tipi di pianificazione della pipeline. Puoi creare una EventBridge regola Amazon o utilizzare il [PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.triggers.PipelineSchedule)costruttore SageMaker SDK o l'editor visivo di Amazon SageMaker Pipelines per definire una pianificazione. Per ulteriori informazioni sulle opzioni di pianificazione disponibili, consulta [Pianificazione delle esecuzioni della pipeline](pipeline-eventbridge.md). | 
| Ottimizzazione per | Fornisce un'opzione di pianificazione per un flusso di lavoro Canvas ML SageMaker  | Fornisce un’opzione di pianificazione basata sull’interfaccia utente per i flussi di lavoro di ML basati su notebook Jupyter | Fornisce un SageMaker SDK o un'opzione di EventBridge pianificazione per i flussi di lavoro ML | 
| Considerazioni | Puoi pianificare il flusso di lavoro con il framework no code Canvas, ma gli aggiornamenti dei set di dati e della trasformazione di batch possono gestire fino a 5 GB di dati. | Nello stesso processo non puoi pianificare più notebook con il modulo di pianificazione basato sull’interfaccia utente. Per pianificare più notebook, utilizza la soluzione basata su codice dell’SDK Pipelines descritta nel caso d’uso 3. | Puoi utilizzare le funzionalità di pianificazione più avanzate (basate su SDK) fornite da Pipelines, ma devi fare riferimento alla documentazione dell’API per specificare le opzioni corrette anziché selezionarle da un menu di opzioni basato sull’interfaccia utente. | 
| Ambiente consigliato | Amazon SageMaker Tela | Studio, JupyterLab ambiente locale | Studio, JupyterLab ambiente locale, qualsiasi editor di codice | 

## Risorse aggiuntive
<a name="workflow-scheduling-addit"></a>

**SageMaker L'intelligenza artificiale offre le seguenti opzioni aggiuntive per la pianificazione dei flussi di lavoro.**
+ [Cos'è Amazon EventBridge Scheduler?](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html) . Le opzioni di pianificazione discusse in questa sezione includono opzioni predefinite disponibili in SageMaker Canvas, Studio e AI SageMaker Python SDK. Tutte le opzioni estendono le funzionalità di Amazon EventBridge e puoi anche creare la tua soluzione di pianificazione personalizzata con EventBridge.
+ [Esecuzioni pianificate e basate su eventi per le pipeline del Processore di funzionalità](feature-store-feature-processor-schedule-pipeline.md). Con Amazon SageMaker Feature Store Feature Processing, puoi configurare le tue pipeline di Feature Processing in modo che vengano eseguite secondo una pianificazione o come risultato di un altro evento di AWS servizio.

# AWS Batch supporto per lavori di formazione SageMaker sull'intelligenza artificiale
<a name="training-job-queues"></a>

Una [coda dei processi AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html) archivia e assegna le priorità ai processi inviati prima che vengano eseguiti sulle risorse di calcolo. Puoi inviare lavori di formazione sull' SageMaker intelligenza artificiale a una coda di lavoro per sfruttare gli strumenti di pianificazione e prioritizzazione dei lavori senza server forniti da. AWS Batch

## Come funziona
<a name="training-job-queues-how-it-works"></a>

I passaggi seguenti descrivono il flusso di lavoro su come utilizzare una coda di lavoro con i AWS Batch lavori di formazione basati sull'intelligenza artificiale. SageMaker Per tutorial più dettagliati e notebook di esempio, consulta la sezione [Nozioni di base](#training-job-queues-get-started).
+ Configurazione AWS Batch ed eventuali autorizzazioni necessarie. Per ulteriori informazioni, consulta [Setting up AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/get-set-up-for-aws-batch.html) in *AWS Batch User Guide*.
+ Crea le seguenti AWS Batch risorse nella console o utilizzando: AWS CLI
  + [Ambiente di servizio](https://docs.aws.amazon.com/batch/latest/userguide/service-environments.html): contiene i parametri di configurazione per l'integrazione con l' SageMaker intelligenza artificiale.
  + [SageMaker Coda di lavoro per la formazione sull'intelligenza artificiale](https://docs.aws.amazon.com/batch/latest/userguide/create-sagemaker-job-queue.html): si integra con l' SageMaker intelligenza artificiale per inviare lavori di formazione.
+ Configura i tuoi dati e richiedi un lavoro di formazione sull' SageMaker intelligenza artificiale, ad esempio l'immagine del tuo contenitore di formazione. Per inviare un lavoro di formazione a una AWS Batch coda, puoi utilizzare l'SDK Python AI o AWS SDK per Python (Boto3) l' SageMaker AI Python SDK. AWS CLI
+ Invia i tuoi job di addestramento alla coda dei processi. Puoi utilizzare le opzioni seguenti per inviare i processi:
  + Utilizza l'API di AWS Batch [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html).
  + Usa il [`aws_batch`modulo](https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/aws_batch) dell'SDK SageMaker AI Python. Dopo aver creato un TrainingQueue oggetto e un oggetto di addestramento del modello (come un Estimator o ModelTrainer), puoi inviare lavori di formazione all'utente che TrainingQueue utilizza il metodo. `queue.submit()`
+ Dopo aver inviato i lavori, visualizza la coda e lo stato dei lavori con la AWS Batch console, l' AWS Batch [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)API o l' SageMaker API AI. [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)

## Costo e disponibilità
<a name="training-job-queues-cost-availability"></a>

Per informazioni dettagliate sui prezzi dei lavori di formazione, consulta [i prezzi di Amazon SageMaker AI](https://aws.amazon.com/sagemaker-ai/pricing/). Con AWS Batch, paghi solo per AWS le risorse utilizzate, come le istanze Amazon EC2. Per ulteriori informazioni, consultare [Prezzi di AWS Batch](https://aws.amazon.com/batch/pricing/).

Puoi utilizzarlo AWS Batch per lavori di formazione sull' SageMaker intelligenza artificiale Regione AWS ovunque siano disponibili lavori di formazione. Per ulteriori informazioni, consulta [Endpoint e quote Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

Per assicurarti di avere la capacità richiesta quando ne hai bisogno, puoi utilizzare SageMaker AI Flexible Training Plans (FTP). Questi piani ti consentono di prenotare capacità per i tuoi job di addestramento. In combinazione con le funzionalità AWS Batch di accodamento, puoi massimizzarne l'utilizzo durante la durata del piano. Per ulteriori informazioni, consulta [Riserva piani di formazione per te, corsi di formazione per lavori o cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/reserve-capacity-with-training-plans.html). HyperPod 

## Nozioni di base
<a name="training-job-queues-get-started"></a>

Per un tutorial su come impostare una coda di AWS Batch lavoro e inviare lavori di formazione [AWS Batch sull' SageMaker intelligenza artificiale, vedi Guida introduttiva all' SageMaker IA](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html) nella Guida per l'*AWS Batch utente*.

Per i notebook Jupyter che mostrano come utilizzare il modulo `aws_batch` nell'SDK AI SageMaker Python, consulta gli esempi di notebook [AWS Batch for SageMaker ](https://github.com/aws/amazon-sagemaker-examples/tree/default/%20%20%20%20%20%20build_and_train_models/sm-training-queues) AI Training jobs nel repository. amazon-sagemaker-examples GitHub 

# Monitoraggio del lignaggio di Amazon SageMaker ML
<a name="lineage-tracking"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’applicazione Studio Classic. Per informazioni sull’utilizzo dell’esperienza Studio aggiornata, consulta [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic viene ancora mantenuto per i carichi di lavoro esistenti, ma non è più disponibile per l'onboarding. È possibile solo interrompere o eliminare le applicazioni Studio Classic esistenti e non è possibile crearne di nuove. Ti consigliamo di [migrare il tuo carico di lavoro alla nuova esperienza Studio](studio-updated-migrate.md).

Amazon SageMaker ML Lineage Tracking crea e archivia informazioni sulle fasi di un flusso di lavoro di machine learning (ML) dalla preparazione dei dati alla distribuzione del modello. Con le informazioni di monitoraggio, puoi riprodurre le fasi del flusso di lavoro, monitorare il lineage del modello e del set di dati e stabilire standard di governance e audit del modello.

SageMaker La funzionalità Lineage Tracking di AI funziona nel backend per tenere traccia di tutti i metadati associati ai flussi di lavoro di formazione e implementazione dei modelli. Ciò include i processi di addestramento, i set di dati utilizzati, le pipeline, gli endpoint e i modelli effettivi. Puoi interrogare il servizio Lineage in qualsiasi momento per trovare gli artefatti esatti utilizzati per addestrare un modello. Utilizzando questi artefatti, è possibile ricreare lo stesso flusso di lavoro ML per riprodurre il modello, purché si abbia accesso allo stesso set di dati utilizzato. Un componente di prova tiene traccia del processo di addestramento. Questo componente di prova ha tutti i parametri utilizzati come parte del processo di addestramento. Se non è necessario eseguire nuovamente l'intero flusso di lavoro, è possibile riprodurre il processo di addestramento per ricavare lo stesso modello.

Con SageMaker AI Lineage Tracking, i data scientist e i costruttori di modelli possono fare quanto segue:
+ Conservare una cronologia aggiornata degli esperimenti di individuazione dei modelli.
+ Stabilire la governance dei modelli monitorando gli artefatti di lineage del modello per l'audit e la verifica della conformità.

Il diagramma seguente mostra un esempio di grafico di derivazione che Amazon SageMaker AI crea automaticamente in un end-to-end modello di flusso di lavoro ML di formazione e implementazione.

![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/pipelines/PipelineLineageWorkflow.png)


**Topics**
+ [Entità di monitoraggio del lineage](lineage-tracking-entities.md)
+ [Entità di tracciamento SageMaker create da Amazon AI](lineage-tracking-auto-creation.md)
+ [Creazione manuale di entità di monitoraggio](lineage-tracking-manual-creation.md)
+ [Esecuzione di query su entità di lineage](querying-lineage-entities.md)
+ [Monitoraggio del lineage multi-account](xaccount-lineage-tracking.md)

# Entità di monitoraggio del lineage
<a name="lineage-tracking-entities"></a>

Le entità di tracciamento mantengono una rappresentazione di tutti gli elementi del flusso di lavoro di end-to-end machine learning. È possibile utilizzare questa rappresentazione per stabilire una governance dei modelli, riprodurre il flusso di lavoro e conservare una registrazione della propria cronologia di lavoro.

Amazon SageMaker AI crea automaticamente entità di tracciamento per i componenti di prova e le prove e gli esperimenti associati quando crei lavori di SageMaker intelligenza artificiale come processi di elaborazione, lavori di formazione e processi di trasformazione in batch. Oltre al monitoraggio automatico, puoi anche [Creazione manuale di entità di monitoraggio](lineage-tracking-manual-creation.md) per modellare fasi personalizzate nel tuo flusso di lavoro. Per ulteriori informazioni, consulta [SageMaker Esperimenti di Amazon in Studio Classic](experiments.md).

SageMaker L'intelligenza artificiale crea inoltre automaticamente entità di tracciamento per le altre fasi di un flusso di lavoro in modo da poterlo monitorare dall'inizio alla fine. Per ulteriori informazioni, consulta [Entità di tracciamento SageMaker create da Amazon AI](lineage-tracking-auto-creation.md).

Puoi creare entità aggiuntive per integrare quelle create dall' SageMaker IA. Per ulteriori informazioni, consulta [Creazione manuale di entità di monitoraggio](lineage-tracking-manual-creation.md).

SageMaker L'intelligenza artificiale riutilizza qualsiasi entità esistente anziché crearne di nuove. Ad esempio, può esserci un solo artefatto con un `SourceUri` univoco.

**Concetti chiave per eseguire query del lineage**
+ **Lineage**: metadati che monitorano le relazioni tra varie entità nei flussi di lavoro ML.
+ **QueryLineage**— L'azione per esaminare la propria discendenza e scoprire le relazioni tra le entità.
+ **Entità di lineage**: gli elementi di metadati di cui è composto il lineage.
+ **Lineage multi-account**: il flusso di lavoro ML può riguardare più di un account. Con la derivazione tra account, puoi configurare più account per creare automaticamente associazioni di discendenza tra risorse di entità condivise. QueryLineage quindi può restituire entità anche da questi account condivisi.

Sono definite le seguenti entità di monitoraggio:

**Entità esperimento**
+ [Componente di prova](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrialComponent.html): una fase di una prova di machine learning. Include processi di elaborazione, processi di addestramento e processi di trasformazione di batch.
+ [Prova](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrial.html): una combinazione di componenti di prova che generalmente produce un modello.
+ [Esperimento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateExperiment.html): un gruppo di prove generalmente incentrato sulla risoluzione di un caso d'uso specifico.

**Entità di lineage**
+ [Componente di prova](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrialComponent.html): rappresenta i processi di elaborazione, addestramento e trasformazione del lineage. Fa anche parte della gestione degli esperimenti.
+ [Contesto](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateContext.html): fornisce un raggruppamento logico di altre entità di monitoraggio o esperimento. Concettualmente, gli esperimenti e le prove sono contesti. Alcuni esempi sono un endpoint e un pacchetto del modello.
+ [Azione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAction.html): rappresenta un'azione o un'attività. In genere, un'azione coinvolge almeno un artefatto di input o un artefatto di output. Alcuni esempi sono una fase del flusso di lavoro e un'implementazione del modello.
+ [Artefatto](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateArtifact.html): rappresenta un oggetto o un dato indirizzabile all'URI. Un artefatto è generalmente un input o un output per un componente o un'operazione di prova. Alcuni esempi includono un set di dati (URI del bucket S3) o un'immagine (percorso del registro Amazon ECR).
+ [Associazione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html): collega altre entità di monitoraggio o esperimento, ad esempio un'associazione tra la posizione dei dati di addestramento e un processo di addestramento.

  Un'associazione ha una proprietà `AssociationType` facoltativa. I seguenti valori sono disponibili insieme all'uso suggerito per ogni tipo. SageMaker L'intelligenza artificiale non pone restrizioni al loro utilizzo:
  + `ContributedTo`: l'origine ha contribuito alla destinazione o ha contribuito a favorirla. Ad esempio, i dati di addestramento hanno contribuito al processo di addestramento.
  + `AssociatedWith`: l'origine è collegata alla destinazione. Ad esempio, un flusso di lavoro di approvazione è associato all'implementazione di un modello.
  + `DerivedFrom`: la destinazione è una modifica dell'origine. Ad esempio, l'output digest di un input del canale per un processo di elaborazione deriva dagli input originali.
  + `Produced`: l'origine ha generato la destinazione. Ad esempio, un processo di addestramento ha prodotto un artefatto del modello.
  + `SameAs`: quando la stessa entità di lineage viene utilizzata in account diversi.

**Proprietà comuni**
+ **Proprietà di tipo**

  Le entità azione, artefatto e contesto hanno una proprietà di *tipo*; `ActionType`, `ArtifactType` e `ContextType`, rispettivamente. Questa proprietà è una stringa personalizzata che può associare informazioni significative all'entità ed essere utilizzata come filtro nell'elenco APIs.
+ **Proprietà di origine**

  Le entità azione, artefatto e contesto hanno una proprietà `Source`. Questa proprietà fornisce l'URI sottostante rappresentato dall'entità. Alcuni esempi sono:
  + Un'azione `UpdateEndpoint` in cui l'origine è `EndpointArn`.
  + Un artefatto di immagine per un processo di elaborazione in cui l'origine è `ImageUri`.
  + Un contesto `Endpoint` in cui l'origine è `EndpointArn`.
+ **Proprietà di metadati**

  Le entità operazione e artefatto hanno una proprietà `Metadata` opzionale che può fornire le seguenti informazioni:
  + `ProjectId`— Ad esempio, l'ID del MLOps progetto di SageMaker intelligenza artificiale a cui appartiene un modello.
  + `GeneratedBy`— Ad esempio, l'esecuzione della pipeline SageMaker AI che ha registrato una versione del pacchetto modello.
  + `Repository`: ad esempio, il repository che contiene un algoritmo.
  + `CommitId`: ad esempio, l'ID commit di una versione dell'algoritmo.

# Entità di tracciamento SageMaker create da Amazon AI
<a name="lineage-tracking-auto-creation"></a>

Amazon SageMaker AI crea automaticamente entità di tracciamento per lavori, modelli, pacchetti di modelli ed endpoint di SageMaker intelligenza artificiale, se i dati sono disponibili. Non c'è limite al numero di entità derivate create dall' SageMaker IA.

Per informazioni su come creare manualmente le entità di monitoraggio, consulta [Creazione manuale di entità di monitoraggio](lineage-tracking-manual-creation.md).

**Topics**
+ [Entità di tracciamento per lavori di SageMaker intelligenza artificiale](#lineage-tracking-auto-creation-jobs)
+ [Entità di monitoraggio per pacchetti di modelli](#lineage-tracking-auto-creation-model-package)
+ [Entità di monitoraggio per endpoint](#lineage-tracking-auto-creation-endpoint)

## Entità di tracciamento per lavori di SageMaker intelligenza artificiale
<a name="lineage-tracking-auto-creation-jobs"></a>

SageMaker L'intelligenza artificiale crea un componente di prova e associato a ciascun lavoro di SageMaker intelligenza artificiale. SageMaker L'intelligenza artificiale crea artefatti per tracciare i metadati del lavoro e le associazioni tra ogni artefatto e il lavoro.

Gli artefatti vengono creati per le seguenti proprietà del lavoro e associati all'Amazon Resource Name (ARN) del lavoro AI. SageMaker L'artefatto `SourceUri` è elencato tra parentesi.

**Processo di addestramento**
+ L'immagine che contiene l'algoritmo di addestramento (`TrainingImage`).
+ L'origine dati di ogni canale di input (`S3Uri`).
+ La posizione del modello (`S3OutputPath)`.
+ La posizione dei dati del checkpoint spot gestito (`S3Uri`).

**Processo di elaborazione**
+ Il container che deve essere eseguito dal processo di elaborazione (`ImageUri`).
+ La posizione dei dati per ogni input di elaborazione e output di elaborazione (`S3Uri`).

**Processo di trasformazione**
+ L'origine dati di input da trasformare (`S3Uri`).
+ I risultati della trasformazione (`S3OutputPath`).

**Nota**  
Gli artefatti di Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) vengono tracciati in base ai valori URI di Amazon S3 forniti all'API Create, ad esempio [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html), e non sulla chiave Amazon S3 e sui valori hash o etag di ciascun file.

## Entità di monitoraggio per pacchetti di modelli
<a name="lineage-tracking-auto-creation-model-package"></a>

Vengono create le seguenti entità:

**Pacchetti di modelli**
+ Un contesto per ogni gruppo di pacchetti di modelli.
+ Un artefatto per ogni pacchetto del modello.
+ Un'associazione tra ogni artefatto del pacchetto del modello e il contesto di ogni gruppo di pacchetti di modelli a cui appartiene il pacchetto.
+ Un'operazione per la creazione di una versione del pacchetto del modello.
+ Un'associazione tra l'artefatto del pacchetto del modello e l'operazione di creazione.
+ Un'associazione tra l'artefatto del pacchetto del modello e il contesto di ogni gruppo di pacchetti di modelli a cui appartiene il pacchetto.
+ Container di inferenza
  + Un artefatto per l'immagine utilizzata in ogni container definito nel pacchetto del modello.
  + Un artefatto per il modello utilizzato in ogni container.
  + Un'associazione tra ogni artefatto e l'artefatto del pacchetto del modello.
+ Algoritmi
  + Un artefatto per ogni algoritmo definito nel pacchetto del modello.
  + Un artefatto per il modello creato da ogni algoritmo.
  + Un'associazione tra ogni artefatto e l'artefatto del pacchetto del modello.

## Entità di monitoraggio per endpoint
<a name="lineage-tracking-auto-creation-endpoint"></a>

Le seguenti entità sono create da Amazon SageMaker AI:

**Endpoints**
+ Un contesto per ogni endpoint
+ Un'operazione per l'implementazione del modello che ha creato ogni endpoint
+ Un artefatto per ogni modello implementato sull'endpoint
+ Un artefatto per l'immagine utilizzata nel modello
+ Un artefatto per il pacchetto del modello per il modello
+ Un artefatto per ogni immagine implementata sull'endpoint
+ Un'associazione tra ogni artefatto e l'operazione di implementazione del modello

# Creazione manuale di entità di monitoraggio
<a name="lineage-tracking-manual-creation"></a>

Puoi creare manualmente entità di monitoraggio per qualsiasi proprietà per stabilire una governance dei modelli, riprodurre il flusso di lavoro e conservare un record della tua cronologia di lavoro. Per informazioni sulle entità di tracciamento che Amazon SageMaker AI crea automaticamente, consulta[Entità di tracciamento SageMaker create da Amazon AI](lineage-tracking-auto-creation.md). Il seguente tutorial illustra i passaggi necessari per creare e associare manualmente gli artefatti tra un processo di SageMaker formazione e un endpoint, quindi monitora il flusso di lavoro. 

Puoi aggiungere tag a tutte le entità tranne le associazioni. I tag sono coppie chiave-valore arbitrarie che forniscono informazioni personalizzate. È possibile filtrare o ordinare un elenco o una query di ricerca per tag. Per ulteriori informazioni, consulta [AWS Taggare](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) le risorse in. *Riferimenti generali di AWS*

Per un notebook di esempio che dimostra come creare entità di derivazione, consulta il notebook [Amazon SageMaker AI Lineage](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-lineage) nel repository di esempio di [Amazon SageMaker ](https://github.com/awslabs/amazon-sagemaker-examples). GitHub 

**Topics**
+ [Creazione manuale di entità](#lineage-tracking-manual-create)
+ [Monitoraggio manuale di un flusso di lavoro](#lineage-tracking-manual-track)
+ [Limits](#lineage-tracking-manual-track-limits)

## Creazione manuale di entità
<a name="lineage-tracking-manual-create"></a>

La procedura seguente mostra come creare e associare artefatti tra un processo di formazione sull' SageMaker intelligenza artificiale e un endpoint. Completa la seguente procedura:

**Importazione di entità e associazioni di monitoraggio**

1. Importa le entità di monitoraggio del lineage.

   ```
   import sys
   !{sys.executable} -m pip install -q sagemaker
   
   from sagemaker import get_execution_role
   from sagemaker.session import Session
   from sagemaker.lineage import context, artifact, association, action
   
   import boto3
   boto_session = boto3.Session(region_name=region)
   sagemaker_client = boto_session.client("sagemaker")
   ```

1. Crea gli artefatti di input e output.

   ```
   code_location_arn = artifact.Artifact.create(
       artifact_name='source-code-location',
       source_uri='s3://...',
       artifact_type='code-location'
   ).artifact_arn
   
   # Similar constructs for train_data_location_arn and test_data_location_arn
   
   model_location_arn = artifact.Artifact.create(
       artifact_name='model-location',
       source_uri='s3://...',
       artifact_type='model-location'
   ).artifact_arn
   ```

1. Addestra il modello e ottieni `trial_component_arn` che rappresenta il processo di addestramento.

1. Associa gli artefatti di input e gli artefatti di output al processo di addestramento (componente di prova).

   ```
   input_artifacts = [code_location_arn, train_data_location_arn, test_data_location_arn]
   for artifact_arn in input_artifacts:
       try:
           association.Association.create(
               source_arn=artifact_arn,
               destination_arn=trial_component_arn,
               association_type='ContributedTo'
           )
       except:
           logging.info('association between {} and {} already exists', artifact_arn, trial_component_arn)
   
   output_artifacts = [model_location_arn]
   for artifact_arn in output_artifacts:
       try:
            association.Association.create(
               source_arn=trial_component_arn,
               destination_arn=artifact_arn,
               association_type='Produced'
           )
       except:
           logging.info('association between {} and {} already exists', artifact_arn, trial_component_arn)
   ```

1. Crea l'endpoint di inferenza.

   ```
   predictor = mnist_estimator.deploy(initial_instance_count=1,
                                        instance_type='ml.m4.xlarge')
   ```

1. Crea il contesto dell'endpoint.

   ```
   from sagemaker.lineage import context
   
   endpoint = sagemaker_client.describe_endpoint(EndpointName=predictor.endpoint_name)
   endpoint_arn = endpoint['EndpointArn']
   
   endpoint_context_arn = context.Context.create(
       context_name=predictor.endpoint_name,
       context_type='Endpoint',
       source_uri=endpoint_arn
   ).context_arn
   ```

1. Associa il processo di addestramento (componente di prova) e il contesto dell'endpoint.

   ```
   association.Association.create(
       source_arn=trial_component_arn,
       destination_arn=endpoint_context_arn
   )
   ```

## Monitoraggio manuale di un flusso di lavoro
<a name="lineage-tracking-manual-track"></a>

È possibile monitorare manualmente il flusso di lavoro creato nella sezione precedente.

Dato il nome della risorsa Amazon (ARN) dell'endpoint dell'esempio precedente, la procedura seguente mostra come monitorare il flusso di lavoro fino ai set di dati utilizzati per addestrare il modello implementato sull'endpoint. Completa la seguente procedura:

**Monitorare un flusso di lavoro dall'endpoint all'origine dati di addestramento**

1. Importa le entità di monitoraggio.

   ```
   import sys
   !{sys.executable} -m pip install -q sagemaker
   
   from sagemaker import get_execution_role
   from sagemaker.session import Session
   from sagemaker.lineage import context, artifact, association, action
   
   import boto3
   boto_session = boto3.Session(region_name=region)
   sagemaker_client = boto_session.client("sagemaker")
   ```

1. Ottieni il contesto dell'endpoint dall'ARN dell'endpoint.

   ```
   endpoint_context_arn = sagemaker_client.list_contexts(
       SourceUri=endpoint_arn)['ContextSummaries'][0]['ContextArn']
   ```

1. Ottieni il componente di prova dall'associazione tra il componente di prova e il contesto dell'endpoint.

   ```
   trial_component_arn = sagemaker_client.list_associations(
       DestinationArn=endpoint_context_arn)['AssociationSummaries'][0]['SourceArn']
   ```

1. Ottieni l'artefatto relativo alla posizione dei dati di addestramento dall'associazione tra il componente di prova e il contesto dell'endpoint.

   ```
   train_data_location_artifact_arn = sagemaker_client.list_associations(
       DestinationArn=trial_component_arn, SourceType='Model')['AssociationSummaries'][0]['SourceArn']
   ```

1. Ottieni la posizione dei dati di addestramento dall'artefatto relativo alla posizione dei dati di addestramento.

   ```
   train_data_location = sagemaker_client.describe_artifact(
       ArtifactArn=train_data_location_artifact_arn)['Source']['SourceUri']
       print(train_data_location)
   ```

   Risposta:

   ```
   s3://sagemaker-sample-data-us-east-2/mxnet/mnist/train
   ```

## Limits
<a name="lineage-tracking-manual-track-limits"></a>

È possibile creare un'associazione tra qualsiasi entità, esperimento e lineage, ad eccezione di quanto segue:
+ Non è possibile creare un'associazione tra due entità esperimento. Le entità esperimento sono costituite da esperimenti, prove e componenti di prova.
+ È possibile creare un'associazione con un'altra associazione.

Se si tenta di creare un'entità già esistente, si verifica un errore.

**Numero massimo di entità di lineage create manualmente**
+ Operazioni: 3000
+ Artefatti: 6000
+ Associazioni: 6000
+ Contesti: 500

Non c'è limite al numero di entità di derivazione create automaticamente da Amazon SageMaker AI.

# Esecuzione di query su entità di lineage
<a name="querying-lineage-entities"></a>

Amazon SageMaker AI genera automaticamente grafici di entità di derivazione man mano che li utilizzi. Puoi eseguire query su questi dati per rispondere a una serie di domande. Di seguito vengono fornite istruzioni su come eseguire query su questi dati in SDK per Python. 

Per informazioni su come visualizzare una linea di modelli registrati in Amazon SageMaker Studio, consulta[Visualizzazione dei dettagli del lineage del modello in Studio](model-registry-lineage-view-studio.md).

Puoi eseguire query sulle tue entità di lineage per:
+ Recuperare tutti i set di dati utilizzati per la creazione di un modello.
+ Recuperare tutti i processi utilizzati per la creazione di un endpoint.
+ Recuperare tutti i modelli che utilizzano un set di dati.
+ Recuperare tutti gli endpoint che utilizzano un modello.
+ Recuperare quali endpoint derivano da un determinato set di dati.
+ Recuperare l'esecuzione della pipeline che ha creato un processo di addestramento.
+ Recuperare le relazioni tra le entità per investigazione, governance e riproducibilità.
+ Recuperare tutte le prove downstream che utilizzano l'artefatto.
+ Recuperare tutte le prove upstream che utilizzano l'artefatto.
+ Recuperare un elenco di artefatti che utilizzano l'uri S3 fornito.
+ Recuperare gli artefatti upstream che utilizzano l'artefatto del set di dati.
+ Recuperare gli artefatti downstream che utilizzano l'artefatto del set di dati.
+ Recuperare i set di dati che utilizzano l'artefatto dell'immagine.
+ Recuperare le operazioni che utilizzano il contesto.
+ Recuperare i processi di elaborazione che utilizzano l'endpoint.
+ Recuperare i processi di trasformazione che utilizzano l'endpoint.
+ Recuperare i componenti di prova che utilizzano l'endpoint.
+ Recuperare l'ARN per l'esecuzione della pipeline associata al gruppo di pacchetti di modelli.
+ Recuperare tutti gli artefatti che utilizzano l'operazione.
+ Recuperare tutti i set di dati upstream che utilizzano l'operazione di approvazione del pacchetto del modello.
+ Recuperare il pacchetto del modello dall'operazione di approvazione del pacchetto del modello.
+ Recuperare i contesti degli endpoint downstream che utilizzano l'endpoint.
+ Recuperare l'ARN per l'esecuzione della pipeline associata al componente di prova.
+ Recuperare i set di dati che utilizzano il componente di prova.
+ Recuperare i modelli che utilizzano il componente di prova.
+ Esplora il tuo lineage per visualizzarlo.

**Limitazioni**
+ L'esecuzione di query sul lineage non è disponibile nelle seguenti Regioni:
  + Africa (Città del Capo) – af-south
  + Asia Pacifico (Giacarta) – ap-southeast-3
  + Asia Pacifico (Osaka) - ap-northeast-3
  + Europa (Milano) – eu-south-1
  + Europa (Spagna): eu-south-2
  + Israele (Tel Aviv) il-central-1
+ La profondità massima di relazioni da rilevare è attualmente limitata a 10.
+ Il filtraggio è limitato alle seguenti proprietà: data ultima modifica, data di creazione, tipo e tipo di entità di lineage. 

**Topics**
+ [Nozioni di base sull'esecuzione di query sulle entità di lineage](#querying-lineage-entities-getting-started)

## Nozioni di base sull'esecuzione di query sulle entità di lineage
<a name="querying-lineage-entities-getting-started"></a>

Il modo più semplice per iniziare è tramite:
+ [Amazon SageMaker AI SDK per Python](https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/lineage/artifact.py#L397) che ha definito molti casi d'uso comuni.
+ [Per un notebook che dimostra come utilizzare SageMaker AI Lineage per interrogare le relazioni attraverso il grafico APIs di derivazione, consulta .ipynb. sagemaker-lineage-multihop-queries](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/sagemaker-lineage-multihop-queries.ipynb)

Gli esempi seguenti mostrano come utilizzare `LineageQuery` e costruire query per rispondere `LineageFilter` APIs a domande sul Lineage Graph ed estrarre le relazioni tra entità per alcuni casi d'uso.

**Example Utilizzo dell'API `LineageQuery` per trovare associazioni di entità**  

```
from sagemaker.lineage.context import Context, EndpointContext
from sagemaker.lineage.action import Action
from sagemaker.lineage.association import Association
from sagemaker.lineage.artifact import Artifact, ModelArtifact, DatasetArtifact

from sagemaker.lineage.query import (
    LineageQuery,
    LineageFilter,
    LineageSourceEnum,
    LineageEntityEnum,
    LineageQueryDirectionEnum,
)
# Find the endpoint context and model artifact that should be used for the lineage queries.

contexts = Context.list(source_uri=endpoint_arn)
context_name = list(contexts)[0].context_name
endpoint_context = EndpointContext.load(context_name=context_name)
```

**Example Trova tutti i set di dati associati a un endpoint**  

```
# Define the LineageFilter to look for entities of type `ARTIFACT` and the source of type `DATASET`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT], sources=[LineageSourceEnum.DATASET]
)

# Providing this `LineageFilter` to the `LineageQuery` constructs a query that traverses through the given context `endpoint_context`
# and find all datasets.

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[endpoint_context.context_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

# Parse through the query results to get the lineage objects corresponding to the datasets
dataset_artifacts = []
for vertex in query_result.vertices:
    dataset_artifacts.append(vertex.to_lineage_object().source.source_uri)

pp.pprint(dataset_artifacts)
```

**Example Trova i modelli associati a un endpoint**  

```
# Define the LineageFilter to look for entities of type `ARTIFACT` and the source of type `MODEL`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT], sources=[LineageSourceEnum.MODEL]
)

# Providing this `LineageFilter` to the `LineageQuery` constructs a query that traverses through the given context `endpoint_context`
# and find all datasets.

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[endpoint_context.context_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

# Parse through the query results to get the lineage objects corresponding to the model
model_artifacts = []
for vertex in query_result.vertices:
    model_artifacts.append(vertex.to_lineage_object().source.source_uri)

# The results of the `LineageQuery` API call return the ARN of the model deployed to the endpoint along with
# the S3 URI to the model.tar.gz file associated with the model
pp.pprint(model_artifacts)
```

**Example Trova i componenti di prova associati all'endpoint**  

```
# Define the LineageFilter to look for entities of type `TRIAL_COMPONENT` and the source of type `TRAINING_JOB`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.TRIAL_COMPONENT],
    sources=[LineageSourceEnum.TRAINING_JOB],
)

# Providing this `LineageFilter` to the `LineageQuery` constructs a query that traverses through the given context `endpoint_context`
# and find all datasets.

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[endpoint_context.context_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

# Parse through the query results to get the ARNs of the training jobs associated with this Endpoint
trial_components = []
for vertex in query_result.vertices:
    trial_components.append(vertex.arn)

pp.pprint(trial_components)
```

**Example Modifica del punto focale del lineage**  
`LineageQuery` può essere modificato in modo che abbia un diverso `start_arns`, il che cambia il punto focale del lineage. Inoltre, `LineageFilter` può utilizzare origini ed entità molteplici per espandere l'ambito della query.  
Di seguito utilizziamo il modello come punto focale del lineage e troviamo gli endpoint e i set di dati ad esso associati.  

```
# Get the ModelArtifact

model_artifact_summary = list(Artifact.list(source_uri=model_package_arn))[0]
model_artifact = ModelArtifact.load(artifact_arn=model_artifact_summary.artifact_arn)
query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT],
    sources=[LineageSourceEnum.ENDPOINT, LineageSourceEnum.DATASET],
)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],  # Model is the starting artifact
    query_filter=query_filter,
    # Find all the entities that descend from the model, i.e. the endpoint
    direction=LineageQueryDirectionEnum.DESCENDANTS,
    include_edges=False,
)

associations = []
for vertex in query_result.vertices:
    associations.append(vertex.to_lineage_object().source.source_uri)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],  # Model is the starting artifact
    query_filter=query_filter,
    # Find all the entities that ascend from the model, i.e. the datasets
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

for vertex in query_result.vertices:
    associations.append(vertex.to_lineage_object().source.source_uri)

pp.pprint(associations)
```

**Example Utilizzo di `LineageQueryDirectionEnum.BOTH` per trovare relazioni di ascendenza e discendenza**  
Quando la direzione è impostata su `BOTH`, la query attraversa il grafico per trovare le relazioni di ascendenza e discendenza. Questo attraversamento avviene non solo dal nodo iniziale, ma da ogni nodo visitato. Ad esempio, se un processo di addestramento viene eseguito due volte ed entrambi i modelli generati dal processo di addestramento vengono implementati sugli endpoint, il risultato della query con direzione impostata su `BOTH` mostra entrambi gli endpoint. Questo perché la stessa immagine viene utilizzata per il addestramento e l'implementazione del modello. Poiché l'immagine è comune al modello, nel risultato della query vengono visualizzati `start_arn` ed entrambi gli endpoint.  

```
query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT],
    sources=[LineageSourceEnum.ENDPOINT, LineageSourceEnum.DATASET],
)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],  # Model is the starting artifact
    query_filter=query_filter,
    # This specifies that the query should look for associations both ascending and descending for the start
    direction=LineageQueryDirectionEnum.BOTH,
    include_edges=False,
)

associations = []
for vertex in query_result.vertices:
    associations.append(vertex.to_lineage_object().source.source_uri)

pp.pprint(associations)
```

**Example Direzioni in `LineageQuery`: `ASCENDANTS` e `DESCENDANTS`**  
Per capire la direzione del grafico di lineage, prendi il seguente grafico delle relazioni tra entità: Set di dati -> Processo di addestramento -> Modello -> Endpoint  
L'endpoint è una discendenza del modello e il modello è una discendenza del set di dati. Analogamente, il modello è un'ascendenza dell'endpoint. Il parametro `direction` può essere utilizzato per specificare se la query deve restituire entità che rappresentano discendenze o ascendenze dell'entità in `start_arns`. Se `start_arns` contiene un modello e la direzione è `DESCENDANTS`, la query restituisce l'endpoint. Se la direzione è `ASCENDANTS`, la query restituisce il set di dati.  

```
# In this example, we'll look at the impact of specifying the direction as ASCENDANT or DESCENDANT in a `LineageQuery`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT],
    sources=[
        LineageSourceEnum.ENDPOINT,
        LineageSourceEnum.MODEL,
        LineageSourceEnum.DATASET,
        LineageSourceEnum.TRAINING_JOB,
    ],
)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

ascendant_artifacts = []

# The lineage entity returned for the Training Job is a TrialComponent which can't be converted to a
# lineage object using the method `to_lineage_object()` so we extract the TrialComponent ARN.
for vertex in query_result.vertices:
    try:
        ascendant_artifacts.append(vertex.to_lineage_object().source.source_uri)
    except:
        ascendant_artifacts.append(vertex.arn)

print("Ascendant artifacts : ")
pp.pprint(ascendant_artifacts)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.DESCENDANTS,
    include_edges=False,
)

descendant_artifacts = []
for vertex in query_result.vertices:
    try:
        descendant_artifacts.append(vertex.to_lineage_object().source.source_uri)
    except:
        # Handling TrialComponents.
        descendant_artifacts.append(vertex.arn)

print("Descendant artifacts : ")
pp.pprint(descendant_artifacts)
```

**Example Funzioni di supporto SDK per semplificare l'esecuzione di query sul lineage**  
Le classi `EndpointContext`, `ModelArtifact` e `DatasetArtifact` dispongono di funzioni di supporto che fungono da wrapper sull'API `LineageQuery` per semplificare l'utilizzo di determinate query di lineage. Il seguente esempio illustra come utilizzare queste funzioni di supporto.  

```
# Find all the datasets associated with this endpoint

datasets = []
dataset_artifacts = endpoint_context.dataset_artifacts()
for dataset in dataset_artifacts:
    datasets.append(dataset.source.source_uri)
print("Datasets : ", datasets)

# Find the training jobs associated with the endpoint
training_job_artifacts = endpoint_context.training_job_arns()
training_jobs = []
for training_job in training_job_artifacts:
    training_jobs.append(training_job)
print("Training Jobs : ", training_jobs)

# Get the ARN for the pipeline execution associated with this endpoint (if any)
pipeline_executions = endpoint_context.pipeline_execution_arn()
if pipeline_executions:
    for pipeline in pipelines_executions:
        print(pipeline)

# Here we use the `ModelArtifact` class to find all the datasets and endpoints associated with the model

dataset_artifacts = model_artifact.dataset_artifacts()
endpoint_contexts = model_artifact.endpoint_contexts()

datasets = [dataset.source.source_uri for dataset in dataset_artifacts]
endpoints = [endpoint.source.source_uri for endpoint in endpoint_contexts]

print("Datasets associated with this model : ")
pp.pprint(datasets)

print("Endpoints associated with this model : ")
pp.pprint(endpoints)

# Here we use the `DatasetArtifact` class to find all the endpoints hosting models that were trained with a particular dataset
# Find the artifact associated with the dataset

dataset_artifact_arn = list(Artifact.list(source_uri=training_data))[0].artifact_arn
dataset_artifact = DatasetArtifact.load(artifact_arn=dataset_artifact_arn)

# Find the endpoints that used this training dataset
endpoint_contexts = dataset_artifact.endpoint_contexts()
endpoints = [endpoint.source.source_uri for endpoint in endpoint_contexts]

print("Endpoints associated with the training dataset {}".format(training_data))
pp.pprint(endpoints)
```

**Example Ottenere una visualizzazione del grafico di lineage**  
Una classe di supporto `Visualizer` viene fornita nel notebook di esempio [visualizer.py](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/visualizer.py) per aiutare a tracciare il grafico di lineage. Quando viene renderizzata la risposta alla query, viene visualizzato un grafico con le relazioni di lineage da `StartArns`. Da `StartArns` la visualizzazione mostra le relazioni con le altre entità di lineage restituite nell'operazione API `query_lineage`.  

```
# Graph APIs
# Here we use the boto3 `query_lineage` API to generate the query response to plot.

from visualizer import Visualizer

query_response = sm_client.query_lineage(
    StartArns=[endpoint_context.context_arn], Direction="Ascendants", IncludeEdges=True
)

viz = Visualizer()
viz.render(query_response, "Endpoint")
        
        query_response = sm_client.query_lineage(
    StartArns=[model_artifact.artifact_arn], Direction="Ascendants", IncludeEdges=True
)
viz.render(query_response, "Model")
```

# Monitoraggio del lineage multi-account
<a name="xaccount-lineage-tracking"></a>

Amazon SageMaker AI supporta il tracciamento delle entità derivate da un AWS account diverso. AWS Gli altri account possono condividere con te le loro entità di derivazione e tu puoi accedere a queste entità di derivazione tramite chiamate API dirette o query di derivazione SageMaker AI.

SageMaker L'intelligenza artificiale ti aiuta [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)a condividere in modo sicuro le tue risorse di lignaggio. Puoi condividere le tue risorse tramite la [console AWS RAM](https://console.aws.amazon.com/ram/home).



## Configurazione del monitoraggio del lineage multi-account
<a name="setup-xaccount-lineage-tracking"></a>

Puoi raggruppare e condividere i tuoi dati [Entità di monitoraggio del lineage](lineage-tracking-entities.md) tramite un gruppo di discendenza in Amazon SageMaker AI. SageMaker L'intelligenza artificiale supporta solo un gruppo di discendenza predefinito per account. SageMaker L'IA crea il gruppo di lignaggio predefinito ogni volta che viene creata un'entità di lignaggio nel tuo account. Ogni entità di lineage di proprietà dell'account viene assegnata a questo gruppo di lineage predefinito. Per condividere le entità di lineage con un altro account, condividi questo gruppo di lineage predefinito con quell'account.

**Nota**  
È possibile condividere tutte le entità di monitoraggio del lineage in un gruppo di lineage o nessuna.

Crea una condivisione di risorse per le tue entità di derivazione utilizzando la console. AWS Resource Access Manager Per ulteriori informazioni, consulta [Condivisione delle risorse AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) nella *Guida per l'utente di AWS Resource Access Manager *.

**Nota**  
Dopo la creazione della condivisione di risorse, il completamento dell'associazione tra la risorsa e il principale può richiedere alcuni minuti. Una volta impostata l'associazione, l'account condiviso riceve un invito a partecipare alla condivisione di risorse. L'account condiviso deve accettare l'invito per accedere alle risorse condivise. Per ulteriori informazioni sull'accettazione di un invito alla condivisione di risorse AWS RAM, vedere [Using shared AWS resources](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) nella *AWS Resource Access Manager User Guide*.

### La tua policy delle risorse di monitoraggio del lineage multi-account
<a name="setup-xaccount-lineage-tracking-resource-policy"></a>

Amazon SageMaker AI supporta solo un tipo di politica delle risorse. La politica delle risorse di SageMaker intelligenza artificiale deve consentire tutte le seguenti operazioni:

```
"sagemaker:DescribeAction"
"sagemaker:DescribeArtifact"
"sagemaker:DescribeContext"
"sagemaker:DescribeTrialComponent"
"sagemaker:AddAssociation"
"sagemaker:DeleteAssociation"
"sagemaker:QueryLineage"
```

**Example Di seguito è riportata una politica delle risorse di SageMaker intelligenza artificiale creata utilizzando AWS Resource Access Manager per creare una condivisione di risorse per un gruppo di discendenza di account.**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "FullLineageAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": [
        "sagemaker:DescribeAction",
        "sagemaker:DescribeArtifact",
        "sagemaker:DescribeContext",
        "sagemaker:DescribeTrialComponent",
        "sagemaker:AddAssociation",
        "sagemaker:DeleteAssociation",
        "sagemaker:QueryLineage"
      ],
      "Resource": "arn:aws:sagemaker:us-west-2:111111111111:lineage-group/sagemaker-default-lineage-group"
    }
  ]
}
```

## Monitoraggio delle entità di lineage multi-account
<a name="tracking-lineage-xaccount"></a>

Con il monitoraggio del lineage multi-account, puoi associare entità di lineage in account diversi utilizzando la stessa operazione API `AddAssociation`. Quando associ due entità di derivazione, l' SageMaker intelligenza artificiale verifica se disponi delle autorizzazioni per eseguire l'azione `AddAssociation` API su entrambe le entità di derivazione. SageMaker L'IA stabilisce quindi l'associazione. Se non disponi delle autorizzazioni, l' SageMaker IA *non* crea l'associazione. Una volta stabilita l'associazione multi-account, è possibile accedere a entrambe le entità di lineage dall'altra tramite l'operazione API `QueryLineage`. Per ulteriori informazioni, consulta [Esecuzione di query su entità di lineage](querying-lineage-entities.md).

Oltre all' SageMaker IA che crea automaticamente le entità di derivazione, se disponi dell'accesso su più account, l' SageMaker IA collega gli artefatti che fanno riferimento allo stesso oggetto o allo stesso dato. Se i dati di un account vengono utilizzati nel tracciamento della discendenza da account diversi, l' SageMaker IA crea un artefatto in ogni account per tenere traccia di tali dati. Con il lignaggio tra account diversi, ogni volta che l' SageMaker IA crea nuovi artefatti, SageMaker verifica se esistono altri artefatti creati per gli stessi dati, anch'essi condivisi con te. SageMaker L'intelligenza artificiale stabilisce quindi le associazioni tra l'artefatto appena creato e ciascuno degli artefatti condivisi con te con il set to. `AssociationType` `SameAs` È quindi possibile utilizzare l'operazione API `[QueryLineage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_QueryLineage.html)` per passare dalle entità di lineage presenti nel proprio account alle entità di lineage condivise con l'utente ma di proprietà di un account AWS diverso. Per ulteriori informazioni, consulta [Esecuzione di query su entità di lineage](querying-lineage-entities.md)

**Topics**
+ [Accesso alle risorse di lineage da un account diverso](#tracking-lineage-xaccount-accessing-resources)
+ [Autorizzazione per l'esecuzione di query su entità di lineage multi-account](#tracking-lineage-xaccount-authorization)

### Accesso alle risorse di lineage da un account diverso
<a name="tracking-lineage-xaccount-accessing-resources"></a>

Una volta impostato l'accesso tra account per la condivisione della discendenza, puoi chiamare le seguenti azioni SageMaker API direttamente con l'ARN per descrivere le entità di derivazione condivise da un altro account:
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAction.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAction.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeArtifact.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeArtifact.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeContext.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeContext.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrialComponent.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrialComponent.html)

Puoi anche gestire [le associazioni per le](https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking-entities.html) entità derivate da account diversi che sono condivisi con te, utilizzando le seguenti azioni API: SageMaker 
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteAssociation.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteAssociation.html)

[Per un taccuino che dimostra come usare SageMaker AI Lineage APIs per interrogare la provenienza tra gli account, vedi -with-ram.ipynb. sagemaker-lineage-cross-account](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/sagemaker-lineage-cross-account-with-ram.ipynb)

### Autorizzazione per l'esecuzione di query su entità di lineage multi-account
<a name="tracking-lineage-xaccount-authorization"></a>

Amazon SageMaker AI deve verificare che tu disponga delle autorizzazioni per eseguire l'azione `QueryLineage` API su. `StartArns` Ciò viene applicato tramite la policy delle risorse collegata a `LineageGroup`. Il risultato di questa operazione include tutte le entità di lineage a cui hai accesso, indipendentemente dal fatto che siano di proprietà del tuo account o condivise da un altro account. Per ulteriori informazioni, consulta [Esecuzione di query su entità di lineage](querying-lineage-entities.md).

# Implementazione della registrazione del modello con il registro dei modelli
<a name="model-registry"></a>

Con Amazon SageMaker Model Registry puoi fare quanto segue:
+ Catalogare modelli per la produzione.
+ Gestire le versioni dei modelli.
+ Associare i metadati, come i parametri di addestramento, a un modello.
+ Visualizza le informazioni contenute nelle Amazon SageMaker Model Cards nei tuoi modelli registrati. 
+ Visualizzare il lineage del modello per la monitoraggio e la riproducibilità.
+ Definire un costrutto di staging che i modelli possono seguire per tutto il ciclo di vita del modello.
+ Gestire lo stato di approvazione di un modello.
+ Implementare i modelli in produzione.
+ Automatizzare l'implementazione dei modelli con CI/CD.
+ Condividere i modelli con altri utenti.

Cataloga i modelli creando gruppi di SageMaker modelli di registro dei modelli (Package) che contengono diverse versioni di un modello. È possibile creare un gruppo di modelli che monitori tutti i modelli addestrati per risolvere un determinato problema. È quindi possibile registrare ogni modello addestrato e il Registro dei modelli lo aggiunge al gruppo di modelli come nuova versione del modello. Infine, è possibile creare categorie di gruppi di modelli organizzandoli ulteriormente in raccolte di registri di SageMaker modelli. Un flusso di lavoro tipico potrebbe essere simile al seguente:
+ Crea un gruppo di modelli.
+ Crea una pipeline ML che addestra un modello. Per informazioni sulle SageMaker pipeline, vedere. [Azioni di Pipelines](pipelines-build.md)
+ Per ogni esecuzione della pipeline ML, crea una versione del modello da registrare nel gruppo di modelli creato nella prima fase.
+ Aggiungi il tuo gruppo di modelli a una o più raccolte del Registro dei modelli.

Per informazioni dettagliate su come creare e utilizzare modelli, versioni di modelli e gruppi di modelli, consulta [Modelli, versioni di modelli e gruppi di modelli del Registro dei modelli](model-registry-models.md). Facoltativamente, se desideri raggruppare ulteriormente i tuoi gruppi di modelli in raccolte, consulta [Raccolte del registro dei modelli](modelcollections.md).

# Modelli, versioni di modelli e gruppi di modelli del Registro dei modelli
<a name="model-registry-models"></a>

Il SageMaker Model Registry è strutturato come diversi gruppi di modelli (Package) con pacchetti di modelli in ciascun gruppo. Questi gruppi di modelli possono facoltativamente essere aggiunti a una o più raccolte. Ogni pacchetto di modelli in un gruppo di modelli corrisponde a un modello addestrato. La versione di ogni pacchetto di modelli è un valore numerico che inizia da 1 e viene incrementato con ogni nuovo pacchetto di modelli aggiunto a un gruppo di modelli. Ad esempio, se vengono aggiunti 5 pacchetti di modelli a un gruppo di modelli, le versioni di pacchetto di modelli saranno 1, 2, 3, 4 e 5. 

 Un pacchetto di modelli è il modello effettivo che viene registrato nel registro dei modelli come entità soggetta a controllo delle versioni. Esistono due tipi di pacchetti modello in SageMaker AI. Un tipo viene utilizzato nel Marketplace AWS e l'altro nel Registro dei modelli. I pacchetti di modelli utilizzati nel Marketplace AWS non sono entità con versione e non sono associati ai gruppi di modelli nel Registro dei modelli. Il registro dei modelli riceve ogni nuovo modello riqualificato, fornisce una versione e lo assegna a un gruppo di modelli all'interno del registro dei modelli. L'immagine seguente mostra un esempio di gruppo di modelli con 25 modelli soggetti consecutivamente al controllo delle versioni. Per ulteriori informazioni sui pacchetti modello utilizzati nel AWS Marketplace, vedere[Algoritmi e pacchetti nel Marketplace AWS](sagemaker-marketplace.md).

I pacchetti di modelli utilizzati nel Registro dei modelli hanno una versione e **devono** essere associati a un gruppo di modelli. L'ARN di questo tipo di pacchetto del modello ha la struttura: `'arn:aws:sagemaker:region:account:model-package-group/version'`

Negli argomenti seguenti viene illustrato come creare e utilizzare modelli, versioni di modelli e gruppi di modelli nel Registro dei modelli.

**Topics**
+ [Creazione di un gruppo di modelli](model-registry-model-group.md)
+ [Eliminazione di un gruppo di modelli](model-registry-delete-model-group.md)
+ [Registrazione di una versione del modello](model-registry-version.md)
+ [Visualizzazione di gruppi e versioni dei modelli](model-registry-view.md)
+ [Aggiornamento dei dettagli di una versione del modello](model-registry-details.md)
+ [Confronto delle versioni dei modelli](model-registry-version-compare.md)
+ [Visualizzazione e gestione dei tag del gruppo di modelli e della versione del modello](model-registry-tags.md)
+ [Eliminazione di una versione del modello](model-registry-delete-model-version.md)
+ [Costrutto di staging per il ciclo di vita del modello](model-registry-staging-construct.md)
+ [Aggiornamento dello stato di approvazione di un modello](model-registry-approve.md)
+ [Implementazione di un modello dal registro con Python](model-registry-deploy.md)
+ [Implementazione di un modello in Studio](model-registry-deploy-studio.md)
+ [Rilevabilità multi-account](model-registry-ram.md)
+ [Visualizzazione della cronologia di implementazione di un modello](model-registry-deploy-history.md)
+ [Visualizzazione dei dettagli del lineage del modello in Studio](model-registry-lineage-view-studio.md)

# Creazione di un gruppo di modelli
<a name="model-registry-model-group"></a>

Un gruppo di modelli contiene le diverse versioni del modello. È possibile creare un gruppo di modelli che monitori tutti i modelli addestrati per risolvere un determinato problema. Crea un gruppo di modelli utilizzando la console AWS SDK per Python (Boto3) o Amazon SageMaker Studio.

## Creazione di un gruppo di modelli (Boto3)
<a name="model-registry-package-group-api"></a>

**Importante**  
Le politiche IAM personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L’autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic applicano automaticamente tag a tutte le risorse che creano. Se una policy IAM consente a Studio e Studio Classic di creare risorse ma non consente l'etichettatura, possono verificarsi errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta [Fornisci le autorizzazioni per etichettare SageMaker le risorse AI](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md)che danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Per creare un gruppo di modelli con Boto3, chiama l’operazione API `create_model_package_group` e specifica un nome e una descrizione come parametri. L'esempio seguente mostra come creare un gruppo di modelli. La risposta alla chiamata `create_model_package_group` è il nome della risorsa Amazon (ARN) del nuovo gruppo di modelli.

Innanzitutto, importa i pacchetti richiesti e configura il client SageMaker AI Boto3.

```
import time
import os
from sagemaker import get_execution_role, session
import boto3

region = boto3.Session().region_name

role = get_execution_role()

sm_client = boto3.client('sagemaker', region_name=region)
```

Ora crea il gruppo di modelli.

```
import time
model_package_group_name = "scikit-iris-detector-" + str(round(time.time()))
model_package_group_input_dict = {
 "ModelPackageGroupName" : model_package_group_name,
 "ModelPackageGroupDescription" : "Sample model package group"
}

create_model_package_group_response = sm_client.create_model_package_group(**model_package_group_input_dict)
print('ModelPackageGroup Arn : {}'.format(create_model_package_group_response['ModelPackageGroupArn']))
```

## Creazione di un gruppo di modelli (Studio o Studio Classic)
<a name="model-registry-package-group-studio"></a>

Per creare un gruppo di modelli nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Scegli **Registra**, quindi scegli **Gruppo di modelli**.

1. Nella finestra di dialogo **Registra gruppo di modelli**, inserisci le informazioni seguenti:
   + Il nome del nuovo gruppo di modelli nel campo **Nome del gruppo di modelli**.
   + (Facoltativo) Descrizione del gruppo di modelli nel campo **Descrizione**.
   + (Facoltativo) Qualsiasi coppia chiave-valore che intendi associare al gruppo di modelli nel campo **Tag**. Per ulteriori informazioni sull'utilizzo dei tag, consulta [Assegnazione di tag alle risorse AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in *Riferimenti generali di AWS*.

1. Scegli **Registra gruppo di modelli**.

1. (Facoltativo) Nella pagina **Modelli**, scegli la scheda **Modelli registrati**, quindi seleziona **Gruppi di modelli**. Verifica che il gruppo di modelli appena creato compaia nell’elenco dei gruppi di modelli.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Seleziona **Azioni** e scegli **Crea gruppo di modelli**.

1. Nella finestra di dialogo **Crea gruppo di modelli**, inserisci le informazioni seguenti:
   + Immetti il nome del nuovo gruppo di modelli nel campo **Nome del gruppo di modelli**.
   + (Facoltativo) Inserisci una descrizione del gruppo di modelli nel campo **Descrizione**.
   + (Facoltativo) Inserisci le coppie chiave-valore che intendi associare al gruppo modelli nel campo **Tag**. Per ulteriori informazioni sull'utilizzo dei tag, consulta [Assegnazione di tag alle risorse AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in *Riferimenti generali di AWS*.
   + (Facoltativo) Scegli un progetto a cui associare il gruppo di modelli nel campo **Progetto**. Per informazioni sui progetti, consulta [MLOps Automazione con SageMaker progetti](sagemaker-projects.md).

1. Scegli **Crea gruppo di modelli**.

------

# Eliminazione di un gruppo di modelli
<a name="model-registry-delete-model-group"></a>

Questa procedura dimostra come eliminare un gruppo di modelli nella console Amazon SageMaker Studio. Quando elimini un gruppo di modelli, perdi l’accesso alle versioni del modello nel gruppo di modelli.

## Eliminazione di un gruppo di modelli (Studio o Studio Classic)
<a name="model-registry-delete-model-group-studio"></a>

**Importante**  
È possibile eliminare solo un gruppo di modelli vuoto. Prima di eliminare il gruppo di modelli, rimuovi le versioni del modello, se presenti.

Per eliminare un gruppo di modelli nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Dall’elenco dei gruppi di modelli, seleziona la casella di controllo accanto al nome del gruppo di modelli da eliminare.

1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra dell’elenco dei gruppi di modelli, quindi seleziona **Elimina**.

1. Nella finestra di dialogo **Elimina gruppo di modelli**, scegli **Sì, elimina il gruppo di modelli**.

1. Scegli **Elimina**.

1. Verifica che i gruppi di modelli eliminati non compaiano più nell’elenco dei gruppi di modelli.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**. Viene visualizzato un elenco dei gruppi di modelli.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da eliminare.

1. Nell'angolo in alto a destra, scegli **Rimuovi**.

1. Nella finestra di dialogo di conferma, inserisci `REMOVE`.

1. Scegli **Rimuovi**.

------

# Registrazione di una versione del modello
<a name="model-registry-version"></a>

Puoi registrare un modello Amazon SageMaker AI creando una versione del modello che specifica il gruppo di modelli a cui appartiene. Una versione del modello deve includere gli artefatti del modello (i pesi addestrati di un modello) e, facoltativamente, il codice di inferenza per il modello.

Una *pipeline di inferenza* è un modello di SageMaker intelligenza artificiale composto da una sequenza lineare da due a quindici contenitori che elaborano le richieste di inferenza. Una pipeline di inferenza può essere registrata specificando i container e le variabili di ambiente associate. Per ulteriori informazioni sulle pipeline di inferenza, consulta [Pipeline di inferenza in Amazon AI SageMaker](inference-pipelines.md).

È possibile registrare un modello con una pipeline di inferenza, specificando i container e le variabili di ambiente associate. Per creare una versione del modello con una pipeline di inferenza utilizzando la AWS SDK per Python (Boto3) console Amazon SageMaker Studio o creando una fase in una pipeline di creazione di modelli di SageMaker intelligenza artificiale, utilizza i passaggi seguenti. 

**Topics**
+ [Registra una versione del modello (AI Pipelines) SageMaker](#model-registry-pipeline)
+ [Registrazione di una versione del modello (boto3)](#model-registry-version-api)
+ [Registrazione di una versione del modello (Studio o Studio Classic)](#model-registry-studio)
+ [Registrazione di una versione del modello da un account diverso](#model-registry-version-xaccount)

## Registra una versione del modello (AI Pipelines) SageMaker
<a name="model-registry-pipeline"></a>

Per registrare una versione del modello utilizzando una pipeline di creazione di modelli SageMaker AI, crea una `RegisterModel` fase nella pipeline. Per ulteriori informazioni sulla creazione di una fase `RegisterModel` come parte di una pipeline, consulta [Fase 8: Definire una RegisterModel fase per creare un pacchetto modello](define-pipeline.md#define-pipeline-register).

## Registrazione di una versione del modello (boto3)
<a name="model-registry-version-api"></a>

Per registrare una versione del modello con Boto3, chiama l’operazione API `create_model_package`.

Innanzitutto, configura il dizionario dei parametri da passare all’operazione API `create_model_package`.

```
# Specify the model source
model_url = "s3://your-bucket-name/model.tar.gz"

modelpackage_inference_specification =  {
    "InferenceSpecification": {
      "Containers": [
         {
            "Image": image_uri,
	    "ModelDataUrl": model_url
         }
      ],
      "SupportedContentTypes": [ "text/csv" ],
      "SupportedResponseMIMETypes": [ "text/csv" ],
   }
 }

# Alternatively, you can specify the model source like this:
# modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url

create_model_package_input_dict = {
    "ModelPackageGroupName" : model_package_group_name,
    "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)",
    "ModelApprovalStatus" : "PendingManualApproval"
}
create_model_package_input_dict.update(modelpackage_inference_specification)
```

Quindi, chiama l’operazione API `create_model_package` passando il dizionario dei parametri appena impostato.

```
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict)
model_package_arn = create_model_package_response["ModelPackageArn"]
print('ModelPackage Version ARN : {}'.format(model_package_arn))
```

## Registrazione di una versione del modello (Studio o Studio Classic)
<a name="model-registry-studio"></a>

Per registrare una versione del modello nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Modelli** dal menu.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli** e **I miei modelli**, se non sono già selezionati.

1. Scegli **Registrati**. Si apre la pagina **Registra modello**.

1. Segui le istruzioni fornite nella pagina **Registra modello**. 

1. Dopo aver controllato le tue scelte, scegli **Registra**. Al termine, verrai indirizzato alla pagina **Panoramica** della versione del modello.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Apri il modulo **Registra versione**. Ci sono due modi per farlo:
   + Seleziona **Azioni** e scegli **Crea versione del modello**.
   + Seleziona il nome del gruppo di modelli per il quale desideri creare una versione del modello, quindi scegli **Crea versione del modello**.

1. Nel modulo **Registra versione del modello**, inserisci le seguenti informazioni:
   + Nel menu a discesa **Nome del gruppo del pacchetto di modelli**, seleziona il nome del gruppo di modelli.
   + (Facoltativo) Inserisci una descrizione per la versione del modello.
   + Nel menu a discesa **Stato di approvazione del modello**, seleziona lo stato di approvazione della versione.
   + (Facoltativo) Nel campo **Metadati personalizzati**, aggiungi tag personalizzati come coppie chiave-valore.

1. Scegli **Next (Successivo)**.

1. Nel modulo **Specifica di inferenza**, inserisci le seguenti informazioni:
   + Immetti la posizione dell'immagine di inferenza.
   + Immetti la posizione degli artefatti dei dati del modello.
   + (Facoltativo) Inserisci le informazioni sulle immagini da utilizzare per i processi di trasformazione e inferenza in tempo reale e sui tipi MIME di input e output supportati.

1. Scegli **Next (Successivo)**.

1. (Facoltativo) Inserisci ulteriori dettagli per ricevere migliori raccomandazioni sugli endpoint.

1. Seleziona **Avanti**.

1. (Facoltativo) Scegli le metriche del modello che desideri includere.

1. Seleziona **Avanti**.

1. Assicurati che le impostazioni visualizzate siano corrette e scegli **Registra versione del modello**. Se, successivamente, viene visualizzata una finestra modale con un messaggio di errore, scegli **Visualizza** (accanto al messaggio) per visualizzare l'origine dell'errore.

1. Conferma che la nuova versione del modello sia visualizzata nella pagina del gruppo di modelli principale.

------

## Registrazione di una versione del modello da un account diverso
<a name="model-registry-version-xaccount"></a>

Per registrare le versioni del modello con un gruppo di modelli creato da un AWS account diverso, devi aggiungere una politica sulle AWS Identity and Access Management risorse tra account per abilitare quell'account. Ad esempio, un AWS account dell'organizzazione è responsabile dei modelli di formazione e un altro account è responsabile della gestione, della distribuzione e dell'aggiornamento dei modelli. Crea le policy delle risorse IAM e applicale alla risorsa specifica dell'account a cui desideri concedere l'accesso in questo caso. *Per ulteriori informazioni sulle politiche relative alle risorse tra account in AWS, consulta [Logica di valutazione delle politiche tra account](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) nella Guida per l'AWS Identity and Access Management utente.*

Per abilitare la rilevabilità multi-account, che consente ad altri account di visualizzare i gruppi di pacchetti di modelli dall’account proprietario di risorse, consulta [Rilevabilità multi-account](model-registry-ram.md).

**Nota**  
È inoltre necessario utilizzare una chiave KMS per crittografare l'azione di [configurazione dei dati di output](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html) durante l'addestramento per la distribuzione del modello tra account.

Per abilitare il registro dei modelli tra account in SageMaker AI, devi fornire una politica delle risorse tra account per il Model Group che contiene le versioni del modello. Di seguito è riportato un esempio che crea policy tra account per il gruppo di modelli e le applica alla specifica risorsa.

La seguente configurazione deve essere impostata nell'account di origine che registra i modelli tra account in un gruppo di modelli. In questo esempio, l'account di origine è l'account di addestramento del modello che addestrerà e, di conseguenza, registrerà l'account incrociato del modello nel registro dei modelli dell'apposito account.

L'esempio presuppone che in precedenza siano state definite le seguenti variabili:
+ `sm_client`— Un client SageMaker AI Boto3.
+ `model_package_group_name`: il gruppo di modelli al quale si desidera concedere l’accesso.
+ `model_package_group_arn`: l’ARN del gruppo di modelli a cui concedere l’accesso multi-account.
+ `bucket`: il bucket Amazon S3 in cui vengono archiviati gli artefatti per l’addestramento dei modelli.

Per poter implementare un modello creato in un account diverso, l'utente deve avere un ruolo che abbia accesso alle azioni di SageMaker intelligenza artificiale, ad esempio un ruolo con la `AmazonSageMakerFullAccess` politica gestita. Per informazioni sulle politiche gestite dall' SageMaker IA, consulta[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md).

### Policy relative alle risorse IAM richieste
<a name="model-registry-version-xaccount-policies"></a>

Il diagramma seguente illustra le policy necessarie per consentire la registrazione del modello tra più account. Come illustrato, queste policy devono essere attive durante l’addestramento del modello per registrare correttamente il modello nell'account di registrazione dei modelli.

![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/model_registry_cross_account.png)


Amazon ECR, Amazon S3 AWS KMS e le policy sono dimostrate nei seguenti esempi di codice. 

**Esempio di policy Amazon ECR**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:Describe*"
            ]
        }
    ]
}
```

------

**Esempio di policy Amazon S3**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetBucketAcl",
                "s3:GetObjectAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

**Esempio di politica AWS KMS **

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### Applicazione di policy relative alle risorse agli account
<a name="model-registry-version-xaccount-policy-usage"></a>

La seguente configurazione delle policy, che applica le policy discusse nella sezione precedente, deve essere inserita nell'account di addestramento del modello.

```
import json

# The Model Registry account id of the Model Group 
model_registry_account = "111111111111"

# The model training account id where training happens
model_training_account = "222222222222"

# 1. Create a policy for access to the ECR repository 
# in the model training account for the Model Registry account Model Group
ecr_repository_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [{"Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": {
          "AWS": f"arn:aws:iam::{model_registry_account}:root"
        },
        "Action": [
          "ecr:BatchGetImage",
          "ecr:Describe*"
        ]
    }]
}

# Convert the ECR policy from JSON dict to string
ecr_repository_policy = json.dumps(ecr_repository_policy)

# Set the new ECR policy
ecr = boto3.client('ecr')
response = ecr.set_repository_policy(
    registryId = model_training_account,
    repositoryName = "decision-trees-sample",
    policyText = ecr_repository_policy
)

# 2. Create a policy in the model training account for access to the S3 bucket 
# where the model is present in the Model Registry account Model Group
bucket_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [{"Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": {"AWS": f"arn:aws:iam::{model_registry_account}:root"
        },
        "Action": [
          "s3:GetObject",
          "s3:GetBucketAcl",
          "s3:GetObjectAcl"
        ],
        "Resource": [
          "arn:aws:s3:::{bucket}/*",
	  "Resource: arn:aws:s3:::{bucket}"
        ]
    }]
}

# Convert the S3 policy from JSON dict to string
bucket_policy = json.dumps(bucket_policy)

# Set the new bucket policy
s3 = boto3.client("s3")
response = s3.put_bucket_policy(
    Bucket = bucket,
    Policy = bucket_policy)

# 3. Create the KMS grant for the key used during training for encryption
# in the model training account to the Model Registry account Model Group
client = boto3.client("kms")

response = client.create_grant(
    GranteePrincipal=model_registry_account,
    KeyId=kms_key_id
    Operations=[
        "Decrypt",
        "GenerateDataKey",
    ],
)
```

La seguente configurazione deve essere inserita nell'account di registrazione del modello in cui esiste il gruppo di modelli.

```
# The Model Registry account id of the Model Group 
model_registry_account = "111111111111"

# 1. Create policy to allow the model training account to access the ModelPackageGroup
model_package_group_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPermModelPackageVersion",
            "Effect": "Allow",
            "Principal": {"AWS": f"arn:aws:iam::{model_training_account}:root"},
            "Action": ["sagemaker:CreateModelPackage"],
            "Resource": f"arn:aws:sagemaker:{region}:{model_registry_account}:model-package/{model_package_group_name}/*"
        }
    ]
}

# Convert the policy from JSON dict to string
model_package_group_policy = json.dumps(model_package_group_policy)

# Set the new policy
response = sm_client.put_model_package_group_policy(
    ModelPackageGroupName = model_package_group_name,
    ResourcePolicy = model_package_group_policy)
```

Infine, utilizza l'azione `create_model_package` dell’account di addestramento del modello per registrare il pacchetto di modelli tra account.

```
# Specify the model source
model_url = "s3://{bucket}/model.tar.gz"

#Set up the parameter dictionary to pass to the create_model_package API operation
modelpackage_inference_specification =  {
    "InferenceSpecification": {
        "Containers": [
            {
                "Image": f"{model_training_account}.dkr.ecr.us-east-2.amazonaws.com/decision-trees-sample:latest",
                "ModelDataUrl": model_url
            }
        ],
        "SupportedContentTypes": [ "text/csv" ],
        "SupportedResponseMIMETypes": [ "text/csv" ],
    }
}

# Alternatively, you can specify the model source like this:
# modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url

create_model_package_input_dict = {
    "ModelPackageGroupName" : model_package_group_arn,
    "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)",
    "ModelApprovalStatus" : "PendingManualApproval"
}
create_model_package_input_dict.update(modelpackage_inference_specification)

# Create the model package in the Model Registry account
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict)
model_package_arn = create_model_package_response["ModelPackageArn"]
print('ModelPackage Version ARN : {}'.format(model_package_arn))
```

# Visualizzazione di gruppi e versioni dei modelli
<a name="model-registry-view"></a>

I gruppi e le versioni dei modelli consentono di organizzare i modelli. Puoi visualizzare un elenco delle versioni del modello in un gruppo di modelli utilizzando la console AWS SDK per Python (Boto3) (Boto3) o Amazon SageMaker Studio.

## Visualizzazione di un elenco delle versioni del modello in un gruppo
<a name="model-registry-view-list"></a>

È possibile visualizzare tutte le versioni del modello associate a un gruppo di modelli. Se un gruppo di modelli rappresenta tutti i modelli addestrati per risolvere uno specifico problema di machine learning, è possibile visualizzare tutti i modelli correlati.

### Visualizzazione di un elenco delle versioni del modello in un gruppo (boto3)
<a name="model-registry-view-list-api"></a>

Per visualizzare le versioni del modello associate a un gruppo di modelli con Boto3, chiama l’operazione API `list_model_packages` e passa il nome del gruppo di modelli come valore del parametro `ModelPackageGroupName`. Il codice seguente elenca le versioni del modello associate al gruppo di modelli creato in [Creazione di un gruppo di modelli (Boto3)](model-registry-model-group.md#model-registry-package-group-api).

```
sm_client.list_model_packages(ModelPackageGroupName=model_package_group_name)
```

### Visualizzazione di un elenco di versioni del modello in un gruppo (Studio o Studio Classic)
<a name="model-registry-view-list-studio"></a>

Per visualizzare un elenco delle versioni del modello in un gruppo di modelli nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Modelli** dal menu.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Dall’elenco dei gruppi di modelli, scegli la parentesi angolare a sinistra del gruppo di modelli da visualizzare.

1. Viene visualizzato un elenco delle versioni del modello nel gruppo di modelli.

1. (Facoltativo) Scegli **Visualizza tutto**, se disponibile, per visualizzare versioni aggiuntive del modello.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da eliminare.

1. Viene visualizzata una nuova scheda con un elenco delle versioni del modello nel gruppo di modelli.

------

# Aggiornamento dei dettagli di una versione del modello
<a name="model-registry-details"></a>

Puoi visualizzare e aggiornare i dettagli di una versione specifica del modello utilizzando la console AWS SDK per Python (Boto3) o Amazon SageMaker Studio.

**Importante**  
Amazon SageMaker AI integra Model Cards nel Model Registry. Un pacchetto di modelli registrato nel registro dei modelli include come componente una scheda del modello semplificata. Per ulteriori informazioni, consulta [Schema della scheda del modello del pacchetto di modelli (Studio)](#model-card-schema).

## Visualizzazione e aggiornamento dei dettagli di una versione del modello (Boto3)
<a name="model-registry-details-api"></a>

Per visualizzare i dettagli di una versione del modello usando boto3, completa la seguente procedura.

1. Chiama l’operazione API `list_model_packages` per visualizzare le versioni del modello in un gruppo di modelli.

   ```
   sm_client.list_model_packages(ModelPackageGroupName="ModelGroup1")
   ```

   La risposta è un elenco riepilogativo dei pacchetti di modelli. Puoi ottenere il nome della risorsa Amazon (ARN) delle versioni del modello da questo elenco.

   ```
   {'ModelPackageSummaryList': [{'ModelPackageGroupName': 'AbaloneMPG-16039329888329896',
      'ModelPackageVersion': 1,
      'ModelPackageArn': 'arn:aws:sagemaker:us-east-2:123456789012:model-package/ModelGroup1/1',
      'ModelPackageDescription': 'TestMe',
      'CreationTime': datetime.datetime(2020, 10, 29, 1, 27, 46, 46000, tzinfo=tzlocal()),
      'ModelPackageStatus': 'Completed',
      'ModelApprovalStatus': 'Approved'}],
    'ResponseMetadata': {'RequestId': '12345678-abcd-1234-abcd-aabbccddeeff',
     'HTTPStatusCode': 200,
     'HTTPHeaders': {'x-amzn-requestid': '12345678-abcd-1234-abcd-aabbccddeeff',
      'content-type': 'application/x-amz-json-1.1',
      'content-length': '349',
      'date': 'Mon, 23 Nov 2020 04:56:50 GMT'},
     'RetryAttempts': 0}}
   ```

1. Richiama `describe_model_package` per i dettagli della versione del modello. Puoi trasmettere l'ARN di una versione del modello da cui hai ricevuto l'output della chiamata a `list_model_packages`.

   ```
   sm_client.describe_model_package(ModelPackageName="arn:aws:sagemaker:us-east-2:123456789012:model-package/ModelGroup1/1")
   ```

   L'output di questa chiamata è un oggetto JSON con i dettagli della versione del modello.

   ```
   {'ModelPackageGroupName': 'ModelGroup1',
    'ModelPackageVersion': 1,
    'ModelPackageArn': 'arn:aws:sagemaker:us-east-2:123456789012:model-package/ModelGroup/1',
    'ModelPackageDescription': 'Test Model',
    'CreationTime': datetime.datetime(2020, 10, 29, 1, 27, 46, 46000, tzinfo=tzlocal()),
    'InferenceSpecification': {'Containers': [{'Image': '257758044811.dkr.ecr.us-east-2.amazonaws.com/sagemaker-xgboost:1.0-1-cpu-py3',
       'ImageDigest': 'sha256:99fa602cff19aee33297a5926f8497ca7bcd2a391b7d600300204eef803bca66',
       'ModelDataUrl': 's3://sagemaker-us-east-2-123456789012/ModelGroup1/pipelines-0gdonccek7o9-AbaloneTrain-stmiylhtIR/output/model.tar.gz'}],
     'SupportedTransformInstanceTypes': ['ml.m5.xlarge'],
     'SupportedRealtimeInferenceInstanceTypes': ['ml.t2.medium', 'ml.m5.xlarge'],
     'SupportedContentTypes': ['text/csv'],
     'SupportedResponseMIMETypes': ['text/csv']},
    'ModelPackageStatus': 'Completed',
    'ModelPackageStatusDetails': {'ValidationStatuses': [],
     'ImageScanStatuses': []},
    'CertifyForMarketplace': False,
    'ModelApprovalStatus': 'PendingManualApproval',
    'LastModifiedTime': datetime.datetime(2020, 10, 29, 1, 28, 0, 438000, tzinfo=tzlocal()),
    'ResponseMetadata': {'RequestId': '12345678-abcd-1234-abcd-aabbccddeeff',
     'HTTPStatusCode': 200,
     'HTTPHeaders': {'x-amzn-requestid': '212345678-abcd-1234-abcd-aabbccddeeff',
      'content-type': 'application/x-amz-json-1.1',
      'content-length': '1038',
      'date': 'Mon, 23 Nov 2020 04:59:38 GMT'},
     'RetryAttempts': 0}}
   ```

### Schema della scheda del modello del pacchetto di modelli (Studio)
<a name="model-card-schema"></a>

Tutti i dettagli relativi alla versione del modello sono inclusi nella scheda del modello del pacchetto di modelli. La scheda modello di un pacchetto modello è un uso speciale della Amazon SageMaker Model Card e il suo schema è semplificato. Lo schema della scheda del modello del pacchetto di modelli è mostrato nell’elenco a discesa espandibile seguente.

#### Schema della scheda del modello del pacchetto di modelli
<a name="collapsible-section-model-package-model-card-schema"></a>

```
{
  "title": "SageMakerModelCardSchema",
  "description": "Schema of a model package’s model card.",
  "version": "0.1.0",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "model_overview": {
      "description": "Overview about the model.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "model_creator": {
          "description": "Creator of model.",
          "type": "string",
          "maxLength": 1024
        },
        "model_artifact": {
          "description": "Location of the model artifact.",
          "type": "array",
          "maxContains": 15,
          "items": {
            "type": "string",
            "maxLength": 1024
          }
        }
      }
    },
    "intended_uses": {
      "description": "Intended usage of model.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "purpose_of_model": {
          "description": "Reason the model was developed.",
          "type": "string",
          "maxLength": 2048
        },
        "intended_uses": {
          "description": "Intended use cases.",
          "type": "string",
          "maxLength": 2048
        },
        "factors_affecting_model_efficiency": {
          "type": "string",
          "maxLength": 2048
        },
        "risk_rating": {
          "description": "Risk rating for model card.",
          "$ref": "#/definitions/risk_rating"
        },
        "explanations_for_risk_rating": {
          "type": "string",
          "maxLength": 2048
        }
      }
    },
    "business_details": {
      "description": "Business details of model.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "business_problem": {
          "description": "Business problem solved by the model.",
          "type": "string",
          "maxLength": 2048
        },
        "business_stakeholders": {
          "description": "Business stakeholders.",
          "type": "string",
          "maxLength": 2048
        },
        "line_of_business": {
          "type": "string",
          "maxLength": 2048
        }
      }
    },
    "training_details": {
      "description": "Overview about the training.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "objective_function": {
          "description": "The objective function for which the model is optimized.",
          "function": {
            "$ref": "#/definitions/objective_function"
          },
          "notes": {
            "type": "string",
            "maxLength": 1024
          }
        },
        "training_observations": {
          "type": "string",
          "maxLength": 1024
        },
        "training_job_details": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "training_arn": {
              "description": "SageMaker Training job ARN.",
              "type": "string",
              "maxLength": 1024
            },
            "training_datasets": {
              "description": "Location of the model datasets.",
              "type": "array",
              "maxContains": 15,
              "items": {
                "type": "string",
                "maxLength": 1024
              }
            },
            "training_environment": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "container_image": {
                  "description": "SageMaker training image URI.",
                  "type": "array",
                  "maxContains": 15,
                  "items": {
                    "type": "string",
                    "maxLength": 1024
                  }
                }
              }
            },
            "training_metrics": {
              "type": "array",
              "items": {
                "maxItems": 50,
                "$ref": "#/definitions/training_metric"
              }
            },
            "user_provided_training_metrics": {
              "type": "array",
              "items": {
                "maxItems": 50,
                "$ref": "#/definitions/training_metric"
              }
            },
            "hyper_parameters": {
              "type": "array",
              "items": {
                "maxItems": 100,
                "$ref": "#/definitions/training_hyper_parameter"
              }
            },
            "user_provided_hyper_parameters": {
              "type": "array",
              "items": {
                "maxItems": 100,
                "$ref": "#/definitions/training_hyper_parameter"
              }
            }
          }
        }
      }
    },
    "evaluation_details": {
      "type": "array",
      "default": [],
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "pattern": ".{1,63}"
          },
          "evaluation_observation": {
            "type": "string",
            "maxLength": 2096
          },
          "evaluation_job_arn": {
            "type": "string",
            "maxLength": 256
          },
          "datasets": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 1024
            },
            "maxItems": 10
          },
          "metadata": {
            "description": "Additional attributes associated with the evaluation results.",
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "maxLength": 1024
            }
          },
          "metric_groups": {
            "type": "array",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "name",
                "metric_data"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "pattern": ".{1,63}"
                },
                "metric_data": {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/definitions/simple_metric"
                      },
                      {
                        "$ref": "#/definitions/linear_graph_metric"
                      },
                      {
                        "$ref": "#/definitions/bar_chart_metric"
                      },
                      {
                        "$ref": "#/definitions/matrix_metric"
                      }
                    ]

                  }
                }
              }
            }
          }
        }
      }
    },
    "additional_information": {
      "additionalProperties": false,
      "type": "object",
      "properties": {
        "ethical_considerations": {
          "description": "Ethical considerations for model users.",
          "type": "string",
          "maxLength": 2048
        },
        "caveats_and_recommendations": {
          "description": "Caveats and recommendations for model users.",
          "type": "string",
          "maxLength": 2048
        },
        "custom_details": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/custom_property"
          }
        }
      }
    }
  },
  "definitions": {
    "source_algorithms": {
      "type": "array",
      "minContains": 1,
      "maxContains": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "algorithm_name"
        ],
        "properties": {
          "algorithm_name": {
            "description": "The name of the algorithm used to create the model package. The algorithm must be either an algorithm resource in your SageMaker AI account or an algorithm in Marketplace AWS that you are subscribed to.",
            "type": "string",
            "maxLength": 170
          },
          "model_data_url": {
            "description": "Amazon S3 path where the model artifacts, which result from model training, are stored.",
            "type": "string",
            "maxLength": 1024
          }
        }
      }
    },
    "inference_specification": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "containers"
      ],
      "properties": {
        "containers": {
          "description": "Contains inference related information used to create model package.",
          "type": "array",
          "minContains": 1,
          "maxContains": 15,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "image"
            ],
            "properties": {
              "model_data_url": {
                "description": "Amazon S3 path where the model artifacts, which result from model training, are stored.",
                "type": "string",
                "maxLength": 1024
              },
              "image": {
                "description": "Inference environment path. The Amazon Elastic Container Registry (Amazon ECR) path where inference code is stored.",
                "type": "string",
                "maxLength": 255
              },
              "nearest_model_name": {
                "description": "The name of a pre-trained machine learning benchmarked by an Amazon SageMaker Inference Recommender model that matches your model.",
                "type": "string"
              }
            }
          }
        }
      }
    },
    "risk_rating": {
      "description": "Risk rating of model.",
      "type": "string",
      "enum": [
        "High",
        "Medium",
        "Low",
        "Unknown"
      ]
    },
    "custom_property": {
      "description": "Additional property.",
      "type": "string",
      "maxLength": 1024
    },
    "objective_function": {
      "description": "Objective function for which the training job is optimized.",
      "additionalProperties": false,
      "properties": {
        "function": {
          "type": "string",
          "enum": [
            "Maximize",
            "Minimize"
          ]
        },
        "facet": {
          "type": "string",
          "maxLength": 63
        },
        "condition": {
          "type": "string",
          "maxLength": 63
        }
      }
    },
    "training_metric": {
      "description": "Training metric data.",
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "pattern": ".{1,255}"
        },
        "notes": {
          "type": "string",
          "maxLength": 1024
        },
        "value": {
          "type": "number"
        }
      }
    },
    "training_hyper_parameter": {
      "description": "Training hyperparameter.",
      "type": "object",
      "required": [
        "name",
        "value"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "pattern": ".{1,255}"
        },
        "value": {
          "type": "string",
          "pattern": ".{1,255}"
        }
      }
    },
    "linear_graph_metric": {
      "type": "object",
      "required": [
        "name",
        "type",
        "value"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "pattern": ".{1,255}"
        },
        "notes": {
          "type": "string",
          "maxLength": 1024
        },
        "type": {
          "type": "string",
          "enum": [
            "linear_graph"
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 2,
                "maxItems": 2
              },
              "minItems": 1
            }
          ]
        },
        "x_axis_name": {
          "$ref": "#/definitions/axis_name_string"
        },
        "y_axis_name": {
          "$ref": "#/definitions/axis_name_string"
        }
      }
    },
    "bar_chart_metric": {
      "type": "object",
      "required": [
        "name",
        "type",
        "value"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "pattern": ".{1,255}"
        },
        "notes": {
          "type": "string",
          "maxLength": 1024
        },
        "type": {
          "type": "string",
          "enum": [
            "bar_chart"
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 1
            }
          ]
        },
        "x_axis_name": {
          "$ref": "#/definitions/axis_name_array"
        },
        "y_axis_name": {
          "$ref": "#/definitions/axis_name_string"
        }
      }
    },
    "matrix_metric": {
      "type": "object",
      "required": [
        "name",
        "type",
        "value"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "pattern": ".{1,255}"
        },
        "notes": {
          "type": "string",
          "maxLength": 1024
        },
        "type": {
          "type": "string",
          "enum": [
            "matrix"
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 1,
                "maxItems": 20
              },
              "minItems": 1,
              "maxItems": 20
            }
          ]
        },
        "x_axis_name": {
          "$ref": "#/definitions/axis_name_array"
        },
        "y_axis_name": {
          "$ref": "#/definitions/axis_name_array"
        }
      }
    },
    "simple_metric": {
      "description": "Metric data.",
      "type": "object",
      "required": [
        "name",
        "type",
        "value"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "pattern": ".{1,255}"
        },
        "notes": {
          "type": "string",
          "maxLength": 1024
        },
        "type": {
          "type": "string",
          "enum": [
            "number",
            "string",
            "boolean"
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "maxLength": 63
            },
            {
              "type": "boolean"
            }
          ]
        },
        "x_axis_name": {
          "$ref": "#/definitions/axis_name_string"
        },
        "y_axis_name": {
          "$ref": "#/definitions/axis_name_string"
        }
      }
    },
    "axis_name_array": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 63
      }
    },
    "axis_name_string": {
      "type": "string",
      "maxLength": 63
    }
  }
}
```

## Visualizzazione e aggiornamento dei dettagli di una versione del modello (Studio o Studio Classic)
<a name="model-registry-details-studio"></a>

Per visualizzare e aggiornare i dettagli di una versione del modello, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic. In Studio Classic, puoi aggiornare lo stato di approvazione per una versione del modello. Per informazioni dettagliate, vedi [Aggiornamento dello stato di approvazione di un modello](model-registry-approve.md). In Studio, invece, l' SageMaker intelligenza artificiale crea una scheda modello per un pacchetto modello e l'interfaccia utente della versione del modello offre opzioni per aggiornare i dettagli nella scheda modello.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Modelli** dal menu.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Seleziona il nome del gruppo di modelli che contiene la versione del modello da visualizzare.

1. Nell’elenco delle versioni del modello, seleziona la versione del modello da visualizzare.

1. Scegli una delle seguenti schede.
   + **Addestramento**: per visualizzare o modificare i dettagli relativi al job di addestramento, come le metriche delle prestazioni, gli artefatti, il ruolo e la crittografia IAM e i container. Per ulteriori informazioni, consulta [Aggiunta di un job di addestramento (Studio)](model-registry-details-studio-training.md).
   + **Valutazione**: per visualizzare o modificare i dettagli relativi al job di addestramento, come le metriche delle prestazioni, i set di dati di valutazione e la sicurezza. Per ulteriori informazioni, consulta [Aggiunta di un processo di valutazione (Studio)](model-registry-details-studio-evaluate.md).
   + **Verifica**: per visualizzare o modificare i dettagli generali relativi allo scopo aziendale, all’uso e al rischio, nonché i dettagli tecnici come gli algoritmi e le limitazioni delle prestazioni. Per ulteriori informazioni, consulta [Aggiornamento delle informazioni di audit (governance) (Studio)](model-registry-details-studio-audit.md).
   + **Implementazione**: per visualizzare o modificare la posizione delle istanze e del container di immagini di inferenza che compongono l’endpoint. Per ulteriori informazioni, consulta [Aggiornamento delle informazioni sull’implementazione (Studio)](model-registry-details-studio-deploy.md).

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da eliminare.

1. Viene visualizzata una nuova scheda con un elenco delle versioni del modello nel gruppo di modelli.

1. Nell'elenco delle versioni del modello, seleziona il nome della versione del modello di cui desideri visualizzare i dettagli.

1. Nella scheda della versione del modello che si apre, scegli una delle seguenti opzioni per visualizzare i dettagli sulla versione del modello:
   + **Attività**: mostra gli eventi relativi alla versione del modello, come gli aggiornamenti dello stato di approvazione.
   + **Qualità del modello**: riporta le metriche relative ai controlli di qualità dei modelli Model Monitor, che confrontano le previsioni del modello con Ground Truth. Per ulteriori informazioni sui controlli di qualità dei modelli Model Monitor, consulta [Qualità del modello](model-monitor-model-quality.md). 
   + **Spiegabilità**: riporta le metriche relative ai controlli di attribuzione delle funzionalità di Model Monitor, che confrontano il posizionamento relativo delle funzionalità nei dati di addestramento con quello dei dati in tempo reale. Per ulteriori informazioni sui controlli di spiegabilità di Model Monitor, consulta [Deriva dell’attribuzione delle funzionalità per i modelli in produzione](clarify-model-monitor-feature-attribution-drift.md).
   + **Bias**: riporta le metriche relative ai controlli di distorsione di Model Monitor, che confrontano la distribuzione dei dati in tempo reale con i dati di addestramento. Per ulteriori informazioni sui controlli di distorsione di Model Monitor, consulta [Deriva dei bias per i modelli in produzione](clarify-model-monitor-bias-drift.md).
   + **Raccomandazione di inferenza**: fornisce consigli sulle istanze iniziali per prestazioni ottimali in base al modello e ai carichi di lavoro del campione.
   + **Test di carico**: esegue test di carico sui tipi di istanze prescelti quando fornisci requisiti di produzione specifici, come vincoli di latenza e velocità effettiva.
   + **Specifiche di inferenza**: visualizza i tipi di istanze per i processi di inferenza e trasformazione in tempo reale e le informazioni sui container Amazon ECR.
   + **Informazioni**: mostra informazioni quali il progetto a cui è associata la versione del modello, la pipeline che ha generato il modello, il gruppo di modelli e la posizione del modello in Amazon S3.

------

# Aggiunta di un job di addestramento (Studio)
<a name="model-registry-details-studio-training"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’esperienza Studio aggiornata. Per informazioni sull’utilizzo dell’applicazione Studio Classic, consulta [Amazon SageMaker Studio Classic](studio.md).

Puoi aggiungere un processo di formazione, creato esternamente o con l' SageMaker intelligenza artificiale, al tuo modello. **Se aggiungi un lavoro di SageMaker formazione, l' SageMaker intelligenza artificiale precompila i campi per tutte le sottopagine della scheda Treno.** Se aggiungi un job di addestramento creato esternamente, devi aggiungere manualmente i dettagli relativi al tuo job di addestramento. 

**Per aggiungere un job di addestramento al pacchetto di modelli, procedi come segue.**

1. Scegli la scheda **Addestra**.

1. Scegliere **Aggiungi**. Se non vedi questa opzione, un job di addestramento potrebbe essere già collegato. Per rimuoverlo, completa le istruzioni seguenti. 

1. Puoi aggiungere un lavoro di formazione creato in SageMaker AI o un lavoro di formazione creato esternamente.

   1. Per aggiungere un lavoro di formazione creato in SageMaker AI, completa i seguenti passaggi.

      1. Scegli **SageMaker AI**.

      1. Seleziona la casella di opzione accanto al job di addestramento che desideri aggiungere.

      1. Scegliere **Aggiungi**.

   1. Per aggiungere un job di addestramento creato esternamente, procedi come segue.

      1. Scegli **Custom (Personalizzato)**.

      1. Nel campo **Nome**, inserisci il nome del tuo job di addestramento personalizzato.

      1. Scegliere **Aggiungi**.

# Rimozione di un job di addestramento (Studio)
<a name="model-registry-details-studio-training-remove"></a>

Puoi rimuovere un processo di formazione, creato esternamente o con l' SageMaker intelligenza artificiale, dal tuo modello completando i seguenti passaggi.

**Per rimuovere un job di addestramento dal pacchetto di modelli, procedi come segue.**

1. Scegli **Addestra**.

1. Scegli l’icona a forma di **ingranaggio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/Settings_squid.png)) nella scheda **Addestra**.

1. Scegli **Rimuovi** accanto al job di addestramento.

1. Scegli **Sì, voglio rimuovere <name of your training job>**.

1. Seleziona **Fatto**.

# Aggiornamento dei dettagli del job di addestramento (Studio)
<a name="model-registry-details-studio-training-update"></a>

Completa i seguenti passaggi per aggiornare i dettagli di un processo di formazione, creato esternamente o con l' SageMaker intelligenza artificiale, associato al tuo modello.

**Per aggiornare (e visualizzare) i dettagli relativi al job di addestramento:**

1. Nella scheda **Addestra**, visualizza lo stato del job di addestramento. Lo stato è `Complete` se hai aggiunto un job di addestramento al tuo pacchetto di modelli e `Undefined` in caso contrario.

1. Per visualizzare i dettagli relativi al tuo job di addestramento, come prestazioni, iperparametri e dettagli identificativi, scegli la scheda **Addestra**.

1. Per aggiornare e visualizzare i dettagli relativi alle prestazioni del modello, procedi come segue.

   1. Scegli **Prestazioni** nella barra laterale sinistra della scheda **Addestra**.

   1. Visualizza le **metriche** relative al tuo job di addestramento. La pagina **Prestazioni** elenca le metriche per nome, valore ed eventuali note aggiunte relative alla metrica.

   1. (Facoltativo) Per aggiungere note alle metriche esistenti, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Aggiungi note a una qualsiasi delle metriche elencate.

      1. Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

   1. Visualizza le **metriche personalizzate** relative al tuo job di addestramento. Le metriche personalizzate sono formattate in modo simile alle metriche.

   1. (Facoltativo) Per aggiungere metriche personalizzate, procedi come segue.

      1. Scegliere **Aggiungi**.

      1. Inserisci un nome, un valore ed eventuali note facoltative per la nuova metrica.

   1. (Facoltativo) Per rimuovere le metriche personalizzate, scegli l’icona **Cestino** accanto alla metrica da rimuovere.

   1. Nella casella di testo **Osservazioni**, visualizza tutte le note che hai aggiunto relative alle prestazioni del tuo job di addestramento.

   1. (Facoltativo) Per aggiungere o aggiornare le osservazioni, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Aggiungi o aggiorna le tue note nella casella di testo **Osservazioni**.

      1. Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare i dettagli relativi agli artefatti del modello, procedi come segue.

   1. Scegli **Artefatti** nella barra laterale sinistra della scheda **Addestra**.

   1. Nel campo **Posizione (URI S3)**, visualizza la posizione Amazon S3 dei tuoi set di dati di addestramento.

   1. Nel campo **Modelli**, visualizza il nome e le posizioni Amazon S3 degli artefatti del modello relativi ad altri modelli che hai incluso nel job di addestramento.

   1. Per aggiornare qualsiasi campo nella pagina **Artefatti**, procedi come segue.

      1. Scegli l’icona con tre puntini verticali in alto a destra nella pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Inserisci i nuovi valori in uno qualsiasi dei campi.

      1. Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare i dettagli relativi agli iperparametri, procedi come segue.

   1. Scegli **Iperparametri** nella barra laterale sinistra della scheda **Addestra**.

   1. Visualizza l' SageMaker intelligenza artificiale fornita e gli iperparametri personalizzati definiti. Ogni iperparametro è elencato con il suo nome e il suo valore.

   1. Visualizza gli iperparametri personalizzati che hai aggiunto.

   1. (Facoltativo) Per aggiungere un ulteriore iperparametro personalizzato, procedi come segue.

      1. Nell’angolo in alto a destra della tabella **Iperparametri personalizzati**, scegli **Aggiungi**. Vengono visualizzati un paio di nuovi campi vuoti.

      1. Immetti il nome e il valore del nuovo iperparametro personalizzato. Questi valori vengono salvati automaticamente.

   1. (Facoltativo) Per rimuovere un iperparametro personalizzato, scegli l’icona **Cestino** a destra dell’iperparametro.

1. Per aggiornare e visualizzare i dettagli relativi all’ambiente del job di addestramento, procedi come segue.

   1. Scegli **Ambiente** nella barra laterale sinistra della scheda **Addestra**.

   1. Visualizza le posizioni URI di Amazon ECR per qualsiasi contenitore di lavoro di formazione aggiunto dall' SageMaker IA (per un lavoro di SageMaker formazione) o da te (per un lavoro di formazione personalizzato).

   1. (Facoltativo) Per aggiungere un container di job di addestramento aggiuntivo, scegli **Aggiungi**, quindi inserisci l’URI del nuovo container di addestramento.

1. Per aggiornare e visualizzare il nome del job di addestramento e i nomi delle risorse Amazon (ARN) per il job di addestramento, procedi come segue.

   1. Scegli **Dettagli** nella barra laterale sinistra della scheda **Addestra**.

   1. Visualizza il nome e l’ARN del job di addestramento.

# Aggiunta di un processo di valutazione (Studio)
<a name="model-registry-details-studio-evaluate"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’esperienza Studio aggiornata. Per informazioni sull’utilizzo dell’applicazione Studio Classic, consulta [Amazon SageMaker Studio Classic](studio.md).

Dopo aver registrato il modello, puoi testarlo con uno o più set di dati per valutarne le prestazioni. Puoi aggiungere uno o più processi di valutazione da Amazon S3 o definire il tuo processo di valutazione inserendo manualmente tutti i dettagli. **Se aggiungi un lavoro da Amazon S3, SageMaker AI precompila i campi per tutte le sottopagine nella scheda Evaluate.** Se definisci il tuo processo di valutazione, devi aggiungere manualmente i dettagli di tale processo.

**Per aggiungere il tuo primo processo di valutazione al pacchetto di modelli, procedi come segue.**

1. Scegli la scheda **Valuta**.

1. Scegliere **Aggiungi**.

1. Puoi aggiungere un processo di valutazione da Amazon S3 o un processo di valutazione personalizzato.

   1. Per aggiungere un processo di valutazione con materiale collaterale da Amazon S3, procedi come segue.

      1. Scegli **S3**.

      1. Inserisci un nome per il processo di valutazione.

      1. Inserisci la posizione Amazon S3 tra i materiali collaterali di output del tuo processo di valutazione.

      1. Scegliere **Aggiungi**.

   1. Per aggiungere un processo di valutazione personalizzato, procedi come descritto di seguito:

      1. Scegli **Custom (Personalizzato)**.

      1. Inserisci un nome per il processo di valutazione.

      1. Scegliere **Aggiungi**.

**Per aggiungere un ulteriore processo di valutazione al pacchetto di modelli, procedi come segue.**

1. Scegli la scheda **Valuta**.

1. Scegli l’icona a forma di **ingranaggio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/Settings_squid.png)) nella scheda **Addestra**.

1. Nella finestra di dialogo, scegli **Aggiungi**.

1. Puoi aggiungere un processo di valutazione da Amazon S3 o un processo di valutazione personalizzato.

   1. Per aggiungere un processo di valutazione con materiale collaterale da Amazon S3, procedi come segue.

      1. Scegli **S3**.

      1. Inserisci un nome per il processo di valutazione.

      1. Inserisci la posizione Amazon S3 tra i materiali collaterali di output del tuo processo di valutazione.

      1. Scegliere **Aggiungi**.

   1. Per aggiungere un processo di valutazione personalizzato, procedi come descritto di seguito:

      1. Scegli **Custom (Personalizzato)**.

      1. Inserisci un nome per il processo di valutazione.

      1. Scegliere **Aggiungi**.

# Rimozione di un processo di valutazione (Studio)
<a name="model-registry-details-studio-evaluate-remove"></a>

Puoi rimuovere un lavoro di valutazione, creato esternamente o con l' SageMaker intelligenza artificiale, dal tuo modello completando i seguenti passaggi.

**Per rimuovere un processo di valutazione dal pacchetto di modelli, procedi come segue.**

1. Scegli la scheda **Valuta**.

1. Scegli l’icona a forma di **ingranaggio** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/icons/Settings_squid.png)) nella scheda **Addestra**.

1. (Facoltativo) Per trovare il processo di valutazione nell’elenco, inserisci un termine nella casella di ricerca per limitare le possibili scelte.

1. Scegli il pulsante di opzione accanto al processo di valutazione.

1. Scegli **Rimuovi**.

1. Scegli **Sì, voglio rimuovere <name of your evaluation job>**.

1. Seleziona **Fatto**.

# Aggiornamento di un processo di valutazione (Studio)
<a name="model-registry-details-studio-evaluate-update"></a>

Completa i seguenti passaggi per aggiornare i dettagli di un lavoro di valutazione, creato esternamente o con l' SageMaker intelligenza artificiale, associato al tuo modello.

**Per aggiornare (e visualizzare) i dettagli relativi al processo di valutazione:**

1. Nella scheda **Valuta**, visualizza lo stato del processo di valutazione. Lo stato è `Complete` se hai aggiunto un processo di valutazione al tuo pacchetto di modelli e `Undefined` in caso contrario.

1. Per visualizzare i dettagli relativi al processo di valutazione, come le prestazioni e la posizione degli artefatti, scegli la scheda **Valuta**.

1. Per aggiornare e visualizzare i dettagli relativi alle prestazioni del modello durante la valutazione, procedi come segue.

   1. Scegli **Prestazioni** nella barra laterale della scheda **Valuta**.

   1. Visualizza le metriche relative al tuo processo di valutazione nell’elenco delle **metriche**. L’elenco delle **metriche** mostra le singole metriche per nome, valore ed eventuali note aggiunte relative alla metrica.

   1. Nella casella di testo **Osservazioni**, visualizza tutte le note che hai aggiunto relative alle prestazioni del tuo processo di valutazione.

   1. Per aggiornare uno dei campi **Note** per qualsiasi metrica o il campo **Osservazioni**, procedi come segue.

      1. Scegli l’icona con tre puntini verticali in alto a destra nella pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Inserisci le note per qualsiasi metrica o nella casella di testo **Osservazioni**.

      1. Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare i dettagli relativi ai set di dati del processo di valutazione, procedi come segue.

   1. Scegli **Artefatti** nella barra laterale sinistra della pagina **Valuta**.

   1. Visualizza i set di dati utilizzati nel tuo processo di valutazione.

   1. (Facoltativo) Per aggiungere un set di dati, scegli **Aggiungi** e inserisci un URI Amazon S3 nel set di dati.

   1. (Facoltativo) Per rimuovere un set di dati, scegli l’icona **Cestino** accanto al set di dati da rimuovere.

1. Per visualizzare il nome e l’ARN del processo di valutazione, scegli **Dettagli**.

# Aggiornamento delle informazioni di audit (governance) (Studio)
<a name="model-registry-details-studio-audit"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’esperienza Studio aggiornata. Per informazioni sull’utilizzo dell’applicazione Studio Classic, consulta [Amazon SageMaker Studio Classic](studio.md).

Documenta i dettagli importanti del modello per aiutare l’organizzazione a stabilire un solido framework di governance dei modelli. Tu e i membri del tuo team potete fare riferimento a queste informazioni per utilizzare il modello per i casi d’uso appropriati, conoscere il dominio aziendale e i proprietari del modello e comprendere i rischi del modello. Inoltre, puoi salvare i dettagli sulle prestazioni previste del modello e sui motivi delle limitazioni delle prestazioni.

**Per visualizzare o aggiornare i dettagli relativi alla governance del modello, procedi come segue.**

1. Nella scheda **Audit**, visualizza lo stato di approvazione della scheda del modello. Lo stato può essere uno dei seguenti:
   + **Bozza**: la scheda del modello è ancora una bozza.
   + **In attesa di approvazione**: la scheda del modello è in attesa di approvazione.
   + **Approvata**: la scheda del modello è approvata.

1. Per aggiornare lo stato di approvazione della scheda del modello, scegli il menu a discesa accanto allo stato di approvazione e seleziona lo stato di approvazione aggiornato.

1. Per aggiornare e visualizzare i dettagli relativi ai rischi associati al pacchetto di modelli, procedi come segue.

   1. Scegli **Rischio** nella barra laterale sinistra della scheda **Audit**.

   1. Visualizza l’attuale valutazione del rischio e la relativa spiegazione.

   1. Per aggiornare la valutazione o la spiegazione, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina **Audit**, quindi seleziona **Modifica**.

      1. (Facoltativo) Scegli una valutazione del rischio aggiornata.

      1. (Facoltativo) Aggiorna la spiegazione della valutazione del rischio.

      1.  Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare i dettagli relativi all’utilizzo del pacchetto di modelli, procedi come segue.

   1. Scegli **Utilizzo** nella barra laterale sinistra della scheda **Audit**.

   1. Visualizza il testo che hai aggiunto nei seguenti campi:
      + **Tipo di problema**: la categoria dell’algoritmo di machine learning utilizzato per creare il modello.
      + **Tipo di algoritmo**: l’algoritmo specifico utilizzato per creare il modello.
      + **Usi previsti**: l’attuale applicazione del modello per risolvere il problema aziendale.
      + **Fattori che influiscono sull’efficacia del modello**: note sui limiti delle prestazioni del modello.
      + **Utilizzo consigliato**: i tipi di applicazioni che puoi creare con il modello, gli scenari in cui puoi aspettarti prestazioni ragionevoli o il tipo di dati da utilizzare con il modello.
      + **Considerazioni etiche**: una descrizione di come il modello potrebbe discriminare in base a fattori quali l’età o il sesso.

   1. Per aggiornare uno dei campi elencati in precedenza, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. (Facoltativo) Utilizza i menu a discesa per **Tipo di problema** e **Tipo di algoritmo** per selezionare nuovi valori, se necessario.

      1. (Facoltativo) Aggiorna le descrizioni testuali nei campi rimanenti.

      1.  Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare i dettagli relativi alle parti interessate del pacchetto di modelli, procedi come segue.

   1. Scegli **Parti interessate** nella barra laterale sinistra della scheda **Audit**.

   1. Visualizza l’attuale proprietario e creatore del modello, se presente.

   1. Per aggiornare il proprietario o il creatore del modello, procedi come descritto di seguito:

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Aggiorna i campi del proprietario o del creatore del modello.

      1.  Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare i dettagli relativi al problema aziendale affrontato dal pacchetto di modelli, procedi come segue.

   1. Scegli **Business** nella barra laterale sinistra della scheda **Audit**.

   1. Visualizza le descrizioni correnti, se disponibili, del problema aziendale affrontato dal modello, delle parti interessate al problema e della linea di business.

   1. Per aggiornare qualsiasi campo nella scheda **Azienda**, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Aggiorna le descrizioni in uno qualsiasi dei campi.

      1.  Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

1. Per aggiornare e visualizzare la documentazione esistente (rappresentata come coppie chiave-valore) per il tuo modello, procedi come segue.

   1. Scegli **Documentazione** nella barra laterale sinistra della pagina **Audit**.

   1. Visualizza le coppie chiave-valore esistenti.

   1. Per aggiungere coppie chiave-valore, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Scegliere **Aggiungi**.

      1. Inserisci una nuova chiave e il valore associato.

      1.  Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

   1. Per rimuovere le coppie chiave-valore, procedi come segue.

      1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della pagina delle versioni del modello, quindi seleziona **Modifica**.

      1. Scegli l’icona del **cestino** accanto alla coppia chiave-valore da rimuovere.

      1.  Nella parte superiore della pagina della versione del modello, scegli **Salva** nel banner **Modifica della versione del modello…**.

# Aggiornamento delle informazioni sull’implementazione (Studio)
<a name="model-registry-details-studio-deploy"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’esperienza Studio aggiornata. Per informazioni sull’utilizzo dell’applicazione Studio Classic, consulta [Amazon SageMaker Studio Classic](studio.md).

Dopo aver valutato le prestazioni del modello e stabilito che è pronto per l'uso per i carichi di lavoro di produzione, puoi modificare lo stato di approvazione del modello per avviare CI/CD la distribuzione. Per ulteriori informazioni sulle definizioni dello stato di approvazione, consulta [Aggiornamento dello stato di approvazione di un modello](model-registry-approve.md).

**Per visualizzare o aggiornare i dettagli relativi all’implementazione del pacchetto di modelli, procedi come segue.**

1. Nella scheda **Implementa**, visualizza lo stato di approvazione del pacchetto di modelli. I valori possibili sono i seguenti:
   + **Approvazione in sospeso**: il modello è registrato ma non ancora approvato o rifiutato per l’implementazione.
   + **Approvato**: il modello è approvato per l’implementazione CI/CD. Se esiste una EventBridge regola che avvia la distribuzione del modello in seguito a un evento di approvazione del modello, come nel caso di un modello creato a partire da un modello di progetto di SageMaker intelligenza artificiale, anche l' SageMaker IA implementa il modello.
   + **Rifiutato**: il modello viene rifiutato per l’implementazione.

   Se devi modificare lo stato di approvazione, scegli il menu a discesa accanto allo stato e seleziona lo stato aggiornato.

1. Per aggiornare lo stato di approvazione del pacchetto di modelli, scegli l’elenco a discesa accanto allo stato di approvazione e seleziona lo stato di approvazione aggiornato.

1. Nell’elenco **Container**, visualizza i container di immagini di inferenza.

1. Nell’elenco delle **istanze**, visualizza le istanze che compongono l’endpoint di implementazione.

# Confronto delle versioni dei modelli
<a name="model-registry-version-compare"></a>

Durante la generazione delle versioni del modello, potresti voler confrontare le versioni dei modelli visualizzando le metriche side-by-side di qualità dei modelli pertinenti. Ad esempio, potresti voler monitorare la precisione confrontando i valori dell'errore quadratico medio (MSE), oppure potresti decidere di rimuovere i modelli che offrono prestazioni scadenti su misure selezionate. La procedura seguente mostra come configurare il confronto delle versioni dei modelli in Model Registry utilizzando la console Amazon SageMaker Studio Classic.

## Confronta le versioni dei modelli (Amazon SageMaker Studio Classic)
<a name="model-registry-version-compare-studio"></a>

**Nota**  
Puoi confrontare solo le versioni dei modelli della console Amazon SageMaker Studio Classic.

Per confrontare le versioni dei modelli all'interno di un gruppo di modelli, completa la seguente procedura:

1. Accedi a Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da eliminare. Si apre una nuova scheda con un elenco delle versioni del modello nel gruppo di modelli.

1. Nell'elenco delle versioni del modello, seleziona le caselle accanto alle versioni del modello che desideri confrontare.

1. Scegli il menu a discesa **Azioni**, quindi **Confronta**. Viene visualizzato un elenco di metriche di qualità dei modelli per i modelli selezionati.

# Visualizzazione e gestione dei tag del gruppo di modelli e della versione del modello
<a name="model-registry-tags"></a>

Il registro dei modelli consente di visualizzare e gestire i tag relativi ai gruppi di modelli. È possibile utilizzare i tag per suddividere in categorie i gruppi di modelli in base allo scopo, al proprietario, all'ambiente o ad altri criteri. Le seguenti istruzioni mostrano come visualizzare, aggiungere, eliminare e modificare i tag nella console Amazon SageMaker Studio.

**Nota**  
I pacchetti di modelli nel SageMaker Model Registry non supportano i tag: si tratta di pacchetti di modelli con versioni diverse. È invece possibile aggiungere coppie chiave-valore utilizzando `CustomerMetadataProperties`. I gruppi di pacchetti di modelli nel registro dei modelli supportano l'etichettatura. 

## Visualizzazione e gestione dei tag del gruppo di modelli
<a name="model-registry-tags-model-group"></a>

------
#### [ Studio ]

**Per visualizzare un tag del gruppo di modelli, procedi come descritto di seguito:**

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Dall’elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da visualizzare.

1. Nella pagina del gruppo di modelli, scegli la scheda **Tag**. Visualizza i tag associati al tuo gruppo di modelli.

**Per aggiungere un tag del gruppo di modelli, completa la seguente procedura:**

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Nella pagina del gruppo di modelli, scegli la scheda **Tag**.

1. Seleziona **Aggiungi/modifica tag**.

1. Sopra **\$1 Aggiungi nuovo tag**, inserisci la nuova chiave nel campo vuoto **Chiave**.

1. (Facoltativo) Inserisci il nuovo valore nel campo vuoto **Valore**.

1. Scegli **Conferma modifiche**.

1. Conferma che il nuovo tag venga visualizzato nella sezione **Tag** della pagina **Informazioni**.

**Per eliminare un tag del gruppo di modelli, completa la seguente procedura:**

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Nella pagina del gruppo di modelli, scegli la scheda **Tag**.

1. Seleziona **Aggiungi/modifica tag**.

1. Scegli l’icona del **cestino** accanto alla coppia chiave-valore da rimuovere.

1. Scegli **Conferma modifiche**.

**Per modificare un tag del gruppo di modelli, completa la seguente procedura:**

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Nella pagina del gruppo di modelli, scegli la scheda **Tag**.

1. Seleziona **Aggiungi/modifica tag**.

1. Inserisci un nuovo valore nel campo **Valore** della coppia chiave-valore da modificare.

1. Scegli **Conferma modifiche**.

------
#### [ Studio Classic ]

**Per visualizzare un tag del gruppo di modelli, procedi come descritto di seguito:**

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Scegli **Informazioni**.

1. Visualizza i tag nella sezione **Tag** della pagina delle **informazioni**.

**Per aggiungere un tag del gruppo di modelli, completa la seguente procedura:**

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Scegli **Informazioni**.

1. Se non sono disponibili tag, scegli **Aggiungi tag**.

1. Se sono disponibili tag preesistenti, scegli **Gestisci tag** nella sezione **Tag**. Un elenco dei tag del gruppo di modelli viene visualizzato sotto forma di coppie chiave-valore.

1. Sopra **Aggiungi nuovo tag**, inserisci la nuova chiave nel campo vuoto **Chiave**.

1. (Facoltativo) Inserisci il nuovo valore nel campo vuoto **Valore**.

1. Scegli **Conferma modifiche**.

1. Conferma che il nuovo tag venga visualizzato nella sezione **Tag** della pagina **Informazioni**.

**Per eliminare un tag del gruppo di modelli, completa la seguente procedura:**

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Scegli **Informazioni**.

1. Nella sezione **Tag**, scegli **Gestisci tag**. Un elenco dei tag del gruppo di modelli viene visualizzato sotto forma di coppie chiave-valore.

1. Scegli l'icona del **Cestino** a destra del tag che desideri rimuovere.

1. Scegli **Conferma modifiche**.

1. Conferma che il tag rimosso non venga visualizzato nella sezione **Tag** della pagina **Informazioni**.

**Per modificare un tag del gruppo di modelli, completa la seguente procedura:**

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall'elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da modificare.

1. Scegli **Informazioni**.

1. Nella sezione **Tag**, scegli **Gestisci tag**. Un elenco dei tag del gruppo di modelli viene visualizzato sotto forma di coppie chiave-valore.

1. Modifica qualsiasi chiave o valore.

1. Scegli **Conferma modifiche**.

1. Conferma che il tag contenga le modifiche nella sezione **Tag** della pagina **Informazioni**.

**Per assegnare o taggare i gruppi di modelli a un progetto, procedi come descritto di seguito:**

1. Ottieni tag con chiave `sagemaker:project-name` e `sagemaker:project-id` per il progetto di SageMaker intelligenza artificiale utilizzando l'[ListTags](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTags.html)API.

1. Per applicare i tag al gruppo di pacchetti di modelli, scegli uno dei seguenti metodi:
   + Se crei un nuovo gruppo di pacchetti modello e desideri aggiungere tag, passa i tag dallo Step 1 all'[CreateModelPackageGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackageGroup.html)API.
   + Se desideri aggiungere tag a un gruppo di pacchetti modello esistente, usa il [AddTags](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html) APIs.
   + Se create il gruppo di pacchetti modello tramite Pipelines, utilizzate i `pipeline.upsert()` metodi `pipeline.create()` o o passate i tag allo [RegisterModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-register-model)step.

------

# Eliminazione di una versione del modello
<a name="model-registry-delete-model-version"></a>

Questa procedura dimostra come eliminare una versione del modello nella console Amazon SageMaker Studio.

## Eliminazione di una versione del modello (Studio o Studio Classic)
<a name="model-registry-delete-model-version-studio"></a>

Per eliminare una versione del modello nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Nell’elenco dei gruppi di modelli, scegli la parentesi angolare a sinistra del gruppo di modelli da visualizzare.

1. Viene visualizzato un elenco delle versioni del modello nel gruppo di modelli. Se non vedi la versione del modello da eliminare, scegli **Visualizza tutto**.

1. Seleziona le caselle di controllo accanto alle versioni del modello da eliminare.

1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra della tabella, quindi seleziona **Elimina** (o **Elimina la versione del modello** nella pagina dei dettagli del gruppo di modelli).

1. Nella finestra di dialogo **Elimina versione del modello**, scegli **Sì, elimina la versione del modello**.

1. Scegli **Elimina**.

1. Verifica che le versioni del modello eliminate non compaiano più nel gruppo di modelli.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**. Viene visualizzato un elenco dei gruppi di modelli.

1. Nell’elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli della versione del modello da eliminare.

1. Nell’elenco delle versioni del modello, seleziona il nome della versione del modello da eliminare.

1. Scegli il menu a discesa **Azioni**, quindi **Rimuovi**.

1. Nella finestra di dialogo di conferma, inserisci `REMOVE`.

1. Scegli **Rimuovi**.

1. Verifica che la versione del modello che hai rimosso non compaia nell'elenco delle versioni del modello del gruppo di modelli.

------

# Costrutto di staging per il ciclo di vita del modello
<a name="model-registry-staging-construct"></a>

Puoi definire una serie di fasi che i modelli possono seguire per i flussi di lavoro e il ciclo di vita dei modelli con il costrutto di staging del registro dei modelli. Questo semplifica il monitoraggio e la gestione dei modelli durante la transizione tra le fasi di sviluppo, test e produzione. Di seguito vengono fornite informazioni sui costrutti di staging e su come utilizzarli nella governance del modello.

Il costrutto di staging consente di definire una serie di fasi e stati attraverso i quali procedono i modelli. In ogni fase, specifici utenti tipo con le autorizzazioni appropriate possono aggiornare lo stato dello fase. Man mano che un modello avanza attraverso le fasi, i suoi metadati lo seguono, fornendo una visione completa del ciclo di vita del modello. Questi metadati possono essere consultati ed esaminati da utenti tipo autorizzati in ogni fase, consentendo un processo decisionale informato. Questo offre i seguenti vantaggi:
+ Autorizzazioni relative al ciclo di vita del modello: imposta le autorizzazioni per gli utenti tipo designati per aggiornare lo stato di una fase del modello e applicare gate di approvazione nei punti di transizione critici. Gli amministratori possono assegnare le autorizzazioni utilizzando le policy e le chiavi di condizione IAM con l’API. Ad esempio, puoi impedire al Data Scientist di aggiornare la transizione della fase del ciclo di vita del modello da “Sviluppo” a “Produzione”. Per alcuni esempi, consulta [Esempi di configurazione di un costrutto di staging](model-registry-staging-construct-set-up.md).
+ Modella gli eventi del ciclo di vita tramite Amazon EventBridge : puoi utilizzare gli eventi della fase del ciclo di vita utilizzando. EventBridge In questo modo puoi ricevere notifiche sugli eventi quando i modelli cambiano la fase di approvazione o di staging, abilitando l’integrazione con strumenti di governance di terze parti. Consulta [Ricevi notifiche sugli eventi per ModelLifeCycle](model-registry-staging-construct-event-bridge.md) per un esempio.
+ Ricerca basata sui campi del ciclo di vita del modello: puoi cercare e filtrare in base alla fase e allo stato della fase con l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html).
+ Audit trail per gli utenti del ciclo di vita del modello: puoi visualizzare la cronologia degli eventi di approvazione e staging del modello per le transizioni del ciclo di vita del modello.

Gli argomenti seguenti illustrano come configurare un costrutto di staging sul lato amministratore e come aggiornare lo stato di una fase sul lato utente.

**Topics**
+ [Esempi di configurazione di un costrutto di staging](model-registry-staging-construct-set-up.md)
+ [Aggiornamento di una fase e dello stato di un pacchetto di modelli in Studio](model-registry-staging-construct-update-studio.md)
+ [Esempio di aggiornamento della fase e dello stato del pacchetto di modelli (boto3)](model-registry-staging-construct-update-boto3.md)
+ [Invoca ModelLifeCycle usando gli esempi AWS CLI](model-registry-staging-construct-cli.md)
+ [Ricevi notifiche sugli eventi per ModelLifeCycle](model-registry-staging-construct-event-bridge.md)

# Esempi di configurazione di un costrutto di staging
<a name="model-registry-staging-construct-set-up"></a>

Per configurare i costrutti di fase per il tuo Amazon SageMaker Model Registry, l'amministratore dovrà concedere le autorizzazioni pertinenti ai ruoli previsti. Di seguito vengono forniti esempi su come configurare i costrutti di staging per vari ruoli.

**Nota**  
Gli utenti all'interno di un dominio Amazon SageMaker AI saranno in grado di visualizzare tutte le fasi definite all'interno del dominio, ma potranno utilizzare solo quelle per cui dispongono delle autorizzazioni.

Le fasi sono definite dal parametro `ModelLifeCycle` e hanno la seguente struttura. L’amministratore configura le autorizzazioni per i valori `stage` e `stageStatus` accessibili dai ruoli specificati. Gli utenti che assumono un ruolo possono utilizzare i valori `stage` e `stageStatus` appropriati e includere il proprio `stageDescription`.

```
ModelLifeCycle {
    stage: String # Required (e.g., Development/QA/Production)
    stageStatus: String # Required (e.g., PendingApproval/Approved/Rejected)  
    stageDescription: String # Optional
}
```

La tabella seguente contiene i modelli del costrutto di staging predefinito del registro dei modelli. Puoi definire i costrutti di staging in base ai tuoi casi d’uso. Per poterli utilizzare, è necessario configurare prima le autorizzazioni pertinenti.


| Stage | Stato della fase | 
| --- | --- | 
|  Proposta  |  PendingApproval  | 
|  Sviluppo  |  InProgress  | 
|  QA  |  OnHold  | 
|  PreProduction  |  Approvato  | 
|  Produzione  |  Rifiutato  | 
|  Archiviato  |  Ritirata  | 

Il `ModelLifeCycle` parametro può essere richiamato nei modi seguenti: APIs
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html)

------
#### [ Policy for a data scientist role ]

Di seguito è riportato un esempio di policy IAM che utilizza le chiavi di condizione del ciclo di vita del modello. Puoi modificarle in base alle tue esigenze. In questo esempio, le autorizzazioni del ruolo sono limitate all’impostazione o alla definizione della fase del ciclo di vita del modello per:
+ Creare o aggiornare un modello con la fase `"Development"` e lo stato `"Approved"`.
+ Aggiornare un pacchetto di modelli con la fase del controllo di qualità `"QA"` e lo stato `"PendingApproval"`.

```
{
    "Action" : [
        "sagemaker:UpdateModelPackage",
        "sagemaker:CreateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage" : "Development"
            "sagemaker:ModelLifeCycle:stageStatus" : "Approved"       
        }
    }
},
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage" : "Staging"
            "sagemaker:ModelLifeCycle:stageStatus" : "PendingApproval"       
        }
    }
}
```

------
#### [ Policy for a quality assurance specialist ]

Di seguito è riportato un esempio di policy IAM che utilizza le chiavi di condizione del ciclo di vita del modello. Puoi modificarle in base alle tue esigenze. In questo esempio, le autorizzazioni del ruolo sono limitate all’impostazione o alla definizione della fase del ciclo di vita del modello per:
+ Aggiorna un pacchetto di modelli con:
  + La fase `"QA"` e lo stato `"Approved"` o `"Rejected"`.
  + La fase `"Production"` e lo stato `"PendingApproval"`.

```
{
    "Action": [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage": "Staging",
            "sagemaker:ModelLifeCycle:stageStatus": "Approved"
        }
    }
}, {
    "Action": [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage": "Staging",
            "sagemaker:ModelLifeCycle:stageStatus": "Rejected"
        }
    }
}, {
    "Action": [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage": "Production",
            "sagemaker:ModelLifeCycle:stageStatus": "PendingApproval"
        }
    }
}
```

------
#### [ Policy for lead engineer role ]

Di seguito è riportato un esempio di policy IAM che utilizza le chiavi di condizione del ciclo di vita del modello. Puoi modificarle in base alle tue esigenze. In questo esempio, le autorizzazioni del ruolo sono limitate all’impostazione o alla definizione della fase del ciclo di vita del modello per:
+ Aggiorna un pacchetto di modelli con:
  + La fase `"Production"` e lo stato `"Approved"` o `"Rejected"`.
  + La fase `"Development"` e lo stato `"PendingApproval"`.

```
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "ForAnyvalue:StringEquals" : {
            "sagemaker:ModelLifeCycle:stage" : "Production",
            "sagemaker:ModelLifeCycle:stageStatus" : "Approved"
        }
    }
},
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals:" {
            "sagemaker:ModelLifeCycle:stage" : "Production"
            "sagemaker:ModelLifeCycle:stageStatus" : "Rejected"
        }
    }
},
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage" : "Development"
            "sagemaker:ModelLifeCycle:stageStatus" : "PendingApproval"
        }
    }
}
```

------

Per ricevere EventBridge notifiche Amazon su qualsiasi aggiornamento dello stato del modello, consulta l'esempio in[Ricevi notifiche sugli eventi per ModelLifeCycle](model-registry-staging-construct-event-bridge.md). Per un esempio di EventBridge payload che potresti ricevere, consulta[SageMaker modifica dello stato del pacchetto del modello](automating-sagemaker-with-eventbridge.md#eventbridge-model-package).

# Aggiornamento di una fase e dello stato di un pacchetto di modelli in Studio
<a name="model-registry-staging-construct-update-studio"></a>

Per utilizzare un costrutto di staging del pacchetto di modelli, dovrai assumere un ruolo di esecuzione con le autorizzazioni appropriate. La pagina seguente fornisce informazioni su come aggiornare lo stato dello stage utilizzando Amazon SageMaker Studio.

Tutti i costrutti di staging definiti nel dominio saranno visualizzabili da tutti gli utenti. Per aggiornare una fase, è necessario che l’amministratore configuri le autorizzazioni appropriate per l’accesso. Per informazioni sulla procedura, consulta [Esempi di configurazione di un costrutto di staging](model-registry-staging-construct-set-up.md). 

La procedura seguente consente di accedere all’interfaccia utente di Studio, dove è possibile aggiornare la fase del pacchetto di modelli.

1. Accedi ad Amazon SageMaker Studio. Per ulteriori informazioni, consulta [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Nel riquadro di navigazione a sinistra scegli **Modelli**.

1. Trova il tuo modello.
   + Puoi utilizzare le schede per trovare i tuoi modelli. Ad esempio, scegli le schede **Modelli registrati** o **Modelli implementabili**.
   + Puoi utilizzare le opzioni **I miei modelli** e **Condivisi con me** per trovare i modelli che hai creato o quelli che sono condivisi da te.

1. Seleziona la casella di controllo accanto al modello da aggiornare.

1. Scegli l’icona **Altre opzioni**. 

1. Scegli **Aggiorna il ciclo di vita del modello**. Viene visualizzata la sezione **Aggiorna il ciclo di vita del modello**.

1. Completa le attività per aggiornare la fase. 

   Se non riesci ad aggiornare la fase, viene restituito un errore. L’amministratore dovrà configurare le autorizzazioni per consentirti di farlo. Per informazioni su come configurare le autorizzazioni, consulta [Esempi di configurazione di un costrutto di staging](model-registry-staging-construct-set-up.md).

# Esempio di aggiornamento della fase e dello stato del pacchetto di modelli (boto3)
<a name="model-registry-staging-construct-update-boto3"></a>

Per aggiornare la fase e lo stato di un pacchetto di modelli, dovrai assumere un ruolo di esecuzione con le autorizzazioni appropriate. Di seguito viene fornito un esempio su come aggiornare lo stato della fase utilizzando l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html) con AWS SDK per Python (Boto3).

In questo esempio, le chiavi di condizione `"Development"` della fase `ModelLifeCycle` e `"Approved"` dello stato della fase per l’azione API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html) sono state concesse al tuo ruolo di esecuzione. Puoi inserire una descrizione in `stage-description`. Per ulteriori informazioni, consulta [Esempi di configurazione di un costrutto di staging](model-registry-staging-construct-set-up.md). 

```
from sagemaker import get_execution_role, session 
import boto3 

region = boto3.Session().region_name role = get_execution_role() 
sm_client = boto3.client('sagemaker', region_name=region)

model_package_update_input_dict = {
    "ModelLifeCycle" : { 
        "stage" : "Development",
        "stageStatus" : "Approved",
        "stageDescription" : "stage-description"
    }
} 
model_package_update_response = sm_client.update_model_package(**model_package_update_input_dict)
```

# Invoca ModelLifeCycle usando gli esempi AWS CLI
<a name="model-registry-staging-construct-cli"></a>

Puoi utilizzare lo AWS CLI strumento per gestire le tue AWS risorse. Alcuni comandi della AWS CLI includono le azioni [search](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudsearchdomain/search.html) e [list-actions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/list-actions.html). La pagina seguente fornisce esempi su come utilizzare `ModelPackage` insieme a questi comandi. Per informazioni ed esempi sulla configurazione del costrutto di staging, consulta [Esempi di configurazione di un costrutto di staging](model-registry-staging-construct-set-up.md).

Gli esempi presenti in questa pagina utilizzano le variabili seguenti.
+ `region` è la Regione in cui si trova il pacchetto di modelli.
+ `stage-name` è il nome della fase definita.
+ `stage-status` è il nome dello stato della fase definita.

Di seguito sono riportati alcuni esempi di AWS CLI comandi che utilizzano ModelLifeCycle.

Cerca i tuoi pacchetti modello con un *stage-name* che hai già definito.

```
aws sagemaker search --region 'region' --resource ModelPackage --search-expression '{"Filters": [{"Name": "ModelLifeCycle.Stage","Value": "stage-name"}]}'
```

Elenca le azioni associate a `ModelLifeCycle`.

```
aws sagemaker list-actions --region 'region' --action-type ModelLifeCycle
```

Crea un pacchetto modello con ModelLifeCycle.

```
aws sagemaker create-model-package --model-package-group-name 'model-package-group-name' --source-uri 'source-uri' --region 'region' --model-life-cycle '{"Stage":"stage-name", "StageStatus":"stage-status", "StageDescription":"Your Staging Comment"}' 
```

Aggiorna un pacchetto modello con ModelLifeCycle.

```
aws sagemaker update-model-package --model-package 'model-package-arn' --region 'region' --model-life-cycle '{"Stage":"stage-name", "StageStatus":"stage-status"}' 
```

Cerca tramite il ModelLifeCycle campo.

```
aws sagemaker search --region 'region' --resource ModelPackage --search-expression '{"Filters": [{"Name": "ModelLifeCycle.Stage","Value": "stage-name"}]}'
```

Recupera i record di controllo per ModelLifeField gli aggiornamenti tramite [Monitoraggio del lignaggio di Amazon SageMaker ML](lineage-tracking.md) APIs.

```
aws sagemaker list-actions --region 'region' --action-type ModelLifeCycle
```

```
aws sagemaker describe-action --region 'region' --action-name 'action-arn or action-name'
```

# Ricevi notifiche sugli eventi per ModelLifeCycle
<a name="model-registry-staging-construct-event-bridge"></a>

Puoi ricevere le notifiche e gli eventi di ModelLifeCycle aggiornamento EventBridge nel tuo account. Di seguito è riportato un esempio di EventBridge regola, da configurare nel tuo account, per ricevere le notifiche ModelLifeCycle sugli eventi.

```
{
  "source": ["aws.sagemaker"],
  "detail-type": ["SageMaker Model Package State Change"]
}
```

Per un esempio di EventBridge payload che potresti ricevere, vedi[SageMaker modifica dello stato del pacchetto del modello](automating-sagemaker-with-eventbridge.md#eventbridge-model-package).

# Aggiornamento dello stato di approvazione di un modello
<a name="model-registry-approve"></a>

Dopo aver creato una versione del modello, in genere si desidera valutarne le prestazioni prima di distribuirlo su un endpoint di produzione. Se la versione del modello soddisfa i requisiti, è possibile aggiornare lo stato di approvazione a `Approved`. L'impostazione dello stato su `Approved` può avviare la CI/CD distribuzione del modello. Se la versione del modello non soddisfa i requisiti, è possibile aggiornare lo stato di approvazione a `Rejected`.

È possibile aggiornare manualmente lo stato di approvazione di una versione del modello dopo la registrazione oppure creare una fase di condizione per valutare il modello quando si crea una pipeline di SageMaker intelligenza artificiale. Per informazioni sulla creazione di una fase di condizione in una pipeline di SageMaker intelligenza artificiale, consulta. [Fasi delle pipeline](build-and-manage-steps.md)

Quando si utilizza uno dei modelli di progetto forniti dall' SageMaker IA e lo stato di approvazione di una versione del modello cambia, si verifica la seguente azione. Vengono mostrate solo le transizioni valide.
+ `PendingManualApproval`a `Approved` — avvia la CI/CD distribuzione per la versione del modello approvata
+ `PendingManualApproval` - `Rejected`: nessuna azione
+ `Rejected` - `Approved`: avvia la distribuzione CI/CD per la versione del modello approvata
+ `Approved`a`Rejected`: avvia la CI/CD distribuzione della versione più recente del modello con uno stato `Approved`

Puoi aggiornare lo stato di approvazione di una versione del modello utilizzando AWS SDK per Python (Boto3) o utilizzando la console Amazon SageMaker Studio. Puoi anche aggiornare lo stato di approvazione di una versione del modello come parte di una fase di condizione in una pipeline di SageMaker intelligenza artificiale. Per informazioni sull'utilizzo di una fase di approvazione del modello in una pipeline di SageMaker intelligenza artificiale, consulta. [Panoramica su Pipelines](pipelines-overview.md)

## Aggiornamento dello stato di approvazione di un modello (boto3)
<a name="model-registry-approve-api"></a>

Dopo aver creato la versione del modello in [Registrazione di una versione del modello](model-registry-version.md), imposta `ModelApprovalStatus` su `PendingManualApproval`. È possibile aggiornare lo stato di approvazione del modello chiamando `update_model_package`. Si noti che è possibile automatizzare questo processo scrivendo codice che, ad esempio, imposta lo stato di approvazione di un modello in base al risultato di una valutazione di alcune misure delle prestazioni del modello. È inoltre possibile creare una fase in una pipeline che distribuisca automaticamente una nuova versione del modello quando viene approvata. Il seguente frammento di codice mostra come modificare manualmente lo stato di approvazione in `Approved`.

```
model_package_update_input_dict = {
    "ModelPackageArn" : model_package_arn,
    "ModelApprovalStatus" : "Approved"
}
model_package_update_response = sm_client.update_model_package(**model_package_update_input_dict)
```

## Aggiornamento dello stato di approvazione di un modello (Studio o Studio Classic)
<a name="model-registry-approve-studio"></a>

Per modificare manualmente lo stato di approvazione nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Nell’elenco dei gruppi di modelli, scegli la parentesi angolare a sinistra del gruppo di modelli da visualizzare.

1. Viene visualizzato un elenco delle versioni del modello nel gruppo di modelli. Se non vedi la versione del modello da eliminare, scegli **Visualizza tutto** per visualizzare l’elenco completo delle versioni del modello nella pagina dei dettagli del gruppo di modelli.

1. Seleziona il nome della versione del modello da aggiornare.

1. La scheda **Implementa** mostra lo stato di approvazione corrente. Scegli il menu a discesa accanto allo stato di approvazione corrente e seleziona lo stato di approvazione aggiornato.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall’elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da visualizzare. Si apre una nuova scheda con un elenco delle versioni del modello nel gruppo di modelli.

1. Nell’elenco delle versioni del modello, seleziona il nome della versione del modello da aggiornare.

1. Nel menu a discesa **Azioni**, puoi scegliere una delle due possibili opzioni di menu per aggiornare lo stato della versione del modello.
   + Utilizzo dell'opzione **Aggiorna stato**

     1. Nel menu a discesa **Azioni**, scegli il menu a discesa **Aggiorna stato** e scegli lo stato della nuova versione del modello.

     1. (Facoltativo) Nel campo **Commento**, aggiungi ulteriori dettagli.

     1. Seleziona **Save e aggiorna**.
   + Utilizzo dell'opzione **Modifica**

     1. Dal menu a discesa **Azioni**, seleziona **Modifica**.

     1. (Facoltativo) Nel campo **Commento**, aggiungi ulteriori dettagli.

     1. Scegli **Save changes** (Salva modifiche).

1. Verifica che lo stato della versione del modello sia aggiornato al valore corretto nella pagina della versione del modello.

------

Per`us-east-1`,`us-west-2`, e `eu-west-1` regioni`ap-northeast-1`, puoi utilizzare le seguenti istruzioni per accedere ai dettagli relativi alla derivazione delle versioni registrate e registrate dei modelli:

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegli la scheda **Modelli** registrati, se non è già selezionata, quindi seleziona **Modelli registrati**.

1. Seleziona un modello e scegli **Visualizza l'ultima versione**.

1. Scegli la scheda **Governance**.

1. La sezione **Distribuisci** in **Panoramica sulla governance** mostra lo stato di approvazione corrente. Seleziona lo stato di approvazione aggiornato dal menu a discesa.

# Implementazione di un modello dal registro con Python
<a name="model-registry-deploy"></a>

Dopo aver registrato una versione del modello e averne approvato la distribuzione, distribuiscila su un SageMaker endpoint AI per l'inferenza in tempo reale. Puoi implementare il tuo modello utilizzando l'AI SDK o il SageMaker . AWS SDK per Python (Boto3)

Quando crei un progetto di machine learning operations (MLOps) e scegli un modello di MLOps progetto che includa la distribuzione del modello, le versioni del modello approvate nel Model Registry vengono automaticamente distribuite in produzione. Per informazioni sull'utilizzo dei MLOps progetti di SageMaker intelligenza artificiale, consulta[MLOps Automazione con SageMaker progetti](sagemaker-projects.md).

Puoi anche consentire a un AWS account di distribuire versioni del modello create in un account diverso aggiungendo una politica delle risorse per più account. Ad esempio, un team dell'organizzazione può essere responsabile dei modelli di addestramento e un altro team responsabile della distribuzione e dell'aggiornamento dei modelli.

**Topics**
+ [Distribuisci un modello dal registro (SDK) SageMaker](#model-registry-deploy-smsdk)
+ [Implementazione di un modello dal registro (boto3)](#model-registry-deploy-api)
+ [Implementazione di una versione del modello da un account diverso](#model-registry-deploy-xaccount)

## Distribuisci un modello dal registro (SDK) SageMaker
<a name="model-registry-deploy-smsdk"></a>

Per distribuire una versione del modello utilizzando l'SDK [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), usa il seguente frammento di codice:

```
from sagemaker import ModelPackage
from time import gmtime, strftime

model_package_arn = 'arn:aws:sagemaker:us-east-2:12345678901:model-package/modeltest/1'
model = ModelPackage(role=role, 
                     model_package_arn=model_package_arn, 
                     sagemaker_session=sagemaker_session)
model.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge')
```

## Implementazione di un modello dal registro (boto3)
<a name="model-registry-deploy-api"></a>

Per distribuire una versione del modello utilizzando il, completa i AWS SDK per Python (Boto3) seguenti passaggi:

1. Il seguente frammento di codice presuppone che tu abbia già creato il client SageMaker AI Boto3 `sm_client` e una versione del modello il cui ARN è memorizzato nella variabile. `model_version_arn`

   Crea un oggetto di modello dalla versione del modello chiamando l’operazione API [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model). Passa il nome della risorsa Amazon (ARN) della versione del modello come parte di `Containers` per l’oggetto di modello.

   ```
   model_name = 'DEMO-modelregistry-model-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
   print("Model name : {}".format(model_name))
   container_list = [{'ModelPackageName': model_version_arn}]
   
   create_model_response = sm_client.create_model(
       ModelName = model_name,
       ExecutionRoleArn = role,
       Containers = container_list
   )
   print("Model arn : {}".format(create_model_response["ModelArn"]))
   ```

1. Creazione di una configurazione dell'endpoint chiamando `create_endpoint_config`. La configurazione dell'endpoint specifica il numero e il tipo di istanze Amazon EC2 da utilizzare per l'endpoint.

   ```
   endpoint_config_name = 'DEMO-modelregistry-EndpointConfig-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
   print(endpoint_config_name)
   create_endpoint_config_response = sm_client.create_endpoint_config(
       EndpointConfigName = endpoint_config_name,
       ProductionVariants=[{
           'InstanceType':'ml.m4.xlarge',
           'InitialVariantWeight':1,
           'InitialInstanceCount':1,
           'ModelName':model_name,
           'VariantName':'AllTraffic'}])
   ```

1. Crea l'endpoint chiamando `create_endpoint`.

   ```
   endpoint_name = 'DEMO-modelregistry-endpoint-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
   print("EndpointName={}".format(endpoint_name))
   
   create_endpoint_response = sm_client.create_endpoint(
       EndpointName=endpoint_name,
       EndpointConfigName=endpoint_config_name)
   print(create_endpoint_response['EndpointArn'])
   ```

## Implementazione di una versione del modello da un account diverso
<a name="model-registry-deploy-xaccount"></a>

È possibile consentire a un AWS account di distribuire versioni del modello create in un account diverso aggiungendo una politica di risorse per più account. Ad esempio, un team dell'organizzazione può essere responsabile dei modelli di addestramento e un altro team responsabile della distribuzione e dell'aggiornamento dei modelli. Quando si creano queste policy relative alle risorse, le si applica alla risorsa specifica a cui si desidera concedere l'accesso. *Per ulteriori informazioni sulle politiche relative alle risorse tra account in AWS, consulta [Logica di valutazione delle politiche tra account](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) nella Guida per l'utente.AWS Identity and Access Management *

**Nota**  
È necessario utilizzare una chiave KMS per crittografare l'azione di [configurazione dei dati di output](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html) durante l'addestramento per la distribuzione del modello tra account.

Per abilitare l'implementazione di modelli tra account nell' SageMaker intelligenza artificiale, devi fornire una politica di risorse per più account per il Model Group che contenga le versioni del modello che desideri distribuire, il repository Amazon ECR in cui risiede l'immagine di inferenza per il Model Group e il bucket Amazon S3 in cui sono archiviate le versioni del modello.

Per poter implementare un modello creato in un account diverso, devi avere un ruolo che abbia accesso alle azioni di SageMaker intelligenza artificiale, ad esempio un ruolo con la policy `AmazonSageMakerFullAccess` gestita. Per informazioni sulle politiche gestite dall' SageMaker IA, consulta[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md).

L'esempio seguente crea policy tra account per tutte e tre queste risorse, applicandole alle stesse. L’esempio presuppone che in precedenza siano state definite le seguenti variabili:
+ `bucket`: il bucket Amazon S3 in cui sono archiviate le versioni del modello.
+ `kms_key_id`: la chiave KMS utilizzata per crittografare l’output di addestramento.
+ `sm_client`— Un client SageMaker AI Boto3.
+ `model_package_group_name`: il gruppo di modelli a cui concedere l’accesso multi-account.
+ `model_package_group_arn`: l’ARN del gruppo di modelli a cui concedere l’accesso multi-account.

```
import json

# The cross-account id to grant access to
cross_account_id = "123456789012"

# Create the policy for access to the ECR repository
ecr_repository_policy = {
    'Version': '2012-10-17		 	 	 ',
    'Statement': [{
        'Sid': 'AddPerm',
        'Effect': 'Allow',
        'Principal': {
            'AWS': f'arn:aws:iam::{cross_account_id}:root'
        },
        'Action': ['ecr:*']
    }]
}

# Convert the ECR policy from JSON dict to string
ecr_repository_policy = json.dumps(ecr_repository_policy)

# Set the new ECR policy
ecr = boto3.client('ecr')
response = ecr.set_repository_policy(
    registryId = account,
    repositoryName = 'decision-trees-sample',
    policyText = ecr_repository_policy
)

# Create a policy for accessing the S3 bucket
bucket_policy = {
    'Version': '2012-10-17		 	 	 ',
    'Statement': [{
        'Sid': 'AddPerm',
        'Effect': 'Allow',
        'Principal': {
            'AWS': f'arn:aws:iam::{cross_account_id}:root'
        },
        'Action': 's3:*',
        'Resource': f'arn:aws:s3:::{bucket}/*'
    }]
}

# Convert the policy from JSON dict to string
bucket_policy = json.dumps(bucket_policy)

# Set the new policy
s3 = boto3.client('s3')
response = s3.put_bucket_policy(
    Bucket = bucket,
    Policy = bucket_policy)

# Create the KMS grant for encryption in the source account to the
# Model Registry account Model Group
client = boto3.client('kms')

response = client.create_grant(
    GranteePrincipal=cross_account_id,
    KeyId=kms_key_id
    Operations=[
        'Decrypt',
        'GenerateDataKey',
    ],
)

# 3. Create a policy for access to the Model Group.
model_package_group_policy = {
    'Version': '2012-10-17		 	 	 ',
    'Statement': [{
        'Sid': 'AddPermModelPackageGroup',
        'Effect': 'Allow',
        'Principal': {
            'AWS': f'arn:aws:iam::{cross_account_id}:root'
        },
        'Action': ['sagemaker:DescribeModelPackageGroup'],
        'Resource': f'arn:aws:sagemaker:{region}:{account}:model-package-group/{model_package_group_name}'
    },{
        'Sid': 'AddPermModelPackageVersion',
        'Effect': 'Allow',
        'Principal': {
            'AWS': f'arn:aws:iam::{cross_account_id}:root'
        },
        'Action': ["sagemaker:DescribeModelPackage",
                   "sagemaker:ListModelPackages",
                   "sagemaker:UpdateModelPackage",
                   "sagemaker:CreateModel"],
        'Resource': f'arn:aws:sagemaker:{region}:{account}:model-package/{model_package_group_name}/*'
    }]
}

# Convert the policy from JSON dict to string
model_package_group_policy = json.dumps(model_package_group_policy)

# Set the policy to the Model Group
response = sm_client.put_model_package_group_policy(
    ModelPackageGroupName = model_package_group_name,
    ResourcePolicy = model_package_group_policy)

print('ModelPackageGroupArn : {}'.format(create_model_package_group_response['ModelPackageGroupArn']))
print("First Versioned ModelPackageArn: " + model_package_arn)
print("Second Versioned ModelPackageArn: " + model_package_arn2)

print("Success! You are all set to proceed for cross-account deployment.")
```

# Implementazione di un modello in Studio
<a name="model-registry-deploy-studio"></a>

Dopo aver registrato una versione del modello e averne approvato la distribuzione, distribuiscila su un endpoint Amazon SageMaker AI per l'inferenza in tempo reale. Puoi [Implementazione di un modello dal registro con Python](model-registry-deploy.md) o distribuire il tuo modello in Amazon SageMaker Studio. Di seguito vengono fornite istruzioni su come implementare il modello in Studio.

Questa funzionalità non è disponibile in Amazon SageMaker Studio Classic.
+ Se Studio è l’esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio](studio-updated-ui.md).
+ Se Studio Classic è la tua esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).

Prima di implementare un pacchetto di modelli, è necessario soddisfare i seguenti requisiti:
+ Deve essere disponibile una specifica di inferenza valida. Per ulteriori informazioni, consulta [InferenceSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html#sagemaker-CreateModelPackage-request-InferenceSpecification).
+ Deve essere disponibile un modello con stato approvato. Per ulteriori informazioni, consulta [Aggiornamento dello stato di approvazione di un modello](model-registry-approve.md).

Di seguito vengono fornite istruzioni su come implementare un modello in Studio.

**Per implementare un modello in Studio**

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. (Facoltativo) Se hai modelli che sono stati condivisi con te, puoi scegliere tra **I miei modelli** o **Condivisi con me**.

1. Seleziona le caselle di controllo per i modelli registrati. Se i requisiti di cui sopra sono soddisfatti, il pulsante **Implementa** diventa selezionabile.

1. Scegli **Implementa** per aprire la pagina **Implementa il modello sull’endpoint**.

1. Configura le risorse di implementazione nelle **impostazioni dell’endpoint**. 

1. Dopo aver verificato le impostazioni, scegli **Implementa**. Il modello verrà quindi implementato sull’endpoint con lo stato **In servizio**.

Per`us-east-1`, `us-west-2``ap-northeast-1`, e `eu-west-1` regioni, puoi utilizzare le seguenti istruzioni per distribuire i modelli:

**Per implementare un modello in Studio**

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegli la scheda **I miei modelli**.

1. Scegli la scheda **Modelli** registrati, se non è già selezionata.

1. Seleziona un modello e scegli **Visualizza l'ultima versione**.

1. Scegli **Deploy** e scegli tra SageMaker AI o Amazon Bedrock.

1. Dopo aver verificato le impostazioni, scegli **Implementa**. Il modello verrà quindi implementato sull’endpoint con lo stato **In servizio**.

# Rilevabilità multi-account
<a name="model-registry-ram"></a>

I Data Scientist e gli ingegneri dei dati possono promuovere la coerenza dei dati, semplificare la collaborazione e ridurre le attività ripetute esplorando e accedendo ai gruppi di pacchetti di modelli registrati in altri account. Con Amazon SageMaker Model Registry, puoi condividere gruppi di pacchetti modello tra più account. Esistono due categorie distinte di autorizzazioni associate alla condivisione delle risorse:
+ **Rilevabilità**: la *rilevabilità* è la capacità dell’account consumer di risorse di visualizzare i gruppi di pacchetti di modelli condivisi da uno o più account proprietario di risorse. La rilevabilità è possibile solo se il proprietario delle risorse attribuisce le policy delle risorse necessarie ai gruppi di pacchetti di modelli condivisi. Il consumatore di risorse può visualizzare tutti i gruppi di pacchetti di modelli condivisi nell' AWS RAM interfaccia utente e AWS CLI.
+ **Accessibilità**: *l’accessibilità* è la capacità dell’account consumer di risorse di utilizzare i gruppi di pacchetti di modelli condivisi. Ad esempio, il consumer di risorse può registrare o implementare un pacchetto di modelli da un account diverso se dispone delle autorizzazioni necessarie.

**Topics**
+ [Condivisione di un gruppo di modelli in Studio](model-registry-ram-studio-share.md)
+ [Visualizzazione dei gruppi di modelli condivisi in Studio](model-registry-ram-studio-view.md)
+ [Accessibilità](model-registry-ram-accessibility.md)
+ [Configurazione della rilevabilità](model-registry-ram-discover.md)
+ [Visualizzazione dei gruppi di pacchetti di modelli condivisi](model-registry-ram-view-shared.md)
+ [Dissociazione dei principali da una condivisione di risorse e rimozione di una condivisione di risorse](model-registry-ram-dissociate.md)
+ [Promozione dell’autorizzazione e della condivisione di risorse](model-registry-ram-promote.md)

# Condivisione di un gruppo di modelli in Studio
<a name="model-registry-ram-studio-share"></a>

Puoi condividere i tuoi gruppi di modelli con altri AWS principali (Account AWS o AWS Organizations) utilizzando l'interfaccia utente di Studio. Questo processo di condivisione semplificato consente la collaborazione tra team, promuove le best practice e facilita il riutilizzo dei modelli tra i team. Di seguito vengono fornite istruzioni su come condividere i gruppi di modelli in Studio.

Questa funzionalità non è disponibile in Amazon SageMaker Studio Classic.
+ Se Studio è l’esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio](studio-updated-ui.md).
+ Se Studio Classic è la tua esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).

Per condividere i gruppi di modelli, devi prima assicurarti che l’autorizzazione seguente sia aggiunta al ruolo di esecuzione da cui condividi le risorse.

1. [Ottieni il ruolo di esecuzione](sagemaker-roles.md#sagemaker-roles-get-execution-role).

1. [Aggiorna le autorizzazioni del ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html) con quanto segue:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ram:ListPermissions",
                   "ram:GetPermission",
                   "ram:GetResourceShareAssociations",
                   "ram:ListResourceSharePermissions",
                   "ram:DeleteResourceShare",
                   "ram:GetResourceShareInvitations",
                   "ram:AcceptResourceShareInvitation"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

Di seguito vengono fornite istruzioni su come condividere un gruppo di modelli con altri principali AWS .

**Per condividere un gruppo di modelli con altri AWS mandanti**

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Seleziona un modello registrato.

1. Nell’angolo in alto a destra, scegli **Condividi**. Si apre la sezione **Condividi il gruppo di modelli**.

   Se visualizzi un messaggio di errore nella parte inferiore dello schermo, dovrai aggiungere le autorizzazioni appropriate al tuo ruolo di esecuzione. Per ulteriori informazioni, consulta le autorizzazioni descritte sopra.

1. In **Condivisioni di risorse**, scegli una condivisione di risorse da aggiornare o creane una nuova. 

1. In **Autorizzazione gestita**, scegli un’autorizzazione gestita per controllare il livello di accesso per il tuo modello. 

   Le opzioni visualizzabili includono le autorizzazioni che sono già state create per te o le tue autorizzazioni personalizzate in AWS RAM. Consulta [Creazione e utilizzo delle autorizzazioni gestite dal cliente](https://docs.aws.amazon.com/ram/latest/userguide/create-customer-managed-permissions.html) nella *Guida per l’utente di AWS Resource Access Manager*.

1. **Nella sezione **AWS principals**, inserisci l' AWS Organizations ARN Account AWS IDs o con cui desideri condividere, quindi scegli Aggiungi.** Puoi aggiungere più AWS principi in questo modo.

1. Quando i requisiti minimi sono soddisfatti, il pulsante **Condividi** diventa accessibile. Dopo aver verificato le impostazioni, scegli **Condividi**.

   Se la condivisione è valida, viene visualizzato un messaggio su un banner verde nella parte inferiore della schermata.

# Visualizzazione dei gruppi di modelli condivisi in Studio
<a name="model-registry-ram-studio-view"></a>

Puoi visualizzare i gruppi di modelli condivisi con te o con un account che appartiene allo stesso AWS Organizations. Se un gruppo di modelli viene condiviso con un account appartenente allo stesso AWS Organizations, il gruppo di modelli condiviso verrà automaticamente approvato e sarà disponibile per la visualizzazione in Studio. In caso contrario, dovrai approvare l’invito in sospeso per poter visualizzare il gruppo di modelli condiviso in Studio. Di seguito vengono fornite istruzioni su come visualizzare i gruppi di modelli condivisi e accettare gli inviti alla condivisione dei gruppi di modelli in Studio.

Questa funzionalità non è disponibile in Amazon SageMaker Studio Classic.
+ Se Studio è l’esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio](studio-updated-ui.md).
+ Se Studio Classic è la tua esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).

Di seguito vengono fornite istruzioni su come visualizzare e accettare i gruppi di modelli condivisi con te.

**Visualizzazione e accettazione dei gruppi di modelli condivisi con te**

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Scegli **Condiviso con me** per visualizzare i gruppi di modelli condivisi con te.

1. Per accettare gli inviti in sospeso ai gruppi di modelli:

   1. Scegli **Visualizza le approvazioni in sospeso** per aprire l’elenco degli **inviti in sospeso**.

   1. Per accettare l’invito, scegli **Accetta**.

# Accessibilità
<a name="model-registry-ram-accessibility"></a>

Se il consumer di risorse dispone delle autorizzazioni di accesso per utilizzare un gruppo di pacchetti di modelli condiviso, può registrare o implementare una versione del gruppo di pacchetti di modelli. Per saperne di più su come il consumer di risorse può registrare un gruppo di pacchetti di modelli condiviso, consulta [Registrazione di una versione del modello da un account diverso](model-registry-version.md#model-registry-version-xaccount). Per saperne di più su come il consumer di risorse può implementare un gruppo di pacchetti di modelli condivisi, consulta [Implementazione di una versione del modello da un account diverso](model-registry-deploy.md#model-registry-deploy-xaccount).

# Configurazione della rilevabilità
<a name="model-registry-ram-discover"></a>

Il proprietario delle risorse può impostare la rilevabilità del gruppo di pacchetti di modelli creando condivisioni di risorse e collegando policy delle risorse alle entità. Per i passaggi dettagliati su come creare una condivisione di risorse generale in AWS RAM, vedete [Creare una condivisione di risorse](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create) nella [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)documentazione.

Completa le seguenti istruzioni per configurare la reperibilità dei gruppi di pacchetti modello utilizzando la AWS RAM console o la Model Registry Resource Policy APIs.

------
#### [ AWS CLI ]

1. Crea una condivisione di risorse nell’account proprietario di modelli.

   1. Il proprietario del modello allega una politica delle risorse al gruppo di pacchetti di modelli utilizzando l'API SageMaker AI Resource Policy API [put-model-package-group-policy](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/put-model-package-group-policy.html), come illustrato nel comando seguente.

      ```
      aws sagemaker put-model-package-group-policy
      --model-package-group-name <model-package-group-name>
      --resource-policy "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Sid\":
      \"ExampleResourcePolicy\",\"Effect\":\"Allow\",\"Principal\":<principal>,
      \"Action\":[\"sagemaker:DescribeModelPackage\",
      \"sagemaker:ListModelPackages\",\"sagemaker:DescribeModelPackageGroup\"],
      \"Resource\":[\"<model-package-group-arn>,\"
      \"arn:aws:sagemaker:<region>:<owner-account-id>:model-package/
      <model-package-group-name>/*\"]}]}"
      ```
**Nota**  
Puoi collegare diverse combinazioni di azioni alla policy delle risorse. Per le policy personalizzate, l’autorizzazione creata deve essere promossa dal proprietario del gruppo di pacchetti di modelli e solo le entità a cui sono collegate autorizzazioni promosse sono rilevabili. Le condivisioni di risorse non promovibili non possono essere rese rilevabili o gestite tramite AWS RAM.

   1. Per verificare che abbia AWS RAM creato l'ARN della condivisione di risorse, utilizzare il seguente comando:

      ```
      aws ram get-resource-share-associations --association-type resource --resource-arn <model-package-group-arn>
      ```

      La risposta contiene il comando *resource-share-arn* per l'entità.

   1. Per verificare se l’autorizzazione per la policy collegata è una policy gestita o personalizzata, utilizza il comando seguente:

      ```
      aws ram list-resource-share-permissions --resource-share-arn <resource-share-arn>
      ```

      Il campo `featureSet` può assumere i valori `CREATED_FROM_POLICY` o `STANDARD`, che sono definiti come descritto di seguito:
      + `STANDARD`: l’autorizzazione esiste già.
      + `CREATED_FROM_POLICY`: l’autorizzazione deve essere promossa affinché l’entità sia rilevabile. Per ulteriori informazioni, consulta [Promozione dell’autorizzazione e della condivisione di risorse](model-registry-ram-promote.md).

1. Accetta l’invito alla condivisione di risorse nell’account consumer di modelli.

   1. Il consumer del gruppo di pacchetti di modelli accetta l’invito alla condivisione di risorse. Per visualizzare tutti gli inviti relativi alle risorse, utilizza il comando seguente:

      ```
      aws ram get-resource-share-invitations
      ```

      Identifica le richieste con stato `PENDING` e includi l’ID dell’account del proprietario.

   1. Accetta l’invito alla condivisione di risorse dal proprietario del modello utilizzando il comando seguente:

      ```
      aws ram accept-resource-share-invitation --resource-share-invitation-arn <resource-share-invitation-arn>
      ```

------
#### [ AWS RAM console ]

1. Accedi alla [console AWS RAM](https://console.aws.amazon.com/ram/home).

1. Completa la procedura seguente per creare una condivisione di risorse dall’account del proprietario del gruppo di pacchetti di modelli.

   1. Completa la procedura seguente per specificare i dettagli della condivisione di risorse.

      1. Nel campo **Nome**, aggiungi un nome univoco per la tua risorsa.

      1. Nella scheda **Risorse**, scegli il menu a discesa e seleziona **SageMaker AI Model Package Groups**.

      1. Seleziona la casella di controllo dell’ARN della condivisione di risorse del gruppo di pacchetti di modelli.

      1. Nella scheda **Seleziona risorse**, seleziona la casella di controllo della condivisione di risorse del gruppo di pacchetti di modelli.

      1. Nella scheda **Tag**, aggiungi coppie chiave-valore per i tag da aggiungere alla tua condivisione di risorse.

      1. Scegli **Next (Successivo)**.

   1. Completa la procedura seguente per associare le autorizzazioni gestite alla condivisione di risorse.

      1. Se utilizzi un’autorizzazione gestita, scegline una dal menu a discesa **Autorizzazioni gestite**.

      1. Se utilizzi un’autorizzazione personalizzata, scegli **Autorizzazione gestita dal cliente**. In questo caso, il gruppo di pacchetti di modelli non è immediatamente rilevabile. Dopo aver creato la condivisione di risorse, devi promuovere l’autorizzazione e la policy delle risorse. Per informazioni su come promuovere le autorizzazioni e le condivisioni di risorse, consulta [Promozione dell’autorizzazione e della condivisione di risorse](model-registry-ram-promote.md). Per ulteriori informazioni su come collegare le autorizzazioni personalizzate, consulta [Creazione e utilizzo di autorizzazioni gestite dal cliente in AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/create-customer-managed-permissions.html).

      1. Scegli **Next (Successivo)**.

   1. Completa la procedura seguente per concedere l’accesso ai principali.

      1. Scegli **Consenti la condivisione con chiunque** per consentire la condivisione con account esterni all’organizzazione oppure scegli **Consenti la condivisione solo all’interno dell’organizzazione**.

      1. Nel menu a discesa **Seleziona il tipo di principale**, aggiungi i tipi e gli ID dei principali da aggiungere.

      1. Aggiungi e seleziona i principali scelti per la condivisione.

      1. Scegli **Next (Successivo)**.

   1. Controlla la configurazione della condivisione visualizzata, quindi scegli **Crea condivisione di risorse**.

1. Accetta l’invito alla condivisione di risorse dall’account consumer. Dopo che il proprietario di modelli ha creato la condivisione di risorse e le associazioni di principali, gli account consumer di risorse specificati ricevono un invito a partecipare alla condivisione di risorse. Gli account consumer di risorse possono visualizzare e accettare gli inviti nella pagina [Shared with me: Resource shares](https://console.aws.amazon.com/ram/home#SharedResourceShares:) nella console AWS RAM . Per ulteriori informazioni sull'accettazione e la visualizzazione delle risorse in AWS RAM, vedi [Accedere alle AWS risorse condivise con te](https://docs.aws.amazon.com//ram/latest/userguide/working-with-shared.html).

------

# Visualizzazione dei gruppi di pacchetti di modelli condivisi
<a name="model-registry-ram-view-shared"></a>

Dopo che il proprietario della risorsa ha completato i passaggi precedenti per creare una condivisione di risorse e il consumatore ha accettato l'invito alla condivisione, il consumatore può visualizzare i gruppi di pacchetti di modelli condivisi utilizzando AWS CLI o nella AWS RAM console.

## AWS CLI
<a name="model-registry-ram-view-shared-cli"></a>

Per visualizzare i gruppi di pacchetti di modelli condivisi, utilizza il comando seguente nell’account consumer di modelli:

```
aws sagemaker list-model-package-groups --cross-account-filter-option CrossAccount
```

## AWS RAM console
<a name="model-registry-ram-view-shared-ram"></a>

Nella AWS RAM console, il proprietario della risorsa e il consumatore possono visualizzare i gruppi di pacchetti di modelli condivisi. Il proprietario di risorse può visualizzare i gruppi di pacchetti di modelli condivisi con il consumer seguendo la procedura descritta in [Visualizzazione delle condivisioni di risorse create in AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-view-rs.html). Il consumer di risorse può visualizzare i gruppi di pacchetti di modelli condivisi dal proprietario seguendo la procedura descritta in [Visualizzazione delle condivisioni di risorse condivise con te](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared-view-rs.html).

# Dissociazione dei principali da una condivisione di risorse e rimozione di una condivisione di risorse
<a name="model-registry-ram-dissociate"></a>

Il proprietario della risorsa può separare i principali dalla condivisione delle risorse per un insieme di autorizzazioni o eliminare l'intera condivisione di risorse utilizzando la console o la AWS CLI console. AWS RAM Per informazioni dettagliate su come dissociare i principali da una condivisione di risorse, consulta [Aggiornamento di una condivisione di risorse](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-update.html) nella documentazione di [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html). Per informazioni dettagliate su come eliminare una condivisione di risorse, consulta [Eliminazione di una condivisione di risorse](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-delete.html) nella documentazione di [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html).

## AWS CLI
<a name="model-registry-ram-dissociate-cli"></a>

Per dissociare i principali da una condivisione di risorse, usa il comando [dissociate-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html)come segue:

```
aws ram disassociate-resource-share --resource-share-arn <resource-share-arn> --principals <principal>
```

Per eliminare una condivisione di risorse, utilizzate il comando seguente: [delete-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/delete-resource-share.html)

```
aws ram delete-resource-share --resource-share-arn <resource-share-arn>
```

## AWS RAM console
<a name="model-registry-ram-dissociate-ram"></a>

Per ulteriori informazioni su come dissociare i principali da una condivisione di risorse, consulta [Aggiornamento di una condivisione di risorse](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-update.html) nella documentazione di [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html). Per ulteriori informazioni su come eliminare una condivisione di risorse, consulta [Eliminazione di una condivisione di risorse](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-delete.html) nella documentazione di [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html).

# Promozione dell’autorizzazione e della condivisione di risorse
<a name="model-registry-ram-promote"></a>

Se utilizzi autorizzazioni personalizzate (gestite dal cliente), devi promuovere l’autorizzazione e la condivisione di risorse associata affinché il gruppo di pacchetti di modelli sia rilevabile. Completa la procedura seguente per promuovere l’autorizzazione e la condivisione di risorse.

1. Per promuovere la tua autorizzazione personalizzata ad essere accessibile da parte di AWS RAM, usa il seguente comando:

   ```
   aws ram promote-permission-created-from-policy —permission-arn <permission-arn>
   ```

1. Promuovi la condivisione di risorse con il comando seguente:

   ```
   aws ram promote-resource-share-created-from-policy --resource-share-arn <resource-share-arn>
   ```

Se visualizzi l’errore `OperationNotPermittedException` durante l’esecuzione delle fasi precedenti, l’entità non è rilevabile ma è accessibile. Ad esempio, se il proprietario delle risorse associa una policy delle risorse a un principale di assunzione del ruolo, ad esempio `“Principal”: {“AWS”: “arn:aws:iam::3333333333:role/Role-1”}`, o se la policy delle risorse consente `“Action”: “*”`, il gruppo di pacchetti di modelli associato non è né promosso né rilevabile.

# Visualizzazione della cronologia di implementazione di un modello
<a name="model-registry-deploy-history"></a>

Per visualizzare le distribuzioni di una versione modello nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

**Visualizzazione della cronologia di implementazione di una versione del modello**

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Modelli** per visualizzare un elenco dei gruppi di modelli.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Nell’elenco dei gruppi di modelli, scegli la parentesi angolare a sinistra del gruppo di modelli da visualizzare.

1. Viene visualizzato un elenco delle versioni del modello nel gruppo di modelli. Se non vedi la versione del modello da eliminare, scegli **Visualizza tutto**.

1. Seleziona il nome della versione del modello da visualizzare.

1. Scegli la scheda **Attività**. Le distribuzioni per la versione del modello vengono visualizzate come eventi nell'elenco delle attività con un **tipo di evento di**. **ModelDeployment**

------
#### [ Studio Classic ]

**Visualizzazione della cronologia di implementazione di una versione del modello**

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Dall’elenco dei gruppi di modelli, seleziona il nome del gruppo di modelli da visualizzare.

1. Viene visualizzata una nuova scheda con un elenco delle versioni del modello nel gruppo di modelli.

1. Nell'elenco delle versioni del modello, seleziona il nome della versione del modello di cui desideri visualizzare i dettagli.

1. Nella scheda della versione del modello che si apre, scegli **Attività**. Le distribuzioni per la versione del modello vengono visualizzate come eventi nell'elenco delle attività con un **tipo di evento di**. **ModelDeployment**

------

# Visualizzazione dei dettagli del lineage del modello in Studio
<a name="model-registry-lineage-view-studio"></a>

Puoi visualizzare i dettagli della discendenza di un modello registrato in Amazon SageMaker Studio. Di seguito vengono fornite istruzioni su come accedere alla visualizzazione del lineage in Studio. [Monitoraggio del lignaggio di Amazon SageMaker ML](lineage-tracking.md)Per ulteriori informazioni sul tracciamento della discendenza in Amazon SageMaker Studio, consulta la pagina.

Questa funzionalità non è disponibile in Amazon SageMaker Studio Classic.
+ Se Studio è l’esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio](studio-updated-ui.md).
+ Se Studio Classic è la tua esperienza predefinita, l’interfaccia utente sarà simile alle immagini visualizzate in [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).

La visualizzazione del lineage è una visualizzazione interattiva delle risorse associate ai modelli registrati. Queste risorse includono set di dati, job di addestramento, approvazioni, modelli ed endpoint. Nel lineage puoi anche visualizzare i dettagli delle risorse associate, tra cui l’URI di origine, il timestamp di creazione e altri metadati.

Le seguenti funzionalità sono disponibili in `us-east-1``us-west-2`,`ap-northeast-1`, e `eu-west-1` regioni: 

È possibile tenere traccia della discendenza dei modelli registrati e registrati. Inoltre, le risorse di Lineage for models includono set di dati, valutatori, lavori di formazione, approvazioni, modelli, componenti di inferenza ed endpoint. Nel lineage puoi anche visualizzare i dettagli delle risorse associate, tra cui l’URI di origine, il timestamp di creazione e altri metadati.

Di seguito vengono fornite istruzioni su come accedere ai dettagli del lineage per una versione registrata del modello.

**Per accedere ai dettagli relativi al lineage di una versione registrata del modello**

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. (Facoltativo) Se hai modelli che sono stati condivisi con te, puoi scegliere tra **I miei modelli** o **Condivisi con me**.

1. Seleziona un modello registrato.

1. Scegli la scheda **Versioni** se non è già selezionata.

1. Scegli una versione specifica del modello dall’elenco **Versioni**.

1. Scegli la scheda **Discendenza**. 

Nella scheda **Lineage** puoi navigare tra le risorse associate alla versione del modello. Puoi anche scegliere una risorsa per visualizzarne i dettagli. 

Tieni presente che l’opzione Lineage consente solo la visualizzazione. La ridisposizione o lo spostamento dei componenti in questa visualizzazione non influisce sulle risorse effettive del modello registrato.

Per`us-east-1`,`us-west-2`, e `eu-west-1` le regioni`ap-northeast-1`, è possibile utilizzare le seguenti istruzioni per accedere ai dettagli di derivazione per le versioni registrate e registrate dei modelli:

1. Apri la console Studio seguendo le istruzioni riportate in [Avvia Amazon SageMaker Studio](studio-updated-launch.md).

1. Scegli **Modelli** nel riquadro di navigazione a sinistra.

1. Scegliete la scheda **I miei modelli**.

1. (Facoltativo) Se hai modelli condivisi con te, puoi scegliere tra **Creato da me** o **Condiviso con me**.

1. Seleziona un modello e scegli **Visualizza l'ultima versione**.

1. Scegli la scheda **Discendenza**.

# Raccolte del registro dei modelli
<a name="modelcollections"></a>

È possibile utilizzare le raccolte per raggruppare i modelli registrati correlati tra loro e organizzarli in gerarchie per migliorare la rilevabilità dei modelli su larga scala. Grazie alle raccolte, è possibile organizzare i modelli registrati associati tra loro. *Ad esempio, puoi classificare i tuoi modelli in base al dominio del problema che risolvono come Raccolte intitolate *NLP-Models, CV-Models* o. * Speech-recognition-models** Per organizzare i modelli registrati in una struttura ad albero, puoi annidare le raccolte l'una nell'altra. Qualsiasi operazione eseguita su una raccolta, ad esempio per creare, leggere, aggiornare o eliminare i modelli, non altererà quelli registrati. Puoi utilizzare l'interfaccia utente di Amazon SageMaker Studio o l'PythonSDK per gestire le tue raccolte.

La scheda **Raccolte** nel registro dei modelli mostra un elenco di tutte le raccolte presenti nel tuo account. Le seguenti sezioni descrivono come utilizzare le opzioni nella scheda **Raccolte** per effettuare le seguenti operazioni:
+ Creazione di raccolte
+ Aggiunta di gruppi di modelli a una raccolta
+ Spostamento dei gruppi di modelli tra le raccolte
+ Rimozione di gruppi di modelli o raccolte da altre raccolte

Qualsiasi operazione che esegui sulle tue raccolte non influisce sull'integrità dei singoli gruppi di modelli che contengono: gli artefatti del gruppo di modelli sottostanti in Amazon S3 e Amazon ECR non vengono modificati.

Sebbene le raccolte offrano una maggiore flessibilità nell'organizzazione dei modelli, la rappresentazione interna impone alcuni vincoli sulla dimensione della gerarchia. Per un riepilogo di questi vincoli, consulta [Vincoli](modelcollections-limitations.md).

I seguenti argomenti illustrano come creare e utilizzare le raccolte nel registro dei modelli.

**Topics**
+ [Configurazione delle autorizzazioni preliminari](modelcollections-permissions.md)
+ [Creazione di una raccolta](modelcollections-create.md)
+ [Aggiunta di gruppi di modelli a una raccolta](modelcollections-add-models.md)
+ [Rimozione di gruppi di modelli o raccolte da una raccolta](modelcollections-remove-models.md)
+ [Spostamento di un gruppo di modelli tra le raccolte](modelcollections-move-models.md)
+ [Visualizzazione della raccolta principale di un gruppo di modelli](modelcollections-view-parent.md)
+ [Vincoli](modelcollections-limitations.md)

# Configurazione delle autorizzazioni preliminari
<a name="modelcollections-permissions"></a>

Crea una policy personalizzata che includa le seguenti azioni dei gruppi di risorse richieste:
+ `resource-groups:CreateGroup`
+ `resource-groups:DeleteGroup`
+ `resource-groups:GetGroupQuery`
+ `resource-groups:ListGroupResources`
+ `resource-groups:Tag`
+ `tag:GetResources`

Per ricevere istruzioni su come aggiungere una policy in linea, consulta [Aggiunta di autorizzazioni per identità IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console). Quando scegli il formato della policy, scegli il formato JSON e aggiungi la seguente policy:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "resource-groups:ListGroupResources"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "resource-groups:GetGroupQuery"
            ],
            "Resource": "arn:aws:resource-groups:*:*:group/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "resource-groups:CreateGroup",
                "resource-groups:Tag"
            ],
            "Resource": "arn:aws:resource-groups:*:*:group/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": "sagemaker:collection"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "resource-groups:DeleteGroup",
            "Resource": "arn:aws:resource-groups:*:*:group/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:collection": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "tag:GetResources",
            "Resource": "*"
        }
    ]
}
```

------

# Creazione di una raccolta
<a name="modelcollections-create"></a>

**Importante**  
Le politiche IAM personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L’autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic applicano automaticamente tag a tutte le risorse che creano. Se una policy IAM consente a Studio e Studio Classic di creare risorse ma non consente l'etichettatura, possono verificarsi errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta [Fornisci le autorizzazioni per etichettare SageMaker le risorse AI](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md)che danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Puoi creare una raccolta nella console Amazon SageMaker Studio. Per creare una raccolta, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Raccolte**.

1. (Facoltativo) Per creare una raccolta all’interno di un’altra raccolta, accedi alla gerarchia in cui intendi aggiungere la raccolta. In caso contrario, la raccolta viene creata a livello di radice.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Crea nuova raccolta**.

1. Inserisci un nome per la tua raccolta nel campo **Nome** della finestra di dialogo.
**Nota**  
Se prevedi di creare più gerarchie in questa raccolta, mantieni brevi i nomi delle raccolte. Il percorso assoluto, ossia una stringa che rappresenta la posizione delle raccolte a livello di radice, deve contenere al massimo 256 caratteri. Per ulteriori dettagli, consulta [Etichettatura di raccolte e gruppi di modelli](modelcollections-limitations.md#modelcollections-tagging).

1. (Facoltativo) Per aggiungere gruppi di modelli alla raccolta, procedi come descritto di seguito:

   1. Scegli **Seleziona gruppi di modelli**.

   1. Seleziona i gruppi di modelli da aggiungere. È possibile selezionarne fino a 10.

1. Scegli **Create** (Crea).

1. Verifica che la tua raccolta sia stata creata nella gerarchia corrente. Se non vedi immediatamente la tua nuova raccolta, scegli **Aggiorna**.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Scegli la scheda **Raccolte**.

1. (Facoltativo) Per creare una raccolta all’interno di un’altra raccolta, accedi alla gerarchia in cui intendi aggiungere la raccolta. In caso contrario, la raccolta viene creata a livello di radice.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Crea nuova raccolta**.

1. Inserisci un nome per la tua raccolta nel campo **Nome** della finestra di dialogo.
**Nota**  
Se prevedi di creare più gerarchie in questa raccolta, mantieni brevi i nomi delle raccolte. Il percorso assoluto, ossia una stringa che rappresenta la posizione delle raccolte a livello di radice, deve contenere al massimo 256 caratteri. Per ulteriori dettagli, consulta [Etichettatura di raccolte e gruppi di modelli](modelcollections-limitations.md#modelcollections-tagging).

1. (Facoltativo) Per aggiungere gruppi di modelli alla raccolta, procedi come descritto di seguito:

   1. Scegli **Seleziona gruppi di modelli**.

   1. Seleziona i gruppi di modelli da aggiungere. È possibile selezionarne fino a 10.

1. Scegli **Create** (Crea).

1. Verifica che la tua raccolta sia stata creata nella gerarchia corrente. Se non vedi immediatamente la tua nuova raccolta, scegli **Aggiorna**.

------

# Aggiunta di gruppi di modelli a una raccolta
<a name="modelcollections-add-models"></a>

Puoi aggiungere gruppi di modelli a una collezione nella console Amazon SageMaker Studio. Per aggiungere gruppi di modelli a una raccolta, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Modelli**, se non è già selezionato.

1. Seleziona la casella di controllo accanto ai gruppi di modelli da aggiungere. È possibile selezionare fino a 10 gruppi di modelli. Se ne selezioni più di 10, l'opzione dell'interfaccia utente per aggiungere i gruppi di modelli a una raccolta diventa inattiva.

1. Scegli l’icona con tre puntini verticali accanto a **Crea**, quindi seleziona **Aggiungi alla raccolta**.

1. Seleziona il pulsante di opzione per la raccolta a cui aggiungere i gruppi di modelli selezionati.

1. Scegli **Aggiungi alla raccolta**.

1. Verifica che i tuoi gruppi di modelli siano stati aggiunti alla raccolta. Nella colonna **Raccolte** dei gruppi di modelli selezionati dovresti vedere il nome della raccolta a cui hai aggiunto i gruppi di modelli.

------
#### [ Studio Classic ]

È possibile aggiungere gruppi di modelli a una raccolta dalla scheda **Gruppi di modelli** o **Raccolte**.

Per aggiungere uno o più gruppi di modelli a una raccolta dalla scheda **Raccolte**, completa la seguente procedura:

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Scegli la scheda **Raccolte**.

1. Seleziona la raccolta a cui aggiungere i gruppi di modelli. Se la raccolta desiderata non si trova a livello di radice, accedi alla gerarchia in cui desideri aggiungere i gruppi di modelli.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Aggiungi gruppi di modelli**.

1. Seleziona i gruppi di modelli da aggiungere. È possibile selezionare fino a 10 gruppi di modelli. Se ne selezioni più di 10, l'opzione dell'interfaccia utente per aggiungere i gruppi di modelli a una raccolta diventa inattiva.

1. Scegli **Aggiungi alla raccolta**.

1. Verifica che i tuoi gruppi di modelli siano stati aggiunti alla gerarchia corrente. Se non vedi immediatamente i nuovi gruppi di modelli, scegli **Aggiorna**.

Per aggiungere uno o più gruppi di modelli a una raccolta dalla scheda **Gruppi di modelli**, completa la seguente procedura:

1. Accedi a Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Scegli la scheda **Gruppi di modelli**.

1. Seleziona i gruppi di modelli da aggiungere. È possibile selezionarne fino a 10. Se ne selezioni più di 10, l'opzione dell'interfaccia utente per aggiungere i gruppi di modelli a una raccolta diventa inattiva.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Aggiungi alla raccolta**.

1. Nella finestra di dialogo a comparsa, scegli la posizione del percorso radice `Collections`. Il collegamento alla posizione principale appare sopra la tabella.

1. Passa alla gerarchia che contiene la raccolta di destinazione o al percorso in cui desideri creare una nuova raccolta a cui aggiungere i tuoi modelli.

1. (Facoltativo) Per aggiungere gruppi di modelli a una raccolta esistente, procedi come descritto di seguito:

   1. Seleziona la raccolta di destinazione.

   1. Scegli **Aggiungi alla raccolta**.

1. (Facoltativo) Per aggiungere gruppi di modelli a una nuova raccolta, procedi come descritto di seguito:

   1. Scegli **Nuova raccolta**.

   1. Immetti un nome per la nuova raccolta.

   1. Scegli **Create** (Crea).

------

# Rimozione di gruppi di modelli o raccolte da una raccolta
<a name="modelcollections-remove-models"></a>

Quando rimuovi i gruppi di modelli o le raccolte da una raccolta, li rimuovi da un particolare raggruppamento e non dal registro dei modelli. Puoi rimuovere i gruppi di modelli da una raccolta nella console Amazon SageMaker Studio.

Per rimuovere uno o più gruppi di modelli o raccolte da una raccolta, completa la procedura seguente, a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Raccolte**.

1. Passa alla raccolta che contiene i gruppi di modelli o le raccolte che desideri rimuovere.

1. Seleziona i gruppi di modelli o le raccolte da rimuovere. È possibile selezionarne fino a 10. Se selezioni più di 10 gruppi di modelli o raccolte, l'opzione dell'interfaccia utente per la rimozione diventa inattiva.
**Importante**  
Non è possibile selezionare contemporaneamente gruppi di modelli e raccolte per la rimozione. Per rimuovere sia i gruppi di modelli che le raccolte, rimuovi prima i gruppi di modelli, quindi le raccolte.
**Importante**  
Non è possibile rimuovere raccolte piene. Per rimuovere una raccolta non vuota, rimuovine prima il contenuto.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Rimuovi X elementi dalla raccolta** (dove X è il numero di gruppi di modelli selezionati).

1. Conferma che desideri rimuovere i gruppi di modelli selezionati.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Scegli la scheda **Raccolte**.

1. Passa alla raccolta che contiene i gruppi di modelli o le raccolte che desideri rimuovere.

1. Seleziona i gruppi di modelli o le raccolte da rimuovere. È possibile selezionarne fino a 10. Se selezioni più di 10 gruppi di modelli o raccolte, l'opzione dell'interfaccia utente per la rimozione diventa inattiva.
**Importante**  
Non è possibile selezionare contemporaneamente gruppi di modelli e raccolte per la rimozione. Per rimuovere sia i gruppi di modelli che le raccolte, rimuovi prima i gruppi di modelli, quindi le raccolte.
**Importante**  
Non è possibile rimuovere raccolte piene. Per rimuovere una raccolta non vuota, rimuovine prima il contenuto.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Rimuovi X elementi dalla raccolta** (dove X è il numero di gruppi di modelli selezionati).

1. Conferma che desideri rimuovere i gruppi di modelli selezionati.

------

# Spostamento di un gruppo di modelli tra le raccolte
<a name="modelcollections-move-models"></a>

Puoi spostare uno o più gruppi di modelli da una raccolta all'altra nella console Amazon SageMaker Studio.

Per spostare gruppi di modelli, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Raccolte**.

1. Passa alla raccolta che contiene i gruppi di modelli da spostare.

1. Seleziona i gruppi di modelli da spostare. È possibile selezionarne fino a 10. Se ne selezioni più di 10, l'opzione dell'interfaccia utente per lo spostamento diventa inattiva.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Sposta**.

1. Nella finestra di dialogo, scegli la posizione del percorso radice `Collections`. Il collegamento alla posizione principale appare sopra la tabella.

1. Passa alla gerarchia che contiene la raccolta di destinazione.

1. Seleziona la tua raccolta di destinazione nella tabella.

1. Scegli **Sposta qui**.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Scegli la scheda **Raccolte**.

1. Passa alla raccolta che contiene i gruppi di modelli da spostare.

1. Seleziona i gruppi di modelli da spostare. È possibile selezionarne fino a 10. Se ne selezioni più di 10, l'opzione dell'interfaccia utente per lo spostamento diventa inattiva.

1. Nel menu a discesa **Azioni** in alto a destra, scegli **Sposta**.

1. Nella finestra di dialogo, scegli la posizione del percorso radice `Collections`. Il collegamento alla posizione principale appare sopra la tabella.

1. Passa alla gerarchia che contiene la raccolta di destinazione.

1. Seleziona la tua raccolta di destinazione nella tabella.

1. Scegli **Sposta qui**.

------

# Visualizzazione della raccolta principale di un gruppo di modelli
<a name="modelcollections-view-parent"></a>

Puoi visualizzare le raccolte che contengono un particolare gruppo di modelli nella console Amazon SageMaker Studio.

Per visualizzare le raccolte che contengono un particolare gruppo di modelli, completa la procedura seguente a seconda che utilizzi Studio o Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegliere **Models (Modelli)**.

1. Scegli la scheda **Modelli registrati**, se non è già selezionata.

1. Immediatamente sotto l’etichetta della scheda **Modelli registrati**, scegli **Gruppi di modelli**, se non è già selezionato.

1. Visualizza la colonna **Raccolta** per il tuo gruppo di modelli, che mostra il nome della raccolta che contiene questo gruppo di modelli. Se più raccolte contengono questo gruppo di modelli, scegli la voce della colonna **Raccolta** per visualizzare una finestra a comparsa che elenca le raccolte contenenti il gruppo di modelli.

------
#### [ Studio Classic ]

1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli l’icona **Home** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png) ).

1. Scegli **Modelli**, quindi **Registro dei modelli**.

1. Scegli la scheda **Gruppi di modelli**.

1. Trova il gruppo di modelli nella tabella.

1. Visualizza la colonna **Raccolta** per il tuo gruppo di modelli, che mostra il nome della raccolta che contiene questo gruppo di modelli. Se più raccolte contengono questo gruppo di modelli, scegli la voce della colonna **Raccolta** per visualizzare una finestra a comparsa che elenca le raccolte contenenti il gruppo di modelli.

------

# Vincoli
<a name="modelcollections-limitations"></a>

Durante l'utilizzo delle raccolte, potresti riscontrare problemi relativi ai vincoli di lunghezza dei tag o ai limiti di velocità per le operazioni di raccolta. Consulta il seguente elenco di avvertenze in modo da evitare problemi relativi a queste limitazioni quando lavori con le raccolte.

**Vincoli relativi a VPC**
+ Le raccolte non sono supportate in modalità VPC.

**Vincoli relativi alle operazioni di raccolta**
+ È possibile aggiungere un massimo di 10 gruppi di modelli a una raccolta alla volta.
+ È possibile rimuovere un massimo di 10 gruppi di modelli da una raccolta alla volta.
+ È possibile spostare un massimo di 10 gruppi di modelli da una raccolta a un’altra alla volta.
+ Non è possibile eliminare una raccolta a meno che non sia vuota.
+ Un gruppo di modelli può appartenere a più raccolte, ma una raccolta può appartenere a una sola altra raccolta.

**Vincoli relativi ai tag**
+ Un gruppo di modelli può appartenere a un massimo di 48 raccolte. Per ulteriori dettagli, consulta la seguente sezione [Etichettatura di raccolte e gruppi di modelli](#modelcollections-tagging).
+ Il percorso assoluto di una raccolta può avere una lunghezza massima di 256 caratteri. Poiché i nomi delle raccolte sono specificati dall'utente, è possibile controllare la lunghezza del percorso. Per ulteriori dettagli, consulta la seguente sezione [Etichettatura di raccolte e gruppi di modelli](#modelcollections-tagging).

## Etichettatura di raccolte e gruppi di modelli
<a name="modelcollections-tagging"></a>

Il SageMaker Model Registry utilizza regole e tag per rappresentare internamente i raggruppamenti e la gerarchia delle Collection. È possibile accedere a questi elementi di tag in AWS Resource Access Manager, nell' SageMaker SDK e nel AWS CLI, ma è importante non modificarli o eliminarli.

**Importante**  
Non eliminare o alterare le regole dei tag o i tag che appartengono alle raccolte o ai gruppi di modelli. In caso contrario, non potrai eseguire operazioni di raccolta.

Una regola di tag è una coppia chiave-valore che l' SageMaker IA utilizza per identificare la posizione di una raccolta nella gerarchia. In breve, la chiave è il codice della raccolta principale e il valore è il percorso della raccolta all'interno della gerarchia. SageMaker L'intelligenza artificiale consente che i valori dei tag siano pari o inferiori a 256 caratteri, quindi se disponi di più gerarchie annidate, ti consigliamo di mantenere i nomi delle raccolte brevi.

**Importante**  
Mantieni brevi i nomi delle raccolte. Il percorso assoluto di qualsiasi raccolta deve avere una lunghezza massima di 256 caratteri.

I gruppi di modelli, d'altra parte, non hanno regole per i tag, ma usano i tag. I tag di un gruppo di modelli includono le regole dei tag per tutte le raccolte che contengono il gruppo di modelli. *Ad esempio, se quattro raccolte contengono *model-group-1, model-group-1* ha quattro tag.* SageMaker L'intelligenza artificiale consente a una singola AWS risorsa di avere un massimo di 50 tag. Poiché due sono preallocati per scopi generali, un gruppo di modelli può avere un massimo di 48 tag. In conclusione, un gruppo di modelli può appartenere a un massimo di 48 raccolte.

# Implementazione di modelli nell' SageMaker IA
<a name="model-deploy-mlops"></a>

Dopo aver addestrato e approvato un modello per la produzione, utilizza l' SageMaker intelligenza artificiale per distribuirlo su un endpoint per l'inferenza in tempo reale. SageMaker L'intelligenza artificiale offre diverse opzioni di inferenza in modo da poter scegliere l'opzione più adatta al tuo carico di lavoro. È inoltre possibile configurare l'endpoint scegliendo il tipo di istanza e il numero di istanze necessarie per prestazioni ottimali. Per informazioni dettagliate sull’implementazione di modelli, consulta [Implementa modelli per l'inferenza](deploy-model.md).



Dopo aver distribuito i modelli in produzione, potresti voler trovare nuovi modi per ottimizzare ulteriormente le prestazioni dei modelli, mantenendo al contempo la disponibilità di quelli attuali. Ad esempio, puoi impostare uno shadow test per provare un modello o un'infrastruttura di servizio del modello diverso prima di impegnarti nella modifica. SageMaker L'intelligenza artificiale implementa il nuovo modello, contenitore o istanza in modalità shadow e gli indirizza una copia delle richieste di inferenza in tempo reale all'interno dello stesso endpoint. È possibile registrare le risposte della variante shadow per il confronto. Per i dettagli sullo shadow test, consulta [Test delle copie shadow](shadow-tests.md). Se decidi di procedere e modificare il modello, i guardrail di implementazione ti aiutano a controllare il passaggio dal modello attuale a uno nuovo. È possibile selezionare metodi come blue/green ad esempio testare il processo di spostamento del traffico per mantenere un controllo granulare durante l'aggiornamento. Per ulteriori informazioni sull’implementazione dei guardrail, consulta [Guardrail di implementazione per l’aggiornamento dei modelli in produzione](deployment-guardrails.md).

# SageMaker Model Monitor
<a name="model-monitor-mlops"></a>

Una volta che un modello è in produzione, puoi monitorarne le prestazioni in tempo reale con Amazon SageMaker Model Monitor. Model Monitor ti aiuta a mantenere la qualità del modello rilevando le violazioni delle soglie definite dall'utente per la qualità dei dati e del modello, le deviazioni e la deriva dall'attribuzione delle funzionalità. Inoltre, è possibile configurare gli avvisi in modo da risolvere le violazioni non appena si presentano e avviare tempestivamente la riqualificazione. Model Monitor è integrato con SageMaker Clarify per migliorare la visibilità di potenziali distorsioni. 

Per ulteriori informazioni su SageMaker Model Monitor, consulta. [Monitoraggio della qualità di dati e modelli con Amazon SageMaker Model Monitor](model-monitor.md)

# MLOps Automazione con SageMaker progetti
<a name="sagemaker-projects"></a>

Crea soluzioni end-to-end ML CI/CD utilizzando SageMaker Projects. 

Usa SageMaker Projects per creare una MLOps soluzione per orchestrare e gestire:
+ Creazione di immagini personalizzate per l'elaborazione, l'addestramento e l'inferenza
+ Preparazione dei dati e ingegneria delle funzionalità
+ Addestramento dei modelli
+ Valutazione dei modelli
+ Implementazione dei modelli
+ Monitoraggio e aggiornamento dei modelli

**Topics**
+ [Cos'è un progetto SageMaker AI?](sagemaker-projects-whatis.md)
+ [Concessione delle autorizzazioni di SageMaker Studio necessarie per utilizzare i progetti](sagemaker-projects-studio-updates.md)
+ [Crea un MLOps progetto utilizzando Amazon SageMaker Studio o Studio Classic](sagemaker-projects-create.md)
+ [MLOps Modelli di progetto](sagemaker-projects-templates.md)
+ [Visualizzazione delle risorse di progetto](sagemaker-projects-resources.md)
+ [Aggiornamento di un MLOps progetto in Amazon SageMaker Studio o Studio Classic](sagemaker-projects-update.md)
+ [Eliminare un MLOps progetto utilizzando Amazon SageMaker Studio o Studio Classic](sagemaker-projects-delete.md)
+ [Esplora un MLOps progetto di SageMaker intelligenza artificiale utilizzando repository Git di terze parti](sagemaker-projects-walkthrough-3rdgit.md)

# Cos'è un progetto SageMaker AI?
<a name="sagemaker-projects-whatis"></a>

SageMaker I progetti aiutano le organizzazioni a configurare e standardizzare ambienti di sviluppo per data scientist e sistemi per ingegneri. CI/CD MLOps I progetti aiutano anche le organizzazioni a configurare la gestione delle dipendenze e degli archivi di codice, la riproducibilità delle build e la condivisione degli artefatti.

Puoi effettuare il provisioning SageMaker dei progetti utilizzando modelli personalizzati archiviati in bucket Amazon S3 o utilizzando modelli di o AI AWS Service Catalog . SageMaker Per informazioni sul AWS Service Catalog, vedere [What Is AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/dg/what-is-service-catalog.html). Con SageMaker Projects, MLOps gli ingegneri e gli amministratori dell'organizzazione possono definire i propri modelli o utilizzare modelli forniti dall' SageMaker intelligenza artificiale. I modelli SageMaker forniti dall'intelligenza artificiale avviano il flusso di lavoro ML con il controllo della versione del codice sorgente, pipeline ML automatizzate e un set di codice per iniziare rapidamente a iterare sui casi d'uso del machine learning.

## Quando dovresti usare un progetto di intelligenza artificiale? SageMaker
<a name="sagemaker-projects-when"></a>

**Importante**  
A partire dal 9 settembre 2024, i modelli di progetto che utilizzano il AWS CodeCommit repository non sono più supportati. Per i nuovi progetti, seleziona tra i modelli di progetto disponibili che utilizzano repository Git di terze parti.

Sebbene i notebook siano utili per la creazione e la sperimentazione di modelli, un team di data scientist e ingegneri di machine learning che condividono il codice ha bisogno di un modo più scalabile per mantenere la coerenza del codice e un rigoroso controllo delle versioni.

Ogni organizzazione dispone di una propria serie di standard e pratiche che garantiscono sicurezza e governance per il proprio AWS ambiente. SageMaker L'intelligenza artificiale fornisce una serie di modelli proprietari per le organizzazioni che desiderano iniziare rapidamente a utilizzare flussi di lavoro ML e CI/CD. I modelli includono progetti che utilizzano servizi AWS nativi per CI/CD, come, e. AWS CodeBuild AWS CodePipeline AWS CodeCommit I modelli offrono anche la possibilità di creare progetti che utilizzano strumenti di terze parti, come Jenkins e. GitHub Per un elenco dei modelli di progetto forniti dall' SageMaker IA, consulta[Utilizza modelli di progetto SageMaker forniti dall'intelligenza artificiale](sagemaker-projects-templates-sm.md).

Le organizzazioni spesso hanno bisogno di un controllo rigoroso sulle MLOps risorse che forniscono e gestiscono. Tale responsabilità implica determinate attività, tra cui la configurazione dei ruoli e delle policy IAM, l'applicazione dei tag delle risorse, l'applicazione della crittografia e il disaccoppiamento delle risorse su più account. SageMaker I progetti possono supportare tutte queste attività attraverso offerte di modelli personalizzati in cui le organizzazioni utilizzano CloudFormation modelli per definire le risorse necessarie per un flusso di lavoro ML. I data scientist possono scegliere un modello per avviare e preconfigurare il proprio flusso di lavoro ML.

Per iniziare, ti consigliamo di creare e archiviare modelli personalizzati all'interno di un bucket Amazon S3. In questo modo puoi creare un bucket in qualsiasi regione supportata dalla tua organizzazione. S3 supporta il controllo delle versioni, quindi puoi mantenere più versioni dei tuoi modelli e ripristinarli se necessario. Per informazioni su come creare un progetto dall'archivio di modelli in un bucket Amazon S3, consulta. [Utilizzo di un modello da un bucket Amazon S3](sagemaker-projects-templates-custom.md#sagemaker-projects-templates-s3)

In alternativa, puoi anche creare modelli personalizzati come prodotti Service Catalog e puoi eseguirne il provisioning nell'interfaccia utente di Studio o Studio Classic in **Organization Templates**. Il Service Catalog è un servizio che aiuta le organizzazioni a creare e gestire cataloghi di prodotti approvati per l'uso su AWS. Per ulteriori informazioni sulla creazione di modelli personalizzati, consulta [Build Custom SageMaker AI Project Templates — Best Practices](https://aws.amazon.com/blogs/machine-learning/build-custom-sagemaker-project-templates-best-practices/).

Sebbene sia possibile utilizzare entrambe le opzioni, ti consigliamo di utilizzare i bucket S3 sul Service Catalog, in modo da poter creare un bucket nelle regioni supportate in cui l' SageMaker intelligenza artificiale è disponibile senza dover gestire le complessità del Service Catalog.

SageMaker I progetti possono aiutarti a gestire i tuoi repository Git in modo da poter collaborare in modo più efficiente tra i team, garantire la coerenza del codice e supportare CI/CD. SageMaker I progetti possono aiutarti nelle seguenti attività:
+ Organizza tutte le entità del ciclo di vita ML in un unico progetto.
+ Stabilisci un approccio con un solo clic per configurare un'infrastruttura ML standard per l’addestramento e l'implementazione di modelli che incorpori le migliori pratiche.
+ Crea e condividi modelli per l'infrastruttura ML per soddisfare diversi casi d'uso.
+ Sfrutta i modelli predefiniti SageMaker forniti dall'intelligenza artificiale per iniziare rapidamente a concentrarti sulla creazione di modelli o crea modelli personalizzati con risorse e linee guida specifiche dell'organizzazione.
+ Esegui l'integrazione con gli strumenti di tua scelta estendendo i modelli di progetto. Per un esempio, consulta [Creare un progetto di SageMaker intelligenza artificiale da integrare con e Pipelines](https://aws.amazon.com/blogs/machine-learning/build-mlops-workflows-with-amazon-sagemaker-projects-gitlab-and-gitlab-pipelines/). GitLab GitLab
+ Organizza tutte le entità del ciclo di vita ML in un unico progetto.

## Cosa c'è in un progetto di SageMaker intelligenza artificiale?
<a name="sagemaker-projects-within"></a>

I clienti dispongono della flessibilità necessaria per configurare i propri progetti con le risorse più adatte al loro caso d'uso. L'esempio seguente mostra la MLOps configurazione di un flusso di lavoro ML, inclusi l'addestramento e l'implementazione dei modelli.

![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/projects/projects-ml-workflow.png)


Un progetto tipico con un modello SageMaker fornito dall'intelligenza artificiale potrebbe includere quanto segue:
+ Uno o più repository con codice di esempio per creare e distribuire soluzioni ML. Questi sono esempi funzionanti che puoi modificare in base alle tue esigenze. Il proprietario di questo codice può sfruttare i repository soggetti al controllo delle versioni per le proprie attività.
+ Una pipeline di SageMaker intelligenza artificiale che definisce i passaggi per la preparazione dei dati, la formazione, la valutazione del modello e l'implementazione del modello, come illustrato nel diagramma seguente.  
![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/projects/pipeline-in-project-simple.png)
+ Una pipeline CodePipeline o Jenkins che esegue la pipeline di SageMaker intelligenza artificiale ogni volta che si archivia una nuova versione del codice. [Per informazioni su CodePipeline, consulta What is. AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) Per informazioni su Jenkins, consulta la [documentazione per l’utente di Jenkins](https://www.jenkins.io/doc/).
+ Un gruppo di modelli che contiene le versioni del modello. Ogni volta che approvi la versione del modello risultante dall'esecuzione di una pipeline di SageMaker intelligenza artificiale, puoi distribuirla su un SageMaker endpoint di intelligenza artificiale.

Ogni progetto di SageMaker intelligenza artificiale ha un nome e un ID univoci che vengono applicati come tag a tutta l' SageMaker intelligenza artificiale e alle AWS risorse create nel progetto. Con il nome e l'ID, è possibile visualizzare tutte le entità associate al progetto. Ciò include:
+ Pipelines
+ Modelli registrati
+ Modelli distribuiti (endpoint)
+ Set di dati
+ Prodotti del catalogo di servizio
+ CodePipeline e oleodotti Jenkins
+ CodeCommit e repository Git di terze parti

## Devo creare un progetto per utilizzare SageMaker AI Pipelines?
<a name="sagemaker-projects-need"></a>

No. SageMaker le pipeline sono entità autonome, proprio come i lavori di formazione, i lavori di elaborazione e altri lavori di SageMaker intelligenza artificiale. Puoi creare, aggiornare ed eseguire pipeline direttamente all'interno di un notebook utilizzando SageMaker Python SDK senza utilizzare SageMaker un progetto AI.

I progetti forniscono un livello aggiuntivo per aiutarti a organizzare il codice e adottare le migliori pratiche operative, necessarie per un sistema di qualità della produzione.

# Concessione delle autorizzazioni di SageMaker Studio necessarie per utilizzare i progetti
<a name="sagemaker-projects-studio-updates"></a>

L'amministratore di Amazon SageMaker Studio (o Studio Classic) e gli utenti di Studio (o Studio Classic) che aggiungi al tuo dominio possono visualizzare i modelli di progetto forniti dall' SageMaker intelligenza artificiale e creare progetti con tali modelli. Per impostazione predefinita, l'amministratore può visualizzare i modelli SageMaker AI nella console Service Catalog. L'amministratore può vedere cosa crea un altro utente se l'utente è autorizzato a utilizzare SageMaker Projects. L'amministratore può anche visualizzare il CloudFormation modello definito dai modelli di progetto SageMaker AI nella console Service Catalog. Per informazioni sull'utilizzo della console del catalogo di servizio, consulta [Cos’è il catalogo di servizio?](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) nella *guida per l’utente al catalogo di servizio*.

Gli utenti Studio (e Studio Classic) del dominio che sono configurati per utilizzare lo stesso ruolo di esecuzione del dominio per impostazione predefinita sono autorizzati a creare progetti utilizzando modelli di progetto SageMaker AI.

**Importante**  
Non creare manualmente i ruoli. Crea sempre ruoli tramite le **Impostazioni di Studio** seguendo le fasi descritte di seguito.

Per gli utenti che utilizzano ruoli diversi dal ruolo di esecuzione del dominio per visualizzare e utilizzare i modelli di progetto SageMaker forniti dall'intelligenza artificiale, devi concedere le autorizzazioni di **Projects** ai singoli profili utente attivando Abilita i modelli di **progetto Amazon SageMaker AI e gli utenti Amazon SageMaker JumpStart** for Studio quando li aggiungi al tuo dominio. Per ulteriori informazioni su questa fase, consultare [Aggiunta di profili utente](domain-user-profile-add.md). 

Poiché SageMaker Projects è supportato da Service Catalog, devi aggiungere ogni ruolo che richiede l'accesso a SageMaker Projects al portafoglio di **prodotti Amazon SageMaker AI Solutions e ML Ops** nel catalogo dei servizi. Puoi eseguire questa operazione nella scheda **Gruppi, ruoli e utenti**, come illustrato nella seguente immagine. Se ogni profilo utente in Studio Classic ha un ruolo diverso, devi aggiungere ciascuno di questi ruoli al Catalogo dei servizi. Questa operazione può essere eseguita anche durante la creazione di un profilo utente in Studio Classic.

## Concessione dell’accesso ai progetti per i nuovi ruoli del dominio
<a name="sagemaker-projects-grant-access"></a>

Quando modifichi il ruolo di esecuzione del tuo dominio o aggiungi profili utente con ruoli diversi, devi concedere a questi nuovi ruoli l'accesso al portfolio Service Catalog per utilizzare SageMaker Projects. Segui questa procedura per garantire che tutti i ruoli abbiano le autorizzazioni necessarie:

**Per concedere l’accesso ai progetti per i nuovi ruoli di dominio**

1. Apri la [console Catalogo dei servizi](https://console.aws.amazon.com/servicecatalog/).

1. Dal menu di navigazione a sinistra, scegli **Portfolio**.

1. Seleziona la sezione **Importato**.

1. Seleziona **prodotti Amazon SageMaker Solutions e ML Ops**.

1. Scegliere la scheda **Accesso**.

1. Selezionare **Grant access (Concedi accesso)**.

1. Nella finestra di dialogo **Concedi l’accesso**, seleziona **Ruoli**.

1. Concedi l’accesso a tutti i ruoli utilizzati dai profili utente del dominio, tra cui:
   + Il ruolo di esecuzione del dominio
   + Qualsiasi ruolo di esecuzione personalizzato assegnato ai singoli profili utente

1. Scegli **Concedi l’accesso** per confermare.

**Importante**  
Devi completare questo processo ogni volta che modifichi il ruolo di esecuzione del dominio o aggiungi profili utente con nuovi ruoli di esecuzione. Senza questo accesso, gli utenti non saranno in grado di creare o utilizzare SageMaker progetti.

Le procedure seguenti mostrano come concedere le autorizzazioni per **Progetti** dopo l’onboarding in Studio o Studio Classic. Per ulteriori informazioni sull’onboarding in Studio o Studio Classic, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

**Per confermare che il tuo dominio SageMaker AI dispone di autorizzazioni attive per i modelli di progetto:**

1. Apri la [console SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. Nel riquadro di navigazione a sinistra, scegli **Configurazioni admin**.

1. In **Configurazioni di amministrazione**, scegli **Domini**. 

1. Scegli il tuo dominio.

1. Scegli la scheda **Impostazioni del dominio**.

1. In **SageMaker Progetti e JumpStart**, assicurati che le seguenti opzioni siano attivate:
   + **Abilita i modelli di progetto Amazon SageMaker AI e Amazon SageMaker JumpStart per questo account**
   + **Abilita i modelli di progetto Amazon SageMaker AI e gli utenti di Amazon SageMaker JumpStart for Studio**

**Per visualizzare l'elenco dei ruoli:**

1. Apri la [console SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. Nel riquadro di navigazione a sinistra, scegli **Configurazioni admin**.

1. In **Configurazioni di amministrazione**, scegli **Domini**. 

1. Scegli il tuo dominio.

1. Scegli la scheda **Impostazioni del dominio**.

1. Un elenco dei tuoi ruoli viene visualizzato nella scheda `Apps` sotto la scheda **Studio**.
**Importante**  
A partire dal 25 luglio, sono necessari ruoli aggiuntivi per utilizzare i modelli di progetto. Si riporta l'elenco completo dei ruoli che dovresti vedere in `Projects`:  
`AmazonSageMakerServiceCatalogProductsLaunchRole` `AmazonSageMakerServiceCatalogProductsUseRole` `AmazonSageMakerServiceCatalogProductsApiGatewayRole` `AmazonSageMakerServiceCatalogProductsCloudformationRole` `AmazonSageMakerServiceCatalogProductsCodeBuildRole` `AmazonSageMakerServiceCatalogProductsCodePipelineRole` `AmazonSageMakerServiceCatalogProductsEventsRole` `AmazonSageMakerServiceCatalogProductsFirehoseRole` `AmazonSageMakerServiceCatalogProductsGlueRole` `AmazonSageMakerServiceCatalogProductsLambdaRole` `AmazonSageMakerServiceCatalogProductsExecutionRole`  
Per una descrizione di questi ruoli, consulta [AWS Politiche gestite per SageMaker progetti e JumpStart](security-iam-awsmanpol-sc.md).

# Crea un MLOps progetto utilizzando Amazon SageMaker Studio o Studio Classic
<a name="sagemaker-projects-create"></a>

**Importante**  
Le politiche IAM personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L’autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic applicano automaticamente tag a tutte le risorse che creano. Se una policy IAM consente a Studio e Studio Classic di creare risorse ma non consente l'etichettatura, possono verificarsi errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta [Fornisci le autorizzazioni per etichettare SageMaker le risorse AI](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md)che danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Questa procedura dimostra come creare un MLOps progetto utilizzando Amazon SageMaker Studio Classic.

**Prerequisiti**
+ Un account IAM o Centro identità IAM per accedere a Studio o Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).
+ Autorizzazione a utilizzare modelli di progetto SageMaker forniti dall'intelligenza artificiale. Per ulteriori informazioni, consulta [Concessione delle autorizzazioni di SageMaker Studio necessarie per utilizzare i progetti](sagemaker-projects-studio-updates.md).
+ Familiarità di base con l’interfaccia utente di Studio Classic. Per ulteriori informazioni, consulta [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Implementazioni**, quindi seleziona **Progetti**.

1. Nell’angolo in alto a destra sopra l’elenco dei progetti, scegli **Crea progetto**.

1. Nella pagina **Modelli**, scegli un modello da utilizzare per il progetto. Per ulteriori informazioni sui modelli di progetto, consulta [MLOps Modelli di progetto](sagemaker-projects-templates.md).

1. Scegli **Next (Successivo)**.

1. Nella pagina **Dettagli del progetto**, immetti le informazioni seguenti:
   + **Nome**: un nome per il progetto.
   + **Descrizione**: una descrizione facoltativa per il progetto.
   + I valori per i parametri di provisioning del Catalogo dei servizi relativi al modello scelto.

1. Scegli **Crea progetto** e attendi che il progetto appaia nell'elenco **Progetti**.

1. (Facoltativo) Nella barra laterale di Studio, scegli **Pipeline** per visualizzare la pipeline creata dal tuo progetto. Per ulteriori informazioni su Pipelines, consulta [Pipelines](pipelines.md).

------
#### [ Studio Classic ]

1. Accedi a Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**.

1. Seleziona **Crea progetto**.

   Viene visualizzata la scheda **Crea progetto** con un elenco di modelli disponibili.

1. Se non è già selezionato, scegli i **modelli SageMaker AI**. Per ulteriori informazioni sui modelli di progetto, consulta [MLOps Modelli di progetto](sagemaker-projects-templates.md).

1. Scegli il modello **Creazione, addestramento e implementazione dei modelli**.

1. Scegli **Seleziona modello di progetto**.

   La scheda **Crea progetto** cambia, visualizzando **Dettagli del progetto**.

1. Immetti le seguenti informazioni:
   + Per **Dettagli del progetto**, inserisci un nome e una descrizione per il progetto.
   + Se lo desideri, aggiungi tag, ossia coppie chiave-valore che puoi utilizzare per tracciare i progetti.

1. Scegli **Crea progetto** e attendi che il progetto appaia nell'elenco **Progetti**.

------

# MLOps Modelli di progetto
<a name="sagemaker-projects-templates"></a>

Un modello di progetto Amazon SageMaker AI automatizza la configurazione e l'implementazione MLOps dei tuoi progetti. Un modello di progetto SageMaker AI è un prodotto Service Catalog che l' SageMaker intelligenza artificiale mette a disposizione degli utenti di Amazon SageMaker Studio (o Studio Classic). Questi prodotti Service Catalog sono visibili nella tua console Service Catalog dopo aver abilitato le autorizzazioni quando esegui l'onboarding o l'aggiornamento di Amazon SageMaker Studio (o Studio Classic). Per informazioni sull'attivazione delle autorizzazioni per l'uso dei modelli di progetto SageMaker AI, consulta. [Concessione delle autorizzazioni di SageMaker Studio necessarie per utilizzare i progetti](sagemaker-projects-studio-updates.md) Usa i modelli di progetto SageMaker AI per creare un progetto che sia una end-to-end MLOps soluzione.

Puoi utilizzare un modello SageMaker Projects per implementare la creazione CI/CD. With this template, you can automate the CI/CD di immagini create e inviate ad Amazon ECR. Le modifiche ai file del container nei repository di controllo del codice sorgente del progetto avviano la pipeline ML e distribuiscono la versione più recente per il container. Per ulteriori informazioni, consulta il blog [Create Amazon SageMaker Projects with image building CI/CD pipeline.](https://aws.amazon.com/blogs/machine-learning/create-amazon-sagemaker-projects-with-image-building-ci-cd-pipelines/)

Se sei un amministratore, puoi creare modelli di progetto personalizzati partendo da zero o modificare uno dei modelli di progetto forniti da SageMaker AI. Gli utenti di Studio (o Studio Classic) dell’organizzazione possono utilizzare questi modelli di progetto personalizzati per creare i propri progetti.

**Topics**
+ [Utilizza modelli di progetto SageMaker forniti dall'intelligenza artificiale](sagemaker-projects-templates-sm.md)
+ [Crea modelli di progetto personalizzati](sagemaker-projects-templates-custom.md)

# Utilizza modelli di progetto SageMaker forniti dall'intelligenza artificiale
<a name="sagemaker-projects-templates-sm"></a>

**Importante**  
A partire dal 28 ottobre 2024, i AWS CodeCommit modelli sono stati rimossi. Per i nuovi progetti, seleziona tra i modelli di progetto disponibili che utilizzano repository Git di terze parti.

Amazon SageMaker AI fornisce modelli di progetto che creano l'infrastruttura necessaria per creare una MLOps soluzione per l'integrazione continua e la distribuzione continua (CI/CD) dei modelli ML. Utilizza questi modelli per elaborare dati, estrarre funzionalità, addestrare e testare modelli, registrare i modelli nel SageMaker Model Registry e distribuire i modelli per l'inferenza. È possibile personalizzare il codice iniziale e i file di configurazione in base alle proprie esigenze.

**Nota**  
Sono necessari ruoli aggiuntivi per utilizzare i modelli di progetto. Per un elenco completo dei ruoli richiesti e le istruzioni su come crearli, consulta [Concessione delle autorizzazioni di SageMaker Studio necessarie per utilizzare i progetti](sagemaker-projects-studio-updates.md). Se non disponi dei nuovi ruoli, riceverai il messaggio di errore **non CodePipeline è autorizzato a eseguire AssumeRole sul ruolo arn:aws:iam: :xxx: role/service-role/AmazonSageMakerServiceCatalogProductsCodePipelineRole** quando tenti di creare un nuovo progetto e non riesci a procedere.

SageMaker I modelli di progetto AI offrono la seguente scelta di archivi di codice, strumenti di automazione del flusso di lavoro e fasi della pipeline:
+ Archivio di **codice: repository** Git di terze parti come Bitbucket GitHub 
+ Automazione **del flusso di lavoro CI/CD: o Jenkins** AWS CodePipeline 
+ **Fasi della pipeline**: creazione e addestramento del modello, implementazione del modello o entrambi

La discussione seguente fornisce una panoramica di ogni modello che puoi scegliere quando crei il tuo SageMaker progetto di intelligenza artificiale. È inoltre possibile visualizzare i modelli disponibili in Studio (o Studio Classic) seguendo la sezione [Creazione del progetto](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-walkthrough.html#sagemaker-proejcts-walkthrough-create) della [guida sui progetti](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-walkthrough.html).

Per step-by-step istruzioni su come creare un progetto reale, puoi seguire una delle procedure dettagliate del progetto:
+ Se desideri usare il modello [MLOps modelli per la creazione, la formazione e l'implementazione di modelli con Git di terze parti utilizzando CodePipeline](#sagemaker-projects-templates-git-code-pipeline), consulta [Esplora un MLOps progetto di SageMaker intelligenza artificiale utilizzando repository Git di terze parti](sagemaker-projects-walkthrough-3rdgit.md).
+ Se desideri utilizzare il modello[MLOps modelli per la creazione, la formazione e la distribuzione di modelli con repository Git di terze parti che utilizzano Jenkins](#sagemaker-projects-templates-git-jenkins), consulta [Creare SageMaker progetti Amazon utilizzando il controllo del codice sorgente di terze parti e Jenkins](https://aws.amazon.com/blogs/machine-learning/create-amazon-sagemaker-projects-using-third-party-source-control-and-jenkins/).

**Topics**

## MLOps modelli per la creazione, la formazione e l'implementazione di modelli con Git di terze parti utilizzando CodePipeline
<a name="sagemaker-projects-templates-git-code-pipeline"></a>
+ **Repository di codice**: Git di terze parti.
**Nota**  
Stabilisci la AWS CodeStar connessione dal tuo AWS account all' GitHub utente o all'organizzazione. Aggiungi un tag con la chiave `sagemaker` e il valore `true` a questa AWS CodeStar connessione.
+ Automazione del **flusso di lavoro CI/CD**: AWS CodePipeline

### Creazione e addestramento dei modelli
<a name="sagemaker-projects-templates-git-code-pipeline-building-training"></a>

Questo modello fornisce le seguenti risorse:
+ Associazioni con uno o più repository Git specificati dal cliente. Il repository contiene codice di esempio che crea una pipeline Amazon SageMaker AI in codice Python e mostra come creare e aggiornare la pipeline AI. SageMaker Questo repository contiene anche un notebook Python di esempio che puoi aprire ed eseguire in Studio (o Studio Classic).
+ Una AWS CodePipeline pipeline con passaggi di origine e compilazione. La fase di origine punta al repository Git di terze parti. La fase di compilazione ottiene il codice da quel repository, crea e aggiorna la pipeline SageMaker AI, avvia l'esecuzione di una pipeline e attende il completamento dell'esecuzione della pipeline.
+ Un AWS CodeBuild progetto per popolare i repository Git con le informazioni sul codice seed. Ciò richiede una AWS CodeStar connessione dal tuo Account AWS al tuo account sull'host del repository Git.
+ Viene eseguito un bucket Amazon S3 per archiviare gli artefatti, inclusi gli artefatti CodePipeline e tutti gli CodeBuild artefatti generati dalla pipeline di intelligenza artificiale. SageMaker 

### Implementazione di modelli
<a name="sagemaker-projects-templates-git-code-pipeline-deployment"></a>

Questo modello fornisce le seguenti risorse:
+ Associazioni con uno o più repository Git specificati dal cliente. Il repository contiene codice di esempio per implementare i modelli negli endpoint in ambienti di staging e produzione.
+ Una AWS CodePipeline pipeline con origine, build e passaggi. deploy-to-staging deploy-to-production La fase di origine punta al repository Git di terze parti e la fase di compilazione ottiene il codice da quel repository e genera CloudFormation stack da distribuire. Le deploy-to-production fasi deploy-to-staging successive distribuiscono gli CloudFormation stack nei rispettivi ambienti. Esiste una fase di approvazione manuale tra la fase di preparazione e quella di produzione, in modo che un MLOps tecnico debba approvare il modello prima che venga distribuito in produzione.
+ Un AWS CodeBuild progetto per popolare i repository Git con le informazioni sul codice seed. Ciò richiede una AWS CodeStar connessione dal tuo Account AWS al tuo account sull'host del repository Git.
+ Viene eseguito un bucket Amazon S3 per archiviare gli artefatti, inclusi gli artefatti CodePipeline e tutti gli CodeBuild artefatti generati dalla pipeline di intelligenza artificiale. SageMaker 

### Creazione, addestramento e implementazione dei modelli
<a name="sagemaker-projects-templates-git-code-pipeline-building-training-deployment"></a>

Questo modello fornisce le seguenti risorse:
+ Associazioni con uno o più repository Git specificati dal cliente.
+ Una AWS CodePipeline pipeline con origine deploy-to-staging, build e deploy-to-production passaggi. La fase di origine punta al repository Git di terze parti, mentre la fase di creazione ottiene il codice da tale repository e genera stack CloudFormation da implementare. I deploy-to-production passaggi deploy-to-staging e distribuiscono gli CloudFormation stack nei rispettivi ambienti. Esiste una fase di approvazione manuale tra la fase di preparazione e quella di produzione, in modo che un MLOps tecnico debba approvare il modello prima che venga distribuito in produzione.
+ Un AWS CodeBuild progetto per popolare i repository Git con le informazioni sul codice seed. Ciò richiede una AWS CodeStar connessione dal tuo AWS account al tuo account sull'host del repository Git.
+ Viene eseguito un bucket Amazon S3 per archiviare gli artefatti, inclusi gli artefatti CodePipeline e tutti gli CodeBuild artefatti generati dalla pipeline di intelligenza artificiale. SageMaker 

Come accennato in precedenza, consulta la [guida dettagliata sui progetti usando repository Git di terze parti](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-walkthrough-3rdgit.html) per una dimostrazione che utilizza questo modello per creare un progetto reale.

## MLOps modello per la creazione di modelli, la formazione, la distribuzione e l'utilizzo di Amazon SageMaker Model Monitor CodePipeline
<a name="sagemaker-projects-template-model-monitor"></a>
+ **Repository di codice**: Git di terze parti.
**Nota**  
Stabilisci la AWS CodeStar connessione dal tuo AWS account all' GitHub utente o all'organizzazione. Aggiungi un tag con la chiave `sagemaker` e il valore `true` a questa AWS CodeStar connessione.
+ Automazione del **flusso di lavoro CI/CD**: AWS CodePipeline

I seguenti modelli includono un SageMaker modello Amazon Model Monitor aggiuntivo che fornisce i seguenti tipi di monitoraggio:
+ [Qualità dei dati](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-quality.html): monitora le variazioni della qualità dei dati.
+ [Qualità del modello](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality.html): monitora le variazioni delle metriche di qualità del modello, come la precisione.
+ [Deriva dei bias per i modelli in produzione](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-model-monitor-bias-drift.html): monitora i bias nelle previsioni di un modello.

### Creazione di modelli, formazione, implementazione e Amazon SageMaker Model Monitor
<a name="sagemaker-projects-template-model-monitor-training-deployment-model-monitor"></a>

Questo modello è un'estensione del MLOps modello per la creazione, la formazione e la distribuzione di modelli utilizzando CodePipeline repository Git. Include sia i componenti per la creazione del modello, la formazione e la distribuzione del modello, sia un SageMaker modello Amazon Model Monitor aggiuntivo che fornisce i seguenti tipi di monitoraggio: 

### Monitoraggio di un modello implementato
<a name="sagemaker-projects-template-model-monitor-deploy"></a>

Puoi utilizzare questo modello per una MLOps soluzione per implementare uno o più monitor Amazon SageMaker AI per la qualità dei dati, la qualità del modello, la distorsione dei modelli e la spiegabilità dei modelli per monitorare un modello distribuito su un endpoint di inferenza AI. SageMaker Questo modello fornisce le seguenti risorse: 
+ Associazioni con uno o più repository Git specificati dal cliente. Il repository contiene codice Python di esempio che ottiene [le](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) linee di base utilizzate dai monitor dall' SageMaker Amazon Model Registry e aggiorna i parametri del modello per gli ambienti di staging e produzione. Contiene anche un CloudFormation modello per creare Amazon SageMaker Model Monitor.
+ Una AWS CodePipeline pipeline con fasi di origine, compilazione e distribuzione. La fase di origine rimanda al repository. CodePipeline La fase di creazione recupera il codice da quel repository, ottiene il riferimento dal registro dei modelli e aggiorna i parametri del modello per gli ambienti di staging e di produzione. Le fasi di implementazione implementano i monitor configurati negli ambienti di staging e di produzione. La fase di approvazione manuale, all'interno della `DeployStaging` fase, richiede di verificare che l'endpoint dell' SageMaker IA di produzione sia attivo `InService` prima dell'approvazione e del passaggio alla fase. `DeployProd`
+ Un AWS CodeBuild progetto per popolare i repository Git con le informazioni sul codice seed. Ciò richiede una AWS CodeStar connessione dal tuo Account AWS al tuo account sull'host del repository Git.
+ Il modello utilizza lo stesso bucket Amazon S3 creato dal MLOps modello per la creazione, la formazione e la distribuzione del modello per archiviare gli output dei monitor.
+ Due regole di Amazon EventBridge Events avviano Amazon SageMaker Model Monitor AWS CodePipeline ogni volta che l'endpoint di staging SageMaker AI viene aggiornato.

## MLOps modelli per la creazione, la formazione e la distribuzione di modelli con repository Git di terze parti che utilizzano Jenkins
<a name="sagemaker-projects-templates-git-jenkins"></a>
+ **Repository di codice**: Git di terze parti.
**Nota**  
Stabilisci la AWS CodeStar connessione dal tuo AWS account all' GitHub utente o all'organizzazione. Aggiungi un tag con la chiave `sagemaker` e il valore `true` a questa AWS CodeStar connessione.
+ **Automazione del flusso di lavoro CI/CD**: Jenkins

### Creazione, addestramento e implementazione dei modelli
<a name="sagemaker-projects-templates-git-jenkins-building-training-deployment"></a>

Questo modello fornisce le seguenti risorse:
+ Associazioni con uno o più repository Git specificati dal cliente.
+ Codice iniziale per generare pipeline Jenkins con codice sorgente deploy-to-staging, build e deploy-to-production step. La fase di origine punta al repository Git specificato dal cliente. La fase di compilazione ottiene il codice da quel repository e genera due stack. CloudFormation Le fasi di distribuzione distribuiscono gli CloudFormation stack nei rispettivi ambienti. Esiste una fase di approvazione tra la fase di preparazione e quella di produzione.
+ Un AWS CodeBuild progetto per popolare i repository Git con le informazioni sul codice seed. Ciò richiede una AWS CodeStar connessione dal tuo AWS account al tuo account sull'host del repository Git.
+ Un bucket Amazon S3 per archiviare gli elementi del progetto di intelligenza artificiale e della pipeline di SageMaker intelligenza artificiale. SageMaker 

Il modello crea l'associazione tra il tuo progetto e gli archivi di controllo del codice sorgente, ma devi eseguire passaggi manuali aggiuntivi per stabilire la comunicazione tra il tuo account e Jenkins. AWS Per i passaggi dettagliati, consulta [Creare SageMaker progetti Amazon utilizzando il controllo del codice sorgente di terze parti e Jenkins](https://aws.amazon.com/blogs/machine-learning/create-amazon-sagemaker-projects-using-third-party-source-control-and-jenkins/).

Le istruzioni ti aiutano a creare l'architettura mostrata nel diagramma seguente, utilizzata GitHub come repository per il controllo del codice sorgente in questo esempio. Come mostrato, stai collegando il tuo repository Git al progetto per controllare e gestire le versioni del codice. Jenkins avvia la pipeline di compilazione del modello quando rileva modifiche al codice di compilazione del modello nel repository Git. Stai anche collegando il progetto a Jenkins per orchestrare le fasi di distribuzione del modello, che iniziano quando approvi il modello registrato nel registro dei modelli o quando Jenkins rileva modifiche al codice di distribuzione del modello stesso.



![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/projects/projects-templates-gitjenkins.png)


In sintesi, attraverso queste fasi potrai completare le seguenti attività:

1. Stabilisci la connessione tra i tuoi account AWS . GitHub 

1. Creare l'account Jenkins e importa i plugin necessari.

1. Creare la policy di utenti e autorizzazioni Jenkins IAM.

1. Imposta AWS le credenziali per l'utente Jenkins IAM sul tuo server Jenkins.

1. Creare un token API per la comunicazione con il server Jenkins.

1. Utilizza un CloudFormation modello per impostare una EventBridge regola per monitorare il registro dei modelli per i modelli appena approvati.

1. Crea il progetto di SageMaker intelligenza artificiale, che semplifica i tuoi GitHub repository con codice di creazione e distribuzione del modello.

1. Creare la pipeline di compilazione del modello Jenkins con il codice iniziale di compilazione del modello.

1. Creare la pipeline di distribuzione del modello Jenkins con il codice iniziale di distribuzione del modello.

## MLOps modello per la creazione di immagini, la creazione di modelli e l'implementazione di modelli
<a name="sagemaker-projects-templates-image-building-model-building-deployment"></a>

Questo modello è un'estensione di [MLOps modelli per la creazione, la formazione e l'implementazione di modelli con Git di terze parti utilizzando CodePipeline](#sagemaker-projects-templates-git-code-pipeline). Include sia i componenti per la creazione, l’addestramento e l’implementazione dei modelli, sia le seguenti opzioni:
+ Includi immagine di elaborazione/pipeline di creazione
+ Includi immagine di addestramento/pipeline di creazione
+ Includi immagine di inferenza/pipeline di creazione

Per ciascuno dei componenti selezionati durante la creazione del progetto, utilizzando il modello vengono creati i seguenti componenti:
+ Repository Amazon ECR
+ [Un' SageMaker immagine](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateImage.html)
+ Un CodeCommit repository contenente un Dockerfile che puoi personalizzare
+ A CodePipeline che viene avviato dalle modifiche al repository CodePipeline 
+ Un CodeBuild progetto che crea un'immagine Docker e la registra nel repository Amazon ECR
+ Una EventBridge regola che avvia la pianificazione CodePipeline 

Quando CodePipeline viene avviato, crea un nuovo contenitore Docker e lo registra in un repository Amazon ECR. Quando un nuovo contenitore viene registrato nel repository Amazon ECR, ne `ImageVersion` viene aggiunto uno nuovo all' SageMaker immagine. Questo avvia la pipeline di creazione del modello che, a sua volta, avvia la pipeline di distribuzione.

L'immagine appena creata viene utilizzata nelle parti del flusso di lavoro relative alla creazione, all’addestramento e all’implementazione di modelli, ove applicabile.

## Aggiorna SageMaker i progetti per utilizzare repository Git di terze parti
<a name="sagemaker-projects-templates-update"></a>

La policy gestita collegata al ruolo `AmazonSageMakerServiceCatalogProductsUseRole` è stata aggiornata il 27 luglio 2021 per essere utilizzata con i modelli Git di terze parti. Gli utenti che effettuano l'accesso ad Amazon SageMaker Studio (o Studio Classic) dopo questa data e abilitano i modelli di progetto utilizzano la nuova politica. Gli utenti che hanno effettuato l'onboarding prima di questa data devono aggiornare la policy per utilizzare questi modelli. Per aggiornare la policy, utilizza una delle seguenti opzioni:
+ Eliminazione del ruolo e attivazione/disattivazione delle impostazioni di Studio (o Studio Classic)

  1. Nella console IAM, elimina `AmazonSageMakerServiceCatalogProductsUseRole`.

  1. Nel pannello di controllo di Studio (o Studio Classic), scegli **Modifica impostazioni**.

  1. Attiva/disattiva entrambe le impostazioni, quindi scegli **Invia**.
+ Nella console IAM, aggiungi le seguenti autorizzazioni a `AmazonSageMakerServiceCatalogProductsUseRole`:

  ```
  {
        "Effect": "Allow",
        "Action": [
            "codestar-connections:UseConnection"
        ],
        "Resource": "arn:aws:codestar-connections:*:*:connection/*",
        "Condition": {
            "StringEqualsIgnoreCase": {
                "aws:ResourceTag/sagemaker": "true"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:PutObjectAcl"
        ],
        "Resource": [
            "arn:aws:s3:::sagemaker-*"
        ]
    }
  ```

# Crea modelli di progetto personalizzati
<a name="sagemaker-projects-templates-custom"></a>

**Importante**  
A partire dal 28 ottobre 2024, i AWS CodeCommit modelli sono stati rimossi. Per i nuovi progetti, seleziona tra i modelli di progetto disponibili che utilizzano repository Git di terze parti. Per ulteriori informazioni, consulta [MLOps Modelli di progetto](sagemaker-projects-templates.md).

Se i modelli SageMaker forniti dall'intelligenza artificiale non soddisfano le tue esigenze (ad esempio, desideri un'orchestrazione più complessa CodePipeline con più fasi o passaggi di approvazione personalizzati), crea i tuoi modelli.

Ti consigliamo di iniziare a utilizzare i modelli SageMaker forniti dall'intelligenza artificiale per capire come organizzare il codice e le risorse e utilizzarli come base. **Per fare ciò, dopo aver abilitato l'accesso dell'amministratore SageMaker ai modelli di intelligenza artificiale, accedi a, scegli **Portfolio [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)**, quindi scegli Importati.** Per informazioni sul catalogo servizi, consulta [Panoramica del catalogo servizi](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html) nella *Guida per l’utente al catalogo servizi*.

Crea i tuoi modelli di progetto per personalizzare il tuo MLOps progetto. SageMaker I modelli di progetto AI sono prodotti forniti da Service Catalog per fornire le risorse per il tuo progetto. MLOps 

Per creare un modello di progetto personalizzato, completa la seguente procedura.

1. Crea un portfolio. Per informazioni, consulta [Fase 3: creazione di un portfolio del catalogo servizi](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html).

1. Creazione di un prodotto Un prodotto è un modello. CloudFormation Puoi creare più versioni del prodotto. Per informazioni, consulta [Fase 4: creazione di un prodotto del catalogo servizi](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-product.html).

   Affinché il prodotto funzioni con SageMaker Projects, aggiungi i seguenti parametri al tuo modello di prodotto.

   ```
   SageMakerProjectName:
   Type: String
   Description: Name of the project
   
   SageMakerProjectId:
   Type: String
   Description: Service generated Id of the project.
   ```
**Importante**  
Ti consigliamo di inserire il CodeCommit repository nell'archivio del codice SageMaker AI affinché i repository del progetto siano visibili in modalità VPC. Il modello di esempio e l'aggiunta richiesta sono mostrati nei seguenti esempi di codice.  
Modello originale (esempio):  

   ```
   ModelBuildCodeCommitRepository:
       Type: AWS::CodeCommit::Repository
       Properties:
         # Max allowed length: 100 chars
         RepositoryName: !Sub sagemaker-${SageMakerProjectName}-${SageMakerProjectId}-modelbuild # max: 10+33+15+10=68
         RepositoryDescription: !Sub SageMaker Model building workflow infrastructure as code for the Project ${SageMakerProjectName}
         Code:
           S3:
             Bucket: SEEDCODE_BUCKETNAME
             Key: toolchain/model-building-workflow-v1.0.zip
           BranchName: main
   ```
Contenuti aggiuntivi da aggiungere in modalità VPC:  

   ```
   SageMakerRepository:
       Type: AWS::SageMaker::CodeRepository
       Properties:
           GitConfig:
               RepositoryUrl: !GetAtt ModelBuildCodeCommitRepository.CloneUrlHttp
               Branch: main
   ```

1. Aggiungi un vincolo di avvio. Un vincolo di avvio designa un ruolo IAM che il catalogo servizi assume quando un utente avvia un prodotto. Per informazioni, consulta [Fase 6: aggiunta di un vincolo di avvio per assegnare un ruolo IAM](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchconstraint.html).

1. Fornisci il prodotto per testare il modello [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/). Se il modello soddisfa le tue esigenze, continua con la fase successiva per renderlo disponibile in Studio (o Studio Classic).

1. Concedi l’accesso al portfolio Catalogo dei servizi creato nella fase 1 per il tuo ruolo di esecuzione di Studio (o Studio Classic). Utilizza il ruolo di esecuzione del dominio o un ruolo utente che abbia accesso a Studio (o Studio Classic). Per informazioni sull'aggiunta di un ruolo al portfolio, consulta [Fase 7: concessione dell’accesso al portfolio agli utenti finali](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-deploy.html).

1. Per rendere il modello di progetto disponibile nell’elenco **Modelli organizzazione** in Studio (o Studio Classic), crea un tag con la chiave e il valore seguenti per il prodotto del Catalogo dei servizi che hai creato nella fase 2.
   + **chiave**: `sagemaker:studio-visibility`
   + **valore**: `true`

Dopo aver completato queste fasi, gli utenti di Studio (o Studio Classic) nella tua organizzazione possono elaborare un progetto con il modello che hai creato seguendo la procedura in [Crea un MLOps progetto utilizzando Amazon SageMaker Studio o Studio Classic](sagemaker-projects-create.md) e scegliendo **Modelli dell’organizzazione** tra le opzioni per il modello.

## Utilizzo di un modello da un bucket Amazon S3
<a name="sagemaker-projects-templates-s3"></a>

Puoi anche creare SageMaker progetti utilizzando modelli archiviati in Amazon S3.

**Nota**  
Sebbene sia possibile utilizzare i modelli presenti in AWS Service Catalog, consigliamo di archiviarli in un bucket S3 e di creare progetti utilizzando tali modelli.

### Configurazione dell'amministratore
<a name="sagemaker-projects-templates-s3-setup"></a>

Prima di poter creare progetti utilizzando modelli in un bucket S3, procedi nel seguente modo.

1. [Crea un bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) e carica i tuoi modelli nel bucket.

1. [Imposta una policy CORS sul tuo bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html) per configurare le autorizzazioni di accesso.

1. Aggiungi il seguente tag chiave-valore al modello in modo che diventino visibili all'IA. SageMaker 

   ```
   sagemaker:studio-visibility : true
   ```

1. [Crea un dominio](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html).

1. Dopo che l' SageMaker IA ha finito di creare il tuo dominio, aggiungi il seguente tag chiave-valore al dominio:

   ```
   sagemaker:projectS3TemplatesLocation : s3://<amzn-s3-demo-bucket>
   ```

Quindi usa la AWS console, Python o le operazioni [CreateProject](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProject.html)e [UpdateProject](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateProject.html)API per creare o aggiornare un SageMaker progetto dai modelli all'interno del bucket S3.

------
#### [ Studio ]

**Creazione di un progetto**

1. Apri la console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra, scegli **Implementazioni**, **Progetti**, **Crea** progetto.

1. Scegli **Modelli di organizzazione** e poi **Modelli S3** per vedere i modelli disponibili. Se non vedi il modello che ti aspetti, avvisa il tuo amministratore.

1. Scegli il modello che desideri utilizzare, quindi scegli **Avanti**.

1. Inserisci un nome per il progetto, una descrizione opzionale e gli altri campi obbligatori. Al termine, selezionare **Create (Crea)**.

**Aggiorna un progetto**

1. Apri la console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Scegli il progetto che desideri aggiornare. Scegli **Azioni**, quindi scegli **Aggiorna progetto**.

1. Quando aggiorni un progetto, puoi aggiornare i parametri del modello o l'URL del modello. Al termine, selezionare **Next (Successivo)**.

1. Controlla gli aggiornamenti del progetto nella tabella di riepilogo e scegli **Aggiorna**.

------
#### [ Python Boto3 ]

Dopo aver creato il bucket S3 e caricato i modelli, puoi utilizzare il seguente esempio per creare un SageMaker progetto.

```
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

response = sagemaker_client.create_project(
    ProjectName='my-custom-project',
    ProjectDescription='SageMaker project with custom CFN template stored in S3',
    TemplateProviders=[{
        'CfnTemplateProvider': {
            'TemplateName': 'CustomProjectTemplate',
            'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml',
            'Parameters': [
                {'Key': 'ParameterKey', 'Value': 'ParameterValue'}
            ]
        }
    }]
)
print(f"Project ARN: {response['ProjectArn']}")
```

Per aggiornare un SageMaker progetto, consulta l'esempio seguente.

```
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

response = sagemaker_client.update_project(
    ProjectName='my-custom-project',
    ProjectDescription='SageMaker project with custom CFN template stored in S3',
    TemplateProvidersToUpdate=[{
        'CfnTemplateProvider': {
            'TemplateName': 'CustomProjectTemplate',
            'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml',
            'Parameters': [
                {'Key': 'ParameterKey', 'Value': 'ParameterValue'}
            ]
        }
    }]
)
print(f"Project ARN: {response['ProjectArn']}")
```

------

# Visualizzazione delle risorse di progetto
<a name="sagemaker-projects-resources"></a>

Dopo aver creato un progetto, visualizza le risorse associate al progetto in Amazon SageMaker Studio Classic.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Implementazioni**, quindi seleziona **Progetti**.

1. Seleziona il nome del progetto per il quale desideri visualizzare i dettagli. Si apre una pagina con i dettagli del progetto.

Sulla pagina dei dettagli del progetto, puoi visualizzare le seguenti entità e aprire le schede seguenti che corrispondono all’entità associata al progetto.
+ Repository: repository di codice (repo) associati a questo progetto. Se utilizzi un modello SageMaker fornito dall'intelligenza artificiale quando crei il tuo progetto, viene creato un AWS CodeCommit repository o un repository Git di terze parti. [Per ulteriori informazioni su CodeCommit, consulta What is. AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+ Pipeline: pipeline SageMaker AI ML che definiscono i passaggi per preparare i dati, addestrare e implementare modelli. Per informazioni sulle pipeline SageMaker AI ML, consulta. [Azioni di Pipelines](pipelines-build.md)
+ Esperimenti: uno o più esperimenti Amazon SageMaker Autopilot associati al progetto. Per ulteriori informazioni su Autopilot, consulta [SageMaker Pilota automatico](autopilot-automate-model-development.md).
+ Gruppi di modelli: gruppi di versioni del modello creati mediante esecuzioni di pipeline nel progetto. Per informazioni sui gruppi di modelli, consulta [Creazione di un gruppo di modelli](model-registry-model-group.md).
+ Endpoint: endpoint di SageMaker intelligenza artificiale che ospitano modelli distribuiti per l'inferenza in tempo reale. Quando una versione del modello viene approvata, questa viene distribuita su un endpoint.
+ Tag: tutti i tag associati al progetto. Per ulteriori informazioni sui tag, consulta [Tagging delle risorse AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) in *Riferimenti generali di AWS*.
+ Metadati: metadati associati al progetto. Includono il modello e la versione utilizzati e il percorso di avvio del modello.

------
#### [ Studio Classic ]

1. Accedi a Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**.

1. Seleziona il nome del progetto per il quale desideri visualizzare i dettagli.

   Viene visualizzata una scheda con i dettagli del progetto.

Sulla scheda Dettagli del progetto è possibile visualizzare le seguenti entità associate al progetto.
+ Repository: repository di codice (repo) associati a questo progetto. Se utilizzi un modello SageMaker fornito dall'intelligenza artificiale quando crei il tuo progetto, viene creato un AWS CodeCommit repository o un repository Git di terze parti. [Per ulteriori informazioni su CodeCommit, consulta What is. AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+ Pipeline: pipeline SageMaker AI ML che definiscono i passaggi per preparare i dati, addestrare e implementare modelli. Per informazioni sulle pipeline SageMaker AI ML, consulta. [Azioni di Pipelines](pipelines-build.md)
+ Esperimenti: uno o più esperimenti Amazon SageMaker Autopilot associati al progetto. Per ulteriori informazioni su Autopilot, consulta [SageMaker Pilota automatico](autopilot-automate-model-development.md).
+ Gruppi di modelli: gruppi di versioni del modello creati mediante esecuzioni di pipeline nel progetto. Per informazioni sui gruppi di modelli, consulta [Creazione di un gruppo di modelli](model-registry-model-group.md).
+ Endpoint: endpoint di SageMaker intelligenza artificiale che ospitano modelli distribuiti per l'inferenza in tempo reale. Quando una versione del modello viene approvata, questa viene distribuita su un endpoint.
+ Impostazioni: impostazioni per il progetto. Ciò include il nome e la descrizione del progetto, le informazioni sul modello di progetto e `SourceModelPackageGroupName` e i metadati sul progetto.

------

# Aggiornamento di un MLOps progetto in Amazon SageMaker Studio o Studio Classic
<a name="sagemaker-projects-update"></a>

Questa procedura dimostra come aggiornare un MLOps progetto in Amazon SageMaker Studio o Studio Classic. L'aggiornamento del progetto ti offre la possibilità di modificare la tua soluzione end-to-end ML. È possibile aggiornare la **descrizione**, la versione del modello e i parametri del modello.

**Prerequisiti**
+ Un account IAM o Centro identità IAM per accedere a Studio o Studio Classic. Per informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).
+ Familiarità di base con l’interfaccia utente di Studio o Studio Classic. Per informazioni sull’interfaccia utente di Studio, consulta [Amazon SageMaker Studio](studio-updated.md). Per informazioni su Studio Classic, consulta [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).
+ Aggiungi le seguenti policy inline personalizzate ai ruoli specificati:

  Ruolo creato dall'utente con `AmazonSageMakerFullAccess`

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "servicecatalog:CreateProvisionedProductPlan",
                  "servicecatalog:DescribeProvisionedProductPlan",
                  "servicecatalog:DeleteProvisionedProductPlan"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

  `AmazonSageMakerServiceCatalogProductsLaunchRole`

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "cloudformation:CreateChangeSet",
                  "cloudformation:DeleteChangeSet",
                  "cloudformation:DescribeChangeSet"
              ],
              "Resource": "arn:aws:cloudformation:*:*:stack/SC-*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "codecommit:PutRepositoryTriggers"
              ],
              "Resource": "arn:aws:codecommit:*:*:sagemaker-*"
          }
      ]
  }
  ```

------

Per aggiornare il progetto in Studio o Studio Classic, procedi come segue.

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Implementazioni**, quindi seleziona **Progetti**.

1. Scegli il pulsante di opzione accanto al progetto da aggiornare.

1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra dell’elenco dei progetti, quindi seleziona **Aggiorna**.

1. Scegli **Next (Successivo)**.

1. Controlla gli aggiornamenti del progetto nella tabella di riepilogo e scegli **Aggiorna**. L’aggiornamento del progetto potrebbe richiedere alcuni minuti.

------
#### [ Studio Classic ]

**Per aggiornare un progetto in Studio Classic**

1. Accedi a Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**. Viene visualizzato un elenco dei progetti.

1. Seleziona il nome del progetto che desideri aggiornare nell'elenco dei progetti.

1. Scegli **Aggiorna** dal menu **Azioni** nell'angolo in alto a destra della scheda del progetto.

1. Nella finestra di dialogo **Aggiorna progetto**, puoi modificare la **descrizione** e i parametri elencati del modello.

1. Scegli **Visualizza differenza**.

   Una finestra di dialogo mostra le impostazioni originali del progetto e quelle aggiornate. Qualsiasi modifica alle impostazioni del progetto può modificare o eliminare risorse nel progetto corrente. La finestra di dialogo mostra anche queste modifiche.

1. Potrebbe essere necessario attendere qualche minuto prima che il pulsante **Aggiorna** diventi attivo. Scegliere **Aggiorna**.

1. Il completamento dell’aggiornamento del progetto potrebbe richiedere alcuni minuti. Seleziona **Impostazioni** nella scheda del progetto e assicurati che i parametri siano stati aggiornati correttamente.

------

# Eliminare un MLOps progetto utilizzando Amazon SageMaker Studio o Studio Classic
<a name="sagemaker-projects-delete"></a>

Questa procedura dimostra come eliminare un MLOps progetto utilizzando Amazon SageMaker Studio o Studio Classic.

**Prerequisiti**

**Nota**  
In Studio o Studio Classic puoi eliminare solo i progetti che hai creato. Questa condizione fa parte dell'autorizzazione del catalogo servizi `servicecatalog:TerminateProvisionedProduct` prevista dalla policy `AmazonSageMakerFullAccess`. Se necessario, puoi aggiornare questa policy per rimuovere la condizione.
+ Un account IAM o Centro identità IAM per accedere a Studio o Studio Classic. Per informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).
+ Familiarità di base con l’interfaccia utente di Studio o Studio Classic. Per informazioni sull’interfaccia utente di Studio, consulta [Amazon SageMaker Studio](studio-updated.md). Per informazioni su Studio Classic, consulta [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).

------
#### [ Studio ]

1. Apri la console SageMaker Studio seguendo le istruzioni in [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Nel riquadro di navigazione a sinistra scegli **Implementazioni**, quindi seleziona **Progetti**.

1. Scegli il pulsante di opzione accanto al progetto da eliminare.

1. Scegli l’icona con tre puntini verticali nell’angolo in alto a destra dell’elenco dei progetti, quindi seleziona **Elimina**.

1. Esamina le informazioni nella finestra di dialogo **Elimina progetto** e scegli **Sì, elimina il progetto** se intendi comunque eliminare il progetto.

1. Scegli **Elimina**.

1. Viene visualizzato l’elenco dei progetti. Verifica che il progetto non sia più presente nell’elenco.

------
#### [ Studio Classic ]

1. Accedi a Studio Classic. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**.

1. Seleziona il progetto di destinazione dall'elenco a discesa. Se non vedi il tuo progetto, digita il nome del progetto e applica il filtro per trovarlo.

1. Una volta trovato il progetto, seleziona il nome del progetto per visualizzarne i dettagli.

1. Nel menu **Azioni** seleziona **Elimina**.

1. Conferma la tua scelta selezionando **Elimina** dalla finestra **Elimina progetto**.

------

# Esplora un MLOps progetto di SageMaker intelligenza artificiale utilizzando repository Git di terze parti
<a name="sagemaker-projects-walkthrough-3rdgit"></a>

**Importante**  
A partire dal 30 novembre 2023, la precedente esperienza Amazon SageMaker Studio è ora denominata Amazon SageMaker Studio Classic. La sezione seguente è specifica per l’utilizzo dell’applicazione Studio Classic. Per informazioni sull’utilizzo dell’esperienza Studio aggiornata, consulta [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic viene ancora mantenuto per i carichi di lavoro esistenti, ma non è più disponibile per l'onboarding. È possibile solo interrompere o eliminare le applicazioni Studio Classic esistenti e non è possibile crearne di nuove. Ti consigliamo di [migrare il tuo carico di lavoro alla nuova esperienza Studio](studio-updated-migrate.md).

Questa procedura dettagliata utilizza il modello [MLOps modelli per la creazione, la formazione e l'implementazione di modelli con Git di terze parti utilizzando CodePipeline](sagemaker-projects-templates-sm.md#sagemaker-projects-templates-git-code-pipeline) per dimostrare come utilizzare i MLOps progetti per creare un CI/CD sistema per creare, addestrare e distribuire modelli.

**Prerequisiti**

Per completare questa procedura guidata, devi:
+ Un account IAM o Centro identità IAM per accedere a Studio Classic. Per informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).
+ Autorizzazione a utilizzare modelli di progetto forniti dall' SageMaker intelligenza artificiale. Per informazioni, consulta [Concessione delle autorizzazioni di SageMaker Studio necessarie per utilizzare i progetti](sagemaker-projects-studio-updates.md).
+ Familiarità di base con l’interfaccia utente di Studio Classic. Per informazioni, consulta [Panoramica dell'interfaccia utente di Amazon SageMaker Studio Classic](studio-ui.md).
+ Due repository vuoti GitHub . Inserisci questi repository nel modello di progetto, che inserirà in questi repository il codice di compilazione e distribuzione del modello.

**Topics**
+ [Fase 1: Configurare la connessione GitHub](#sagemaker-proejcts-walkthrough-connect-3rdgit)
+ [Fase 1: creazione del progetto](#sagemaker-proejcts-walkthrough-create-3rdgit)
+ [Fase 3: modifiche al codice](#sagemaker-projects-walkthrough-change-3rdgit)
+ [Fase 4: approvazione del modello](#sagemaker-proejcts-walkthrough-approve-3rdgit)
+ [(Facoltativo) Fase 5: distribuzione della versione del modello per la produzione](#sagemaker-projects-walkthrough-prod-3rdgit)
+ [Fase 6: eliminazione delle risorse](#sagemaker-projectcts-walkthrough-cleanup-3rdgit)

## Fase 1: Configurare la connessione GitHub
<a name="sagemaker-proejcts-walkthrough-connect-3rdgit"></a>

In questo passaggio, ti connetti ai tuoi GitHub repository utilizzando una [AWS CodeConnections connessione.](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html) Il progetto SageMaker AI utilizza questa connessione per accedere agli archivi del codice sorgente.

**Per configurare la GitHub connessione:**

1. Accedere alla CodePipeline console all'indirizzo [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)

1. Da **Impostazioni** nel riquadro di navigazione, seleziona **Connessioni**.

1. Scegli **Crea connessione**.

1. Per **Seleziona un provider**, seleziona **GitHub**.

1. In **Nome connessione**, immetti un nome.

1. Scegli **Connect a GitHub**.

1. Se l' GitHub app AWS Connector non è stata installata in precedenza, scegli **Installa nuova app**.

   Viene visualizzato un elenco di tutti gli account e le organizzazioni GitHub personali a cui hai accesso.

1. Scegliete l'account a cui desiderate stabilire la connettività da utilizzare con SageMaker i progetti e gli GitHub archivi.

1. Scegli **Configura**.

1. Facoltativamente, puoi selezionare i tuoi repository specifici o scegliere **Tutti i repository.**

1. Scegli **Save** (Salva). Una volta installata l'app, verrai reindirizzato alla GitHub pagina **Connect to** e l'ID di installazione viene compilato automaticamente.

1. Scegli **Connetti**.

1. Aggiungi un tag con la chiave `sagemaker` e il valore `true` a questa CodeConnections connessione.

1. Copia l'ARN connessione per salvarlo per dopo. L'ARN viene utilizzato come parametro nella fase di creazione del progetto.

## Fase 1: creazione del progetto
<a name="sagemaker-proejcts-walkthrough-create-3rdgit"></a>

In questo passaggio, crei un MLOps progetto di SageMaker intelligenza artificiale utilizzando un modello di progetto SageMaker fornito dall'intelligenza artificiale per creare, addestrare e distribuire modelli.

**Per creare il progetto di intelligenza artificiale SageMaker MLOps**

1. Accedi a Studio. Per ulteriori informazioni, consulta [Panoramica del dominio Amazon SageMaker AI](gs-studio-onboard.md).

1. Nella barra laterale di Studio, scegli l'icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**.

1. Seleziona **Crea progetto**.

   Viene visualizzata la scheda **Crea progetto**.

1. Per i **modelli di progetto SageMaker AI**, scegli **Creazione, formazione e implementazione di modelli con repository Git di terze parti utilizzando CodePipeline**.

1. Scegli **Next (Successivo)**.

1. In **ModelBuild CodeRepository Informazioni**, fornisci i seguenti parametri:
   + Per **Rami**, inserisci il ramo da utilizzare dal tuo repository Git per le attività della pipeline.
   + Per **Nome archivio completo, inserisci il nome** del repository Git nel formato o. *username/repository name* *organization/repository name*
   + Per **Code Connection ARN**, inserisci l'ARN della CodeConnections connessione creata nel passaggio 1.

1. In **ModelDeploy CodeRepository Info**, fornisci i seguenti parametri:
   + Per **Rami**, inserisci il ramo da utilizzare dal tuo repository Git per le attività della pipeline.
   + Per **Nome archivio completo, inserisci il nome** del repository Git nel formato o. *username/repository name* *organization/repository name*
   + Per **Code Connection ARN**, inserisci l'ARN della CodeConnections connessione creata nel passaggio 1.

1. Scegli **Crea progetto**.

Il progetto viene visualizzato nell'elenco **Progetti** con lo **stato** di **Creato**.

## Fase 3: modifiche al codice
<a name="sagemaker-projects-walkthrough-change-3rdgit"></a>

Ora apporta una modifica al codice della pipeline che compila il modello e conferma la modifica per avviare una nuova esecuzione della pipeline. L'esecuzione della pipeline registra una nuova versione del modello.

**Per apportare modifiche al codice**

1. Nel GitHub repository della build del modello, accedi alla cartella. `pipelines/abalone` Fai doppio clic su `pipeline.py` per aprire il file di codice.

1. Nel file `pipeline.py`, trova la riga che imposta il tipo di istanza di addestramento.

   ```
   training_instance_type = ParameterString(
           name="TrainingInstanceType", default_value="ml.m5.xlarge"
   ```

   Apri il file per modificarlo, cambia `ml.m5.xlarge` in `ml.m5.large` e poi conferma.

Dopo aver eseguito la modifica del codice, il MLOps sistema avvia un'esecuzione della pipeline che crea una nuova versione del modello. Nella fase successiva, si approva la nuova versione del modello per distribuirla in produzione.

## Fase 4: approvazione del modello
<a name="sagemaker-proejcts-walkthrough-approve-3rdgit"></a>

Ora approvate la nuova versione del modello creata nel passaggio precedente per avviare una distribuzione della versione del modello su un endpoint AI. SageMaker 

**Per approvare la versione del modello**

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**.

1. Trova il nome del progetto che hai creato nella prima fase e fai doppio clic su di esso per aprire la scheda del progetto.

1. Nella scheda progetto, scegli **Gruppi di modelli**, quindi fai doppio clic sul nome del gruppo di modelli visualizzato.

   Viene visualizzata la scheda del gruppo di modelli.

1. Nella scheda del gruppo di modelli, fai doppio clic su **Versione 1**. Si apre la scheda **Versione 1**. Scegli **Aggiorna stato**.

1. Nella finestra di dialogo **Aggiorna lo stato della versione del modello** nel modello, nell'elenco a discesa **Stato**, seleziona **Approva**, quindi scegli **Aggiorna stato**.

   L'approvazione della versione del modello fa sì che il MLOps sistema distribuisca il modello allo staging. Per visualizzare l'endpoint, scegli la scheda **Endpoint** nella scheda del progetto.

## (Facoltativo) Fase 5: distribuzione della versione del modello per la produzione
<a name="sagemaker-projects-walkthrough-prod-3rdgit"></a>

Ora puoi distribuire la versione del modello nell'ambiente di produzione.

**Nota**  
Per completare questa fase, devi essere un amministratore del dominio Studio Classic. Se non sei un amministratore, salta questa fase.

**Per distribuire la versione del modello nell'ambiente di produzione**

1. Accedere alla console all'indirizzo CodePipeline [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)

1. Scegli **Pipelines**, quindi scegli la pipeline con il nome **sagemaker- *projectname* - *projectid* -modeldeploy**, dove *projectname* è il nome del tuo progetto e *projectid* l'ID del tuo progetto.

1. **Nella fase, scegli Review. **DeployStaging****

1. Nella finestra di dialogo **Revisione**, scegli **Approva**.

   L'approvazione della **DeployStaging**fase fa sì che il MLOps sistema distribuisca il modello in produzione. Per visualizzare l’endpoint, scegli la scheda **Endpoint** nella scheda del progetto in Studio Classic.

## Fase 6: eliminazione delle risorse
<a name="sagemaker-projectcts-walkthrough-cleanup-3rdgit"></a>

Per interrompere gli addebiti, ripulisci le risorse create in questa procedura dettagliata.

**Nota**  
Per eliminare lo CloudFormation stack e il bucket Amazon S3, devi essere un amministratore in Studio Classic. Se non sei un amministratore, chiedi al tuo amministratore di completare queste fasi.

1. Nella barra laterale di Studio Classic, scegli l’icona **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Seleziona **Implementazioni** dal menu, quindi seleziona **Progetti**.

1. Seleziona il progetto di destinazione dall'elenco a discesa. Se non vedi il tuo progetto, digita il nome del progetto e applica il filtro per trovarlo.

1. Seleziona il progetto per visualizzarne i dettagli nel pannello principale.

1. Nel menu **Azioni** seleziona **Elimina**.

1. Conferma la tua scelta selezionando **Elimina** dalla finestra **Elimina progetto**.

   Ciò elimina il prodotto con provisioning del catalogo servizi creato dal progetto. Ciò include le e CodeCommit CodePipeline le CodeBuild risorse create per il progetto.

1. Elimina gli CloudFormation stack creati dal progetto. Esistono due stack, uno per lo staging e uno per la produzione. I nomi degli stack sono **sagemaker- *projectname* - *project-id* -deploy-staging** e **sagemaker- *projectname* - *project-id* -deploy-prod**, dove *projectname* è il nome del progetto e l'ID del progetto. *project-id*

   [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)

1. Elimina il bucket Amazon S3 creato dal progetto. Il nome del bucket è **sagemaker-project-*project-id*, dove è l'ID del progetto**. *project-id*

# MLOps Risoluzione dei problemi di Amazon SageMaker AI
<a name="mlopsfaq"></a>

Usa quanto segue per risolvere i problemi relativi all'intelligenza artificiale MLOps . SageMaker In questo argomento vengono fornite informazioni sugli errori comuni e su come risolverli. 

## Se tento di eliminare un progetto di SageMaker intelligenza artificiale creato da un modello di SageMaker intelligenza artificiale e ricevo un errore dovuto a bucket Amazon S3 o repository Amazon ECR non vuoti, come posso eliminare il progetto?
<a name="collapsible-section-14"></a>

Se tenti di eliminare il tuo progetto di SageMaker intelligenza artificiale e ricevi uno dei seguenti messaggi di errore:

```
The bucket you tried to delete is not empty
```

```
The repository with name 'repository-name' in registry 
        with id 'id' cannot be deleted because it still contains images
```

quindi hai bucket Amazon S3 o repository Amazon ECR non vuoti che devi eliminare manualmente prima di eliminare il progetto AI. SageMaker CloudFormation non elimina automaticamente i bucket Amazon S3 o i repository Amazon ECR non vuoti per te.