Deze referentiearchitectuur laat zien hoe u een aanbevelingsmodel traint met behulp van Azure Databricks en dit implementeert als een API met behulp van Azure Cosmos DB, Azure Machine Learning en Azure Kubernetes Service (AKS). Deze architectuur kan worden gealeraliseerd voor de meeste enginescenario's met aanbevelingen voor producten, films en nieuws.
Een referentie-implementatie voor deze architectuur is beschikbaar op GitHub

Scenario: een mediaorganisatie wil film- of videoaanbevelingen doen aan de gebruikers. Door gepersonaliseerde aanbevelingen te bieden, voldoet de organisatie aan verschillende zakelijke doelstellingen, waaronder een verhoogd aantal doorklikpercentages, meer betrokkenheid op de site en hogere gebruikerstevredenheid.
Deze referentiearchitectuur is voor het trainen en implementeren van een service-API voor realtimeaanbevelingen die de top 10 van filmaanbevelingen voor een bepaalde gebruiker kan bieden.
De gegevensstroom voor dit aanbevelingsmodel is als volgt:
Gebruikersgedrag bijhouden. Een back-service kan bijvoorbeeld in een logboek worden opgeslagen wanneer een gebruiker een film afkent of op een product- of nieuwsartikel klikt.
Laad de gegevens in Azure Databricks uit een beschikbare gegevensbron.
Bereid de gegevens voor en splits deze in trainings- en testsets om het model te trainen. (In deze handleiding worden opties beschreven voor het splitsen van gegevens.)
Pas het Spark Collaborative Filtering-model aan de gegevens aan.
Evalueer de kwaliteit van het model met behulp van metrische gegevens voor classificatie en classificatie. (In deze handleiding vindt u meer informatie over de metrische gegevens die u kunt evalueren aan de hand van uw aanbeveling.)
Vooraf de top 10 van aanbevelingen per gebruiker en opslaan als cache in Azure Cosmos DB.
Implementeer een API-service in AKS met behulp van Azure Machine Learning API's om de API in een container te zetten en te implementeren.
Wanneer de back-endservice een aanvraag van een gebruiker ontvangt, roept u de API voor aanbevelingen aan die wordt gehost in AKS om de top 10 van aanbevelingen op te halen en weer te geven aan de gebruiker.
Architectuur
Deze architectuur bestaat uit de volgende onderdelen:
Azure Databricks. Databricks is een ontwikkelomgeving die wordt gebruikt om invoergegevens voor te bereiden en het aanbevelingsmodel te trainen op een Spark-cluster. Azure Databricks biedt ook een interactieve werkruimte om notebooks uit te voeren en samen te werken voor alle gegevensverwerkings- of machine learning taken.
Azure Kubernetes Service (AKS). AKS wordt gebruikt voor het implementeren en operationeel maken van machine learning modelservice-API op een Kubernetes-cluster. AKS host het containermodel en biedt schaalbaarheid die voldoet aan uw doorvoervereisten, identiteits- en toegangsbeheer en logboekregistratie en statuscontrole.
Azure Cosmos DB. Cosmos DB is een wereldwijd gedistribueerde databaseservice die wordt gebruikt voor het opslaan van de top 10 van aanbevolen films voor elke gebruiker. Azure Cosmos DB is geschikt voor dit scenario, omdat het een lage latentie biedt (10 ms op het 99e percentiel) om de belangrijkste aanbevolen items voor een bepaalde gebruiker te lezen.
Azure Machine Learning. Deze service wordt gebruikt voor het bijhouden en beheren machine learning modellen, en vervolgens deze modellen verpakken en implementeren in een schaalbare AKS-omgeving.
Microsoft Recommenders. Deze opensource-opslagplaats bevat code en voorbeelden van hulpprogramma's om gebruikers te helpen aan de slag te gaan met het bouwen, evalueren en operationeel maken van een aanbevelingssysteem.
Prestatieoverwegingen
Prestaties zijn een belangrijke overweging voor realtime-aanbevelingen, omdat aanbevelingen meestal binnen het kritieke pad vallen van de aanvraag die een gebruiker op uw site doet.
Dankzij de combinatie van AKS en Azure Cosmos DB deze architectuur een goed startpunt om aanbevelingen te doen voor een middelgrote workload met minimale overhead. Bij een belastingstest met 200 gelijktijdige gebruikers biedt deze architectuur aanbevelingen met een mediaanlatentie van ongeveer 60 ms en voert deze uit bij een doorvoer van 180 aanvragen per seconde. De belastingstest is uitgevoerd op basis van de standaardimplementatieconfiguratie (een 3x D3 v2 AKS-cluster met 12 vCCPUs, 42 GB geheugen en 11.000 aanvraageenheden (RU's) per seconde ingericht voor Azure Cosmos DB).


Azure Cosmos DB wordt aanbevolen voor de gebruiksklare wereldwijde distributie en het nut ervan om te voldoen aan alle databasevereisten die uw app heeft. Voor een iets snellere latentie kuntu overwegen om Azure Cache voor Redis te gebruiken in plaats Azure Cosmos DB zoekups te kunnen gebruiken. Azure Cache voor Redis kunnen de prestaties verbeteren van systemen die sterk afhankelijk zijn van gegevens in back-endopslag.
Schaalbaarheidsoverwegingen
Als u niet van plan bent om Spark te gebruiken of als u een kleinere workload hebt waar u geen distributie nodig hebt, kunt u overwegen om Data Science Virtual Machine (DSVM) te gebruiken in plaats van Azure Databricks. DSVM is een virtuele Machine van Azure met frameworks en hulpprogramma's voor deep learning machine learning en gegevenswetenschap. Net als Azure Databricks, kan elk model dat u in een DSVM maakt, als een service op AKS worden operationeel gemaakt via Azure Machine Learning.
Tijdens de training moet u een groter Spark-cluster met vaste grootte inrichten in Azure Databricks configureren of automatisch schalen configureren. Wanneer automatische schaalvergroting is ingeschakeld, bewaakt Databricks de belasting van uw cluster en wordt de schaal indien nodig omhoog en omlaag geschaald. Een groter cluster inrichten of uitschalen als u een grote gegevensgrootte hebt en u de hoeveelheid tijd wilt verminderen die nodig is voor gegevensvoorbereidings- of modelleringstaken.
Schaal het AKS-cluster om te voldoen aan uw prestatie- en doorvoervereisten. Zorg dat u het aantal pods omhoog schaalt om het cluster volledig te gebruiken en om de knooppunten van het cluster te schalen om te voldoen aan de vraag van uw service. U kunt ook automatisch schalen instellen voor een AKS-cluster. Zie Een model implementeren op een Azure Kubernetes Service cluster.
Als u Azure Cosmos DB prestaties wilt beheren, schat u het aantal leesbare gegevens dat per seconde is vereist en geeft u het aantal benodigde RUS's per seconde (doorvoer) op. Gebruik best practices voor partitionering en horizontaal schalen.
Kostenoverwegingen
De belangrijkste kosten voor dit scenario zijn:
- De Azure Databricks clustergrootte die vereist is voor de training.
- De AKS-clustergrootte die is vereist om te voldoen aan uw prestatievereisten.
- Azure Cosmos DB's die zijn ingericht om te voldoen aan uw prestatievereisten.
Beheer de Azure Databricks door minder vaak opnieuw te trainen en het Spark-cluster uit te schakelen wanneer het niet in gebruik is. De kosten voor AKS en Azure Cosmos DB zijn gekoppeld aan de doorvoer en prestaties die uw site vereist en worden omhoog en omlaag geschaald, afhankelijk van de hoeveelheid verkeer naar uw site.
De oplossing implementeren
Volg de instructies in het installatiedocument om Azure Databricks architectuur te implementeren. Kortom, voor de instructies moet u het volgende doen:
Maak een Azure Databricks werkruimte.
Maak een nieuw cluster met de volgende configuratie in Azure Databricks:
- Clustermodus: Standard
- Databricks Runtime versie: 4.3 (inclusief Apache Spark 2.3.1, Scala 2.11)
- Python-versie: 3
- Stuurprogrammatype: Standard _ DS3 _ v2
- Werktype: Standard _ DS3 _ v2 (min en max, indien vereist)
- Automatische beƫindiging: (indien vereist)
- Spark-configuratie: (indien vereist)
- Omgevingsvariabelen: (indien vereist)
Maak een persoonlijk toegang token binnen de Azure Databricks werkruimte. Zie de documentatie Azure Databricks verificatie voor meer informatie.
Kloon de opslagplaats Microsoft Recommenders in een omgeving waar u scripts kunt uitvoeren (bijvoorbeeld uw lokale computer).
Volg de installatie-instructies voor snelle installatie om de relevante bibliotheken te installeren op Azure Databricks.
Volg de installatie-instructies voor snelle installatie om de Azure Databricks voor te bereiden op operationalisatie.
Importeer het NOTEBOOK ALS Movie Operationalization in uw werkruimte. Nadat u zich hebt Azure Databricks werkruimte, gaat u als volgt te werk:
a. Klik op Start aan de linkerkant van de werkruimte.
b. Klik met de rechtermuisknop op witruimte in uw basismap. Selecteer Importeren.
c. Selecteer URL en plak het volgende in het tekstveld:
https://github.com/Microsoft/Recommenders/blob/master/examples/05_operationalize/als_movie_o16n.ipynbd. Klik op Import.
Open het notebook in Azure Databricks en koppel het geconfigureerde cluster.
Voer het notebook uit om de Azure-resources te maken die nodig zijn om een aanbevelings-API te maken die de top 10 filmaanbevelingen voor een bepaalde gebruiker biedt.
Gerelateerde architecturen
We hebben ook een referentiearchitectuur gebouwd die gebruikmaakt van Spark en Azure Databricks om geplande batchscoreprocessen uit te voeren. Bekijk deze referentiearchitectuur om een aanbevolen benadering te begrijpen voor het routinematig genereren van nieuwe aanbevelingen.