Vertex AI Vizier-Studien erstellen

Auf dieser Seite wird beschrieben, wie Sie mithilfe von Python API-Anfragen an Vertex AI Vizier senden. Informationen zur Funktionsweise von Vertex AI Vizier finden Sie in der Übersicht zu Vertex AI Vizier.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch nicht mit Google Cloudvertraut sind, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzer konto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

  7. Installieren Sie das Vertex AI SDK für Python.

Konstanten definieren

Führen Sie zum Definieren von Konstanten die folgenden Befehle aus und ersetzen Sie REGION und PROJECT_ID durch Ihre Region und die Projekt-ID. Erstellen Sie einen eigenen Studiennamen oder verwenden Sie die vorgeschlagenen Werte.

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)

API-Anfragen erstellen

Die folgenden Befehlszeilen-API-Anfragen sind in Python geschrieben.

Studie erstellen

Eine Studie ist eine Reihe von experimentellen oder anderen Tests, mit denen Sie Ihre Hyperparameter oder Parameter optimieren können.

Im folgenden Beispiel soll y = x^2 mit x im Bereich von [-10. 10] maximiert werden. Dieses Beispiel hat nur einen Parameter und nutzt eine berechnete Funktion, um die Verwendung von Vertex AI Vizier zu demonstrieren.

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

Zum Erstellen der Studie mithilfe Ihrer Studienkonfiguration senden Sie die folgende Anfrage über VizierServiceClient. Verwenden Sie die zurückgegebene STUDY_NAME, um die Studie abzufragen.

vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name

Studie ansehen

Nachdem die Studie erstellt wurde, finden Sie sie in der Google Cloud Console im Abschnitt „Vertex AI“ auf der Seite **Tests**.

Zur Seite „Tests“

Studie abrufen

Senden Sie die folgende Anfrage, um eine Studie zu erhalten.

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

Studien auflisten

Senden Sie die folgende Anfrage, wenn Sie die Studien in einem bestimmten Projekt und einer bestimmten Region auflisten möchten:

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

Vorgeschlagene Testversionen abrufen

Um einen Testvorschlag von Vertex AI Vizier zu erhalten, erstellen Sie eine Anfrage mit einem SUGGEST_COUNT und einem CLIENT_ID. Übergeben Sie diese Informationen an Vertex AI Vizier, indem Sie die Anfrage senden.

Erstellen Sie die Anfrage mit den folgenden Befehlen. Ändern Sie SUGGEST_COUNT in die Anzahl der Vorschläge, die Sie von jeder Anfrage erhalten möchten.

suggest_response = vizier_client.suggest_trials({
    'parent': STUDY_NAME,
    'suggestion_count': SUGGEST_COUNT,
    'client_id': CLIENT_ID
    })

suggest_trials startet einen Vorgang mit langer Ausführungszeit, um den Test zu erstellen. Die Antwort informiert Sie darüber, dass Vertex AI Vizier an den Testvorschlägen arbeitet.

Verwenden Sie die Funktion result(), um auf das zurückgegebene Ergebnis zu warten.

suggest_response.result().trials

Das folgende Format zeigt einen Beispieltest. In diesem Test wird vorgeschlagen, den Wert 0.1 für den Parameter x zu verwenden.

name: "TRIAL_ID"
state: ACTIVE
parameters {
  parameter_id: "x"
  value {
    number_value: 0.1
  }
}
start_time {
  seconds: 1618011215
}

Verwenden Sie TRIAL_ID aus der vorherigen Antwort, um den Test abzurufen:

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

Testergebnisse auswerten

Nachdem Sie die Testvorschläge erhalten haben, bewerten Sie jeden Test und erfassen jedes Ergebnis als Messung.

Wenn die Funktion, die Sie optimieren möchten, beispielsweise y = x^2 ist, bewerten Sie die Funktion mit dem im Test vorgeschlagenen Wert von x. Bei Verwenden des vorgeschlagenen Werts 0.1 wird die Funktion mit y = 0.1 * 0.1 bewertet, und das Ergebnis ist 0.01.

Messung hinzufügen

Nachdem Sie den Testvorschlag bewertet haben, um eine Messung zu erhalten, fügen Sie die Messung Ihrem Test hinzu.

Verwenden Sie die folgenden Befehle, um die Messung zu speichern und die Anfrage zu senden. In diesem Beispiel ersetzen Sie RESULT durch die Messung. Wenn die zu optimierende Funktion y = x^2 lautet und der vorgeschlagene Wert von x gleich 0.1 ist, ist das Ergebnis 0.01.

vizier_client.add_trial_measurement({
        'trial_name': TRIAL_ID,
        'measurement': {
            'metrics': [{'metric_id': 'y', 'value':RESULT }]
        }
    })

Test abschließen

Nachdem Sie alle Messungen für einen Test hinzugefügt haben, müssen Sie den Test mit einem Befehl abschließen.

Wenn Sie den Test abschließen, können Sie entweder einen Befehl senden, um nur den Test abzuschließen, oder einen Befehl senden, um eine endgültige Messung hinzuzufügen und den Test abzuschließen.

Ohne abschließende Messung

Senden Sie die folgende Anfrage, um den Test abzuschließen, ohne eine endgültige Messung hinzuzufügen:

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

Mit abschließender Messung

Verwenden Sie die folgenden Befehle, um einen Test abzuschließen und eine endgültige Messung aufzunehmen. Ersetzen Sie dabei RESULT durch die endgültige Messung.

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

Tests auflisten

Senden Sie die folgende Anfrage, um Tests in einer bestimmten Studie aufzulisten.

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

Sobald Sie alle ausstehenden Tests abgeschlossen haben, können Sie suggestTrials aufrufen, um weitere Vorschläge zu erhalten und den Testvorgang zu wiederholen.

Optimale Tests auflisten

Das folgende Beispiel zeigt list_optimal_trials, das die Pareto-optimierten Tests für eine Studie mit mehreren Zielen oder die optimalen Tests für eine Studie mit einem einzelnen Ziel zurückgibt:

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

Nächste Schritte