

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# SageMaker 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 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, compila 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, vedere [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 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 orario 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 vedere 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 comodità dell'utente.
   + **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 l'origine 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 il GitHub repository 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 grafico 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 grafico 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 intelligenza artificiale 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'intelligenza artificiale. 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 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 utilizzi 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 di SageMaker intelligenza artificiale 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 su SageMaker AI, 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 i 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 in un'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 i 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 IA 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 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. | 
| Nome | 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 pianifichi i lavori relativi al JupyterLab notebook nell'interfaccia utente di Studio, puoi [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 dei lavori 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 