Creazione di studi Vertex AI Vizier

Questa pagina descrive come effettuare richieste API a Vertex AI Vizier utilizzando come Python. Per informazioni su come funziona Vertex AI Vizier, consulta la panoramica di Vertex AI Vizier.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  7. Installa l'SDK Vertex AI per Python.

Definisci 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 tuo 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 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.

Nell'esempio seguente, l'obiettivo è massimizzare la metrica y = x^2 con x nell'intervallo [-10. 10], Questo esempio ha un solo parametro e utilizza una funzione facilmente calcolabile 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 tua configurazione di studio, invia quanto segue tramite VizierServiceClient. Utilizza il valore 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 è disponibile nella console Google Cloud, nella sezione Vertex AI, nella pagina Esperimenti.

Vai alla pagina Esperimenti

Ottieni uno studio

Per partecipare a 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})

Scopri le prove suggerite

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

Crea la richiesta utilizzando i comandi seguenti. Modifica SUGGEST_COUNT in base al 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. Questo esperimento 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 valore TRIAL_ID della risposta precedente per ottenere la prova:

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

Valuta 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 valuti la funzione utilizzando il valore suggerito per la prova (x). Utilizzando un valore suggerito di 0.1, la funzione restituisce y = 0.1 * 0.1, che corrisponde a 0.01.

Aggiungi una misura

Dopo aver valutato il suggerimento per la prova per ottenere una misurazione, aggiungila 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 di una prova, devi completare la prova. inviando un comando.

Una volta completata la prova, puoi inviare un comando per completare la prova oppure puoi inviare un comando per aggiungere una misurazione finale la prova.

Senza misurazione finale

Per completare una prova senza aggiungere una misurazione finale, invia quanto segue richiesta:

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

Con la misurazione finale

Per completare una prova e includere una misurazione finale, utilizza quanto segue sostituendo RESULT con il comando finale misurazione.

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

Elenco prove

Per elencare i trial 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 la procedura di valutazione della prova.

Elenca le prove ottimali

L'esempio seguente mostra list_optimal_trials, che restituisce l'oggetto pareto-ottimali per uno studio con obiettivi multipli o l'ottimizzazione per uno studio con un singolo obiettivo:

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

Passaggi successivi

  • Controlla il riferimento REST per studi.