Gli iperparametri sono le variabili che regolano il processo di addestramento di un modello, ad esempio la dimensione del batch o il numero di strati nascosti in una rete neurale profonda. L'ottimizzazione degli iperparametri cerca la migliore combinazione di valori degli iperparametri ottimizzando i valori delle metriche in una serie di prove. Le metriche sono riepiloghi scalari che aggiungi al tuo trainer, ad esempio l'accuratezza del modello.
Scopri di più sull'ottimizzazione degli iperparametri su Vertex AI. Per un esempio passo passo, consulta il codelab Vertex AI: Hyperparameter Tuning.
Questa pagina illustra come:
Prepara l'applicazione di addestramento per l'ottimizzazione degli iperparametri aggiornandola in modo da accettare gli iperparametri come argomenti della riga di comando e segnalare i valori delle metriche a Vertex AI.
Crea il job di addestramento degli iperparametri. Per ulteriori informazioni sulle opzioni di configurazione, consulta Informazioni sulla configurazione dell'ottimizzazione di iperparametri.
Preparare l'applicazione di addestramento
In un job di ottimizzazione degli iperparametri, Vertex AI crea prove del job di addestramento con diversi insiemi di iperparametri e valuta l'efficacia di una prova utilizzando le metriche specificate. Vertex AI trasmette i valori degli iperparametri all'applicazione di addestramento come argomenti della riga di comando. Affinché Vertex AI possa valutare l'efficacia di un esperimento, la tua applicazione di addestramento deve segnalare le metriche a Vertex AI.
Le sezioni seguenti descrivono:
- In che modo Vertex AI passa gli iperparametri all'applicazione di addestramento.
- Opzioni per trasmettere le metriche dall'applicazione di addestramento a Vertex AI.
Per scoprire di più sui requisiti per le applicazioni di addestramento personalizzato eseguite su Vertex AI, consulta la sezione Requisiti del codice di addestramento.
Gestire gli argomenti della riga di comando per gli iperparametri da ottimizzare
Vertex AI imposta gli argomenti della riga di comando quando chiama l'applicazione di addestramento. Utilizza gli argomenti della riga di comando nel codice:
Definisci un nome per ogni argomento dell'iperparametro e analizzalo utilizzando il parser di argomenti che preferisci, ad esempio
argparse
. Utilizza gli stessi nomi degli argomenti quando configuri il job di addestramento degli iperparametri.Ad esempio, se l'applicazione di addestramento è un modulo Python denominato
my_trainer
e stai ottimizzando un iperparametro denominatolearning_rate
, Vertex AI avvia ogni prova con un comando come il seguente:python3 -m my_trainer --learning_rate learning-rate-in-this-trial
Vertex AI determina il valore learning-rate-in-this-trial e lo passa utilizzando l'argomento
learning_rate
.Assegna i valori degli argomenti della riga di comando agli iperparametri nel codice di addestramento.
Scopri di più sui requisiti per l'analisi sintattica degli argomenti della riga di comando.
Segnalare le metriche a Vertex AI
Per segnalare le metriche a Vertex AI, utilizza il cloudml-hypertune
pacchetto Python. Questa libreria fornisce funzioni di supporto per la generazione di report sulle metriche in Vertex AI.
Scopri di più sulle metriche degli iperparametri dei report.
Creazione di un job di ottimizzazione iperparametri
A seconda dello strumento che vuoi utilizzare per creare un HyperparameterTuningJob
,
seleziona una delle seguenti schede:
Console
Nella console Google Cloud non puoi creare direttamente una risorsa HyperparameterTuningJob
. Tuttavia, puoi creare una risorsa TrainingPipeline
che crea un
HyperparameterTuningJob
.
Le istruzioni riportate di seguito descrivono come creare un TrainingPipeline
che
crea un HyperparameterTuningJob
e non fa altro. Se vuoi utilizzare altre funzionalità di TrainingPipeline
, ad esempio l'addestramento con un set di dati gestito, leggi la sezione Creare pipeline di addestramento.
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Pipeline di addestramento.
Fai clic su
Crea per aprire il riquadro Addestra nuovo modello.Nel passaggio Metodo di addestramento, specifica le seguenti impostazioni:
Nell'elenco a discesa Set di dati, seleziona Nessun set di dati gestito.
Seleziona Addestramento personalizzato (avanzato).
Fai clic su Continua.
Nel passaggio Dettagli modello, scegli Addestra nuovo modello o Addestra nuova versione. Se selezioni Addestra nuovo modello, inserisci un nome a tua scelta,MODEL_NAME, per il modello. Fai clic su Continua.
Nel passaggio Container di addestramento, specifica le seguenti impostazioni:
Seleziona se utilizzare un container predefinito o un contenuto personalizzato per l'addestramento.
A seconda della tua scelta, esegui una delle seguenti operazioni:
Se vuoi utilizzare un container predefinito per l'addestramento, fornisci a Vertex AI le informazioni necessarie per utilizzare il pacchetto di addestramento che hai caricato su Cloud Storage:
Utilizza gli elenchi a discesa Framework modello e Versione framework modello per specificare il container predefinito da utilizzare.
Nel campo Posizione del pacchetto, specifica l'URI Cloud Storage dell'applicazione di addestramento Python che hai creato e caricato. Di solito questo file termina con
.tar.gz
.Nel campo Modulo Python, inserisci il nome del modulo dell'entry point della tua applicazione di addestramento.
Se vuoi utilizzare un container personalizzato per l'addestramento, nel campo Immagine container specifica l'URI di Artifact Registry o Docker Hub dell'immagine container.
Nel campo Directory di output del modello, puoi specificare l'URI Cloud Storage di una directory in un bucket a cui hai accesso. La directory non deve ancora esistere.
Questo valore viene passato a Vertex AI nel campo
baseOutputDirectory
API, che imposta diverse variabili di ambiente a cui l'applicazione di addestramento può accedere quando viene eseguita.Facoltativo: nel campo Argomenti, puoi specificare gli argomenti da utilizzare da parte di Vertex AI quando inizia a eseguire il codice di addestramento. La lunghezza massima per tutti gli argomenti combinati è di 100.000 caratteri. Il comportamento di questi argomenti varia a seconda del tipo di contenitore utilizzato:
Se utilizzi un contenitore predefinito, Vertex AI trasmette gli argomenti come flag a riga di comando al modulo Python.
Se utilizzi un contenitore personalizzato, Vertex AI sostituisce l'istruzione
CMD
del contenitore con gli argumenti.
Fai clic su Continua.
Nel passaggio Ottimizzazione degli iperparametri, seleziona la casella di controllo Abilita ottimizzazione degli iperparametri e specifica le seguenti impostazioni:
Nella sezione Nuovo iperparametro, specifica il nome parametro e il tipo di un iperparametro da ottimizzare. A seconda del tipo specificato, configura le impostazioni degli iperparametri aggiuntivi visualizzate.
Scopri di più sui tipi di iperparametri e sulle relative configurazioni.
Se vuoi ottimizzare più di un iperparametro, fai clic su Aggiungi nuovo parametro e ripeti il passaggio precedente nella nuova sezione visualizzata.
Ripeti questa operazione per ogni iperparametro che vuoi ottimizzare.
Nel campo Metrica da ottimizzare e nell'elenco a discesa Obiettivo, specifica il nome e l'obiettivo della metrica che vuoi ottimizzare.
Nel campo Numero massimo di prove, specifica il numero massimo di prove che vuoi che Vertex AI esegua per il tuo job di ottimizzazione degli iperparametri.
Nel campo Numero massimo di prove parallele, specifica il numero massimo di prove da eseguire contemporaneamente.
Nell'elenco a discesa Algoritmo di ricerca, specifica un algoritmo di ricerca da utilizzare per Vertex AI.
Ignora l'opzione di attivazione/disattivazione Abilita l'interruzione anticipata, che non ha alcun effetto.
Fai clic su Continua.
Nel passaggio Computing e prezzi, specifica le seguenti impostazioni:
Nell'elenco a discesa Regione, seleziona una "regione che supporta l'addestramento personalizzato".
Nella sezione Pool di worker 0, specifica le risorse di calcolo da utilizzare per l'addestramento.
Se specifichi gli acceleratori, assicurati che il tipo di acceleratore scelto sia disponibile nella regione selezionata.
Se vuoi eseguire l'addestramento distribuito, fai clic su Aggiungi altri pool di worker e specifica un altro insieme di risorse di calcolo per ogni altro pool di worker che vuoi.
Fai clic su Continua.
Nel passaggio Contenitore di previsione, seleziona Nessun contenitore di previsione.
Fai clic su Inizia addestramento per avviare la pipeline di addestramento personalizzato.
gcloud
I passaggi che seguono mostrano come utilizzare Google Cloud CLI per creare un
HyperparameterTuningJob
con una configurazione relativamente minima. Per scoprire tutte le opzioni di configurazione che puoi utilizzare per questa operazione, consulta la documentazione di riferimento del comando gcloud ai hp-tuning-jobs create
e la risorsa API HyperparameterTuningJob
.
Crea un file YAML denominato
config.yaml
con alcuni campi dell'API che vuoi specificare per il nuovoHyerparameterTuningJob
:config.yaml
studySpec: metrics: - metricId: METRIC_ID goal: METRIC_GOAL parameters: - parameterId: HYPERPARAMETER_ID doubleValueSpec: minValue: DOUBLE_MIN_VALUE maxValue: DOUBLE_MAX_VALUE trialJobSpec: workerPoolSpecs: - machineSpec: machineType: MACHINE_TYPE replicaCount: 1 containerSpec: imageUri: CUSTOM_CONTAINER_IMAGE_URI
Sostituisci quanto segue:
METRIC_ID
: il nome di una metrica dell'iperparametro da ottimizzare. Il codice di addestramento deve segnalare questa metrica durante l'esecuzione.METRIC_GOAL
: l'obiettivo per la metrica dell'iperparametro,MAXIMIZE
oMINIMIZE
.HYPERPARAMETER_ID
: il nome di un iperparametro da ottimizzare. Il codice di addestramento deve analizzare un flag a riga di comando con questo nome. Per questo esempio, l'iperparametro deve accettare valori di tipo floating point. Scopri altri tipi di dati degli iperparametri.DOUBLE_MIN_VALUE
: il valore minimo (un numero) che vuoi che Vertex AI provi per questo iperparametro.DOUBLE_MAX_VALUE
: il valore massimo (un numero) che vuoi che Vertex AI provi per questo iperparametro.MACHINE_TYPE
: il tipo di VM da utilizzare per l'addestramento.CUSTOM_CONTAINER_IMAGE_URI
: l'URI di un'immagine container Docker con il codice di addestramento. Scopri come creare un'immagine contenitore personalizzata.Per questo esempio, devi utilizzare un container personalizzato. Le risorse
HyperparameterTuningJob
supportano anche il codice di addestramento in una distribuzione di origine Python anziché in un contenuto personalizzato.
Nella stessa directory del file
config.yaml
, esegui il seguente comando shell:gcloud ai hp-tuning-jobs create \ --region=LOCATION \ --display-name=DISPLAY_NAME \ --max-trial-count=MAX_TRIAL_COUNT \ --parallel-trial-count=PARALLEL_TRIAL_COUNT \ --config=config.yaml
Sostituisci quanto segue:
LOCATION
: la regione in cui vuoi creare ilHyperparameterTuningJob
. Utilizza una regione che supporta l'addestramento personalizzato.DISPLAY_NAME
: un nome visualizzato facile da ricordare scelto da te per ilHyperparameterTuningJob
. Scopri di più sui requisiti dei nomi delle risorse.MAX_TRIAL_COUNT
: il numero massimo di prove da eseguire.PARALLEL_TRIAL_COUNT
: il numero massimo di prove da eseguire in parallelo.
REST
Utilizza il seguente esempio di codice per creare un job di ottimizzazione degli iperparametri utilizzando il metodo create
della risorsa hyperparameterTuningJob
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
LOCATION
: la regione in cui vuoi creare ilHyperparameterTuningJob
. Utilizza una regione che supporta l'addestramento personalizzato. - PROJECT: il tuo ID progetto.
-
DISPLAY_NAME
: un nome visualizzato facile da ricordare scelto da te per ilHyperparameterTuningJob
. Scopri di più sui requisiti dei nomi delle risorse. - Specifica le metriche:
-
METRIC_ID
: il nome di una metrica dell'iperparametro da ottimizzare. Il codice di addestramento deve segnalare questa metrica durante l'esecuzione. -
METRIC_GOAL
: l'obiettivo per la metrica dell'iperparametro,MAXIMIZE
oMINIMIZE
.
-
- Specifica gli iperparametri:
-
HYPERPARAMETER_ID
: il nome di un iperparametro da ottimizzare. Il codice di addestramento deve analizzare un flag a riga di comando con questo nome. - PARAMETER_SCALE: (facoltativo) La modalità di applicazione della scala al parametro. Lascia vuoto
per i parametri CATEGORICAL. Può essere
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
oSCALE_TYPE_UNSPECIFIED
- Se il tipo di questo iperparametro è DOUBLE, specifica i valori minimo (DOUBLE_MIN_VALUE) e massimo (DOUBLE_MAX_VALUE) per questo iperparametro.
- Se il tipo di questo iperparametro è INTEGER, specifica i valori minimo (INTEGER_MIN_VALUE) e massimo (INTEGER_MAX_VALUE) per questo iperparametro.
- Se il tipo di questo iperparametro è CATEGORICO, specifica i valori accettabili (CATEGORICAL_VALUES) come array di stringhe.
- Se il tipo di questo iperparametro è DISCRETE, specifica i valori accettabili (DISCRETE_VALUES) come array di numeri.
- Specifica gli iperparametri condizionali. Gli iperparametri condizionali vengono aggiunti a una prova quando
il valore dell'iperparametro principale corrisponde alla condizione specificata. Scopri di più sugli
iperparametri condizionali.
- CONDITIONAL_PARAMETER: il
ParameterSpec
del parametro condizionale. Questa specifica include il nome, la scala, l'intervallo di valori del parametro e tutti i parametri condizionali che dipendono da questo iperparametro. - Se il tipo dell'iperparametro principale è INTEGER, specifica un elenco di numeri interi come INTEGERS_TO_MATCH. Se il valore dell'iperparametro principale corrisponde a uno dei valori specificati, questo parametro condizionale viene aggiunto alla prova.
- Se il tipo dell'iperparametro principale è CATEGORICAL, specifica un elenco di categorie come CATEGORIES_TO_MATCH. Se il valore dell'iperparametro principale corrisponde a uno dei valori specificati, questo parametro condizionale viene aggiunto alla prova.
- Se il tipo dell'iperparametro principale è DISCRETE, specifica un elenco di numeri interi come DISCRETE_VALUES_TO_MATCH. Se il valore dell'iperparametro principale corrisponde a uno dei valori specificati, questo parametro condizionale viene aggiunto alla prova.
- CONDITIONAL_PARAMETER: il
-
- ALGORITHM: (facoltativo) L'algoritmo di ricerca da utilizzare in questo job di ottimizzazione degli iperparametri. Può essere
ALGORITHM_UNSPECIFIED
,GRID_SEARCH
oRANDOM_SEARCH
. -
MAX_TRIAL_COUNT
: il numero massimo di prove da eseguire. -
PARALLEL_TRIAL_COUNT
: il numero massimo di prove da eseguire in parallelo. - MAX_FAILED_TRIAL_COUNT: il numero di job che possono non riuscire prima che il job di ottimizzazione degli iperparametri non riesca.
- Definisci il job di addestramento personalizzato di prova:
-
MACHINE_TYPE
: il tipo di VM da utilizzare per l'addestramento. - ACCELERATOR_TYPE: (facoltativo) Il tipo di acceleratore da collegare a ogni prova.
- ACCELERATOR_COUNT: (facoltativo) Il numero di acceleratori da collegare a ogni prova.
- REPLICA_COUNT: il numero di repliche dei worker da utilizzare per ogni prova.
- Se l'applicazione di addestramento viene eseguita in un contenitore personalizzato, specifica quanto segue:
-
CUSTOM_CONTAINER_IMAGE_URI
: l'URI di un'immagine container Docker con il codice di addestramento. Scopri come creare un'immagine contenitore personalizzata. - CUSTOM_CONTAINER_COMMAND: (facoltativo) Il comando da richiamare all'avvio del container. Questo comando sostituisce l'entrypoint predefinito del container.
- CUSTOM_CONTAINER_ARGS: (facoltativo) Gli argomenti da passare all'avvio del container.
-
- Se l'applicazione di addestramento è un pacchetto Python che viene eseguito in un container predefinito,
specifica quanto segue:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: l'URI dell'immagine del container che esegue il pacchetto Python fornito. Scopri di più sui container predefiniti per l'addestramento.
- PYTHON_PACKAGE_URIS: la posizione in Cloud Storage dei file del pacchetto Python, ovvero il programma di addestramento e i relativi pacchetti dipendenti. Il numero massimo di URI dei pacchetti è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione dei pacchetti.
- PYTHON_PACKAGE_ARGS: (facoltativo) Argomenti della riga di comando da passare al modulo Python.
- SERVICE_ACCOUNT: (facoltativo) L'account di servizio che Vertex AI utilizzerà per eseguire il codice. Scopri di più su come collegare un account di servizio personalizzato.
- TIMEOUT: (facoltativo) Il tempo di esecuzione massimo per ogni prova.
-
- Specifica LABEL_NAME e LABEL_VALUE per le eventuali etichette da applicare a questo job di ottimizzazione degli iperparametri.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/hyperparameterTuningJobs
Corpo JSON della richiesta:
{ "displayName": DISPLAY_NAME, "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. "conditionalParameterSpecs": [ "parameterSpec": { CONDITIONAL_PARAMETER } // Union field parent_value_condition can be only one of the following: "parentIntValues": { "values": [INTEGERS_TO_MATCH] } "parentCategoricalValues": { "values": [CATEGORIES_TO_MATCH] } "parentDiscreteValues": { "values": [DISCRETE_VALUES_TO_MATCH] } // End of list of possible types for union field parent_value_condition. ] } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT }, "serviceAccount": SERVICE_ACCOUNT }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/12345/locations/us-central1/hyperparameterTuningJobs/6789", "displayName": "myHyperparameterTuningJob", "studySpec": { "metrics": [ { "metricId": "myMetric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "myParameter1", "integerValueSpec": { "minValue": "1", "maxValue": "128" }, "scaleType": "UNIT_LINEAR_SCALE" }, { "parameterId": "myParameter2", "doubleValueSpec": { "minValue": 1e-07, "maxValue": 1 }, "scaleType": "UNIT_LINEAR_SCALE" } ], "ALGORITHM": "RANDOM_SEARCH" }, "maxTrialCount": 20, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] } }
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Configurazione del job di addestramento degli iperparametri
I job di ottimizzazione degli iperparametri cercano la migliore combinazione di iperparametri per ottimizzare le metriche. I job di ottimizzazione degli iperparametri eseguono più prove dell'applicazione di addestramento con diversi set di iperparametri.
Quando configuri un job di ottimizzazione degli iperparametri, devi specificare i seguenti dettagli:
Gli iperparametri da ottimizzare e le metriche da utilizzare per valutare le prove.
Dettagli sul numero di prove da eseguire nell'ambito di questo job di ottimizzazione, ad esempio:
Dettagli sul job di addestramento personalizzato eseguito per ogni prova, ad esempio:
Il tipo di macchina in cui vengono eseguiti i job di prova e gli acceleratori utilizzati dal job.
I dettagli del job del container personalizzato o del pacchetto Python.
Limita il numero di prove
Decidi quante prove vuoi consentire al servizio di eseguire e imposta il valore maxTrialCount
nell'oggetto HyperparameterTuningJob.
Quando decidi quante prove consentire, devi tenere conto di due interessi in competizione:
- tempo (e quindi costi)
- accuracy
L'aumento del numero di prove generalmente dà risultati migliori, ma non sempre è così. In genere, c'è un punto in cui i risultati diminuiscono dopo il quale ulteriori prove hanno poco o nessun effetto sulla precisione. Prima di avviare un compito con un numero elevato di prove, ti consigliamo di iniziare con un numero ridotto di prove per valutare l'effetto degli iperparametri scelti sull'accuratezza del modello.
Per ottenere il massimo dall'ottimizzazione degli iperparametri, non devi impostare un valore massimo inferiore a dieci volte il numero di iperparametri utilizzati.
Prove parallele
Puoi specificare il numero di prove che possono essere eseguite in parallelo impostandoparallelTrialCount
in HyperparameterTuningJob.
L'esecuzione di prove parallele ha il vantaggio di ridurre il tempo necessario per il job di addestramento (in tempo reale, il tempo di elaborazione totale richiesto in genere non cambia). Tuttavia, l'esecuzione in parallelo può ridurre l'efficacia complessiva del job di ottimizzazione. Questo perché l'ottimizzazione degli iperparametri utilizza i risultati delle prove precedenti per determinare i valori da assegnare agli iperparametri delle prove successive. Quando vengono eseguite in parallelo, alcune prove iniziano senza usufruire dei risultati delle prove ancora in esecuzione.
Se utilizzi prove parallele, il servizio di ottimizzazione degli iperparametri prevede più cluster di elaborazione dell'addestramento (o più singole macchine nel caso di un trainer a processo singolo). La specifica del pool di lavoro impostata per il job viene utilizzata per ogni singolo cluster di addestramento.
Gestire le prove non riuscite
Se le prove di ottimizzazione degli iperparametri terminano con errori, ti consigliamo di terminare il job di addestramento in anticipo. Imposta il campo maxFailedTrialCount
in HyperparameterTuningJob sul numero di prove non riuscite che vuoi consentire. Dopo questo numero di tentativi non riusciti, Vertex AI termina il job di addestramento. Il valore maxFailedTrialCount
deve essere minore o uguale a maxTrialCount
.
Se non imposti maxFailedTrialCount
o lo imposti su 0
,
Vertex AI utilizza le seguenti regole per gestire i trial non riusciti:
- Se il primo tentativo del job non va a buon fine, Vertex AI lo termina immediatamente. Un errore durante la prima prova suggerisce un problema nel codice di addestramento, pertanto è probabile che anche le prove successive non vadano a buon fine. La terminazione del job consente di diagnosticare il problema senza attendere ulteriori prove e senza costi aggiuntivi.
- Se il primo tentativo va a buon fine, Vertex AI potrebbe terminare il job dopo i fallimenti durante i tentativi successivi in base a uno dei seguenti criteri:
- Il numero di prove non riuscite è aumentato troppo.
- Il rapporto tra prove non riuscite e prove riuscite è diventato troppo elevato.
Queste regole sono soggette a modifica. Per garantire un comportamento specifico, imposta il campo maxFailedTrialCount
.
Gestire i job di ottimizzazione degli iperparametri
Le sezioni seguenti descrivono come gestire i job di ottimizzazione degli iperparametri.
Recuperare informazioni su un job di ottimizzazione iperparametri
I seguenti esempi di codice mostrano come recuperare un job di ottimizzazione degli iperparametri.
gcloud
Utilizza il comando gcloud ai hp-tuning-jobs describe
:
gcloud ai hp-tuning-jobs describe ID_OR_NAME \
--region=LOCATION
Sostituisci quanto segue:
ID_OR_NAME
: il nome o l'ID numerico delHyperparameterTuningJob
. L'ID è l'ultima parte del nome.Potresti aver visto l'ID o il nome quando hai creato il
HyperparameterTuningJob
. Se non conosci l'ID o il nome, puoi eseguire il comandogcloud ai hp-tuning-jobs list
e cercare la risorsa appropriata.LOCATION
: la regione in cui è stato creatoHyperparameterTuningJob
.
REST
Utilizza il seguente esempio di codice per recuperare un job di ottimizzazione degli iperparametri utilizzando il metodo get
della risorsa hyperparameterTuningJob
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
LOCATION
: la regione in cui è stato creatoHyperparameterTuningJob
. - NAME: il nome del job di ottimizzazione degli iperparametri. Il nome del job utilizza il seguente
formato
projects/{project}/LOCATIONS/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
Metodo HTTP e URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/NAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/12345/LOCATIONs/us-central1/hyperparameterTuningJobs/6789", "displayName": "my-hyperparameter-tuning-job", "studySpec": { "metrics": [ { "metricId": "my_metric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "my_parameter", "doubleValueSpec": { "minValue": 1e-05, "maxValue": 1 } } ] }, "maxTrialCount": 3, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] }, "trials": [ { "id": "2", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.71426874725564571 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30007445812225342 } ] }, "startTime": "2020-09-09T23:39:15.549112551Z", "endTime": "2020-09-09T23:47:08Z" }, { "id": "3", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.3078893356622992 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30000102519989014 } ] }, "startTime": "2020-09-09T23:49:22.451699360Z", "endTime": "2020-09-09T23:57:15Z" }, { "id": "1", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.500005 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30005377531051636 } ] }, "startTime": "2020-09-09T23:23:12.283374629Z", "endTime": "2020-09-09T23:36:56Z" } ], "state": "JOB_STATE_SUCCEEDED", "createTime": "2020-09-09T23:22:31.777386Z", "startTime": "2020-09-09T23:22:34Z", "endTime": "2020-09-10T01:31:24.271307Z", "updateTime": "2020-09-10T01:31:24.271307Z" }
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Annullamento di un job di ottimizzazione iperparametri
I seguenti esempi di codice mostrano come annullare un job di ottimizzazione degli iperparametri.
gcloud
Utilizza il comando gcloud ai hp-tuning-jobs cancel
:
gcloud ai hp-tuning-jobs cancel ID_OR_NAME \
--region=LOCATION
Sostituisci quanto segue:
ID_OR_NAME
: il nome o l'ID numerico delHyperparameterTuningJob
. L'ID è l'ultima parte del nome.Potresti aver visto l'ID o il nome quando hai creato il
HyperparameterTuningJob
. Se non conosci l'ID o il nome, puoi eseguire il comandogcloud ai hp-tuning-jobs list
e cercare la risorsa appropriata.LOCATION
: la regione in cui è stato creatoHyperparameterTuningJob
.
REST
Utilizza il seguente esempio di codice per annullare un job di ottimizzazione degli iperparametri utilizzando il metodo cancel
della risorsa hyperparameterTuningJob
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
LOCATION
: la regione in cui è stato creatoHyperparameterTuningJob
. - NAME: il nome del job di ottimizzazione degli iperparametri. Il nome del job utilizza il seguente
formato
projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/NAME:cancel
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Eliminazione di un job di ottimizzazione iperparametri
I seguenti esempi di codice mostrano come eliminare un job di ottimizzazione degli iperparametri utilizzando l'SDK Vertex AI per Python e l'API REST.
REST
Utilizza il seguente esempio di codice per eliminare un job di ottimizzazione degli iperparametri utilizzando il metodo delete
della risorsa hyperparameterTuningJob
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la tua regione.
- NAME: il nome del job di ottimizzazione degli iperparametri. Il nome del job utilizza il seguente
formato
projects/{project}/LOCATIONs/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
Metodo HTTP e URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1/NAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Passaggi successivi
- Scopri di più sui concetti coinvolti nell'ottimizzazione degli iperparametri.
- Scopri come pianificare job di addestramento personalizzati in base alla disponibilità delle risorse.