

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

# Eseguire il training di un modello
<a name="ex1-train-model"></a>

In questa fase, scegli un algoritmo di addestramento ed esegui un job di addestramento per il modello. L'SDK [ Amazon SageMaker Python ](https://sagemaker.readthedocs.io/en/stable) fornisce classi per addestrare il modello orchestrando il ciclo di vita dell'apprendimento automatico (ML) accedendo alle funzionalità di SageMaker intelligenza artificiale per la formazione e le AWS infrastrutture, come Amazon Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon EC2), Amazon Simple Storage Service (Amazon S3). Per ulteriori informazioni sugli algoritmi integrati, consulta [Built-in algoritmi e modelli preaddestrati in Amazon SageMaker](algos.md).

**Topics**
+ [Scegliere l'algoritmo di addestramento](#ex1-train-model-select-algorithm)
+ [Creazione ed esecuzione di un processo di addestramento](#ex1-train-model-sdk)

## Scegliere l'algoritmo di addestramento
<a name="ex1-train-model-select-algorithm"></a>

Per scegliere l'algoritmo giusto per il tuo set di dati, in genere devi valutare diversi modelli per trovare i modelli più adatti ai tuoi dati. Per semplicità, l'algoritmo [Algoritmo XGBoost con Amazon AI SageMaker](xgboost.md) integrato di SageMaker intelligenza artificiale viene utilizzato in questo tutorial senza la valutazione preliminare dei modelli.

**Suggerimento**  
Se desideri che l' SageMaker intelligenza artificiale trovi un modello appropriato per il tuo set di dati tabulari, utilizza Amazon SageMaker Autopilot che automatizza una soluzione di apprendimento automatico. Per ulteriori informazioni, consulta [SageMaker Pilota automatico](autopilot-automate-model-development.md).

## Creazione ed esecuzione di un processo di addestramento
<a name="ex1-train-model-sdk"></a>

Dopo aver capito quale modello utilizzare, inizia a creare un lavoro di formazione. Questo tutorial utilizza l'algoritmo integrato XGBoost.

**Per eseguire il processo di addestramento di un modello**

1. Importa l'SDK [ Amazon SageMaker Python ](https://sagemaker.readthedocs.io/en/stable) e inizia recuperando le informazioni di base dalla tua sessione AI corrente. SageMaker 

   ```
   from sagemaker.core.helper.session_helper import Session, get_execution_role
   
   sagemaker_session = Session()
   region = sagemaker_session.boto_region_name
   print(f"AWS Region: {region}")
   
   role = get_execution_role()
   print(f"RoleArn: {role}")
   ```
**Nota**  
Controlla la versione dell'SDK SageMaker Python eseguendo. `sagemaker.__version__` Questo tutorial è basato su `sagemaker>=3.0`. Se l'SDK non è aggiornato, installa la versione più recente eseguendo il seguente comando:   

   ```
   ! pip install -qU sagemaker
   ```
Se esegui questa installazione nelle istanze di SageMaker Studio o notebook in uscita, devi aggiornare manualmente il kernel per completare l'applicazione dell'aggiornamento della versione.

   Questa procedura restituisce le seguenti informazioni:
   + `region`— La AWS regione corrente in cui è in esecuzione l'istanza del notebook SageMaker AI.
   + `role`: il ruolo IAM utilizzato dall'istanza del notebook.

1. Crea una configurazione di addestramento e imposta gli iperparametri per l'algoritmo XGBoost.

   Create una `ModelTrainer` utilizzando la `sagemaker.train.ModelTrainer` classe con gli iperparametri passati direttamente nel costruttore. Nel codice di esempio seguente, ModelTrainer viene denominato. `xgb_model_trainer`

   ```
   from sagemaker.train import ModelTrainer
   from sagemaker.train.configs import Compute, OutputDataConfig
   from sagemaker.core import image_uris
   
   s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model')
   
   container = image_uris.retrieve("xgboost", region, "1.2-1")
   print(container)
   
   compute = Compute(
       instance_type='ml.m4.xlarge',
       instance_count=1,
       volume_size_in_gb=5
   )
   
   xgb_model_trainer = ModelTrainer(
       training_image=container,
       role=role,
       compute=compute,
       output_data_config=OutputDataConfig(s3_output_path=s3_output_location),
       hyperparameters={
           "max_depth": "5",
           "eta": "0.2",
           "gamma": "4",
           "min_child_weight": "6",
           "subsample": "0.7",
           "objective": "binary:logistic",
           "num_round": "1000"
       }
   )
   ```

   Per costruire l' SageMaker IA`ModelTrainer`, specifica i seguenti parametri:
   + `training_image`: specifica l'URI dell'immagine del container di addestramento. In questo esempio, l'URI del contenitore di formazione SageMaker AI XGBoost viene specificato utilizzando. `image_uris.retrieve`
   + `role`— Il ruolo AWS Identity and Access Management (IAM) che l' SageMaker IA utilizza per eseguire attività per tuo conto (ad esempio, leggere i risultati della formazione, richiamare artefatti del modello da Amazon S3 e scrivere i risultati della formazione su Amazon S3). 
   + `compute`— Un oggetto di `Compute` configurazione che specifica il tipo e il numero di istanze di calcolo ML di Amazon EC2 da utilizzare per l'addestramento dei modelli. Per questo esercizio di addestramento, utilizza una singola istanza `ml.m4.xlarge` con 4 CPU, 16 GB di memoria, uno storage Amazon Elastic Block Store (Amazon EBS) e prestazioni di rete elevate. Per ulteriori informazioni sui tipi di istanze di calcolo EC2, consulta [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/). Per ulteriori informazioni sulla fatturazione, consulta i prezzi di Amazon. [ SageMaker ](https://aws.amazon.com/sagemaker/pricing/) 
   + `hyperparameters`— Un dizionario di iperparametri per l'algoritmo di addestramento. Tutti i valori devono essere stringhe.
**Suggerimento**  
Se desideri eseguire un training distribuito di modelli di deep learning di grandi dimensioni, come le reti neurali convoluzionali (CNN) e i modelli di elaborazione del linguaggio naturale (NLP), utilizza SageMaker AI Distributed per il parallelismo dei dati o il parallelismo dei modelli. Per ulteriori informazioni, consulta [Formazione distribuita in Amazon SageMaker AI](distributed-training.md).
**Suggerimento**  
Puoi anche regolare gli iperparametri utilizzando la funzione di ottimizzazione degli iperparametri AI. SageMaker Per ulteriori informazioni, consulta [Ottimizzazione automatica dei modelli con AI SageMaker](automatic-model-tuning.md). 

1. Configura l'input dei dati per l'allenamento.

   Utilizza la classe `InputData` per configurare un flusso di input di dati per l'addestramento. Il seguente codice di esempio mostra come configurare gli oggetti `InputData` per utilizzare i set di dati di addestramento e di convalida che hai caricato su Amazon S3 nella sezione [Suddivisione del set di dati in set di dati di addestramento, di convalida e di test](ex1-preprocess-data.md#ex1-preprocess-data-transform).

   ```
   from sagemaker.train.configs import InputData
   
   train_input = InputData(
       channel_name="train",
       data_source="s3://{}/{}/{}".format(bucket, prefix, "data/train.csv")
   )
   validation_input = InputData(
       channel_name="validation",
       data_source="s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv")
   )
   ```

1. Inizia l'addestramento del modello.

   Per iniziare l'addestramento dei modelli, richiama il `train` metodo del trainer con i set di dati di addestramento e convalida. Per impostazione predefinita, il `train` metodo visualizza i registri di avanzamento e attende il completamento dell'addestramento.

   ```
   xgb_model_trainer.train(input_data_config=[train_input, validation_input])
   ```

   Per ulteriori informazioni sull’addestramento del modello, consulta [Addestra un modello con Amazon SageMaker](how-it-works-training.md). Questo processo di addestramento del tutorial potrebbe richiedere fino a 10 minuti.

   Al termine del processo di formazione, è possibile scaricare un rapporto di formazione XGBoost e un rapporto di profilazione generato da Debugger. SageMaker Il report di addestramento XGBoost offre informazioni dettagliate sull'avanzamento e sui risultati dell'addestramento, ad esempio la funzione di perdita rispetto all'iterazione, l'importanza della funzionalità, la matrice di confusione, le curve di precisione e altri risultati statistici dell'addestramento. Ad esempio, puoi trovare la seguente curva di perdita del report di addestramento XGBoost che indica chiaramente che esiste un problema di overfitting.  
![Il grafico nel report sull’addestramento di XGBoost.](https://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/get-started-ni/gs-ni-train-loss-curve-validation-overfitting.png)

   Esegui il seguente codice per specificare l'URI del bucket S3 in cui vengono generati i report di addestramento di Debugger e controlla se i report esistono.

   ```
   training_job = xgb_model_trainer._latest_training_job
   rule_output_path = training_job.output_data_config.s3_output_path + "/" + training_job.training_job_name + "/rule-output"
   ! aws s3 ls {rule_output_path} --recursive
   ```

   Scarica i report di addestramento e di profiling XGBoost di Debugger nel workspace corrente:

   ```
   ! aws s3 cp {rule_output_path} ./ --recursive
   ```

   Esegui il seguente script IPython per ottenere il collegamento al file del report di addestramento XGBoost:

   ```
   from IPython.display import FileLink, FileLinks
   display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))
   ```

   Il seguente script IPython restituisce il collegamento al file del report di profiling di Debugger che mostra riepiloghi e dettagli relativi a utilizzo delle risorse dell'istanza EC2, risultati del rilevamento dei colli di bottiglia del sistema e risultati di profiling delle operazioni Python:

   ```
   # Note: In V3, debugger rule outputs can be accessed via the SageMaker console
   # or the boto3 DescribeTrainingJob API (DebugRuleEvaluationStatuses field).
   # Example using boto3:
   # import boto3
   # sm = boto3.client("sagemaker")
   # resp = sm.describe_training_job(TrainingJobName=training_job.training_job_name)
   # rule_statuses = resp["DebugRuleEvaluationStatuses"]
   profiler_report_name = "ProfilerReport-1234567890"
   display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
   ```
**Suggerimento**  
Se i report HTML non visualizzano i grafici nella JupyterLab vista, devi scegliere ** Trust HTML nella parte ** superiore dei report.  
Per identificare i problemi di formazione, come l'overfitting, la scomparsa dei gradienti e altri problemi che impediscono la convergenza del modello, utilizzate SageMaker Debugger e intraprendete azioni automatiche durante la prototipazione e l'addestramento dei modelli ML. Per ulteriori informazioni, consulta [SageMaker Debugger Amazon](train-debugger.md). Per trovare un'analisi completa dei parametri del modello, consulta il taccuino di esempio Explainability with Amazon Debugger. [ SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/xgboost_census_explanations/xgboost-census-debugger-rules.html#Explainability-with-Amazon-SageMaker-Debugger) 

Ora hai un modello XGBoost addestrato. SageMaker L'intelligenza artificiale memorizza l'artefatto del modello nel bucket S3. Per trovare la posizione dell'artefatto del modello, esegui il codice seguente per stampare l'attributo: `model_data`

```
xgb_model_trainer._latest_training_job.model_artifacts.s3_model_artifacts
```

**Suggerimento**  
Per misurare le distorsioni che possono verificarsi durante ogni fase del ciclo di vita del machine learning (raccolta dati, addestramento e ottimizzazione dei modelli e monitoraggio dei modelli ML utilizzati per la previsione), usa Clarify. SageMaker Per ulteriori informazioni, consulta [Spiegabilità del modello](clarify-model-explainability.md). Per un esempio completo, consulta il taccuino di esempio Fairness and Explainability with Clarify[. SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html)