Questa pagina descrive come effettuare richieste API a Vertex AI Vizier utilizzando Python. Per informazioni sul funzionamento di Vertex AI Vizier, consulta la panoramica di Vertex AI Vizier.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
- Installa l'SDK Vertex AI per Python.
Definisci le costanti
Per definire le costanti, esegui i seguenti comandi, sostituendo
REGION
e PROJECT_ID con la tua regione e il tuo ID progetto.
Crea un nome per lo 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 gli iperparametri o i 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 calcolata per
mostrare 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 di studio, invia la seguente richiesta tramite VizierServiceClient. Utilizza il 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
Visualizza il tuo studio
Una volta creato lo studio, puoi trovarlo nella consoleGoogle Cloud , nella sezione Vertex AI, nella pagina Esperimenti.
Ottenere uno studio
Per ottenere uno studio, invia la seguente richiesta.
vizier_client.get_study({'name': STUDY_NAME})
Elenco studi
Per elencare gli studi in un progetto e una regione specifici, invia la seguente richiesta:
vizier_client.list_studies({'parent': PARENT})
Visualizzare le prove suggerite
Per ricevere un suggerimento di prova da Vertex AI Vizier, crea
una richiesta che contenga un SUGGEST_COUNT e un
CLIENT_ID. Trasferisci queste informazioni a
Vertex AI Vizier inviando la richiesta.
Crea la richiesta utilizzando i seguenti comandi. Modifica
SUGGEST_COUNT con il 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
sui suggerimenti di prova.
Per attendere il risultato restituito, utilizza la funzione result() .
suggest_response.result().trials
Il seguente formato mostra un esempio di prova. Questa prova 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 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, valuta la funzione utilizzando il valore suggerito della prova x.
Utilizzando un valore suggerito di 0.1, la funzione restituisce y = 0.1 * 0.1,
che genera 0.01.
Aggiungere una misurazione
Dopo aver valutato il suggerimento di prova per ottenere una misurazione, aggiungi questa misurazione alla prova.
Utilizza i seguenti comandi 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 completarla o per aggiungere una misurazione finale e completarla.
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 le sperimentazioni in uno studio specifico, invia la seguente richiesta:
vizier_client.list_trials({
'parent': STUDY_NAME
})
Una volta completate tutte le prove in attesa, puoi chiamare
suggestTrials per altri suggerimenti e ripetere la procedura di valutazione delle prove.
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 il riferimento REST per gli studi.