Creazione di studi Vertex AI Vizier

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

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  7. Installa l'SDK Vertex AI per Python.
  8. 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 un 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)
    

    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 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 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 Vertex AI, 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})
    

    Elenco studi

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

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

    Visualizzare le prove suggerite

    Per ricevere un suggerimento di prova da Vertex AI Vizier, crea una richiesta che contenga un SUGGEST_COUNT e un CLIENT_ID. Trasferisci queste informazioni a Vertex AI 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 Vertex AI Vizier sta lavorando sui 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
    }
    

    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, 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 per aggiungere una misurazione finale e completarla.

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

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

    Elenco delle prove ottimali

    L'esempio seguente mostra list_optimal_trials, che restituisce le prove ottimali di Pareto 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.