MLOps: Modellhantering, distribution, härledning och övervakning med Azure Machine Learning

I den här artikeln lär du dig hur du Machine Learning Operations (MLOps) i Azure Machine Learning att hantera livscykeln för dina modeller. MLOps förbättrar kvaliteten och konsekvensen i dina maskininlärningslösningar.

Vad är MLOps?

Machine Learning Åtgärder (MLOps) baseras på DevOps-principer och metoder som ökar effektiviteten i arbetsflöden. Till exempel kontinuerlig integrering, leverans och distribution. MLOps tillämpar dessa principer på maskininlärningsprocessen med målet att:

  • Snabbare experimentering och utveckling av modeller
  • Snabbare distribution av modeller till produktion
  • Kvalitetssäkring och spårning från start till slut

MLOps i Azure Machine Learning

Azure Machine Learning innehåller följande MLOps-funktioner:

  • Skapa reproducerbara ML pipelines. Machine Learning pipelines kan du definiera repeterbara och återanvändbara steg för dina processer för förberedelse, träning och bedömning av data.
  • Skapa återanvändbara programvarumiljöer för träning och distribution av modeller.
  • Registrera, paketera och distribuera modeller från valfri plats. Du kan också spåra associerade metadata som krävs för att använda modellen.
  • Samla in styrningsdata för livscykeln från ML. Den loggade härledningsinformationen kan omfatta vem som publicerar modeller, varför ändringar har gjorts och när modeller har distribuerats eller använts i produktion.
  • Meddela och avisering om händelser i ML livscykeln. Exempel: slutförande av experiment, modellregistrering, modelldistribution och identifiering av dataavdrift.
  • Övervaka ML program för drift- och ML-relaterade problem. Jämför modellindata mellan träning och slutsatsledning, utforska modellspecifika mått och tillhandahåll övervakning och aviseringar i din ML infrastruktur.
  • Automatisera livscykeln för livscykeln för ML från Azure Machine Learning och Azure Pipelines. Med hjälp av pipelines kan du ofta uppdatera modeller, testa nya modeller och kontinuerligt distribuera nya ML modeller tillsammans med dina andra program och tjänster.

Mer information om MLOps finns i Machine Learning DevOps (MLOps).

Skapa reproducerbara ML pipelines

Använd ML pipelines från Azure Machine Learning för att sammanfoga alla steg som ingår i modellträningsprocessen.

En ML-pipeline kan innehålla steg från förberedelse av data till extrahering av funktioner till justering av hyperparametrar till modellutvärdering. Mer information finns i ML pipelines.

Om du använder designern för att skapa ML pipelines kan du när som helst klicka på "..." längst upp till höger på sidan Designer och sedan välja Klona. Genom att klona din pipeline kan du iterera din pipelinedesign utan att förlora dina gamla versioner.

Skapa återanvändbara programvarumiljöer

Azure Machine Learning miljöer kan du spåra och återskapa dina projekts programvaruberoenden allt eftersom de utvecklas. Med miljöer kan du se till att byggen återskapas utan manuella programvarukonfigurationer.

Miljöer beskriver pip- och Conda-beroenden för dina projekt och kan användas för både träning och distribution av modeller. Mer information finns i Vad är Azure Machine Learning miljöer.

Registrera, paketera och distribuera modeller från valfri plats

Registrera och spåra ML modeller

Med modellregistrering kan du lagra och versions versionera dina modeller i Azure-molnet på din arbetsyta. Modellregistret gör det enkelt att organisera och hålla reda på dina tränade modeller.

Tips

En registrerad modell är en logisk container för en eller flera filer som utgör din modell. Om du till exempel har en modell som lagras i flera filer kan du registrera dem som en enda modell i din Azure Machine Learning arbetsyta. Efter registreringen kan du sedan ladda ned eller distribuera den registrerade modellen och ta emot alla filer som har registrerats.

Registrerade modeller identifieras med namn och version. Varje gång du registrerar en modell med ett namn som redan finns ökar versionsnumret. Ytterligare metadatataggar kan anges under registreringen. Dessa taggar används sedan när du söker efter en modell. Azure Machine Learning stöder alla modeller som kan läsas in med Python 3.5.2 eller senare.

Tips

Du kan också registrera modeller som tränats utanför Azure Machine Learning.

Du kan inte ta bort en registrerad modell som används i en aktiv distribution. Mer information finns i avsnittet registrera modell i Distribuera modeller.

Viktigt

När du använder alternativet Filtrera efter på sidan Modeller i Azure Machine Learning Studio ska du i stället Tags för att använda kunder använda TagName : TagValue TagName=TagValue (utan utrymme)

Profilmodeller

Azure Machine Learning kan hjälpa dig att förstå processor- och minneskraven för tjänsten som skapas när du distribuerar din modell. Profilering testar tjänsten som kör din modell och returnerar information som processoranvändning, minnesanvändning och svarstider. Den innehåller också en rekommendation för processor och minne baserat på resursanvändningen. Mer information finns i profilavsnittet i Distribuera modeller.

Paketera och felsöka modeller

Innan du distribuerar en modell till produktion paketeras den i en Docker-avbildning. I de flesta fall skapas avbildningar automatiskt i bakgrunden under distributionen. Du kan ange avbildningen manuellt.

Om du får problem med distributionen kan du distribuera i din lokala utvecklingsmiljö för felsökning och felsökning.

Mer information finns i Distribuera modeller och Felsöka distributioner.

Konvertera och optimera modeller

Att konvertera din modell till Open Neural Network Exchange (ONNX) kan förbättra prestandan. I genomsnitt kan konvertering till ONNX ge en prestandaökning på 2 gånger.

Mer information om ONNX med Azure Machine Learning finns i artikeln Skapa och påskynda ML modeller.

Använda modeller

Tränade maskininlärningsmodeller distribueras som webbtjänster i molnet eller lokalt. Distributioner använder CPU, GPU eller fält programmerbara grindmatriser (FPGA) för inferens. Du kan också använda modeller från Power BI.

När du använder en modell som en webbtjänst anger du följande:

  • De modeller som används för att poänglägga data som skickas till tjänsten/enheten.
  • Ett startskript. Det här skriptet accepterar begäranden, använder modeller för att poängdöma data och returnera ett svar.
  • En Azure Machine Learning miljö som beskriver de pip- och Conda-beroenden som krävs av modellen/inmatningsskripten.
  • Ytterligare tillgångar, till exempel text, data osv. som krävs av modellen/inmatningsskripten.

Du anger också konfigurationen för måldistributionsplattformen. Det kan till exempel vara typen av VM-familj, tillgängligt minne och antal kärnor när du distribuerar till Azure Kubernetes Service.

När avbildningen skapas läggs även de komponenter som krävs av Azure Machine Learning till. Det kan till exempel vara tillgångar som behövs för att köra webbtjänsten.

Batchbedömning

Batchbedömning stöds via ML pipelines. Mer information finns i Batch-förutsägelser om stordata.

Realtidswebbtjänster

Du kan använda dina modeller i webbtjänster med följande beräkningsmål:

  • Azure Container-instans
  • Azure Kubernetes Service
  • Lokal utvecklingsmiljö

Om du vill distribuera modellen som en webbtjänst måste du ange följande:

  • Modellen eller ensemblen av modeller.
  • Beroenden som krävs för att använda modellen. Till exempel ett skript som accepterar begäranden och anropar modellen, conda-beroenden osv.
  • Distributionskonfiguration som beskriver hur och var du distribuerar modellen.

Mer information finns i Distribuera modeller.

Kontrollerad utrullning

När du distribuerar till Azure Kubernetes Service kan du använda kontrollerad distribution för att aktivera följande scenarier:

  • Skapa flera versioner av en slutpunkt för en distribution
  • Utför A/B-testning genom att dirigera trafik till olika versioner av slutpunkten.
  • Växla mellan slutpunktsversioner genom att uppdatera trafikprocenten i slutpunktskonfigurationen.

Mer information finns i Kontrollerad ML modeller.

Analys

Microsoft Power BI stöder användning av maskininlärningsmodeller för dataanalys. Mer information finns i Azure Machine Learning integrering i Power BI (förhandsversion).

Samla in de styrningsdata som krävs för MLOps

Azure ML ger dig möjlighet att spåra hela granskningsloggen för alla dina ML med hjälp av metadata.

  • Azure ML integreras med Git för att spåra information om vilken lagringsplats/gren/genomför din kod som kom från.
  • Azure ML Datauppsättningar hjälper dig att spåra, profilera och versionsdata.
  • Med tolkning kan du förklara dina modeller, uppfylla regelefterlevnad och förstå hur modeller anländer till ett resultat för givna indata.
  • Azure ML Run history (Körningshistorik) lagrar en ögonblicksbild av koden, data och beräkningarna som används för att träna en modell.
  • Azure ML Model Registry samlar in alla metadata som är associerade med din modell (vilket experiment har tränat den, var den distribueras, om dess distributioner är felfria).
  • Med integrering med Azure kan du agera på händelser i ML livscykeln. Det kan till exempel vara modellregistrering, distribution, dataavdrift och träningshändelser (körning).

Tips

Även om viss information om modeller och datauppsättningar hämtas automatiskt kan du lägga till ytterligare information med hjälp av taggar. När du letar efter registrerade modeller och datauppsättningar på din arbetsyta kan du använda taggar som ett filter.

Att associera en datauppsättning med en registrerad modell är ett valfritt steg. Information om hur du refererar till en datauppsättning när du registrerar en modell finns i modellklassreferensen.

Meddela, automatisera och varna vid händelser i livscykeln ML livscykeln

Azure ML publicerar viktiga händelser till Azure EventGrid, som kan användas för att meddela och automatisera händelser i ML livscykeln. Mer information finns i det här dokumentet.

Övervaka driftproblem med & ML drift

Med övervakning kan du förstå vilka data som skickas till din modell och de förutsägelser som returneras.

Den här informationen hjälper dig att förstå hur din modell används. Insamlade indata kan också vara användbara vid träning av framtida versioner av modellen.

Mer information finns i Så här aktiverar du modelldatainsamling.

Träna om din modell på nya data

Ofta vill du verifiera din modell, uppdatera den eller till och med träna om den från grunden när du får ny information. Ibland är det en förväntad del av domänen att ta emot nya data. Andra gånger, som beskrivs i Identifiera dataavskjutning (förhandsversion)på datauppsättningar, kan modellprestanda försämras när det gäller sådant som ändringar i en viss sensor, ändringar av naturliga data, till exempel säsongseffekter eller funktioner som växlar i förhållande till andra funktioner.

Det finns inget universellt svar på "Hur gör jag för att vet om jag ska träna om?" Men Azure ML händelse- och övervakningsverktyg som diskuterats tidigare är bra utgångspunkter för automatisering. När du har valt att träna om bör du:

  • Förbearbeta dina data med en repeterbar, automatiserad process
  • Träna din nya modell
  • Jämför utdata från den nya modellen med den gamla modellens utdata
  • Använd fördefinierade kriterier för att välja om du vill ersätta din gamla modell

Ett tema för ovanstående steg är att omträningen ska automatiseras, inte ad hoc. Azure Machine Learning pipelines är ett bra svar för att skapa arbetsflöden som rör förberedelse av data, träning, validering och distribution. Läs Träna om modeller med Azure Machine Learning designer för att se hur pipelines och Azure Machine Learning-designern passar in i ett omträningsscenario.

Automatisera livscykeln ML livscykeln

Du kan använda GitHub azure-pipelines för att skapa en process för kontinuerlig integrering som tränar en modell. I ett typiskt scenario när en Dataforskare kontrollerar en ändring i Git-lagringsplatsen för ett projekt startar Azure Pipeline en träningskörning. Resultatet av körningen kan sedan granskas för att se den tränade modellens prestandaegenskaper. Du kan också skapa en pipeline som distribuerar modellen som en webbtjänst.

Tillägget Azure Machine Learning gör det enklare att arbeta med Azure Pipelines. Den innehåller följande förbättringar av Azure Pipelines:

  • Aktiverar val av arbetsyta när du definierar en tjänstanslutning.
  • Gör det möjligt att utlösa lanseringspipelines av tränade modeller som skapats i en träningspipeline.

Mer information om hur du använder Azure Pipelines med Azure Machine Learning finns i följande länkar:

Du kan också använda Azure Data Factory för att skapa en pipeline för datainmatning som förbereder data för användning med träning. Mer information finns i Pipeline för datainmatning.

Nästa steg

Läs mer genom att läsa och utforska följande resurser: