Fasi della pipeline - Amazon SageMaker

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à.

Fasi della pipeline

Le pipeline sono composte da passaggi. Queste fasi definiscono le operazioni intraprese dalla pipeline e le relazioni tra le fasi utilizzando le proprietà. La pagina seguente descrive i tipi di passaggi, le loro proprietà e le relazioni tra di essi.

Proprietà del passaggio

Utilizzate l'propertiesattributo per aggiungere dipendenze tra i dati tra le fasi della pipeline. Le pipeline utilizzano queste dipendenze tra i dati per costruire la definizione della DAG pipeline. È possibile fare riferimento a queste proprietà come valori segnaposto e vengono risolte in fase di runtime.

L'propertiesattributo di un passo Pipelines corrisponde all'oggetto restituito da una Describe chiamata per il tipo di processo corrispondente. SageMaker Per ogni tipo di processo, la chiamata Describe restituisce il seguente oggetto di risposta:

Per verificare quali proprietà sono riferibili per ogni tipo di passaggio durante la creazione della dipendenza dei dati, consulta Data Dependency - Property Reference in Amazon Python. SageMaker SDK

Parallelismo a fasi

Quando un passaggio non dipende da nessun altro passaggio, viene eseguito immediatamente dopo l'esecuzione della pipeline. Tuttavia, l'esecuzione di troppe fasi della pipeline in parallelo può esaurire rapidamente le risorse disponibili. Controlla il numero di fasi simultanee per l'esecuzione di una pipeline con ParallelismConfiguration.

L'esempio seguente utilizza ParallelismConfiguration per impostare il limite di fasi simultanee a cinque.

pipeline.create( parallelism_config=ParallelismConfiguration(5), )

Dipendenza dei dati tra i passaggi

È possibile definire la struttura DAG specificando le relazioni tra i dati tra i passaggi. Per creare dipendenze dei dati tra le fasi, passa le proprietà di una fase come input a un'altra fase della pipeline. La fase che riceve l'input viene avviata solo dopo il termine dell'esecuzione della fase che fornisce l'input.

Una dipendenza dai dati utilizza la JsonPath notazione nel seguente formato. Questo formato attraversa il file delle proprietà. JSON Ciò significa che puoi aggiungerne tanti <property> istanze necessarie per raggiungere la proprietà annidata desiderata nel file. Per ulteriori informazioni sulla JsonPath notazione, consulta il repository. JsonPath

<step_name>.properties.<property>.<property>

Di seguito viene illustrato come specificare un bucket Amazon S3 utilizzando la proprietà ProcessingOutputConfig di una fase di elaborazione.

step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri

Per creare la dipendenza dei dati, passa il bucket a una fase di addestramento come segue.

from sagemaker.workflow.pipeline_context import PipelineSession sklearn_train = SKLearn(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="CensusTrain", step_args=sklearn_train.fit(inputs=TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train_data"].S3Output.S3Uri )) )

Per verificare quali proprietà sono riferibili per ogni tipo di passaggio durante la creazione della dipendenza dei dati, consulta Data Dependency - Property Reference in Amazon Python. SageMaker SDK

Dipendenza personalizzata tra i passaggi

Quando si specifica una dipendenza dai dati, Pipelines fornisce la connessione dati tra i passaggi. In alternativa, un passaggio può accedere ai dati di un passaggio precedente senza utilizzare direttamente Pipelines. In questo caso, puoi creare una dipendenza personalizzata che indichi a Pipelines di non iniziare un passaggio fino al termine dell'esecuzione di un altro passaggio. Si crea una dipendenza personalizzata specificando l'attributo DependsOn di una fase.

Ad esempio, quanto segue definisce una fase C che inizia solo dopo la fine dell'esecuzione sia della fase A che della fase B.

{ 'Steps': [ {'Name':'A', ...}, {'Name':'B', ...}, {'Name':'C', 'DependsOn': ['A', 'B']} ] }

Pipelines genera un'eccezione di convalida se la dipendenza creerebbe una dipendenza ciclica.

L'esempio seguente crea una fase di addestramento che inizia al termine di una fase di elaborazione.

processing_step = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step])

L'esempio seguente crea una fase di addestramento che non si avvia fino al termine dell'esecuzione di due diverse fasi di elaborazione.

processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step_1, processing_step_2])

Di seguito viene fornito un modo alternativo per creare la dipendenza personalizzata.

training_step.add_depends_on([processing_step_1]) training_step.add_depends_on([processing_step_2])

L'esempio seguente crea una fase di addestramento che riceve input da una fase di elaborazione e attende il termine dell'esecuzione di una diversa fase di elaborazione.

processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep( ..., inputs=TrainingInput( s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[ "train_data" ].S3Output.S3Uri ) training_step.add_depends_on([processing_step_2])

Nell'esempio seguente viene illustrato come recuperare un elenco di stringhe delle dipendenze personalizzate di una fase.

custom_dependencies = training_step.depends_on

Immagini personalizzate in un solo passaggio

Puoi utilizzare una qualsiasi delle immagini disponibili del SageMaker Deep Learning Container quando crei una fase della tua pipeline.

Inoltre puoi utilizzare il tuo container con le fasi della pipeline. Poiché non è possibile creare un'immagine da Studio Classic, è necessario creare l'immagine utilizzando un altro metodo prima di utilizzarla con Pipelines.

Per utilizzare il vostro contenitore personale durante la creazione dei passaggi per la pipeline, includete l'immagine URI nella definizione dello estimatore. Per ulteriori informazioni sull'utilizzo del proprio contenitore con SageMaker, consulta Using Docker Containers with. SageMaker