Trainieren von Empfehlungsmodellen
Dieser Artikel enthält zwei Beispiele für Deep Learning-basierte Empfehlungsmodelle in Azure Databricks. Im Vergleich zu herkömmlichen Empfehlungsmodellen können Deep Learning-Modelle qualitativ höherwertige Ergebnisse erzielen und auf größere Datenmengen skaliert werden. Da sich diese Modelle ständig weiterentwickeln, bietet Databricks ein Framework für das effektive Trainieren großer Empfehlungsmodelle, die Hunderte Millionen von Benutzer:innen verarbeiten können.
Sie können sich ein Empfehlungssystem ganz allgemein als einen Trichter mit den in der Abbildung dargestellten Stufen vorstellen.
Einige Modelle, wie z. B. das Two-Tower-Modell, eignen sich besser als Abrufmodelle. Diese Modelle sind kleiner und können effektiv auf Millionen von Datenpunkten angewandt werden. Andere Modelle, wie z. B. DLRM oder DeepFM, eignen sich besser als Modelle zur Neusortierung. Diese Modelle können mehr Daten verarbeiten, sind größer und können präzisere Empfehlungen liefern.
Anforderungen
Databricks Runtime 14.3 LTS ML
Extras
Die Beispiele in diesem Artikel veranschaulichen die folgenden Tools:
- TorchDistributor: Dieses Framework ermöglicht Ihnen, umfangreiche PyTorch-Modelltrainings in Databricks auszuführen. Es verwendet Spark für die Orchestrierung und kann auf so viele GPUs skaliert werden, wie in Ihrem Cluster verfügbar sind.
- Mosaic StreamingDataset: Dieses Tool verbessert die Leistung und Skalierbarkeit von Trainings mit großen Datasets in Databricks mithilfe von Features wie Vorabruf und Interleaving.
- MLflow: Mit MLflow können Sie Parameter, Metriken und Modellprüfpunkte nachverfolgen.
- TorchRec: Moderne Empfehlungssysteme verwenden Einbettungs-Nachschlagetabellen, um Millionen von Benutzer:innen und Artikeln zu verarbeiten und damit qualitativ hochwertige Empfehlungen zu generieren. Größere Einbettungen steigern die Modellleistung, erfordern jedoch viel GPU-Speicher und Setups mit mehreren GPUs. TorchRec bietet ein Framework zum Skalieren von Empfehlungsmodellen und Nachschlagetabellen über mehrere GPUs hinweg und eignet sich damit ideal für große Einbettungen.
Beispiel: Filmempfehlungen mithilfe einer Architektur mit Two-Tower-Modell
Das Two-Tower-Modell wurde entwickelt, um umfangreiche Personalisierungsaufgaben zu verarbeiten, indem Benutzer- und Elementdaten separat verarbeitet werden, bevor sie zusammengeführt werden. Es kann Hunderte oder Tausende von qualitativ guten Empfehlungen effizient generieren. Das Modell erwartet in der Regel drei Eingaben: ein user_id-Feature, ein product_id-Feature und eine binäre Bezeichnung, die definiert, ob die <Benutzer-Produkt-Interaktion> positiv (die Benutzer:innen haben das Produkt gekauft) oder negativ war (die Benutzer:innen gaben dem Produkt eine Ein-Sterne-Bewertung). Die Ausgaben des Modells sind Einbettungen für die Benutzer:innen und die Artikel, die dann in der Regel kombiniert werden (häufig mithilfe eines Skalarprodukts oder einer Kosinusähnlichkeit), um Benutzer-Artikel-Interaktionen vorherzusagen.
Da das Two-Tower-Modell Einbettungen sowohl für Benutzer:innen als auch für Produkte bereitstellt, können Sie diese Einbettungen in eine Vektordatenbank (z. B. Databricks Vector Store) einfügen und Vorgänge, die einer Ähnlichkeitssuche ähneln, für die Benutzer:innen und Artikel ausführen. Sie können beispielsweise alle Artikel in einen Vektorspeicher einfügen und für alle Benutzer:innen den Vektorspeicher abfragen, um die hundert Artikel zu finden, deren Einbettungen den jeweiligen Benutzer:innen am meisten entsprechen.
Das folgende Beispielnotebook implementiert das Training des Two-Tower-Modells mithilfe des Datasets „Learning from Sets of Items“ (Trainieren mit Elementgruppen), um die Wahrscheinlichkeit vorherzusagen, dass Benutzer:innen einen bestimmten Film hoch bewerten. Es verwendet Mosaic StreamingDataset für das verteilte Laden der Daten, TorchDistributor für das verteilte Modelltraining und MLflow für die Modellnachverfolgung und -protokollierung.
Notebook für ein Two-Tower-Empfehlungsmodell
Dieses Notebook ist auch im Databricks Marketplace verfügbar: Notebook für Two-Tower-Modell.
Hinweis
- Eingaben für das Zweiturmmodell sind die häufigsten kategorisierten Features user_id und product_id. Das Modell kann geändert werden, um mehrere Featurevektoren sowohl für Benutzer als auch für Produkte zu unterstützen.
- Ausgaben für das Zweiturmmodell sind in der Regel Binärwerte, die angeben, ob der Benutzer eine positive oder negative Interaktion mit dem Produkt hat. Das Modell kann für andere Anwendungen wie Regression, Mehrklassenklassifizierung und Wahrscheinlichkeiten für mehrere Benutzeraktionen geändert werden (z. B. schließen oder kaufen). Komplexe Ausgaben sollten sorgfältig implementiert werden, da konkurrierende Ziele die Qualität der vom Modell generierten Einbettungen beeinträchtigen können.
Beispiel: Trainieren einer DLRM-Architektur mithilfe eines synthetischen Datasets
DLRM ist eine hochmoderne Architektur mit einem neuronalen Netz, die speziell für Personalisierungs- und Empfehlungssysteme entwickelt wurde. Sie kombiniert kategorische und numerische Eingaben, um Benutzer-Artikel-Interaktionen effektiv zu modellieren und Benutzervorlieben vorherzusagen. DLRMs erwarten in der Regel Eingaben, die sowohl Features mit geringer Dichte (z. B. Benutzer-ID, Artikel-ID, geografischer Standort oder Produktkategorie) als auch Features mit hoher Dichte (z. B. Benutzeralter oder Artikelpreis) sein können. Die Ausgabe eines DLRM ist in der Regel eine Vorhersage der Kundenbindung, z. B. Klickraten oder Kaufwahrscheinlichkeit.
DLRMs bieten ein hochgradig anpassbares Framework, das sehr große Datenmengen verarbeiten kann, und eignen sich damit für komplexe Empfehlungsaufgaben in verschiedenen Bereichen. Da es sich um ein größeres Modell als die Two-Tower-Architektur handelt, wird es häufig in der Phase der Neusortierung angewandt.
Im folgenden Beispiel-Notebook wird ein DLRM-Modell erstellt, um binäre Bezeichnungen mit dichten (numerischen) Features und geringen (kategorisierten) Features vorherzusagen. Es verwendet ein synthetisches Dataset, um das Modell zu trainieren, das Mosaik StreamingDataset für verteilte Daten laden, TorchDistributor für verteilte Modellschulungen und Mlflow für die Modellverfolgung und Protokollierung.
DLRM-Notebook
Dieses Notebook ist auch im Databricks Marketplace verfügbar: DLRM-Notebook.
Vergleich von Two-Tower-Modellen und DLRMs
Die Tabelle enthält einige Leitfäden für die Auswahl des zu verwendenden Empfehlungsmodells.
Modelltyp | Erforderliche Datasetgröße für das Training | Modellgröße | Unterstützte Eingabetypen | Unterstützte Ausgabetypen | Anwendungsfälle |
---|---|---|---|---|---|
Two-Tower-Modell | Kleiner | Kleiner | In der Regel zwei Features („user_id“, „product_id“) | Hauptsächlich binäre Klassifizierung und Generieren von Einbettungen | Generieren von Hunderten oder Tausenden möglicher Empfehlungen |
DLRM | Größer | Größer | Verschiedene kategorische Feature und Features mit hoher Dichte („user_id“, „gender“, „geographic_location“, „product_id“, „product_category“ usw.) | Klassifizierung mit mehreren Klassen, Regression, andere | Präzise Abfrage (Empfehlung von zehn sehr relevanten Artikeln) |
Zusammenfassend lässt sich sagen, dass sich das Two-Tower-Modell am besten dazu eignet, Tausende von hochwertigen Empfehlungen sehr effizient zu generieren. Ein Beispiel könnten Filmempfehlungen von einem Streaminganbieter sein. Ein DLRM wird am besten für die Erstellung sehr spezifischer Empfehlungen basierend auf einer hohen Datenmenge verwendet. Ein Beispiel ist ein Onlineshop, der seinen Kund:innen eine kleinere Anzahl von Artikeln präsentieren möchte, die sie aber mit einer höheren Wahrscheinlichkeit kaufen werden.