Definire gli intervalli degli iperparametri - Amazon SageMaker

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

Definire gli intervalli degli iperparametri

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 di valori che tu specifichi per ogni iperparametro ottimizzabile. È inoltre possibile specificare fino a 100 iperparametri statici che non cambiano nel corso del processo di ottimizzazione. È possibile utilizzare fino a un totale di 100 iperparametri (statici + regolabili). Per indicazioni sulla scelta degli iperparametri e degli intervalli, consulta Best practice per l'ottimizzazione iperparametri. 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 Automatic Model Tuning (AMT) può aggiungere iperparametri aggiuntivi che contribuiscono al limite di 100 iperparametri totali. Attualmente, per passare la metrica oggettiva al processo di ottimizzazione da utilizzare durante l'allenamento, viene aggiunta automaticamente. SageMaker _tuning_objective_metric

Iperparametri statici

Utilizza iperparametri statici per i seguenti casi: 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 Amazon SageMaker API per specificare coppie chiave-valore nel StaticHyperParameterscampo del HyperParameterTrainingJobDefinition parametro che passi all'CreateHyperParameterTuningJoboperazione.

Iperparametri dinamici

Puoi utilizzare il SageMaker API per definire intervalli di iperparametri. Specifica i nomi degli iperparametri e degli intervalli di valori nel campo ParameterRanges del parametro HyperParameterTuningJobConfig che passi all'operazione CreateHyperParameterTuningJob.

Il campo ParameterRanges ha tre sottocampi: categorico, intero e continuo. È possibile definire fino a 30 Iperparametri ottimizzabili totali (categorici+ interi+continui) 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

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— I nomi e gli intervalli di iperparametri che un processo di ottimizzazione può ottimizzare.

  • ResourceLimits— 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— 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.

  • RetryStrategy— Il numero di volte in cui riprovare un lavoro di formazione. Valori diversi da zero per RetryStrategy possono aumentare la probabilità che il processo venga completato con successo.

  • Strategia: specifica in che modo l'ottimizzazione degli iperparametri sceglie le combinazioni di valori degli iperparametri da utilizzare per il processo di addestramento avviato.

  • ConvergenceDetected— 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 di. ParameterRangesAPI

  2. Abilitare l'ottimizzazione automatica.

AMTdeterminerà se gli iperparametri e i valori di esempio sono idonei per l'autotune. 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 il DescribeHyperParameterTrainingJob API per visualizzare questi 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 a. CreateHyperParameterTuningJob API Quindi, autotune converte l'iperparametro max_depth in iperparametro. AutoParameters IntegerParameterRanges La seguente risposta di a DescribeHyperParameterTrainingJob API mostra che i valori ottimali per sono compresi tra e. IntegerParameterRanges max_depth 2 8

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

Tipi di dimensionamento degli iperparametri

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:

Auto (Automatico)

SageMaker la regolazione degli iperparametri 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 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 SageMaker iperparametri Amazon su. GitHub