Creazione di studi Vertex AI Vizier

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive come inviare 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

  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 pagina del selettore dei progetti in Google Cloud Console, 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. In Google Cloud Console, 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. Google Cloud Console 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. Per fornire l'accesso al progetto, concedi i seguenti ruoli al tuo account di servizio: Progetto > Proprietario.

      Nell'elenco Seleziona un ruolo, seleziona un ruolo.

      Per i ruoli aggiuntivi, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.

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

      Non chiudere la finestra del browser. Lo 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 Create (Crea). Il file di una 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 che contiene la chiave dell'account di servizio. Questa variabile si applica solo alla sessione shell corrente, quindi se apri una nuova sessione, impostala di nuovo.

  7. Nella pagina del selettore dei progetti in Google Cloud Console, 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. In Google Cloud Console, 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. Google Cloud Console 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. Per fornire l'accesso al progetto, concedi i seguenti ruoli al tuo account di servizio: Progetto > Proprietario.

      Nell'elenco Seleziona un ruolo, seleziona un ruolo.

      Per i ruoli aggiuntivi, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.

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

      Non chiudere la finestra del browser. Lo 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 Create (Crea). Il file di una 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 che contiene la chiave dell'account di servizio. Questa variabile si applica solo alla sessione shell corrente, quindi se apri una nuova sessione, impostala di nuovo.

  12. Installa l'SDK Vertex AI per Python.

Definisci costanti

Per definire costanti, esegui i comandi seguenti, sostituendo REGION e PROJECT_ID con l'ID della tua area geografica e del tuo progetto. Crea il nome del tuo 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)

Creazione di richieste API

Le seguenti richieste dell'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 con facilità per 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 richiesta seguente tramite VizierServiceClient. Utilizza STUDY_NAME restituiti 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

Richiedi una ricerca

Per richiedere uno studio, invia la richiesta seguente.

vizier_client.get_study({'name': STUDY_NAME})

Elenco studi

Per elencare gli studi in un progetto e un'area geografica specifici, invia la seguente richiesta:

vizier_client.list_studies({'parent': PARENT})

Ricevere 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 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. Questa prova suggerisce l'utilizzo del 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
}

Per ricevere la prova, utilizza il TRIAL_ID della risposta precedente:

vizier_client.get_trial({
        'name': TRIAL_ID
      })

Valutare i risultati

Dopo aver ricevuto i suggerimenti, 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 x come valore di prova suggerito. 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 della prova per ottenere una misurazione, aggiungi questa misura alla tua 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 ottimizzi è 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 completare la prova inviando un comando.

Al termine della prova, puoi inviare un comando per completare solo la prova 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 misurazione finale

Per completare una prova e includere una misurazione finale, utilizza i comandi seguenti, sostituendo RESULT con la misurazione finale.

vizier_client.complete_trial({
      'name': TRIAL_ID
      'final_measurement': {
        'metrics': [{'metric_id': 'y', 'value': RESULT}]
      }
  })

Recupero elenco prove

Per elencare le prove di 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 ricevere altri suggerimenti e ripetere la procedura di valutazione delle prove.

Elenca 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 singolo obiettivo:

vizier_client.list_optimal_trials({
    'parent': STUDY_NAME
})