Vad är Azure Machine Learning pipelines?

I den här artikeln får du lära dig hur en maskininlärningspipeline hjälper dig att skapa, optimera och hantera arbetsflödet för maskininlärning.

Vilken Azure-pipelineteknik ska jag använda?

Azure-molnet tillhandahåller flera typer av pipelines, var och en med olika syfte. I följande tabell visas de olika pipelines och vad de används för:

Scenario Primär persona Azure-erbjudande OSS-erbjudande Kanonisk pipe Styrkor
Modellorkestrering (maskininlärning) Dataexpert Azure Machine Learning Rörledningar Kubeflow-pipelines Data – > modell Distribution, cachelagring, kod först, återanvändning
Dataorkestrering (dataförberedelser) Datatekniker Azure Data Factory-pipeliner Apache Airflow Data – > data Starkt typad rörelse, datacentrerade aktiviteter
Kod & apporkestrering (CI/CD) Apputvecklare/ops Azure-pipelines Jenkins Kod + modell - > App/Service De flesta öppna och flexibla aktivitetssupport, godkännandeköer, faser med gating

Vad kan maskininlärningspipelines göra?

En Azure Machine Learning pipeline är ett oberoende körbart arbetsflöde för en fullständig maskininlärningsuppgift. Underaktiviteter kapslas in som en serie steg i pipelinen. En Azure Machine Learning pipeline kan vara så enkel som en som anropar ett Python-skript, så kan göra vad som helst. Pipelines bör fokusera på maskininlärningsuppgifter som:

  • Förberedelse av data, inklusive import, validering och rensning, omvandling och transformering, normalisering och mellanlagring
  • Träningskonfiguration, inklusive parametrisera argument, sökvägar och loggnings-/rapporteringskonfigurationer
  • Träna och verifiera effektivt och upprepade gånger. Effektiviteten kan komma från att ange specifika dataunderuppsättningar, olika beräkningsresurser för maskinvara, distribuerad bearbetning och förloppsövervakning
  • Distribution, inklusive versionshantering, skalning, etablering och åtkomstkontroll

Oberoende steg gör att flera dataforskare kan arbeta med samma pipeline samtidigt utan att överskatta beräkningsresurser. Separata steg gör det också enkelt att använda olika beräkningstyper/storlekar för varje steg.

När pipelinen har utformats finns det ofta mer finjustering runt träningsloopen för pipelinen. När du kör en pipeline igen hoppar körningen till de steg som behöver köras igen, till exempel ett uppdaterat träningsskript. Steg som inte behöver köras igen hoppas över.

Med pipelines kan du välja att använda olika maskinvara för olika uppgifter. Azure samordnar de olika beräkningsmål som du använder, så dina mellanliggande data flödar sömlöst till underordnade beräkningsmål.

Du kan spåra måtten för dina pipelineexperiment direkt i Azure Portal eller arbetsytans landningssida (förhandsversion). När en pipeline har publicerats kan du konfigurera en REST-slutpunkt så att du kan köra pipelinen igen från valfri plattform eller stack.

Kort sagt kan alla komplexa uppgifter i maskininlärningslivscykeln hjälpas med pipelines. Andra Azure-pipelinetekniker har sina egna styrkor. Azure Data Factory pipelines är bra på att arbeta med data och Azure Pipelines är rätt verktyg för kontinuerlig integrering och distribution. Men om ditt fokus är maskininlärning är Azure Machine Learning pipelines förmodligen det bästa valet för dina arbetsflödesbehov.

Analysera beroenden

Många programmeringsekosystem har verktyg som orkestrera resurs-, biblioteks- eller kompileringsberoenden. I allmänhet använder dessa verktyg filtidsstämplar för att beräkna beroenden. När en fil ändras uppdateras bara den och dess beroenden (hämtas, kompileras om eller paketeras). Azure Machine Learning utökar det här konceptet. Precis som traditionella byggverktyg beräknar pipelines beroenden mellan steg och utför bara de nödvändiga omberäkningarna.

Beroendeanalysen i Azure Machine Learning pipelines är dock mer avancerad än enkla tidsstämplar. Varje steg kan köras i en annan maskin- och programvarumiljö. Förberedelse av data kan vara en tidskrävande process, men behöver inte köras på maskinvara med kraftfulla GPU:er, vissa steg kan kräva OPERATIVSYSTEMspecifik programvara, du kanske vill använda distribueradträning och så vidare.

Azure Machine Learning automatiskt alla beroenden mellan pipelinestegen. Den här orkestrering kan omfatta att skapa och stänga av Docker-avbildningar, koppla och koppla från beräkningsresurser och att flytta data mellan stegen på ett konsekvent och automatiskt sätt.

Samordna de steg som ingår

När du skapar och kör Pipeline ett -objekt sker följande avancerade steg:

  • För varje steg beräknar tjänsten kraven för:
    • Resurser för maskinvarubearbetning
    • OS-resurser (Docker-avbildningar)
    • Programvaruresurser (Conda/virtualenv-beroenden)
    • Indata
  • Tjänsten avgör beroenden mellan steg, vilket resulterar i en graf för dynamisk körning
  • När varje nod i körningsdiagrammet körs:
    • Tjänsten konfigurerar den nödvändiga maskin- och programvarumiljön (kanske återanvända befintliga resurser)
    • Steget körs och ger loggnings- och övervakningsinformation till dess innehållande Experiment objekt
    • När steget har slutförts förbereds dess utdata som indata till nästa steg och/eller skrivs till lagringen
    • Resurser som inte längre behövs slutförs och frånkopplade

Pipelinesteg

Skapa pipelines med Python SDK

I Azure Machine Learning Python SDK ären pipeline ett Python-objekt som definierats i azureml.pipeline.core modulen. Ett Pipeline-objekt innehåller en ordnad sekvens av ett eller flera PipelineStep-objekt. Klassen är abstrakt och de faktiska stegen kommer att vara av underklasser som PipelineStep EstimatorStep, PythonScriptStepeller DataTransferStep. Klassen ModuleStep innehåller en återanvändbar sekvens med steg som kan delas mellan pipelines. En Pipeline körs som en del av en Experiment .

En Azure-maskininlärningspipeline är associerad Azure Machine Learning en arbetsyta och ett pipelinesteg associeras med ett beräkningsmål som är tillgängligt på arbetsytan. Mer information finns i Skapa och hantera Azure Machine Learning arbetsytor i Azure Portal eller Vad är beräkningsmål i Azure Machine Learning?.

En enkel Python-pipeline

Det här kodfragmentet visar de objekt och anrop som behövs för att skapa och köra en Pipeline :

ws = Workspace.from_config() 
blob_store = Datastore(ws, "workspaceblobstore")
compute_target = ws.compute_targets["STANDARD_NC6"]
experiment = Experiment(ws, 'MyExperiment') 

input_data = Dataset.File.from_files(
    DataPath(datastore, '20newsgroups/20news.pkl'))
prepped_data_path = OutputFileDatasetConfig(name="output_path")

dataprep_step = PythonScriptStep(
    name="prep_data",
    script_name="dataprep.py",
    source_directory="prep_src",
    compute_target=compute_target,
    arguments=["--prepped_data_path", prepped_data_path],
    inputs=[input_dataset.as_named_input('raw_data').as_mount() ]
    )

prepped_data = prepped_data_path.read_delimited_files()

train_step = PythonScriptStep(
    name="train",
    script_name="train.py",
    compute_target=compute_target,
    arguments=["--prepped_data", prepped_data],
    source_directory="train_src"
)
steps = [ dataprep_step, train_step ]

pipeline = Pipeline(workspace=ws, steps=steps)

pipeline_run = experiment.submit(pipeline)
pipeline_run.wait_for_completion()

Kodfragmentet börjar med Azure Machine Learning objekt, Workspace en , Datastore en ComputeTargetoch en Experiment . Sedan skapar koden objekten som ska innehålla input_data och prepped_data_path . är input_data en instans av FileDataset och är en instans av prepped_data_path OutputFileDatasetConfig. För standardbeteendet är att kopiera utdata till datalagringen under sökvägen , där är Körningens ID och är ett automatiskt genererat värde om det inte anges OutputFileDatasetConfig workspaceblobstore av /dataset/{run-id}/{output-name} run-id output-name utvecklaren.

Koden för förberedelse av data (visas inte), skriver avgränsade filer till prepped_data_path . Dessa utdata från steget för förberedelse av data skickas prepped_data till träningssteget.

Matrisen steps innehåller de två PythonScriptStep s, och dataprep_step train_step . Azure Machine Learning databeroendet för och prepped_data körs dataprep_step före train_step .

Sedan instansierar koden själva objektet Pipeline och går vidare till arbetsytan och stegmatrisen. Anropet till experiment.submit(pipeline) startar Azure ML-pipelinekörningen. Anropet wait_for_completion() till blockerar tills pipelinen är klar.

Mer information om hur du ansluter din pipeline till dina data finns i artiklarna Dataåtkomst i Azure Machine Learning och Flytta data till och mellan ML-pipelinesteg (Python).

Skapa pipelines med designern

Utvecklare som föredrar en visuell designyta kan använda Azure Machine Learning för att skapa pipelines. Du kan komma åt det här verktyget från designervalet på startsidan för din arbetsyta. Med designern kan du dra och släppa steg på designytan.

När du utformar pipelines visuellt visas indata och utdata för ett steg tydligt. Du kan dra och släppa dataanslutningar så att du snabbt kan förstå och ändra dataflödet i din pipeline.

Azure Machine Learning designerexempel

Viktiga fördelar

De främsta fördelarna med att använda pipelines för dina arbetsflöden för maskininlärning är:

Viktig fördel Beskrivning
Obevakade   körningar Schemalägg stegen så att de körs parallellt eller i följd på ett tillförlitligt och obevakat sätt. Förberedelse och modellering av data kan ta dagar eller veckor, och med pipelines kan du fokusera på andra uppgifter medan processen körs.
Heterogen beräkning Använd flera pipelines som på ett tillförlitligt sätt koordineras över heterogena och skalbara beräkningsresurser och lagringsplatser. Använd tillgängliga beräkningsresurser effektivt genom att köra enskilda pipelinesteg på olika beräkningsmål, till exempel HDInsight, virtuella GPU-datorer för datavetenskap och Databricks.
Återanvändning Skapa pipeline-mallar för specifika scenarier, till exempel omträning och batchbedömning. Utlösa publicerade pipelines från externa system via enkla REST-anrop.
Spårning och versionshantering I stället för att manuellt spåra data och resultatsökvägar när du itererar använder du pipelines SDK för att uttryckligen namnge och versionsutse dina datakällor, indata och utdata. Du kan också hantera skript och data separat för ökad produktivitet.
Modularitet Genom att separera områden av problem och isolera ändringar kan programvaran utvecklas snabbare med högre kvalitet.
Samarbete Pipelines gör det möjligt för dataexperter att samarbeta inom alla delar av designprocessen för maskininlärning, samtidigt som de kan arbeta med pipelinesteg samtidigt.

Nästa steg

Azure Machine Learning pipelines är en kraftfull anläggning som börjar leverera värde i de tidiga utvecklingsstegen. Värdet ökar när teamet och projektet växer. Den här artikeln har förklarat hur pipelines anges med Azure Machine Learning Python SDK och dirigeras i Azure. Du har sett lite enkel källkod och introducerats för några av de PipelineStep klasser som är tillgängliga. Du bör ha en känsla för när du ska Azure Machine Learning pipelines och hur Azure kör dem.