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 auf der Gemini Enterprise Agent Platform Ein detailliertes Beispiel finden Sie im Codelab zur Agent Platform: 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 die Agent Platform ü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 die Agent Platform Tests für Ihren Trainingsjob mit verschiedenen Sätzen von Hyperparametern und bewertet die Effektivität eines Tests anhand der von Ihnen angegebenen Messwerte. Die Agent Platform übergibt Hyperparameterwerte als Befehlszeilenargumente an Ihre Trainingsanwendung. Damit die Agent Platform die Wirksamkeit eines Tests bewerten kann, muss Ihre Trainingsanwendung die Messwerte an die Agent Platform übergeben.
In den nächsten Abschnitten wird Folgendes erläutert:
- Übergabe von Hyperparametern an Ihre Trainingsanwendung durch die Agent Platform
- Optionen zum Übergeben von Messwerten von Ihrer Trainingsanwendung an die Agent Platform
Weitere Informationen zu den Anforderungen für serverlose Trainingsanwendungen, die auf der Gemini Enterprise Agent Platform ausgeführt werden, finden Sie unter Anforderungen an Trainingscode.
Befehlszeilenargumente für die abzustimmenden Hyperparameter bearbeiten
Die Agent Platform 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_trainerist und Sie einen Hyperparameter mit dem Namenlearning_rateabstimmen, startet Agent Platform jeden Test mit einem Befehl wie dem folgenden:python3 -m my_trainer --learning_rate learning-rate-in-this-trial
Die Agent Platform ermittelt die learning-rate-in-this-trial und übergibt sie mithilfe des Arguments
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 die Agent Platform übergeben
Verwenden Sie das Python-Paket cloudml-hypertune, um Ihre Messwerte an die Agent Platform zu senden. Diese Bibliothek bietet Hilfsfunktionen zum Übergeben von Messwerten an die Agent Platform.
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 „Agent Platform“ 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 der Agent Platform 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 der Agent Platform im 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 die Agent Platform 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 die Agent Platform die Argumente als Befehlszeilen-Flags an Ihr Python-Modul.
Wenn Sie einen benutzerdefinierten Container verwenden, überschreibt die Agent-Plattform 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 Agent Platform 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 die Agent Platform gleichzeitig ausführen kann.
Geben Sie in der Drop-down-Liste Suchalgorithmus einen Suchalgorithmus für die Verwendung in der Agent Platform 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 serverlose 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.yamlund einigen API-Feldern, die Sie für den neuenHyerparameterTuningJobangeben möchten:config.yamlstudySpec: 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_URIDabei 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, entwederMAXIMIZEoderMINIMIZE.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 die Agent Platform für diesen Hyperparameter ausprobieren soll.DOUBLE_MAX_VALUE: Der Höchstwert (eine Zahl), den die Agent Platform 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.yamlDabei gilt:
LOCATION: die Region, in der Sie dieHyperparameterTuningJoberstellen möchten. Verwenden Sie eine Region, die serverloses Training unterstützt.DISPLAY_NAME: ein einprägsamer Anzeigename Ihrer Wahl für denHyperparameterTuningJob. Weitere Informationen finden Sie unter REST-Ressource.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 dieHyperparameterTuningJoberstellen möchten. Verwenden Sie eine Region, die serverloses Training unterstützt. - PROJECT: Ihre [Projekt-ID](/resource-manager/docs/creating-managing-projects#identifiers). .
-
DISPLAY_NAME: ein einprägsamer Anzeigename Ihrer Wahl für denHyperparameterTuningJob. Weitere Informationen finden Sie unter REST-Ressource. - 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, entwederMAXIMIZEoderMINIMIZE.
-
- 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_SCALEoderSCALE_TYPE_UNSPECIFIEDsein. - 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
ParameterSpecdes 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_SEARCHoderRANDOM_SEARCHsein. 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 die Agent Platform 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 eine JSON-Antwort ähnlich wie diese 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 ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Agent Platform-Kurzanleitung zur Verwendung von Clientbibliotheken.
Richten Sie zur Authentifizierung bei der Agent Platform 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 Python API-Referenzdokumentation.
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 serverlosen 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 die Agent Platform den Trainingsjob. Der Wert maxFailedTrialCount muss kleiner oder gleich maxTrialCount sein.
Wenn Sie maxFailedTrialCount nicht oder auf 0 festlegen, wendet die Agent Platform auf fehlgeschlagene Tests folgende Regeln an:
- Wenn der erste Test Ihres Jobs fehlschlägt, beendet die Agent Platform 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 die Agent Platform 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
HyperparameterTuningJobangezeigt. Wenn Sie die ID oder den Namen nicht kennen, können Sie den Befehlgcloud ai hp-tuning-jobs listausführen und nach der entsprechenden Ressource suchen.LOCATION: die Region, in der derHyperparameterTuningJoberstellt 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 derHyperparameterTuningJoberstellt 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 eine JSON-Antwort ähnlich wie diese 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 ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Agent Platform-Kurzanleitung zur Verwendung von Clientbibliotheken.
Richten Sie zur Authentifizierung bei der Agent Platform 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 Python API-Referenzdokumentation.
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
HyperparameterTuningJobangezeigt. Wenn Sie die ID oder den Namen nicht kennen, können Sie den Befehlgcloud ai hp-tuning-jobs listausführen und nach der entsprechenden Ressource suchen.LOCATION: die Region, in der derHyperparameterTuningJoberstellt 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 derHyperparameterTuningJoberstellt 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 Python API-Referenzdokumentation.
Hyperparameter-Abstimmungsjob löschen
Die folgenden Codebeispiele zeigen, wie Sie einen Hyperparameter-Abstimmungsjob mit dem Google Cloud SDK für 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 Python API-Referenzdokumentation.
Nächste Schritte
- Mehr über die Konzepte der Hyperparameter-Abstimmung erfahren
- Weitere Informationen zum Planen serverloser Trainingsjobs basierend auf der Ressourcenverfügbarkeit