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
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. Questa guida mostra anche come specificare le variabili di ambiente durante un processo di ottimizzazione automatica dei modelli (AMT).
Definizione dei parametri
L'ottimizzazione degli SageMaker iperparametri di Amazon 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
Se utilizzi uno degli algoritmi SageMaker integrati, le metriche sono già definite 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 Events with Amazon CloudWatch.
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 Built-in Algorithms or Pre-training Models.
Puoi scegliere fino a 40 parametri da monitorare per il processo di ottimizzazione. Seleziona uno di questi parametri come parametro obiettivo. Il processo di ottimizzazione degli iperparametri restituisce il processo di addestramento 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
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 CreateHyperParameterTuningJob
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. CreateHyperParameterTuningJob
Specificare variabili di ambiente
SageMaker 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 per all'interno dell'API. Environment
SageMaker HyperParameterTrainingJobDefinition Passa questa definizione del processo di formazione all'CreateHyperParameterTuningJobAPI.
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, come segue.
{ "HyperParameterTuningJobConfig": { ..., } "TrainingJobDefinition": { ..., "Environment" : [ { "SM_LOG_LEVEL": 10 } ], ..., }, ..., }