Crea studi Vizier di Agent Platform

Questa pagina descrive come effettuare richieste API ad Agent Platform Vizier utilizzando Python. Per informazioni su come funziona Agent Platform Vizier, vedi Panoramica di Agent Platform Vizier.

Prima di iniziare

  1. 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 carichi di lavoro.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

  7. Installa l'SDK Agent Platform 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 il tuo 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)

Crea 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 Agent Platform 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

Visualizzare lo studio

Una volta creato lo studio, puoi trovarlo nella consoleGoogle Cloud , nella sezione Gemini Enterprise Agent Platform, nella pagina Esperimenti.

Vai alla pagina Esperimenti

Ottenere uno studio

Per ottenere 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 di prova da Agent Platform Vizier, crea una richiesta che contenga un SUGGEST_COUNT e un CLIENT_ID. Trasferisci queste informazioni ad Agent Platform 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 Agent Platform Vizier sta lavorando sui 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. 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 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, allora 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 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}]
      }
  })

Elenca 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 di 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.