Redigera

Dela via


Många modeller maskininlärning i stor skala med Azure Machine Learning

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

Den här artikeln beskriver en arkitektur för många modeller som använder Machine Learning- och beräkningskluster. Det ger stor mångsidighet för situationer som kräver komplex konfiguration.

En tillhörande artikel, Många modellerar maskininlärning i stor skala i Azure med Spark, använder Apache Spark i antingen Azure Databricks eller Azure Synapse Analytics.

Arkitektur

Arkitekturdiagram för många modeller maskininlärning i stor skala i Azure med Azure Machine Learning.

Ladda ned en Visio-fil med den här arkitekturen.

Arbetsflöde

  1. datainmatning:

    • Azure Data Factory hämtar data från en källdatabas och kopierar dem till Azure Data Lake Storage.
    • Data lagras sedan i ett Machine Learning-datalager som en tabelldatauppsättning.
  2. Model-Training Pipeline:

    1. Förbereda data:
      • Träningspipelinen hämtar data från datalagringen och transformerar dem ytterligare efter behov.
      • Data grupperas i datauppsättningar för träning av modellerna.
    2. Träningsmodeller:
      • Pipelinen tränar modeller för alla datauppsättningar som skapas under dataförberedelserna.
      • Den använder klassen ParallelRunStep för att träna flera modeller parallellt.
      • Efter träningen registrerar pipelinen modellerna i Machine Learning tillsammans med deras testmått.
  3. Model-Promotion Pipeline:

    1. Utvärdera modeller:
      • Marknadsföringspipelinen utvärderar de tränade modellerna innan de flyttas till produktion.
      • En DevOps-pipeline tillämpar affärslogik för att avgöra om en modell uppfyller kriterierna för distribution (t.ex. kontrollerar att noggrannheten för testdata överskrider 80%).
    2. Registrera modeller:
      • Marknadsföringspipelinen registrerar kvalificerande modeller i machine learning-arbetsytan för produktion.
  4. Modell Batch-Scoring Pipeline:

    1. Förbereda data:
      • Pipelinen för batchbedömning hämtar data från datalagringen och transformerar varje fil ytterligare efter behov.
      • Data grupperas i datauppsättningar för bedömning.
    2. Poängmodeller:
      • Pipelinen använder klassen ParallelRunStep för att poängsätta flera datauppsättningar parallellt.
      • Den identifierar lämplig modell för varje datauppsättning i Machine Learning genom att söka i modelltaggar.
      • Modellen laddas ned och används för att poängsätta datamängden.
      • Klassen DataTransferStep används för att skriva tillbaka resultaten till Azure Data Lake.
      • Förutsägelser skickas sedan från Azure Data Lake till Synapse SQL för servering.
  5. Real-Time bedömning:

    • Hanterad onlineslutpunkt används för att tillhandahålla realtidsbedömning.
    • På grund av det stora antalet modeller läses de in på begäran i stället för förinlästa.
  6. Resultat:

    1. Förutsägelser: Pipelinen för batchbedömning sparar förutsägelser till Synapse SQL.
    2. Mått: Power BI ansluter till modellförutsägelserna för att hämta och aggregera resultat för presentationen.

Komponenter

  • Azure Data Factory är en molnbaserad dataintegreringstjänst som gör det möjligt att skapa datadrivna arbetsflöden för att orkestrera och automatisera dataflytt och transformering. I den här arkitekturen används Azure Data Factory för att mata in företagsdata och metadata från tredje part i Azure Data Lake Storage.

  • Azure Stream Analytics är en analystjänst i realtid och en komplex händelsebearbetningstjänst som är utformad för att analysera och bearbeta stora volymer av snabbuppspelningsdata. I den här arkitekturen kan Azure Stream Analytics eventuellt användas för databearbetning i realtid, även om det inte uttryckligen visas i arbetsflödet.

  • Azure Machine Learning är en maskininlärningstjänst i företagsklass för att snabbt skapa och distribuera modeller. Det ger användare på alla kunskapsnivåer verktyg som en designer med låg kod, automatiserad ML (AutoML) och en värdbaserad Jupyter Notebook-miljö som stöder olika IDE:er. I den här arkitekturen används Azure Machine Learning för att hantera livscykeln för maskininlärningsmodeller, inklusive träning, utvärdering, distribution och orkestrering av pipelines som träning, befordran och bedömning.

    Managed Online Endpoint är en funktion i Azure Machine Learning som används för realtidsbedömning. I den här arkitekturen är den ett skalbart och säkert sätt att hantera förutsägelser nästan i realtid genom att läsa in maskininlärningsmodeller på begäran.

  • ParallelRunStep är en komponent i Azure Machine Learning-pipelines som används för att köra parallella jobb effektivt. Det möjliggör skalbar körning av batchprocesser, till exempel träning eller bedömning av många modeller samtidigt. I den här arkitekturen används ParallelRunStep i både modelltränings- och batchbedömningspipelines för att träna eller poängsätta flera datamängder eller modeller parallellt, vilket avsevärt minskar körningen av dessa åtgärder.

  • Azure Data Lake Storage är en mycket skalbar och säker lagringstjänst för analysarbetsbelastningar med höga prestanda. I den här arkitekturen fungerar Azure Data Lake Storage som det primära lagringslagret för rådata och transformerade datauppsättningar, samt för lagring av resultat från bedömningspipelines.

  • Azure Synapse Analytics är en analystjänst som förenar dataintegrering, lagring av företagsdata och stordataanalys. Den används i den här arkitekturen för att lagra batchbedömningsresultat, vilket möjliggör effektiv frågekörning och hämtning av förutsägelser för rapportering eller analys. Synapse SQL används specifikt för att hantera förutsägelser till underordnade program och göra det möjligt för visualiseringsverktyg som Power BI att komma åt aggregerade resultat.

  • Azure SQL Database är en fullständigt hanterad relationsdatabas som en tjänst. I den här arkitekturen används Azure SQL Database för att lagra strukturerade data som kan efterfrågas eller analyseras som en del av datapipelinen.

  • Azure DevOps är en uppsättning utvecklartjänster som tillhandahåller omfattande livscykelhantering för program och infrastruktur. Den innehåller verktyg för arbetsspårning, källkontroll, bygge och CI/CD, pakethantering och testlösningar. I den här arkitekturen används Azure DevOps för att hantera CI/CD-pipelines för att automatisera modellhöjning, testning och distribution till produktionsmiljöer.

  • Microsoft Power BI är en samling programvarutjänster, appar och anslutningsappar som fungerar tillsammans för att omvandla orelaterade datakällor till sammanhängande, visuellt uppslukande och interaktiva insikter. I den här arkitekturen ansluter Power BI till Synapse SQL för att hämta och presentera förutsägelser och aggregerade mått via interaktiva instrumentpaneler.

Alternativ

  • Källdata kan komma från valfri databas.
  • Du kan använda Azure Kubernetes Service (AKS) för realtidsinferens i stället för hanterade onlineslutpunkter. AKS möjliggör distribution av containerbaserade modeller och ger mer kontroll över distributionen, vilket möjliggör dynamisk inläsning av modeller för att hantera inkommande begäranden utan att förbruka resurser.

Information om scenario

Många maskininlärningsproblem är för komplexa för att en enskild maskininlärningsmodell ska kunna lösa. Oavsett om det handlar om att förutsäga försäljning för varje objekt i varje butik eller modellera underhåll för hundratals oljebrunnar, kan en modell för varje instans förbättra resultatet på många maskininlärningsproblem. Det här många modellmönstret är vanligt inom en mängd olika branscher och har många verkliga användningsfall. Med hjälp av Azure Machine Learning kan en pipeline för många modeller från slutpunkt till slutpunkt omfatta modellträning, batchinferensdistribution och distribution i realtid.

En lösning för många modeller kräver en annan datauppsättning för varje modell under träning och bedömning. Om uppgiften till exempel är att förutsäga försäljning för varje objekt i varje lager, kommer varje datauppsättning att vara för en unik kombination av objektlager.

Potentiella användningsfall

  • Detaljhandel: En butikskedja måste skapa en separat intäktsprognosmodell för varje butik och artikel, med totalt över 1 000 modeller per butik.
  • Leveranskedja: För varje kombination av lager och produkt måste ett distributionsföretag optimera inventeringen.
  • Restauranger: En kedja med tusentals franchisetagare måste prognostisera efterfrågan på var och en.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

  • Datapartitioner Partitionering av data är nyckeln till att implementera många modeller-mönstret. Om du vill ha en modell per lager består en datauppsättning av alla data för ett lager, och det finns lika många datauppsättningar som det finns lager. Om du vill modellera produkter efter butik finns det en datauppsättning för varje kombination av produkter och butiker. Beroende på källdataformatet kan det vara enkelt att partitionera data, eller så kan det kräva omfattande datablandning och transformering. Spark och Synapse SQL skalas mycket bra för sådana uppgifter, medan Python Pandas inte gör det, eftersom det bara körs på en nod och process.
  • Modellhantering: Tränings- och bedömningspipelines identifierar och anropar rätt modell för varje datauppsättning. För att göra detta beräknar de taggar som kännetecknar datamängden och använder sedan taggarna för att hitta matchande modell. Taggarna identifierar datapartitionsnyckeln och modellversionen och kan även ge annan information.
  • Välja rätt arkitektur:
    • Spark är lämpligt när din träningspipeline har komplexa datatransformerings- och grupperingskrav. Den tillhandahåller flexibla metoder för delning och gruppering för att gruppera data efter kombinationer av egenskaper, till exempel produktlager eller platsprodukt. Resultaten kan placeras i en Spark DataFrame för användning i efterföljande steg.
    • När dina maskininlärningstränings- och bedömningsalgoritmer är enkla kan du kanske partitionera data med bibliotek som scikit-learn. I sådana fall kanske du inte behöver Spark, så du kan undvika eventuella komplexiteter som kan uppstå när du installerar Azure Synapse eller Azure Databricks.
    • När träningsdatauppsättningarna redan har skapats, till exempel i separata filer eller i separata rader eller kolumner, behöver du inte Spark för komplexa datatransformeringar.
    • Machine Learning- och beräkningsklusterlösningen ger stor mångsidighet för situationer som kräver komplex konfiguration. Du kan till exempel använda en anpassad Docker-container, ladda ned filer eller ladda ned förtränade modeller. Djupinlärning för visuellt innehåll och bearbetning av naturligt språk (NLP) är exempel på program som kan kräva sådan mångsidighet.
  • Separata modelllagringsplatser: För att skydda de distribuerade modellerna bör du överväga att lagra dem på sin egen lagringsplats som tränings- och testpipelines inte rör.
  • ParallelRunStep-klass: Klassen Python ParallelRunStep är ett kraftfullt alternativ för att köra många modellers träning och slutsatsdragning. Den kan partitionera dina data på flera olika sätt och sedan tillämpa maskininlärningsskriptet på delar av partitionen parallellt. Precis som andra former av Maskininlärningsträning kan du ange en anpassad träningsmiljö med åtkomst till Python Package Index-paket (PyPI) eller en mer avancerad anpassad Docker-miljö för konfigurationer som kräver mer än standard-PyPI. Det finns många processorer och GPU:er att välja mellan.
  • Online-slutsatsdragning: Om en pipeline läser in och cachelagrar alla modeller i början kan modellerna uttömma containerns minne. Läs därför in modellerna på begäran i körningsmetoden, även om det kan öka svarstiden något.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Checklista för designgranskning för kostnadsoptimering.

Använd priskalkylatorn för att bättre förstå kostnaden för att köra det här scenariot på Azure. Bra startantaganden är:

  • Serveringsmodellerna tränas dagligen för att hålla dem aktuella.
  • För en datamängd på 40 miljoner rader med 10 000 kombinationer av lagring och produkt tar det cirka 30 minuter att träna på Azure Databricks med ett kluster etablerat med 12 virtuella datorer som använder Ls16_v2 instanser.
  • Batchbedömning med samma uppsättning data tar cirka 20 minuter.
  • Du kan använda Machine Learning för att distribuera inferens i realtid. Beroende på din begärandevolym väljer du en lämplig typ av virtuell dator och klusterstorlek.
  • Ett AKS-kluster autoskalningar efter behov, vilket resulterar i att två noder per månad är aktiva i genomsnitt.

Om du vill se hur priserna skiljer sig åt för ditt användningsfall ändrar du variablerna så att de matchar din förväntade datastorlek och serveringsbelastningskrav. För större eller mindre träningsdatastorlekar ökar eller minskar du storleken på Azure Databricks-klustret. Om du vill hantera fler samtidiga användare under modellservering ökar du AKS-klusterstorleken.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudförfattare:

Nästa steg