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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
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.
- 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': '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
})