Bewerken

Delen via


Veel modellen machine learning op schaal met Azure Machine Learning

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 Machine Learning- en rekenclusters. Het biedt geweldige veelzijdigheid voor situaties die complexe installatie vereisen.

Een aanvullende artikel, Veel modellen machine learning op schaal in Azure met Spark, maakt gebruik van Apache Spark in Azure Databricks of Azure Synapse Analytics.

Architectuur

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

Een Visio-bestand van deze architectuur downloaden.

Workflow

  1. gegevensopname:

    • Azure Data Factory haalt gegevens op uit een brondatabase en kopieert deze naar Azure Data Lake Storage.
    • De gegevens worden vervolgens opgeslagen in een Machine Learning-gegevensarchief als een gegevensset in tabelvorm.
  2. Model-Training-pijplijn:

    1. Gegevens voorbereiden:
      • De trainingspijplijn haalt de gegevens op uit het gegevensarchief en transformeert deze zo nodig verder.
      • De gegevens worden gegroepeerd in gegevenssets voor het trainen van de modellen.
    2. Modellen trainen:
      • De pijplijn traint modellen voor alle gegevenssets die tijdens de gegevensvoorbereiding zijn gemaakt.
      • De klasse ParallelRunStep wordt gebruikt om meerdere modellen parallel te trainen.
      • Na de training registreert de pijplijn de modellen in Machine Learning, samen met de metrische testgegevens.
  3. Model-Promotion-pijplijn:

    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 (bijvoorbeeld om te controleren of de nauwkeurigheid van testgegevens groter is dan 80%).
    2. Modellen registreren:
      • Met de promotiepijplijn worden in aanmerking komende modellen geregistreerd in de machine learning-werkruimte voor productie.
  4. Batch-Scoring-pijplijn:

    1. Gegevens voorbereiden:
      • De pijplijn voor batchgewijs scoren haalt gegevens op uit het gegevensarchief en transformeert elk bestand naar behoefte verder.
      • De gegevens worden gegroepeerd in gegevenssets voor scoren.
    2. scoremodellen:
      • De pijplijn maakt gebruik van de ParallelRunStep-klasse om meerdere gegevenssets parallel te scoren.
      • Het identificeert het juiste model voor elke gegevensset in Machine Learning door modeltags te doorzoeken.
      • Het model wordt gedownload en gebruikt om de gegevensset te scoren.
      • De DataTransferStep-klasse wordt gebruikt om de resultaten terug te schrijven naar Azure Data Lake.
      • Voorspellingen worden vervolgens vanuit Azure Data Lake doorgegeven aan Synapse SQL voor de server.
  5. Real-Time Scoren:

    • Beheerd online-eindpunt wordt gebruikt om realtime scoren te bieden.
    • Vanwege het grote aantal modellen worden ze op aanvraag geladen in plaats van 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 Data Factory- is een cloudservice voor gegevensintegratie waarmee gegevensgestuurde werkstromen kunnen worden gemaakt voor het organiseren en automatiseren van gegevensverplaatsing en -transformatie. In deze architectuur wordt Azure Data Factory gebruikt om zakelijke gegevens en metagegevens van derden op te nemen in Azure Data Lake Storage.

  • Azure Stream Analytics- is een realtime analyseservice en complexe gebeurtenisverwerkingsservice die is ontworpen voor het analyseren en verwerken van grote hoeveelheden snelle streaminggegevens. In deze architectuur kan Azure Stream Analytics mogelijk worden gebruikt voor realtime gegevensverwerking, hoewel deze niet expliciet wordt weergegeven in de werkstroom.

  • Azure Machine Learning is een machine learning-service op bedrijfsniveau voor het snel bouwen en implementeren van modellen. Het biedt gebruikers op alle vaardigheidsniveaus met hulpprogramma's zoals een ontwerpfunctie met weinig code, geautomatiseerde ML (AutoML) en een gehoste Jupyter-notebookomgeving die ondersteuning biedt voor verschillende IDE's. In deze architectuur wordt Azure Machine Learning gebruikt voor het beheren van de levenscyclus van machine learning-modellen, waaronder training, evaluatie, implementatie en het organiseren van pijplijnen zoals training, promotie en score.

    Managed Online Endpoint is een functie van Azure Machine Learning die wordt gebruikt voor realtime scoren. In deze architectuur biedt het een schaalbare en veilige manier om voorspellingen in bijna realtime te leveren door machine learning-modellen op aanvraag te laden.

  • ParallelRunStep is een onderdeel van Azure Machine Learning-pijplijnen die worden gebruikt voor het efficiënt uitvoeren van parallelle taken. Het maakt schaalbare uitvoering van batchprocessen mogelijk, zoals het trainen of scoren van veel modellen tegelijk. In deze architectuur wordt de ParallelRunStep gebruikt in zowel de pijplijnen voor modeltraining als batchgewijs scoren om meerdere gegevenssets of modellen parallel te trainen of te scoren, waardoor de runtime van deze bewerkingen aanzienlijk wordt verminderd.

  • Azure Data Lake Storage is een zeer schaalbare en veilige opslagservice voor hoogwaardige analyseworkloads. In deze architectuur fungeert Azure Data Lake Storage als de primaire opslaglaag voor onbewerkte en getransformeerde gegevenssets, en voor het opslaan van resultaten van scorepijplijnen.

  • Azure Synapse Analytics is een analyseservice waarmee gegevensintegratie, zakelijke datawarehousing en big data-analyses worden gecombineerd. Deze wordt in deze architectuur gebruikt om batchgewijs scoreresultaten op te slaan, waardoor u efficiënt query's kunt uitvoeren en voorspellingen kunt ophalen voor rapportage of analyse. Synapse SQL wordt specifiek gebruikt om voorspellingen te leveren aan downstreamtoepassingen en visualisatiehulpprogramma's zoals Power BI in staat te stellen toegang te krijgen tot geaggregeerde resultaten.

  • Azure SQL Database is een volledig beheerde relationele database als een service. In deze architectuur wordt Azure SQL Database gebruikt voor het opslaan van gestructureerde gegevens die kunnen worden opgevraagd of geanalyseerd als onderdeel van de gegevenspijplijn.

  • Azure DevOps is een set ontwikkelaarsservices die uitgebreid levenscyclusbeheer voor toepassingen en infrastructuur bieden. Het bevat hulpprogramma's voor het bijhouden van werk, broncodebeheer, build en CI/CD, pakketbeheer en testoplossingen. In deze architectuur wordt Azure DevOps gebruikt voor het beheren van CI/CD-pijplijnen voor het automatiseren van modelpromotie, testen en implementatie in productieomgevingen.

  • 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. In deze architectuur maakt Power BI verbinding met Synapse SQL om voorspellingen en geaggregeerde metrische gegevens op te halen en weer te geven via interactieve dashboards.

Alternatieven

  • De brongegevens kunnen afkomstig zijn van elke database.
  • U kunt Azure Kubernetes Service (AKS) gebruiken voor realtime deductie in plaats van beheerde online-eindpunten. AKS maakt het mogelijk om containermodellen te implementeren en biedt meer controle over de implementatie, waardoor dynamisch laden van modellen binnenkomende aanvragen kan verwerken zonder dat resources worden uitgeput.

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 patroon van veel modellen is gebruikelijk in een groot aantal branches en heeft veel praktijkvoorbeelden. 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 vereisen ze uitgebreide gegevens shuffling en transformatie. 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.
  • 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.
  • ParallelRunStep Class: De Python ParallelRunStep-klasse is een krachtige optie om veel modellen te trainen en deductie uit te voeren. Het kan uw gegevens op verschillende manieren partitioneren en vervolgens uw machine learning-script toepassen op elementen van de partitie parallel. Net als bij andere vormen van Machine Learning-training kunt u een aangepaste trainingsomgeving opgeven met toegang tot PyPI-pakketten (Python Package Index) of een geavanceerdere aangepaste Docker-omgeving voor configuraties waarvoor meer dan standaard PyPI is vereist. Er zijn veel CPU's en GPU's waaruit u kunt kiezen.
  • 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.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie de controlelijst ontwerpbeoordeling voor 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