Creare una pipeline
In Azure Machine Learning una pipeline è un flusso di lavoro delle attività di Machine Learning in cui ogni attività viene definita come componente.
I componenti possono essere organizzati in sequenza o in parallelo, consentendo di creare una logica di flusso sofisticata per eseguire l'orchestrazione delle operazioni di Machine Learning. Per raggiungere un obiettivo complessivo, ogni componente può essere eseguito in una destinazione di calcolo specifica, rendendo possibile combinare tipi diversi di elaborazione.
Una pipeline può essere gestita come un processo se si viene eseguita come un processo della pipeline. Ogni componente viene eseguito come un processo figlio come parte del processo complessivo della pipeline.
Costruire una pipeline
Una pipeline di Azure Machine Learning viene definita in un file YAML. Il file YAML include il nome del processo della pipeline, gli input, gli output e le impostazioni.
È possibile creare il file YAML oppure usare la funzione @pipeline() per creare il file YAML.
Suggerimento
Esaminare la documentazione di riferimento per la funzione @pipeline().
Ad esempio, se si vuole compilare una pipeline che prepara prima i dati e quindi esegue il training del modello, è possibile usare il codice seguente:
from azure.ai.ml.dsl import pipeline
@pipeline()
def pipeline_function_name(pipeline_job_input):
prep_data = loaded_component_prep(input_data=pipeline_job_input)
train_model = loaded_component_train(training_data=prep_data.outputs.output_data)
return {
"pipeline_job_transformed_data": prep_data.outputs.output_data,
"pipeline_job_trained_model": train_model.outputs.model_output,
}
Per passare un asset di dati registrato come input del processo della pipeline, è possibile chiamare la funzione creata con l'asset di dati come input:
from azure.ai.ml import Input
from azure.ai.ml.constants import AssetTypes
pipeline_job = pipeline_function_name(
Input(type=AssetTypes.URI_FILE,
path="azureml:data:1"
))
La funzione @pipeline() compila una pipeline costituita da due passaggi sequenziali, rappresentati dai due componenti caricati.
Per comprendere la pipeline compilata nell'esempio, è possibile esaminarne i singoli passaggi:
- La pipeline viene compilata definendo la funzione
pipeline_function_name. - La funzione della pipeline prevede
pipeline_job_inputcome input complessivo della pipeline. - Il primo passaggio della pipeline richiede un valore per il parametro di input
input_data. Il valore per l'input sarà il valore dipipeline_job_input. - Il primo passaggio della pipeline viene definito dal componente caricato per
prep_data. - Il valore del
output_datadel primo passaggio della pipeline viene usato per l'input previstotraining_datadel secondo passaggio della pipeline. - Il secondo passaggio della pipeline viene definito dal componente caricato per
train_modele restituisce un modello sottoposto a training amodel_outputcui fa riferimento . - Gli output della pipeline vengono definiti restituendo variabili dalla funzione della pipeline.
Esistono due tipi di output:
pipeline_job_transformed_datacon il valore diprep_data.outputs.output_datapipeline_job_trained_modelcon il valore ditrain_model.outputs.model_output
Il risultato dell'esecuzione della funzione @pipeline() è un file YAML che è possibile rivedere stampando l'oggetto pipeline_job creato quando si chiama la funzione:
print(pipeline_job)
L'output verrà formattato come file YAML, che include la configurazione della pipeline e i relativi componenti. Alcuni parametri inclusi nel file YAML sono illustrati nell'esempio seguente.
display_name: pipeline_function_name
type: pipeline
inputs:
pipeline_job_input:
type: uri_file
path: azureml:data:1
outputs:
pipeline_job_transformed_data: null
pipeline_job_trained_model: null
jobs:
prep_data:
type: command
inputs:
input_data:
path: ${{parent.inputs.pipeline_job_input}}
outputs:
output_data: ${{parent.outputs.pipeline_job_transformed_data}}
train_model:
type: command
inputs:
input_data:
path: ${{parent.outputs.pipeline_job_transformed_data}}
outputs:
output_model: ${{parent.outputs.pipeline_job_trained_model}}
tags: {}
properties: {}
settings: {}
Suggerimento
Scopri di più sul schema YAML del processo della pipeline per esplorare i parametri inclusi nella costruzione di una pipeline basata su componenti.