Orkestrera MLOps på Azure Databricks med Databricks Notebook

Databricks
Blob Storage
Monitor

Det här scenariot beskriver en metod för maskininlärningsåtgärder (MLOps) som omfattar körning av modellträning och batchbedömning på Azure Databricks med Databricks Notebook som initierare, samt hantering av livscykeln för maskininlärning från slutet till slut med hjälp av MLflow-plattformen med öppen källkod.

Potentiella användningsfall

När du använder stora datauppsättningar (miljontals poster) för modellträning och batchbedömning kan MLOps-steg som funktionsteknik, modellträning och andra bli långvariga processer. För att säkerställa att dessa långvariga uppgifter hanteras korrekt och att varje steg fortsätter motståndskraftigt är det mycket viktigt att hantera, övervaka och använda MLOps-stegen med en hög grad av kontroll och flexibilitet.

Att använda ett MLflow-projekt är en vanlig metod för att orkestrera olika MLOps-faser. Begränsningar i värd- och distributionssystem kan dock göra det svårt att använda faser elastiskt med hjälp av MLflow. Alternativt kan du använda Databricks Notebook som orkestrerare som hanterar de olika MLOps-stegen som behövs för modellträning eller batchbedömning.

En Databricks Notebook-initierare kan köras med hjälp av ett Databricks-jobb i ett befintligt Databricks-kluster eller ett nytt kluster, en metod som gör att du kan få mer kontroll över orkestrering genom att dra nytta av ytterligare Databricks-funktioner som widgetar, bibliotek med notebook-omfång, jobb med mera.

Arkitektur

Processen i det här scenariot fungerar på följande sätt:

  1. Kör pipelinen för kontinuerlig integrering. Detta omfattar:

    1. Enhetstester och Lint-kontroller.

    2. Paketering ML källkod och MLOps-källkod (hjulpaket).

  2. Kör pipelinen för kontinuerlig distribution. Detta omfattar:

    1. Ladda upp paketen ML MLOps-hjul till Azure Databricks DBFS.

    2. Importera Orchestrator Python-källfilerna som Azure Databricks notebook-filer.

    3. Skapa eller uppdatera Azure Databricks jobb enligt jobbmallar (JSON-filer) som lagras i källkontrollen.

  3. Utlösa eller schemalägga modellträning eller batchbedömning av Azure Databricks jobb med obligatoriska parametrar.

  4. Azure Databricks anropar dess respektive orchestrator-anteckningsbok.

  5. Orchestrator-anteckningsboken kör ett magiskt Python "pip"-kommando för att ML och MLOps-hjulpaket som bibliotek med notebook-omfång.

  6. Orchestrator-anteckningsboken kör MLOps Python-funktionen och ML Python-funktion för fasen från installerade hjulpaket.

    Du kan också implementera villkorsstyrd Python-logik för att aktivera eller inaktivera specifika MLOps-faser för en viss körning eller omkörning av Azure Databricks jobbet. Om MLOps-fasen "Feature Engineering" till exempel måste inaktiveras för omkörning kan du använda en Azure Databricks jobbparameter för att ange när den inaktiveras.

    Observera: Det här steget upprepas för alla MLOps-steg.

  7. Resultatet av modellträningen eller batchbedömningen kan publiceras både i MLflow-artefakter och Azure Storage baserat på användning:

    1. MLflow Model Registry används för att lagra den tränade modellen för batchbedömning.

    2. MLflow-artefakter kan innehålla statistiska resultat under träning eller batchbedömning. Till exempel PCA-grafer, Box-diagram, UMAP osv.

    3. Azure Storage kan innehålla batchbedömningsresultat.

  8. Övervaka en körning Azure Databricks jobb:

    1. MLflow-parametrar används för att lagra modellrelaterade parametrar, till exempel att träna hyperparametrar osv.

    2. MLflow-mått används för lagring av modellprestandamått.

    3. Azure Monitor används för att lagra MLOps-stegloggar, spårningar och mått.

    4. Azure Monitor används för övergripande övervakning av Azure Databricks kluster.

Fördelar

Förutom att åtgärda problemet med en långvarig process, ger den här metoden även potentiella fördelar:

  • Ett alternativ till MLflow-projekt

    • Med den här metoden kan du återanvända ett befintligt Databricks-kluster. Om du vill köra ett MLflow-projekt Azure Databricks måste ett nytt kluster skapas. ett befintligt kluster kan inte användas. I vissa situationer går det dock inte att skapa ett nytt kluster på Databricks– till exempel om Databricks-tjänsten delas eller om du saknar nödvändig behörighet för att skapa nya kluster. I sådana situationer erbjuder den här metoden en lösning.

    • Den här metoden kan användas helt i Databricks-ekosystemet med hjälp av funktioner som Jobb eller Nodpooler utan att interagera med externa system (till exempel MLflow CLI). Detta kan krävas om Databricks-åtkomsten begränsas bakom ett VPN.

  • MlOps-kods testbarhet

    • Enhetstestning av MLOps-paket möjliggör identifiering av fel tidigt i utvecklingsprocessen.

    • Genom att använda notebook-datorer för orkestrering kan orkestreringskoden testas med hjälp av integreringstester med hjälp av ett testramverk som Nutter.

Komponenter

I det här scenariot används följande komponenter:

  • MLOps, baserat på DevOps-principer och metoder som ökar effektiviteten för arbetsflöden.

  • MLflow, en plattform med öppen källkod för att hantera livscykeln för maskininlärning från slutet till slut.

  • Azure Databricks, en dataanalysplattform som är optimerad för Microsoft Azure plattform för molntjänster.

  • Azure Blob Storage, Microsofts objektlagringslösning för molnet. Blob Storage är optimerad för lagring av enorma mängder ostrukturerade data.

  • Azure Monitor, en omfattande lösning för att samla in, analysera och agera på telemetri från dina molnmiljöer och lokala miljöer.

Överväganden

Den här arkitekturen har inte stöd för att köra i fjärrmiljöer.

Alternativ

Om du kan skapa nya Databricks-kluster och interagera med externa system som MLflow CLI kan du också köra dessa typer av arbetsbelastningar med hjälp av MLflow-projekt. Se Köra MLflow Projects på Azure Databricks.

Om dina arbetsbelastningar är starkt beroende av fjärrkörning med Azure Machine Learning och en containerdistributionslösning som Azure Kubernetes Service (AKS), kan MLflow också passa bättre för dina behov. Se MLflow och Azure Machine Learning.

Prissättning

Kostnaderna för det här användningsfallet beror på standardpriset för följande tjänster, baserat på din användning:

Distribuera det här scenariot

Ett exempel på implementering av det här konceptet finns på Azure Databricks MLOps med MLflow-lagringsplatsen . Det här exemplet innehåller:

  • Ett sätt att köra Python-baserade MLOps utan att använda MLflow-projekt,men fortfarande använda MLflow för att hantera livscykeln för maskininlärning från slutet till slut.

  • Ett exempel på maskininlärningskällkodstruktur tillsammans med enhetstestfall.

  • Ett exempel på MLOps-kodstruktur tillsammans med enhetstestfall.

  • En demokonfiguration för att prova din prenumeration.

Nästa steg

Vill du lära dig mer om att utveckla en maskininlärningslösning i Azure? Tänk på följande artiklar:

Du kanske också tycker att de här Architecture Center-artiklarna är användbara: