Konfigurieren und Starten eines Hyperparameter-Optimierungsauftrags - 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.

Konfigurieren und Starten eines Hyperparameter-Optimierungsauftrags

Wichtig

Benutzerdefinierte IAM-Richtlinien, die es Amazon SageMaker Studio oder Amazon SageMaker Studio Classic ermöglichen, SageMaker Amazon-Ressourcen zu erstellen, müssen auch Berechtigungen zum Hinzufügen von Tags zu diesen Ressourcen gewähren. Die Berechtigung zum Hinzufügen von Tags zu Ressourcen ist erforderlich, da Studio und Studio Classic automatisch alle von ihnen erstellten Ressourcen taggen. Wenn eine IAM-Richtlinie Studio und Studio Classic das Erstellen von Ressourcen, aber kein Tagging erlaubt, können "AccessDenied" Fehler auftreten, wenn versucht wird, Ressourcen zu erstellen. Weitere Informationen finden Sie unter Stellen Sie Berechtigungen für das Taggen von Ressourcen SageMaker bereit.

AWS Verwaltete Richtlinien für Amazon SageMakerdie Berechtigungen zum Erstellen von SageMaker Ressourcen gewähren, beinhalten bereits Berechtigungen zum Hinzufügen von Tags beim Erstellen dieser Ressourcen.

Ein Hyperparameter ist ein Parameter auf hoher Ebene, der den Lernprozess beim Modelltraining beeinflusst. Um die besten Modellvorhersagen zu erhalten, können Sie eine Hyperparameterkonfiguration optimieren oder Hyperparameterwerte festlegen. Der Prozess der Suche nach einer optimalen Konfiguration wird als Hyperparameter-Tuning bezeichnet. Zum Konfigurieren und Starten eines Hyperparameter-Tuning-Jobs führen Sie die Schritte in diesen Anleitungen aus.

Einstellungen für Hyperparameter-Optimierungsaufträge

Um Einstellungen für den Hyperparameter-Abstimmungsauftrag festzulegen, definieren Sie ein JSON-Objekt, wenn Sie den Abstimmungsauftrag erstellen. Übergeben Sie dieses JSON-Objekt als Wert des HyperParameterTuningJobConfig Parameters an die CreateHyperParameterTuningJob-API.

Geben Sie in diesem JSON-Objekt Folgendes an:

In diesem JSON-Objekt geben Sie Folgendes an:

  • HyperParameterTuningJobObjective– Die objektive Metrik, die verwendet wird, um die Leistung des Trainingsjobs zu bewerten, der durch den Hyperparameter-Tuning-Job gestartet wurde.

  • ParameterRanges– Der Wertebereich, den ein einstellbarer Hyperparameter bei der Optimierung verwenden kann. Weitere Informationen finden Sie unter Definieren von Hyperparameter-Bereichen.

  • RandomSeed– Ein Wert, der zur Initialisierung eines Pseudozufallszahlengenerators verwendet wird. Wenn Sie einen zufälligen Startwert festlegen, können die Suchstrategien für die Hyperparameter-Optimierung konsistentere Konfigurationen für denselben Optimierungsjob erstellen (optional).

  • ResourceLimits– Die maximale Anzahl von Trainings- und parallel Trainingsjobs, die der Hyperparameter-Tuning-Job verwenden kann.

Anmerkung

Wenn Sie anstelle eines SageMaker integrierten Algorithmus Ihren eigenen Algorithmus für die Hyperparameteroptimierung verwenden, müssen Sie Metriken für Ihren Algorithmus definieren. Weitere Informationen finden Sie unter Definieren von Metriken.

Das folgende Codebeispiel zeigt, wie Sie einen Hyperparameter-Tuning-Job mithilfe des integrierten XGBoost-Algorithmus konfigurieren. Das Codebeispiel zeigt, wie die Bereiche für die eta, alpha, min_child_weight, und max_depth-Hyperparameter definiert werden können. Weitere Informationen zu diesen und anderen Hyperparametern finden Sie unter XGBoost-Parameter.

In diesem Codebeispiel findet die Zielmetrik für den Hyperparameter-Tuning-Job die Hyperparameter-Konfiguration, die maximiert. validation:auc SageMaker Integrierte Algorithmen schreiben die Zielmetrik automatisch in Logs. CloudWatch Das folgende Code-Beispiel zeigt auch, wie man ein RandomSeed setzt.

tuning_job_config = { "ParameterRanges": { "CategoricalParameterRanges": [], "ContinuousParameterRanges": [ { "MaxValue": "1", "MinValue": "0", "Name": "eta" }, { "MaxValue": "2", "MinValue": "0", "Name": "alpha" }, { "MaxValue": "10", "MinValue": "1", "Name": "min_child_weight" } ], "IntegerParameterRanges": [ { "MaxValue": "10", "MinValue": "1", "Name": "max_depth" } ] }, "ResourceLimits": { "MaxNumberOfTrainingJobs": 20, "MaxParallelTrainingJobs": 3 }, "Strategy": "Bayesian", "HyperParameterTuningJobObjective": { "MetricName": "validation:auc", "Type": "Maximize" }, "RandomSeed" : 123 }

Konfigurieren der Trainingsaufträge

Der Hyperparameter-Tuning-Job startet Trainingsjobs, um eine optimale Konfiguration von Hyperparametern zu finden. Diese Trainingsjobs sollten mithilfe der SageMaker CreateHyperParameterTuningJobAPI konfiguriert werden.

Um die Trainingsjobs zu konfigurieren, definieren Sie ein JSON-Objekt und übergeben es als Wert des in CreateHyperParameterTuningJob enthaltenen TrainingJobDefinition Parameters.

In diesem JSON-Objekt können Sie folgende Formen angeben:

  • AlgorithmSpecification– Der Registry-Pfad des Docker-Images, das den Trainingsalgorithmus und die zugehörigen Metadaten enthält. Um einen Algorithmus zu spezifizieren, können Sie Ihren eigenen benutzerdefinierten Algorithmus in einem Docker-Container oder einen SageMaker integrierten Algorithmus (erforderlich) verwenden.

  • InputDataConfig– Die Eingabekonfiguration, einschließlich der ChannelNameContentType, und der Datenquelle für Ihre Trainings- und Testdaten (erforderlich).

  • InputDataConfig– Die Eingabekonfiguration, einschließlich der ChannelNameContentType, und Datenquelle für Ihre Trainings- und Testdaten (erforderlich).

  • Speicherort für die Ausgabe des Algorithmus. Geben Sie den S3-Bucket an, in dem die Ausgabe der Trainingsaufträge gespeichert werden soll.

  • RoleArn— Der Amazon-Ressourcenname (ARN) einer AWS Identity and Access Management (IAM) -Rolle, die zur Ausführung von Aufgaben SageMaker verwendet wird. Zu den Aufgaben gehören das Lesen von Eingabedaten, das Herunterladen eines Docker-Images, das Schreiben von Modellartefakten in einen S3-Bucket, das Schreiben von Protokollen in Amazon CloudWatch Logs und das Schreiben von Metriken in Amazon CloudWatch (erforderlich).

  • StoppingCondition– Die maximale Laufzeit in Sekunden, die ein Trainingsjob ausführen kann, bevor er gestoppt wird. Dieser Wert sollte größer sein als die Zeit, die zum Trainieren Ihres Modells benötigt wird (erforderlich).

  • MetricDefinitions– Der Name und der reguläre Ausdruck, der alle Metriken definiert, die von den Trainingsjobs ausgegeben werden. Definieren Sie Metriken nur dann, wenn Sie einen benutzerdefinierten Trainingsalgorithmus verwenden. Das Beispiel im folgenden Code verwendet einen integrierten Algorithmus, für den bereits Metriken definiert sind. Informationen zum Definieren von Metriken finden Sie unter Definieren von Metriken.

  • TrainingImage– Das Docker-Container-Image, das den Trainingsalgorithmus spezifiziert (optional).

  • StaticHyperParameters – Der Name und die Werte von Hyperparametern, die im Abstimmungsauftrag nicht abgestimmt werden (optional).

Im folgenden Codebeispiel werden statische Werte für die eval_metric, num_round, objective, rate_drop, und tweedie_variance_power Parameter des Verwenden Sie den XGBoost-Algorithmus mit Amazon SageMaker integrierten Algorithmus festgelegt.

SageMaker Python SDK v1
from sagemaker.amazon.amazon_estimator import get_image_uri training_image = get_image_uri(region, 'xgboost', repo_version='1.0-1') s3_input_train = 's3://{}/{}/train'.format(bucket, prefix) s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix) training_job_definition = { "AlgorithmSpecification": { "TrainingImage": training_image, "TrainingInputMode": "File" }, "InputDataConfig": [ { "ChannelName": "train", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_train } } }, { "ChannelName": "validation", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_validation } } } ], "OutputDataConfig": { "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix) }, "ResourceConfig": { "InstanceCount": 2, "InstanceType": "ml.c4.2xlarge", "VolumeSizeInGB": 10 }, "RoleArn": role, "StaticHyperParameters": { "eval_metric": "auc", "num_round": "100", "objective": "binary:logistic", "rate_drop": "0.3", "tweedie_variance_power": "1.4" }, "StoppingCondition": { "MaxRuntimeInSeconds": 43200 } }
SageMaker Python SDK v2
training_image = sagemaker.image_uris.retrieve('xgboost', region, '1.0-1') s3_input_train = 's3://{}/{}/train'.format(bucket, prefix) s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix) training_job_definition = { "AlgorithmSpecification": { "TrainingImage": training_image, "TrainingInputMode": "File" }, "InputDataConfig": [ { "ChannelName": "train", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_train } } }, { "ChannelName": "validation", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_validation } } } ], "OutputDataConfig": { "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix) }, "ResourceConfig": { "InstanceCount": 2, "InstanceType": "ml.c4.2xlarge", "VolumeSizeInGB": 10 }, "RoleArn": role, "StaticHyperParameters": { "eval_metric": "auc", "num_round": "100", "objective": "binary:logistic", "rate_drop": "0.3", "tweedie_variance_power": "1.4" }, "StoppingCondition": { "MaxRuntimeInSeconds": 43200 } }

Benennen und Starten des Hyperparameter-Optimierungsauftrags

Nachdem Sie den Hyperparameter-Tuning-Job konfiguriert haben, können Sie ihn starten, indem Sie die CreateHyperParameterTuningJobAPI aufrufen. Das folgende Codebeispiel verwendet tuning_job_config und training_job_definition. Diese wurden in den beiden vorherigen Codebeispielen definiert, um einen Hyperparameter-Tuning-Job zu erstellen.

tuning_job_name = "MyTuningJob" smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = tuning_job_name, HyperParameterTuningJobConfig = tuning_job_config, TrainingJobDefinition = training_job_definition)

Anzeigen des Status der Trainingsaufträge

So zeigen Sie den Status der Trainingsaufträge an, die der Hyperparameter-Optimierungsauftrag gestartet hat
  1. Wählen Sie in der Liste der Hyperparameter-Optimierungsaufträge den Auftrag aus, den Sie gestartet haben.

  2. Wählen Sie Training Jobs (Trainingsaufträge) aus.

  3. Zeigen Sie den Status der einzelnen Trainingsaufträge an. Um weitere Details zu einem Auftrag einzusehen, wählen Sie ihn aus der Liste der Trainingsaufträge aus. Um eine Übersicht zum Status aller Trainingsaufträge, die der Hyperparameter-Optimierungsauftrag gestartet hat, anzuzeigen, beziehen Sie sich auf den Training job status counter (Zähler zum Status von Trainingsaufträgen).

    Ein Trainingsauftrag kann folgende Status haben:

    • Completed– Der Trainingsauftrag wurde erfolgreich abgeschlossen.

    • InProgress– Der Trainingsauftrag ist im Gange.

    • Stopped– Der Trainingsauftrag wurde manuell angehalten, bevor er abgeschlossen wurde.

    • Failed (Retryable)– Der Trainingsauftrag ist fehlgeschlagen, kann aber erneut versucht werden. Ein fehlgeschlagener Trainingsauftrag kann nur wiederholt werden, wenn er aufgrund eines internen Dienstfehlers fehlgeschlagen ist.

    • Failed (Non-retryable)– Der Trainingsauftrag ist fehlgeschlagen und kann nicht erneut versucht werden. Ein fehlgeschlagener Trainingsauftrag kann nicht wiederholt werden, wenn ein Client-Fehler auftritt.

    Anmerkung

    Hyperparameter-Optimierungsaufträge können gestoppt und die zugrunde liegenden Ressourcen gelöscht werden, aber die Aufträge selbst können nicht gelöscht werden.

Anzeigen des optimalen Trainingsauftrags

Ein Hyperparameter-Optimierungsauftrag verwendet zur Auswertung von Trainingsaufträgen die objektive Metrik, die jeder Trainingsauftrag zurückgibt. Während der Hyperparameter-Optimierungsauftrag in Bearbeitung ist, ist der optimale Trainingsauftrag derjenige, der bisher die beste objektive Metrik zurückgegeben hat. Sobald der Hyperparameter-Optimierungsauftrag abgeschlossen ist, ist der optimale Trainingsauftrag derjenige, der die beste objektive Metrik zurückgegeben hat.

Um den optimalen Trainingsauftrag anzuzeigen, wählen Sie Best training job (Optimaler Trainingsauftrag) aus.

Um den besten Schulungsjob als Modell bereitzustellen, das Sie an einem SageMaker Endpunkt hosten können, wählen Sie Create model.

Nächster Schritt

Bereinigen