Creazione di studi Vertex AI Vizier

In questa pagina viene descritto come inviare richieste API a Vertex AI Vizier utilizzando Python. Per informazioni su come funziona Vertex AI Vizier, consulta Panoramica di Vertex AI 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 gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Attiva Vertex AI API.

    Abilita l'API

  4. Crea un account di servizio:

    1. Nella console Google Cloud, vai alla pagina Crea account di servizio.

      Vai a Crea account di servizio
    2. Seleziona il progetto.
    3. Nel campo Nome account di servizio, inserisci un nome. La console Google Cloud compila il campo ID account di servizio in base a questo nome.

      Nel campo Descrizione account di servizio, inserisci una descrizione. Ad esempio, Service account for quickstart.

    4. Fai clic su Crea e continua.
    5. Concedi il ruolo Project > Owner all'account di servizio.

      Per concedere il ruolo, trova l'elenco Seleziona un ruolo e scegli Project > Owner.

    6. Fai clic su Continua.
    7. Fai clic su Fine per completare la creazione dell'account di servizio.

      Non chiudere la finestra del browser. La utilizzerai nel passaggio successivo.

  5. Crea una chiave dell'account di servizio:

    1. Nella console Google Cloud, fai clic sull'indirizzo email dell'account di servizio che hai creato.
    2. Fai clic su Chiavi.
    3. Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
    4. Fai clic su Crea. Un file della chiave JSON viene scaricato sul computer.
    5. Fai clic su Chiudi.
  6. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul percorso del file JSON contenente la chiave dell'account di servizio. Questa variabile si applica solo alla sessione di Shell corrente, quindi se apri una nuova sessione, impostala di nuovo.

  7. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  8. Attiva Vertex AI API.

    Abilita l'API

  9. Crea un account di servizio:

    1. Nella console Google Cloud, vai alla pagina Crea account di servizio.

      Vai a Crea account di servizio
    2. Seleziona il progetto.
    3. Nel campo Nome account di servizio, inserisci un nome. La console Google Cloud compila il campo ID account di servizio in base a questo nome.

      Nel campo Descrizione account di servizio, inserisci una descrizione. Ad esempio, Service account for quickstart.

    4. Fai clic su Crea e continua.
    5. Concedi il ruolo Project > Owner all'account di servizio.

      Per concedere il ruolo, trova l'elenco Seleziona un ruolo e scegli Project > Owner.

    6. Fai clic su Continua.
    7. Fai clic su Fine per completare la creazione dell'account di servizio.

      Non chiudere la finestra del browser. La utilizzerai nel passaggio successivo.

  10. Crea una chiave dell'account di servizio:

    1. Nella console Google Cloud, fai clic sull'indirizzo email dell'account di servizio che hai creato.
    2. Fai clic su Chiavi.
    3. Fai clic su Aggiungi chiave, quindi su Crea nuova chiave.
    4. Fai clic su Crea. Un file della chiave JSON viene scaricato sul computer.
    5. Fai clic su Chiudi.
  11. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul percorso del file JSON contenente la chiave dell'account di servizio. Questa variabile si applica solo alla sessione di Shell corrente, quindi se apri una nuova sessione, impostala di nuovo.

  12. Installa l'SDK Vertex AI per Python.

Definisci costanti

Per definire le costanti, esegui questi comandi, sostituendo REGION e PROJECT_ID con l'ID regione e il progetto ID. 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 a riga di comando sono scritte in Python.

Crea uno studio

Uno studio è una serie di esperimenti, o prove, che ti aiutano a ottimizzare gli iperparametri o i parametri.

Nel seguente esempio, l'obiettivo è massimizzare y = x^2 con x nell'intervallo [-10]. 10] Questo esempio ha un solo parametro e utilizza una funzione calcolata facilmente 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 metodo STUDY_NAME restituito per eseguire una 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

Dopo aver creato lo studio, puoi trovarlo in Google Cloud Console, nella sezione Vertex AI, alla pagina Esperimenti.

Vai alla pagina Esperimenti

Ottieni 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})

Ricevi prove suggerite

Per ricevere un suggerimento di prova da Vertex AI Vizier, crea una richiesta contenente un SUGGEST_COUNT e un CLIENT_ID. Invia queste informazioni a Vertex AI Vizier inviando la richiesta.

Crea la richiesta utilizzando i seguenti comandi. Modifica SUGGEST_COUNT 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 fa sapere che Vertex AI Vizier sta lavorando ai 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
}

Usa 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 di prova, valuta ogni prova e registra ogni risultato come una misurazione.

Ad esempio, se la funzione che stai cercando di ottimizzare è y = x^2, la valuti utilizzando il valore suggerito di x per la prova. Utilizzando un valore suggerito di 0.1, la funzione restituisce y = 0.1 * 0.1, di conseguenza, 0.01.

Aggiungere una misurazione

Dopo aver valutato il suggerimento della prova per ottenere una misurazione, aggiungi questa misurazione 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': {
            &#