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.

Hinweise

  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. Vertex AI SDK für Python installieren

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 einfach 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