View a markdown version of this page

Führen Sie Pipelines im lokalen Modus aus - Amazon SageMaker KI

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.

Führen Sie Pipelines im lokalen Modus aus

SageMaker Der lokale Modus von Pipelines ist eine einfache Möglichkeit, Ihre Trainings-, Verarbeitungs- und Inferenzskripts sowie die Laufzeitkompatibilität der Pipeline-Parameter zu testen, bevor Sie Ihre Pipeline auf dem verwalteten SageMaker AI-Service ausführen. Wenn Sie den lokalen Modus verwenden, können Sie Ihre SageMaker AI-Pipeline lokal mit einem kleineren Datensatz testen. Dies ermöglicht ein schnelles und einfaches Debuggen von Fehlern in Benutzerskripten und der Pipeline-Definition selbst, ohne dass die Kosten für die Nutzung des verwalteten Services anfallen. Das folgende Thema zeigt Ihnen, wie Sie Pipelines lokal definieren und ausführen.

Der lokale Modus von Pipelines nutzt den lokalen Modus für SageMaker KI-Jobs unter der Haube. Dies ist eine Funktion im SageMaker Python-SDK, mit der Sie integrierte oder benutzerdefinierte SageMaker KI-Images lokal mithilfe von Docker-Containern ausführen können. Der lokale Modus von Pipelines basiert auf dem lokalen Modus für SageMaker KI-Jobs. Daher können Sie erwarten, dieselben Ergebnisse zu sehen, als ob Sie diese Jobs separat ausführen würden. Beispielsweise verwendet der lokale Modus immer noch Amazon S3, um Modellartefakte hochzuladen und Ausgaben zu verarbeiten. Wenn Sie möchten, dass durch lokale Jobs generierte Daten auf einer lokalen Festplatte gespeichert werden, können Sie das unter Lokaler Modus beschriebene Setup verwenden.

Der lokale Pipeline-Modus unterstützt derzeit die folgenden Schritttypen:

Im Gegensatz zum Managed Pipelines Service, der die parallele Ausführung mehrerer Schritte mithilfe der Parallelism Configuration ermöglicht, führt der lokale Pipeline-Executor die Schritte sequentiell aus. Daher kann die allgemeine Ausführungsleistung einer lokalen Pipeline schlechter sein als die einer Pipeline, die in der Cloud läuft. Dies hängt hauptsächlich von der Größe des Datensatzes, dem Algorithmus sowie der Leistung Ihres lokalen Computers ab. Beachten Sie auch, dass Pipelines, die im lokalen Modus ausgeführt werden, nicht in SageMaker Experimenten aufgezeichnet werden.

Anmerkung

Der lokale Modus von Pipelines ist nicht mit SageMaker KI-Algorithmen wie XGBoost kompatibel. Wenn Sie diese Algorithmen verwenden möchten, müssen Sie diese im Skriptmodus verwenden.

Um eine Pipeline lokal ausführen zu können, müssen die sagemaker_session Felder, die den Pipeline-Schritten und der Pipeline selbst zugeordnet sind, vom Typ LocalPipelineSession sein. Das folgende Beispiel zeigt, wie Sie eine SageMaker AI-Pipeline für die lokale Ausführung definieren können.

from sagemaker.core.workflow.pipeline_context import LocalPipelineSession from sagemaker.train import ModelTrainer from sagemaker.train.configs import InputData, SourceCode from sagemaker.train.configs import Compute from sagemaker.mlops.workflow.steps import TrainingStep from sagemaker.mlops.workflow.pipeline import Pipeline from sagemaker.core.helper.session_helper import get_execution_role from sagemaker.core import image_uris local_pipeline_session = LocalPipelineSession() training_image = image_uris.retrieve( framework="pytorch", region=region, version="1.8.0", py_version="py36", instance_type="ml.c5.xlarge", image_scope="training" ) pytorch_model_trainer = ModelTrainer( role=get_execution_role(), compute=Compute( instance_type="ml.c5.xlarge", instance_count=1, ), training_image=training_image, source_code=SourceCode(entry_script="./entry_point.py"), ) step = TrainingStep( name="MyTrainingStep", step_args=pytorch_model_trainer.train( input_data_config=[InputData(channel_name="training", data_source="s3://amzn-s3-demo-bucket/my-data/train")], ) ) pipeline = Pipeline( name="MyPipeline", steps=[step], sagemaker_session=local_pipeline_session ) pipeline.create( role_arn=get_execution_role(), description="local pipeline example" ) # pipeline will execute locally execution = pipeline.start() steps = execution.list_steps() training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn'] step_outputs = local_pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)

Sobald Sie bereit sind, die Pipeline im verwalteten SageMaker Pipelines-Dienst auszuführen, können Sie dies tun, indem Sie den vorherigen Codeausschnitt durch PipelineSession (wie im folgenden Codebeispiel gezeigt) ersetzen LocalPipelineSession und den Code erneut ausführen.

from sagemaker.workflow.pipeline_context import PipelineSession pipeline_session = PipelineSession()