Passen Sie die Hyperparameter eines Modells für maschinelles Lernen an SageMaker - AWS Step Functions

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.

Passen Sie die Hyperparameter eines Modells für maschinelles Lernen an SageMaker

In diesem Beispielprojekt wird die Verwendung SageMaker zur Optimierung der Hyperparameter eines Modells für maschinelles Lernen und zur Batch-Transformation eines Testdatensatzes demonstriert.

In diesem Projekt verwendet Step Functions eine Lambda-Funktion, um einen Amazon S3 S3-Bucket mit einem Testdatensatz zu versorgen. Anschließend erstellt es mithilfe der SageMakerServiceintegration einen Hyperparameter-Tuning-Job. Anschließend extrahiert es mithilfe einer Lambda-Funktion den Datenpfad, speichert das Optimierungsmodell, extrahiert den Modellnamen und führt dann einen Batch-Transformationsjob aus, um Inferenzen durchzuführen. SageMaker

Weitere Informationen zu SageMaker Step Functions Functions-Dienstintegrationen finden Sie im Folgenden:

Anmerkung

Für dieses Beispielprojekt können Gebühren anfallen.

Für neue AWS Für Benutzer ist ein kostenloses Nutzungskontingent verfügbar. Im Rahmen dieses Kontingents sind die Services bis zu einem bestimmten Nutzungsumfang kostenlos. Weitere Informationen zur AWS Kosten und das kostenlose Kontingent, siehe SageMakerPreise.

Schritt 1: Erstellen Sie die Zustandsmaschine

  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie Create State Machine.

  2. Geben Sie Tune a machine learning model etwas in das Suchfeld ein und wählen Sie dann aus den zurückgegebenen Suchergebnissen die Option Modell für maschinelles Lernen optimieren aus.

  3. Wählen Sie Next (Weiter), um fortzufahren.

  4. Wählen Sie „Demo ausführen“, um ein schreibgeschütztes System und einen ready-to-deploy Workflow zu erstellen, oder wählen Sie „Darauf aufbauen“, um eine bearbeitbare Zustandsmaschinen-Definition zu erstellen, auf der Sie aufbauen und später bereitstellen können.

    Dieses Beispielprojekt stellt die folgenden Ressourcen bereit:

    • Drei AWS Lambda Funktionen

    • Ein Amazon Simple Storage Service (Amazon S3)-Bucket

    • Importieren in &S3; AWS Step Functions Zustandsautomat

    • Verwandt AWS Identity and Access Management (IAM) Rollen

    Die folgende Abbildung zeigt das Workflow-Diagramm für das Beispielprojekt „Modell für maschinelles Lernen optimieren“:

    Workflow-Diagramm des Beispielprojekts „Modell für maschinelles Lernen optimieren“.
  5. Wählen Sie Vorlage verwenden, um mit Ihrer Auswahl fortzufahren.

Die nächsten Schritte hängen von Ihrer vorherigen Auswahl ab:

  1. Führen Sie eine Demo durch — Sie können den Status Machine überprüfen, bevor Sie ein schreibgeschütztes Projekt mit Ressourcen erstellen, die bereitgestellt werden von AWS CloudFormation zu Ihrem AWS-Konto.

    Sie können sich die State-Machine-Definition ansehen. Wenn Sie bereit sind, wählen Sie Deploy and run, um das Projekt bereitzustellen und die Ressourcen zu erstellen.

    Die Bereitstellung kann bis zu 10 Minuten dauern, bis Ressourcen und Berechtigungen erstellt sind. Sie können den Stack-ID-Link verwenden, um den Fortschritt zu überwachen AWS CloudFormation.

    Nach Abschluss der Bereitstellung sollte Ihre neue Zustandsmaschine in der Konsole angezeigt werden.

  2. Darauf aufbauen — Sie können die Workflow-Definition überprüfen und bearbeiten. Möglicherweise müssen Sie Werte für Platzhalter im Beispielprojekt festlegen, bevor Sie versuchen, Ihren benutzerdefinierten Workflow auszuführen.

Anmerkung

Für Dienste, die für Ihr Konto bereitgestellt werden, können Standardgebühren anfallen.

Schritt 2: Führen Sie die Zustandsmaschine aus

  1. Wählen Sie auf der Seite State Machines Ihr Beispielprojekt aus.

  2. Wählen Sie auf der Seite mit dem Beispielprojekt die Option Ausführung starten aus.

  3. Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:

    1. (Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.

      ASCIINichtnamen und Protokollierung

      Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Beschriftungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.

    2. (Optional) Geben Sie im Eingabefeld die Eingabewerte als einJSON. Sie können diesen Schritt überspringen, wenn Sie eine Demo ausführen.

    3. Wählen Sie Start execution (Ausführung starten) aus.

    Die Step Functions Functions-Konsole leitet Sie zu einer Seite mit den Ausführungsdetails weiter, auf der Sie Status in der Diagrammansicht auswählen können, um die zugehörigen Informationen im Einzelheiten zu den Schritten Bereich zu untersuchen.

Code des Zustandsautomaten aus diesem Beispiel

Die Zustandsmaschine in diesem Beispielprojekt ist in SageMaker und integriert AWS Lambda indem Parameter direkt an diese Ressourcen übergeben werden und ein Amazon S3 S3-Bucket für die Trainingsdatenquelle und -ausgabe verwendet wird.

Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Lambda und SageMaker steuert.

Weitere Informationen darüber, wie AWS Step Functions kann andere kontrollieren AWS Dienstleistungen, sieheIntegration von Diensten mit Step Functions.

{ "StartAt": "Generate Training Dataset", "States": { "Generate Training Dataset": { "Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageMa-LambdaForDataGeneration-1TF67BUE5A12U", "Type": "Task", "Next": "HyperparameterTuning (XGBoost)" }, "HyperparameterTuning (XGBoost)": { "Resource": "arn:aws:states:::sagemaker:createHyperParameterTuningJob.sync", "Parameters": { "HyperParameterTuningJobName.$": "$.body.jobName", "HyperParameterTuningJobConfig": { "Strategy": "Bayesian", "HyperParameterTuningJobObjective": { "Type": "Minimize", "MetricName": "validation:rmse" }, "ResourceLimits": { "MaxNumberOfTrainingJobs": 2, "MaxParallelTrainingJobs": 2 }, "ParameterRanges": { "ContinuousParameterRanges": [{ "Name": "alpha", "MinValue": "0", "MaxValue": "1000", "ScalingType": "Auto" }, { "Name": "gamma", "MinValue": "0", "MaxValue": "5", "ScalingType": "Auto" } ], "IntegerParameterRanges": [{ "Name": "max_delta_step", "MinValue": "0", "MaxValue": "10", "ScalingType": "Auto" }, { "Name": "max_depth", "MinValue": "0", "MaxValue": "10", "ScalingType": "Auto" } ] } }, "TrainingJobDefinition": { "AlgorithmSpecification": { "TrainingImage": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest", "TrainingInputMode": "File" }, "OutputDataConfig": { "S3OutputPath": "s3://amzn-s3-demo-bucket/models" }, "StoppingCondition": { "MaxRuntimeInSeconds": 86400 }, "ResourceConfig": { "InstanceCount": 1, "InstanceType": "ml.m4.xlarge", "VolumeSizeInGB": 30 }, "RoleArn": "arn:aws:iam::012345678912:role/StepFunctionsSample-SageM-SageMakerAPIExecutionRol-1MNH1VS5CGGOG", "InputDataConfig": [{ "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": "s3://amzn-s3-demo-bucket/csv/train.csv" } }, "ChannelName": "train", "ContentType": "text/csv" }, { "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": "s3://amzn-s3-demo-bucket/csv/validation.csv" } }, "ChannelName": "validation", "ContentType": "text/csv" }], "StaticHyperParameters": { "precision_dtype": "float32", "num_round": "2" } } }, "Type": "Task", "Next": "Extract Model Path" }, "Extract Model Path": { "Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelPath-V0R37CVARUS9", "Type": "Task", "Next": "HyperparameterTuning - Save Model" }, "HyperparameterTuning - Save Model": { "Parameters": { "PrimaryContainer": { "Image": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest", "Environment": {}, "ModelDataUrl.$": "$.body.modelDataUrl" }, "ExecutionRoleArn": "arn:aws:iam::012345678912:role/StepFunctionsSample-SageM-SageMakerAPIExecutionRol-1MNH1VS5CGGOG", "ModelName.$": "$.body.bestTrainingJobName" }, "Resource": "arn:aws:states:::sagemaker:createModel", "Type": "Task", "Next": "Extract Model Name" }, "Extract Model Name": { "Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelName-8FUOB30SM5EM", "Type": "Task", "Next": "Batch transform" }, "Batch transform": { "Type": "Task", "Resource": "arn:aws:states:::sagemaker:createTransformJob.sync", "Parameters": { "ModelName.$": "$.body.jobName", "TransformInput": { "CompressionType": "None", "ContentType": "text/csv", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://amzn-s3-demo-bucket/csv/test.csv" } } }, "TransformOutput": { "S3OutputPath": "s3://amzn-s3-demo-bucket/output" }, "TransformResources": { "InstanceCount": 1, "InstanceType": "ml.m4.xlarge" }, "TransformJobName.$": "$.body.jobName" }, "End": true } } }

Für Informationen zur Konfiguration IAM bei der Verwendung von Step Functions mit anderen AWS Dienste finden Sie unterSo generiert Step Functions IAM Richtlinien für integrierte Dienste.

IAMBeispiele

Diese Beispiele AWS Identity and Access Management (IAM) Die durch das Beispielprojekt generierten Richtlinien beinhalten die geringsten Rechte, die für die Ausführung der Zustandsmaschine und der zugehörigen Ressourcen erforderlich sind. Wir empfehlen, dass Sie nur die Berechtigungen in Ihre IAM Richtlinien aufnehmen, die erforderlich sind.

Die folgende IAM Richtlinie ist an die Zustandsmaschine angehängt und ermöglicht der Ausführung der Zustandsmaschine den Zugriff auf die erforderlichen SageMaker Lambda- und Amazon S3 S3-Ressourcen.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:CreateHyperParameterTuningJob", "sagemaker:DescribeHyperParameterTuningJob", "sagemaker:StopHyperParameterTuningJob", "sagemaker:ListTags", "sagemaker:CreateModel", "sagemaker:CreateTransformJob", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageMa-LambdaForDataGeneration-1TF67BUE5A12U", "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelPath-V0R37CVARUS9", "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelName-8FUOB30SM5EM" ], "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule", "arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule", "arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTuningJobsRule" ], "Effect": "Allow" } ] }

Auf die folgende IAM Richtlinie wird in den HyperparameterTuning Feldern TrainingJobDefinition und des HyperparameterTuning Bundesstaates verwiesen.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "sagemaker:DescribeHyperParameterTuningJob", "sagemaker:StopHyperParameterTuningJob", "sagemaker:ListTags" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Effect": "Allow" }, { "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Effect": "Allow" } ] }

Die folgende IAM Richtlinie ermöglicht es der Lambda-Funktion, den Amazon S3 S3-Bucket mit Beispieldaten zu versorgen.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Effect": "Allow" } ] }

Für Informationen zur Konfiguration IAM bei der Verwendung von Step Functions mit anderen AWS Dienste finden Sie unterSo generiert Step Functions IAM Richtlinien für integrierte Dienste.