Creazione di studi Vertex AI Vizier

Questa pagina descrive come inviare richieste API a Vertex AI Vizier utilizzando Python. Per informazioni sul funzionamento di 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 pagina del selettore di progetti della console Google Cloud, 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 che contiene le tue credenziali. Questa variabile si applica solo alla sessione di shell attuale. Pertanto, se apri una nuova sessione, imposta di nuovo la variabile.

  7. Nella pagina del selettore di progetti della console Google Cloud, 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 che contiene le tue credenziali. Questa variabile si applica solo alla sessione di shell attuale. Pertanto, se apri una nuova sessione, imposta di nuovo la variabile.

  12. Installa l'SDK Vertex AI per Python.

Definire le costanti

Per definire le costanti, esegui questi comandi, sostituendo REGION e PROJECT_ID con la tua regione e il tuo ID 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)

Costruire 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 consentono di ottimizzare iperparametri o 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 facilmente calcolata 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 relativa configurazione, invia la seguente richiesta tramite VizierServiceClient. Utilizza l'oggetto 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 lo studio

Dopo aver creato lo studio, lo puoi trovare nella pagina Esperimenti della console Google Cloud, nella sezione Vertex AI.

Vai alla pagina Esperimenti

Ottieni uno studio

Per ricevere uno studio, invia la richiesta seguente.

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

Elenca studi

Per elencare gli studi in una regione e a un progetto specifici, invia la seguente richiesta:

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

Richiedi prove suggerite

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

Crea la richiesta utilizzando i comandi seguenti. 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 indica che Vertex AI Vizier sta lavorando ai suggerimenti della prova.

Per attendere il risultato restituito, utilizza la funzione result() .

suggest_response.result().trials

Il formato seguente mostra una prova di esempio. 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 usufruire della prova:

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

Valuta i risultati

Dopo aver ricevuto i suggerimenti per la prova, 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 x suggerito dalla prova. Utilizzando il valore suggerito 0.1, la funzione restituisce y = 0.1 * 0.1, che genera 0.01.

Aggiungi una misurazione

Dopo aver valutato il suggerimento per la prova per ottenere una misurazione, aggiungi questa misurazione alla prova.

Utilizza i seguenti comandi per archiviare 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 completare la prova inviando un comando.

Quando hai completato la prova, puoi inviare un comando per completare solo la prova oppure puoi inviare 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, usa 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 prove 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 il processo di valutazione della prova.

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

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

Passaggi successivi

  • Controlla il riferimento REST per gli studi.