

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

# Ottimizzazione automatica dei modelli con AI SageMaker
<a name="automatic-model-tuning"></a>

Amazon SageMaker AI Automatic Model Tuning (AMT) trova la versione migliore di un modello eseguendo molti lavori di formazione sul tuo set di dati. L'ottimizzazione automatica dei modelli (AMT) di Amazon SageMaker AI è anche nota come ottimizzazione degli iperparametri. A tale scopo, AMT utilizza l'algoritmo e gli intervalli di iperparametri specificati dall'utente. Quindi sceglie i valori iperparametri presenti in un modello che crea la performance migliore, misurata in base a un parametro scelto.

Prendiamo ad esempio l’esecuzione di un problema di *[classificazione binaria](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#binary-classification-model)* su un set di dati di marketing. Il tuo obiettivo è massimizzare il parametro *[area sotto la curva (AUC)](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#AUC)* dell'algoritmo, eseguendo l’addestramento di un modello [XGBoost algoritmo con Amazon SageMaker AI](xgboost.md). Vuoi trovare quali dei valori di iperparametri `eta`, `alpha`, `min_child_weight` e `max_depth` effettueranno l’addestramento migliore per il modello. Specifica un intervallo di valori per questi iperparametri. Quindi, l'ottimizzazione degli iperparametri SageMaker AI effettua una ricerca all'interno degli intervalli per trovare una combinazione che crei un processo di formazione che crei un modello con l'AUC più elevato. Per risparmiare risorse o soddisfare una specifica aspettativa di qualità del modello, imposta criteri di completamento in modo da interrompere l’ottimizzazione quando tali criteri sono soddisfatti.

Puoi utilizzare SageMaker AI AMT con algoritmi integrati, algoritmi personalizzati o contenitori SageMaker AI predefiniti per framework di apprendimento automatico.

SageMaker AI AMT può utilizzare un'istanza Spot di Amazon EC2 per ottimizzare i costi durante l'esecuzione di lavori di formazione. Per ulteriori informazioni, consulta [Managed Spot Training in Amazon SageMaker AI](model-managed-spot-training.md).

Prima di iniziare a utilizzare l'ottimizzazione degli iperparametri, il problema di Machine Learning deve essere ben definito, inclusi questi aspetti:
+ Un set di dati
+ Conoscenza del tipo di algoritmo di cui eseguire l’addestramento
+ Una chiara comprensione di come quantificare il successo

Prepara il set di dati e l'algoritmo in modo che funzionino nell' SageMaker intelligenza artificiale e svolgano con successo un processo di formazione almeno una volta. Per ulteriori informazioni sulla configurazione e l'esecuzione di un processo di addestramento, consulta [Guida alla configurazione con Amazon SageMaker AI](gs.md).

**Topics**
+ [Comprendi le strategie di ottimizzazione degli iperparametri disponibili in Amazon AI SageMaker](automatic-model-tuning-how-it-works.md)
+ [Definisci parametri e variabili di ambiente](automatic-model-tuning-define-metrics-variables.md)
+ [Definire gli intervalli degli iperparametri](automatic-model-tuning-define-ranges.md)
+ [Monitora e imposta i criteri di completamento del tuo processo di ottimizzazione](automatic-model-tuning-progress.md)
+ [Ottimizza più algoritmi con l'ottimizzazione degli iperparametri per trovare il modello migliore](multiple-algorithm-hpo.md)
+ [Esempio: processo di ottimizzazione degli iperparametri](automatic-model-tuning-ex.md)
+ [Interrompere in anticipo i processi di addestramento](automatic-model-tuning-early-stopping.md)
+ [Eseguire un processo di ottimizzazione degli iperparametri con avvio a caldo](automatic-model-tuning-warm-start.md)
+ [Limiti delle risorse di ottimizzazione automatica dei modelli](automatic-model-tuning-limits.md)
+ [Best practice per l'ottimizzazione iperparametri](automatic-model-tuning-considerations.md)

# Comprendi le strategie di ottimizzazione degli iperparametri disponibili in Amazon AI SageMaker
<a name="automatic-model-tuning-how-it-works"></a>

Quando crei sistemi di Machine Learning complessi, ad esempio reti neurali di Deep Learning, è impossibile esplorare tutte le combinazioni possibili. L'ottimizzazione degli iperparametri può accelerare la produttività provando molte varianti di un modello. Cerca automaticamente il modello migliore concentrandosi sulle combinazioni più promettenti di valori degli iperparametri all'interno degli intervalli specificati. Per ottenere buoni risultati, devi scegliere gli intervalli giusti. Questa pagina fornisce una breve spiegazione delle diverse strategie di ottimizzazione degli iperparametri che puoi utilizzare con Amazon SageMaker AI.

Per capire come interagire con l'ottimizzazione degli iperparametri utilizza [la guida API Reference](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html?icmpid=docs_sagemaker_lp). Puoi utilizzare le strategie di ottimizzazione descritte in questa pagina con e. [HyperParameterTuningJobConfig[HyperbandStrategyConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperbandStrategyConfig.html)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html) APIs

**Nota**  
Poiché l’algoritmo è stocastico, è possibile che il modello di ottimizzazione degli iperparametri non riesca a convergere sulla risposta migliore. Ciò può verificarsi anche se la migliore combinazione possibile di valori rientra negli intervalli scelti.

## Ricerca a griglia
<a name="automatic-tuning-grid-search"></a>

 Quando si utilizza la ricerca a griglia, l'ottimizzazione degli iperparametri sceglie combinazioni di valori dall'intervallo di valori categorici specificato al momento della creazione del processo. Quando si utilizza la strategia di ricerca a griglia sono supportati solo i parametri categorici. Non è necessario specificare `MaxNumberOfTrainingJobs`. Il numero di job di addestramento creati dallo stesso processo di ottimizzazione viene calcolato automaticamente come numero totale di combinazioni categoriche distinte possibili. Se specificato, il valore di `MaxNumberOfTrainingJobs` deve essere uguale al numero totale di combinazioni categoriche distinte possibili.

## Ricerca casuale
<a name="automatic-tuning-random-search"></a>

Quando si utilizza una ricerca random, l’ottimizzazione degli iperparametri sceglie una combinazione casuale di valori compresi in intervalli specificati per gli iperparametri di ogni job di addestramento che avvia. La scelta dei valori degli iperparametri non dipende dai risultati dei job di addestramento precedenti. Di conseguenza, puoi eseguire il numero massimo di job di addestramento simultanei senza influire sulle prestazioni dell’ottimizzazione.

Per un notebook di esempio che utilizza la ricerca casuale, consultate il notebook [Ricerca casuale e iperparametrica scaling with SageMaker XGBoost and Automatic Model Tuning](https://github.com/aws/amazon-sagemaker-examples-community/blob/215215eb25b40eadaf126d055dbb718a245d7603/training/sagemaker-automatic-model-tuning/hpo_xgboost_random_log.ipynb).

## Ottimizzazione bayesiana
<a name="automatic-tuning-bayesian-optimization"></a>

L'ottimizzazione bayesiana considera l'ottimizzazione degli iperparametri come un problema di *[regressione](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#[regression])*. Dato un set di caratteristiche di input (iperparametri), l'ottimizzazione degli iperparametri ottimizza un modello per il parametro scelto. Per risolvere un problema di regressione, l’ottimizzazione degli iperparametri cerca di indovinare quali combinazioni di iperparametri hanno maggiori probabilità di ottenere i migliori risultati. Quindi esegue dei job di addestramento per testare questi valori. Dopo aver provato un set di valori per gli iperparametri, l'ottimizzazione degli iperparametri utilizza la regressione per scegliere il set di valori successivo da testare.

L'ottimizzazione degli iperparametri utilizza un'implementazione Amazon SageMaker AI dell'ottimizzazione bayesiana.

Quando si scelgono gli iperparametri migliori per il processo di addestramento successivo, l'ottimizzazione degli iperparametri prende in considerazione tutto ciò che sa sul problema, fino al momento attuale. A volte, sceglie una combinazione di valori di iperparametri simile alla combinazione che ha generato il miglior processo di addestramento precedente per migliorare le prestazioni in modo incrementale. In questo modo, l’ottimizzazione degli iperparametri può utilizzare i migliori risultati noti. Altre volte, sceglie un set di valori di iperparametri molto diversi da quelli che ha già provato. Ciò consente di esplorare l'intervallo di valori degli iperparametri per cercare nuove aree non ancora completamente comprese. Il compromesso tra esplorazione e sfruttamento è comune in molti problemi di Machine Learning.

Per ulteriori informazioni sull'ottimizzazione bayesiana, vedi quanto segue:

**Argomenti di base sull'ottimizzazione bayesiana**
+ [A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning](https://arxiv.org/abs/1012.2599)
+ [Practical Bayesian Optimization of Machine Learning Algorithms](https://arxiv.org/abs/1206.2944)
+ [Taking the Human Out of the Loop: A Review of Bayesian Optimization](https://ieeexplore.ieee.org/document/7352306?reload=true)

**Velocizzazione dell'ottimizzazione bayesiana**
+ [Google Vizier: A Service for Black-Box Optimization](https://dl.acm.org/doi/10.1145/3097983.3098043)
+ [Learning Curve Prediction with Bayesian Neural Networks](https://openreview.net/forum?id=S11KBYclx)
+ [Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves](https://dl.acm.org/doi/10.5555/2832581.2832731)

**Modellazione avanzata e trasferimento dell'apprendimento**
+ [Scalable Hyperparameter Transfer Learning](https://papers.nips.cc/paper_files/paper/2018/hash/14c879f3f5d8ed93a09f6090d77c2cc3-Abstract.html)
+ [Bayesian Optimization with Tree-structured Dependencies](http://proceedings.mlr.press/v70/jenatton17a.html)
+ [Bayesian Optimization with Robust Bayesian Neural Networks](https://papers.nips.cc/paper_files/paper/2016/hash/291597a100aadd814d197af4f4bab3a7-Abstract.html)
+ [Scalable Bayesian Optimization Using Deep Neural Networks](http://proceedings.mlr.press/v37/snoek15.pdf)
+ [Input Warping for Bayesian Optimization of Non-stationary Functions](https://arxiv.org/abs/1402.0929)

## Hyperband
<a name="automatic-tuning-hyperband"></a>

Hyperband è una strategia di ottimizzazione basata sulla multi-fedeltà che rialloca dinamicamente le risorse. Hyperband utilizza sia i risultati intermedi che quelli finali dei processi di addestramento per riassegnare le epoche alle configurazioni di iperparametri ben utilizzate e interrompere automaticamente quelle che hanno prestazioni inferiori. Inoltre, si adatta perfettamente all'utilizzo di molti processi di addestramento paralleli. Queste caratteristiche possono accelerare in modo significativo l'ottimizzazione degli iperparametri rispetto alla ricerca casuale e alle strategie di ottimizzazione bayesiana.

Hyperband deve essere usato solo per ottimizzare algoritmi iterativi che pubblicano risultati a diversi livelli di risorse. Ad esempio, Hyperband può essere utilizzato per ottimizzare una rete neurale per la classificazione delle immagini che pubblica parametri di precisione dopo ogni epoca.

Per ulteriori informazioni su Hyperband, vedi i seguenti collegamenti:
+ [Hyperband: un nuovo approccio basato su Bandit per l'ottimizzazione degli iperparametri](http://arxiv.org/pdf/1603.06560)
+ [Ottimizzazione degli iperparametri massivamente parallela](https://liamcli.com/assets/pdf/asha_arxiv.pdf)
+ [BOHB: ottimizzazione degli iperparametri solida ed efficiente su larga scala](http://proceedings.mlr.press/v80/falkner18a/falkner18a.pdf)
+ [Ricerca asincrona di iperparametri e architetture neurali basata su modelli](https://openreview.net/pdf?id=a2rFihIU7i)

### Hyperband con arresto anticipato
<a name="automatic-tuning-hyperband-early-stopping"></a>

I processi di addestramento possono essere interrotti in anticipo quando è improbabile che migliorino i parametri obiettivi del processo di ottimizzazione degli iperparametri. Questo può aiutare a ridurre i tempi di calcolo e a evitare un overfitting del modello. Hyperband utilizza un meccanismo interno avanzato per applicare l'arresto anticipato. Il parametro `TrainingJobEarlyStoppingType` nell’API `HyperParameterTuningJobConfig` deve essere impostato su `OFF` quando si utilizza la funzionalità di arresto anticipato interna di Hyperband.

**Nota**  
L'ottimizzazione degli iperparametri potrebbe non migliorare il modello. È uno strumento avanzato per la creazione di soluzioni automatiche. In quanto tale, dovrebbe essere considerato parte del processo di sviluppo scientifico. 

# Definisci parametri e variabili di ambiente
<a name="automatic-model-tuning-define-metrics-variables"></a>

Un processo di ottimizzazione ottimizza gli iperparametri per i processi di addestramento avviati utilizzando un parametro per valutare le prestazioni. Questa guida mostra come definire le metriche in modo da poter utilizzare un algoritmo personalizzato per la formazione o utilizzare un algoritmo integrato di Amazon SageMaker AI. Questa guida mostra anche come specificare le variabili di ambiente durante un processo di ottimizzazione automatica dei modelli (AMT).

## Definizione dei parametri
<a name="automatic-model-tuning-define-metrics"></a>

L'ottimizzazione degli iperparametri di Amazon SageMaker AI analizza gli algoritmi `stdout` e i `stderr` flussi di machine learning per trovare parametri, come la perdita o l'accuratezza della convalida. I parametri mostrano le prestazioni del modello sul set di dati. 

Nelle seguenti sezioni viene descritto come utilizzare due tipi di algoritmi per l’addestramento: integrato e personalizzato.

### Utilizza un algoritmo integrato per l’addestramento
<a name="automatic-model-tuning-define-metrics-builtin"></a>

Se utilizzi uno degli [algoritmi integrati di SageMaker intelligenza artificiale, le metriche sono già definite](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) per te. Inoltre, gli algoritmi integrati inviano automaticamente i parametri all'ottimizzazione degli iperparametri. Queste metriche vengono anche scritte nei CloudWatch log di Amazon. Per ulteriori informazioni, consulta [Log Amazon SageMaker AI Events with Amazon CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/logging-cloudwatch.html). 

Per i parametri obiettivi del processo di ottimizzazione, scegli uno dei parametri che l'algoritmo integrato emette. Per un elenco delle metriche disponibili, consulta la sezione sull'ottimizzazione del modello per l'algoritmo appropriato in Use [Amazon SageMaker AI Built-in Algorithms or](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) Pre-training Models.

Puoi scegliere fino a 40 parametri da monitorare per il [processo di ottimizzazione](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterAlgorithmSpecification.html). Seleziona uno di questi parametri come parametro obiettivo. Il processo di ottimizzazione degli iperparametri restituisce il [processo di addestramento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html#sagemaker-DescribeHyperParameterTuningJob-response-BestTrainingJob) che ha ottenuto il miglior risultato rispetto al parametro obiettivo.

**Nota**  
L'ottimizzazione degli iperparametri invia automaticamente un iperparametro aggiuntivo `_tuning_objective_metric` per passare il parametro obiettivo al processo di ottimizzazione per utilizzarlo durante l’addestramento.

### Per l’addestramento utilizza un algoritmo personalizzato
<a name="automatic-model-tuning-define-metrics-custom"></a>

Questa sezione mostra come definire i propri parametri per utilizzare un algoritmo personalizzato per l’addestramento. Quando lo fai, assicurati che l'algoritmo scriva almeno un parametro su `stderr` o `stdout`. L'ottimizzazione degli iperparametri analizza questi flussi per trovare i parametri dell'algoritmo che mostrano le prestazioni del modello sul set di dati.

Puoi definire i parametri personalizzati specificando un nome e un'espressione regolare per ogni parametro monitorato dal processo di ottimizzazione. Quindi, passa queste definizioni dei parametri all'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html) nel parametro `TrainingJobDefinition` nel campo `MetricDefinitions` di `AlgorithmSpecification`.

Di seguito viene mostrato un esempio di output da un log scritto su `stderr` o `stdout` da un algoritmo di addestramento.

```
GAN_loss=0.138318;  Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587;  Loss = 16.020744;  Iteration 0 took 0.704s;  Elapsed=0s
```

Il seguente esempio di codice mostra come utilizzare le espressioni regolari in Python (regex). Viene utilizzato per cercare l'output del log di esempio e catturare i valori numerici di quattro diversi parametri.

```
[
    {
        "Name": "ganloss",
        "Regex": "GAN_loss=(.*?);",
    },
    {
        "Name": "disc-combined",
        "Regex": "disc-combined=(.*?);",
    },
    {
        "Name": "discloss",
        "Regex": "disc_train_loss=(.*?);",
    },
    {
        "Name": "loss",
        "Regex": "Loss = (.*?);",
    },
]
```

Nelle espressioni regolari, le parentesi `()` vengono utilizzate per raggruppare parti dell'espressione regolare.
+ Per il parametro `loss` definito nell'esempio di codice, l'espressione `(.*?);` acquisisce qualsiasi carattere compreso tra il testo esatto `"Loss="` e il primo carattere punto e virgola (`;`).
+ Il carattere `.` indica all'espressione regolare di corrispondere a qualsiasi carattere.
+  Il carattere `*` significa abbinare zero o più caratteri. 
+ Il carattere `?` significa: cattura solo fino alla prima istanza del carattere `;`. 

Il parametro di perdita definito nell'esempio di codice catturerà `Loss = 16.020744` dall'output di esempio.

Scegli uno dei parametri che hai definito come parametro obiettivo per il processo di ottimizzazione. Se utilizzi l' SageMaker API, specifica il valore della `name` chiave nel `HyperParameterTuningJobObjective` campo del `HyperParameterTuningJobConfig` parametro che invii all'operazione. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)

## Specificare variabili di ambiente
<a name="automatic-model-tuning-define-variables"></a>

SageMaker AI AMT ottimizza gli iperparametri all'interno di un processo di ottimizzazione per trovare i parametri migliori per le prestazioni del modello. È possibile utilizzare le variabili di ambiente per configurare il processo di ottimizzazione e modificarne il comportamento. Puoi anche utilizzare le variabili di ambiente che hai usato durante l’addestramento all'interno del tuo processo di ottimizzazione.

Se desideri utilizzare una variabile di ambiente derivante dal processo di ottimizzazione o specificare una nuova variabile di ambiente, inserisci un valore di stringa all'interno dell'API AI`Environment`. SageMaker [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html) Passa questa definizione del processo di formazione all'[CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)API.

Ad esempio, la variabile di ambiente `SM_LOG_LEVEL` può essere impostata sui seguenti valori per personalizzare l'output di un container Python.

```
NOTSET=0
DEBUG=10
INFO=20
WARN=30
ERROR=40
CRITICAL=50
```

Ad esempio, per impostare il livello di registro su cui `10` eseguire il debug dei log del contenitore, imposta la variabile di ambiente all'interno di [HyperParameterTrainingJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html), come segue.

```
{
   "[HyperParameterTuningJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html#sagemaker-CreateHyperParameterTuningJob-request-HyperParameterTuningJobConfig)": { 
   ...,
   }
   "[TrainingJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html#sagemaker-CreateHyperParameterTuningJob-request-TrainingJobDefinition)": { 
      ...,
      "Environment" : [
          {
            "SM_LOG_LEVEL": 10 
          }
      ],
      ...,
   },
   ...,        
}
```

# Definire gli intervalli degli iperparametri
<a name="automatic-model-tuning-define-ranges"></a>

Questa guida mostra come utilizzare per definire gli intervalli SageMaker APIs di iperparametri. È inoltre disponibile un elenco dei tipi di dimensionamento degli iperparametri che è possibile utilizzare.

La scelta degli iperparametri e degli intervalli influisce notevolmente sulle prestazioni del processo di ottimizzazione. L'ottimizzazione degli iperparametri trova i migliori valori degli iperparametri per il tuo modello cercando in un [intervallo](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-HyperParameterRanges) di valori che tu specifichi per ogni iperparametro ottimizzabile. È inoltre possibile specificare fino a 100 [iperparametri statici](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters) che non cambiano nel corso del processo di ottimizzazione. È possibile utilizzare fino a un totale di 100 iperparametri (statici \$1 regolabili). Per indicazioni sulla scelta degli iperparametri e degli intervalli, consulta [Best practice per l'ottimizzazione iperparametri](automatic-model-tuning-considerations.md). Per trovare le impostazioni ottimali del processo di ottimizzazione puoi anche utilizzare l'ottimizzazione automatica. Per ulteriori informazioni, consulta la sezione **Ottimizzazione automatica**.

**Nota**  
SageMaker AI Automatic Model Tuning (AMT) può aggiungere iperparametri aggiuntivi che contribuiscono al limite di 100 iperparametri totali. Attualmente, per passare la metrica degli obiettivi al processo di ottimizzazione da utilizzare durante l'allenamento, l'IA aggiunge automaticamente. SageMaker `_tuning_objective_metric`

## Iperparametri statici
<a name="automatic-model-tuning-define-ranges-static"></a>

Utilizza iperparametri statici per i seguenti casi:    Se hai conoscenze di base che ti guidano nella selezione di un valore costante.   Se non intendi esplorare un intervallo di valori per gli iperparametri.   Ad esempio, è possibile utilizzare AMT per ottimizzare il modello utilizzando `param1` (un parametro regolabile) e `param2` (un parametro statico). In tal caso, utilizza uno spazio di ricerca `param1` compreso tra due valori e passa `param2` come iperparametro statico, come segue .

```
param1: ["range_min","range_max"]
param2: "static_value"
```

Gli iperparametri statici hanno la seguente struttura:

```
"StaticHyperParameters": {
    "objective" : "reg:squarederror",
    "dropout_rate": "0.3"
}
```

Puoi utilizzare l' SageMaker API Amazon per specificare coppie chiave-valore nel [StaticHyperParameters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters)campo del `HyperParameterTrainingJobDefinition` parametro che passi all'[CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)operazione.

## Iperparametri dinamici
<a name="automatic-model-tuning-define-ranges-dynamic"></a>

Puoi utilizzare l' SageMaker API per definire [intervalli di iperparametri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-HyperParameterRanges). Specifica i nomi degli iperparametri e degli intervalli di valori nel campo `ParameterRanges` del parametro `HyperParameterTuningJobConfig` che passi all'operazione [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html). 

Il campo `ParameterRanges` ha tre sottocampi: categorico, intero e continuo. È possibile definire fino a 30 Iperparametri ottimizzabili totali (categorici\$1 interi\$1continui) su cui eseguire la ricerca. 

**Nota**  
Ogni iperparametro categorico può avere al massimo 30 valori diversi.

Gli iperparametri dinamici hanno la seguente struttura:

```
"ParameterRanges": {
    "CategoricalParameterRanges": [
        {
            "Name": "tree_method",
            "Values": ["auto", "exact", "approx", "hist"]
        }
    ],
    "ContinuousParameterRanges": [
        {
            "Name": "eta",
            "MaxValue" : "0.5",
            "MinValue": "0",
            "ScalingType": "Auto"
        }
    ],
    "IntegerParameterRanges": [
        {
            "Name": "max_depth",
            "MaxValue": "10",
            "MinValue": "1",
            "ScalingType": "Auto"
        }
    ]
}
```

Se crei un processo di ottimizzazione con una strategia `Grid`, puoi specificare solo valori categorici. Non è necessario fornire `MaxNumberofTrainingJobs`. Questo valore viene dedotto dal numero totale di configurazioni che possono essere prodotte dai parametri categorici. Se specificato, il valore di `MaxNumberOfTrainingJobs` deve essere uguale al numero totale di combinazioni categoriche distinte possibili.

## Ottimizzazione automatica
<a name="automatic-model-tuning-define-ranges-autotune"></a>

Per risparmiare tempo e risorse nella ricerca di intervalli di iperparametri, risorse o parametri obiettivi, l'ottimizzazione automatica è in grado di indovinare automaticamente i valori ottimali per alcuni campi di iperparametri. Utilizza l'ottimizzazione automatica per trovare i valori ottimali per i campi seguenti:
+ **[ParameterRanges](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-ParameterRanges)**— I nomi e gli intervalli di iperparametri che un processo di ottimizzazione può ottimizzare.
+ **[ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html)**— Le risorse massime da utilizzare in un lavoro di ottimizzazione. Queste risorse possono includere il numero massimo di processi di addestramento, la durata massima di un processo di ottimizzazione e il numero massimo di processi di addestramento che possono essere eseguiti contemporaneamente.
+ **[TrainingJobEarlyStoppingType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-TrainingJobEarlyStoppingType)**— Un indicatore che interrompe un processo di formazione se un lavoro non migliora in modo significativo rispetto a una metrica oggettiva. L'impostazione predefinita è abilitata. Per ulteriori informazioni, consulta [Interrompere in anticipo i processi di addestramento](automatic-model-tuning-early-stopping.md).
+ **[RetryStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-RetryStrategy)**— Il numero di volte in cui si riprova un lavoro di formazione. Valori diversi da zero per `RetryStrategy` possono aumentare la probabilità che il processo venga completato con successo.
+ **[Strategia](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-Strategy)**: specifica in che modo l'ottimizzazione degli iperparametri sceglie le combinazioni di valori degli iperparametri da utilizzare per il processo di addestramento avviato.
+ **[ConvergenceDetected](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ConvergenceDetected.html)**— Un flag per indicare che Automatic Model Tuning (AMT) ha rilevato la convergenza del modello.

Per utilizzare l'ottimizzazione automatica, effettuare le seguenti operazioni:

1. Specificate l'iperparametro e un valore di esempio nel `AutoParameters` campo dell'API. [ParameterRanges](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ParameterRanges.html)

1. Abilitare l'ottimizzazione automatica.

AMT determinerà se gli iperparametri e i valori di esempio sono idonei per l'ottimizzazione automatica. Gli iperparametri che possono essere utilizzati nell'ottimizzazione automatica vengono assegnati automaticamente al tipo di intervallo di parametri appropriato. Quindi, AMT utilizza `ValueHint` per selezionare un intervallo ottimale per te. È possibile utilizzare l'API `DescribeHyperParameterTrainingJob` per visualizzare gli intervalli.

L'esempio seguente mostra come configurare un processo di ottimizzazione che utilizza l'ottimizzazione automatica. Nell'esempio di configurazione, l'iperparametro `max_depth` ha `ValueHint` che contiene un valore di esempio di `4`.

```
config = {
    'Autotune': {'Mode': 'Enabled'},
    'HyperParameterTuningJobName':'my-autotune-job',
    'HyperParameterTuningJobConfig': {
        'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'},
        'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1},
        'ParameterRanges': {       
            'AutoParameters': [
                {'Name': 'max_depth', 'ValueHint': '4'}
            ]
        }
    },
    'TrainingJobDefinition': {
    .... }
```

Continuando l'esempio precedente, viene creato un processo di ottimizzazione dopo che la configurazione precedente è stata inclusa in una chiamata all'API `CreateHyperParameterTuningJob`. Quindi, autotune converte l'iperparametro max\$1depth in iperparametro. AutoParameters `IntegerParameterRanges` La seguente risposta di un'API `DescribeHyperParameterTrainingJob` mostra che i valori ottimali `IntegerParameterRanges`per `max_depth` sono compresi tra `2` e `8`.

```
{
    'HyperParameterTuningJobName':'my_job',
    'HyperParameterTuningJobConfig': {
        'ParameterRanges': {
            'IntegerParameterRanges': [
                {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'},
            ],
        }
    },
    'TrainingJobDefinition': {
        ...
    },
    'Autotune': {'Mode': 'Enabled'}
    
}
```

## Tipi di dimensionamento degli iperparametri
<a name="scaling-type"></a>

Per gli intervalli di iperparametri interi e continui, puoi scegliere la scalabilità che vuoi utilizzare per l'ottimizzazione degli iperparametri. Ad esempio, per cercare nell'intervallo di valori, è possibile specificare un valore per il campo `ScalingType` dell'intervallo di iperparametri. Puoi scegliere tra i seguenti tipi di dimensionamento degli iperparametri:

Automatico  
SageMaker L'ottimizzazione degli iperparametri AI sceglie la scala migliore per l'iperparametro.

Linear (Lineare)  
L'ottimizzazione degli iperparametri cerca i valori nell'intervallo degli iperparametri utilizzando una scala lineare. In genere, si sceglie questa opzione se l'intervallo di tutti i valori dal più basso al più alto è relativamente piccolo (entro un ordine di grandezza). La ricerca uniforme dei valori dell'intervallo fornisce un'esplorazione ragionevole dell'intero intervallo.

Logarithmic (Logaritmico)  
L'ottimizzazione degli iperparametri cerca i valori nell'intervallo degli iperparametri utilizzando una scala logaritmica.  
Il dimensionamento logaritmico funziona per intervalli che includono esclusivamente valori maggiori di 0.  
Scegli il dimensionamento logaritmico per le ricerche in un intervallo che include diversi ordini di grandezza.   
Ad esempio, se stai ottimizzando un modello [Ottimizzazione di un modello di apprendimento lineare](linear-learner.md) e specifichi un intervallo di valori compreso tra 0,0001 e 1,0 per l'iperparametro `learning_rate`, considera quanto segue: la ricerca uniforme su una scala logaritmica offre un campione migliore dell'intero intervallo rispetto alla ricerca su una scala lineare. Questo perché una ricerca su scala lineare dedicherebbe, in media, il 90 percento del budget di addestramento solo per i valori compresi tra 0,1 e 1,0. Di conseguenza, rimarrebbe solo il 10 percento del budget di addestramento per i valori compresi tra 0,0001 e 0,1.

`ReverseLogarithmic`  
L'ottimizzazione degli iperparametri cerca i valori nell'intervallo degli iperparametri utilizzando una scala logaritmica inversa. Il ridimensionamento logaritmico inverso è supportato solo per intervalli di iperparametri continui. Non è supportato per gli intervalli di iperparametri interi.  
Scegli il dimensionamento logaritmico inverso per la ricerca in un intervallo che è altamente sensibile alle piccole modifiche molto vicine a 1.  
Il dimensionamento logaritmico inverso funziona solo per gli intervalli interamente compresi in 0<=x<1,0.

Per un notebook di esempio che utilizza la scalabilità iperparametrica, consulta questi esempi di [iperparametri di Amazon SageMaker AI su](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning). GitHub

# Monitora e imposta i criteri di completamento del tuo processo di ottimizzazione
<a name="automatic-model-tuning-progress"></a>

È possibile utilizzare i criteri di completamento per indicare all'Ottimizzazione automatica dei modelli (AMT) di interrompere il processo di ottimizzazione se vengono soddisfatte determinate condizioni. Con queste condizioni, puoi impostare le prestazioni minime del modello o il numero massimo di processi di addestramento che non migliorano se valutati rispetto al parametro obiettivo. Puoi anche monitorare lo stato di avanzamento del processo di ottimizzazione e decidere di lasciarlo continuare o di interromperlo manualmente. Questa guida mostra come impostare i criteri di completamento, controllare lo stato di avanzamento e interrompere manualmente il processo di ottimizzazione.

## Imposta i criteri di completamento per il tuo processo di ottimizzazione
<a name="automatic-model-tuning-progress-completion"></a>

Durante l'ottimizzazione degli iperparametri, un processo di ottimizzazione avvierà diversi processi di addestramento all'interno di un ciclo. Il processo di ottimizzazione eseguirà le seguenti operazioni. 
+ Verifica che i tuoi processi di addestramento siano completati e aggiorna le statistiche di conseguenza
+ Decide quale combinazione di iperparametri valutare successivamente.

AMT controllerà continuamente i processi di addestramento avviati durante il processo di ottimizzazione per aggiornare le statistiche. Queste statistiche includono l'ottimizzazione della durata del processo e il miglior processo di addestramento. Quindi, AMT determina se interrompere il processo in base ai criteri di completamento. Puoi anche controllare queste statistiche e interrompere il processo manualmente. Per ulteriori informazioni sull'interruzione manuale di un processo, consulta la sezione [Interruzione manuale del processo di ottimizzazione](#automatic-model-tuning-progress-stop).

Ad esempio, se il processo di ottimizzazione soddisfa l'obiettivo, è possibile interromperlo in anticipo per risparmiare risorse o garantire la qualità del modello. AMT verifica le prestazioni del processo in base ai criteri di completamento e interrompe il processo di ottimizzazione se ne vengono soddisfatti alcuni. 

È possibile specificare i seguenti tipi di criteri di completamento:
+ `MaxNumberOfTrainingJobs`: il numero massimo di processi di addestramento da eseguire prima che l'ottimizzazione venga interrotta.
+ `MaxNumberOfTrainingJobsNotImproving`: il numero massimo di processi di addestramento che non migliorano le prestazioni rispetto al parametro obiettivo del migliore processo di addestramento attuale. Ad esempio, se il migliore processo di addestramento restituisce un parametro obiettivo con una precisione di `90%`, e `MaxNumberOfTrainingJobsNotImproving` è impostato su `10`. In questo esempio, l'ottimizzazione si interromperà dopo che `10` processi di addestramento non riusciranno a restituire con un'accuratezza superiore a `90`%.
+ `MaxRuntimeInSeconds`: il limite massimo del tempo di funzionamento di un orologio da parete, espresso in secondi, che indica la durata di un processo di ottimizzazione.
+ `TargetObjectiveMetricValue`: il valore del parametro obiettivo rispetto al quale viene valutato il processo di ottimizzazione. Una volta raggiunto questo valore, AMT interrompe il processo di ottimizzazione.
+ `CompleteOnConvergence`: un indicatore per interrompere l'ottimizzazione dopo che un algoritmo interno indica che è improbabile che il processo di ottimizzazione migliori di oltre l'1% rispetto al parametro obiettivo del miglior processo di addestramento.

### Selezione dei criteri di completamento
<a name="automatic-model-tuning-progress-completion-how"></a>

È possibile scegliere uno o più criteri di completamento per interrompere il processo di ottimizzazione degli iperparametri dopo che una condizione è stata soddisfatta. Le seguenti istruzioni mostrano come selezionare i criteri di completamento e come decidere qual è il più appropriato per il tuo caso d'uso.
+ Utilizzalo `MaxNumberOfTrainingJobs` nell'[ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html)API per impostare un limite massimo per il numero di lavori di formazione che possono essere eseguiti prima che il processo di ottimizzazione venga interrotto. Inizia con un numero elevato e modificalo in base alle prestazioni del modello rispetto all'obiettivo del processo di ottimizzazione. Per trovare una configurazione degli iperparametri ottimale la maggior parte degli utenti inserisce valori di circa `50` o più processi di addestramento. Gli utenti che cercano livelli più elevati di prestazioni del modello utilizzeranno `200` o più processi di taining.
+ Utilizzalo `MaxNumberOfTrainingJobsNotImproving` nel campo [BestObjectiveNotImproving](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_BestObjectiveNotImproving.html)API per interrompere l'addestramento se le prestazioni del modello non migliorano dopo un determinato numero di lavori. Le prestazioni del modello vengono valutate rispetto a una funzione obiettiva. Una volta raggiunto `MaxNumberOfTrainingJobsNotImproving`, AMT interromperà il processo di ottimizzazione. I processi di ottimizzazione tendono a fare i maggiori progressi all'inizio del lavoro. Il miglioramento delle prestazioni del modello rispetto a una funzione obiettiva richiederà un maggior numero di processi di addestramento verso la fine dell’ottimizzazione. Seleziona un valore per `MaxNumberOfTrainingJobsNotImproving` confrontando le prestazioni di processi di addestramento simili rispetto al tuo parametro obiettivo.
+ `MaxRuntimeInSeconds`Utilizzalo nell'[ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html)API per impostare un limite massimo per la quantità di tempo che l'orologio da parete può impiegare per il lavoro di ottimizzazione. Utilizza questo campo per rispettare una scadenza entro la quale il processo di ottimizzazione deve essere completato o per limitare le risorse di calcolo.

  Per ottenere un tempo di calcolo totale stimato in secondi per un processo di ottimizzazione, utilizza la formula seguente:

  Tempo massimo di elaborazione stimato in secondi= `MaxRuntimeInSeconds`\$1 `MaxParallelTrainingJobs`\$1 `MaxInstancesPerTrainingJob` 
**Nota**  
La durata effettiva di un processo di ottimizzazione può differire leggermente dal valore specificato in questo campo.
+ Utilizzalo `TargetObjectiveMetricValue` nell'[TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html)API per interrompere il processo di ottimizzazione. Il processo di ottimizzazione viene interrotto dopo che qualsiasi processo di addestramento avviato dal processo di ottimizzazione raggiunge questo valore di parametro obiettivo. Utilizza questo campo se il tuo caso d'uso dipende dal raggiungimento di un livello di prestazioni specifico, anziché spendere risorse di calcolo per trovare il miglior modello possibile.
+ Utilizzalo `CompleteOnConvergence` nell'[TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html)API per interrompere un processo di ottimizzazione dopo che AMT ha rilevato che il processo di ottimizzazione è convergente ed è improbabile che compia ulteriori progressi significativi. Utilizza questo campo quando non è chiaro quali valori utilizzare per gli altri criteri di completamento. AMT determina la convergenza sulla base di un algoritmo sviluppato e testato su un'ampia gamma di benchmark diversi. Si definisce convergente un processo di ottimizzazione quando nessuno dei processi di addestramento produce un miglioramento significativo (1% o meno). Il miglioramento viene misurato rispetto al parametro obiettivo restituito dal processo con le prestazioni più elevate, fino a quel punto.

### Combinazione di diversi criteri di completamento
<a name="automatic-model-tuning-progress-completion-combine"></a>

È inoltre possibile, nello stesso processo di ottimizzazione, combinare uno qualsiasi dei diversi criteri di completamento. AMT interromperà il processo di ottimizzazione quando uno dei criteri di completamento sarà soddisfatto. Ad esempio, se desideri ottimizzare il modello fino a raggiungere un parametro obiettivo, ma non vuoi continuare a perfezionarlo se il tuo processo è convergente, usa la seguente guida.
+ Specificate `TargetObjectiveMetricValue` nell'[TuningJobCompletionCriteria](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TuningJobCompletionCriteria.html)API di impostare un valore metrico obiettivo da raggiungere.
+ Imposta questa `Enabled` opzione [CompleteOnConvergence](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ConvergenceDetected.html)per interrompere un processo di ottimizzazione se AMT ha stabilito che è improbabile che le prestazioni del modello migliorino.

## Monitora l'avanzamento del processo di ottimizzazione
<a name="automatic-model-tuning-progress-track"></a>

Puoi utilizzare l'API `DescribeHyperParameterTuningJob` per monitorare in qualsiasi momento lo stato di avanzamento del processo di ottimizzazione mentre è in esecuzione. Non è necessario specificare i criteri di completamento per ottenere informazioni di tracciamento relative al processo di ottimizzazione. Utilizza i seguenti campi per ottenere statistiche sul tuo processo di ottimizzazione.
+ [BestTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html#sagemaker-DescribeHyperParameterTuningJob-response-BestTrainingJob)— Un oggetto che descrive il miglior lavoro formativo ottenuto finora, valutato in base alla metrica oggettiva. Utilizza questo campo per verificare le prestazioni attuali del modello e il valore del parametro obiettivo di questo miglior processo di addestramento.
+ [ObjectiveStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html#sagemaker-DescribeHyperParameterTuningJob-response-ObjectiveStatusCounters)— Un oggetto che specifica il numero totale di lavori di formazione completati in un lavoro di ottimizzazione. Per stimare la durata media di un processo di ottimizzazione, utilizza `ObjectiveStatusCounters` e la durata totale di un processo di ottimizzazione. È possibile utilizzare la durata media per stimare per quanto tempo durerà il processo di ottimizzazione.
+ `ConsumedResources`: le risorse totali, ad esempio `RunTimeInSeconds`, spesi dal processo di ottimizzazione. Confronta`ConsumedResources`, trovato nell'[DescribeHyperParameterTuningJob ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html)API, con quello contenuto `BestTrainingJob` nella stessa API. Puoi anche fare un `ConsumedResources` confronto con la risposta dell'[ListTrainingJobsForHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingJobsForHyperParameterTuningJob.html)API per valutare se il tuo lavoro di ottimizzazione sta facendo progressi soddisfacenti alla luce delle risorse consumate.
+ [TuningJobCompletionDetails](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobCompletionDetails.html)— Informazioni sul completamento del processo di ottimizzazione che includono quanto segue:
  + Il timestamp di quando viene rilevata la convergenza se il processo è convergente.
  + Il numero di processi di addestramento che non hanno migliorato le prestazioni del modello. Le prestazioni del modello vengono valutate in base al parametro obiettivo del miglior processo di addestramento.

  Utilizza i criteri di completamento del processo di ottimizzazione per valutare la probabilità che il processo di ottimizzazione migliori le prestazioni del modello. Le prestazioni del modello vengono valutate sulla base del migliore parametro obiettivo, se il modello è stato completato.

## Interruzione manuale del processo di ottimizzazione
<a name="automatic-model-tuning-progress-stop"></a>

È possibile determinare se lasciare che il processo di ottimizzazione venga eseguito fino al suo completamento o se interrompere il processo di ottimizzazione manualmente. Per determinarlo, utilizza le informazioni restituite dai parametri nell'API `DescribeHyperParameterTuningJob`, come mostrato nella precedente sezione **Ottimizzazione dell'avanzamento del processo**. Ad esempio, se le prestazioni del modello non migliorano dopo il completamento di diversi processi di addestramento, è possibile scegliere di interrompere il processo di ottimizzazione. Le prestazioni del modello vengono valutate sulla base del miglior parametro obiettivo.

Per interrompere manualmente il processo di ottimizzazione, utilizza l'[StopHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopHyperParameterTuningJob.html)API e fornisci il nome del processo di ottimizzazione da interrompere.

# Ottimizza più algoritmi con l'ottimizzazione degli iperparametri per trovare il modello migliore
<a name="multiple-algorithm-hpo"></a>

Per creare un nuovo processo di ottimizzazione degli iperparametri (HPO) con Amazon SageMaker AI che ottimizza più algoritmi, devi fornire impostazioni di lavoro che si applicano a tutti gli algoritmi da testare e una definizione di training per ciascuno di questi algoritmi. È inoltre necessario specificare le risorse che si desidera utilizzare per il processo di ottimizzazione.
+ Le **impostazioni del processo** da configurare includono l'avvio a caldo, l'arresto anticipato e la strategia di ottimizzazione. L'avvio a caldo e l'arresto anticipato sono disponibili solo quando si ottimizza un singolo algoritmo.
+ La **definizione del processo di addestramento** per specificare il nome, la fonte dell'algoritmo, il parametro obiettivo e l'intervallo di valori, se necessario, per configurare l'insieme di valori degli iperparametri per ogni processo di addestramento. Configura i canali per l'input dei dati, le posizioni di output dei dati e tutti i percorso di archiviazione dei checkpoint per ogni processo di addestramento. La definizione configura anche le risorse da implementare per ogni processo di addestramento, compresi i tipi e il numero di istanze, l’addestramento spot gestito e le condizioni di arresto.
+ Le **risorse del processo di ottimizzazione**: da distribuire, compreso il numero massimo di processi di addestramento concomitanti che un processo di ottimizzazione degli iperparametri può eseguire simultaneamente e il numero massimo di processi di addestramento che il processo di ottimizzazione degli iperparametri può eseguire.

## Nozioni di base
<a name="multiple-algorithm-hpo-get-started"></a>

Puoi creare un nuovo processo di ottimizzazione degli iperparametri, clonare un processo, aggiungere o modificare i tag di un processo dalla console. È inoltre possibile utilizzare la funzione di ricerca per trovare le attività in base al nome, all'ora di creazione o allo stato. In alternativa, puoi anche eseguire lavori di ottimizzazione iperparametrica con l'API AI. SageMaker 
+ **Nella console**: per creare un nuovo lavoro, apri la console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/), scegli **Lavori di ottimizzazione iperparametrica** dal menu **Formazione**, quindi scegli **Crea processo di ottimizzazione iperparametrica**. Quindi esegui le fasi di configurazione per creare un processo di addestramento per ogni algoritmo che desideri utilizzare. Queste fasi sono documentate nell'argomento [Creare un processo di ottimizzazione degli iperparametri per uno o più algoritmi (console)](multiple-algorithm-hpo-create-tuning-jobs.md). 
**Nota**  
Quando avvii le fasi di configurazione, tieni presente che le funzionalità di avvio a caldo e di arresto anticipato non sono disponibili per essere usati con HPO a più algoritmi. Per utilizzare queste funzionalità, puoi ottimizzare solo un singolo algoritmo alla volta. 
+ **Con l'API**: per istruzioni sull'utilizzo dell' SageMaker API per creare un processo di ottimizzazione degli iperparametri, vedi [Esempio: Hyperparameter Tuning](automatic-model-tuning-ex.html) Job. Quando chiami [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)per ottimizzare più algoritmi, devi fornire un elenco di definizioni di addestramento utilizzando [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html#sagemaker-CreateHyperParameterTuningJob-request-TrainingJobDefinitions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html#sagemaker-CreateHyperParameterTuningJob-request-TrainingJobDefinitions)invece di specificarne una sola. [TrainingJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html#sagemaker-CreateHyperParameterTuningJob-request-TrainingJobDefinition) È necessario fornire impostazioni di processo che si applichino a tutti gli algoritmi da testare e una definizione di addestramento per ciascuno di questi algoritmi. È inoltre necessario specificare le risorse che si desidera utilizzare per il processo di ottimizzazione. Scegli solo uno di questi tipi di definizione a seconda del numero di algoritmi da ottimizzare. 

**Topics**
+ [Nozioni di base](#multiple-algorithm-hpo-get-started)
+ [Creare un processo di ottimizzazione degli iperparametri per uno o più algoritmi (console)](multiple-algorithm-hpo-create-tuning-jobs.md)
+ [Gestire i processi di ottimizzazione e addestramento degli iperparametri](multiple-algorithm-hpo-manage-tuning-jobs.md)

# Creare un processo di ottimizzazione degli iperparametri per uno o più algoritmi (console)
<a name="multiple-algorithm-hpo-create-tuning-jobs"></a>

Questa guida mostra come creare un nuovo processo di ottimizzazione degli iperparametri (HPO) per uno o più algoritmi. Per creare un processo HPO, definisci le impostazioni per il processo di ottimizzazione e crea le definizioni dei processi di addestramento per ogni algoritmo da ottimizzare. Quindi, configura le risorse e crea il processo di ottimizzazione. Nelle seguenti sezioni sono fornite maggiori informazioni su come completare ogni fase. Alla fine di questa guida forniamo un esempio di come ottimizzare più algoritmi utilizzando SageMaker AI SDK for Python client.

## Componenti di un processo di ottimizzazione
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-settings"></a>

Un processo di ottimizzazione HPO contiene i seguenti tre componenti:
+ Impostazioni del processo di ottimizzazione
+ Definizioni del processo di addestramento
+ Configurazione del processo di ottimizzazione

Il modo in cui questi componenti vengono inclusi nel processo di ottimizzazione HPO dipende dal fatto che il processo di ottimizzazione contenga uno o più algoritmi di addestramento. La seguente guida descrive ciascuno dei componenti e fornisce un esempio di entrambi i tipi di processi di ottimizzazione.

### Impostazioni del processo di ottimizzazione
<a name="multiple-algorithm-hpo-create-tuning-jobs-components-tuning-settings"></a>

Le impostazioni dell'attività di ottimizzazione vengono applicate a tutti gli algoritmi dell'attività di ottimizzazione HPO. L'avvio a caldo e l'arresto anticipato sono disponibili solo quando si ottimizza un singolo algoritmo. Dopo aver definito le impostazioni dell'attività, è possibile creare definizioni di addestramento individuali per ogni algoritmo o variazione che si desidera ottimizzare. 

**Avvio a caldo**  
Se è stata clonata quest'attività, è possibile scegliere di utilizzare i risultati di un'attività di ottimizzazione precedente per migliorare le prestazioni di questa nuova attività di ottimizzazione. Questa è la funzione di avvio a caldo ed è disponibile solo per l'elaborazione di un singolo algoritmo. Con l'opzione di avvio a caldo, puoi scegliere fino a cinque processi di ottimizzazione degli iperparametri precedenti da utilizzare. In alternativa, puoi utilizzare l'apprendimento del trasferimento per aggiungere ulteriori dati al processo di ottimizzazione principale. Quando si seleziona questa opzione, si sceglie un'attività di ottimizzazione precedente come padre. 

**Nota**  
L'avvio a caldo è compatibile solo con le attività di ottimizzazione create dopo il 1 ottobre 2018. Per ulteriori informazioni, consulta [Eseguire un'attività di avvio a caldo](automatic-model-tuning-considerations.html).

**Arresto anticipato**  
Per ridurre i tempi di calcolo ed evitare un overfitting del modello, puoi interrompere i processi di addestramento in anticipo. L'arresto anticipato è utile quando è improbabile che il processo di addestramento migliori l'attuale migliore parametro obiettivo del processo di ottimizzazione degli iperparametri. Come per l'avvio a caldo, questa funzione è disponibile solo quando si ottimizza un singolo algoritmo. Si tratta di una funzionalità automatica senza opzioni di configurazione ed è disattivata per impostazione predefinita. Per ulteriori informazioni su come funziona l'arresto anticipato, sugli algoritmi che lo supportano e su come utilizzarlo con i propri algoritmi, consulta [Interrompere in anticipo i processi di addestramento](automatic-model-tuning-early-stopping.html).

**Strategia di ottimizzazione**  
La strategia di ottimizzazione può essere casuale, bayesiana o Hyperband. Queste selezioni specificano il modo in cui gli algoritmi di ottimizzazione automatica cercano intervalli di iperparametri specificati che vengono selezionati in una fase successiva. La ricerca casuale sceglie combinazioni casuali di valori dagli intervalli specificati e può essere eseguita in sequenza o in parallelo. L'ottimizzazione bayesiana sceglie i valori in base a ciò che è probabile che ottenga il miglior risultato in base alla cronologia nota delle selezioni precedenti. Hyperband utilizza una strategia multi-fedeltà che alloca dinamicamente le risorse verso processi ben utilizzati e blocca automaticamente quelli con prestazioni inferiori. La nuova configurazione che inizia dopo l'interruzione di altre configurazioni viene scelta casualmente.

 Hyperband può essere utilizzato solo con algoritmi iterativi o algoritmi che eseguono fasi iterative, come [https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) o [Random Cut Forest](https://docs.aws.amazon.com/sagemaker/latest/dg/randomcutforest.html). Hyperband non può essere utilizzato con algoritmi non iterativi, come alberi decisionali o [k-Nearest Neighbors](https://docs.aws.amazon.com/sagemaker/latest/dg/k-nearest-neighbors.html). Per ulteriori informazioni sulle strategie di ricerca, vedere [Come funziona l'ottimizzazione degli iperparametri](automatic-model-tuning-how-it-works.html).

**Nota**  
Hyperband utilizza un meccanismo interno avanzato per applicare l'arresto anticipato. Pertanto, quando si utilizza la funzionalità interna Hyperband di arresto anticipato, il parametro `TrainingJobEarlyStoppingType` nell'API `HyperParameterTuningJobConfig` deve essere impostato su `OFF`.

**Tag**  
Per aiutarti a gestire i processi di ottimizzazione, puoi inserire i tag come coppie chiave-valore per assegnare i metadati ai processi di ottimizzazione. I valori nella coppia chiave-valore non sono obbligatori. È possibile utilizzare la chiave senza valori. Per visualizzare le chiavi associate a un'attività, scegliere la scheda **Tag** nella pagina dei dettagli del processo di ottimizzazione. Per ulteriori informazioni sull'utilizzo dei tag per i processi di ottimizzazione, consultare [Gestire i processi di ottimizzazione e addestramento degli iperparametri](multiple-algorithm-hpo-manage-tuning-jobs.md).

### Definizioni del processo di addestramento
<a name="multiple-algorithm-hpo-create-tuning-jobs-training-definitions"></a>

Per creare una definizione del processo di addestramento, è necessario configurare l'algoritmo e i parametri, definire l'input e l'output dei dati e configurare le risorse. Fornisci almeno una [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobDefinition.html) per ogni processo di ottimizzazione HPO. Ogni definizione di addestramento specifica la configurazione di un algoritmo.

Per creare diverse definizioni per il tuo processo di addestramento, puoi clonare una definizione. La clonazione di un processo può far risparmiare tempo perché copia tutte le impostazioni del processo, inclusi i canali di dati e le posizioni di archiviazione di Amazon S3 degli artefatti di output. Puoi modificare un processo clonato per cambiare ciò che ti serve per il tuo caso d'uso.

**Topics**
+ [Configura algoritmo e parametri](#multiple-algorithm-hpo-algorithm-configuration)
+ [Definizione dell'input e dell'output dei dati](#multiple-algorithm-hpo-data)
+ [Configurare le risorse per il processo di addestramento](#multiple-algorithm-hpo-training-job-definition-resources)
+ [Aggiungi o clona un processo di addestramento](#multiple-algorithm-hpo-add-training-job)

#### Configura algoritmo e parametri
<a name="multiple-algorithm-hpo-algorithm-configuration"></a>

 L'elenco seguente descrive ciò che è necessario per configurare l'insieme di valori degli iperparametri per ogni processo di addestramento. 
+ Un nome per il tuo processo di ottimizzazione
+ Autorizzazioni di accesso ai servizi
+ Parametri per qualsiasi opzione di algoritmo
+ Un parametro obiettivo
+ L'intervallo di valori degli iperparametri, se richiesto

**Name**  
 Fornire un nome univoco per la definizione di addestramento. 

**Permissions**  
 Amazon SageMaker AI richiede le autorizzazioni per chiamare altri servizi per tuo conto. Scegli un ruolo AWS Identity and Access Management (IAM) o lascia che venga AWS creato un ruolo con la policy `AmazonSageMakerFullAccess` IAM allegata. 

**Impostazioni di sicurezza facoltative**  
 L'impostazione di isolamento di rete impedisce al container di effettuare chiamate di rete in uscita. Questo è necessario per le offerte di Marketplace AWS machine learning. 

 Puoi anche scegliere di utilizzare un cloud privato virtuale (VPC).

**Nota**  
 La crittografia tra container è disponibile solo quando si crea la definizione del processo dall'API. 

**Opzioni algoritmo**  
Puoi scegliere algoritmi integrati, un tuo algoritmo, un tuo container con un algoritmo oppure puoi iscriverti a un algoritmo da Marketplace AWS. 
+ Se scegli un algoritmo integrato, le informazioni sull'immagine Amazon Elastic Container Registry (Amazon ECR) sono precompilate.
+ Se scegli un tuo container, devi specificare le informazioni sull'immagine (Amazon ECR). È possibile selezionare la modalità di input per l'algoritmo come file o pipe.
+ Se intendi fornire i tuoi dati utilizzando un file CSV di Amazon S3, devi selezionare il file.

**Metriche**  
Quando scegli un algoritmo integrato, i parametri vengono forniti per l'utente. Se scegli il tuo algoritmo, devi definire i parametri. Puoi definire fino a 20 parametri da monitorare per il processo di ottimizzazione. È necessario scegliere un parametro come parametro obiettivo. Per ulteriori informazioni su come definire un parametro per un processo di ottimizzazione, consulta [Definizione dei parametri](automatic-model-tuning-define-metrics-variables.md#automatic-model-tuning-define-metrics).

**Parametro obiettivo**  
Per trovare il miglior processo di addestramento, stabilisci un parametro obiettivo e stabilisci se massimizzarlo o minimizzarlo. Dopo aver completato il processo di addestramento, è possibile visualizzare la pagina dei dettagli del processo di ottimizzazione. La pagina dei dettagli fornisce un riepilogo del miglior processo di addestramento trovato utilizzando questo parametro obiettivo. 

**Configurazione degli iperparametri**  
Quando scegli un algoritmo integrato, i valori predefiniti degli iperparametri vengono impostati per l'utente, utilizzando intervalli ottimizzati per gli algoritmi da ottimizzare. Puoi modificare questi valori in base alle tue esigenze. Per esempio, invece di un intervallo, è possibile impostare un valore fisso per un iperparametro impostando il tipo di parametro su **statico**. Ogni algoritmo ha diversi parametri obbligatori e facoltativi. Per ulteriori informazioni, consulta [Best practice per l'ottimizzazione degli iperparametri](automatic-model-tuning-considerations.html) e [Definizione degli intervalli deglli iperparametri](automatic-model-tuning-define-ranges.html). 

#### Definizione dell'input e dell'output dei dati
<a name="multiple-algorithm-hpo-data"></a>

Ogni definizione di processo di addestramento per un processo di ottimizzazione deve configurare i canali per gli input di dati, le posizioni di output dei dati e, facoltativamente, le posizioni di archiviazione dei checkpoint per ogni processo di addestramento. 

**Configurazione dei dati di input**  
I dati di input sono definiti per canali. Ogni canale ha la propria posizione di origine (Amazon S3 o Amazon Elastic File System), compressione e opzioni di formato. Puoi definire fino a 20 canali di origine di input. Se l'algoritmo scelto supporta più canali di input, puoi specificare anche quelli. Ad esempio, quando utilizzi il [XGBoostnotebook di previsione dei tassi di abbandono](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_applying_machine_learning/xgboost_customer_churn/xgboost_customer_churn.html), puoi aggiungere due canali: addestramento e convalida.

**Configurazione checkpoint**  
I checkpoint vengono generati periodicamente durante l’addestramento. Per salvare i checkpoint, devi scegliere una posizione Amazon S3. I checkpoint vengono utilizzati nei report dei parametri e vengono utilizzati anche per riprendere i processi di addestramento spot gestite. Per ulteriori informazioni, consulta [Punti di controllo in Amazon SageMaker AI](model-checkpoints.md).

**Configurazione dei dati di output**  
Definire una posizione Amazon S3 per gli artefatti del processo di addestramento da memorizzare. È possibile aggiungere la crittografia all'output utilizzando una chiave AWS Key Management Service (AWS KMS). 

#### Configurare le risorse per il processo di addestramento
<a name="multiple-algorithm-hpo-training-job-definition-resources"></a>

Ogni definizione di processo di addestramento per un processo di ottimizzazione deve configurare le risorse da distribuire, compresi i tipi e i numeri di istanze, l’addestramento spot gestito e le condizioni di arresto.

**Configurazione delle risorse**  
Ogni definizione di addestramento può avere una configurazione di risorse diversa. È possibile scegliere il tipo di istanza e il numero di nodi. 

**Addestramento spot gestito**  
È possibile ridurre i costi informatici per i lavori se si dispone di flessibilità negli orari di inizio e fine consentendo all' SageMaker IA di utilizzare la capacità inutilizzata per eseguire i lavori. Per ulteriori informazioni, consulta [Managed Spot Training in Amazon SageMaker AI](model-managed-spot-training.md).

**Condizione di arresto**  
La condizione di arresto specifica la durata massima consentita per ogni processo di addestramento. 

#### Aggiungi o clona un processo di addestramento
<a name="multiple-algorithm-hpo-add-training-job"></a>

Dopo aver creato una definizione di processo di addestramento per un processo di ottimizzazione, tornerai al pannello **Definizioni dei processi di addestramento**. In questo pannello è possibile creare definizioni di processi di addestramento aggiuntive per addestrare algoritmi aggiuntivi. È possibile selezionare la **definizione di Aggiungi processo di addestramento** ed eseguire nuovamente le fasi per definire nuovamente un processo di addestramento. 

In alternativa, per replicare una definizione di processo di addestramento esistente e modificarla per il nuovo algoritmo, scegli **Clona** dal menu **Azioni**. L'opzione clona può far risparmiare tempo perché copia tutte le impostazioni del processo, inclusi i canali dei dati e le posizioni di archiviazione di Amazon S3. Per maggiori informazioni sulla clonazione, consulta [Gestire i processi di ottimizzazione e addestramento degli iperparametri](multiple-algorithm-hpo-manage-tuning-jobs.md).

### Configurazione del processo di ottimizzazione
<a name="multiple-algorithm-hpo-resource-config"></a>

**Limiti delle risorse**  
È possibile specificare il numero massimo di processi di addestramento concomitanti che un processo di ottimizzazione degli iperparametri può eseguire simultaneamente (massimo 10). È possibile anche specificare il numero massimo di processi di addestramento che il processo di ottimizzazione degli iperparametri può eseguire (500 al massimo). Il numero di attività parallele non deve superare il numero di nodi richiesti in tutte le definizioni di addestramento. Il numero totale di attività non può superare il numero di attività che si prevede saranno eseguite dalle definizioni.

Rivedi le impostazioni del processo, le definizioni dei processi di addestramento e i limiti delle risorse. Poi scegli **Crea processo di ottimizzazione degli iperparametri**.

## Esempio di processo di ottimizzazione HPO
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-example"></a>

Per eseguire un processo di addestramento sull'ottimizzazione degli iperparametri (HPO), crea innanzitutto una definizione di processo di addestramento per ogni algoritmo che viene ottimizzato. Quindi, definisci le impostazioni del processo di ottimizzazione e configura le risorse del processo di ottimizzazione. Infine, esegui il processo di ottimizzazione.

Se il processo di ottimizzazione HPO contiene un singolo algoritmo di addestramento, la funzione di ottimizzazione SageMaker AI chiamerà direttamente l'`HyperparameterTuner`API e trasmetterà i parametri. Se il processo di ottimizzazione HPO contiene più algoritmi di addestramento, la funzione di ottimizzazione chiamerà la funzione `create`dell'API `HyperparameterTuner`. La funzione `create` indica all'API di aspettarsi un dizionario contenente uno o più strumenti di valutazione.

Nella sezione seguente, alcuni esempi di codice mostrano come ottimizzare un job contenente un singolo algoritmo di addestramento o più algoritmi utilizzando l'IA. SageMaker Python SDK

### Creazione di definizioni dei processi di addestramento
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-example-train"></a>

Quando crei un processo di ottimizzazione che include più algoritmi di addestramento, la configurazione del processo di ottimizzazione includerà gli strumenti di valutazione, le metriche e altri parametri per i tuoi processi di addestramento. Pertanto, è necessario creare prima la definizione del processo di addestramento e quindi configurare il processo di ottimizzazione. 

Il seguente esempio di codice mostra come recuperare due contenitori SageMaker AI contenenti gli algoritmi [https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)integrati e. [https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) Se il processo di ottimizzazione contiene solo un algoritmo di addestramento, ometti uno dei container e uno degli strumenti di valutazione.

```
import sagemaker
from sagemaker import image_uris

from sagemaker.estimator import Estimator

sess = sagemaker.Session()
region = sess.boto_region_name
role = sagemaker.get_execution_role()

bucket = sess.default_bucket()
prefix = "sagemaker/multi-algo-hpo"

# Define the training containers and intialize the estimators
xgb_container = image_uris.retrieve("xgboost", region, "latest")
ll_container = image_uris.retrieve("linear-learner", region, "latest")

xgb_estimator = Estimator(
    xgb_container,
    role=role,
    instance_count=1,
    instance_type="ml.m4.xlarge",
    output_path='s3://{}/{}/xgb_output".format(bucket, prefix)',
    sagemaker_session=sess,
)

ll_estimator = Estimator(
    ll_container,
    role,
    instance_count=1,
    instance_type="ml.c4.xlarge",
    output_path="s3://{}/{}/ll_output".format(bucket, prefix),
    sagemaker_session=sess,
)

# Set static hyperparameters
ll_estimator.set_hyperparameters(predictor_type="binary_classifier")
xgb_estimator.set_hyperparameters(
    eval_metric="auc",
    objective="binary:logistic",
    num_round=100,
    rate_drop=0.3,
    tweedie_variance_power=1.4,
)
```

Quindi, definisci i dati di input specificando i set di dati di addestramento, convalida e test, come mostrato nel seguente esempio di codice. In questo esempio viene illustrato come ottimizzare più algoritmi di addestramento.

```
training_data = sagemaker.inputs.TrainingInput(
    s3_data="s3://{}/{}/train".format(bucket, prefix), content_type="csv"
)
validation_data = sagemaker.inputs.TrainingInput(
    s3_data="s3://{}/{}/validate".format(bucket, prefix), content_type="csv"
)
test_data = sagemaker.inputs.TrainingInput(
    s3_data="s3://{}/{}/test".format(bucket, prefix), content_type="csv"
)

train_inputs = {
    "estimator-1": {
        "train": training_data,
        "validation": validation_data,
        "test": test_data,
    },
    "estimator-2": {
        "train": training_data,
        "validation": validation_data,
        "test": test_data,
    },
}
```

Se l'algoritmo di ottimizzazione contiene un solo algoritmo di addestramento, `train_inputs` dovrebbe contenere solo uno strumento di valutazione.

È necessario caricare gli input per i set di dati di addestramento, di convalida e di addestramento nel bucket Amazon S3 prima di utilizzarli in un processo di ottimizzazione HPO.

### Definisci le risorse e le impostazioni per il tuo processo di ottimizzazione
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-example-resources"></a>

Questa sezione mostra come inizializzare un sintonizzatore, definire le risorse e specificare le impostazioni del processo ottimizzazione. Se il processo di ottimizzazione contiene più algoritmi di addestramento, queste impostazioni vengono applicate a tutti gli algoritmi contenuti nel processo di ottimizzazione. Questa sezione fornisce due esempi di codice per definire un sintonizzatore. Gli esempi di codice mostrano come ottimizzare un singolo algoritmo di addestramento seguiti da un esempio di come ottimizzare più algoritmi di addestramento.

#### Ottimizzare un singolo algoritmo di addestramento
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-example-resources-single"></a>

Il seguente esempio di codice mostra come inizializzare un sintonizzatore e impostare intervalli di iperparametri per un SageMaker algoritmo integrato di intelligenza artificiale,. XGBoost

```
from sagemaker.tuner import HyperparameterTuner
from sagemaker.parameter import ContinuousParameter, IntegerParameter

hyperparameter_ranges = {
    "max_depth": IntegerParameter(1, 10),
    "eta": ContinuousParameter(0.1, 0.3),
}

objective_metric_name = "validation:accuracy"

tuner = HyperparameterTuner(
    xgb_estimator,
    objective_metric_name,
    hyperparameter_ranges,
    objective_type="Maximize",
    max_jobs=5,
    max_parallel_jobs=2,
)
```

#### Ottimizzare più algoritmi di addestramento
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-example-resources-multiple"></a>

Ogni processo di addestramento richiede configurazioni diverse, che vengono specificate utilizzando un dizionario. Il seguente esempio di codice mostra come inizializzare un sintonizzatore con configurazioni per due SageMaker algoritmi integrati di intelligenza artificiale e. XGBoost Linear Learner L'esempio di codice mostra anche come impostare una strategia di ottimizzazione e altre impostazioni di processo, come le risorse di calcolo per il processo di ottimizzazione. Il seguente esempio di codice utilizza `metric_definitions_dict`, che è facoltativo.

```
from sagemaker.tuner import HyperparameterTuner
from sagemaker.parameter import ContinuousParameter, IntegerParameter

# Initialize your tuner
tuner = HyperparameterTuner.create(
    estimator_dict={
        "estimator-1": xgb_estimator,
        "estimator-2": ll_estimator,
    },
    objective_metric_name_dict={
        "estimator-1": "validation:auc",
        "estimator-2": "test:binary_classification_accuracy",
    },
    hyperparameter_ranges_dict={
        "estimator-1": {"eta": ContinuousParameter(0.1, 0.3)},
        "estimator-2": {"learning_rate": ContinuousParameter(0.1, 0.3)},
    },
    metric_definitions_dict={
        "estimator-1": [
            {"Name": "validation:auc", "Regex": "Overall test accuracy: (.*?);"}
        ],
        "estimator-2": [
            {
                "Name": "test:binary_classification_accuracy",
                "Regex": "Overall test accuracy: (.*?);",
            }
        ],
    },
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=3,
)
```

### Esegui il tuo processo di ottimizzazione HPO
<a name="multiple-algorithm-hpo-create-tuning-jobs-define-example-run"></a>

Ora puoi eseguire il processo di ottimizzazione trasferendo gli input di addestramento alla funzione `fit` della classe `HyperparameterTuner`. Il seguente esempio di codice mostra come passare al sintonizzatore il parametro `train_inputs`, definito in un esempio di codice precedente.

```
tuner.fit(inputs=train_inputs, include_cls_metadata ={}, estimator_kwargs ={})   
```

# Gestire i processi di ottimizzazione e addestramento degli iperparametri
<a name="multiple-algorithm-hpo-manage-tuning-jobs"></a>

Un processo di ottimizzazione può contenere molti lavori di formazione e la creazione e la gestione di questi lavori e delle relative definizioni può diventare un'attività complessa e onerosa. SageMaker L'intelligenza artificiale fornisce strumenti per facilitare la gestione di questi lavori. È possibile accedere ai lavori di ottimizzazione che hai eseguito dalla console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/). Seleziona **Processo di ottimizzazione degli iperparametri** dal menu **Addestramento** per visualizzare l'elenco. In questa pagina puoi anche iniziare la procedura per creare un nuovo processo di ottimizzazione selezionando **Crea processo di ottimizzazione degli iperparametri**. 

Per vedere i processi di addestramento eseguiti come parte di un processo di ottimizzazione, seleziona uno dei processi di ottimizzazione degli iperparametri dall'elenco. Le schede della pagina del processo di ottimizzazione consentono di esaminare i processi di addestramento, le relative definizioni, i tag e la configurazione utilizzati per il processo di ottimizzazione e il miglior processo di addestramento trovato durante l'ottimizzazione. Puoi selezionare il miglior processo di addestramento o uno qualsiasi degli altri processi di addestramento che rientrano nel processo di ottimizzazione per visualizzarne tutte le impostazioni. Da qui puoi creare un modello che utilizza i valori degli iperparametri trovati da un processo di addestramento selezionando **Crea modello** oppure puoi clonare il processo di addestramento selezionando **Clona**.

**Clonazione**  
È possibile risparmiare tempo clonando un processo di addestramento che appartiene a un processo di ottimizzazione degli iperparametri. La clonazione copia tutte le impostazioni del processo, inclusi i canali di dati e le posizioni di archiviazione S3 degli artefatti di output. È possibile farlo per i processi di addestramento che sono già stati eseguiti dalla pagina del processo di ottimizzazione, come appena descritto, oppure quando si stanno creando ulteriori definizioni di processi di addestramento durante la creazione di un processo di ottimizzazione degli iperparametri, come descritto nella fase [Aggiungi o clona un processo di addestramento](multiple-algorithm-hpo-create-tuning-jobs.md#multiple-algorithm-hpo-add-training-job) di questa procedura. 

**Assegnazione di tag**  
L'Ottimizzazione automatica dei modelli avvia più processi di addestramento all'interno di un unico processo di ottimizzazione principale per scoprire la ponderazione ideale degli iperparametri del modello. I tag possono essere aggiunti al processo di ottimizzazione principale come descritto nella sezione [Componenti di un processo di ottimizzazione](multiple-algorithm-hpo-create-tuning-jobs.md#multiple-algorithm-hpo-create-tuning-jobs-define-settings) e questi tag vengono quindi propagati ai singoli processi di addestramento sottostanti. I clienti possono utilizzare questi tag per scopi quali l'allocazione dei costi o il controllo degli accessi. Per aggiungere tag utilizzando l' SageMaker SDK, utilizza l'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html)API. Per ulteriori informazioni sull'utilizzo dei tag per AWS le risorse, consulta [AWS Tagging](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) resources.

# Esempio: processo di ottimizzazione degli iperparametri
<a name="automatic-model-tuning-ex"></a>

Questo esempio illustra come creare un nuovo notebook per la configurazione e l'avvio di un processo di ottimizzazione degli iperparametri. Il processo di ottimizzazione utilizza [XGBoost algoritmo con Amazon SageMaker AI](xgboost.md) per eseguire l’addestramento di un modello per prevedere se un cliente eseguirà la registrazione per un deposito bancario a termine dopo essere stato contattato telefonicamente.

Utilizzate l'SDK di basso livello per Python (Boto3) per configurare e avviare il processo di ottimizzazione degli iperparametri e per monitorare lo stato dei lavori di ottimizzazione degli iperparametri. Console di gestione AWS Puoi anche utilizzare l'SDK Amazon [ SageMaker Python di alto livello di Amazon SageMaker ](https://sagemaker.readthedocs.io/en/stable) AI per configurare, eseguire, monitorare e analizzare i lavori di ottimizzazione degli iperparametri. Per ulteriori informazioni, consulta [https://github.com/aws/sagemaker-python-sdk](https://github.com/aws/sagemaker-python-sdk).

## Prerequisiti
<a name="automatic-model-tuning-ex-prereq"></a>

Per eseguire il codice in questo esempio, è necessario
+ [Un account e un utente amministratore AWS](gs-set-up.md)
+ Un bucket Amazon S3 per l'archiviazione del set di dati di addestramento e degli artefatti del modello creati durante l’addestramento
+ [Un'istanza di notebook SageMaker AI in esecuzione](gs-setup-working-env.md)

**Topics**
+ [Prerequisiti](#automatic-model-tuning-ex-prereq)
+ [Creazione di un'istanza del notebook](automatic-model-tuning-ex-notebook.md)
+ [Scarica il client Amazon SageMaker AI Boto 3](automatic-model-tuning-ex-client.md)
+ [Ottieni il ruolo di esecuzione dell'IA SageMaker](automatic-model-tuning-ex-role.md)
+ [Utilizza un bucket Amazon S3 per l'input e l'output](automatic-model-tuning-ex-bucket.md)
+ [Scaricare, preparare e caricare i dati di addestramento](automatic-model-tuning-ex-data.md)
+ [Configurare e avviare il processo di ottimizzazione degli iperparametri](automatic-model-tuning-ex-tuning-job.md)
+ [Eliminazione](automatic-model-tuning-ex-cleanup.md)

# Creazione di un'istanza del notebook
<a name="automatic-model-tuning-ex-notebook"></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.

Crea un notebook Jupyter che contenga un ambiente preinstallato con l'installazione predefinita di Anaconda e Python3. 

**Per creare un notebook Jupyter**

1. Apri la console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Aprire un'istanza del notebook in esecuzione, scegliendo **Open (Apri)** accanto al suo nome. Viene visualizzata la pagina server del notebook Jupyter:

     
![\[Esempio di pagina del server del notebook Jupyter.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/notebook-dashboard.png)

1. Per creare un notebook, selezionare **Files (File)**, **New (Nuovo)** e **conda\$1python3**.

1. Nomina il notebook.

## Fase succcessiva
<a name="automatic-model-tuning-ex-next-client"></a>

[Scarica il client Amazon SageMaker AI Boto 3](automatic-model-tuning-ex-client.md)

# Scarica il client Amazon SageMaker AI Boto 3
<a name="automatic-model-tuning-ex-client"></a>

Importa Amazon SageMaker Python SDK e altre AWS SDK per Python (Boto3) librerie Python. In un nuovo notebook Jupyter, incolla il seguente codice nella prima cella:

```
import sagemaker
import boto3

import numpy as np                                # For performing matrix operations and numerical processing
import pandas as pd                               # For manipulating tabular data
from time import gmtime, strftime
import os

region = boto3.Session().region_name
smclient = boto3.Session().client('sagemaker')
```

La cella di codice precedente definisce `region` `smclient` gli oggetti che utilizzerai per richiamare l' XGBoost algoritmo integrato e impostare il processo di ottimizzazione degli iperparametri SageMaker AI.

## Fase succcessiva
<a name="automatic-model-tuning-ex-next-role"></a>

[Ottieni il ruolo di esecuzione dell'IA SageMaker](automatic-model-tuning-ex-role.md)

# Ottieni il ruolo di esecuzione dell'IA SageMaker
<a name="automatic-model-tuning-ex-role"></a>

Ottieni il ruolo di esecuzione per l'istanza del notebook. Questo è il ruolo IAM che hai creato per l'istanza del notebook.

Per trovare l'ARN del ruolo di esecuzione IAM collegato a un'istanza del notebook:

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione a sinistra, scegli **Notebook, quindi istanze del notebook** ****.

1. Nell'elenco dei notebook, scegli quello che intendi visualizzare.

1. L'ARN si trova nella sezione **Autorizzazioni e crittografia**.

In alternativa, gli utenti di [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) possono recuperare l'ARN del ruolo di esecuzione associato al proprio profilo utente o a un'istanza del notebook eseguendo il codice seguente:

```
from sagemaker import get_execution_role

role = get_execution_role()
print(role)
```

[Per ulteriori informazioni sull'utilizzo `get_execution_role` nell'[SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), consulta Session.](https://sagemaker.readthedocs.io/en/stable/api/utility/session.html) Per ulteriori informazioni sui ruoli, consulta [Come utilizzare i ruoli di esecuzione dell' SageMaker IA](sagemaker-roles.md).

## Fase succcessiva
<a name="automatic-model-tuning-ex-next-bucket"></a>

[Utilizza un bucket Amazon S3 per l'input e l'output](automatic-model-tuning-ex-bucket.md)

# Utilizza un bucket Amazon S3 per l'input e l'output
<a name="automatic-model-tuning-ex-bucket"></a>

Imposta un bucket S3 per caricare i dataset di addestramento e salvare i dati di output dell’addestramento per il tuo processo di ottimizzazione degli iperparametri.

**Per utilizzare un bucket S3 predefinito**

Usa il codice seguente per specificare il bucket S3 predefinito allocato per la tua sessione AI. SageMaker `prefix`è il percorso all'interno del bucket in cui l' SageMaker IA archivia i dati per l'attuale processo di formazione.

```
sess = sagemaker.Session()
bucket = sess.default_bucket() # Set a default S3 bucket
prefix = 'DEMO-automatic-model-tuning-xgboost-dm'
```

**Per utilizzare un bucket S3 specifico (facoltativo)**

Se desideri utilizzare un bucket S3 specifico, usa il codice seguente e sostituisci le stringhe con il nome esatto del bucket S3. Il nome del bucket deve contenere **sagemaker** ed essere univoco a livello globale. Il bucket deve trovarsi nella stessa Regione AWS dell'istanza del notebook utilizzata per questo esempio.

```
bucket = "sagemaker-your-preferred-s3-bucket"

sess = sagemaker.Session(
    default_bucket = bucket
)
```

**Nota**  
Non è necessario che il nome del bucket contenga **sagemaker** se il ruolo IAM che utilizzi per eseguire il processo di ottimizzazione degli iperparametri ha un criterio che concede l'autorizzazione `S3FullAccess`.

## Fase succcessiva
<a name="automatic-model-tuning-ex-next-data"></a>

[Scaricare, preparare e caricare i dati di addestramento](automatic-model-tuning-ex-data.md)

# Scaricare, preparare e caricare i dati di addestramento
<a name="automatic-model-tuning-ex-data"></a>

Per questo esempio, utilizziamo un set di dati di addestramento con informazioni sui clienti di una banca che include la professione del cliente, lo stato civile e le modalità di contatto durante la campagna di marketing diretto della banca. Per utilizzare un set di dati per un processo di ottimizzazione degli iperparametri, scaricalo, trasforma i dati e quindi caricalo in un bucket Amazon S3 .

****Per ulteriori informazioni sul set di dati e sulla trasformazione dei dati eseguita dall'esempio, consulta il notebook *APIshpo\$1xgboost\$1direct\$1marketing\$1sagemaker\$1* nella sezione Hyperparameter Tuning della scheda AI Examples nell'istanza del notebook. SageMaker ****

## Scaricare ed esplorare il set di dati di addestramento
<a name="automatic-model-tuning-ex-data-download"></a>

Per scaricare ed esplorare il set di dati, esegui il codice seguente nel notebook:

```
!wget -N https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip
!unzip -o bank-additional.zip
data = pd.read_csv('./bank-additional/bank-additional-full.csv', sep=';')
pd.set_option('display.max_columns', 500)     # Make sure we can see all of the columns
pd.set_option('display.max_rows', 5)         # Keep the output on one page
data
```

## Preparare e caricare i dati
<a name="automatic-model-tuning-ex-data-transform"></a>

Prima di creare il processo di ottimizzazione degli iperparametri, prepara i dati e caricali in un bucket S3 a cui può accedere il processo di ottimizzazione degli iperparametri.

Esegui il codice seguente nel notebook:

```
data['no_previous_contact'] = np.where(data['pdays'] == 999, 1, 0)                                 # Indicator variable to capture when pdays takes a value of 999
data['not_working'] = np.where(np.in1d(data['job'], ['student', 'retired', 'unemployed']), 1, 0)   # Indicator for individuals not actively employed
model_data = pd.get_dummies(data)                                                                  # Convert categorical variables to sets of indicators
model_data
model_data = model_data.drop(['duration', 'emp.var.rate', 'cons.price.idx', 'cons.conf.idx', 'euribor3m', 'nr.employed'], axis=1)

train_data, validation_data, test_data = np.split(model_data.sample(frac=1, random_state=1729), [int(0.7 * len(model_data)), int(0.9*len(model_data))])

pd.concat([train_data['y_yes'], train_data.drop(['y_no', 'y_yes'], axis=1)], axis=1).to_csv('train.csv', index=False, header=False)
pd.concat([validation_data['y_yes'], validation_data.drop(['y_no', 'y_yes'], axis=1)], axis=1).to_csv('validation.csv', index=False, header=False)
pd.concat([test_data['y_yes'], test_data.drop(['y_no', 'y_yes'], axis=1)], axis=1).to_csv('test.csv', index=False, header=False)

boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'train/train.csv')).upload_file('train.csv')
boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'validation/validation.csv')).upload_file('validation.csv')
```

## Fase succcessiva
<a name="automatic-model-tuning-ex-next-tuning-job"></a>

[Configurare e avviare il processo di ottimizzazione degli iperparametri](automatic-model-tuning-ex-tuning-job.md)

# Configurare e avviare il processo di ottimizzazione degli iperparametri
<a name="automatic-model-tuning-ex-tuning-job"></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.

Un iperparametro è un parametro di alto livello che influenza il processo di addestramento durante l’addestramento del modello. Per ottenere le migliori previsioni del modello, è possibile ottimizzare una configurazione degli iperparametri o impostare valori degli iperparametri. Il processo di ricerca di una configurazione ottimale si chiama ottimizzazione degli iperparametri. Per configurare e avviare un processo di ottimizzazione degli iperparametri, completa le fasi descritte in queste guide.

**Topics**
+ [Impostazioni per il processo di ottimizzazione degli iperparametri](#automatic-model-tuning-ex-low-tuning-config)
+ [Configurare i processi di addestramento](#automatic-model-tuning-ex-low-training-def)
+ [Assegnare un nome e avviare il processo di ottimizzazione degli iperparametri](#automatic-model-tuning-ex-low-launch)
+ [Monitorare l'avanzamento di un processo di ottimizzazione degli iperparametri](automatic-model-tuning-monitor.md)
+ [Visualizzare lo stato dei processi di addestramento](#automatic-model-tuning-monitor-training)
+ [Visualizzare il processo di addestramento migliore](#automatic-model-tuning-best-training-job)

## Impostazioni per il processo di ottimizzazione degli iperparametri
<a name="automatic-model-tuning-ex-low-tuning-config"></a>

Per specificare le impostazioni per il processo di ottimizzazione degli iperparametri, definisci un oggetto JSON quando crei il processo di ottimizzazione. Passa questo oggetto JSON come valore del parametro `HyperParameterTuningJobConfig` all'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html).

In questo oggetto JSON, specifica quanto segue:

In questo oggetto JSON, specifica:
+ `HyperParameterTuningJobObjective`: il parametro obiettivo utilizzato per valutare le prestazioni del processo di addestramento lanciato dal processo di ottimizzazione degli iperparametri.
+ `ParameterRanges`: l'intervallo di valori che un iperparametro regolabile può utilizzare durante l'ottimizzazione. Per ulteriori informazioni, consulta [Definire gli intervalli degli iperparametri](automatic-model-tuning-define-ranges.md)
+ `RandomSeed`: un valore usato per inizializzare un generatore di numeri pseudo-casuali. L'impostazione di un seed casuale consentirà alle strategie di ricerca dell'ottimizzazione degli iperparametri di produrre configurazioni più coerenti per lo stesso processo di ottimizzazione (facoltativo).
+ `ResourceLimits`: il numero massimo di processi di addestramento e di addestramento parallelo che il processo di ottimizzazione degli iperparametri può utilizzare.

**Nota**  
Se utilizzi il tuo algoritmo per l'ottimizzazione degli iperparametri, anziché un [algoritmo integrato di SageMaker intelligenza artificiale, devi definire le metriche per l'algoritmo](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html). Per ulteriori informazioni, consulta [Definizione dei parametri](automatic-model-tuning-define-metrics-variables.md#automatic-model-tuning-define-metrics).

[Il seguente esempio di codice mostra come configurare un processo di ottimizzazione degli iperparametri utilizzando l'algoritmo integrato. XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) L'esempio di codice mostra come definire gli intervalli per gli iperparametri `eta`, `alpha`, `min_child_weight` e `max_depth`. [Per ulteriori informazioni su questi e altri iperparametri, vedete Parametri. XGBoost](https://xgboost.readthedocs.io/en/release_1.2.0/parameter.html) 

In questo esempio di codice, la metrica obiettivo per il processo di ottimizzazione degli iperparametri trova la configurazione iperparametrica che massimizza. `validation:auc` SageMaker Gli algoritmi integrati nell'intelligenza artificiale scrivono automaticamente la metrica dell'obiettivo in Logs. CloudWatch L'esempio di codice seguente mostra anche come impostare un `RandomSeed`. 

```
tuning_job_config = {
    "ParameterRanges": {
      "CategoricalParameterRanges": [],
      "ContinuousParameterRanges": [
        {
          "MaxValue": "1",
          "MinValue": "0",
          "Name": "eta"
        },
        {
          "MaxValue": "2",
          "MinValue": "0",
          "Name": "alpha"
        },
        {
          "MaxValue": "10",
          "MinValue": "1",
          "Name": "min_child_weight"
        }
      ],
      "IntegerParameterRanges": [
        {
          "MaxValue": "10",
          "MinValue": "1",
          "Name": "max_depth"
        }
      ]
    },
    "ResourceLimits": {
      "MaxNumberOfTrainingJobs": 20,
      "MaxParallelTrainingJobs": 3
    },
    "Strategy": "Bayesian",
    "HyperParameterTuningJobObjective": {
      "MetricName": "validation:auc",
      "Type": "Maximize"
    },
    "RandomSeed" : 123
  }
```

## Configurare i processi di addestramento
<a name="automatic-model-tuning-ex-low-training-def"></a>

Il processo di ottimizzazione degli iperparametri avvierà processi di addestramento per trovare una configurazione ottimale degli iperparametri. Questi lavori di formazione devono essere configurati utilizzando l' SageMaker API AI. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html) 

Per configurare i processi di addestramento, definisci un oggetto JSON e passalo come valore del parametro `TrainingJobDefinition` dentro `CreateHyperParameterTuningJob`.

In questo oggetto JSON, puoi specificare quanto segue: 
+ `AlgorithmSpecification`: il [percorso di registro](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html) dell'immagine Docker contenente l'algoritmo di addestramento e i relativi metadati. Per specificare un algoritmo, puoi utilizzare il tuo [algoritmo personalizzato](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html) all'interno di un contenitore [Docker](https://docs.docker.com/get-started/overview/) o un [algoritmo integrato SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html) (richiesto).
+ `InputDataConfig`: la configurazione di input, incluso `ChannelName`, `ContentType` e l’origine dati dei dati di addestramento e test (obbligatorio).
+ `InputDataConfig`: la configurazione di input, incluso `ChannelName`, `ContentType` e l’origine dati dei dati di addestramento e test (obbligatorio).
+ Il percorso di storage per l'output dell'algoritmo. Specifica il bucket S3 in cui archiviare l'output dei processi di addestramento.
+ `RoleArn`— L'[Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) (ARN) di un ruolo AWS Identity and Access Management (IAM) utilizzato dall' SageMaker IA per eseguire attività. Le attività includono la lettura dei dati di input, il download di un'immagine Docker, la scrittura di artefatti del modello in un bucket S3, la scrittura di log su Amazon Logs e la scrittura di metriche su Amazon CloudWatch (obbligatorio). CloudWatch 
+ `StoppingCondition`: il tempo massimo di esecuzione, in secondi, che un processo di training può eseguire prima di essere interrotto. Questo valore deve essere maggiore del tempo necessario per addestrare il modello (obbligatorio).
+ `MetricDefinitions`: il nome e l'espressione regolare che definiscono tutti i parametri emessi dai processi di addestramento. Definisci i parametri solo quando utilizzi un algoritmo di addestramento personalizzato. L'esempio riportato nel codice seguente utilizza un algoritmo integrato, che ha già definito i parametri. Per informazioni sulla definizione dei parametri (facoltativo), consulta [Definizione dei parametri](automatic-model-tuning-define-metrics-variables.md#automatic-model-tuning-define-metrics).
+ `TrainingImage`: l'immagine del container [Docker](https://docs.docker.com/get-started/overview/) che specifica l'algoritmo di addestramento (facoltativo).
+ `StaticHyperParameters`: i valori degli iperparametri dell'algoritmo che non sono ottimizzati nel processo di ottimizzazione (facoltativo).

Il seguente codice di esempio imposta valori statici per i parametri `eval_metric`, `num_round`, `objective`, `rate_drop` e `tweedie_variance_power` dell'algoritmo integrato [XGBoost algoritmo con Amazon SageMaker AI](xgboost.md).

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

```
from sagemaker.amazon.amazon_estimator import get_image_uri
training_image = get_image_uri(region, 'xgboost', repo_version='1.0-1')

s3_input_train = 's3://{}/{}/train'.format(bucket, prefix)
s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix)

training_job_definition = {
    "AlgorithmSpecification": {
      "TrainingImage": training_image,
      "TrainingInputMode": "File"
    },
    "InputDataConfig": [
      {
        "ChannelName": "train",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_train
          }
        }
      },
      {
        "ChannelName": "validation",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_validation
          }
        }
      }
    ],
    "OutputDataConfig": {
      "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix)
    },
    "ResourceConfig": {
      "InstanceCount": 2,
      "InstanceType": "ml.c4.2xlarge",
      "VolumeSizeInGB": 10
    },
    "RoleArn": role,
    "StaticHyperParameters": {
      "eval_metric": "auc",
      "num_round": "100",
      "objective": "binary:logistic",
      "rate_drop": "0.3",
      "tweedie_variance_power": "1.4"
    },
    "StoppingCondition": {
      "MaxRuntimeInSeconds": 43200
    }
}
```

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

```
training_image = sagemaker.image_uris.retrieve('xgboost', region, '1.0-1')

s3_input_train = 's3://{}/{}/train'.format(bucket, prefix)
s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix)

training_job_definition = {
    "AlgorithmSpecification": {
      "TrainingImage": training_image,
      "TrainingInputMode": "File"
    },
    "InputDataConfig": [
      {
        "ChannelName": "train",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_train
          }
        }
      },
      {
        "ChannelName": "validation",
        "CompressionType": "None",
        "ContentType": "csv",
        "DataSource": {
          "S3DataSource": {
            "S3DataDistributionType": "FullyReplicated",
            "S3DataType": "S3Prefix",
            "S3Uri": s3_input_validation
          }
        }
      }
    ],
    "OutputDataConfig": {
      "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix)
    },
    "ResourceConfig": {
      "InstanceCount": 2,
      "InstanceType": "ml.c4.2xlarge",
      "VolumeSizeInGB": 10
    },
    "RoleArn": role,
    "StaticHyperParameters": {
      "eval_metric": "auc",
      "num_round": "100",
      "objective": "binary:logistic",
      "rate_drop": "0.3",
      "tweedie_variance_power": "1.4"
    },
    "StoppingCondition": {
      "MaxRuntimeInSeconds": 43200
    }
}
```

------

## Assegnare un nome e avviare il processo di ottimizzazione degli iperparametri
<a name="automatic-model-tuning-ex-low-launch"></a>

Dopo aver configurato il processo di ottimizzazione degli iperparametri, puoi lanciarlo chiamando l'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html). Il codice di esempio seguente usa `tuning_job_config` e `training_job_definition`. Questi sono stati definiti nei due esempi di codice precedenti per creare un processo di ottimizzazione degli iperparametri.

```
tuning_job_name = "MyTuningJob"
smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = tuning_job_name,
                                           HyperParameterTuningJobConfig = tuning_job_config,
                                           TrainingJobDefinition = training_job_definition)
```

# Monitorare l'avanzamento di un processo di ottimizzazione degli iperparametri
<a name="automatic-model-tuning-monitor"></a>

Per monitorare lo stato di avanzamento di un processo di ottimizzazione degli iperparametri e dei processi di formazione che avvia, utilizza la console Amazon SageMaker AI.

**Topics**
+ [Visualizzare lo stato processo di ottimizzazione degli iperparametri](#automatic-model-tuning-monitor-tuning)

## Visualizzare lo stato processo di ottimizzazione degli iperparametri
<a name="automatic-model-tuning-monitor-tuning"></a>

**Per visualizzare lo stato del processo di ottimizzazione degli iperparametri**

1. Apri la console Amazon SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Scegli **Processi di ottimizzazione degli iperparametri**.  
![\[Console dei processi di ottimizzazione degli iperparametri.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/console-tuning-jobs.png)

1. Nell'elenco dei processi di ottimizzazione iperparametri, controllare lo stato del processo di ottimizzazione iperparametri avviato. Un processo di ottimizzazione può essere:
   + `Completed`: il processo di ottimizzazione degli iperparametri è stato completato con successo.
   + `InProgress`: il processo di ottimizzazione degli iperparametri è in corso. Uno o più processi di addestramento sono ancora in esecuzione.
   + `Failed`: il processo di ottimizzazione degli iperparametri non è riuscito.
   + `Stopped`: il processo di ottimizzazione degli iperparametri è stato interrotto manualmente prima del suo completamento. Tutti i processi di addestramento avviati dal processo di ottimizzazione degli iperparametri sono stati arrestati.
   + `Stopping`: il processo di ottimizzazione degli iperparametri è in fase di arresto.

## Visualizzare lo stato dei processi di addestramento
<a name="automatic-model-tuning-monitor-training"></a>

**Per visualizzare lo stato dei processi di addestramento avviati dal processo di ottimizzazione iperparametri**

1. Nell'elenco dei processi di ottimizzazione degli iperparametri, scegliere il processo avviato.

1. Scegliere **Processi di addestramento**.  
![\[Ubicazione dei job di addestramento in .\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperparameter-training-jobs.png)

1. Visualizzare lo stato di ogni processo di addestramento. Per visualizzare ulteriori dettagli su un processo, sceglierlo nell'elenco dei processi di addestramento. Per visualizzare un riepilogo dello stato di tutti i processi di addestramento avviati dal processo di ottimizzazione degli iperparametri, consulta **Training job status counter**.

   Un processo di addestramento può essere:
   + `Completed`: il processo di addestramento è stato completato con successo.
   + `InProgress`: il processo di addestramento è in corso.
   + `Stopped`: il processo di addestramento è stato interrotto manualmente prima del suo completamento.
   + `Failed (Retryable)`: il processo di addestramento non è riuscito, ma può essere riprovato. Un processo di addestramento non riuscito può essere ritentato solo se il mancato completamento è dipeso da un errore interno del servizio.
   + `Failed (Non-retryable)`: il processo di addestramento non è riuscito e non può essere riprovato. Un processo di addestramento non riuscito non può essere rieseguito quando si verifica errore del client.
**Nota**  
I processi di ottimizzazione degli iperparametri possono essere interrotti e le risorse sottostanti [eliminate](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-ex-cleanup.html), ma i processi stessi non possono essere eliminati.

## Visualizzare il processo di addestramento migliore
<a name="automatic-model-tuning-best-training-job"></a>

Un processo di ottimizzazione degli iperparametri utilizza il parametro obiettivo restituito da ogni processo di addestramento per valutare i processi di addestramento. Mentre il processo di ottimizzazione degli iperparametri è in corso, il processo di addestramento migliore è quello che ha restituito il miglior parametro obiettivo fino a quel momento. Una volta completato il processo di ottimizzazione degli iperparametri, il processo di addestramento migliore è quello che ha restituito il miglior parametro obiettivo.

Per visualizzare il processo di addestramento migliore, scegli **Processo di addestramento migliore**.

![\[Ubicazione del job di addestramento migliore nella console dei processi di ottimizzazione degli iperparametri.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/best-training-job.png)


Per implementare il miglior lavoro di formazione come modello da ospitare su un endpoint di SageMaker intelligenza artificiale, scegli **Crea** modello.

### Fase succcessiva
<a name="automatic-model-tuning-ex-next-cleanup"></a>

[Eliminazione](automatic-model-tuning-ex-cleanup.md)

# Eliminazione
<a name="automatic-model-tuning-ex-cleanup"></a>

Per evitare costi superflui, quando termini l'esercizio utilizza la Console di gestione AWS per eliminare le risorse che hai creato per le prove. 

**Nota**  
Se prevedi di utilizzare altri esempi in questa guida, ti consigliamo di conservare alcune di queste risorse, ad esempio la tua istanza del notebook, il bucket S3 e il ruolo IAM.

1. Apri la console SageMaker AI all'indirizzo [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)ed elimina l'istanza del notebook. Arrestare l'istanza prima di eliminarla.

1. Apri la console Amazon S3 all'indirizzo [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)ed elimina il bucket che hai creato per archiviare gli artefatti del modello e il set di dati di addestramento. 

1. Apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)ed elimina il ruolo IAM. Se hai creato policy di autorizzazione, puoi anche eliminarle.

1. Apri la CloudWatch console Amazon all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)ed elimina tutti i gruppi di log i cui nomi iniziano con`/aws/sagemaker/`.

# Interrompere in anticipo i processi di addestramento
<a name="automatic-model-tuning-early-stopping"></a>

Interrompi in anticipo i processi di addestramento avviati da un processo di ottimizzazione degli iperparametri quando non stanno migliorando in modo significativo in base alle misurazioni eseguite con il parametro obiettivo. L'interruzione anticipata dei processi di addestramento può aiutare a ridurre il tempo di calcolo e consente di evitare l'overfitting del modello. Per configurare un processo di ottimizzazione degli iperparametri per arrestare i processi di addestramento in anticipo, procedi in uno dei seguenti modi:
+ Se utilizzate l' AWS SDK for Python (Boto3), `TrainingJobEarlyStoppingType` impostate il campo [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html)dell'oggetto su cui configurare il processo di ottimizzazione. `AUTO`
+ Se utilizzi l'[SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable), imposta il `early_stopping_type` parametro dell'[HyperParameterTuner](https://sagemaker.readthedocs.io/en/stable/tuner.html)oggetto su. `Auto`
+ **Nella console Amazon SageMaker AI, nel flusso di **lavoro Crea processo di ottimizzazione iperparametrica**, in **Arresto anticipato, scegli Auto**.**

****Per un notebook di esempio che dimostri come utilizzare l'arresto anticipato, consulta [https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter\$1tuning/image\$1classification\$1early\$1stopping/hpo\$1image\$1classification\$1early\$1stopping.ipynb o apri il notebook nella sezione Hyperparameter](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb) Tuning degli esempi di AI Examples in a notebook. `hpo_image_classification_early_stopping.ipynb` SageMaker ****

## Come funziona l'interruzione anticipata
<a name="automatic-tuning-early-stop-how"></a>

Quando abiliti l'arresto anticipato per un lavoro di ottimizzazione degli iperparametri, l'intelligenza artificiale valuta ogni processo di addestramento avviato dal processo di ottimizzazione degli iperparametri nel modo seguente: SageMaker 
+ Dopo ogni epoca (Unix epoch) di addestramento, ottieni il valore del parametro obiettivo.
+ Calcola la media mobile del parametro obiettivo per tutti i processi di addestramento precedenti fino alla stessa epoca, quindi calcola la mediana di tutte le medie mobili.
+ Se il valore della metrica oggettiva per l'attuale lavoro di formazione è peggiore (superiore quando si minimizza o inferiore quando si massimizza la metrica dell'obiettivo) rispetto al valore mediano delle medie correnti della metrica oggettiva per i lavori di formazione precedenti fino alla stessa epoca, l'IA interrompe il lavoro di formazione corrente. SageMaker 

## Algoritmi che supportano l'interruzione anticipata
<a name="automatic-tuning-early-stopping-algos"></a>

Per supportare l'interruzione anticipata, un algoritmo deve emettere parametri obiettivi per ogni epoca. I seguenti algoritmi di intelligenza artificiale integrati supportano l'arresto anticipato: SageMaker 
+ [LightGBM](lightgbm.md)
+ [CatBoost](catboost.md)
+ [AutoGluon-Tabulare](autogluon-tabular.md)
+ [TabTransformer](tabtransformer.md)
+ [Algoritmo di apprendimento lineare](linear-learner.md): supportato solo se viene utilizzata `objective_loss` come parametro obiettivo.
+ [XGBoost algoritmo con Amazon SageMaker AI](xgboost.md)
+ [Classificazione delle immagini - MXNet](image-classification.md)
+ [Rilevamento di oggetti - MXNet](object-detection.md)
+ [Sequence-to-Sequence Algoritmo](seq-2-seq.md)
+ [IP Insights](ip-insights.md)

**Nota**  
Questo elenco di algoritmi predefiniti che supportano l'interruzione anticipata è aggiornato al 13 dicembre 2018. In futuro, potrebbero essere aggiunti altri algoritmi predefiniti a questo elenco. Se un algoritmo emette un parametro che può essere utilizzato come parametro obiettivo per un processo di ottimizzazione degli iperparametri (preferibilmente un parametro di convalida), supporta l'interruzione anticipata.

Per utilizzare l'interruzione anticipata con un algoritmo personalizzato, devi scrivere gli algoritmi in modo che emettano il valore del parametro obiettivo dopo ogni epoca. L'elenco seguente mostra in che modo farlo in diversi scenari:

TensorFlow  
Utilizza la classe `tf.keras.callbacks.ProgbarLogger`. [Per informazioni, consulta tf.keras.callbacks. ProgbarLogger API.](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ProgbarLogger)

MXNet  
Utilizzo della `mxnet.callback.LogValidationMetricsCallback`. Per informazioni, consulta [mxnet.callback APIs](https://mxnet.apache.org/versions/master/api/python/docs/api/legacy/callback/index.html).

Chainer  
Estendi Chainer utilizzando la classe `extensions.Evaluator`. Per informazioni, consulta l'[API chainer.training.extensions.Evaluator](https://docs.chainer.org/en/v1.24.0/reference/extensions.html#evaluator).

PyTorch e Spark  
Non è fornito supporto di alto livello. Devi scrivere esplicitamente il codice di addestramento in modo che calcoli i parametri obiettivi e li scriva nei log dopo ogni epoca.

# Eseguire un processo di ottimizzazione degli iperparametri con avvio a caldo
<a name="automatic-model-tuning-warm-start"></a>

Esegui un avvio a caldo per avviare un processo di ottimizzazione degli iperparametri utilizzando uno o più processi di ottimizzazione precedenti come punto di partenza. I risultati dei processi di ottimizzazione precedenti vengono utilizzati per indicare le combinazioni di iperparametri da cercare nel nuovo processo di ottimizzazione. L'ottimizzazione degli iperparametri utilizza la ricerca bayesiana o random per scegliere le combinazioni di valori degli iperparametri da intervalli specificati da te. Per ulteriori informazioni, consulta [Comprendi le strategie di ottimizzazione degli iperparametri disponibili in Amazon AI SageMaker](automatic-model-tuning-how-it-works.md). L'utilizzo delle informazioni provenienti da processi di ottimizzazione degli iperparametri precedenti consente di aumentare le prestazioni del nuovo processo di ottimizzazione degli iperparametri perché rende più efficiente la ricerca per la migliore combinazione di iperparametri.

**Nota**  
L'avvio dei processi di ottimizzazione con avvio a caldo richiede in genere più tempo rispetto ai processi di ottimizzazione degli iperparametri standard perché i risultati dei processi padre devono essere caricati prima di poter avviare il processo. I tempi più lunghi dipendono dal numero totale di processi di addestramento avviati dai processi padre.

I motivi per considerare l'avvio a caldo includono quanto segue:
+ Per aumentare gradualmente il numero di processi di addestramento in più processi di ottimizzazione in base ai risultati dopo ogni iterazione.
+ Per ottimizzare un modello utilizzando i nuovi dati ricevuti.
+ Per modificare gli intervalli di iperparametri utilizzati in un processo di ottimizzazione precedente, modifica gli iperparametri statici in ottimizzabili oppure modifica gli iperparametri ottimizzabili in valori statici.
+ Un processo di ottimizzazione degli iperparametri è stato interrotto in anticipo o in modo imprevisto.

**Topics**
+ [Tipi di processi di ottimizzazione con avvio a caldo](#tuning-warm-start-types)
+ [Limitazioni dell'ottimizzazione con avvio a caldo](#warm-start-tuning-restrictions)
+ [Notebook di esempio per l'ottimizzazione con avvio a caldo](#warm-start-tuning-sample-notebooks)
+ [Creazione di un processo di ottimizzazione con avvio a caldo](#warm-start-tuning-example)

## Tipi di processi di ottimizzazione con avvio a caldo
<a name="tuning-warm-start-types"></a>

Sono disponibili due diversi tipi di processi di ottimizzazione con avvio a caldo:

`IDENTICAL_DATA_AND_ALGORITHM`  
Il nuovo processo di ottimizzazione degli iperparametri utilizza gli stessi dati di input e la stessa immagine di addestramento dei processi di ottimizzazione padre. Puoi modificare gli intervalli di iperparametri da cercare e il numero massimo di processi di addestramento avviati dal processo di ottimizzazione degli iperparametri. Puoi anche modificare gli iperparametri da ottimizzabili a statici e da statici a ottimizzabili, ma il numero totale di iperparametri statici e ottimizzabili deve rimanere inalterato in tutti i processi padre. Non puoi utilizzare una nuova versione dell'algoritmo di addestramento, a meno che le modifiche nella nuova versione non interessino l'algoritmo stesso. Ad esempio, sono consentite le modifiche che migliorano il logging o l'aggiunta del supporto per un altro formato di dati.  
Non modificare dati e algoritmi quando utilizzi gli stessi dati di addestramento di un processo di ottimizzazione degli iperparametri precedente, aumentando però il numero totale di processi di addestramento o modificando gli intervalli o i valori degli iperparametri.  
Quando esegui un processo di ottimizzazione con avvio a caldo di tipo `IDENTICAL_DATA_AND_ALGORITHM`, viene visualizzato un altro campo nella risposta a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html) denominato `OverallBestTrainingJob`. Il valore di questo campo è [TrainingJobSummary](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobSummary.html) per il processo di training con il miglior valore del parametro obiettivo di tutti i processi di training avviati da questo processo di ottimizzazione e di tutti i processi padre specificati per il processo di ottimizzazione con avvio a caldo.

`TRANSFER_LEARNING`  
Il nuovo processo di ottimizzazione degli iperparametri può includere dati di input, intervalli di iperparametri, il numero massimo di processi di addestramento simultanei e il numero massimo di processi di addestramento diversi rispetto a quelli dei processi di ottimizzazione degli iperparametri padre. Puoi anche modificare gli iperparametri da ottimizzabili a statici e da statici a ottimizzabili, ma il numero totale di iperparametri statici e ottimizzabili deve rimanere inalterato in tutti i processi padre. L'immagine dell'algoritmo di addestramento può anche essere una versione diversa rispetto a quella utilizzata nel processo di ottimizzazione degli iperparametri padre. Quando utilizzi il trasferimento dell'apprendimento, le modifiche nel set di dati o l'algoritmo che influisce significativamente sul valore del parametro obiettivo potrebbero rendere meno utile l'utilizzo dell'ottimizzazione con avvio a caldo.

## Limitazioni dell'ottimizzazione con avvio a caldo
<a name="warm-start-tuning-restrictions"></a>

Le seguenti limitazioni si applicano a tutti i processi di ottimizzazione con avvio a caldo:
+ Un processo di ottimizzazione può avere un massimo di 5 processi padre e tutti i processi padre devono essere in uno stato terminale (`Completed`, `Stopped` o `Failed`) prima di avviare il nuovo processo di ottimizzazione.
+ Il parametro obiettivo utilizzato nel nuovo processo di ottimizzazione deve essere lo stesso di quello utilizzato nei processi padre.
+ Il numero totale iperparametri statici e ottimizzabili deve rimanere lo stesso tra i processi padre e il nuovo processo di ottimizzazione. Per questo motivo, se pensi di voler utilizzare un iperparametro ottimizzabile in un futuro processo di ottimizzazione con avvio a caldo, devi aggiungerlo come iperparametro statico quando crei un processo di ottimizzazione.
+ Il tipo di ogni iperparametro (continuo, intero, categorico) non deve cambiare tra un processo padre e il nuovo processo di ottimizzazione.
+ Il numero totale delle modifiche da iperparametri ottimizzabili nei processi padre a iperparametri statici nel nuovo processo di ottimizzazione più il numero di modifiche nei valori degli iperparametri statici non può superare 10. Ad esempio, se il processo padre ha un iperparametro ottimizzabile categorico con i valori possibili `red` e `blue` e modifichi l'iperparametro su statico nel nuovo processo di ottimizzazione, vengono conteggiate 2 modifiche in rapporto al limite di 10. Vengono conteggiate 2 modifiche anche se lo stesso iperparametro aveva un valore statico di `red` nel processo padre e modifichi il valore statico su `blue` nel nuovo processo di ottimizzazione.
+ L'ottimizzazione con avvio a caldo non è ricorsiva. Ad esempio, se crei `MyTuningJob3` come processo di ottimizzazione con avvio a caldo con `MyTuningJob2` come processo padre e `MyTuningJob2` è un processo di ottimizzazione con avvio a caldo con un processo padre `MyTuningJob1`, le informazioni apprese durante l'esecuzione di `MyTuningJob1` non vengono utilizzate per `MyTuningJob3`. Per utilizzare le informazioni di `MyTuningJob1`, devi aggiungerlo esplicitamente come padre per `MyTuningJob3`.
+ I processi di addestramento avviati da ogni processo padre in un processo di ottimizzazione con avvio a caldo vengono conteggiati nel numero massimo di 500 processi di addestramento per un processo di ottimizzazione.
+ I processi di ottimizzazione degli iperparametri creati prima del 1° ottobre 2018 non possono essere utilizzati come processi padre per i processi di ottimizzazione con avvio a caldo.

## Notebook di esempio per l'ottimizzazione con avvio a caldo
<a name="warm-start-tuning-sample-notebooks"></a>

[Per un notebook di esempio che mostra come utilizzare l'ottimizzazione con avvio a caldo, consulta/\$1image\$1classification\$1warmstart.ipynb. https://github.com/awslabs/ amazon-sagemaker-examples blob/master/hyperparameter\$1tuning/image\$1classification\$1warmstart/hpo](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynb)

## Creazione di un processo di ottimizzazione con avvio a caldo
<a name="warm-start-tuning-example"></a>

Puoi utilizzare l' AWS SDK di basso livello per Python (Boto 3) o l'SDK AI SageMaker Python di alto livello per creare un lavoro di ottimizzazione iniziale.

**Topics**
+ [Crea un Warm Start Tuning Job (API SageMaker AI di basso livello per Python (Boto 3))](#warm-start-tuning-example-boto)
+ [Crea un Warm Start Tuning Job (SageMaker AI Python SDK)](#warm-start-tuning-example-sdk)

### Crea un Warm Start Tuning Job (API SageMaker AI di basso livello per Python (Boto 3))
<a name="warm-start-tuning-example-boto"></a>

Per utilizzare l'ottimizzazione con avvio a caldo, devi specificare i valori di un oggetto [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html) e passarli come campo `WarmStartConfig` in una chiamata a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html).

Il codice seguente mostra come creare un [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html)oggetto e passarlo al [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)job utilizzando l'API SageMaker AI di basso livello per Python (Boto 3).

Crea l'oggetto `HyperParameterTuningJobWarmStartConfig`:

```
warm_start_config = {
          "ParentHyperParameterTuningJobs" : [
          {"HyperParameterTuningJobName" : 'MyParentTuningJob'}
          ],
          "WarmStartType" : "IdenticalDataAndAlgorithm"
}
```

Crea il processo di ottimizzazione con avvio a caldo:

```
smclient = boto3.Session().client('sagemaker')
smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = 'MyWarmStartTuningJob',
   HyperParameterTuningJobConfig = tuning_job_config, # See notebook for tuning configuration
   TrainingJobDefinition = training_job_definition, # See notebook for job definition
   WarmStartConfig = warm_start_config)
```

### Crea un Warm Start Tuning Job (SageMaker AI Python SDK)
<a name="warm-start-tuning-example-sdk"></a>

Per utilizzare l'[SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) per eseguire un processo di ottimizzazione con avvio immediato, devi:
+ Specificare i processi padre e il tipo di avvio a caldo utilizzando un oggetto `WarmStartConfig`.
+ Passa l'`WarmStartConfig`oggetto come valore dell'`warm_start_config`argomento di un oggetto. [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/tuner.html)
+ Chiamare il metodo `fit` dell'oggetto `HyperparameterTuner`.

[Per ulteriori informazioni sull'utilizzo dell'[SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) per l'ottimizzazione degli iperparametri, consulta \$1. https://github.com/aws/ sagemaker-python-sdk sagemaker-automatic-model-tuning](https://github.com/aws/sagemaker-python-sdk#sagemaker-automatic-model-tuning)

Questo esempio utilizza uno strumento di valutazione basato sull'algoritmo [Classificazione delle immagini - MXNet](image-classification.md) per l’addestramento. Il codice seguente imposta gli intervalli degli iperparametri in cui il processo di ottimizzazione con avvio a caldo esegue le ricerche per trovare la migliore combinazione di valori. Per ulteriori informazioni sull'impostazione degli intervalli degli iperparametri, consulta [Definire gli intervalli degli iperparametri](automatic-model-tuning-define-ranges.md).

```
hyperparameter_ranges = {'learning_rate': ContinuousParameter(0.0, 0.1),
                         'momentum': ContinuousParameter(0.0, 0.99)}
```

Il codice seguente configura il processo di ottimizzazione con avvio a caldo creando un oggetto `WarmStartConfig`.

```
from sagemaker.tuner import WarmStartConfig,WarmStartTypes

parent_tuning_job_name = "MyParentTuningJob"
warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents={parent_tuning_job_name})
```

Ora imposta i valori per gli iperparametri statici, ovvero gli iperparametri che mantengono lo stesso valore per ogni processo di addestramento avviato dal processo di ottimizzazione con avvio a caldo. Nel codice seguente, `imageclassification` è uno strumento di valutazione creato in precedenza.

```
imageclassification.set_hyperparameters(num_layers=18,
                                        image_shape='3,224,224',
                                        num_classes=257,
                                        num_training_samples=15420,
                                        mini_batch_size=128,
                                        epochs=30,
                                        optimizer='sgd',
                                        top_k='2',
                                        precision_dtype='float32',
                                        augmentation_type='crop')
```

Ora, crea l'oggetto `HyperparameterTuner` e passa l'oggetto `WarmStartConfig` creato in precedenza come argomento `warm_start_config`.

```
tuner_warm_start = HyperparameterTuner(imageclassification,
                            'validation:accuracy',
                            hyperparameter_ranges,
                            objective_type='Maximize',
                            max_jobs=10,
                            max_parallel_jobs=2,
                            base_tuning_job_name='warmstart',
                            warm_start_config=warm_start_config)
```

Infine, chiama il metodo `fit` dell'oggetto `HyperparameterTuner` e avvia il processo di ottimizzazione con avvio a caldo.

```
tuner_warm_start.fit(
        {'train': s3_input_train, 'validation': s3_input_validation},
        include_cls_metadata=False)
```

# Limiti delle risorse di ottimizzazione automatica dei modelli
<a name="automatic-model-tuning-limits"></a>

SageMaker L'intelligenza artificiale imposta i seguenti limiti predefiniti per le risorse utilizzate dall'ottimizzazione automatica dei modelli:


| Risorsa | Regioni | Limiti predefiniti | Può essere aumentata fino a | 
| --- | --- | --- | --- | 
|  Numero di processi paralleli (concomitanti) di ottimizzazione degli iperparametri  |  Tutti  |  100  |  N/D  | 
|  Numero di iperparametri che possono essere oggetto di ricerca. \$1  |  Tutti  |  30  |  N/D  | 
|  Numero di parametri definiti per processo di ottimizzazione degli iperparametri  |  Tutti  |  20  |  N/D  | 
|  Numero di processi di addestramento paralleli per processo di ottimizzazione degli iperparametri  |  Tutti  |  10  |  100  | 
|  [Ottimizzazione bayesiana] Numero di processi di addestramento per ogni processo di ottimizzazione degli iperparametri  |  Tutti  |  750  |  N/D  | 
|  [Ricerca random] Numero di processi di addestramento per ogni processo di ottimizzazione degli iperparametri  |  Tutti  |  750  |  10000  | 
|  [Hyperband] Numero di processi di addestramento per ogni processo di ottimizzazione degli iperparametri  |  Tutti  |  750  |  N/D  | 
|  [Griglia] Numero di processi di addestramento per ogni processo di ottimizzazione degli iperparametri, specificato esplicitamente o dedotto dallo spazio di ricerca.  |  Tutti  |  750  |  N/D  | 
|  Il numero massimo di runtime per un processo di ottimizzazione degli iperparametri  |  Tutti  |  30 giorni  |  N/D  | 

\$1 Ogni iperparametro categorico può avere al massimo 30 valori diversi.

## Esempio di limiti delle risorse
<a name="automatic-model-tuning-limits-example"></a>

Quando si pianificano i processi di ottimizzazione degli iperparametri, è necessario tenere in considerazione anche i limiti delle risorse di addestramento. Per informazioni sui limiti di risorse predefiniti per i lavori di formazione sull' SageMaker intelligenza artificiale, consulta [SageMaker AI Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_sagemaker). Ogni istanza di addestramento simultanea su cui vengono eseguiti tutti i processi di ottimizzazione degli iperparametri conta sul numero totale di istanze di addestramento consentite. Ad esempio, se si eseguono 10 processi di ottimizzazione degli iperparametri simultanei, ognuno di questi processi esegue 100 processi di addestramento totali e 20 processi di addestramento simultanei. Ciascuno di questi processi di addestramento viene eseguito su un'istanza **ml.m4.xlarge**. Si applicano i seguenti limiti: 
+ Numero di processi di ottimizzazione degli iperparametri simultanei: non è necessario aumentare il limite, perché 10 processi di ottimizzazione sono inferiori al limite di 100.
+ Numero di processi di addestramento per processi di ottimizzazione degli iperparametri: non è necessario aumentare il limite, perché 100 processi di addestramento sono inferiori al limite di 750.
+ Numero di processi di addestramento simultanei per processo di ottimizzazione degli iperparametri: è necessario richiedere un aumento del limite a 20, perché il limite di default è 10.
+ SageMaker Istanze **ml.m4.xlarge** di addestramento basato sull'intelligenza artificiale: devi richiedere un aumento del limite a 200, perché hai 10 lavori di ottimizzazione iperparametrica, ognuno dei quali esegue 20 lavori di formazione simultanei. Il limite predefinito è di 20 istanze.
+ SageMaker Numero totale di istanze di formazione AI: devi richiedere un aumento del limite a 200, perché hai 10 lavori di ottimizzazione iperparametrica, ognuno dei quali esegue 20 lavori di formazione simultanei. Il limite predefinito è di 20 istanze.

**Per richiedere un aumento delle quote:**

1. Aprire la pagina del [Centro di supporto AWS](https://console.aws.amazon.com/support/home#/) effettuando l'accesso se necessario, quindi seleziona **Crea caso**. 

1. Nella pagina **Crea caso** scegli **Aumento del limite di servizio**.

1. **Nel pannello dei **dettagli del caso**, seleziona **SageMaker AI Automatic Model Tuning [Hyperparameter Optimization**] per il tipo di limite** 

1. Nel pannello **Richieste** per la **Richiesta 1**, seleziona la **Regione**, il **Limite** di risorse da aumentare e il **Valore del nuovo limite** che richiedi. Seleziona **Aggiungi un'altra richiesta** se hai ulteriori richieste di aumento delle quote.  
![\[\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hpo/hpo-quotas-service-linit-increase-request.PNG)

1. Nel pannello **Descrizione del caso**, fornisci una descrizione del tuo caso d'uso.

1. Nel pannello **Opzioni di contatto**, seleziona i **metodi di contatto** preferiti (**Web**, **Cchat** o **Telefono**), quindi scegli **Invia**. 

# Best practice per l'ottimizzazione iperparametri
<a name="automatic-model-tuning-considerations"></a>

L'ottimizzazione degli iperparametri (HPO) non è un processo completamente automatico. Per migliorare l'ottimizzazione, segui queste best practice per l'ottimizzazione degli iperparametri.

**Topics**
+ [Scegliere una strategia di ottimizzazione](#automatic-model-tuning-strategy)
+ [Scelta del numero di iperparametri](#automatic-model-tuning-num-hyperparameters)
+ [Scegliere gli intervalli degli iperparametri](#automatic-model-tuning-choosing-ranges)
+ [Utilizzo delle scale corrette per gli iperparametri](#automatic-model-tuning-log-scales)
+ [Scelta del miglior numero di processi di addestramento paralleli](#automatic-model-tuning-parallelism)
+ [Esecuzione di processi di addestramento su più istanze](#automatic-model-tuning-distributed-metrics)
+ [Utilizzo di un seed casuale per riprodurre le configurazioni degli iperparametri](#automatic-model-tuning-random-seed)

## Scegliere una strategia di ottimizzazione
<a name="automatic-model-tuning-strategy"></a>

Per processi di grandi dimensioni, l'utilizzo della strategia di ottimizzazione [Hyperband](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-hyperband) può ridurre i tempi di calcolo. Hyperband dispone di un meccanismo di arresto rapido per arrestare i processi con prestazioni insoddisfacenti. Hyperband può anche riallocare le risorse verso configurazioni di iperparametri ben utilizzate ed eseguire processi paralleli. Per processi di addestramento più piccoli che richiedono meno tempo di esecuzione, utilizza la [ricerca casuale](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-random-search) o l'[ottimizzazione bayesiana](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-bayesian-optimization.title). 

Nell'esecuzione successiva utilizza l'ottimizzazione bayesiana per prendere decisioni sempre più informate sul miglioramento delle configurazioni degli iperparametri. L'ottimizzazione bayesiana utilizza le informazioni raccolte dalle esecuzioni precedenti per migliorare le esecuzioni successive. A causa della sua natura sequenziale, l'ottimizzazione bayesiana non può dimensionare in modo massiccio. 

Usa la ricerca casuale per eseguire un gran numero di processi paralleli. Nella ricerca casuale, i processi successivi non dipendono dai risultati dei processi precedenti e possono essere eseguiti indipendentemente. Rispetto ad altre strategie, la ricerca casuale è in grado di eseguire il maggior numero di processi paralleli. 

Utilizza la [ricerca a griglia](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html#automatic-tuning-grid-search) per riprodurre i risultati di un processo di ottimizzazione o se la semplicità e la trasparenza dell'algoritmo di ottimizzazione sono importanti. Puoi anche utilizzare la ricerca a griglia per esplorare in modo uniforme l'intero spazio di ricerca degli iperparametri. La ricerca a griglia cerca metodicamente in ogni combinazione di iperparametri per trovare i valori ottimali degli iperparametri. A differenza della ricerca a griglia, l'ottimizzazione bayesiana, la ricerca casuale e Hyperband estraggono tutti gli iperparametri in modo casuale dallo spazio di ricerca. Poiché la ricerca a griglia analizza ogni combinazione di iperparametri, i valori ottimali degli iperparametri saranno identici tra i processi di ottimizzazione che utilizzano gli stessi iperparametri. 

## Scelta del numero di iperparametri
<a name="automatic-model-tuning-num-hyperparameters"></a>

Durante l'ottimizzazione, la complessità computazionale di un processo di ottimizzazione degli iperparametri dipende da quanto segue:
+ Il numero di iperparametri
+ L'intervallo di valori che Amazon SageMaker AI deve cercare

Sebbene sia possibile specificare contemporaneamente fino a 30 iperparametri, limitare la ricerca a un numero inferiore può ridurre i tempi di calcolo. La riduzione dei tempi di calcolo consente all' SageMaker IA di convergere più rapidamente verso una configurazione iperparametrica ottimale.

## Scegliere gli intervalli degli iperparametri
<a name="automatic-model-tuning-choosing-ranges"></a>

L'intervallo di valori che si sceglie di cercare può influire negativamente sull'ottimizzazione degli iperparametri. Ad esempio, un intervallo che copre ogni possibile valore degli iperparametri può portare a tempi di calcolo lunghi e a un modello che non si generalizza bene ai dati invisibili. Se sai che l'utilizzo di un sottoinsieme dell'intervallo più ampio possibile è appropriato per il tuo caso d'uso, valuta la possibilità di limitare l'intervallo a quel sottoinsieme.

## Utilizzo delle scale corrette per gli iperparametri
<a name="automatic-model-tuning-log-scales"></a>

Durante l'ottimizzazione degli iperparametri, l' SageMaker intelligenza artificiale tenta di dedurre se gli iperparametri sono in scala logaritmica o lineare. Inizialmente SageMaker , l'intelligenza artificiale presuppone una scalabilità lineare per gli iperparametri. Se gli iperparametri sono in scala logaritmica, la scelta della scala corretta renderà la ricerca più efficiente. Puoi anche selezionare `Auto` for `ScalingType` nell'[CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)API se desideri che l' SageMaker IA rilevi la scala per te.

## Scelta del miglior numero di processi di addestramento paralleli
<a name="automatic-model-tuning-parallelism"></a>

È possibile utilizzare i risultati delle prove precedenti per migliorare le prestazioni delle prove successive. Scegli il maggior numero di processi paralleli in grado di fornire un risultato incrementale significativo che rientri anche nei limiti della tua Regione e account. Utilizza il campo [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html#MaxParallelTrainingJobs](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html#MaxParallelTrainingJobs) per limitare il numero di processi di addestramento che un processo di ottimizzazione degli iperparametri può avviare in parallelo. Per ulteriori informazioni, consulta [Esecuzione di più processi HPO in parallelo su Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/running-multiple-hpo-jobs-in-parallel-on-amazon-sagemaker).

## Esecuzione di processi di addestramento su più istanze
<a name="automatic-model-tuning-distributed-metrics"></a>

Quando un processo di addestramento viene eseguito su più macchine in modalità distribuita, ogni macchina emette un parametro obiettivo. HPO può utilizzare solo uno di questi parametri obiettivi emessi per valutare le prestazioni del modello. In modalità distribuita, HPO utilizza il parametro obiettivo riportato dall'ultimo processo in esecuzione in tutte le istanze. 

## Utilizzo di un seed casuale per riprodurre le configurazioni degli iperparametri
<a name="automatic-model-tuning-random-seed"></a>

È possibile specificare un numero intero come seed casuale per l'ottimizzazione degli iperparametri e utilizzare quel seed durante la generazione degli iperparametri. Successivamente, puoi utilizzare lo stesso seed per riprodurre configurazioni di iperparametri coerenti con i risultati precedenti. Per le strategie di ricerca casuale e Hyperband, l'utilizzo dello stesso seed casuale può fornire una riproducibilità fino al 100% della precedente configurazione degli iperparametri per lo stesso processo di ottimizzazione. Per quanto riguarda la strategia bayesiana, l'utilizzo dello stesso seed casuale migliorerà la riproducibilità dello stesso processo di ottimizzazione.