Aanbevelingsmodellen trainen
Dit artikel bevat twee voorbeelden van op deep learning gebaseerde aanbevelingsmodellen in Azure Databricks. In vergelijking met traditionele aanbevelingsmodellen kunnen deep learning-modellen resultaten van hogere kwaliteit bereiken en naar grotere hoeveelheden gegevens schalen. Naarmate deze modellen zich blijven ontwikkelen, biedt Databricks een framework voor het effectief trainen van grootschalige aanbevelingsmodellen die honderden miljoenen gebruikers kunnen verwerken.
Een algemeen aanbevelingssysteem kan worden weergegeven als een trechter met de fasen die in het diagram worden weergegeven.
Sommige modellen, zoals het model met twee torens, presteren beter als het ophalen van modellen. Deze modellen zijn kleiner en kunnen effectief worden uitgevoerd op miljoenen gegevenspunten. Andere modellen, zoals DLRM of DeepFM, presteren beter als modellen opnieuw worden gerankt. Deze modellen kunnen meer gegevens in beslag nemen, groter zijn en kunnen gedetailleerde aanbevelingen bieden.
Vereisten
Databricks Runtime 14.3 LTS ML
Hulpprogramma's
De voorbeelden in dit artikel illustreren de volgende hulpprogramma's:
- TorchDistributor: TorchDistributor is een framework waarmee u grootschalige PyTorch-modeltraining kunt uitvoeren op Databricks. Spark wordt gebruikt voor indeling en kan worden geschaald naar zoveel GPU's als beschikbaar zijn in uw cluster.
- Mozaïek StreamingDataset: StreamingDataset verbetert de prestaties en schaalbaarheid van training voor grote gegevenssets op Databricks met behulp van functies zoals prefetching en interleaving.
- MLflow: Met Mlflow kunt u parameters, metrische gegevens en modelcontrolepunten bijhouden.
- TorchRec: Moderne aanbevelingssystemen maken gebruik van opzoektabellen insluiten om miljoenen gebruikers en items te verwerken om aanbevelingen van hoge kwaliteit te genereren. Grotere insluitingsgrootten verbeteren de modelprestaties, maar vereisen aanzienlijke GPU-geheugen- en multi-GPU-instellingen. TorchRec biedt een framework voor het schalen van aanbevelingsmodellen en opzoektabellen in meerdere GPU's, waardoor het ideaal is voor grote insluitingen.
Voorbeeld: Filmaanbeveling met behulp van een modelarchitectuur met twee torens
Het model met twee torens is ontworpen voor het afhandelen van grootschalige personalisatietaken door gebruikers- en itemgegevens afzonderlijk te verwerken voordat u ze combineert. Het is in staat om op efficiënte wijze honderden of duizenden goede kwaliteitsaanbevelingen te genereren. Het model verwacht over het algemeen drie invoergegevens: een user_id-functie, een product_id-functie en een binair label dat definieert of de <gebruiker, de productinteractie> positief was (de gebruiker heeft het product gekocht) of negatief (de gebruiker heeft het product een beoordeling met één ster gegeven). De uitvoer van het model bevat insluitingen voor zowel gebruikers als items, die vervolgens in het algemeen worden gecombineerd (vaak met een dot-product of cosinus-gelijkenis) om interacties tussen gebruikersitems te voorspellen.
Omdat het model met twee torens insluitingen biedt voor zowel gebruikers als producten, kunt u deze insluitingen in een vectordatabase plaatsen, zoals Databricks Vector Store, en vergelijkbare zoekbewerkingen uitvoeren op de gebruikers en items. U kunt bijvoorbeeld alle items in een vectorarchief plaatsen en voor elke gebruiker een query uitvoeren op het vectorarchief om de top honderd items te vinden waarvan de insluitingen vergelijkbaar zijn met die van de gebruiker.
In het volgende voorbeeldnotitieblok wordt de training van het model met twee torens geïmplementeerd met behulp van de gegevensset Learning from Sets of Items om de kans te voorspellen dat een gebruiker een bepaalde film zeer beoordeelt. Het maakt gebruik van Mosaic StreamingDataset voor het laden van gedistribueerde gegevens, TorchDistributor voor gedistribueerde modeltraining en Mlflow voor modeltracking en logboekregistratie.
Notebook model met twee torens aanbevelen
Dit notebook is ook beschikbaar in de Databricks Marketplace: Notebook met twee torens
Notitie
- Invoer voor het model met twee torens is meestal de categorische kenmerken user_id en product_id. Het model kan worden gewijzigd ter ondersteuning van meerdere functievectoren voor zowel gebruikers als producten.
- Uitvoer voor het model met twee torens zijn meestal binaire waarden die aangeven of de gebruiker een positieve of negatieve interactie met het product heeft. Het model kan worden gewijzigd voor andere toepassingen, zoals regressie, classificatie van meerdere klassen en waarschijnlijkheden voor meerdere gebruikersacties (bijvoorbeeld sluiten of kopen). Complexe uitvoer moet zorgvuldig worden geïmplementeerd, omdat concurrerende doelstellingen de kwaliteit kunnen verminderen van de insluitingen die door het model worden gegenereerd.
Voorbeeld: Een DLRM-architectuur trainen met behulp van een synthetische gegevensset
DLRM is een geavanceerde neurale netwerkarchitectuur die speciaal is ontworpen voor personalisatie- en aanbevelingssystemen. Het combineert categorische en numerieke invoer om gebruikersiteminteracties effectief te modelleren en gebruikersvoorkeuren te voorspellen. DLRM's verwachten over het algemeen invoer die zowel sparse-functies bevatten (zoals gebruikers-id, item-id, geografische locatie of productcategorie) als dichte functies (zoals leeftijd van gebruiker of itemprijs). De uitvoer van een DLRM is doorgaans een voorspelling van gebruikersbetrokkenheid, zoals klikfrequenties of aankoopkans.
DLRM's bieden een zeer aanpasbaar framework dat grootschalige gegevens kan verwerken, waardoor het geschikt is voor complexe aanbevelingstaken in verschillende domeinen. Omdat het een groter model is dan de architectuur met twee torens, wordt dit model vaak gebruikt in de herrankeringsfase.
In het volgende voorbeeld wordt een DLRM-model gebouwd om binaire labels te voorspellen met behulp van compacte (numerieke) functies en parse (categorische) functies. Het maakt gebruik van een synthetische gegevensset voor het trainen van het model, de Mosaic StreamingDataset voor het laden van gedistribueerde gegevens, TorchDistributor voor gedistribueerde modeltraining en Mlflow voor modeltracking en logboekregistratie.
DLRM-notebook
Dit notebook is ook beschikbaar in de Databricks Marketplace: DLRM-notebook.
Vergelijking van modellen met twee torens en DLRM
In de tabel ziet u enkele richtlijnen voor het selecteren van welk aanbevelingsmodel u wilt gebruiken.
Modeltype | De grootte van de gegevensset die nodig is voor training | Modelgrootte | Ondersteunde invoertypen | Ondersteunde uitvoertypen | Gebruiksgevallen |
---|---|---|---|---|---|
Twee torens | Kleiner | Kleiner | Meestal twee functies (user_id, product_id) | Voornamelijk binaire classificatie en het genereren van insluitingen | Honderden of duizenden mogelijke aanbevelingen genereren |
DLRM | Groter | Groter | Verschillende categorische en dichte kenmerken (user_id, geslacht, geographic_location, product_id, product_category, ...) | Classificatie van meerdere klassen, regressie, andere | Fijnmazig ophalen (aanbevolen tientallen zeer relevante items) |
Kortom, het model met twee torens wordt het beste gebruikt voor het genereren van duizenden aanbevelingen van goede kwaliteit zeer efficiënt. Een voorbeeld hiervan zijn filmaanbeveling van een kabelprovider. Het DLRM-model wordt het beste gebruikt voor het genereren van zeer specifieke aanbevelingen op basis van meer gegevens. Een voorbeeld kan een detailhandelaar zijn die een klant een kleiner aantal artikelen wil presenteren dat ze waarschijnlijk zullen kopen.