Vad är Azure Machine Learning-pipelines?

GÄLLER FÖR:Azure CLI ml-tillägg v1Python SDK azureml v1

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

En Azure Machine Learning-pipeline är ett självständigt körbart arbetsflöde för en fullständig maskininlärningsuppgift. En Azure Machine Learning-pipeline hjälper till att standardisera metodtipsen för att skapa en maskininlärningsmodell, göra det möjligt för teamet att köra i stor skala och förbättra modellens skapandeeffektivitet.

Varför behövs Azure Machine Learning-pipelines?

Kärnan i en maskininlärningspipeline är att dela upp en fullständig maskininlärningsuppgift i ett arbetsflöde med flera steg. Varje steg är en hanterbar komponent som kan utvecklas, optimeras, konfigureras och automatiseras individuellt. Stegen är anslutna via väldefinierade gränssnitt. Azure Machine Learning-pipelinetjänsten samordnar automatiskt alla beroenden mellan pipelinestegen. Den här modulära metoden medför två viktiga fördelar:

Standardisera MLOps-praxis och stöd för skalbart teamsamarbete

Maskininlärningsåtgärd (MLOps) automatiserar processen med att skapa maskininlärningsmodeller och ta modellen till produktion. Det här är en komplex process. Det kräver vanligtvis samarbete från olika team med olika kunskaper. En väldefinierad pipeline för maskininlärning kan abstrahera den här komplexa processen till ett arbetsflöde med flera steg och mappa varje steg till en specifik uppgift så att varje team kan arbeta oberoende av varandra.

Ett typiskt maskininlärningsprojekt innehåller till exempel stegen för datainsamling, förberedelse av data, modellträning, modellutvärdering och modelldistribution. Vanligtvis fokuserar datatekniker på datasteg, dataexperter lägger mest tid på modellträning och utvärdering, maskininlärningstekniker fokuserar på modelldistribution och automatisering av hela arbetsflödet. Genom att utnyttja maskininlärningspipelinen behöver varje team bara arbeta med att skapa egna steg. Det bästa sättet att skapa steg är att använda Azure Machine Learning-komponenten, en fristående kod som utför ett steg i en maskininlärningspipeline. Alla dessa steg som skapats av olika användare integreras slutligen i ett arbetsflöde via pipelinedefinitionen. Pipelinen är ett samarbetsverktyg för alla i projektet. Processen för att definiera en pipeline och alla dess steg kan standardiseras av varje företags rekommenderade DevOps-praxis. Pipelinen kan versionshanteras och automatiseras ytterligare. Om ML-projekten beskrivs som en pipeline tillämpas den bästa MLOps-metoden redan.

Utbildningseffektivitet och kostnadsminskning

Förutom att vara ett verktyg för att omsätta MLOps i praktiken förbättrar maskininlärningspipelinen även effektiviteten hos den stora modellträningen och minskar kostnaderna. Att ta modern modellträning för naturligt språk som exempel. Det kräver förbearbetning av stora mängder data och GPU-intensiv transformeringsmodellträning. Det tar timmar till dagar att träna en modell varje gång. När modellen skapas vill dataexperten testa olika träningskod eller hyperparametrar och köra träningen många gånger för att få bästa modellprestanda. För de flesta av dessa träningar sker vanligtvis små förändringar från en träning till en annan. Det kommer att vara ett betydande slöseri om varje gång den fullständiga utbildningen från databehandling till modellträning äger rum. Med hjälp av en maskininlärningspipeline kan den automatiskt beräkna vilka stegresultat som är oförändrade och återanvända utdata från föregående träning. Dessutom stöder maskininlärningspipelinen körning av varje steg på olika beräkningsresurser. Det gör att den minnesintensiva databearbetningen fungerar och körs på processordatorer med högt minne och den beräkningsintensiva träningen kan köras på dyra GPU-datorer. Genom att välja vilket steg som ska köras på vilken typ av datorer kan träningskostnaden minskas avsevärt.

Metodtips för att komma igång

Beroende på vad ett maskininlärningsprojekt redan har kan startpunkten för att skapa en maskininlärningspipeline variera. Det finns några vanliga metoder för att skapa en pipeline.

Den första metoden gäller vanligtvis för teamet som inte har använt pipeline tidigare och som vill dra nytta av pipeline som MLOps. I den här situationen har dataexperter vanligtvis utvecklat vissa maskininlärningsmodeller i sin lokala miljö med hjälp av sina favoritverktyg. Maskininlärningstekniker måste ta dataexperters utdata till produktion. Arbetet innebär att rensa lite onödig kod från den ursprungliga notebook-filen eller Python-koden, ändra träningsindata från lokala data till parametriserade värden, dela upp träningskoden i flera steg efter behov, utföra enhetstest för varje steg och slutligen omsluta alla steg i en pipeline.

När teamen har bekantat sig med pipelines och vill göra fler maskininlärningsprojekt med hjälp av pipelines, kommer de att upptäcka att den första metoden är svår att skala. Den andra metoden är att konfigurera några pipelinemallar, var och en försöker lösa ett specifikt maskininlärningsproblem. Mallen fördefinierade pipelinestrukturen, inklusive hur många steg, varje stegs indata och utdata samt deras anslutning. För att starta ett nytt maskininlärningsprojekt förgrenar teamet först en mallrepo. Gruppledaren tilldelar sedan medlemmar vilket steg de behöver arbeta med. Dataexperterna och datatekniker utför sitt regelbundna arbete. När de är nöjda med resultatet strukturerar de koden så att den passar i de fördefinierade stegen. När de strukturerade koderna har checkats in kan pipelinen köras eller automatiseras. Om det sker någon ändring behöver varje medlem bara arbeta med sin kod utan att röra resten av pipelinekoden.

När ett team har skapat en samling maskininlärningspipelines och återanvändbara komponenter kan de börja bygga maskininlärningspipelinen från kloning av tidigare pipeline eller koppla ihop befintlig återanvändbar komponent. I det här skedet kommer teamets totala produktivitet att förbättras avsevärt.

Azure Machine Learning erbjuder olika metoder för att skapa en pipeline. För användare som är bekanta med DevOps-metoder rekommenderar vi att du använder CLI. För dataexperter som är bekanta med Python rekommenderar vi att du skriver pipeline med Hjälp av Azure ML SDK v1. För användare som föredrar att använda användargränssnittet kan de använda designern för att skapa pipeline med hjälp av registrerade komponenter.

Vilken Azure-pipelineteknik ska jag använda?

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

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

Nästa steg

Azure Machine Learning-pipelines är en kraftfull anläggning som börjar leverera värde i de tidiga utvecklingsstegen.