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.
Durchführen eines Hyperparameter-Optimierungsauftrags mit Warmstart
Nutzen Sie einen Warmstart zum Starten eines Hyperparameter-Optimierungsauftrags mit einem oder mehreren vorherigen Optimierungsaufträgen als Ausgangspunkt. Die Ergebnisse der vorherigen Optimierungsaufträge werden verwendet, um Informationen darüber bereitzustellen, welche Kombinationen von Hyperparametern im neuen Optimierungsauftrag durchsucht werden sollen. Die Hyperparameter-Optimierung nutzt die Bayes- oder die Zufallssuche, um Kombinationen von Hyperparameter-Werten aus den von Ihnen angegebenen Bereichen auszuwählen. Weitere Informationen finden Sie unter Machen Sie sich mit den bei Amazon verfügbaren Strategien zur Hyperparameter-Optimierung vertraut SageMaker. Durch die Verwendung von Informationen aus früheren Hyperparameter-Optimierungsaufträgen kann die Leistung des neuen Hyperparameter-Optimierungsauftrags verbessert werden, da die Suche nach der besten Kombination von Hyperparametern effizienter verläuft.
Anmerkung
Optimierungsaufträge mit Warmstart benötigen für den Start üblicherweise mehr Zeit als Standard-Hyperparameter-Optimierungsaufträge, da die Ergebnisse der übergeordneten Aufträge geladen werden müssen, bevor der Auftrag gestartet werden kann. Die längere Zeit ist abhängig von der Gesamtzahl der Trainingsaufträge, die von den übergeordneten Aufträgen gestartet werden.
Zu den folgenden Gründen, die für einen Warmstart sprechen, gehören:
-
Allmähliche Erhöhung der Anzahl der Trainingsaufträge über mehrere Abstimmungsaufträge auf der Grundlage der Ergebnisse nach jeder Iteration.
-
Um ein Modell mithilfe neuer Daten, die Sie erhalten haben, zu optimieren.
-
Um Hyperparameterbereiche zu ändern, die Sie in einem früheren Optimierungsauftrag verwendet haben, ändern Sie statische Hyperparameter in abstimmbare oder abstimmbare Hyperparameter in statische Werte.
-
Sie haben einen früheren Hyperparameter-Auftrag vorzeitig beendet oder er wurde unerwartet beendet.
Themen
Arten von Optimierungsaufträgen mit Warmstart
Es gibt zwei verschiedene Arten von Optimierungsaufträgen mit Warmstart:
IDENTICAL_DATA_AND_ALGORITHM
-
Der neue Hyperparameter-Optimierungsauftrag verwendet dieselben Eingabedaten und dasselbe Trainings-Image wie die übergeordneten Optimierungsaufträge. Sie können die zu durchsuchenden Hyperparameter-Bereiche und die maximale Anzahl an Trainingsaufträgen, die der Hyperparameter-Optimierungsauftrag startet, ändern. Sie können außerdem Hyperparameter von optimierbar zu statisch und von statisch zu optimierbar ändern, die Gesamtzahl der statischen plus optimierbaren Hyperparameter muss jedoch dieselbe bleiben wie in allen übergeordneten Aufträgen. Es ist nicht möglich, eine neue Version des Trainingsalgorithmus zu verwenden, es sei denn, die Änderungen in der neuen Version wirken sich nicht auf den Algorithmus selbst aus. Beispiel: Änderungen, die die Protokollierung verbessern oder Unterstützung für ein anderes Datenformat hinzufügen, sind zulässig.
Verwenden Sie identische Daten und Algorithmen, wenn Sie dieselben Trainingsdaten wie in einem vorherigen Hyperparameter-Optimierungsauftrag nutzen, jedoch die Gesamtzahl an Trainingsaufträgen erhöhen oder Bereiche oder Werte für Hyperparameter ändern möchten.
Wenn Sie einen Optimierungsauftrag mit Warmstart des Typs
IDENTICAL_DATA_AND_ALGORITHM
ausführen, gibt es in der AntwortDescribeHyperParameterTuningJob
ein zusätzliches Feld mit dem NamenOverallBestTrainingJob
. Der Wert dieses Felds ist der Wert TrainingJobSummaryfür den Trainingsjob mit dem besten objektiven Metrikwert aller Trainingsjobs, die durch diesen Optimierungsjob gestartet wurden, und aller übergeordneten Jobs, die für den Warmstart-Tuning-Job angegeben wurden. TRANSFER_LEARNING
-
Der neue Hyperparameter-Optimierungsauftrag kann Eingabedaten, Hyperparameter-Bereiche, die maximale Anzahl gleichzeitiger Trainingsaufträge und die maximale Anzahl an Trainingsaufträgen, die sich von denen der übergeordneten Hyperparameter-Optimierungsaufträge unterscheiden, umfassen. Sie können außerdem Hyperparameter von optimierbar zu statisch und von statisch zu optimierbar ändern, die Gesamtzahl der statischen plus optimierbaren Hyperparameter muss jedoch dieselbe bleiben wie in allen übergeordneten Aufträgen. Die Version des Trainingsalgorithmus-Image kann ebenfalls von der Version im übergeordneten Hyperparameter-Optimierungsauftrag abweichen. Wenn Sie Transferlernen verwenden, können Änderungen des Datensatzes oder Algorithmus, die wesentlichen Einfluss auf den Wert der objektiven Metrik haben, den Nutzen einer Optimierung mit Warmstart verringern.
Einschränkungen für die Optimierung mit Warmstart
Folgende Einschränkungen gelten für alle Optimierungsaufträge mit Warmstart:
-
Ein Optimierungsauftrag kann maximal 5 übergeordnete Aufträge haben und alle übergeordneten Aufträge müssen einen Endstatus aufweisen (
Completed
,Stopped
oderFailed
), bevor Sie den neuen Optimierungsauftrag starten. -
Die im neuen Optimierungsauftrag verwendete objektive Metrik muss der objektiven Metrik entsprechen, die in den übergeordneten Aufträgen verwendet wurde.
-
Die Gesamtzahl der statischen plus optimierbaren Hyperparameter muss bei übergeordneten Aufträgen und neuem Optimierungsauftrag gleich sein. Aus diesem Grund sollten Sie einen Hyperparameter, den Sie möglicherweise als optimierbaren Hyperparameter in einem künftigen Optimierungsauftrag mit Warmstart verwenden möchten, als statischen Hyperparameter hinzufügen, wenn Sie einen Optimierungsauftrag erstellen.
-
Der Typ der einzelnen Hyperparameter (durchgehend, ganzzahlig, kategorisch) darf sich bei übergeordneten Aufträgen und dem neuen Optimierungsauftrag nicht unterscheiden.
-
Die Gesamtanzahl der Änderungen von optimierbaren Hyperparametern in den übergeordneten Aufträgen zu statischen Hyperparametern im neuen Optimierungsauftrag plus die Anzahl der Änderungen an den Werten der statischen Hyperparameter darf nicht höher als 10. Beispiel: Wenn der übergeordnete Auftrag über einen optimierbaren kategorischen Hyperparameter mit den möglichen Werten
red
undblue
verfügt und Sie diesen Hyperparameter im neuen Optimierungsauftrag zu statisch ändern, wird dies als 2 Änderungen auf die insgesamt zulässigen 10 angerechnet. Wenn derselbe Hyperparameter den statischen Wertred
im übergeordneten Auftrag aufwies und Sie den statischen Wert im neuen Optimierungsauftrag zublue
ändern, wird dies ebenfalls als 2 Änderungen angerechnet. -
Eine Optimierung mit Warmstart ist nicht rekursiv. Beispiel: Wenn Sie
MyTuningJob3
als Optimierungsauftrag mit Warmstart mitMyTuningJob2
als übergeordnetem Auftrag erstellen undMyTuningJob2
selbst ein Optimierungsauftrag mit Warmstart mit dem übergeordneten AuftragMyTuningJob1
ist, werden die Erkenntnisse, die bei der Ausführung vonMyTuningJob1
gewonnen wurden, nicht fürMyTuningJob3
verwendet. Wenn Sie die Erkenntnisse ausMyTuningJob1
nutzen möchten, müssen Sie diesen explizit als übergeordneten Auftrag fürMyTuningJob3
hinzufügen. -
Die Trainingsaufträge, die von allen übergeordneten Aufträgen in einem Optimierungsauftrag mit Warmstart gestartet werden, werden auf die maximal 500 Trainingsaufträge pro Optimierungsauftrag angerechnet.
-
Hyperparameter-Optimierungsaufträge, die vor dem 1. Oktober 2018 erstellt wurden, können nicht als übergeordnete Aufträge für Optimierungsaufträge mit Warmstart verwendet werden.
Beispiel-Notebook für die Optimierung mit Warmstart
Ein Beispielnotizbuch, das zeigt, wie die Warmstartoptimierung verwendet wird, finden Sie unter https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynbhpo_image_classification_warmstart.ipynb
. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.
Erstellen eines Optimierungsauftrags mit Warmstart
Sie können entweder das Low-Level-Python AWS SDK für Python (Boto 3) oder das SageMaker High-Level-Python verwendenSDK, um einen Warmstart-Tuning-Job zu erstellen.
Themen
Einen Warmstart-Tuning-Job erstellen (Low-Level SageMaker API für Python (Boto 3))
Um die Optimierung mit Warmstart zu verwenden, legen Sie die Werte eines HyperParameterTuningJobWarmStartConfig
-Objekts fest und übergeben dieses als WarmStartConfig
-Feld in einem Aufruf an CreateHyperParameterTuningJob
.
Der folgende Code zeigt, wie Sie mithilfe des Low-Levels SageMaker API für Python (Boto 3) ein HyperParameterTuningJobWarmStartConfig
Objekt erstellen und an einen CreateHyperParameterTuningJob
Job übergeben.
Erstellen Sie das HyperParameterTuningJobWarmStartConfig
-Objekt:
warm_start_config = { "ParentHyperParameterTuningJobs" : [ {"HyperParameterTuningJobName" : 'MyParentTuningJob'} ], "WarmStartType" : "IdenticalDataAndAlgorithm" }
Erstellen Sie den Optimierungsauftrag mit Warmstart:
smclient = boto3.Session().client('sagemaker') smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = 'MyWarmStartTuningJob', HyperParameterTuningJobConfig = tuning_job_config, # See notebook for tuning configuration TrainingJobDefinition = training_job_definition, # See notebook for job definition WarmStartConfig = warm_start_config)
Einen Warmstart-Tuning-Job erstellen (SageMakerPythonSDK)
Um Amazon SageMaker Python
-
Geben Sie die übergeordneten Aufträge und die Art des Warmstarts mithilfe eines
WarmStartConfig
-Objekts an. -
Übergeben Sie das
WarmStartConfig
Objekt als Wert deswarm_start_config
Arguments eines HyperparameterTunerObjekts. -
Rufen Sie die
fit
-Methode desHyperparameterTuner
-Objekts auf.
Weitere Informationen zur Verwendung von Amazon SageMaker Python SDK
Dieses Beispiel verwendet eine Schätzfunktion, die den Bildklassifizierung - MXNet-Algorithmus für das Training nutzt. Der folgende Code legt die Hyperparameter-Bereiche fest, die der Optimierungsauftrag mit Warmstart durchsucht, um die optimale Wertekombination zu ermitteln. Informationen zum Festlegen von Hyperparameter-Bereichen finden Sie unter Definieren von Hyperparameter-Bereichen.
hyperparameter_ranges = {'learning_rate': ContinuousParameter(0.0, 0.1), 'momentum': ContinuousParameter(0.0, 0.99)}
Der folgende Code konfiguriert den Optimierungsauftrag mit Warmstart durch Erstellen eines WarmStartConfig
-Objekts.
from sagemaker.tuner import WarmStartConfig,WarmStartTypes parent_tuning_job_name = "MyParentTuningJob" warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents={parent_tuning_job_name})
Legen Sie nun die Werte für statische Hyperparameter fest. Dabei handelt es sich um Hyperparameter, die denselben Wert für jeden Trainingsauftrag, den der Optimierungsauftrag mit Warmstart startet, beibehalten. Im folgenden Code ist imageclassification
eine Schätzfunktion, die zuvor erstellt wurde.
imageclassification.set_hyperparameters(num_layers=18, image_shape='3,224,224', num_classes=257, num_training_samples=15420, mini_batch_size=128, epochs=30, optimizer='sgd', top_k='2', precision_dtype='float32', augmentation_type='crop')
Erstellen Sie nun das HyperparameterTuner
-Objekt und übergeben Sie das WarmStartConfig
-Objekt, das Sie zuvor erstellt haben, als warm_start_config
-Argument.
tuner_warm_start = HyperparameterTuner(imageclassification, 'validation:accuracy', hyperparameter_ranges, objective_type='Maximize', max_jobs=10, max_parallel_jobs=2, base_tuning_job_name='warmstart', warm_start_config=warm_start_config)
Schließlich rufen Sie die Methode fit
des HyperparameterTuner
-Objekts auf, um den Optimierungsauftrag mit Warmstart zu starten.
tuner_warm_start.fit( {'train': s3_input_train, 'validation': s3_input_validation}, include_cls_metadata=False)