Bewerken

Delen via


Veel modellen machine learning (ML) op schaal in Azure met Spark

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

In dit artikel wordt een architectuur beschreven voor veel modellen die gebruikmaken van Apache Spark in Azure Databricks of Azure Synapse Analytics. Spark is een krachtig hulpprogramma voor de grote en complexe gegevenstransformaties die sommige oplossingen vereisen.

Notitie

Gebruik Spark-versies 3.0 en hoger voor veel modellentoepassingen. De mogelijkheden voor gegevenstransformatie en ondersteuning voor Python en pandas zijn veel beter dan in eerdere versies.

Een bijgezel artikel, Veel modellen machine learning op schaal met Azure Machine Learning, maakt gebruik van Machine Learning- en rekenclusters.

Architectuur

Architectuurdiagram voor veel modellen machine learning op schaal in Azure met Spark.

Een Visio-bestand van deze architectuur downloaden.

Gegevensstroom

  1. Gegevensopname: Azure Data Factory haalt gegevens op uit een brondatabase en kopieert deze naar Azure Data Lake Storage.
  2. Pijplijn voor modeltraining:
    1. Gegevens voorbereiden: De trainingspijplijn haalt de gegevens op uit Data Lake Storage en gebruikt Spark om deze te groeperen in gegevenssets voor het trainen van de modellen.
    2. Modellen trainen: De pijplijn traint modellen voor alle gegevenssets die zijn gemaakt tijdens het voorbereiden van gegevens. De pandas-functie-API wordt gebruikt om meerdere modellen parallel te trainen. Nadat een model is getraind, registreert de pijplijn deze in Machine Learning, samen met de metrische testgegevens.
  3. Pijplijn voor modelpromotie:
    1. Modellen evalueren: De promotiepijplijn evalueert de getrainde modellen voordat ze naar productie worden verplaatst. Een DevOps-pijplijn past bedrijfslogica toe om te bepalen of een model voldoet aan de criteria voor implementatie. Er kan bijvoorbeeld worden gecontroleerd of de nauwkeurigheid van de testgegevens hoger is dan 80 procent.
    2. Modellen registreren: Met de promotiepijplijn worden de modellen geregistreerd die in aanmerking komen voor de Machine Learning-productiewerkruimte.
  4. Modelpijplijn voor batchgewijs scoren:
    1. Gegevens voorbereiden: de pijplijn voor batchgewijs scoren haalt gegevens op uit Data Lake Storage en gebruikt Spark om deze te groeperen in gegevenssets voor scoren.
    2. Scoremodellen: De pijplijn maakt gebruik van de pandas-functie-API om meerdere gegevenssets parallel te scoren. Het vindt het juiste model voor elke gegevensset in Machine Learning door de modeltags te doorzoeken. Vervolgens wordt het model gedownload en gebruikt om de gegevensset te scoren. De Spark-connector wordt gebruikt voor Synapse SQL om de resultaten te behouden.
  5. Realtime scoren: Azure Kubernetes Service (AKS) kan indien nodig realtime scoren. Vanwege het grote aantal modellen moeten ze op aanvraag worden geladen, niet vooraf geladen.
  6. Resultaten:
    1. Voorspellingen: De pijplijn voor batchgewijs scoren slaat voorspellingen op in Synapse SQL.
    2. Metrische gegevens: Power BI maakt verbinding met de modelvoorspellingen om resultaten voor de presentatie op te halen en samen te voegen.

Onderdelen

  • Azure Machine Learning is een machine learning-service op bedrijfsniveau voor het snel bouwen en implementeren van modellen. Het biedt gebruikers op alle vaardigheidsniveaus een ontwerpfunctie met weinig code, geautomatiseerde ML (AutoML) en een gehoste Jupyter-notebookomgeving die ondersteuning biedt voor verschillende IDE's.
  • Azure Synapse Analytics is een analyseservice waarmee gegevensintegratie, zakelijke datawarehousing en big data-analyses worden gecombineerd.
  • Synapse SQL is een gedistribueerd querysysteem voor T-SQL dat datawarehousing- en gegevensvirtualisatiescenario's mogelijk maakt en T-SQL uitbreidt om streaming- en machine learning-scenario's aan te pakken. Het biedt zowel serverloze als toegewezen resourcemodellen.
  • Azure Data Lake Storage is een zeer schaalbare en veilige opslagservice voor hoogwaardige analyseworkloads.
  • Azure Kubernetes Service (AKS) is een volledig beheerde Kubernetes-service voor het implementeren en beheren van toepassingen in containers. AKS vereenvoudigt de implementatie van een beheerd AKS-cluster in Azure door de operationele overhead naar Azure te offloaden.
  • Azure DevOps is een set ontwikkelaarsservices die uitgebreid levenscyclusbeheer voor toepassingen en infrastructuur bieden. DevOps omvat werktracking, broncodebeheer, build en CI/CD, pakketbeheer en testoplossingen.
  • Microsoft Power BI is een verzameling softwareservices, apps en connectors die samenwerken om niet-gerelateerde gegevensbronnen om te zetten in coherente, visueel meeslepende en interactieve inzichten.

Alternatieven

  • U kunt Spark in Azure Synapse gebruiken in plaats van Spark in Azure Databricks voor het trainen en scoren van modellen.
  • De brongegevens kunnen afkomstig zijn van elke database.
  • U kunt een beheerd online-eindpunt of AKS gebruiken om realtime deductie te implementeren.

Scenariodetails

Veel machine learning-problemen zijn te complex voor één machine learning-model om op te lossen. Of het nu gaat om het voorspellen van de verkoop voor elk item van elke winkel, of het modelleren van onderhoud voor honderden oliebronnen, het hebben van een model voor elk exemplaar kan de resultaten van veel machine learning-problemen verbeteren. Dit veel modellenpatroon is zeer gebruikelijk in een groot aantal branches en is van toepassing op veel praktijkgebruiksscenario's. Met het gebruik van Azure Machine Learning kan een end-to-end pijplijn voor veel modellen modeltraining, batchdeductie en realtime-implementatie omvatten.

Voor een oplossing met veel modellen is een andere gegevensset vereist voor elk model tijdens het trainen en scoren. Als de taak bijvoorbeeld is om de verkoop te voorspellen voor elk item van elke winkel, is elke gegevensset voor een unieke combinatie van een itemarchief.

Potentiële gebruikscases

  • Retail: Een winkelketen moet een afzonderlijk model voor omzetprognoses maken voor elke winkel en elk artikel, met in totaal meer dan 1000 modellen per winkel.
  • Toeleveringsketen: Voor elke combinatie van magazijn en product moet een distributiebedrijf de voorraad optimaliseren.
  • Restaurants: Een keten met duizenden franchises moet de vraag voor elke keten voorspellen.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

  • Gegevenspartities Partitioneren van de gegevens is de sleutel voor het implementeren van het vele modellenpatroon. Als u één model per archief wilt, bestaat een gegevensset uit alle gegevens voor één archief en zijn er zoveel gegevenssets als er winkels zijn. Als u producten per winkel wilt modelleren, is er een gegevensset voor elke combinatie van producten en winkels. Afhankelijk van de indeling van de brongegevens kan het eenvoudig zijn om de gegevens te partitioneren of kan uitgebreide gegevens shuffling en transformatie vereist zijn. Spark en Synapse SQL schalen zeer goed voor dergelijke taken, terwijl Python pandas dat niet doet, omdat deze slechts op één knooppunt en proces wordt uitgevoerd.
  • Modelbeheer: de trainings- en scorepijplijnen identificeren en aanroepen het juiste model voor elke gegevensset. Hiervoor berekenen ze tags die de gegevensset karakteriseren en gebruiken ze vervolgens de tags om het overeenkomende model te vinden. De tags identificeren de gegevenspartitiesleutel en de modelversie en bieden mogelijk ook andere informatie.
  • De juiste architectuur kiezen:
    • Spark is geschikt wanneer uw trainingspijplijn complexe vereisten voor gegevenstransformatie en groepering heeft. Het biedt flexibele splits- en groeperingstechnieken om gegevens te groeperen op combinaties van kenmerken, zoals product-winkel of locatie-product. De resultaten kunnen in een Spark DataFrame worden geplaatst voor gebruik in volgende stappen.
    • Wanneer uw machine learning-training en scorealgoritmen eenvoudig zijn, kunt u mogelijk gegevens partitioneren met bibliotheken zoals scikit-learn. In dergelijke gevallen hebt u Spark mogelijk niet nodig, zodat u mogelijke complexiteiten kunt voorkomen die zich kunnen voordoen bij het installeren van Azure Synapse of Azure Databricks.
    • Wanneer de trainingsgegevenssets al zijn gemaakt, bijvoorbeeld in afzonderlijke bestanden of in afzonderlijke rijen of kolommen, hebt u Spark niet nodig voor complexe gegevenstransformaties.
    • De oplossing voor Machine Learning- en rekenclusters biedt veel veelzijdigheid voor situaties waarvoor complexe installatie is vereist. U kunt bijvoorbeeld gebruikmaken van een aangepaste Docker-container of bestanden downloaden of vooraf getrainde modellen downloaden. Computer Vision en natuurlijke taalverwerking (NLP) deep learning zijn voorbeelden van toepassingen die een dergelijke veelzijdigheid vereisen.
  • Spark-training en -score: wanneer u de Spark-architectuur gebruikt, kunt u de Spark Pandas-functie-API gebruiken voor parallelle training en scoren.
  • Afzonderlijke modelopslagplaats: Als u de geïmplementeerde modellen wilt beveiligen, kunt u ze opslaan in hun eigen opslagplaats die de pijplijnen voor training en testen niet raken.
  • Online deductie: Als een pijplijn aan het begin wordt geladen en in de cache opgeslagen, kunnen de modellen het geheugen van de container uitputten. Laad daarom de modellen op aanvraag in de uitvoeringsmethode, ook al kan de latentie enigszins toenemen.
  • Schaalbaarheid van training: Met Behulp van Spark kunt u honderden duizenden modellen parallel trainen. Spark draait meerdere trainingsprocessen op elke VIRTUELE machine in een cluster. Elke kern kan een afzonderlijk proces uitvoeren. Hoewel dit een goed gebruik van resources betekent, is het belangrijk om de grootte van het cluster nauwkeurig te bepalen en de juiste SKU te kiezen, met name als het trainingsproces duur en langdurig is.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

Gebruik de prijscalculator om meer inzicht te krijgen in de kosten van het uitvoeren van dit scenario in Azure. Goede beginveronderstellingen zijn:

  • De ondersteunende modellen worden dagelijks getraind om ze actueel te houden.
  • Voor een gegevensset van 40 miljoen rijen met 10 duizend combinaties van winkels en producten duurt het ongeveer 30 minuten voor training op Azure Databricks met behulp van een cluster dat is ingericht met 12 VM's die gebruikmaken van Ls16_v2 exemplaren.
  • Batchgewijs scoren met dezelfde set gegevens duurt ongeveer 20 minuten.
  • U kunt Machine Learning gebruiken om realtime deductie te implementeren. Kies, afhankelijk van uw aanvraagvolume, een geschikt VM-type en clustergrootte.
  • Een AKS-cluster schaalt indien nodig automatisch, waardoor twee knooppunten per maand gemiddeld actief zijn.

Als u wilt zien hoe de prijzen voor uw use-case verschillen, wijzigt u de variabelen zodat deze overeenkomen met de verwachte gegevensgrootte en de belastingvereisten. Voor grotere of kleinere trainingsgegevens vergroot of verkleint u de grootte van het Azure Databricks-cluster. Als u meer gelijktijdige gebruikers wilt verwerken tijdens het leveren van modellen, verhoogt u de AKS-clustergrootte.

Medewerkers

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

Hoofdauteur:

Volgende stappen