Definieren von Hyperparameter-Bereichen - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Definieren von Hyperparameter-Bereichen

In dieser Anleitung wird gezeigt, wie Sie SageMaker APIs Hyperparameterbereiche definieren können. Außerdem wird eine Liste der Hyperparameter-Skalierungstypen angezeigt, die Sie verwenden können.

Die Auswahl der Hyperparameter und Bereiche wirkt sich erheblich auf die Leistung Ihres Optimierungsauftrags aus. Die Hyperparameter-Abstimmung findet die besten Hyperparameter-Werte für Ihr Modell, indem sie einen Bereich von Werten durchsucht, den Sie für jeden abstimmbaren Hyperparameter angeben. Sie können auch bis zu 100 statische Hyperparameter angeben, die sich im Laufe des Tuning-Jobs nicht ändern. Sie können insgesamt bis zu 100 Hyperparameter verwenden (statisch + einstellbar). Eine Anleitung zur Auswahl von Hyperparametern und Bereichen finden Sie unter Bewährte Methoden für die Hyperparameter-Optimierung. Sie können Autotune auch verwenden, um die optimalen Einstellungen für den Tuning-Job zu finden. Weitere Informationen finden Sie im folgenden Abschnitt zur Autooptimierung

Anmerkung

SageMaker Bei der automatischen Modelloptimierung (AMT) können zusätzliche Hyperparameter hinzugefügt werden, die zur Obergrenze von insgesamt 100 Hyperparametern beitragen. Derzeit werden automatisch Daten SageMaker hinzugefügt_tuning_objective_metric, wenn Sie Ihre Zielmetrik an den Tuning-Job zur Verwendung während des Trainings weitergeben möchten.

Statische Hyperparameter

Verwenden Sie statische Hyperparameter für die folgenden Fälle: Sie können es beispielsweise verwenden, AMT um Ihr Modell mithilfe von param1 (einem einstellbaren Parameter) und param2 (einem statischen Parameter) zu optimieren. Wenn Sie dies tun, verwenden Sie einen Suchraumparam1, der zwischen zwei Werten liegt, und übergeben Sie param2 ihn wie folgt als statischen Hyperparameter.

param1: ["range_min","range_max"] param2: "static_value"

Statische Hyperparameter haben die folgende Struktur:

"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }

Sie können Amazon verwenden SageMaker API, um Schlüssel-Wert-Paare im StaticHyperParametersFeld des HyperParameterTrainingJobDefinition Parameters anzugeben, den Sie an die CreateHyperParameterTuningJobOperation übergeben.

Dynamische Hyperparameter

Sie können den verwenden SageMaker API, um Hyperparameterbereiche zu definieren. Geben Sie die Namen von Hyperparametern und Wertebereichen im Feld ParameterRanges des Parameters HyperParameterTuningJobConfig an, den Sie an die Operation CreateHyperParameterTuningJobübergeben.

Das ParameterRanges Feld hat drei Unterfelder: kategorisch, ganzzahlig und kontinuierlich. Sie können insgesamt bis zu 30 einstellbare Hyperparameter (kategorisch + Ganzzahl + kontinuierlich) definieren, über die Sie suchen können.

Anmerkung

Jeder kategoriale Hyperparameter kann maximal 30 verschiedene Werte haben.

Dynamische Hyperparameter haben die folgende Struktur:

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

Wenn Sie einen Tuning-Job mit einer Grid Strategie erstellen, können Sie nur kategoriale Werte angeben. Sie müssen die nicht angebenMaxNumberofTrainingJobs. Dieser Wert wird aus der Gesamtzahl der Konfigurationen abgeleitet, die anhand Ihrer kategorialen Parameter erstellt werden können. Falls angegeben, MaxNumberOfTrainingJobs sollte der Wert von der Gesamtzahl der möglichen unterschiedlichen kategorialen Kombinationen entsprechen.

Autotune

Um Zeit und Ressourcen bei der Suche nach Hyperparameterbereichen, Ressourcen oder objektiven Metriken zu sparen, kann Autotune automatisch optimale Werte für einige Hyperparameterfelder erraten. Verwenden Sie Autotune, um optimale Werte für die folgenden Felder zu finden:

  • ParameterRanges— Die Namen und Bereiche von Hyperparametern, die durch einen Tuning-Job optimiert werden können.

  • ResourceLimits— Die maximalen Ressourcen, die in einem Tuning-Job verwendet werden können. Diese Ressourcen können die maximale Anzahl von Trainingsjobs, die maximale Laufzeit eines Optimierungsjobs und die maximale Anzahl von Trainingsjobs, die gleichzeitig ausgeführt werden können, beinhalten.

  • TrainingJobEarlyStoppingType— Eine Markierung, die eine Ausbildungsstelle unterbindet, wenn sich eine Stelle im Vergleich zu einer objektiven Kennzahl nicht wesentlich verbessert. Die Standardeinstellung ist aktiviert. Weitere Informationen finden Sie unter Vorzeitiges Beenden von Trainingsaufträgen.

  • RetryStrategy— Die Häufigkeit, mit der eine Ausbildungsstelle wiederholt werden muss. Werte für ungleich Null für RetryStrategy können die Wahrscheinlichkeit erhöhen, dass Ihre Aufgabe erfolgreich abgeschlossen wird.

  • Strategie – Gibt an, wie die Hyperparameter-Optimierung die Kombinationen von Hyperparameterwerten auswählt, die für den Trainingsjob verwendet werden sollen, den sie startet.

  • ConvergenceDetected— Eine Markierung, die darauf hinweist, dass Automatic Model Tuning (AMT) eine Modellkonvergenz erkannt hat.

Gehen Sie wie folgt vor, um Autotune zu verwenden:

  1. Geben Sie den Hyperparameter und einen Beispielwert im AutoParameters Feld für an ParameterRangesAPI.

  2. Automatische Optimierung aktivieren

AMTbestimmt, ob Ihre Hyperparameter und Beispielwerte für Autotune in Frage kommen. Hyperparameter, die in Autotune verwendet werden können, werden automatisch dem entsprechenden Parameterbereichstyp zugewiesen. Wird dann AMT verwendet, ValueHint um einen für Sie optimalen Bereich auszuwählen. Sie können den verwenden DescribeHyperParameterTrainingJobAPI, um diese Bereiche anzuzeigen.

Das folgende Beispiel zeigt, wie Sie einen Tuning-Auftrag konfigurieren, der Autotune verwendet. Im Konfigurationsbeispiel enthält der Hyperparameter max_depth ValueHint einen Beispielwert von 4.

config = { 'Autotune': {'Mode': 'Enabled'}, 'HyperParameterTuningJobName':'my-autotune-job', 'HyperParameterTuningJobConfig': { 'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'}, 'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1}, 'ParameterRanges': { 'AutoParameters': [ {'Name': 'max_depth', 'ValueHint': '4'} ] } }, 'TrainingJobDefinition': { .... }

In Fortsetzung des vorherigen Beispiels wird ein Tuning-Job erstellt, nachdem die vorherige Konfiguration in einen Aufruf von aufgenommen wurde CreateHyperParameterTuningJobAPI. Anschließend konvertiert Autotune den Hyperparameter max_depth in AutoParameters den Hyperparameter. IntegerParameterRanges Die folgende Antwort von a DescribeHyperParameterTrainingJob API zeigt, dass das IntegerParameterRanges Optimum für zwischen und liegt. max_depth 2 8

{ 'HyperParameterTuningJobName':'my_job', 'HyperParameterTuningJobConfig': { 'ParameterRanges': { 'IntegerParameterRanges': [ {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'}, ], } }, 'TrainingJobDefinition': { ... }, 'Autotune': {'Mode': 'Enabled'} }

Hyperparameter-Skaliertypen

Für ganzzahlige und kontinuierliche Hyperparameterbereiche können Sie die Skala wählen, die bei der Hyperparameteroptimierung verwendet werden soll. Um beispielsweise den Wertebereich zu durchsuchen, können Sie einen Wert für das ScalingType Feld des Hyperparameterbereichs angeben. Sie können zwischen den folgenden Hyperparameter-Skalierungstypen wählen:

Automatisch

SageMaker Bei der Hyperparameteroptimierung wird die beste Skala für den Hyperparameter ausgewählt.

Linear

Die Hyperparameter-Optimierung durchsucht die Werte im Hyperparameter-Bereich anhand einer linearen Skala. In der Regel wählen Sie diesen Wert, wenn der Bereich aller Werte vom niedrigsten bis zum höchsten Wert relativ klein ist (innerhalb einer Größenordnung). Die einheitliche Suche nach Werten aus dem Bereich ermöglicht eine sinnvolle Untersuchung des gesamten Bereichs.

Logarithmisch

Die Hyperparameter-Optimierung durchsucht die Werte im Hyperparameter-Bereich mithilfe einer logarithmischen Skala.

Die logarithmische Skalierung funktioniert nur für Bereiche, deren Werte größer als 0 sind.

Wählen Sie die logarithmische Skalierung, wenn Sie einen Bereich suchen, der sich über mehrere Größenordnungen erstreckt.

Wenn Sie beispielsweise ein Abstimmen eines linearen Learner-Modells Modell optimieren und einen Wertebereich zwischen 0,0001 und 1,0 für den learning_rate Hyperparameter angeben, sollten Sie Folgendes berücksichtigen: Durch eine einheitliche Suche auf einer logarithmischen Skala erhalten Sie eine bessere Stichprobe des gesamten Bereichs als bei einer Suche auf einer linearen Skala. Das liegt daran, dass bei einer Suche auf einer linearen Skala im Durchschnitt 90 Prozent Ihres Trainingsbudgets nur für Werte zwischen 0,1 und 1,0 aufgewendet würden. Somit bleiben nur noch 10 Prozent Ihres Trainingsbudgets für Werte zwischen 0,0001 und .1 übrig.

ReverseLogarithmic

Bei der Hyperparameter-Abstimmung werden die Werte im Hyperparameterbereich anhand einer umgekehrt logarithmischen Skala gesucht. Die umgekehrte logarithmische Skalierung wird nur für kontinuierliche Hyperparameterbereiche unterstützt. Sie wird nicht für ganzzahlige Hyperparameter-Bereiche unterstützt.

Wählen Sie die umgekehrte logarithmische Skalierung aus, wenn Sie einen Bereich durchsuchen, der bereits auf kleine Änderungen, die sehr nahe an 1 liegen, äußerst sensibel reagiert.

Die umgekehrte logarithmische Skalierung funktioniert nur für Bereiche, die sich vollständig innerhalb des Bereichs 0<=x<1,0 befinden.

Ein Beispiel-Notebook, das Hyperparameter-Skalierung verwendet, finden Sie in diesen SageMaker Amazon-Hyperparameter-Beispielen unter. GitHub