Skapa en pipeline

Slutförd

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:

  1. Pipelinen skapas genom att definiera funktionen pipeline_function_name.
  2. Pipelinefunktionen förväntar sig pipeline_job_input som övergripande pipelineindata.
  3. Det första pipelinesteget kräver ett värde för indataparametern input_data. Värdet för indata är värdet pipeline_job_inputför .
  4. Det första pipelinesteget definieras av den inlästa komponenten för prep_data.
  5. Värdet för det output_data första pipelinesteget används för förväntade indata training_data i det andra pipelinesteget.
  6. Det andra pipelinesteget definieras av den inlästa komponenten för train_model och resulterar i en tränad modell som refereras till av model_output.
  7. Pipelineutdata definieras genom att returnera variabler från pipelinefunktionen. Det finns två utdata:
    • pipeline_job_transformed_data med värdet för prep_data.outputs.output_data
    • pipeline_job_trained_model med värdet för train_model.outputs.model_output

Diagram över pipelinestrukturen, inklusive alla indata och utdata.

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: {}