Vad är Azure Machine Learning-pipelines?
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 byggeffektivitet.
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 maskininlärningsåtgärden (MLOps) och stöd för skalbart teamsamarbete
- Utbildningseffektivitet och kostnadsminskning
Standardisera MLOps-metoden och stödja skalbart teamsamarbete
Maskininlärningsåtgärden (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 maskininlärningspipeline 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 dataingenjörerna på datasteg, dataforskare lägger mest tid på modellträning och utvärdering, maskininlärningstekniker fokuserar på modelldistribution och automatisering av hela arbetsflödet. Genom att använda 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 (v2), 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 föredragna 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 i den stora modellträningen och minskar kostnaderna. 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 byggs 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 utbildningar 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 steg resultatet är oförändrat och återanvända utdata från föregående träning. Dessutom stöder maskininlärningspipelinen att köra varje steg på olika beräkningsresurser. Det gör att den minnesintensiva databearbetningen fungerar och processordatorer med hög minnesanvändning 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 pipelinen tidigare och som vill dra nytta av pipelinen 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 dataexperternas utdata till produktion. Arbetet innebär att rensa 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, där 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 sin kod 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 pipelines med hjälp av Azure Machine Learning SDK v2. För användare som föredrar att använda användargränssnittet kan de använda designern för att skapa pipelines med hjälp av registrerade komponenter.
Vilken Azure-pipelineteknik ska jag använda?
Azure-molnet tillhandahåller flera typer av pipeline, var och en med olika syften. I följande tabell visas de olika pipelinesna och vad de används till:
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örsta, återanvändning |
Dataorkestrering (dataförberedelse) | Datatekniker | Azure Data Factory-pipelines | Apache Airflow | Data –> data | Starkt skrivskyddad förflyttning, datacentrerade aktiviteter |
Kod- och apporkestrering (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.
- Definiera pipelines med Azure Machine Learning CLI v2
- Definiera pipelines med Azure Machine Learning SDK v2
- Definiera pipelines med Designer
- Prova CLI v2-pipelineexempel
- Prova Python SDK v2-pipelineexempel
- Lär dig mer om SDK- och CLI v2-uttryck som kan användas i en pipeline.