Bewerken

Delen via


Azure Databricks gebruiken om MLOps te organiseren

Azure Databricks

Oplossingsideeën

In dit artikel wordt een oplossingsidee beschreven. Uw cloudarchitect kan deze richtlijnen gebruiken om de belangrijkste onderdelen te visualiseren voor een typische implementatie van deze architectuur. Gebruik dit artikel als uitgangspunt om een goed ontworpen oplossing te ontwerpen die overeenkomt met de specifieke vereisten van uw workload.

Dit artikel bevat een MLOps-architectuur (Machine Learning Operations) en een proces dat gebruikmaakt van Azure Databricks. Gegevenswetenschappers en technici kunnen dit gestandaardiseerde proces gebruiken om machine learning-modellen en pijplijnen van ontwikkeling naar productie te verplaatsen.

Deze oplossing kan profiteren van volledige automatisering, continue bewaking en robuuste samenwerking en is daarom gericht op een niveau 4 van MLOps-volwassenheid. Deze architectuur maakt gebruik van de promotiecode waarmee de modelbenadering wordt gegenereerd in plaats van de benadering met het niveau van modellen. De promotiecode waarmee de modelbenadering wordt gegenereerd, is gericht op het schrijven en beheren van de code waarmee machine learning-modellen worden gegenereerd. De aanbevelingen in dit artikel bevatten opties voor geautomatiseerde of handmatige processen.

Architectuur

Diagram met een oplossing voor het gebruik van Azure Databricks voor MLOps.

In dit diagram ziet u de 12 stappen van deze werkstroom. Een lakehouse-productiegegevenssectie bevat de metrische gegevens van het gegevenstabelmodel, de functietabel en de metrische gegevens van het lakehouse-tabelmodel. Een broncodebeheersectie bevat een ontwikkel-, faserings- en releaseomgeving. Broncodebeheer bevat Azure DevOps en GitHub. In de belangrijkste ontwikkelomgeving leest stap 1 verkennende gegevensanalyse gegevens uit de gegevenstabel. Stap 2 modeltraining leest gegevens uit de gegevenstabel en de functietabel. Stap 3 voert code door naar de ontwikkelomgeving in broncodebeheer. Stap 4 voegt een aanvraag samen met de faseringsomgeving. De faseringsomgeving voor broncodebeheer activeert stap 5-eenheids- en CI-tests in de hoofdomgeving voor fasering, die gegevens uit de functietabel en de gegevenstabel leest. De code wijzigt de samenvoeging in de faseringsomgeving voor broncodebeheer. Stap 6 bouwt een releasebranch in de releaseomgeving. Een pijl die van de releaseomgeving naar de hoofdproductieomgeving wijst, zegt Machine Learning Databricks-taken implementeren. In de hoofdproductieomgeving worden in stap 7 functietabelvernieuwing gegevens uit de gegevenstabel gelezen en worden gegevens naar de functietabel verzonden. Stap 8 modeltraining leest gegevens uit driftdetectie en modelhertraining. Stap 8 pusht het model ook naar Unity Catalog. Stap 9 modelevaluatie en promotie laadt het model uit Unity Catalog voor evaluatie. Vervolgens wordt het model verzonden naar fasering en vervolgens productie in Unity Catalog. Bij stap 10 modelimplementatie wordt het model geladen voor deductie en leest u gegevens uit de functietabel. Stap 11: met bewaking worden gegevens uit de functietabel gelezen en worden de metrische gegevens van het lakehouse-tabelmodel gelezen. Stap 11 schrijft ook gegevens naar de lakehouse-tabel en naar Azure Monitor. Stap 12 model hertraining verwijst naar stap 8 en de pijlstatussen trigger model hertraining.

Een Visio-bestand van deze architectuur downloaden.

Workflow

De volgende werkstroom komt overeen met het voorgaande diagram. Gebruik broncodebeheer en opslagonderdelen om code en gegevens te beheren en te organiseren.

Broncodebeheer: de codeopslagplaats van dit project organiseert de notebooks, modules en pijplijnen. U kunt ontwikkelbranches maken om updates en nieuwe modellen te testen. Ontwikkel code in door Git ondersteunde notebooks of geïntegreerde ontwikkelomgevingen (IDE's) die kunnen worden geïntegreerd met Git-mappen , zodat u kunt synchroniseren met uw Azure Databricks-werkruimten. Broncodebeheer bevordert machine learning-pijplijnen uit de ontwikkelomgeving, testen in de faseringsomgeving en implementatie in de productieomgeving.

Lakehouse-productiegegevens: als data scientist hebt u alleen-lezentoegang tot productiegegevens in de ontwikkelomgeving. De ontwikkelomgeving kan gespiegelde gegevens en bewerkte vertrouwelijke gegevens bevatten. U hebt ook lees- en schrijftoegang in een ontwikkelopslagomgeving voor ontwikkeling en experimenten. U wordt aangeraden een lakehouse-architectuur te gebruiken voor gegevens waarin u Delta Lake-indelingsgegevens opslaat in Azure Data Lake Storage. Een lakehouse biedt een robuuste, schaalbare en flexibele oplossing voor gegevensbeheer. Als u toegangsbeheer wilt definiëren, gebruikt u passthrough - of toegangsbeheer voor Microsoft Entra ID-referenties.

De volgende omgevingen bestaan uit de hoofdwerkstroom.

Ontwikkeling

In de ontwikkelomgeving ontwikkelt u machine learning-pijplijnen.

  1. Experimentele gegevensanalyse (EDA): Verken gegevens in een interactief, iteratief proces. U kunt dit werk mogelijk niet implementeren in fasering of productie. Gebruik hulpprogramma's zoals Databricks SQL, de opdracht dbutils.data.summarize en Databricks AutoML.

  2. Modeltraining en andere machine learning-pijplijnen ontwikkelen: modulaire code voor machine learning-pijplijnen ontwikkelen en code organiseren via Databricks Notebooks of een MLflow-project. In deze architectuur leest de modeltrainingspijplijn gegevens uit het functiearchief en andere Lakehouse-tabellen. De pijplijn traint en tunest logboekmodelparameters en metrische gegevens naar de MLflow-traceringsserver. De API voor het functiearchief registreert het uiteindelijke model. Deze logboeken omvatten het model, de invoer en de trainingscode.

  3. Doorvoercode: Als u de machine learning-werkstroom naar productie wilt promoten, voert u de code voor featurization, training en andere pijplijnen door naar broncodebeheer. Plaats in de codebasis machine learning-code en operationele code in verschillende mappen, zodat teamleden tegelijkertijd code kunnen ontwikkelen. Machine learning-code is code die is gerelateerd aan het model en de gegevens. Operationele code is code die is gerelateerd aan Databricks-taken en -infrastructuur.

Deze kerncyclus van activiteiten die u uitvoert wanneer u code schrijft en test, wordt het innerloop-proces genoemd. Als u het innerloop-proces voor de ontwikkelingsfase wilt uitvoeren, gebruikt u Visual Studio Code in combinatie met de dev-container CLI en de Databricks CLI. U kunt de code schrijven en lokaal eenheidstests uitvoeren. U moet ook de modelpijplijnen verzenden, bewaken en analyseren vanuit de lokale ontwikkelomgeving.

Staging

In de faseringsomgeving worden wijzigingen in machine learning-pijplijnen getest in een omgeving die productie nabootst.

  1. Een aanvraag samenvoegen: Wanneer u een samenvoegaanvraag of pull-aanvraag indient op basis van de faseringsvertakking (hoofdvertakking) van het project in broncodebeheer, voert een CI/CD-hulpprogramma (continue integratie en continue levering) zoals Azure DevOps tests uit.

  2. Eenheidstests en CI-tests uitvoeren: Eenheidstests worden uitgevoerd in CI-infrastructuur en integratietests worden uitgevoerd in end-to-end-werkstromen in Azure Databricks. Als de tests slagen, wordt de samenvoeging van de code gewijzigd.

  3. Een releasebranch bouwen: wanneer u de bijgewerkte machine learning-pijplijnen naar productie wilt implementeren, kunt u een nieuwe release bouwen. Met een implementatiepijplijn in het CI/CD-hulpprogramma worden de bijgewerkte pijplijnen opnieuw geïmplementeerd als nieuwe werkstromen.

Productie

Machine learning-technici beheren de productieomgeving, waarbij machine learning-pijplijnen rechtstreeks eindtoepassingen bedienen. De belangrijkste pijplijnen in functietabellen voor productievernieuwing, trainen en implementeren van nieuwe modellen, deductie uitvoeren of leveren en modelprestaties bewaken.

  1. Functietabel vernieuwen: deze pijplijn leest gegevens, berekent functies en schrijfbewerkingen naar functieopslagtabellen . U kunt deze pijplijn zo configureren dat deze continu wordt uitgevoerd in de streamingmodus, volgens een schema wordt uitgevoerd of wordt uitgevoerd op een trigger.

  2. Modeltraining: In productie kunt u de modeltraining of hertrainingspijplijn configureren om te worden uitgevoerd op een trigger of een planning om een nieuw model te trainen op de meest recente productiegegevens. Modellen registreren zich automatisch bij Unity Catalog.

  3. Modelevaluatie en promotie: wanneer een nieuwe modelversie is geregistreerd, activeert de CD-pijplijn, die tests uitvoert om ervoor te zorgen dat het model goed presteert in productie. Wanneer het model wordt getest, houdt Unity Catalog de voortgang bij via modelfaseovergangen. Tests omvatten nalevingscontroles, A/B-tests om het nieuwe model te vergelijken met het huidige productiemodel en infrastructuurtests. Lakehouse-tabellen registreren testresultaten en metrische gegevens. U kunt desgewenst handmatige afmeldingen vereisen voordat modellen naar productie gaan.

  4. Modelimplementatie: Wanneer een model in productie gaat, wordt het geïmplementeerd voor scoren of leveren. De meest voorkomende implementatiemodi zijn:

    • Batch- of streamingscore: Voor latenties van minuten of langer zijn batch- en streaming-opties de meest rendabele opties. De scorepijplijn leest de meest recente gegevens uit het functiearchief, laadt de nieuwste versie van het productiemodel uit Unity Catalog en voert deductie uit in een Databricks-taak. Het kan voorspellingen publiceren naar Lakehouse-tabellen, een JDBC-verbinding (Java Database Connectivity), platte bestanden, berichtenwachtrijen of andere downstreamsystemen.

    • Online serveren (REST API's): Voor gebruiksscenario's met lage latentie hebt u over het algemeen online serveren nodig. MLflow kan modellen implementeren in Mosaic AI Model Serving, cloudprovidersystemen en andere systemen. In alle gevallen initialiseert het serversysteem met het nieuwste productiemodel uit Unity Catalog. Voor elke aanvraag worden functies opgehaald uit een online functiearchief en worden voorspellingen uitgevoerd.

  5. Bewaking: Continue of periodieke werkstromen bewaken invoergegevens en modelvoorspellingen voor drift, prestaties en andere metrische gegevens. U kunt het Delta Live Tables-framework gebruiken om bewaking voor pijplijnen te automatiseren en de metrische gegevens op te slaan in Lakehouse-tabellen. Databricks SQL, Power BI en andere hulpprogramma's kunnen uit deze tabellen lezen om dashboards en waarschuwingen te maken. Als u metrische gegevens, logboeken en infrastructuur van toepassingen wilt bewaken, kunt u Azure Monitor ook integreren met Azure Databricks.

  6. Driftdetectie en hertraining van modellen: deze architectuur ondersteunt zowel handmatige als automatische hertraining. Plan hertrainingstaken om modellen nieuw te houden. Nadat een gedetecteerde drift een vooraf geconfigureerde drempelwaarde overschrijdt die u in de bewakingsstap hebt ingesteld, analyseren de hertrainingspijplijnen de drift en activeren hertraining. U kunt pijplijnen zo configureren dat ze automatisch worden geactiveerd, of u kunt een melding ontvangen en vervolgens de pijplijnen handmatig uitvoeren.

Onderdelen

  • Een data lakehouse-architectuur verenigt de elementen van data lakes en datawarehouses. Gebruik een lakehouse om gegevensbeheer en prestatiemogelijkheden op te halen die doorgaans worden gevonden in datawarehouses, maar met de goedkope, flexibele objectarchieven die data lakes bieden.

    • Delta Lake is de aanbevolen opensource-gegevensindeling voor een lakehouse. Azure Databricks slaat gegevens op in Data Lake Storage en biedt een krachtige query-engine.
  • MLflow is een opensource-project voor het beheren van de end-to-end levenscyclus van machine learning. MLflow heeft de volgende onderdelen:

    • Met de traceringsfunctie worden experimenten bijgehouden, zodat u parameters, metrische gegevens en modelartefacten kunt vastleggen en vergelijken.

      • Automatische logboekregistratie van Databricks breidt automatische logboekregistratie van MLflow uit om machine learning-experimenten bij te houden en automatisch modelparameters, metrische gegevens, bestanden en herkomstgegevens vast te stellen.
    • MLflow-model is een indeling die u kunt gebruiken om modellen op te slaan en te implementeren vanuit elke machine learning-bibliotheek op verschillende platformen voor modelverdiening en deductie.

    • Unity Catalog biedt gecentraliseerd toegangsbeheer, controle, herkomst en mogelijkheden voor gegevensdetectie in Azure Databricks-werkruimten.

    • Mozaïek AI Model Serving fungeert als host voor MLflow-modellen als REST-eindpunten.

  • Azure Databricks biedt een beheerde MLflow-service met bedrijfsbeveiligingsfuncties, hoge beschikbaarheid en integraties met andere azure Databricks-werkruimtefuncties.

    • Databricks Runtime voor Machine Learning automatiseert het maken van een cluster dat is geoptimaliseerd voor machine learning en installeert populaire machine learning-bibliotheken zoals TensorFlow, PyTorch en XGBoost. Azure Databricks wordt ook vooraf geïnstalleerd voor Machine Learning-hulpprogramma's, zoals AutoML en functieopslagclients.

    • Een functiearchief is een gecentraliseerde opslagplaats met functies. Gebruik het functiearchief om functies te detecteren en te delen en om scheeftrekken van gegevens tussen modeltraining en deductie te voorkomen.

    • Databricks SQL kan worden geïntegreerd met verschillende hulpprogramma's, zodat u query's en dashboards in uw favoriete omgevingen kunt ontwerpen zonder dat u zich hoeft aan te passen aan een nieuw platform.

    • Git-mappen bieden integratie met uw Git-provider in de Azure Databricks-werkruimte, waardoor de samenwerking van notebooks of code en IDE-integratie wordt verbeterd.

    • Werkstromen en taken bieden een manier om niet-interactieve code uit te voeren in een Azure Databricks-cluster. Voor machine learning bieden taken automatisering voor gegevensvoorbereiding, featurization, training, deductie en bewaking.

Alternatieven

U kunt deze oplossing aanpassen aan uw Azure-infrastructuur. Houd rekening met de volgende aanpassingen:

  • Gebruik meerdere ontwikkelwerkruimten die een gemeenschappelijke productiewerkruimte delen.

  • Exchange een of meer architectuuronderdelen voor uw bestaande infrastructuur. U kunt bijvoorbeeld Azure Data Factory gebruiken om Databricks-taken te organiseren.

  • Integreer met uw bestaande CI/CD-hulpprogramma's via Git en Azure Databricks REST API's.

  • Gebruik Microsoft Fabric of Azure Synapse Analytics als alternatieve services voor machine learning-mogelijkheden.

Scenariodetails

Deze oplossing biedt een robuust MLOps-proces dat gebruikmaakt van Azure Databricks. U kunt alle elementen in de architectuur vervangen, zodat u zo nodig andere Azure-services en partnerservices kunt integreren. Deze architectuur en beschrijving zijn aangepast uit het e-book The Big Book of MLOps. Het e-book verkent deze architectuur in meer detail.

MLOps helpt het risico op fouten in machine learning- en AI-systemen te verminderen en verbetert de efficiëntie van samenwerking en hulpprogramma's. Zie MLOps ontwerpen in lakehouse voor een inleiding tot MLOps en een overzicht van deze architectuur.

Gebruik deze architectuur voor het volgende:

  • Verbind uw zakelijke belanghebbenden met machine learning- en data science-teams. Gebruik deze architectuur om notebooks en IDE's op te nemen voor ontwikkeling. Zakelijke belanghebbenden kunnen metrische gegevens en dashboards bekijken in Databricks SQL, allemaal binnen dezelfde lakehouse-architectuur.

  • Maak uw machine learning-infrastructuur datacentrisch. Deze architectuur behandelt machine learning-gegevens net als andere gegevens. Machine learning-gegevens omvatten gegevens van functie-engineering, training, deductie en bewaking. Deze architectuur hergebruikt hulpprogramma's voor productiepijplijnen, dashboarding en andere algemene gegevensverwerking voor machine learning-gegevensverwerking.

  • MLOps implementeren in modules en pijplijnen. Net als bij elke softwaretoepassing kunt u de modulaire pijplijnen en code in deze architectuur gebruiken om afzonderlijke onderdelen te testen en de kosten van toekomstige herstructurering te verlagen.

  • Automatiseer waar nodig uw MLOps-processen. In deze architectuur kunt u stappen automatiseren om de productiviteit te verbeteren en het risico op menselijke fouten te verminderen, maar u hoeft niet elke stap te automatiseren. Azure Databricks staat gebruikersinterface en handmatige processen toe naast API's voor automatisering.

Potentiële gebruikscases

Deze architectuur is van toepassing op alle typen machine learning, deep learning en geavanceerde analyses. Algemene machine learning- en AI-technieken in deze architectuur zijn onder andere:

  • Klassieke machine learning, zoals lineaire modellen, op structuur gebaseerde modellen en stimuleren.
  • Moderne deep learning, zoals TensorFlow en PyTorch.
  • Aangepaste analyses, zoals statistieken, Bayesiaanse methoden en grafiekanalyses.

De architectuur ondersteunt zowel kleine gegevens (één machine) als grote gegevens (gedistribueerde computing en GPU versneld). In elke fase van de architectuur kunt u rekenresources en bibliotheken kiezen om zich aan te passen aan de gegevens- en probleemdimensies van uw scenario.

De architectuur is van toepassing op alle soorten branches en zakelijke use cases. Azure Databricks-klanten die deze architectuur gebruiken, omvatten kleine en grote organisaties in de volgende branches:

  • Consumentengoederen en detailhandeldiensten
  • Financiële dienstverlening
  • Gezondheidszorg en biowetenschappen
  • Informatietechnologie

Zie Databricks-klanten voor voorbeelden.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen