Lokaler Modus - 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.

Lokaler Modus

SageMaker Der lokale Modus von Pipelines ist eine einfache Möglichkeit, Ihre Trainings-, Verarbeitungs- und Inferenzskripte sowie die Laufzeitkompatibilität von Pipeline-Parametern zu testen, bevor Sie Ihre Pipeline auf dem verwalteten SageMaker Service ausführen. Durch die Verwendung des 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.

Der lokale Modus von Pipelines nutzt den SageMaker lokalen Modus von Aufträgen im Hintergrund. Dies ist eine Funktion im SageMaker Python SDK, mit der Sie SageMaker integrierte oder benutzerdefinierte Images lokal mithilfe von Docker-Containern ausführen können. Der lokale Modus von Pipelines baut auf dem lokalen Modus von SageMaker Aufträgen auf. 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 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 Pipeline definieren können, die lokal ausgeführt werden soll.

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://my-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 LocalPipelineSession im vorherigen Codeausschnitt durch PipelineSession (wie im folgenden Codebeispiel gezeigt) ersetzen und den Code erneut ausführen.

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