

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

# 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 
          }
      ],
      ...,
   },
   ...,        
}
```