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
Experimentobjekt - 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

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.

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.
Lär dig hur du skapar din första pipeline.
Lär dig hur du kör batchförutsägelser på stora data.
Se SDK-referensdokumenten för pipelinekärna och pipelinesteg.
Prova jupyter-notebook-exempel som visar Azure Machine Learning pipelines. Lär dig hur du kör notebook-datorer för att utforska den här tjänsten.