Exécuter des pipelines en mode local - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécuter des pipelines en mode local

SageMaker Le mode local des pipelines est un moyen simple de tester vos scripts d'entraînement, de traitement et d'inférence, ainsi que la compatibilité d'exécution des paramètres de pipeline avant d'exécuter votre pipeline sur le SageMaker service géré. En utilisant le mode local, vous pouvez tester votre SageMaker pipeline localement à l'aide d'un ensemble de données plus petit. Cela permet de déboguer rapidement et facilement les erreurs dans les scripts utilisateur et dans la définition du pipeline elle-même, sans encourir les coûts liés à l'utilisation du service géré. La rubrique suivante explique comment définir et exécuter des pipelines localement.

Le mode local de Pipelines tire parti du mode local des SageMaker jobs sous le capot. Il s'agit d'une fonctionnalité de SageMaker Python SDK qui vous permet d'exécuter des images SageMaker intégrées ou personnalisées localement à l'aide de conteneurs Docker. Le mode local des pipelines est basé sur le mode local des SageMaker tâches. Par conséquent, vous pouvez vous attendre à obtenir les mêmes résultats que si vous exécutiez ces tâches séparément. Par exemple, le mode local utilise toujours Amazon S3 pour charger les artefacts de modèle et les résultats de traitement. Si vous souhaitez que les données générées par les tâches locales résident sur un disque local, vous pouvez utiliser la configuration mentionnée dans Mode local.

Le mode local des pipelines prend actuellement en charge les types d'étape suivants :

Contrairement au service Pipelines géré, qui permet l'exécution en parallèle de plusieurs étapes à l'aide de la configuration du parallélisme, l'exécuteur de pipeline local exécute les étapes de manière séquentielle. Par conséquent, les performances d'exécution globales d'un pipeline local peuvent être inférieures à celles d'un pipeline s'exécutant dans le cloud. Cela dépend principalement de la taille du jeu de données, de l'algorithme et de la puissance de votre ordinateur local. Notez également que les pipelines exécutés en mode local ne sont pas enregistrés dans les SageMaker expériences.

Note

Le mode local des pipelines n'est pas compatible avec SageMaker des algorithmes tels queXGBoost. Si vous voulez utiliser ces algorithmes, vous devez les utiliser en mode script.

Pour exécuter un pipeline localement, les champs sagemaker_session associés aux étapes du pipeline et le pipeline lui-même doivent être de type LocalPipelineSession. L'exemple suivant montre comment définir un SageMaker pipeline à exécuter localement.

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)

Une fois que vous êtes prêt à exécuter le pipeline sur le service géré SageMaker Pipelines, vous pouvez le faire LocalPipelineSession en remplaçant l'extrait de code précédent par PipelineSession (comme indiqué dans l'exemple de code suivant) et en réexécutant le code.

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