Skapa en pipeline
I Azure Machine Learning är en pipeline ett arbetsflöde med maskininlärningsuppgifter där varje uppgift definieras som en komponent.
Komponenter kan ordnas sekventiellt eller parallellt, så att du kan skapa avancerad flödeslogik för att samordna maskininlärningsåtgärder. Varje komponent kan köras på ett specifikt beräkningsmål, vilket gör det möjligt att kombinera olika typer av bearbetning efter behov för att uppnå ett övergripande mål.
En pipeline kan köras som en process genom att köra pipelinen som ett pipelinejobb. Varje komponent körs som ett underordnat jobb som en del av det övergripande pipelinejobbet.
Skapa en pipeline
En Azure Machine Learning-pipeline definieras i en YAML-fil. YAML-filen innehåller pipelinejobbets namn, indata, utdata och inställningar.
Du kan skapa YAML-filen eller använda @pipeline() funktionen för att skapa YAML-filen.
Dricks
Granska referensdokumentationen @pipeline() för funktionen.
Om du till exempel vill skapa en pipeline som först förbereder data och sedan tränar modellen kan du använda följande kod:
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,
}
Om du vill skicka en registrerad datatillgång som indata för pipelinejobbet kan du anropa funktionen som du skapade med datatillgången som indata:
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"
))
Funktionen @pipeline() skapar en pipeline som består av två sekventiella steg som representeras av de två inlästa komponenterna.
För att förstå pipelinen som är inbyggd i exemplet ska vi utforska den steg för steg:
- Pipelinen skapas genom att definiera funktionen
pipeline_function_name. - Pipelinefunktionen förväntar sig
pipeline_job_inputsom övergripande pipelineindata. - Det första pipelinesteget kräver ett värde för indataparametern
input_data. Värdet för indata är värdetpipeline_job_inputför . - Det första pipelinesteget definieras av den inlästa komponenten för
prep_data. - Värdet för det
output_dataförsta pipelinesteget används för förväntade indatatraining_datai det andra pipelinesteget. - Det andra pipelinesteget definieras av den inlästa komponenten för
train_modeloch resulterar i en tränad modell som refereras till avmodel_output. - Pipelineutdata definieras genom att returnera variabler från pipelinefunktionen.
Det finns två utdata:
-
pipeline_job_transformed_datamed värdet förprep_data.outputs.output_data -
pipeline_job_trained_modelmed värdet förtrain_model.outputs.model_output
-
Resultatet av att köra @pipeline() funktionen är en YAML-fil som du kan granska genom att skriva ut objektet pipeline_job du skapade när du anropade funktionen:
print(pipeline_job)
Utdata formateras som en YAML-fil, som innehåller konfigurationen av pipelinen och dess komponenter. Vissa parametrar som ingår i YAML-filen visas i följande exempel.
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: {}