Ejecución de canalizaciones en modo local - Amazon SageMaker AI

Ejecución de canalizaciones en modo local

El modo local de las canalizaciones de SageMaker AI es una forma sencilla de probar sus scripts de entrenamiento, procesamiento e inferencia, así como la compatibilidad en tiempo de ejecución de los parámetros de la canalización antes de ejecutar la canalización en el servicio administrado de SageMaker AI. Al usar el modo local, puede probar la canalización de SageMaker AI localmente con un conjunto de datos más pequeño. Esto permite depurar de forma rápida y sencilla los errores en los scripts del usuario y en la propia definición de la canalización sin incurrir en los costos que conlleva el uso del servicio administrado. En el siguiente tema, se muestra cómo definir y ejecutar canalizaciones de forma local.

El modo local de las canalizaciones utiliza el modo local de trabajos de SageMaker AI desde dentro del sistema. Se trata de una característica del SageMaker AI Python SDK que permite ejecutar imágenes integradas o personalizadas de SageMaker AI de forma local mediante contenedores de Docker. El modo local de las canalizaciones se basa en el modo local de los trabajos de SageMaker AI. Por lo tanto, puede esperar ver los mismos resultados que si ejecutara esos trabajos por separado. Por ejemplo, el modo local utiliza Amazon S3 para cargar artefactos del modelo y procesar las salidas. Si desea que los datos generados por los trabajos locales residan en el disco local, puede utilizar la configuración mencionada en Modo local.

El modo local de la canalización admite actualmente los siguientes tipos de pasos:

A diferencia del servicio administrado de las canalizaciones, que permite ejecutar varios pasos en paralelo mediante la configuración del paralelismo, el ejecutor de canalización local ejecuta los pasos en orden secuencial. Por lo tanto, el rendimiento general de ejecución de una canalización local puede ser inferior al de una canalización que se ejecuta en la nube; depende principalmente del tamaño del conjunto de datos, del algoritmo y de la potencia del equipo local. Tenga en cuenta también que las canalizaciones ejecutadas en modo local no se graban en los Experimentos de SageMaker.

nota

El modo local de las canalizaciones no es compatible con algoritmos de SageMaker AI como XGBoost. Si quiere utilizar estos algoritmos, debe utilizarlos en modo script.

Para ejecutar una canalización de forma local, los campos de sagemaker_session asociados a los pasos de la canalización y a la propia canalización deben ser del tipo LocalPipelineSession. En el ejemplo siguiente se muestra cómo definir una canalización de SageMaker AI para que se ejecute de forma local.

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)

Cuando esté preparado para ejecutar la canalización en el servicio administrado de canalizaciones de SageMaker, puede hacerlo sustituyendo LocalPipelineSession en el fragmento de código anterior por PipelineSession (como se muestra en el siguiente ejemplo de código) y volviendo a ejecutar el código.

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