Python-modellen in batch scoren in Azure

Azure Container Registry
Azure Event Hubs
Azure Machine Learning
Azure SQL Database
Azure Stream Analytics

Deze architectuurhandleiding laat zien hoe u een schaalbare oplossing bouwt voor batchgewijs scoremodellen in Azure Machine Learning. De oplossing kan als sjabloon worden gebruikt en kan worden gegeneraliseerd naar verschillende problemen.

Architectuur

Architectuurdiagram met de batchscore van Python-modellen in Azure

Een Visio-bestand van deze architectuur downloaden.

Workflow

Deze architectuurhandleiding is van toepassing op zowel streaming- als statische gegevens, mits het opnameproces is aangepast aan het gegevenstype. De volgende stappen en onderdelen beschrijven de opname van deze twee typen gegevens.

Streaminggegevens:

  1. Streaminggegevens zijn afkomstig van IoT-sensoren, waarbij nieuwe gebeurtenissen regelmatig worden gestreamd.
  2. Binnenkomende streaminggebeurtenissen worden in de wachtrij geplaatst met behulp van Azure Event Hubs en vervolgens vooraf verwerkt met behulp van Azure Stream Analytics.
    • Azure Event Hubs. Deze berichtenopnameservice kan miljoenen gebeurtenisberichten per seconde opnemen. In deze architectuur verzenden sensoren een stroom gegevens naar de Event Hub.
    • Azure Stream Analytics. Een gebeurtenisverwerkingsengine. Een Stream Analytics-taak leest de gegevensstromen uit de Event Hub en voert stroomverwerking uit.

Statische gegevens:

  1. Statische gegevenssets kunnen worden opgeslagen als bestanden in Azure Data Lake Storage of in tabelvorm in Azure Synapse of Azure SQL Database.
  2. Azure Data Factory kan worden gebruikt om de opgeslagen gegevensset te aggregeren of vooraf te verwerken.

De resterende architectuur, na gegevensopname, is gelijk aan zowel streaming als statische gegevens en bestaat uit de volgende stappen en onderdelen:

  1. De opgenomen, geaggregeerde of vooraf verwerkte gegevens kunnen worden opgeslagen als documenten in Azure Data Lake Storage of in tabelvorm in Azure Synapse of Azure SQL Database. Deze gegevens worden vervolgens gebruikt door Azure Machine Learning.
  2. Azure Machine Learning wordt gebruikt voor het trainen, implementeren en beheren van machine learning-modellen op schaal. In de context van batchgewijs scoren maakt Azure Machine Learning een cluster van virtuele machines met een optie voor automatisch schalen, waarbij taken parallel worden uitgevoerd vanaf Python-scripts.
  3. Modellen worden geïmplementeerd als Beheerde Batch-eindpunten, die vervolgens worden gebruikt om batchdeductie uit te voeren op grote hoeveelheden gegevens gedurende een bepaalde periode. Batch-eindpunten ontvangen pointers naar gegevens en voeren taken asynchroon uit om de gegevens parallel op rekenclusters te verwerken.
  4. De deductieresultaten kunnen worden opgeslagen als documenten in Azure Data Lake Storage of in tabelvorm in Azure Synapse of Azure SQL Database.
  5. Visualiseren: De resultaten van het opgeslagen model kunnen worden gebruikt via gebruikersinterfaces, zoals Power BI-dashboards of via aangepaste webtoepassingen.

Onderdelen

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.

Prestaties

Voor standaard Python-modellen wordt algemeen geaccepteerd dat CPU's voldoende zijn om de workload te verwerken. Deze architectuur maakt gebruik van CPU's. Voor Deep Learning-workloads presteren graphics processing units (GPU's) over het algemeen echter aanzienlijk beter dan CPU's; een groot cluster cpu's is meestal nodig om vergelijkbare prestaties te krijgen.

Parallelliseren tussen VM's versus kernen

Wanneer u scoreprocessen van veel modellen uitvoert in de batchmodus, moeten de taken worden geparallelliseerd tussen vm's. Er zijn twee benaderingen mogelijk:

  • Maak een groter cluster met goedkope VM's.
  • Maak een kleiner cluster met hoog presterende VM's met meer kernen die beschikbaar zijn op elk cluster.

Over het algemeen is het scoren van standaard Python-modellen niet zo veeleisend als het scoren van Deep Learning-modellen en moet een klein cluster efficiënt kunnen omgaan met een groot aantal modellen in de wachtrij. U kunt het aantal clusterknooppunten verhogen naarmate de grootte van de gegevenssets toeneemt.

Voor het gemak in dit scenario wordt één scoretaak verzonden binnen één Azure Machine Learning-pijplijnstap . Het kan echter efficiënter zijn om meerdere gegevenssegmenten binnen dezelfde pijplijnstap te scoren. In die gevallen schrijft u aangepaste code om in meerdere gegevenssets te lezen en voert u het scorescript uit tijdens een uitvoering met één stap.

Beheer

  • Taken bewaken. Het is belangrijk om de voortgang van actieve taken te controleren. Het kan echter een uitdaging zijn om te bewaken in een cluster met actieve knooppunten. Als u de status van de knooppunten in het cluster wilt controleren, gebruikt u Azure Portal om de Machine Learning-werkruimte te beheren. Als een knooppunt inactief is of als een taak is mislukt, worden de foutenlogboeken opgeslagen in blobopslag en zijn ze ook toegankelijk in de sectie Pijplijnen . Voor uitgebreidere bewaking verbindt u logboeken met Application Insights of voert u afzonderlijke processen uit om de status van het cluster en de bijbehorende taken te peilen.
  • Logboekregistratie. Machine Learning registreert alle stdout/stderr met het bijbehorende Azure Storage-account. Als u de logboekbestanden eenvoudig wilt weergeven, gebruikt u een hulpprogramma voor opslagnavigatie, zoals Azure Storage Explorer.

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.

De duurste onderdelen die in deze architectuurhandleiding worden gebruikt, zijn de rekenresources. De grootte van het rekencluster wordt omhoog en omlaag geschaald, afhankelijk van de taken in de wachtrij. Schakel automatisch schalen via de Python SDK in door de inrichtingsconfiguratie van de rekenkracht te wijzigen. U kunt ook de Azure CLI gebruiken om de parameters voor automatisch schalen van het cluster in te stellen.

Voor werk waarvoor geen onmiddellijke verwerking is vereist, configureert u de formule voor automatisch schalen, zodat de standaardstatus (minimum) een cluster van nulknooppunten is. Met deze configuratie begint het cluster met nul knooppunten en wordt het alleen omhoog geschaald wanneer taken in de wachtrij worden gedetecteerd. Als het batchscoreproces slechts een paar keer per dag of minder plaatsvindt, maakt deze instelling aanzienlijke kostenbesparingen mogelijk.

Automatisch schalen is mogelijk niet geschikt voor batchtaken die zich te dicht bij elkaar voordoen. Omdat de tijd die nodig is om een cluster op te zetten en in te stellen, kosten in rekening worden gebracht. Als een batchworkload slechts een paar minuten na het einde van de vorige taak begint, kan het rendabeler zijn om het cluster tussen taken actief te houden. Deze strategie is afhankelijk van het feit of scoreprocessen met een hoge frequentie (bijvoorbeeld elk uur) of minder vaak (bijvoorbeeld één keer per maand) moeten worden uitgevoerd.

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

Productdocumentatie:

Microsoft Learn-modules: