Questa pagina descrive come effettuare richieste API a Vertex AI Vizier utilizzando Python. Per informazioni su come funziona Vertex AI Vizier, consulta la panoramica di Vertex AI Vizier.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Installa l'SDK Vertex AI per Python.
Definire le costanti
Per definire le costanti, esegui i seguenti comandi, sostituendo
REGION
e PROJECT_ID
con la regione e l'ID progetto.
Crea il nome dello studio o utilizza i valori suggeriti.
import json
import datetime
from google.cloud import aiplatform
REGION = "REGION"
PROJECT_ID = "PROJECT_ID"
# The following placeholder variables are automatically filled in.
STUDY_DISPLAY_NAME = '{}_study_{}'.format(PROJECT_ID.replace('-', ''), datetime.datetime.now().strftime('%Y%m%d_%H%M%S')) #@param {type: 'string'}
ENDPOINT = REGION + '-aiplatform.googleapis.com'
PARENT = 'projects/{}/locations/{}'.format(PROJECT_ID, REGION)
Creare richieste API
Le seguenti richieste API della riga di comando sono scritte in Python.
Creare uno studio
Uno studio è una serie di esperimenti o prove che ti aiutano a ottimizzare i tuoi iperparametri o parametri.
Nell'esempio seguente, l'obiettivo è massimizzare y = x^2
con x
nell'intervallo [-10. 10]. Questo esempio ha un solo
parametro e utilizza una funzione facilmente calcolabile per aiutare
a dimostrare come utilizzare Vertex AI Vizier.
param_x = {
'parameter_id': 'x',
'double_value_spec': {
'min_value': -10.0,
'max_value': 10.0
}
}
metric_y = {
'metric_id': 'y',
'goal': 'MAXIMIZE'
}
study = {
'display_name': STUDY_DISPLAY_NAME,
'study_spec': {
'algorithm': 'RANDOM_SEARCH',
'parameters': [param_x],
'metrics': [metric_y],
}
}
Per creare lo studio utilizzando la configurazione dello studio, invia la seguente richiesta tramite VizierServiceClient
. Utilizza il valore STUDY_NAME
restituito per eseguire query sullo studio.
vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name
Visualizzare lo studio
Una volta creato, lo studio è disponibile nella console Google Cloud, nella sezione Vertex AI, nella pagina Esperimenti.
Ricevere uno studio
Per partecipare a uno studio, invia la seguente richiesta.
vizier_client.get_study({'name': STUDY_NAME})
Elenca studi
Per elencare gli studi in un progetto e una regione specifici, invia la seguente richiesta:
vizier_client.list_studies({'parent': PARENT})
Ricevere prove suggerite
Per ricevere un suggerimento per la prova da Vertex AI Vizier, crea
una richiesta contenente un SUGGEST_COUNT
e un
CLIENT_ID
. Trasferisci queste informazioni a
Vizier di Vertex AI inviando la richiesta.
Crea la richiesta utilizzando i seguenti comandi. Modifica
SUGGEST_COUNT
in base al numero di suggerimenti
che vuoi ricevere da ogni richiesta.
suggest_response = vizier_client.suggest_trials({
'parent': STUDY_NAME,
'suggestion_count': SUGGEST_COUNT,
'client_id': CLIENT_ID
})
suggest_trials
avvia un'operazione a lunga esecuzione per generare la prova.
La risposta ti informa che Vertex AI Vizier sta lavorando ai suggerimenti per la prova.
Per attendere il risultato restituito, utilizza la funzione result()
.
suggest_response.result().trials
Il seguente formato mostra un esempio di prova. Questo esperimento suggerisce di utilizzare il valore
0.1
per il parametro x
.
name: "TRIAL_ID"
state: ACTIVE
parameters {
parameter_id: "x"
value {
number_value: 0.1
}
}
start_time {
seconds: 1618011215
}
Utilizza il valore TRIAL_ID
della risposta precedente per ottenere la prova:
vizier_client.get_trial({
'name': TRIAL_ID
})
Valutare i risultati
Dopo aver ricevuto i suggerimenti per le prove, valuta ogni prova e registra ogni risultato come misurazione.
Ad esempio, se la funzione che stai cercando di ottimizzare è y = x^2
, la valuti utilizzando il valore suggerito dalla prova di x
.
Utilizzando un valore suggerito di 0.1
, la funzione restituisce y = 0.1 * 0.1
,
che corrisponde a 0.01
.
Aggiungere una misurazione
Dopo aver valutato il suggerimento per la prova per ottenere una misurazione, aggiungila alla prova.
Utilizza i comandi seguenti per memorizzare la misurazione e inviare la richiesta.
In questo esempio, sostituisci RESULT
con la misurazione. Se la funzione che stai ottimizzando è y = x^2
e il valore suggerito di x
è 0.1
, il risultato è 0.01
.
vizier_client.add_trial_measurement({
'trial_name': TRIAL_ID,
'measurement': {
'metrics': [{'metric_id': 'y', 'value':RESULT }]
}
})
Completare una prova
Dopo aver aggiunto tutte le misurazioni per una prova, devi completarla inviando un comando.
Al termine della prova, puoi inviare un comando per completare solo la prova oppure un comando per aggiungere una misurazione finale e completare la prova.
Senza misurazione finale
Per completare una prova senza aggiungere una misurazione finale, invia la seguente richiesta:
vizier_client.complete_trial({
'name': TRIAL_ID
})
Con la misurazione finale
Per completare una prova e includere una misurazione finale, utilizza i seguenti comandi, sostituendo RESULT
con la misurazione finale.
vizier_client.complete_trial({
'name': TRIAL_ID
'final_measurement': {
'metrics': [{'metric_id': 'y', 'value': RESULT}]
}
})
Elenco prove
Per elencare i trial in uno studio specifico, invia la seguente richiesta:
vizier_client.list_trials({
'parent': STUDY_NAME
})
Dopo aver completato tutte le prove in attesa, puoi chiamare
suggestTrials
per altri suggerimenti e ripetere la procedura di valutazione della prova.
Elenca le prove ottimali
L'esempio seguente mostra list_optimal_trials
, che restituisce le prove Pareto-ottimali per uno studio con più obiettivi o le prove ottimali per uno studio con un solo obiettivo:
vizier_client.list_optimal_trials({
'parent': STUDY_NAME
})
Passaggi successivi
- Consulta la documentazione di riferimento REST per gli studi.