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:
-
Geben Sie den Hyperparameter und einen Beispielwert im
AutoParameters
Feld für an ParameterRangesAPI. -
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 DescribeHyperParameterTrainingJob
API, 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 CreateHyperParameterTuningJob
API. 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