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.
Einen Schritt hinzufügen
Im Folgenden werden die Anforderungen der einzelnen Schritttypen beschrieben und ein Beispiel für die Implementierung des Schritts sowie die Vorgehensweise zum Hinzufügen des Schritts zu einer Pipeline aufgeführt. Dabei handelt es sich nicht um funktionale Implementierungen, da sie nicht die benötigten Ressourcen und Eingaben bereitstellen. Ein Tutorial, das diese Schritte implementiert, finden Sie unter Pipeline-Aktionen.
Anmerkung
Sie können auch einen Schritt aus Ihrem lokalen Machine-Learning-Code erstellen, indem Sie ihn mit dem @step-Decorator in einen Pipelines-Schritt konvertieren. Weitere Informationen finden Sie unter @step Decorator.
Amazon SageMaker Pipelines unterstützt die folgenden Schritttypen:
@step Decorator
Wenn Sie einen benutzerdefinierten ML-Job orchestrieren möchten, der erweiterte SageMaker KI-Funktionen oder andere AWS Dienste in der Drag-and-Drop-Pipelines-Benutzeroberfläche nutzt, verwenden Sie die. Codeschritt ausführen
Sie können mithilfe des @step-Decorators einen Schritt aus lokalem Machine-Learning-Code erstellen. Nachdem Sie Ihren Code getestet haben, können Sie die Funktion Schritt für Schritt in eine SageMaker AI-Pipeline konvertieren, indem Sie sie mit dem Decorator kommentieren. @step Pipelines erstellt eine Pipeline und führt sie aus, wenn Sie die Ausgabe der mit @step -dekorierten Funktion als Schritt an Ihre Pipeline übergeben. Sie können auch eine mehrstufige DAG-Pipeline erstellen, die eine oder mehrere @step dekorierte Funktionen sowie herkömmliche SageMaker AI-Pipeline-Schritte enthält. Weitere Informationen zum Erstellen eines Steps mit @step-Decorator finden Sie unter Lift-and-shift Python-Code mit dem @step -Decorator.
In der Drag-and-Drop-Benutzeroberfläche von Pipelines können Sie den Schritt „Code ausführen“ verwenden, um Ihren eigenen Code als Pipeline-Schritt auszuführen. Sie können eine Python-Funktion, ein Skript oder ein Notebook hochladen, das als Teil Ihrer Pipeline ausgeführt werden soll. Sie sollten diesen Schritt verwenden, wenn Sie einen benutzerdefinierten ML-Job orchestrieren möchten, der erweiterte SageMaker KI-Funktionen oder andere Dienste nutzt. AWS
Der Schritt „Code ausführen“ lädt Dateien in Ihren standardmäßigen Amazon S3-Bucket für Amazon AI hoch. SageMaker Für diesen Bucket sind möglicherweise nicht die erforderlichen CORS-Berechtigungen ( Cross-Origin Resource Sharing) festgelegt. Weitere Informationen zum Konfigurieren der CORS-Berechtigungen finden Sie unter CORS-Anforderung für Eingabebilddaten.
Der Schritt „Code ausführen“ verwendet einen SageMaker Amazon-Schulungsauftrag, um Ihren Code auszuführen. Stellen Sie sicher, dass Ihre IAM-Rolle über die sagemaker:DescribeTrainingJob und sagemaker:CreateTrainingJob API-Berechtigungen verfügt. Weitere Informationen zu allen erforderlichen Berechtigungen für Amazon SageMaker AI und deren Einrichtung finden Sie unterAmazon SageMaker AI API-Berechtigungen: Referenz für Aktionen, Berechtigungen und Ressourcen.
Gehen Sie wie folgt vor, um einer Pipeline mithilfe des Pipeline Designers einen Schritt zum Ausführen von Code hinzuzufügen:
-
Öffnen Sie die Amazon SageMaker Studio-Konsole, indem Sie den Anweisungen unter folgenStarten Sie Amazon SageMaker Studio.
-
Wählen Sie im linken Navigationsbereich die Option Pipelines aus.
-
Wählen Sie Erstellen aus.
-
Wählen Sie Leer.
-
Wählen Sie in der linken Seitenleiste „Code ausführen“ und ziehen Sie ihn auf die Arbeitsfläche.
-
Wählen Sie auf der Arbeitsfläche den Schritt Code ausführen aus, den Sie hinzugefügt haben.
-
Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs Einstellungen und Details aus.
-
Sie können eine einzelne Datei hochladen, um sie auszuführen, oder einen komprimierten Ordner hochladen, der mehrere Artefakte enthält.
-
Für das Hochladen einzelner Dateien können Sie optionale Parameter für Notebooks, Python-Funktionen oder Skripte angeben.
-
Bei der Bereitstellung von Python-Funktionen muss ein Handler im folgenden Format bereitgestellt werden
file.py:<function_name> -
Für komprimierte Ordner-Uploads müssen relative Pfade zu Ihrem Code angegeben werden, und Sie können optional Pfade zu einer
requirements.txtDatei oder einem Initialisierungsskript innerhalb des komprimierten Ordners angeben. -
Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem von Ihnen hinzugefügten Schritt „Code ausführen“ steht, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Schritt „Code ausführen“, um eine Kante zu erstellen.
-
Wenn die Zeichenfläche einen Schritt enthält, der unmittelbar auf den Schritt „Code ausführen“ folgt, klicken Sie auf den Schritt „Code ausführen“ und ziehen Sie den Cursor vom Schritt „Code ausführen“ zu dem Schritt, um eine Kante zu erstellen. Ausgaben von Execute-Codeschritten können für Python-Funktionen referenziert werden.
Verwenden Sie einen Verarbeitungsschritt, um einen Verarbeitungsauftrag für die Datenverarbeitung zu erstellen. Weitere Informationen zur Verarbeitung von Auftrags finden Sie unter Daten verarbeiten und Modelle auswerten.
Sie verwenden einen Trainingsschritt, um einen Trainingsjob zum Trainieren eines Modells zu erstellen. Weitere Informationen zu Trainingsjobs finden Sie unter Train a Model with Amazon SageMaker AI.
Ein Trainingsschritt erfordert eine ModelTrainer, sowie Trainings- und Validierungsdateneingaben.
Sie verwenden einen Optimierungsschritt, um einen Hyperparameter-Tuning-Auftrag zu erstellen, der auch als Hyperparameter-Optimierung (HPO) bezeichnet wird. Ein Hyperparameter-Optimierungsauftrag führt mehrere Trainingsjobs aus, von denen jeder eine Modellversion erzeugt. Weitere Informationen zur Abstimmung der Hyperparameter finden Sie unter Automatische Modelloptimierung mit KI SageMaker.
Der Tuning-Job ist mit dem SageMaker KI-Experiment für die Pipeline verknüpft, wobei die Trainingsjobs als Versuche erstellt wurden. Weitere Informationen finden Sie unter Integration von Experimenten.
Für einen Optimierungsschritt sind Trainingseingaben von A HyperparameterTuner warm_start_config-Parameter des HyperparameterTuner angeben. Weitere Informationen zur Hyperparameteroptimierung und zum Warmstart finden Sie unter Durchführen eines Hyperparameter-Optimierungsauftrags mit Warmstart.
Sie verwenden die get_top_model_s3_uri-Methode
Wichtig
Optimierungsschritte wurden in Amazon Python SDK v2.48.0 und Amazon Studio Classic v3.8.0 eingeführt. SageMaker SageMaker Sie müssen Studio Classic aktualisieren, bevor Sie einen Optimierungsschritt verwenden, da sonst die Pipeline-DAG nicht angezeigt wird. Informationen zum Aktualisieren von Studio Classic finden Sie unter Fahren Sie Amazon SageMaker Studio Classic herunter und aktualisieren Sie es.
Das folgende Beispiel zeigt, wie man eine TuningStep-Definition erstellt.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.tuner import HyperparameterTuner from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TuningStep tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession()) step_tuning = TuningStep( name = "HPTuning", step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data")) )
Holen Sie sich die beste Modellversion
Das folgende Beispiel zeigt, wie Sie mit der get_top_model_s3_uri Methode die beste Modellversion aus dem Tuning-Auftrag abrufen können. Höchstens die 50 leistungsstärksten Versionen sind in einer Rangfolge nach folgenden Kriterien verfügbar. HyperParameterTuningJobObjective Das Argument top_k ist ein Index für die Versionen, wobei top_k=0 die leistungsstärkste und top_k=49 die leistungsschwächste Version ist.
best_model = Model( image_uri=image_uri, model_data=step_tuning.get_top_model_s3_uri( top_k=0, s3_bucket=sagemaker_session.default_bucket() ), ... )
Weitere Informationen zu den Anforderungen für Tuning-Schritte finden Sie unter sagemaker.workflow.steps. TuningStep
Fine-tuning trainiert ein vortrainiertes Fundamentmodell von Amazon SageMaker JumpStart anhand eines neuen Datensatzes. Dieser Prozess, der auch als Transferlernen bezeichnet wird, kann genaue Modelle mit kleineren Datensätzen und weniger Trainingszeit erzeugen. Bei der Feinabstimmung eines Modells können Sie den Standarddatensatz verwenden oder eigene Daten auswählen. Weitere Informationen zur Feinabstimmung eines Fundamentmodells finden Sie JumpStart unter. Fine-Tune ein Modell
Bei der Feinabstimmung wird Ihr Modell im Rahmen eines SageMaker Amazon-Schulungsauftrags angepasst. Stellen Sie sicher, dass Ihre IAM-Rolle über die erforderlichen sagemaker:DescribeTrainingJob und sagemaker:CreateTrainingJob API-Berechtigungen verfügt, um den Feinsteuerungsjob in Ihrer Pipeline auszuführen. Weitere Informationen zu den erforderlichen Berechtigungen für Amazon SageMaker AI und deren Einrichtung finden Sie unterAmazon SageMaker AI API-Berechtigungen: Referenz für Aktionen, Berechtigungen und Ressourcen.
Gehen Sie wie folgt vor, um Ihrer Pipeline mithilfe des Drag-and-Drop-Editors einen Fine-tune Modellschritt hinzuzufügen:
-
Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter Starten Sie Amazon SageMaker Studio folgen.
-
Wählen Sie im linken Navigationsbereich die Option Pipelines aus.
-
Wählen Sie Erstellen aus.
-
Wählen Sie Leer.
-
Wählen Sie in der linken Seitenleiste ein Fine-tune Modell aus und ziehen Sie es auf die Arbeitsfläche.
-
Wählen Sie auf der Leinwand den Fine-tune Modellschritt aus, den Sie hinzugefügt haben.
-
Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs Einstellungen und Details aus.
-
Wenn die Arbeitsfläche einen Schritt enthält, der dem hinzugefügten Fine-tune Modellschritt unmittelbar vorausgeht, klicken Sie und ziehen Sie den Cursor vom Schritt zum Fine-tune Modellschritt, um eine Kante zu erstellen.
-
Wenn die Leinwand einen Schritt enthält, der unmittelbar auf den von Ihnen hinzugefügten Fine-tune Modellschritt folgt, klicken Sie und ziehen Sie den Cursor vom Fine-tune Modellschritt zum Schritt, um eine Kante zu erstellen.
Verwenden Sie die AutoML
Anmerkung
Derzeit unterstützt der AutoML-Schritt nur den Ensembling-Trainingsmodus.
Das folgende Beispiel zeigt, wie eine Definition mit AutoMLStep erstellt werden kann.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.automl_step import AutoMLStep pipeline_session = PipelineSession() auto_ml = AutoML(..., role="<role>", target_attribute_name="my_target_attribute_name", mode="ENSEMBLING", sagemaker_session=pipeline_session) input_training = AutoMLInput( inputs="s3://amzn-s3-demo-bucket/my-training-data", target_attribute_name="my_target_attribute_name", channel_type="training", ) input_validation = AutoMLInput( inputs="s3://amzn-s3-demo-bucket/my-validation-data", target_attribute_name="my_target_attribute_name", channel_type="validation", ) step_args = auto_ml.fit( inputs=[input_training, input_validation] ) step_automl = AutoMLStep( name="AutoMLStep", step_args=step_args, )
Holen Sie sich die beste Modellversion
Der AutoML-Schritt trainiert automatisch mehrere Modellkandidaten. Rufen Sie das Modell mit der besten Zielmetrik aus dem AutoML-Auftrag ab, indem Sie die get_best_auto_ml_model-Methode wie folgt verwenden. Sie müssen auch ein IAM verwenden, role um auf Modellartefakte zuzugreifen.
best_model = step_automl.get_best_auto_ml_model(role=<role>)
Weitere Informationen finden Sie im https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.automl_step.AutoMLStep
Verwenden Sie aModelStep, um ein SageMaker KI-Modell zu erstellen oder zu registrieren. Weitere Informationen zu den ModelStep Anforderungen finden Sie unter sagemaker.workflow.model_step. ModelStep
Erstellen eines Modells
Sie können a verwendenModelStep, um ein SageMaker KI-Modell zu erstellen. A ModelStep erfordert Modellartefakte und Informationen über den SageMaker AI-Instanztyp, den Sie zum Erstellen des Modells verwenden müssen. Weitere Informationen zu SageMaker KI-Modellen finden Sie unter Trainieren eines Modells mit Amazon SageMaker AI.
Das folgende Beispiel zeigt, wie man eine ModelStep-Definition erstellt.
from sagemaker.core.workflow.pipeline_context import PipelineSession from sagemaker.core.resources import Model from sagemaker.mlops.workflow.model_step import ModelStep step_train = TrainingStep(...) model = Model( image_uri=pytorch_estimator.training_image_uri(), model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, sagemaker_session=PipelineSession(), role=role, ) step_model_create = ModelStep( name="MyModelCreationStep", step_args=model.create(instance_type="ml.m5.xlarge"), )
Registrieren eines Modells
Sie können a verwendenModelStep, um a sagemaker.model.Model oder a sagemaker.pipeline.PipelineModel bei der Amazon SageMaker Model Registry zu registrieren. Ein PipelineModel stellt eine Inferenzpipeline dar, ein Modell, das aus einer linearen Abfolge von Containern besteht, die Inferenzanforderungen verarbeiten. Weitere Informationen über die Registrierung eines Modells finden Sie unter Bereitstellung von Modellregistrierung mit Model Registry.
Das folgende Beispiel zeigt, wie Sie eine ModelStep erstellen, die eine PipelineModel registriert.
import time from sagemaker.core.workflow.pipeline_context import PipelineSession from sagemaker.core.resources import Model from sagemaker.core import image_uris pipeline_session = PipelineSession() code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix) sklearn_model = SKLearnModel( model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=pipeline_session, py_version='py3' ) xgboost_model = XGBoostModel( model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=pipeline_session, role=role ) from sagemaker.mlops.workflow.model_step import ModelStep from sagemaker.core.pipeline_model import PipelineModel pipeline_model = PipelineModel( models=[sklearn_model, xgboost_model], role=role,sagemaker_session=pipeline_session, ) register_model_step_args = pipeline_model.register( content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name='sipgroup', ) step_model_registration = ModelStep( name="AbaloneRegisterModel", step_args=register_model_step_args, )
Sie verwenden den Schritt Modell erstellen, um ein SageMaker KI-Modell zu erstellen. Weitere Informationen zu SageMaker KI-Modellen finden Sie unterTrainiere ein Modell mit Amazon SageMaker.
Für den Schritt „Modell erstellen“ sind Modellartefakte und Informationen über den SageMaker AI-Instanztyp erforderlich, den Sie zum Erstellen des Modells verwenden müssen. Die folgenden Beispiele zeigen, wie Sie eine Schrittdefinition für das Erstellen eines Modells erstellen. Weitere Informationen zu den Anforderungen für den Schritt „Modell erstellen“ finden Sie unter sagemaker.workflow.steps. CreateModelStep
Der Schritt Modell registrieren registriert ein Modell in der SageMaker Modellregistrierung.
Gehen Sie im Pipeline Designer mithilfe des Schritts Modell bereitstellen (Endpunkt) vor, um Ihr Modell auf einem Endpunkt bereitzustellen. Sie können einen neuen Endpunkt erstellen oder einen vorhandenen Endpunkt verwenden. Real-time Inferenz ist ideal für Inferenz-Workloads, bei denen Sie interaktive Echtzeitanforderungen mit niedriger Latenz haben. Sie können Ihr Modell für SageMaker KI-Hosting-Dienste bereitstellen und erhalten einen Echtzeit-Endpunkt, der für Inferenzen verwendet werden kann. Diese Endgeräte werden vollständig verwaltet und unterstützen Auto Scaling. Weitere Informationen zur Echtzeit-Inferenz in SageMaker KI finden Sie unter. Real-time Folgerung
Bevor Sie Ihrer Pipeline einen Schritt zum Bereitstellen eines Modells hinzufügen, vergewissern Sie sich, dass Ihre IAM-Rolle über die folgenden Berechtigungen verfügt:
-
sagemaker:CreateModel -
sagemaker:CreateEndpointConfig -
sagemaker:CreateEndpoint -
sagemaker:UpdateEndpoint -
sagemaker:DescribeModel -
sagemaker:DescribeEndpointConfig -
sagemaker:DescribeEndpoint
Weitere Informationen zu allen erforderlichen Berechtigungen für SageMaker KI und deren Einrichtung finden Sie unterAmazon SageMaker AI API-Berechtigungen: Referenz für Aktionen, Berechtigungen und Ressourcen.
Gehen Sie wie folgt vor, um Ihrer Pipeline im Drag-and-Drop-Editor einen Schritt zur Modellbereitstellung hinzuzufügen:
-
Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter Starten Sie Amazon SageMaker Studio folgen.
-
Wählen Sie im linken Navigationsbereich die Option Pipelines aus.
-
Wählen Sie Erstellen aus.
-
Wählen Sie Leer.
-
Wählen Sie in der linken Seitenleiste Modell bereitstellen (Endpunkt) aus und ziehen Sie es auf die Leinwand.
-
Wählen Sie auf der Arbeitsfläche den Schritt Modell bereitstellen (Endpunkt) aus, den Sie hinzugefügt haben.
-
Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs Einstellungen und Details aus.
-
Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem von Ihnen hinzugefügten Schritt Modell bereitstellen (Endpunkt) liegt, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Schritt Modell bereitstellen (Endpunkt), um eine Kante zu erstellen.
-
Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den Schritt Modell bereitstellen (Endpunkt) folgt, klicken Sie auf den Schritt Modell bereitstellen (Endpunkt) und ziehen Sie den Cursor vom Schritt Modell bereitstellen (Endpunkt) auf den Schritt zum Erstellen einer Kante.
Sie verwenden einen Transformationsschritt für die Batch-Transformation, um die Inferenz für einen gesamten Datensatz durchzuführen. Weitere Informationen zur Batch-Transformation finden Sie unter Stapeltransformationen mit Inferenz-Pipelines.
Ein Transformationsschritt erfordert einen Transformator und die Daten, für die die Batch-Transformation ausgeführt werden soll. Das folgende Beispiel zeigt, wie Sie eine Transform-Schrittdefinition erstellen. Weitere Informationen zu den Anforderungen für Transform-Schritte finden Sie unter sagemaker.workflow.steps. TransformStep
Sie verwenden einen Bedingungsschritt, um den Zustand der Schritteigenschaften zu bewerten, um zu beurteilen, welche Maßnahme als Nächstes in der Pipeline ergriffen werden sollte.
Ein Bedingungsschritt erfordert:
-
Eine Liste der Bedingungen.
-
Eine Liste von Schritten, die ausgeführt werden sollen, wenn die Bedingung
trueist. -
Eine Liste von Schritten, die ausgeführt werden sollen, wenn die Bedingung
falseist.
Verwenden Sie einen Callback Schritt, um Ihrem Workflow zusätzliche Prozesse und AWS Dienste hinzuzufügen, die nicht direkt von Amazon SageMaker Pipelines bereitgestellt werden. Wenn ein Callback Schritt ausgeführt wird, erfolgt das folgende Verfahren:
-
Pipelines sendet eine Nachricht an eine vom Kunden angegebene Warteschlange von Amazon Simple Queue Service (Amazon SQS). Die Nachricht enthält ein von Pipelines generiertes Token und eine vom Kunden bereitgestellte Liste von Eingabeparametern. Nach dem Absenden der Nachricht wartet Pipelines auf eine Antwort des Kunden.
-
Der Kunde ruft die Nachricht aus der Amazon-SQS-Warteschlange ab und startet seinen benutzerdefinierten Prozess.
-
Wenn der Vorgang abgeschlossen ist, ruft der Kunde eine der folgenden APIs auf und übermittelt das von Pipelines generierte Token:
-
SendPipelineExecutionStepSuccess, zusammen mit einer Liste von Ausgabeparametern
-
SendPipelineExecutionStepFailure, zusammen mit einem Fehlergrund
-
-
Der API-Aufruf veranlasst Pipelines, entweder den Pipeline-Prozess fortzusetzen oder den Prozess fehlschlagen zu lassen.
Weitere Informationen zu den Callback Schrittanforderungen finden Sie unter sagemaker.workflow.callback_step. CallbackStep
Wichtig
CallbackDie Schritte wurden in Amazon SageMaker Python SDK v2.45.0 und Amazon SageMaker Studio Classic v3.6.2 eingeführt. Sie müssen Studio Classic aktualisieren, bevor Sie einen Callback-Schritt verwenden, sonst wird die Pipeline-DAG nicht angezeigt. Informationen zum Aktualisieren von Studio Classic finden Sie unter Fahren Sie Amazon SageMaker Studio Classic herunter und aktualisieren Sie es.
Das folgende Beispiel zeigt eine Implementierung des vorherigen Verfahrens.
from sagemaker.mlops.workflow.callback_step import CallbackStep step_callback = CallbackStep( name="MyCallbackStep", sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue", inputs={...}, outputs=[...] ) callback_handler_code = ' import boto3 import json def handler(event, context): sagemaker_client=boto3.client("sagemaker") for record in event["Records"]: payload=json.loads(record["body"]) token=payload["token"] # Custom processing # Call SageMaker AI to complete the step sagemaker_client.send_pipeline_execution_step_success( CallbackToken=token, OutputParameters={...} ) '
Anmerkung
Die Ausgabeparameter für CallbackStep sollten nicht verschachtelt sein. Wenn Sie beispielsweise ein verschachteltes Wörterbuch als Ausgabeparameter verwenden, wird das Wörterbuch als eine einzelne Zeichenfolge behandelt (z. B. {"output1": "{\"nested_output1\":\"my-output\"}"}). Wenn Sie einen verschachtelten Wert angeben und versuchen, auf einen bestimmten Ausgabeparameter zu verweisen, gibt SageMaker AI einen Client-Fehler aus, der nicht wiederholt werden kann.
Verhalten wird gestoppt
Ein Pipelineprozess wird nicht gestoppt, während ein Callback Schritt ausgeführt wird.
Wenn Sie einen Pipeline-Prozess mit einem laufenden Callback Schritt aufrufen StopPipelineExecution, sendet Pipelines eine Amazon SQS-Nachricht an die SQS-Warteschlange. Der Hauptteil der SQS-Nachricht enthält ein Statusfeld, das auf Stopping gesetzt ist. Im Folgenden wird ein Beispiel für einen SQS-Nachrichtenkörper gezeigt.
{ "token": "26vcYbeWsZ", "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a", "arguments": { "number": 5, "stringArg": "some-arg", "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv" }, "status": "Stopping" }
Es wird empfohlen, Ihrem Amazon-SQS-Nachrichtenempfänger eine Logik hinzuzufügen, um bei Empfang der Nachricht alle erforderlichen Maßnahmen (z. B. Ressourcenbereinigung) zu ergreifen. Fügen Sie dann einen Anruf zu SendPipelineExecutionStepSuccess oder hinzuSendPipelineExecutionStepFailure.
Erst wenn Pipelines einen dieser Aufrufe erhält, stoppt es den Pipeline-Prozess.
Sie verwenden einen Lambda-Schritt, um eine Funktion auszuführen. AWS Lambda Sie können eine vorhandene Lambda-Funktion ausführen, oder SageMaker AI kann eine neue Lambda-Funktion erstellen und ausführen. Wenn Sie eine vorhandene Lambda-Funktion verwenden möchten, muss sie sich in derselben AWS-Region wie die SageMaker AI-Pipeline befinden. Ein Notizbuch, das zeigt, wie ein Lambda-Schritt in einer SageMaker AI-Pipeline verwendet wird, finden Sie unter sagemaker-pipelines-lambda-step.ipynb.
Wichtig
Lambda-Schritte wurden in Amazon Python SDK v2.51.0 und Amazon Studio Classic v3.9.1 eingeführt. SageMaker SageMaker Sie müssen Studio Classic aktualisieren, bevor Sie einen Lambda-Schritt verwenden, da sonst die Pipeline-DAG nicht angezeigt wird. Informationen zum Aktualisieren von Studio Classic finden Sie unter Fahren Sie Amazon SageMaker Studio Classic herunter und aktualisieren Sie es.
SageMaker AI stellt die https://sagemaker.readthedocs.io/en/stable/api/utility/lambda_helper.htmlLambdahat die folgende Signatur.
Lambda( function_arn, # Only required argument to invoke an existing Lambda function # The following arguments are required to create a Lambda function: function_name, execution_role_arn, zipped_code_dir, # Specify either zipped_code_dir and s3_bucket, OR script s3_bucket, # S3 bucket where zipped_code_dir is uploaded script, # Path of Lambda function script handler, # Lambda handler specified as "lambda_script.lambda_handler" timeout, # Maximum time the Lambda function can run before the lambda step fails ... )
Der Sagemaker.workflow.lambda_step. LambdaSteplambda_func Lambda Um eine bestehende Lambda-Funktion aufzurufen, muss nur der Amazon Resource Name (ARN) der Funktion an function_arn übergeben werden. Wenn Sie keinen Wert für function_arn angeben, müssen Sie handler und eine der folgenden Angaben machen:
-
zipped_code_dir– Der Pfad der komprimierten Lambda-Funktions3_bucket– Amazon-S3-Bucket, wozipped_code_dirhochgeladen werden soll -
script– Der Pfad der Lambda-Funktionsskriptdatei
Das folgende Beispiel zeigt, wie eine Lambda Schrittdefinition erstellt wird, die eine vorhandene Lambda-Funktion aufruft.
from sagemaker.mlops.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda" ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )
Das folgende Beispiel zeigt, wie Sie eine Lambda Schrittdefinition erstellen, die mithilfe eines Lambda-Funktionsskripts eine Lambda-Funktion erstellt und aufruft.
from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_name="split-dataset-lambda", execution_role_arn=execution_role_arn, script="lambda_script.py", handler="lambda_script.lambda_handler", ... ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )
Eingaben und Ausgaben
Wenn Ihre Lambda Funktion Eingaben oder Ausgaben hat, müssen diese ebenfalls in Ihrem Schritt definiert werden. Lambda
Anmerkung
Eingabe- und Ausgabeparameter sollten nicht verschachtelt sein. Wenn Sie beispielsweise ein verschachteltes Wörterbuch als Ausgabeparameter verwenden, wird das Wörterbuch als eine einzelne Zeichenfolge behandelt (z. B. {"output1": "{\"nested_output1\":\"my-output\"}"}). Wenn Sie einen verschachtelten Wert angeben und später versuchen, darauf zu verweisen, wird ein Client-Fehler ausgegeben, der nicht erneut versucht werden kann.
Bei der Definition des Lambda Schritts inputs muss es sich um ein Wörterbuch mit Schlüssel-Wert-Paaren handeln. Jeder Wert des inputs Wörterbuchs muss ein primitiver Typ sein (Zeichenfolge, Ganzzahl oder Gleitkommazahl). Verschachtelte Objekte werden nicht unterstützt. Bleibt der Wert für inputs undefiniert, wird der Wert für None verwendet.
Der outputs Wert muss eine Liste von Schlüsseln sein. Diese Schlüssel beziehen sich auf ein Wörterbuch, das in der Ausgabe der Lambda Funktion definiert ist. Wie bei inputs müssen diese Schlüssel primitive Typen sein, und verschachtelte Objekte werden nicht unterstützt.
Timeout und Verhalten beim Stoppen
Die Lambda Klasse hat ein timeout Argument, das die maximale Zeit angibt, während der die Lambda-Funktion ausgeführt werden kann. Der Standardwert ist 120 Sekunden und der Höchstwert 10 Minuten. Wenn die Lambda-Funktion ausgeführt wird, wenn das Timeout erreicht ist, schlägt der Lambda-Schritt fehl. Die Lambda-Funktion wird jedoch weiterhin ausgeführt.
Ein Pipelineprozess kann nicht gestoppt werden, während ein Lambda-Schritt ausgeführt wird, da die durch den Lambda-Schritt aufgerufene Lambda-Funktion nicht gestoppt werden kann. Wenn Sie den Prozess unterbrechen, während die Lambda-Funktion ausgeführt wird, wartet die Pipeline, bis die Funktion beendet ist oder bis das Zeitlimit erreicht ist. Das hängt davon ab, was zuerst eintritt. Der Vorgang wird dann gestoppt. Wenn die Lambda-Funktion beendet wird, lautet der Status des Pipeline-Prozesses Stopped. Wenn die Zeitüberschreitung erreicht ist, lautet der Status des Pipeline-Prozesses Failed.
Sie können diesen ClarifyCheck Schritt verwenden, um die Ausgangsabweichung anhand früherer Basislinien zu überprüfen, um die Verzerrungsanalyse und die Erklärbarkeit des Modells zu verbessern. Mit der model.register() Methode können Sie dann Ihre Baselines erstellen und registrieren und die Ausgabe dieser Methode mit Modellschritt an step_args übergeben. Diese Basislinien für die Drift-Prüfung können von Amazon SageMaker Model Monitor für Ihre Modellendpunkte verwendet werden. Daher müssen Sie einen Basisvorschlag nicht separat erstellen.
Bei diesem ClarifyCheck Schritt können auch Basiswerte für die Driftprüfung aus der Modellregistrierung abgerufen werden. In diesem ClarifyCheck Schritt wird der vorgefertigte SageMaker Clarify-Container verwendet. Dieser Container bietet eine Reihe von Features zur Modellüberwachung, darunter Vorschläge für Einschränkungen und Beschränkungsvalidierung anhand einer bestimmten Baseline. Weitere Informationen finden Sie unter Vorgefertigte SageMaker Clarify-Container.
Den Schritt konfigurieren ClarifyCheck
Sie können den ClarifyCheck Schritt so konfigurieren, dass bei jeder Verwendung in einer Pipeline nur einer der folgenden Prüftypen durchgeführt wird.
-
Prüfung auf Datenverzerrung
-
Überprüfung der Modellverzerrung
-
Überprüfung der Erklärbarkeit des Modells
Dazu setzen Sie den clarify_check_config-Parameter mit einem der folgenden Prüftypwerte:
-
DataBiasCheckConfig -
ModelBiasCheckConfig -
ModelExplainabilityCheckConfig
Der ClarifyCheck Schritt startet einen Verarbeitungsjob, der den vorgefertigten SageMaker AI Clarify Container ausführt und spezielle Konfigurationen für die Prüfung und den Verarbeitungsjob erfordert. ClarifyCheckConfigund CheckJobConfig sind Hilfsfunktionen für diese Konfigurationen. Diese Hilfsfunktionen orientieren sich an der Art und Weise, wie der SageMaker Clarify-Verarbeitungsjob zur Überprüfung von Modellverzerrungen, Datenverzerrungen oder der Erklärbarkeit von Modellen vorgeht. Weitere Informationen finden Sie unter Führen Sie SageMaker Clarify Processing-Jobs für Verzerrungsanalyse und Erklärbarkeit aus.
Steuerung des Schrittverhaltens bei der Drift-Prüfung
Für diesen ClarifyCheck Schritt sind die folgenden zwei booleschen Flags erforderlich, um sein Verhalten zu steuern:
-
skip_check: Dieser Parameter gibt an, ob die Driftprüfung gegenüber der vorherigen Basislinie übersprungen wurde oder nicht. WennFalseauf gesetzt ist, muss die vorherige Basislinie des konfigurierten Prüftyps verfügbar sein. -
register_new_baseline: Dieser Parameter gibt an, ob über die SchritteigenschaftBaselineUsedForDriftCheckConstraintsauf eine neu berechnete Basislinie zugegriffen werden kann. WennFalseauf gesetzt ist, muss auch die vorherige Basislinie des konfigurierten Prüftyps verfügbar sein. Darauf kann über dieBaselineUsedForDriftCheckConstraintsEigenschaft zugegriffen werden.
Weitere Informationen finden Sie unter Basisberechnung, Erkennung von Abweichungen und Lebenszyklus mit ClarifyCheck und nach QualityCheck Schritten in Amazon SageMaker Pipelines.
Arbeiten mit Baselines
Optional können Sie angebenmodel_package_group_name, um die vorhandene Baseline zu finden. Anschließend ruft der ClarifyCheck-Schritt DriftCheckBaselines auf dem zuletzt genehmigten Modellpaket aus der Modellpaketgruppe ab.
Oder Sie können über den supplied_baseline_constraints Parameter eine vorherige Basislinie angeben. Wenn Sie sowohl model_package_group_name als auch supplied_baseline_constraints angeben, verwendet der Schritt ClarifyCheck die durch den supplied_baseline_constraints Parameter angegebene Basislinie.
Weitere Informationen zur Verwendung der ClarifyCheck Schrittanforderungen finden Sie unter sagemaker.workflow.steps. ClarifyCheckStepClarifyCheck Step in Pipelines verwendet wird, finden Sie unter https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb
Beispiel Erstellen eines ClarifyCheck-Schrittes zur Prüfung der Datenverzerrung
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.mlops.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables from sagemaker.core.clarify import DataConfig, BiasConfig from sagemaker.core.workflow.functions import Join check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="ml.c5.xlarge", volume_size_in_gb=120, sagemaker_session=sagemaker_session, ) data_bias_data_config = DataConfig( s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri, s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep']), label=0, dataset_type="text/csv", s3_analysis_config_output_path=data_bias_analysis_cfg_output_path, ) data_bias_config = BiasConfig( label_values_or_threshold=[15.0], facet_name=[8], facet_values_or_threshold=[[0.5]] ) data_bias_check_config = DataBiasCheckConfig( data_config=data_bias_data_config, data_bias_config=data_bias_config, ) data_bias_check_step = ClarifyCheckStep( name="DataBiasCheckStep", clarify_check_config=data_bias_check_config, check_job_config=check_job_config, skip_check=False, register_new_baseline=False, supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json", model_package_group_name="MyModelPackageGroup" )
Mit dem Schritt QualityCheck können Sie Baseline-Vorschläge und Drift-Checks gegen eine frühere Baseline für die Datenqualität oder die Modellqualität in einer Pipeline durchführen. Sie können dann Ihre Baselines mit der model.register()-Methode erzeugen und registrieren und die Ausgabe dieser Methode mit Modellschritt an step_args übergeben.
Model Monitor kann diese Basislinien für die Drift-Prüfung Ihrer Modellendpunkte verwenden, sodass Sie einen Basisvorschlag nicht separat erstellen müssen. Bei diesem QualityCheck Schritt können auch Basiswerte für die Driftprüfung aus der Modellregistrierung abgerufen werden. Der QualityCheck Schritt nutzt den vorgefertigten Container von Amazon SageMaker AI Model Monitor. Dieser Container verfügt über eine Reihe von Modellüberwachungsfunktionen, darunter Vorschläge für Einschränkungen, Erstellung von Statistiken und Validierung von Einschränkungen anhand einer Baseline. Weitere Informationen finden Sie unter Vorgefertigter Container von Amazon SageMaker Model Monitor.
Konfiguration des Schritts QualityCheck
Sie können den QualityCheck-Schritt so konfigurieren, dass bei jeder Verwendung in einer Pipeline nur einer der folgenden Prüftypen durchgeführt wird.
-
Überprüfung der Datenqualität
-
Modellqualitätsprüfung
Dazu setzen Sie den quality_check_config Parameter mit einem der folgenden Prüftypwerte:
-
DataQualityCheckConfig -
ModelQualityCheckConfig
In diesem QualityCheck Schritt wird ein Verarbeitungsauftrag gestartet, der den vorgefertigten Container von Model Monitor ausführt und spezielle Konfigurationen für die Prüfung und den Verarbeitungsauftrag erfordert. Die QualityCheckConfig und CheckJobConfig sind Hilfsfunktionen für diese Konfigurationen. Diese Hilfsfunktionen sind darauf abgestimmt, wie Model Monitor eine Baseline für die Überwachung der Modell- oder Datenqualität erstellt. Weitere Informationen zu den Basisvorschlägen von Model Monitor finden Sie unter Erstellen einer Baseline undErstellen einer Baseline für die Modellqualität.
Steuern des Schrittverhaltens bei der Drift-Prüfung
Für diesen QualityCheck Schritt sind die folgenden zwei booleschen Flags erforderlich, um sein Verhalten zu steuern:
-
skip_check: Dieser Parameter gibt an, ob die Driftprüfung gegenüber der vorherigen Basislinie übersprungen wurde oder nicht. WennFalseauf gesetzt ist, muss die vorherige Basislinie des konfigurierten Prüftyps verfügbar sein. -
register_new_baseline: Dieser Parameter gibt an, ob auf eine neu berechnete Basislinie über die SchritteigenschaftenBaselineUsedForDriftCheckConstraintsundBaselineUsedForDriftCheckStatistics. Ist sie aufFalseeingestellt, muss auch die vorherige Baseline der konfigurierten Prüfart verfügbar sein. Auf diese kann über die EigenschaftenBaselineUsedForDriftCheckConstraintsundBaselineUsedForDriftCheckStatisticszugegriffen werden.
Weitere Informationen finden Sie unter Basisberechnung, Erkennung von Abweichungen und Lebenszyklus mit ClarifyCheck und nach QualityCheck Schritten in Amazon SageMaker Pipelines.
Arbeiten mit Baselines
Sie können eine vorherige Baseline direkt über die supplied_baseline_constraints Parameter supplied_baseline_statistics und angeben. Sie können auch model_package_group_name und den QualityCheck-Schritt angeben, der das zuletzt genehmigte Modellpaket in der Modellpaketgruppe abruft.
Wenn Sie Folgendes angeben, verwendet der QualityCheck-Schritt die durch supplied_baseline_constraints und supplied_baseline_statistics auf dem Prüftyp des Schritts QualityCheck angegebene Baseline.
-
model_package_group_name -
supplied_baseline_constraints -
supplied_baseline_statistics
Weitere Informationen zur Verwendung der QualityCheck Schrittanforderungen finden Sie unter sagemaker.workflow.steps. QualityCheckStepQualityCheck Step in Pipelines verwendet wird, finden Sie unter https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb
Beispiel Erstellen eines QualityCheck-Schrittes zur Prüfung der Datenqualität
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.mlops.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables from sagemaker.core.model_monitor.dataset_format import DatasetFormat from sagemaker.core.workflow.functions import Join check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="ml.c5.xlarge", volume_size_in_gb=120, sagemaker_session=sagemaker_session, ) data_quality_check_config = DataQualityCheckConfig( baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri, dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"), output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep']) ) data_quality_check_step = QualityCheckStep( name="DataQualityCheckStep", skip_check=False, register_new_baseline=False, quality_check_config=data_quality_check_config, check_job_config=check_job_config, supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json", supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json", model_package_group_name="MyModelPackageGroup" )
Verwenden Sie den Amazon SageMaker Pipelines EMR-Schritt, um:
-
Verarbeiten Sie Amazon EMR-Schritte auf einem laufenden Amazon EMR-Cluster.
-
Lassen Sie die Pipeline einen Amazon EMR-Cluster für Sie erstellen und verwalten.
Weitere Informationen über Amazon EMR finden Sie unter Erste Schritte mit Amazon EMR.
Der EMR-Schritt erfordert, dass EMRStepConfig den Speicherort der JAR-Datei, die vom Amazon-EMR-Cluster verwendet werden soll, und alle zu übergebenden Argumente enthält. Sie geben auch die Amazon EMR-Cluster-ID an, wenn Sie den Schritt auf einem laufenden EMR-Cluster ausführen möchten. Sie können auch die Cluster-Konfiguration übergeben, um den EMR-Schritt auf einem Cluster auszuführen, den er für Sie erstellt, verwaltet und beendet. Die folgenden Abschnitte enthalten Beispiele und Links zu Beispiel-Notebooks, die beide Methoden demonstrieren.
Anmerkung
-
EMR-Schritte erfordern, dass die an Ihre Pipeline übergebene Rolle über zusätzliche Berechtigungen verfügt. Sie sollten die AWS verwaltete Richtlinie:
AmazonSageMakerPipelinesIntegrationsan Ihre Pipeline-Rolle anfügen oder sicherstellen, dass die Rolle die in dieser Richtlinie enthaltenen Berechtigungen umfasst. -
Wenn Sie einen EMR-Schritt auf einem laufenden Cluster verarbeiten, können Sie nur einen Cluster verwenden, der sich in einem der folgenden Zustände befindet:
-
STARTING -
BOOTSTRAPPING -
RUNNING -
WAITING
-
-
Wenn Sie EMR-Schritte in einem laufenden Cluster verarbeiten, können Sie maximal 256 EMR-Schritte in einem
PENDINGStatus auf einem EMR-Cluster haben. EMR-Schritte, die über diesen Grenzwert hinaus eingereicht werden, führen zu einem Fehler bei der Pipeline-Ausführung. Sie können auch Richtlinie für Pipeline-Schritte erneut versuchen verwenden. -
Sie können entweder Cluster-ID oder Cluster-Konfiguration angeben, aber nicht beides.
-
Der EMR-Schritt ist darauf angewiesen, EventBridge dass Amazon Änderungen im EMR-Schritt oder im Cluster-Status überwacht. Wenn Sie Ihren Amazon EMR-Auftrag auf einem laufenden Cluster verarbeiten, verwendet der EMR-Schritt die
SageMakerPipelineExecutionEMRStepStatusUpdateRuleRegel zur Überwachung des EMR-Schrittstatus. Wenn Sie Ihren Auftrag auf einem Cluster verarbeiten, den der EMR-Schritt für Sie erstellt, verwendet der Schritt dieSageMakerPipelineExecutionEMRClusterStatusRule-Regel, um Änderungen im Clusterstatus zu überwachen. Wenn Sie eine dieser EventBridge Regeln in Ihrem AWS Konto sehen, löschen Sie sie nicht, da sonst Ihr EMR-Schritt möglicherweise nicht abgeschlossen wird.
Fügen Sie Ihrer Pipeline einen Amazon EMR-Schritt hinzu
Gehen Sie wie folgt vor, um Ihrer Pipeline einen EMR-Schritt hinzuzufügen:
-
Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter Amazon SageMaker Studio https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html starten folgen.
-
Wählen Sie im linken Navigationsbereich die Option Pipelines aus.
-
Wählen Sie Erstellen aus.
-
Wählen Sie Leer.
-
Wählen Sie in der linken Seitenleiste die Option Daten verarbeiten und ziehen Sie sie auf die Arbeitsfläche.
-
Wählen Sie auf der Arbeitsfläche den Schritt „Daten verarbeiten“ aus, den Sie hinzugefügt haben.
-
Wählen Sie in der rechten Seitenleiste unter Modus die Option EMR (verwaltet) aus.
-
Füllen Sie in der rechten Seitenleiste die Formulare auf den Registerkarten „Einstellungen“ und „Details“ aus. Informationen zu den Feldern in diesen Tabs finden Sie unter https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.emr_step.EMRStep
SageMaker.Workflow.FAIL_STEP.EMRSTEP.
Starten Sie einen neuen Auftrag auf einem laufenden Amazon EMR-Cluster
Wenn Sie einen neuen Auftrag auf einem laufenden Amazon-EMR-Cluster starten möchten, übergeben Sie die Cluster-ID als Zeichenfolge an das cluster_id Argument von EMRStep. Das folgende Beispiel veranschaulicht diese Vorgehensweise.
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_config = EMRStepConfig( jar="jar-location", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) step_emr = EMRStep ( name="EMRSampleStep", # required cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster step_config=emr_config, # required display_name="My EMR Step", description="Pipeline step to execute EMR job" )
Ein Beispiel-Notebook, das Sie durch ein vollständiges Beispiel führt, finden Sie unter Pipelines EMR-Schritt mit laufendem EMR-Cluster
Starten Sie einen neuen Auftrag in einem neuen Amazon EMR-Cluster
Um einen neuen Auftrag auf einem neuen Cluster zu starten, der EMRStep für Sie erstellt wird, geben Sie Ihre Clusterkonfiguration als Wörterbuch an. Das Wörterbuch muss RunJobFlow dieselbe Struktur wie eine Anfrage haben. Nehmen Sie jedoch nicht die folgenden Felder in Ihre Clusterkonfiguration auf:
-
[
Name] -
[
Steps] -
[
AutoTerminationPolicy] -
[
Instances][KeepJobFlowAliveWhenNoSteps] -
[
Instances][TerminationProtected]
Alle anderen RunJobFlow Argumente können in Ihrer Clusterkonfiguration verwendet werden. Einzelheiten zur Anforderungssyntax finden Sie unter RunJobFlow.
Im folgenden Beispiel wird eine Cluster-Konfiguration an eine EMR-Schrittdefinition übergeben. Dies führt zu dem Schritt, einen neuen Auftrag auf einem neuen EMR-Cluster zu starten. Die EMR-Clusterkonfiguration in diesem Beispiel umfasst Spezifikationen für primäre und zentrale EMR-Clusterknoten. Weitere Informationen zu Amazon EMR-Knotentypen finden Sie unter Grundlegendes zu Knotentypen: Primär-, Kern- und Aufgabenknoten.
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_step_config = EMRStepConfig( jar="jar-location", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) # include your cluster configuration as a dictionary emr_cluster_config = { "Applications": [ { "Name": "Spark", } ], "Instances":{ "InstanceGroups":[ { "InstanceRole": "MASTER", "InstanceCount": 1, "InstanceType": "m5.2xlarge" }, { "InstanceRole": "CORE", "InstanceCount": 2, "InstanceType": "m5.2xlarge" } ] }, "BootstrapActions":[], "ReleaseLabel": "emr-6.6.0", "JobFlowRole": "job-flow-role", "ServiceRole": "service-role" } emr_step = EMRStep( name="emr-step", cluster_id=None, display_name="emr_step", description="MyEMRStepDescription", step_config=emr_step_config, cluster_config=emr_cluster_config )
Ein Beispiel-Notebook, das Sie durch ein vollständiges Beispiel führt, finden Sie unter Pipelines EMR-Schritt mit Cluster-Lebenszyklusmanagement
Gehen Sie wie folgt vor, um Ihrer Pipeline einen serverlosen EMR-Schritt hinzuzufügen:
-
Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter Amazon SageMaker Studio starten folgen.
-
Wählen Sie im linken Navigationsbereich die Option Pipelines aus.
-
Wählen Sie Erstellen aus.
-
Wählen Sie Leer.
-
Wählen Sie in der linken Seitenleiste die Option Daten verarbeiten und ziehen Sie sie auf die Arbeitsfläche.
-
Wählen Sie auf der Arbeitsfläche den Schritt „Daten verarbeiten“ aus, den Sie hinzugefügt haben.
-
Wählen Sie in der rechten Seitenleiste unter Modus die Option EMR (serverlos) aus.
-
Füllen Sie in der rechten Seitenleiste die Formulare auf den Registerkarten Einstellungen und Details aus.
Verwenden Sie aNotebookJobStep, um Ihren SageMaker Notebook-Job nicht interaktiv als Pipeline-Schritt auszuführen. Wenn Sie Ihre Pipeline in der Drag-and-Drop-Benutzeroberfläche von Pipelines erstellen, verwenden Sie Codeschritt ausführen, um Ihr Notebook auszuführen. Weitere Informationen zu SageMaker Notebook-Jobs finden Sie unter. SageMaker Jobs bei Notebooks
A NotebookJobStep erfordert mindestens ein Eingabe-Notebook, eine Image-URI und einen Kernelnamen. Weitere Informationen zu den Anforderungen für den Notebook-Job-Schritt und zu anderen Parametern, die Sie zum Anpassen Ihres Schritts festlegen können, finden Sie unter sagemaker.workflow.steps. NotebookJobStep
Im folgenden Beispiel werden NotebookJobStep Minimalargumente verwendet, um a zu definieren.
from sagemaker.workflow.notebook_job_step import NotebookJobStep notebook_job_step = NotebookJobStep( input_notebook=input_notebook, image_uri=image_uri, kernel_name=kernel_name)
Ihr NotebookJobStep Pipeline-Schritt wird wie ein SageMaker Notizbuchjob behandelt. Verfolgen Sie daher den Ausführungsstatus im Dashboard für Notebook-Jobs auf der Benutzeroberfläche von Studio Classic, indem Sie dem tags Argument bestimmte Tags hinzufügen. Weitere Informationen zu den einzufügenden Tags finden Sie unter Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an.
Wenn Sie Ihren Notebook-Job mithilfe des SageMaker Python-SDK planen, können Sie außerdem nur bestimmte Images angeben, um Ihren Notebook-Job auszuführen. Weitere Informationen finden Sie unter Bildbeschränkungen für SageMaker AI-Python-SDK-Notebook-Jobs.
Verwenden Sie den Schritt „Fehlgeschlagen“, um eine Amazon SageMaker Pipelines-Ausführung zu stoppen, wenn eine gewünschte Bedingung oder ein gewünschter Zustand nicht erreicht wird. Im Schritt „Fehlschlagen“ können Sie auch eine benutzerdefinierte Fehlermeldung eingeben, die die Ursache für den Ausführungsfehler der Pipeline angibt.
Anmerkung
Wenn ein Schritt „Fehlschlagen“ und andere Pipeline-Schritte gleichzeitig ausgeführt werden, wird die Pipeline erst beendet, wenn alle gleichzeitigen Schritte abgeschlossen sind.
Einschränkungen bei der Verwendung von Fail Step
-
Sie können ein Schritt „Fehlschlagen“ nicht in die
DependsOn-Liste anderer Schritte aufnehmen. Weitere Informationen finden Sie unter Benutzerdefinierte Abhängigkeit zwischen Schritten. -
Andere Schritte können sich nicht auf den Schritt „Fehlschlagen“ beziehen. Dies ist immer der letzte Schritt bei der Ausführung einer Pipeline.
-
Sie können eine Pipeline-Ausführung, die mit einem Schritt „Fehlschlagen“ endet, nicht wiederholen.
Sie können die Fehlermeldung zum Schritt „Fehlschlagen“ in Form einer statischen Textzeichenfolge erstellen. Alternativ können Sie auch Pipeline-Parameter, eine Join