Führen Sie Pipelines im lokalen Modus aus - 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.

Führen Sie Pipelines im lokalen Modus aus

SageMaker Der lokale Modus von Pipelines ist eine einfache Möglichkeit, Ihre Trainings-, Verarbeitungs- und Inferenzskripten sowie die Laufzeitkompatibilität der Pipeline-Parameter zu testen, bevor Sie Ihre Pipeline auf dem verwalteten Dienst ausführen. SageMaker Im lokalen Modus können Sie Ihre SageMaker 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 von SageMaker Jobs unter der Haube. Dies ist eine Funktion in SageMaker PythonSDK, mit der Sie SageMaker integrierte oder benutzerdefinierte Images lokal mithilfe von Docker-Containern ausführen können. Der lokale Modus von Pipelines basiert auf dem lokalen Modus von SageMaker 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 kompatibel mit SageMaker Algorithmen wie. XGBoost 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 Pipeline definieren können, die lokal ausgeführt wird.

from sagemaker.workflow.pipeline_context import LocalPipelineSession from sagemaker.pytorch import PyTorch from sagemaker.workflow.steps import TrainingStep from sagemaker.workflow.pipeline import Pipeline local_pipeline_session = LocalPipelineSession() pytorch_estimator = PyTorch( sagemaker_session=local_pipeline_session, role=sagemaker.get_execution_role(), instance_type="ml.c5.xlarge", instance_count=1, framework_version="1.8.0", py_version="py36", entry_point="./entry_point.py", ) step = TrainingStep( name="MyTrainingStep", step_args=pytorch_estimator.fit( inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data/train"), ) ) pipeline = Pipeline( name="MyPipeline", steps=[step], sagemaker_session=local_pipeline_session ) pipeline.create( role_arn=sagemaker.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 = pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)

Sobald Sie bereit sind, die Pipeline auf dem verwalteten SageMaker Pipelines-Service 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()