

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esecuzione delle pipeline con la modalità locale
<a name="pipelines-local-mode"></a>

SageMaker La modalità locale di Pipelines è un modo semplice per testare gli script di addestramento, elaborazione e inferenza, nonché la compatibilità in fase di esecuzione dei parametri della [ pipeline ](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#pipeline-parameters) prima di eseguire la pipeline sul servizio AI gestito. SageMaker Utilizzando la modalità locale, puoi testare la pipeline SageMaker AI localmente utilizzando un set di dati più piccolo. 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 sfrutta la modalità [ locale dei lavori di ](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) SageMaker intelligenza artificiale nascosta. Questa è una funzionalità dell'SDK SageMaker Python che consente di eseguire immagini SageMaker AI integrate o personalizzate localmente utilizzando contenitori Docker. La modalità locale di Pipelines si basa sulla modalità locale di SageMaker AI jobs. 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](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode).

La modalità locale pipeline attualmente supporta i seguenti tipi di fasi:
+ [Fase di addestramento](build-and-manage-steps-types.md#step-type-training)
+ [Fase di elaborazione](build-and-manage-steps-types.md#step-type-processing)
+ [Fase di trasformazione](build-and-manage-steps-types.md#step-type-transform)
+ [Fase del modello](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-model-create) (solo con argomenti Crea modello)
+ [Fase Condizione](build-and-manage-steps-types.md#step-type-condition)
+ [Fase Errore](build-and-manage-steps-types.md#step-type-fail)

A differenza del servizio Pipeline gestito che consente l'esecuzione di più fasi in parallelo utilizzando la [configurazione del parallelismo](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parallelism-configuration), 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. Nota inoltre che le Pipelines eseguite in modalità locale non vengono registrate in [ SageMaker Experiments. ](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-experiments.html)

**Nota**  
La modalità locale di Pipelines non è compatibile con algoritmi di SageMaker intelligenza artificiale come XGBoost. Se si desidera utilizzare questi algoritmi, è necessario utilizzarli in [modalità script.](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html)

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 mostra come è possibile definire una pipeline SageMaker AI da eseguire localmente.

```
from sagemaker.core.workflow.pipeline_context import LocalPipelineSession
from sagemaker.train import ModelTrainer
from sagemaker.train.configs import InputData, SourceCode
from sagemaker.train.configs import Compute
from sagemaker.mlops.workflow.steps import TrainingStep
from sagemaker.mlops.workflow.pipeline import Pipeline
from sagemaker.core.helper.session_helper import get_execution_role
from sagemaker.core import image_uris

local_pipeline_session = LocalPipelineSession()

training_image = image_uris.retrieve(
    framework="pytorch", region=region, version="1.8.0",
    py_version="py36", instance_type="ml.c5.xlarge",
    image_scope="training"
)

pytorch_model_trainer = ModelTrainer(
    role=get_execution_role(),
    compute=Compute(
        instance_type="ml.c5.xlarge",
        instance_count=1,
    ),
    training_image=training_image,
    source_code=SourceCode(entry_script="./entry_point.py"),
)

step = TrainingStep(
    name="MyTrainingStep",
    step_args=pytorch_model_trainer.train(
        input_data_config=[InputData(channel_name="training", data_source="s3://{{amzn-s3-demo-bucket/my-data/train}}")],
    )
)

pipeline = Pipeline(
    name="MyPipeline",
    steps=[step],
    sagemaker_session=local_pipeline_session
)

pipeline.create(
    role_arn=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 = local_pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)
```

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

```
from sagemaker.workflow.pipeline_context import PipelineSession

pipeline_session = PipelineSession()
```