Skalierbare Personalisierung in Azure

Azure
Databricks
Azure-Portal
GitHub

Empfehlungen sind für viele Unternehmen von wesentlicher Bedeutung für den Umsatz und werden in verschiedenen Branchen wie Einzelhandel, Nachrichten und Medien genutzt.Recommendations are a main revenue driver for many businesses and are used in different kinds of industries, including retail, news, and media. Aufgrund der Verfügbarkeit großer Datenmengen können Sie nun hochrelevante Empfehlungen auf der Basis von Machine Learning geben.With the availability of large amounts of data, you can now provide highly relevant recommendations using machine learning.

Es gibt zwei Haupttypen von Empfehlungssystemen: auf der Basis kollaborativer Filterung und inhaltsbasierte.There are two main types of recommendation systems: collaborative filtering and content-based. Kollaborative Filterung identifiziert ähnliche Muster im Kundenverhalten und empfiehlt Artikel, mit denen andere ähnliche Kunden interagiert haben.Collaborative filtering identifies similar patterns in customer behavior and recommends items that other similar customers have interacted with. Die inhaltsbasierte Empfehlung verwendet Informationen über die Artikel, um Kundenpräferenzen zu erfahren, und empfiehlt Artikel, die Eigenschaften mit Artikeln teilen, mit denen ein Kunde zuvor interagiert hat.Content-based recommendation uses information about the items to learn customer preferences and recommends items that share properties with items that a customer has previously interacted with. Der in diesem Dokument beschriebene Ansatz konzentriert sich auf das inhaltsbasierte Empfehlungssystem.The approach described in this document focuses on the content-based recommendation system.

Dieses Beispielszenario zeigt Ihnen, wie Ihr Unternehmen Machine Learning verwenden kann, um die inhaltsbasierte Personalisierung für Ihre Kunden zu automatisieren.This example scenario shows how your business can use machine learning to automate content-based personalization for your customers. Auf hohem Niveau verwenden wir Azure Databricks, um ein Modell zu trainieren, das die Wahrscheinlichkeit vorhersagt, mit der ein Benutzer mit einem Artikel in Kontakt kommt.At a high level, we use Azure Databricks to train a model that predicts the probability a user will engage with an item. Dieses Modell wird in der Produktion als Prognosedienst mit Azure Kubernetes Service bereitgestellt.That model is deployed to production as a prediction service using Azure Kubernetes Service. Mit dieser Vorhersage können Sie wiederum personalisierte Empfehlungen erstellen, indem Sie Elemente nach dem Inhalt bewerten, den ein Benutzer am ehesten nutzen wird.In turn, you can use this prediction to create personalized recommendations by ranking items based on the content that a user is most likely to consume.

Relevante AnwendungsfälleRelevant use cases

Dieses Szenario ist für folgende Anwendungsfälle relevant:This scenario is relevant to the following use cases:

  • Inhaltsempfehlungen auf einer Website oder in einer mobilen Anwendung.Content recommendations on a website or in a mobile application.
  • Produktempfehlungen auf einer E-Commerce-Website.Product recommendation on an e-commerce site.
  • Auf einer Website angezeigte Anzeigenempfehlung.Displayed ad recommendation on a website.

AufbauArchitecture

Skalierbares Personalisierungsarchitekturdiagramm

Dieses Szenario umfasst das Training, die Evaluierung und den Einsatz eines Machine Learning-Modells für die inhaltsbasierte Personalisierung auf Apache Spark mit Azure Databricks.This scenario covers the training, evaluation, and deployment of a machine learning model for content-based personalization on Apache Spark using Azure Databricks. In diesem Fall wird ein Modell mit einem überwachten Klassifizierungsalgorithmus auf einem Dataset trainiert, der Benutzer- und Artikelfeatures enthält.In this case, a model is trained with a supervised classification algorithm on a dataset containing user and item features. Das Label für jedes Beispiel ist ein Binärwert, der angibt, dass der Benutzer sich mit einem Element beschäftigt (ihn z.B. angeklickt) hat.The label for each example is a binary value indicating that the user engaged with (for example, clicked) an item. Dieses Szenario umfasst eine Teilmenge der Schritte, die für eine vollständige Empfehlungssystemworkload erforderlich sind.This scenario covers a subset of the steps required for a full end-to-end recommendation system workload. Der breitere Kontext dieses Szenarios basiert auf einer gängigen E-Commerce-Website mit einem Frontend, das schnell wechselnde Inhalte für ihre Nutzer bereitstellt.The broader context of this scenario is based on a generic e-commerce website with a front end that serves rapidly changing content to its users. Diese Website verwendet Cookies und Benutzerprofile, um den Inhalt für diesen Benutzer zu personalisieren.This website uses cookies and user profiles to personalize the content for that user. Neben den Benutzerprofilen kann die Website auch Informationen über jeden Artikel enthalten, den sie ihren Benutzern anbietet.Along with user profiles, the website may have information about every item it serves to each user. Sobald diese Daten verfügbar sind, werden die folgenden Schritte ausgeführt, um ein Empfehlungssystem aufzubauen und zu operationalisieren:Once that data is available, the following steps are executed to build and operationalize a recommendation system:

  1. Die Sätze unterschiedlicher Benutzer- und Artikeldaten werden vorverarbeitet und zusammengeführt, was zu einer Mischung aus numerischen und kategorischen Features führt, die für die Vorhersage von Interaktionen (Klicks) zwischen Benutzer und Artikel verwendet werden können.The sets of distinct user and item data are preprocessed and joined, which results in a mixture of numeric and categorical features to be used for predicting user-item interactions (clicks). Diese Tabelle wird in Azure Blob Storage hochgeladen.This table is uploaded to Azure Blob Storage. Zu Demonstrationszwecken wird das Criteo Display Advertising Challenge-Dataset verwendet.For demonstration purposes, the Criteo display advertising challenge dataset is used. Dieses Dataset entspricht der beschriebenen anonymisierten Tabelle, da es ein binäres Label für beobachtete Benutzerklicks, 13 numerische Features und weitere 26 kategorische Features enthält.This dataset matches the described anonymized table, as it contains a binary label for observed user clicks, 13 numerical features, and an additional 26 categorical features.
  2. Die MMLSpark-Bibliothek bietet die Möglichkeit, einen LightGBM-Klassifizierer auf Azure Databricks zu trainieren, um die Klickwahrscheinlichkeit als Funktion der im vorherigen Schritt erstellten numerischen und kategorischen Features vorherzusagen.The MMLSpark library provides the ability to train a LightGBM classifier on Azure Databricks to predict the click probability as a function of the numeric and categorical features that were created in the previous step. LightGBM ist ein hocheffizienter Machine Learning-Algorithmus, und MMLSpark ermöglicht das über große Datasets verteilte Training von LightGBM-Modellen.LightGBM is a highly efficient machine learning algorithm, and MMLSpark enables distributed training of LightGBM models over large datasets.
  3. Der trainierte Klassifizierer ist serialisiert und in der Azure Model Registry gespeichert.The trained classifier is serialized and stored in the Azure Model Registry. Mit der Azure Model Registry können Sie verschiedene Versionen des Modells (z.B. basierend auf neueren Daten oder verschiedenen Hyperparametern) innerhalb eines Azure Machine Learning-Arbeitsbereichs (Azure ML) speichern und organisieren.With Azure Model Registry, you can store and organize different versions of the model (for example, based on newer data or different hyperparameters) within an Azure Machine Learning (Azure ML) Workspace.
  4. Ein Bereitstellungsskript wird unter Verwendung der MML Spark Serving-Bibliothek definiert, um Vorhersagen aus dem trainierten Modell bereitzustellen.A serving script is defined using the MML Spark Serving library to provide predictions from the trained model.
  5. Mit Azure ML wird ein Docker-Image in der Azure Container Registry erstellt, die das Image mit dem Bewertungsskript und allen notwendigen Abhängigkeiten für die Bereitstellung von Prognosen enthält.Azure ML is used to create a Docker image in the Azure Container Registry that holds the image with the scoring script and all necessary dependencies for serving predictions.
  6. Azure ML wird auch verwendet, um die Berechnung für die Bereitstellung von Vorhersagen bereitzustellen.Azure ML is also used to provision the compute for serving predictions. Ein Kubernetes-Cluster wird mit Azure Kubernetes Service (AKS) mit der Anzahl der Knoten konfiguriert, die für die Verarbeitung der erwarteten Last benötigt werden.A Kubernetes cluster is configured using Azure Kubernetes Service (AKS) with the number of nodes needed to handle expected load. Die Größe der VM kann den Berechnungs- und Speicheranforderungen des Modells angepasst werden.The virtual machine size can be adjusted based on the model's computation and memory requirements.
  7. Der Bewertungsdienst wird als Webdienst auf dem AKS-Cluster bereitgestellt.The scoring service is deployed as a web service on the AKS cluster. Der Dienst bietet einen Endpunkt, an den Benutzer- und Artikelfeatures gesendet werden können, um die vorhergesagte Wahrscheinlichkeit eines Klicks für diesen Benutzer und diesen Artikel zu ermitteln.The service provides an endpoint where user and item features can be sent to receive the predicted probability of a click for that user and item.

KomponentenComponents

Diese Architektur nutzt die folgenden Komponenten:This architecture makes use of the following components:

  • Azure Blob Storage ist ein zum Speichern großer Mengen unstrukturierter Daten optimierter Speicherdienst.Azure Blob Storage is a storage service optimized for storing massive amounts of unstructured data. In diesem Fall werden die Eingabedaten hier gespeichert.In this case, the input data is stored here.
  • Azure Databricks ist ein verwalteter Apache Spark-Cluster, in dem Modelle trainiert und ausgewertet werden.Azure Databricks is a managed Apache Spark cluster for model training and evaluation. Wir verwenden zudem MMLSpark, ein für umfangreiches Machine Learning entwickeltes Framework auf Spark-Basis.We also use MMLSpark, a Spark-based framework designed for large-scale machine learning.
  • Mit Azure Container Registry wird das Bewertungsskript als Containerimage verpackt, mit dem das Modell in der Produktion gespeist wird.Azure Container Registry is used to package the scoring script as a container image, which is used to serve the model in production.
  • Mit Azure Kubernetes Service wird das trainierte Modell Web- oder App-Diensten bereitgestellt.Azure Kubernetes Service is used to deploy the trained model to web or app services.
  • Mit Azure Machine Learning wird in diesem Szenario das Machine Learning-Modell registriert und AKS bereitgestellt.Azure Machine Learning is used in this scenario to register the machine learning model and to deploy AKS.
  • Microsoft Recommenders ist ein Open-Source-Repository, das Hilfsprogrammcode und Beispiele enthält.Microsoft Recommenders is an open-source repository that contains utility code and samples. Mit diesem Repository können Benutzer mit dem Aufbau, der Auswertung und Operationalisierung eines Empfehlungssystems beginnen.With this repository, users can start to build, evaluate, and operationalize a recommender system.

ÜberlegungenConsiderations

SkalierbarkeitScalability

Für das Training können Sie Azure Databricks basierend auf der Größe der verwendeten Daten und der für das Modelltraining erforderlichen Berechnung nach oben oder unten skalieren.For training, you can scale Azure Databricks up or down based on the size of the data used and the compute necessary for model training. Zum Skalieren können Sie die verfügbare Gesamtzahl der Kerne bzw. die Arbeitsspeichermenge dem Cluster anpassen.To scale, you can adjust the total number of cores or amount of memory available to the cluster. Bearbeiten Sie einfach Anzahl oder Typ der verwendeten virtuellen Computer (VMs).Just edit the number or type of Virtual Machines (VMs) used. Das Criteo-Dataset enthält in diesem Beispiel 45,8 Millionen Zeilen; es wurde in wenigen Minuten auf einem Cluster mit 10 Standard-L8s-VMs trainiert.The Criteo dataset contains 45.8 million rows in this example; it was trained in a few minutes on a cluster with 10 standard L8s VMs.

Für die Bereitstellung können Sie die Computeressourcen basierend auf der erwarteten Auslastung für den Bewertungsdienst und die Latenzanforderungen skalieren.For deployment, you can scale the compute resources based on the expected load for the scoring service and latency requirements. Der Bewertungsdienst verwendet MML Spark Serving, das auf jedem Knoten im Kubernetes-Cluster separat ausgeführt wird.The scoring service uses MML Spark Serving running separately on each node in the Kubernetes cluster. Mit dieser Methode können Sie die auf Azure Databricks entwickelte Featuretransformations- und Modellvorhersagepipeline nahtlos auf die Produktionsseite übertragen.With this practice, you can seamlessly transfer the feature transformation and model prediction pipeline developed on Azure Databricks to the production side. Außerdem entfällt die Notwendigkeit, die Ergebnisse für alle möglichen Benutzer- und Artikelkombinationen vorzuberechnen, was bei der Verwendung dynamischer Benutzerfeatures, wie z.B. der Tageszeit, schwierig sein kann.It also removes the need to precompute scores for all possible user and item combinations, which might be difficult if you're using dynamic user features, such as time of day.

VerfügbarkeitAvailability

Machine Learning-Aufgaben sind in zwei Ressourcenkomponenten unterteilt: Trainingsressourcen und Ressourcen für die Produktionsbereitstellung.Machine learning tasks are split into two resource components: resources for training, and resources for production deployment. Für Trainingsressourcen ist in der Regel keine Hochverfügbarkeit erforderlich, da diese Ressourcen nicht direkt von Liveanforderungen aus der Produktionsumgebung betroffen sind.Resources required for training generally don't need high availability, as live production requests don't directly hit these resources. Bereitstellungsrelevante Ressourcen müssen hochverfügbar sein, um Kundenanforderungen bedienen zu können.Resources required for serving need to have high availability to serve customer requests.

Training zu Azure Databricks kann in jeder der Regionen mit einer Vereinbarung zum Servicelevel (Service Level Agreement, SLA) stattfinden, um Ihre Anforderungen zu erfüllen.Training on Azure Databricks can happen on any one of the regions with a service level agreement (SLA) to support your needs. Für die Produktionsbereitstellung wird Azure Kubernetes Service verwendet, um mit diesem SLA eine breite geografische Verfügbarkeit zu gewährleisten.For production deployment, Azure Kubernetes Service is used to provide broad geographic availability with this SLA.

SicherheitSecurity

Dieses Szenario kann mit Azure Active Directory (Azure AD) Benutzer im Azure Databricks-Arbeitsbereich und beim Azure Kubernetes-Cluster authentifizieren.This scenario can use Azure Active Directory (Azure AD) to authenticate users to the Azure Databricks workspace and the Azure Kubernetes cluster. Berechtigungen können über die Azure AD-Authentifizierung oder mithilfe der rollenbasierten Zugriffssteuerung verwaltet werden.Permissions can be managed via Azure AD authentication or role-based access control.

Bereitstellen dieses SzenariosDeploy this scenario

VoraussetzungenPrerequisites

Sie benötigen ein bestehendes Azure-Konto.You must have an existing Azure account.

Exemplarische VorgehensweiseWalkthrough

Der gesamte Code für dieses Szenario steht im Microsoft Recommenders-Repository zur Verfügung.All the code for this scenario is available in the Microsoft Recommenders repository.

Zum Ausführen der Notebooks zum Training und zur Bereitstellung des Empfehlungsmodells auf Azure Databricks:To run the notebooks for training and deploying the recommendation model on Azure Databricks:

  1. Erstellen Sie einen Azure Databricks-Arbeitsbereich über das Azure-Portal.Create an Azure Databricks workspace from the Azure portal.
  2. Befolgen Sie die Installationsanweisungen, um Hilfsprogramme aus dem Microsoft Recommenders-Repository auf einem Cluster in Ihrem Arbeitsbereich zu installieren.Follow the setup instructions to install utilities from the Microsoft Recommenders repository on a cluster within your workspace.
    1. Beziehen Sie die --mmlspark-Option in das Installationsskript ein, damit MMLSpark installiert wird.Include the --mmlspark option in the install script to have MMLSpark installed.
    2. Außerdem erfordert MMLSpark, dass die automatische Skalierung im Setup des Clusters deaktiviert ist.Also, MMLSpark requires autoscaling to be disabled in the Cluster setup.
  3. Importieren Sie das Trainingsnotebook in Ihren Arbeitsbereich.Import the training notebook into your workspace. Nach der Anmeldung bei Ihrem Azure Databricks-Arbeitsbereich:After logging into your Azure Databricks Workspace:
    1. Wählen Sie auf der linken Seite des Arbeitsbereichs Home aus.Select Home on the left side of the workspace.
    2. Klicken Sie in Ihrem Basisverzeichnis mit der rechten Maustaste auf den weißen Bereich.Right-click whitespace in your home directory.
    3. Wählen Sie Importieren aus.Select Import.
    4. Wählen Sie URL aus, und fügen Sie folgende Zeichenfolge in das Textfeld ein: https://aka.ms/recommenders/lgbm-criteo-training.Select URL, and paste the following string into the text field: https://aka.ms/recommenders/lgbm-criteo-training.
    5. Wählen Sie Importieren aus.Select Import.
  4. Wiederholen Sie Schritt 3 hier für das Operationalisierungsnotebook: https://aka.ms/recommenders/lgbm-criteo-o16n.Repeat step 3 for the operationalization notebook here: https://aka.ms/recommenders/lgbm-criteo-o16n.
  5. Wählen Sie das Notebook aus, um es zu öffnen, fügen Sie den konfigurierten Cluster an, und führen Sie das Notebook aus.Select the notebook to open it, attach the configured cluster, and execute the notebook.

PreisePricing

Um die Kosten für den Betrieb dieses Szenarios auf Azure besser zu verstehen, stellen wir einen Preisrechner bereit, der auf den folgenden Annahmen basiert:To better understand the cost of running this scenario on Azure, we provide a pricing estimator based on the following assumptions:

  • Die Trainingsdaten liegen in der gleichen Größenordnung wie das verwendete Beispieldataset (45,8 Millionen Zeilen).Training data is of the same scale as the example dataset used (45.8 million rows).
  • Das Training muss täglich stattfinden, um das Bereitstellungsmodell zu aktualisieren.Training needs to happen daily to update the serving model.
  • Das Training findet auf Azure Databricks statt, wobei ein Cluster mit 12 VMs unter Verwendung von L8s-Instanzen eingesetzt wird.Training will occur on Azure Databricks using a cluster provisioned with 12 VMs using L8s instances.
  • Das Training dauert einschließlich Featureverarbeitung und Modelltraining sowie Validierung eine Stunde.Training will take an hour, including feature processing and model training plus validation.
  • Mit Azure Machine Learning wird das Modell mit einem kleinen Cluster mit drei Knoten mithilfe von D3-Instanzen in AKS bereitgestellt.Azure Machine Learning will be used to deploy the model to AKS with a small three-node cluster using D3 instances.
  • Der AKS-Cluster wird bei Bedarf automatisch skaliert, so dass durchschnittlich zwei Knoten pro Monat aktiv sind.AKS cluster will autoscale as needed, resulting in two nodes per month being active on average.

Um zu sehen, wie sich die Preise für Ihren Anwendungsfall unterscheiden, ändern Sie die Variablen entsprechend Ihrer erwarteten Datengröße und den Anforderungen an die Bereitstellungsauslastung.To see how pricing differs for your use case, change the variables to match your expected data size and serving load requirements. Für größere oder kleinere Trainingsdatenmengen kann der Databricks-Clusters entsprechend vergrößert bzw. verringert werden.For larger or smaller training data sizes, the size of the Databricks cluster can be increased or reduced, respectively. Um eine größere Anzahl gleichzeitiger Benutzer während der Speisung des Models zu bewältigen, sollte der AKS-Cluster vergrößert werden.To handle larger numbers of concurrent users during model serving, the AKS cluster should be increased. Weitere Informationen zur AKS-Skalierung zur Unterstützung von Latenz und Lastanforderungen bietet das Operationalisierungsnotebook.For more information on scaling AKS to support latency and load requirements, review the operationalization notebook.

Nächste SchritteNext steps