Batchbedömning av Spark-modeller på Azure Databricks

Microsoft Entra ID
Azure Databricks
Azure Data Factory
Azure Blob Storage

Den här referensarkitekturen visar hur du skapar en skalbar lösning för batchbedömning av en Apache Spark-klassificeringsmodell enligt ett schema med Hjälp av Azure Databricks. Azure Databricks är en Apache Spark-baserad analysplattform som är optimerad för Azure. Azure Databricks erbjuder tre miljöer för att utveckla dataintensiva program: Databricks SQL, Databricks Datavetenskap & Engineering och Databricks Machine Learning. Databricks Machine Learning är en integrerad maskininlärningsmiljö från slutpunkt till slutpunkt som innehåller hanterade tjänster för experimentspårning, modellträning, funktionsutveckling och hantering samt funktions- och modellhantering. Du kan använda den här referensarkitekturen som en mall som kan generaliseras till andra scenarier. En referensimplementering för den här arkitekturen finns på GitHub.

Apache® och Apache Spark® är antingen registrerade varumärken eller varumärken som tillhör Apache Software Foundation i USA och/eller andra länder. Inget godkännande från Apache Software Foundation underförstås av användningen av dessa märken.

Arkitektur

Diagram som visar batchbedömning av Apache Spark-klassificeringsmodeller i Azure Databricks.

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

Arbetsflöde

Arkitekturen definierar ett dataflöde som är helt inneslutet i Azure Databricks baserat på en uppsättning sekventiellt utförda notebook-filer. Den består av följande komponenter:

Datafiler. Referensimplementeringen använder en simulerad datauppsättning som finns i fem statiska datafiler.

Inmatning. Notebook-filen för datainmatning laddar ned indatafilerna till en samling Databricks-datauppsättningar. I ett verkligt scenario strömmas data från IoT-enheter till Databricks-tillgänglig lagring, till exempel Azure SQL eller Azure Blob Storage. Databricks stöder flera datakällor.

Träningspipeline. Den här notebook-filen kör notebook-filen för funktionstekniker för att skapa en analysdatauppsättning från inmatade data. Den kör sedan en notebook-fil för modellbygge som tränar maskininlärningsmodellen med hjälp av apache Spark MLlib-skalbart maskininlärningsbibliotek.

Bedömningspipeline. Den här notebook-filen kör notebook-filen för funktionsutveckling för att skapa bedömningsdatauppsättningen från inmatade data och kör bedömningsanteckningsboken. Notebook-filen för bedömning använder den tränade Spark MLlib-modellen för att generera förutsägelser för observationerna i bedömningsdatauppsättningen. Förutsägelserna lagras i resultatlagret, en ny datauppsättning i Databricks-datalagret.

Schemaläggare. Ett schemalagt Databricks-jobb hanterar batchbedömning med Spark-modellen. Jobbet kör notebook-filen för bedömningspipelinen och skickar variabelargument via notebook-parametrar för att ange information för att konstruera bedömningsdatauppsättningen och var resultatdatauppsättningen ska lagras.

Lösningsdetaljer

Scenariot konstrueras som ett pipelineflöde. Varje notebook-fil är optimerad för att utföras i en batchinställning för var och en av åtgärderna: inmatning, funktionsutveckling, modellbyggnad och modellpoäng. Notebook-filen för funktionstekniker är utformad för att generera en allmän datamängd för någon av tränings-, kalibrerings-, testnings- eller bedömningsåtgärderna. I det här scenariot använder vi en strategi för tidsdelning för dessa åtgärder, så notebook-parametrarna används för att ange datumintervallfiltrering.

Eftersom scenariot skapar en batchpipeline tillhandahåller vi en uppsättning valfria undersökningsanteckningsböcker för att utforska utdata från pipeline notebook-filerna. Du hittar de här notebook-filerna i mappen notebook-filer för GitHub-lagringsplatsen:

  • 1a_raw-data_exploring.ipynb
  • 2a_feature_exploration.ipynb
  • 2b_model_testing.ipynb
  • 3b_model_scoring_evaluation.ipynb

Potentiella användningsfall

Ett företag i en tillgångsintensiv bransch vill minimera kostnaderna och stilleståndstiden i samband med oväntade mekaniska fel. Med hjälp av IoT-data som samlas in från deras datorer kan de skapa en modell för förutsägande underhåll. Den här modellen gör det möjligt för företaget att underhålla komponenter proaktivt och reparera dem innan de misslyckas. Genom att maximera användningen av mekaniska komponenter kan de styra kostnaderna och minska stilleståndstiden.

En förutsägande underhållsmodell samlar in data från datorerna och behåller historiska exempel på komponentfel. Modellen kan sedan användas för att övervaka komponenternas aktuella tillstånd och förutsäga om en viss komponent kommer att misslyckas snart. Vanliga användningsfall och modelleringsmetoder finns i Azure AI-guide för lösningar för förutsägande underhåll.

Den här referensarkitekturen är utformad för arbetsbelastningar som utlöses av förekomsten av nya data från komponentdatorerna. Bearbetningen omfattar följande steg:

  1. Mata in data från det externa datalagret till ett Azure Databricks-datalager.

  2. Träna en maskininlärningsmodell genom att omvandla data till en träningsdatauppsättning och sedan skapa en Spark MLlib-modell. MLlib består av de vanligaste maskininlärningsalgoritmerna och verktygen som är optimerade för att dra nytta av Spark-dataskalbarhetsfunktioner.

  3. Använd den tränade modellen för att förutsäga (klassificera) komponentfel genom att omvandla data till en bedömningsdatauppsättning. Poängsätta data med Spark MLLib-modellen.

  4. Lagra resultat på Databricks-datalagret för förbrukning efter bearbetning.

Notebook-filer finns på GitHub för att utföra var och en av dessa uppgifter.

Rekommendationer

Databricks har konfigurerats så att du kan läsa in och distribuera dina tränade modeller för att göra förutsägelser med nya data. Databricks ger också andra fördelar:

  • Stöd för enkel inloggning med Microsoft Entra-autentiseringsuppgifter.
  • Jobbschemaläggare för att köra jobb för produktionspipelines.
  • Helt interaktiv notebook-fil med samarbete, instrumentpaneler, REST-API:er.
  • Obegränsade kluster som kan skalas till valfri storlek.
  • Avancerad säkerhet, rollbaserade åtkomstkontroller och granskningsloggar.

Om du vill interagera med Azure Databricks-tjänsten använder du Databricks Workspace-gränssnittet i en webbläsare eller kommandoradsgränssnittet (CLI). Få åtkomst till Databricks CLI från valfri plattform som stöder Python 2.7.9 till 3.6.

Referensimplementeringen använder notebook-filer för att köra uppgifter i följd. Varje notebook-fil lagrar mellanliggande dataartefakter (tränings-, test-, bedömnings- eller resultatdatauppsättningar) till samma datalager som indata. Målet är att göra det enkelt för dig att använda det efter behov i ditt specifika användningsfall. I praktiken skulle du ansluta datakällan till din Azure Databricks-instans så att notebook-filerna kan läsa och skriva direkt tillbaka till lagringen.

Övervaka jobbkörningen via Databricks-användargränssnittet, datalagret eller Databricks CLI efter behov. Övervaka klustret med hjälp av händelseloggen och andra mått som Databricks tillhandahåller.

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.

Prestanda

Ett Azure Databricks-kluster möjliggör automatisk skalning som standard så att Databricks dynamiskt omallokerar arbetare för att ta hänsyn till egenskaperna för ditt jobb under körningen. Vissa delar av pipelinen kan vara mer beräkningsmässigt krävande än andra. Databricks lägger till extra arbetare under dessa faser av jobbet (och tar bort dem när de inte längre behövs). Autoskalning gör det enklare att uppnå hög klusteranvändning eftersom du inte behöver etablera klustret för att matcha en arbetsbelastning.

Utveckla mer komplexa schemalagda pipelines med hjälp av Azure Data Factory med Azure Databricks.

Lagring

I den här referensimplementeringen lagras data direkt i Databricks-lagring för enkelhetens skull. I en produktionsinställning kan du dock lagra data på molndatalagring, till exempel Azure Blob Storage. Databricks stöder även Azure Data Lake Store, Azure Synapse Analytics, Azure Cosmos DB, Apache Kafka och Apache Hadoop.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

Normalt beräknar du kostnader med hjälp av Azures priskalkylator. Andra överväganden beskrivs i avsnittet Kostnad i Microsoft Azure Well-Architected Framework.

Azure Databricks är ett Premium Spark-erbjudande med en tillhörande kostnad. Dessutom finns det prisnivåer för Standard och Premium Databricks.

I det här scenariot räcker det med standardprisnivån. Men om ditt specifika program kräver automatisk skalning av kluster för att hantera större arbetsbelastningar eller interaktiva Databricks-instrumentpaneler kan premiumnivån öka kostnaderna ytterligare.

Notebook-filerna för lösningen kan köras på valfri Spark-baserad plattform med minimala redigeringar för att ta bort Databricks-specifika paket. Se följande liknande lösningar för olika Azure-plattformar:

Distribuera det här scenariot

Om du vill distribuera den här referensarkitekturen följer du stegen som beskrivs i GitHub-lagringsplatsen för att skapa en skalbar lösning för bedömning av Spark-modeller i batch på Azure Databricks.

Deltagare

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

Huvudförfattare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg