Esecuzione delle pipeline con la modalità locale - Amazon SageMaker AI

Esecuzione delle pipeline con la modalità locale

La modalità locale di SageMaker Pipelines è un modo semplice per testare gli script di addestramento, elaborazione e inferenza, nonché la compatibilità del runtime dei parametri della pipeline prima di eseguire la pipeline sul servizio SageMaker AI gestito. Utilizzando la modalità locale, puoi testare la pipeline SageMaker in locale con un set di dati ridotto. Ciò consente il debug rapido e semplice degli errori negli script utente e nella definizione della pipeline stessa senza costi di utilizzo del servizio gestito. L’argomento seguente mostra come definire ed eseguire le pipeline localmente.

La modalità locale di Pipelines si basa sulla modalità locale dei processi SageMaker AI. Si tratta di una funzionalità di SageMaker Python SDK che consente di eseguire immagini integrate o personalizzate di SageMaker AI a livello locale utilizzando container Docker. La modalità locale di Pipelines si basa sulla modalità locale dei processi SageMaker AI. Pertanto, ci si può aspettare gli stessi risultati come se si eseguissero quei lavori separatamente. Ad esempio, la modalità locale utilizza ancora Amazon S3 per caricare gli artefatti del modello e gli output di elaborazione. Se desideri che i dati generati dai processi locali risiedano sul disco locale, puoi utilizzare la configurazione indicata nella modalità locale.

La modalità locale pipeline attualmente supporta i seguenti tipi di fasi:

A differenza del servizio Pipeline gestito che consente l'esecuzione di più fasi in parallelo utilizzando la configurazione del parallelismo, l’executor della pipeline locale esegue le fasi in sequenza. Pertanto, le prestazioni complessive di esecuzione di una pipeline locale potrebbero essere inferiori rispetto a quelle eseguite sul cloud: ciò dipende soprattutto dalle dimensioni del set di dati, dall'algoritmo e dalla potenza del computer locale. Ricorda inoltre che le esecuzioni di Pipeline in modalità locale non vengono registrate in Esperimenti SageMaker.

Nota

La modalità locale di Pipelines non è compatibile con gli algoritmi di SageMaker AI, ad esempio XGBoost. Se si desidera utilizzare questi algoritmi, è necessario utilizzarli in modalità script.

Per eseguire una pipeline a livello locale, i campi sagemaker_session associati alle fasi della pipeline e alla pipeline stessa devono essere di tipo LocalPipelineSession. L’esempio seguente illustra come definire una pipeline SageMaker AI da eseguire localmente.

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)

Quando è tutto pronto per eseguire la pipeline sul servizio Pipeline SageMaker gestito, puoi farlo sostituendo LocalPipelineSession nel frammento di codice precedente con PipelineSession (come mostrato nel seguente esempio di codice) ed eseguendo nuovamente il codice.

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