Exécution de pipelines en mode local - Amazon SageMaker AI

Exécution de pipelines en mode local

Le mode local de SageMaker Pipelines permet de tester facilement vos scripts d’entraînement, de traitement et d’inférence, ainsi que la compatibilité d’exécution des paramètres du pipeline avant d’exécuter votre pipeline sur le service SageMaker AI géré. En utilisant le mode local, vous pouvez tester votre pipeline SageMaker AI localement à l’aide d’un jeu 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 tâches SageMaker AI en arrière-plan. Il s’agit d’une fonctionnalité du kit SageMaker Python SDK qui vous permet d’exécuter des images intégrées ou personnalisées de SageMaker AI localement à l’aide de conteneurs Docker. Le mode local de Pipelines s’appuie sur le mode local des tâches SageMaker AI. 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 exécutions de Pipelines en mode local ne sont pas enregistrées dans SageMaker Experiments.

Note

Le mode local de Pipelines n’est pas compatible avec les algorithmes SageMaker AI tels que XGBoost. 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 pipeline SageMaker AI à 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 SageMaker Pipelines géré, vous pouvez le faire en remplaçant LocalPipelineSession dans 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()