Erstellen eines Filmempfehlungssystems mit maschinellem Lernen

Blob Storage
Container Instances
Azure Cosmos DB
Data Science Virtual Machines
Machine Learning

Die in diesem Artikel beschriebene Lösung verwendet maschinelles Lernen, um Filmempfehlungen automatisch und skaliert zu erstellen.

Architektur

Diagramm der Architektur eines Maschine Learning-Modells zum Trainieren von Filmempfehlungen.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Workflow

  1. Die Front-End-Website oder der App-Dienst sammelt einen Verlauf der Viewer-Filmbewertungen.
  2. Es speichert den Verlauf in Azure Blog Storage.
  3. Ein DSVM trainiert das Machine Learning-Modell mit einem Schulungsdatensatz, der eine Teilmenge des Bewertungsverlaufs ist.
    • Die Workload ist klein genug, dass ein DSVM geeignet ist, um zu experimentieren und ein Produkt zu entwickeln.
    • Das Trainingsdatensatz wird aus dem Bewertungsverlauf gezeichnet, indem eine Datenteilungsstrategie angewendet wird. Das Dataset kann je nach geschäftlichen Anforderungen beispielsweise nach dem Zufallsprinzip, chronologisch oder geschichtet aufgeteilt werden.
    • Wie bei anderen Maschinellen Lernaufgaben wird das Modell mithilfe von Bewertungsmetriken wie precision@k, recall@k, MAP und nDCG@k überprüft.
  4. Das maschinelle Lernen koordiniert die Experimente und übernimmt Aufgaben wie das Wischen von Hyperparametern und die Modellverwaltung.
  5. Das DSVM speichert das trainierte Modell in Azure Cosmos DB. Jetzt kann das Modell verwendet werden, um die oberen k-Filme für einen bestimmten Benutzer zu empfehlen.
  6. Das Modell wird dann mithilfe von Azure Container Instances oder Azure Kubernetes Service (AKS) in einem Web- oder App-Dienst bereitgestellt.

Eine ausführliche Anleitung für die Erstellung und Skalierung eines Empfehlungsdiensts finden Sie im Artikel unter Erstellen einer Echtzeitempfehlungs-API in Azure.

Komponenten

  • Data Science Virtual Machines bietet DSVMs, die Azure Virtual Machine-Images sind, die vorinstalliert, konfiguriert und mit Tools für Datenanalysen, maschinelles Lernen und KI-Training getestet wurden. Eine DSVM-Instanz verfügt über eine eigenständige Spark-Umgebung, die zum Ausführen von ALS verwendet werden kann. Verwenden Sie eine DSVM, wenn Sie über eine kleinere Workload verfügen und keine verteilte Lösung benötigen.
  • Bei Azure Storage handelt es sich um eine Reihe hochgradig skalierbarer und sicherer Clouddienste für Daten, Apps und Workloads. Es umfasst Azure Files, Blob Storage, Azure Table Storage, Azure Queue Storage und andere Dienste.
  • Blob Storage ist skalierbare und sichere Objektspeicherung für unstrukturierte Daten. Sie können es für Archive, Data Lakes, Hochleistungscomputer, maschinelles Lernen und Cloud-native Workloads verwenden. In dieser Lösung enthält sie das Dataset für Filmempfehlungen.
  • Machine Learning ist ein unternehmenstauglicher Service für maschinelles Lernen, mit dem Sie schnell Modelle erstellen und einsetzen können. Es bietet Anwendern aller Kenntnisstufen einen Low-Code-Designer, automatisiertes maschinelles Lernen und eine gehostete Jupyter-Notebook-Umgebung, die verschiedene IDEs unterstützt.
  • Azure Cosmos DB ist eine vollständig verwaltete, hochgradig reaktionsfähige, skalierbare NoSQL-Datenbank für die moderne App-Entwicklung. Es bietet Sicherheit auf Unternehmensniveau und unterstützt APIs für viele Datenbanken, Sprachen und Plattformen. Dazu gehören SQL, MongoDB, Gremlin, Table und Apache Cassandra. Serverlose, automatische Skalierungsoptionen in Azure Cosmos DB verwalten die Kapazitätsanforderungen von Anwendungen effizient.
  • Container Instances bietet die schnellste und einfachste Möglichkeit, einen Container in Azure auszuführen. Es ist nicht erforderlich, dass Sie virtuelle Computer verwalten oder einen Dienst auf höherer Ebene übernehmen. AKS kann das Virtual Kubelet verwenden, um Pods in Containerinstanzen bereitzustellen, die innerhalb von Sekunden starten. Dies ermöglicht die Ausführung von AKS mit genau der Kapazität, die für Ihre durchschnittliche Arbeitsauslastung erforderlich ist. Wenn die Kapazität Ihres AKS-Clusters erschöpft ist, können Sie zusätzliche Pods in ACI skalieren, ohne dass Sie mehr Server verwalten müssen.
  • AKS ist ein hochverfügbarer, sicherer und vollständig verwalteter Kubernetes-Dienst. Es bietet vereinfachte Bereitstellung und Verwaltung von Kubernetes, indem kritische Aufgaben wie Integritätsüberwachung und Wartung in Azure deaktiviert werden. AKS hostet Open-Source-Engines für die Big Data-Verarbeitung wie Apache Spark. Mit AKS können Sie umfangreiche Streamverarbeitungsaufträge in einer verwalteten Umgebung ausführen.

Alternativen

Azure Databricks ist eine Alternative zu Azure DSVMs. Es ist ein verwalteter Spark-Cluster für Training und Auswertungsmodelle. Eine verwaltete Spark-Umgebung ist in wenigen Minuten eingerichtet und automatisch skalierbar, was zur Reduzierung des Ressourcenbedarfs und der Kosten beiträgt, die mit manueller Clusterskalierung einhergehen. Zur Ressourcenschonung können Sie auch festlegen, dass inaktive Cluster automatisch beendet werden sollen.

Szenariodetails

Die Bereitstellung personalisierter Produktempfehlungen für Kunden kann eine effektive Möglichkeit für ein Unternehmen sein, den Umsatz zu erhöhen. Es kann auch kostenwirksam sein, da Sie in vielen Fällen maschinelles Lernen verwenden können, um die Empfehlungen bereitzustellen.

Die in diesem Artikel beschriebene Lösung verwendet maschinelles Lernen, um Filmempfehlungen automatisch und skaliert zu erstellen. Azure Machine Learning berechnet die Empfehlungen, indem sie den alternierenden Mindestquadradalgorithmus (ALS) auf ein Dataset der Viewer-Filmbewertungen anwenden. Ein virtueller Data Science-Computer (DSVM) koordiniert den Prozess der Schulung des Machine-Learning-Modells.

Mögliche Anwendungsfälle

Personalisierte Empfehlungen können in vielen Branchen nützlich sein, z. B. im Einzelhandel, bei Nachrichten und Medien bzw. in der Unterhaltungsindustrie. Mögliche Anwendungen umfassen:

  • Produktempfehlungen im Online-Store.
  • News oder Posten von Empfehlungen auf einer News- oder Social-Media-Website.
  • Musikempfehlungen in einer Streaming-App oder einem Online-Store.
  • Filmempfehlungen für eine Filmstreaming-App.

Überlegungen

Diese Überlegungen setzen die Säulen des Azure Well-Architected Framework um, das eine Reihe von Leitprinzipien enthält, die zur Verbesserung der Qualität eines Workloads verwendet werden können. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Zuverlässigkeit

Zuverlässigkeit stellt sicher, dass Ihre Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie in der Überblick über die Säule „Zuverlässigkeit“.

  • Ressourcen für Apps, die auf maschinellem Lernen basieren, werden in der Regel in Ressourcen für das Training und Ressourcen für die Bedienung aufgeteilt. Für Trainingsressourcen ist in der Regel keine Hochverfügbarkeit erforderlich, da diese Ressourcen nicht direkt von Liveanforderungen aus der Produktionsumgebung betroffen sind. Bereitstellungsrelevante Ressourcen müssen hochverfügbar sein, um Kundenanforderungen bedienen zu können.
  • Für Training stehen DSVMs in mehreren Regionen auf der ganzen Welt zur Verfügung. Sie erfüllen den Service Level Agreement (SLA) für virtuelle Computer. Für den Service bietet AKS eine hochverfügbare Infrastruktur. Agent-Knoten erfüllen ebenfalls die Anforderungen der SLA für virtuelle Computer.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

  • In diesem Szenario können Benutzer für den Zugriff auf die DSVM-Instanz, die Ihren Code, Ihre Modelle und Ihre Daten (im Arbeitsspeicher) enthält, mithilfe von Azure Active Directory (Azure AD) authentifiziert werden. Daten werden vor dem Laden in eine DSVM-Instanz in Azure Storage gespeichert, wo sie automatisch unter Verwendung der Speicherdienstverschlüsselung verschlüsselt werden. Berechtigungen können über die Azure AD-Authentifizierung oder mithilfe der rollenbasierten Zugriffssteuerung verwaltet werden.

Effiziente Leistung

Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen. Weitere Informationen finden Sie unter Übersicht über die Säule „Leistungseffizienz“.

  • Bei großen Datensätzen kann die DSVM-Instanz skaliert werden, um die Trainingsdauer zu verkürzen. Sie können einen virtuellen Computer zentral hoch- oder herunterskalieren, indem Sie die VM-Größe ändern. Wählen Sie die Größe des Arbeitsspeichers so, dass Ihr Dataset hineinpasst, und verwenden Sie eine höhere vCPU-Anzahl, um das Training zu beschleunigen.

Bereitstellen dieses Szenarios

Voraussetzungen: Sie benötigen ein bestehendes Azure-Konto. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Der gesamte Code für dieses Szenario steht im Microsoft Recommenders-Repository zur Verfügung.

Gehen Sie wie folgt vor, um das ALS-Schnellstartnotebook auszuführen:

  1. Erstellen Sie eine DSVM-Instanz über das Azure-Portal.

  2. Klonen Sie das Repository im Ordner „Notebooks“:

    cd notebooks
    git clone https://github.com/Microsoft/Recommenders
    
  3. Installieren Sie die Conda-Abhängigkeiten gemäß der Anleitung in der Datei SETUP.md.

  4. Öffnen Sie in einem Browser Ihren virtuellen jupyterlab-Computer, und navigieren Sie zu notebooks/00_quick_start/als_pyspark_movielens.ipynb.

  5. Führen Sie das Notebook aus.

Nächste Schritte