Hyperparameter sind Variablen, die das Training eines Modells steuern, beispielsweise die Batchgröße oder die Anzahl der verborgenen Ebenen in einem neuronalen Deep-Learning-Netzwerk. Bei der Hyperparameter-Abstimmung wird nach der besten Kombination von Hyperparameter-Werten gesucht. Dazu werden Messwerte anhand einer Reihe von Tests optimiert. Messwerte sind skalare Zusammenfassungen, die Sie dem Trainer hinzufügen, z. B. die Modellgenauigkeit.
Weitere Informationen zur Hyperparameter-Abstimmung in Vertex AI. Ein detailliertes Beispiel finden Sie im Codelab zu Vertex AI: Hyperparameter Abstimmung.
Sie erfahren hier, wie Sie:
Bereiten Sie Ihre Trainingsanwendung für die Hyperparameter-Abstimmung vor. Aktualisieren Sie sie dazu so, dass sie Hyperparameter als Befehlszeilenargumente akzeptiert und Messwerte an Vertex AI übergibt.
Ihren Hyperparameter-Trainingsjob erstellen. Weitere Informationen zu Konfigurationsoptionen finden Sie unter Informationen zur Konfiguration der Hyperparameter-Abstimmung.
Trainingsanwendung vorbereiten
Bei einem Hyperparameter-Abstimmungsjob erstellt Vertex AI Tests für Ihren Trainingsjob mit verschiedenen Sätzen von Hyperparametern und bewertet die Effektivität eines Tests anhand der von Ihnen angegebenen Messwerte. Vertex AI übergibt Hyperparameterwerte als Befehlszeilenargumente an Ihre Trainingsanwendung. Damit Vertex AI die Wirksamkeit eines Tests bewerten kann, muss Ihre Trainingsanwendung die Messwerte an Vertex AI übergeben.
In den nächsten Abschnitten wird Folgendes erläutert:
- Wie Vertex AI Hyperparameter an Ihre Trainingsanwendung übergibt.
- Optionen zum Übergeben von Messwerten von Ihrer Trainingsanwendung an Vertex AI
Weitere Informationen zu den Anforderungen für benutzerdefinierte Trainingsanwendungen, die auf Vertex AI ausgeführt werden, finden Sie unter Anforderungen an Trainingscodes.
Befehlszeilenargumente für die abzustimmenden Hyperparameter bearbeiten
Vertex AI legt beim Aufrufen Ihrer Trainingsanwendung Befehlszeilenargumente fest. Nutzen Sie die Befehlszeilenargumente in Ihrem Code:
Legen Sie einen Namen für jedes Hyperparameter-Argument fest und parsen Sie ihn mit einem Argument-Parser Ihrer Wahl, z. B. mit
argparse
. Verwenden Sie dieselben Argumentnamen beim Konfigurieren des Hyperparameter-Trainingsjobs.Wenn Ihre Trainingsanwendung beispielsweise ein Python-Modul mit dem Namen
my_trainer
ist und Sie einen Hyperparameter mit dem Namenlearning_rate
abstimmen, startet Vertex AI jeden Test mit einem Befehl wie dem folgenden:python3 -m my_trainer --learning_rate learning-rate-in-this-trial
Vertex AI bestimmt die learning-rate-in-this-trial und übergibt sie mit dem Argument
learning_rate
.Weisen Sie die Werte aus den Befehlszeilenargumenten den Hyperparametern in Ihrem Trainingscode zu.
Weitere Informationen zu den Anforderungen beim Parsen von Befehlszeilenargumenten finden Sie in diesem Artikel.
Messwerte an Vertex AI übergeben
Verwenden Sie das Python-Paket cloudml-hypertune
, um Ihre Messwerte an Vertex AI zu senden. Diese Bibliothek bietet Hilfsfunktionen zum Senden von Messwerten an Vertex AI.
Weitere Informationen zum Übergeben von Hyperparameter-Messwerten finden Sie in diesem Artikel.
Hyperparameter-Abstimmungsjob erstellen.
Wählen Sie je nach Tool, das Sie zum Erstellen eines HyperparameterTuningJob
verwenden möchten, einen der folgenden Tabs aus:
Console
In der Google Cloud Console können Sie keine HyperparameterTuningJob
-Ressource direkt erstellen. Sie können jedoch eine TrainingPipeline
-Ressource erstellen, mit der ein HyperparameterTuningJob
erstellt wird.
In der folgenden Anleitung wird gezeigt, wie Sie eine TrainingPipeline
erstellen, mit der ausschließlich ein HyperparameterTuningJob
angelegt wird. Wenn Sie zusätzliche TrainingPipeline
-Features wie das Training mit einem verwalteten Dataset verwenden möchten, finden Sie die entsprechenden Informationen unter Trainingspipelines erstellen.
Rufen Sie in der Google Cloud Console im Abschnitt "Vertex AI" die Seite Trainingspipelines auf.
Klicken Sie auf
Erstellen, um den Bereich Neues Modell trainieren zu öffnen.Legen Sie im Schritt Trainingsmethode die folgenden Einstellungen fest:
Wählen Sie in der Drop-down-Liste Dataset die Option Kein verwaltetes Dataset aus.
Wählen Sie Benutzerdefiniertes Training (erweitert) aus.
Klicken Sie auf Weiter.
Wählen Sie im Schritt Modelldetails die Option Neues Modell trainieren oder Neue Version trainieren aus. Wenn Sie „Neues Modell trainieren” auswählen, geben Sie einen Namen Ihrer Wahl (MODEL_NAME) für Ihr Modell ein. Klicken Sie auf Weiter.
Legen Sie im Schritt Trainingscontainer die folgenden Einstellungen fest:
Wählen Sie, ob ein vordefinierter Container oder ein benutzerdefinierter Container für das Training verwendet werden soll.
Führen Sie je nach Auswahl einen der folgenden Schritte aus:
Wenn Sie einen vordefinierten Container für das Training verwenden möchten, müssen Sie Vertex AI die erforderlichen Informationen zur Verwendung des Trainingspakets bereitstellen, das Sie in Cloud Storage hochgeladen haben:
Verwenden Sie die Drop-down-Listen Modell-Framework und Modell-Framework-Version, um den vordefinierten Container anzugeben, den Sie verwenden möchten.
Geben Sie im Feld Paketstandort den Cloud Storage-URI der Python-Trainingsanwendung an, die Sie erstellt und hochgeladen haben. Diese Datei endet normalerweise mit
.tar.gz
.Geben Sie im Feld Python-Modul den Modulnamen des Einstiegspunkts Ihrer Trainingsanwendung ein.
Wenn Sie einen benutzerdefinierten Container für das Training verwenden möchten, geben Sie im Feld Container-Image die Artifact Registry oder den Docker Hub-URI Ihres Container-Image an.
Im Feld Modellausgabeverzeichnis können Sie den Cloud Storage-URI eines Verzeichnisses in einem Bucket angeben, auf den Sie Zugriff haben. Das Verzeichnis muss noch nicht vorhanden sein.
Dieser Wert wird Vertex AI im API-Feld
baseOutputDirectory
übergeben. Dadurch werden mehrere Umgebungsvariablen festgelegt, auf die Ihre Trainingsanwendung zugreifen kann, wenn sie ausgeführt wird.Optional: Im Feld Argumente können Sie Argumente angeben, die Vertex AI beim Ausführen des Trainingscodes verwenden soll. Die maximale Länge aller Argumente zusammen beträgt 100.000 Zeichen. Das Verhalten dieser Argumente hängt davon ab, welchen Containertyp Sie verwenden:
Wenn Sie einen vordefinierten Container verwenden, übergibt Vertex AI die Argumente als Befehlszeilen-Flags an Ihr Python-Modul.
Wenn Sie einen benutzerdefinierten Container verwenden, überschreibt Vertex AI die
CMD
-Anweisung Ihres Containers mit den Argumenten.
Klicken Sie auf Weiter.
Klicken Sie im Schritt Hyperparameter-Abstimmung auf das Kästchen Hyperparameter-Abstimmung aktivieren und geben Sie die folgenden Einstellungen an:
Geben Sie im Abschnitt Neuer Hyperparameter den Parameternamen und den Typ des Hyperparameters an, den Sie optimieren möchten. Konfigurieren Sie die angezeigten zusätzlichen Hyperparameter-Einstellungen abhängig vom angegebenen Typ.
Weitere Informationen zu Hyperparameter-Typen und zugehörigen Konfigurationen finden Sie in diesem Artikel.
Wenn Sie mehrere Hyperparameter abstimmen möchten, klicken Sie auf Neuen Parameter hinzufügen und wiederholen Sie den vorherigen Schritt in dem neuen Abschnitt, der angezeigt wird.
Wiederholen Sie diese Schritte für jeden Hyperparameter, den Sie abstimmen möchten.
Geben Sie im Feld Zu optimierender Messwert und in der Drop-down-Liste Ziel den Namen und das Ziel des Messwerts an, den Sie optimieren möchten.
Geben Sie im Feld Maximale Anzahl an Tests die maximale Anzahl an Tests an, die von Vertex AI für Ihren Hyperparameter-Abstimmungsjob ausgeführt werden sollen.
Geben Sie im Feld Maximale Anzahl an parallelen Tests die maximale Anzahl an Tests an, die Vertex AI gleichzeitig ausführen kann.
Geben Sie in der Drop-down-Liste Suchalgorithmus einen Suchalgorithmus für die Verwendung durch Vertex AI an.
Ignorieren Sie die Option Vorzeitiges Beenden aktivieren. Diese hat keine Auswirkungen.
Klicken Sie auf Weiter.
Legen Sie im Schritt Computing und Preise die folgenden Einstellungen fest:
Wählen Sie in der Drop-down-Liste Region eine Region aus, die benutzerdefiniertes Training unterstützt.
Geben Sie im Abschnitt Worker-Pool 0 die Computing-Ressourcen für das Training an.
Wenn Sie Beschleuniger angeben, muss der von Ihnen ausgewählte Beschleuniger in der ausgewählten Region verfügbar sein.
Wenn Sie ein verteiltes Training durchführen möchten, klicken Sie auf Weitere Worker-Pools hinzufügen und geben Sie für jeden zusätzlichen Worker-Pool, den Sie wollen, weitere Compute-Ressourcen an.
Klicken Sie auf Weiter.
Wählen Sie im Schritt Vorhersagecontainer die Option Kein Vorhersagecontainer aus.
Klicken Sie auf Training starten, um die benutzerdefinierte Trainingspipeline zu starten.
gcloud
In den folgenden Schritten wird gezeigt, wie Sie mit der Google Cloud CLI eine HyperparameterTuningJob
mit einer relativ minimalen Konfiguration erstellen. Informationen zu allen Konfigurationsoptionen, die Sie für diese Aufgabe verwenden können, finden Sie in der Referenzdokumentation zum Befehl gcloud ai hp-tuning-jobs create
und zur HyperparameterTuningJob
API-Ressource.
Erstellen Sie eine YAML-Datei mit dem Namen
config.yaml
und einigen API-Feldern, die Sie für den neuenHyerparameterTuningJob
angeben möchten:config.yaml
studySpec: metrics: - metricId: METRIC_ID goal: METRIC_GOAL parameters: - parameterId: HYPERPARAMETER_ID doubleValueSpec: minValue: DOUBLE_MIN_VALUE maxValue: DOUBLE_MAX_VALUE trialJobSpec: workerPoolSpecs: - machineSpec: machineType: MACHINE_TYPE replicaCount: 1 containerSpec: imageUri: CUSTOM_CONTAINER_IMAGE_URI
Dabei gilt:
METRIC_ID
: der Name eines Hyperparameter-Messwerts, der optimiert werden soll. Der Trainingscode muss diesen Messwert melden, wenn er ausgeführt wird.METRIC_GOAL
: das Ziel für Ihren Hyperparameter-Messwert, entwederMAXIMIZE
oderMINIMIZE
.HYPERPARAMETER_ID
: der Name eines abzustimmenden Hyperparameters. Der Trainingscode muss ein Befehlszeilen-Flag mit diesem Namen parsen. In diesem Beispiel muss der Hyperparameter Gleitkommawerte verwenden. Weitere Informationen zu anderen Hyperparameter-Datentypen.DOUBLE_MIN_VALUE
: der Mindestwert (eine Zahl), den Vertex AI für diesen Hyperparameter ausprobieren soll.DOUBLE_MAX_VALUE
: der Höchstwert (eine Zahl), den Vertex AI für diesen Hyperparameter ausprobieren soll.MACHINE_TYPE
: der VM-Typ, der für das Training verwendet werden soll.CUSTOM_CONTAINER_IMAGE_URI
: der URI eines Docker-Container-Image mit Ihrem Trainingscode. Beachten Sie die Informationen zum Erstellen von benutzerdefinierten Container-Images.Für dieses Beispiel müssen Sie einen benutzerdefinierten Container verwenden.
HyperparameterTuningJob
-Ressourcen unterstützen auch Trainingscode in einer Python-Quelldistribution anstelle eines benutzerdefinierten Containers.
Führen Sie im selben Verzeichnis wie Ihre
config.yaml
-Datei den folgenden Shell-Befehl aus:gcloud ai hp-tuning-jobs create \ --region=LOCATION \ --display-name=DISPLAY_NAME \ --max-trial-count=MAX_TRIAL_COUNT \ --parallel-trial-count=PARALLEL_TRIAL_COUNT \ --config=config.yaml
Dabei gilt:
LOCATION
: die Region, in der Sie dieHyperparameterTuningJob
erstellen möchten. Verwenden Sie eine Region, die benutzerdefiniertes Training unterstützt.DISPLAY_NAME
: ein einprägsamer Anzeigename Ihrer Wahl für denHyperparameterTuningJob
. Informationen zu den Anforderungen für Ressourcennamen.MAX_TRIAL_COUNT
: die maximale Anzahl von Tests, die ausgeführt werden können.PARALLEL_TRIAL_COUNT
: die maximale Anzahl von Tests, die parallel ausgeführt werden können.
REST
Mit dem folgenden Codebeispiel können Sie einen Hyperparameter-Abstimmungsjob mit der Methode create
der Ressource hyperparameterTuningJob
erstellen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
LOCATION
: die Region, in der Sie dieHyperparameterTuningJob
erstellen möchten. Verwenden Sie eine Region, die benutzerdefiniertes Training unterstützt. - PROJECT: Ihre Projekt-ID.
-
DISPLAY_NAME
: ein einprägsamer Anzeigename Ihrer Wahl für denHyperparameterTuningJob
. Informationen zu den Anforderungen für Ressourcennamen. - Damit legen Sie Messwerte fest:
-
METRIC_ID
: der Name eines Hyperparameter-Messwerts, der optimiert werden soll. Der Trainingscode muss diesen Messwert melden, wenn er ausgeführt wird. -
METRIC_GOAL
: das Ziel für Ihren Hyperparameter-Messwert, entwederMAXIMIZE
oderMINIMIZE
.
-
- Damit legen Sie Hyperparameter fest:
-
HYPERPARAMETER_ID
: der Name eines abzustimmenden Hyperparameters. Der Trainingscode muss ein Befehlszeilen-Flag mit diesem Namen parsen. - PARAMETER_SCALE: (Optional) Skalierungsart des Parameters. Lassen Sie das Feld für CATEGORICAL-Parameter leer. Kann
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
oderSCALE_TYPE_UNSPECIFIED
sein. - Wenn der Typ dieses Hyperparameters DOUBLE ist, geben Sie die Mindest- (DOUBLE_MIN_VALUE) und Höchstwerte (DOUBLE_MAX_VALUE) für diesen Hyperparameter an.
- Wenn der Typ dieses Hyperparameters INTEGER ist, geben Sie die Mindest- (INTEGER_MIN_VALUE) und Höchstwerte (INTEGER_MAX_VALUE) für diesen Hyperparameter an.
- Wenn der Typ dieses Hyperparameters CATEGORICAL ist, geben Sie die zulässigen Werte (CATEGORICAL_VALUES) als Array von Strings an.
- Wenn der Typ dieses Hyperparameters DISCRETE ist, geben Sie die zulässigen Werte (DISCRETE_VALUES) als Array von Zahlen an.
- Legen Sie bedingte Hyperparameter fest. Bedingte Hyperparameter werden einem Test hinzugefügt, wenn der Wert des übergeordneten Hyperparameters der von Ihnen angegebenen Bedingung entspricht. Weitere Informationen zu bedingten Hyperparametern finden Sie in diesem Artikel.
- CONDITIONAL_PARAMETER: Die
ParameterSpec
des bedingten Parameters. Diese Spezifikation enthält den Namen, die Skalierung und den Wertebereich des Parameters sowie alle bedingten Parameter, die von diesem Hyperparameter abhängen. - Wenn der Typ des übergeordneten Hyperparameters INTEGER ist, geben Sie eine Liste ganzer Zahlen als INTEGERS_TO_MATCH an. Wenn der Wert des übergeordneten Hyperparameters mit einem der angegebenen Werte übereinstimmt, wird dieser bedingte Parameter dem Test hinzugefügt.
- Wenn der Typ des übergeordneten Hyperparameters CATEGORICAL ist, geben Sie eine Liste von Kategorien als CATEGORIES_TO_MATCH an. Wenn der Wert des übergeordneten Hyperparameters mit einem der angegebenen Werte übereinstimmt, wird dieser bedingte Parameter dem Test hinzugefügt.
- Wenn der Typ des übergeordneten Hyperparameters DISCRETE ist, geben Sie eine Liste ganzer Zahlen als DISCRETE_VALUES_TO_MATCH an. Wenn der Wert des übergeordneten Hyperparameters mit einem der angegebenen Werte übereinstimmt, wird dieser bedingte Parameter dem Test hinzugefügt.
- CONDITIONAL_PARAMETER: Die
-
- ALGORITHM: (Optional) Der Suchalgorithmus, der in diesem Hyperparameter-Abstimmungsjob verwendet werden soll. Kann
ALGORITHM_UNSPECIFIED
,GRID_SEARCH
oderRANDOM_SEARCH
sein. MAX_TRIAL_COUNT
: die maximale Anzahl von Tests, die ausgeführt werden können.-
PARALLEL_TRIAL_COUNT
: die maximale Anzahl von Tests, die parallel ausgeführt werden können. - MAX_FAILED_TRIAL_COUNT: Die Anzahl der Jobs, die fehlschlagen können, bevor der Hyperparameter-Abstimmungsjob fehlschlägt.
- Damit definieren Sie den benutzerdefinierten Trainingsjob:
MACHINE_TYPE
: der VM-Typ, der für das Training verwendet werden soll.- ACCELERATOR_TYPE: (Optional) Der Typ des Beschleuniger, der an jeden Test angehängt werden soll.
- ACCELERATOR_COUNT: (Optional) Die Anzahl der Beschleuniger, die an jeden Test angehängt werden sollen.
- REPLICA_COUNT: Die Anzahl der Worker-Replikate, die pro Test verwendet werden sollen.
- Wenn Ihre Trainingsanwendung in einem benutzerdefinierten Container ausgeführt wird, geben Sie Folgendes an:
-
CUSTOM_CONTAINER_IMAGE_URI
: der URI eines Docker-Container-Image mit Ihrem Trainingscode. Beachten Sie die Informationen zum Erstellen von benutzerdefinierten Container-Images. - CUSTOM_CONTAINER_COMMAND: (Optional) Der Befehl, der beim Start des Containers aufgerufen werden soll. Mit diesem Befehl wird der Standardeinstiegspunkt des Containers überschrieben.
- CUSTOM_CONTAINER_ARGS: (Optional) Die Argumente, die beim Starten des Containers übergeben werden.
-
- Wenn Ihre Trainingsanwendung ein Python-Paket ist, das in einem vordefinierten Container ausgeführt wird, geben Sie Folgendes an:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: Der URI des Container-Images, das das bereitgestellte Python-Paket ausführt. Weitere Informationen zu vordefinierten Containern für das Training finden Sie in diesem Artikel.
- PYTHON_PACKAGE_URIS: Der Cloud Storage-Speicherort der Python-Paketdateien, die das Trainingsprogramm und dessen abhängige Pakete sind. Die maximale Anzahl der Paket-URIs beträgt 100.
- PYTHON_MODULE: Der Name des Python-Moduls, das nach der Installation der Pakete ausgeführt werden soll.
- PYTHON_PACKAGE_ARGS: (Optional) Befehlszeilenargumente, die an das Python-Modul übergeben werden sollen.
- SERVICE_ACCOUNT: (Optional) Das Dienstkonto, das Vertex AI zum Ausführen Ihres Codes verwendet. Weitere Informationen zum Anhängen eines benutzerdefinierten Dienstkontos.
- TIMEOUT: (Optional) Maximale Ausführungszeit für jeden Test.
- Geben Sie LABEL_NAME und LABEL_VALUE für alle Labels an, die Sie auf diesen Hyperparameter-Abstimmungsjob anwenden möchten.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/hyperparameterTuningJobs
JSON-Text anfordern:
{ "displayName": DISPLAY_NAME, "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. "conditionalParameterSpecs": [ "parameterSpec": { CONDITIONAL_PARAMETER } // Union field parent_value_condition can be only one of the following: "parentIntValues": { "values": [INTEGERS_TO_MATCH] } "parentCategoricalValues": { "values": [CATEGORIES_TO_MATCH] } "parentDiscreteValues": { "values": [DISCRETE_VALUES_TO_MATCH] } // End of list of possible types for union field parent_value_condition. ] } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT }, "serviceAccount": SERVICE_ACCOUNT }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "name": "projects/12345/locations/us-central1/hyperparameterTuningJobs/6789", "displayName": "myHyperparameterTuningJob", "studySpec": { "metrics": [ { "metricId": "myMetric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "myParameter1", "integerValueSpec": { "minValue": "1", "maxValue": "128" }, "scaleType": "UNIT_LINEAR_SCALE" }, { "parameterId": "myParameter2", "doubleValueSpec": { "minValue": 1e-07, "maxValue": 1 }, "scaleType": "UNIT_LINEAR_SCALE" } ], "ALGORITHM": "RANDOM_SEARCH" }, "maxTrialCount": 20, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] } }
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Konfiguration des Hyperparameter-Trainingsjobs
Hyperparameter-Abstimmungsjobs suchen nach der besten Kombination von Hyperparametern, mit der Ihre Messwerte optimiert werden können. Die Jobs führen dazu mehrere Tests Ihrer Trainingsanwendung mit verschiedenen Sätzen von Hyperparametern aus.
Wenn Sie einen Hyperparameter-Abstimmungsjob konfigurieren, müssen Sie die folgenden Details angeben:
Die Hyperparameter, die Sie optimieren möchten, sowie die Messwerte, die Sie zum Bewerten der Tests verwenden möchten.
Weitere Informationen zur Auswahl von Hyperparametern und Messwerten finden Sie in diesem Artikel.
Details zur Anzahl der Tests, die im Rahmen dieses Abstimmungsjobs ausgeführt werden sollen, wie die folgenden:
Details zum benutzerdefinierten Trainingsjob, der für jede Testversion ausgeführt wird, wie z. B.:
Der Maschinentyp, mit dem die Testjobs ausgeführt werden, sowie die Beschleuniger, die der Job verwendet.
Details zum benutzerdefinierten Container oder Python-Paketjob.
Weitere Informationen zu den Anforderungen für den Trainingscode finden Sie in diesem Artikel.
Anzahl der Tests begrenzen
Legen Sie fest, wie viele Tests der Dienst maximal ausführen darf. Geben Sie dazu im Objekt HyperparameterTuningJob einen Wert für maxTrialCount
an.
Beim Festlegen der zulässigen Tests müssen Sie zwei Faktoren gegeneinander abwägen:
- Zeit (und damit Kosten)
- Genauigkeit
Die Erhöhung der Anzahl der Tests führt in der Regel zu besseren Ergebnissen, aber dies ist nicht immer so. In den meisten Fällen gibt es einen Punkt, ab dem rückläufige Ergebnisse geliefert werden und zusätzliche Tests danach wenig oder keinen Einfluss auf die Genauigkeit haben. Bevor Sie einen Job mit einer großen Anzahl an Tests starten, sollten Sie mit einer kleinen Anzahl an Tests beginnen, um zu prüfen, wie sich die gewählten Hyperparameter auf die Genauigkeit Ihres Modells auswirken.
Der maximale Wert sollte nicht niedriger als das Zehnfache der Anzahl der Hyperparameter sein, die Sie verwenden, um die Hyperparameter-Abstimmung optimal zu nutzen.
Parallele Tests
Sie können festlegen, wie viele Tests sich parallel ausführen lassen. Dazu geben Sie parallelTrialCount
im HyperparameterTuningJob an.
Das parallele Ausführen von Tests hat den Vorteil, dass die Dauer des Trainingsjobs reduziert wird (Echtzeit – die erforderliche Gesamtverarbeitungszeit ändert sich in der Regel nicht). Das parallele Ausführen kann jedoch die Effektivität des Abstimmungsjobs insgesamt reduzieren. Grund hierfür ist, dass die Hyperparameter-Abstimmung die Ergebnisse vorheriger Versuche verwendet, um die Werte anzugeben, die den Hyperparametern in zukünftigen Versuchen zugewiesen werden sollen. Bei der Parallelausführung starten einige Tests, ohne den Vorteil der Ergebnisse noch laufender Tests zu nutzen.
Wenn Sie parallele Test verwenden, stellt der Dienst für die Hyperparameter-Abstimmung mehrere Trainingsverarbeitungscluster (oder mehrere Einzelmaschinen im Falle einer Einzelprozess-Trainingsanwendung) bereit. Die Jobpoolspezifikation, die Sie für Ihren Job festgelegt haben, wird für jeden einzelnen Trainingscluster verwendet.
Fehlgeschlagene Tests verarbeiten
Wenn die Tests Ihrer Hyperparameter-Abstimmung mit Fehlern enden, sollten Sie den Trainingsjob vorzeitig beenden. Legen Sie dazu für das Feld maxFailedTrialCount
im Objekt HyperparameterTuningJob die Anzahl der fehlgeschlagenen Tests fest, die Sie zulassen möchten. Nachdem diese Anzahl von Tests fehlgeschlagen ist, beendet Vertex AI den Trainingsjob. Der Wert maxFailedTrialCount
muss kleiner oder gleich maxTrialCount
sein.
Wenn Sie maxFailedTrialCount
nicht oder auf 0
festlegen, wendet Vertex AI auf fehlgeschlagene Tests folgende Regeln an:
- Wenn der erste Test Ihres Jobs fehlschlägt, beendet Vertex AI den Job sofort. Ein fehlgeschlagener erster Test lässt vermuten, dass in Ihrem Trainingscode ein Problem vorliegt und nachfolgende Tests vermutlich ebenfalls fehlschlagen werden. Durch Beenden des Jobs können Sie das Problem diagnostizieren, ohne auf weitere Tests zu warten und ohne zusätzliche Kosten zu verursachen.
- Wenn der erste Test erfolgreich ist, kann Vertex AI den Job bei Fehlern in nachfolgenden Tests aufgrund eines der folgenden Kriterien beenden:
- Die Anzahl der fehlgeschlagenen Tests ist zu hoch.
- Der Anteil der fehlgeschlagenen Tests gegenüber den erfolgreichen Tests ist zu hoch.
Diese Regeln können sich ändern. Wenn Sie ein bestimmtes Verhalten erzwingen möchten, legen Sie das Feld maxFailedTrialCount
fest.
Hyperparameter-Abstimmungsjobs verwalten
In den folgenden Abschnitten wird gezeigt, wie Sie Ihre Hyperparameter-Abstimmungsjobs verwalten.
Informationen zu einem Hyperparameter-Abstimmungsjob abrufen
Die folgenden Codebeispiele zeigen, wie Sie einen Hyperparameter-Abstimmungsjob abrufen.
gcloud
Führen Sie folgenden gcloud ai hp-tuning-jobs describe
-Befehl aus:
gcloud ai hp-tuning-jobs describe ID_OR_NAME \
--region=LOCATION
Dabei gilt:
ID_OR_NAME
: entweder der Name oder die numerische ID vonHyperparameterTuningJob
. (Die ID ist der letzte Teil des Namens.)Möglicherweise haben Sie die ID oder den Namen beim Erstellen des
HyperparameterTuningJob
angezeigt. Wenn Sie die ID oder den Namen nicht kennen, können Sie den Befehlgcloud ai hp-tuning-jobs list
ausführen und nach der entsprechenden Ressource suchen.LOCATION
: die Region, in der derHyperparameterTuningJob
erstellt wurde.
REST
Mit dem folgenden Codebeispiel können Sie einen Hyperparameter-Abstimmungsjob mit der Methode get
der Ressource hyperparameterTuningJob
abrufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
LOCATION
: die Region, in der derHyperparameterTuningJob
erstellt wurde. - NAME: der Name des Hyperparameter-Abstimmungsjobs. Der Jobname hat folgendes Format:
projects/{project}/LOCATIONS/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
HTTP-Methode und URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/NAME
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "name": "projects/12345/LOCATIONs/us-central1/hyperparameterTuningJobs/6789", "displayName": "my-hyperparameter-tuning-job", "studySpec": { "metrics": [ { "metricId": "my_metric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "my_parameter", "doubleValueSpec": { "minValue": 1e-05, "maxValue": 1 } } ] }, "maxTrialCount": 3, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] }, "trials": [ { "id": "2", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.71426874725564571 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30007445812225342 } ] }, "startTime": "2020-09-09T23:39:15.549112551Z", "endTime": "2020-09-09T23:47:08Z" }, { "id": "3", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.3078893356622992 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30000102519989014 } ] }, "startTime": "2020-09-09T23:49:22.451699360Z", "endTime": "2020-09-09T23:57:15Z" }, { "id": "1", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.500005 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30005377531051636 } ] }, "startTime": "2020-09-09T23:23:12.283374629Z", "endTime": "2020-09-09T23:36:56Z" } ], "state": "JOB_STATE_SUCCEEDED", "createTime": "2020-09-09T23:22:31.777386Z", "startTime": "2020-09-09T23:22:34Z", "endTime": "2020-09-10T01:31:24.271307Z", "updateTime": "2020-09-10T01:31:24.271307Z" }
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Hyperparameter-Abstimmungsjob abbrechen
Die folgenden Codebeispiele zeigen, wie Sie einen Hyperparameter-Abstimmungsjob abbrechen.
gcloud
Führen Sie folgenden gcloud ai hp-tuning-jobs cancel
-Befehl aus:
gcloud ai hp-tuning-jobs cancel ID_OR_NAME \
--region=LOCATION
Dabei gilt:
ID_OR_NAME
: entweder der Name oder die numerische ID vonHyperparameterTuningJob
. (Die ID ist der letzte Teil des Namens.)Möglicherweise haben Sie die ID oder den Namen beim Erstellen des
HyperparameterTuningJob
angezeigt. Wenn Sie die ID oder den Namen nicht kennen, können Sie den Befehlgcloud ai hp-tuning-jobs list
ausführen und nach der entsprechenden Ressource suchen.LOCATION
: die Region, in der derHyperparameterTuningJob
erstellt wurde.
REST
Mit dem folgenden Codebeispiel können Sie einen Hyperparameter-Abstimmungsjob mit der Methode cancel
der Ressource hyperparameterTuningJob
abbrechen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
LOCATION
: die Region, in der derHyperparameterTuningJob
erstellt wurde. - NAME: der Name des Hyperparameter-Abstimmungsjobs. Der Jobname hat folgendes Format:
projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/NAME:cancel
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort als Ausgabe erhalten.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Hyperparameter-Abstimmungsjob löschen
Mit den folgenden Codebeispielen wird veranschaulicht, wie Sie einen Hyperparameter-Abstimmungsjob mit dem Vertex AI SDK for Python und der REST API löschen.
REST
Mit dem folgenden Codebeispiel können Sie einen Hyperparameter-Abstimmungsjob mit der Methode delete
der Ressource hyperparameterTuningJob
löschen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION: Ihre Region.
- NAME: der Name des Hyperparameter-Abstimmungsjobs. Der Jobname hat folgendes Format:
projects/{project}/LOCATIONs/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
HTTP-Methode und URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1/NAME
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort als Ausgabe erhalten.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Nächste Schritte
- Mehr über die Konzepte der Hyperparameter-Abstimmung erfahren