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
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit 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.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Vertex AI API aktivieren.
-
Erstellen Sie ein Dienstkonto:
-
Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.
Zur Seite „Dienstkonto erstellen“ - Wählen Sie Ihr Projekt aus.
-
Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for quickstart
. - Klicken Sie auf Erstellen und fortfahren.
-
Weisen Sie dem Dienstkonto die Rolle Project > Owner zu.
Wenn Sie die Rolle zuweisen möchten, suchen Sie die Liste Rolle auswählen und wählen Sie Project > Owner aus.
- Klicken Sie auf Weiter.
-
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.
-
-
Erstellen Sie einen Dienstkontoschlüssel:
- Klicken Sie in der Google Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
- Klicken Sie auf Schlüssel.
- Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
- Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
- Klicken Sie auf Schließen.
-
Legen Sie für die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
den Pfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shellsitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable noch einmal festlegen. -
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Vertex AI API aktivieren.
-
Erstellen Sie ein Dienstkonto:
-
Wechseln Sie in der Google Cloud Console zur Seite Dienstkonto erstellen.
Zur Seite „Dienstkonto erstellen“ - Wählen Sie Ihr Projekt aus.
-
Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for quickstart
. - Klicken Sie auf Erstellen und fortfahren.
-
Weisen Sie dem Dienstkonto die Rolle Project > Owner zu.
Wenn Sie die Rolle zuweisen möchten, suchen Sie die Liste Rolle auswählen und wählen Sie Project > Owner aus.
- Klicken Sie auf Weiter.
-
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.
-
-
Erstellen Sie einen Dienstkontoschlüssel:
- Klicken Sie in der Google Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
- Klicken Sie auf Schlüssel.
- Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
- Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
- Klicken Sie auf Schließen.
-
Legen Sie für die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
den Pfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shellsitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable noch einmal festlegen. - 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.
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':