Creare un sistema di raccomandazione basato sul contenuto

Archiviazione BLOB
Registro contenitori
Databricks
Servizio Kubernetes
Machine Learning

Consigli sono un principale motore di ricavi per molte aziende e vengono usati in diversi tipi di settori, tra cui la vendita al dettaglio, le notizie e i supporti. Con la disponibilità di grandi quantità di dati, è ora possibile fornire raccomandazioni estremamente rilevanti tramite Machine Learning.

Esistono due tipi principali di sistemi di raccomandazione: filtro collaborativo e basato sul contenuto. Il filtro collaborativo identifica modelli simili nel comportamento dei clienti e consiglia elementi con cui altri clienti simili hanno interagito. La raccomandazione basata sul contenuto usa le informazioni sugli elementi per apprendere le preferenze dei clienti e consiglia gli elementi che condividono le proprietà con gli elementi con cui un cliente ha precedentemente interagito. L'approccio descritto in questo articolo è in particolare un sistema di raccomandazione basato sul contenuto.

Questo scenario di esempio illustra come l'azienda può usare Machine Learning per automatizzare la personalizzazione basata sul contenuto per i clienti. A livello elevato, è possibile usare Azure Databricks per eseguire il training di un modello che stima la probabilità che un utente interagisca con un elemento. Tale modello viene distribuito nell'ambiente di produzione come servizio di stima usando servizio Azure Kubernetes. A sua volta, è possibile usare questa stima per creare raccomandazioni personalizzate classificando gli elementi in base al contenuto che un utente probabilmente utilizzerà.

Potenziali casi d'uso

Questo scenario è rilevante per i casi d'uso seguenti:

  • Consigli sul contenuto per siti Web o app per dispositivi mobili.
  • Consigli sui prodotti per i siti di e-commerce.
  • Raccomandazioni per gli annunci visualizzati per i siti Web.

Architettura

Diagramma dell'architettura: training, valutazione e distribuzione di un modello di Machine Learning per la personalizzazione basata sul contenuto Apache Spark usando Azure Databricks.

Questo scenario di esempio illustra il training, la valutazione e la distribuzione di un modello di Machine Learning per la personalizzazione basata sul contenuto Apache Spark usando Azure Databricks. In questo caso, viene training di un modello con un algoritmo di classificazione con supervisione su un set di dati contenente le caratteristiche di utenti ed elementi. L'etichetta per ogni esempio è un valore binario che indica che l'utente ha fatto clic su un elemento. Questo scenario illustra un subset dei passaggi necessari per un carico di lavoro completo del sistema di raccomandazione end-to-end. Il contesto più ampio di questo scenario si basa su un sito Web di e-commerce generico con un front-end che offre contenuti in rapida evoluzione agli utenti. Questo sito Web usa cookie e profili utente per personalizzare il contenuto dell'utente. Oltre ai profili utente, il sito Web può avere informazioni su ogni elemento che fornisce a ogni utente. Quando i dati sono disponibili, vengono eseguiti i passaggi seguenti per compilare e operazionare un sistema di raccomandazione:

  1. I set di dati distinti relativi a utenti ed elementi vengono pre-elaborati e uniti, il che comporta l'uso di una combinazione di caratteristiche numeriche e categoriche per la stima delle interazioni utente-elemento (clic). Questa tabella viene caricata in BLOB di Azure Archiviazione. A scopo dimostrativo, viene usato il set di dati criteo display advertising challenge. Questo set di dati corrisponde alla tabella anonima descritta, perché contiene un'etichetta binaria per i clic utente osservati, 13 caratteristiche numeriche e altre 26 caratteristiche categoriche.
  2. La libreria MMLSpark consente di eseguire il training di un classificatore LightGBM in Azure Databricks per stimare la probabilità di clic come funzione delle caratteristiche numeriche e categoriche create nel passaggio precedente. LightGBM è un algoritmo di Machine Learning estremamente efficiente e MMLSpark consente il training distribuito dei modelli LightGBM su set di dati di grandi dimensioni.
  3. Il classificatore con training viene serializzato e archiviato in Registro modelli di Azure. Registro modelli di Azure consente di archiviare e organizzare versioni diverse del modello, ad esempio in base a dati più recenti o a iperparamementi diversi, all'interno di un'area di lavoro di Azure Machine Learning (Azure ML).
  4. Uno script di gestione viene definito usando la libreria MML Spark Serving per fornire stime dal modello con training.
  5. Azure ML viene usato per creare un'immagine Docker nel Registro Azure Container che contiene l'immagine con lo script di assegnazione dei punteggi e tutte le dipendenze necessarie per la gestione delle stime.
  6. Azure ML viene usato anche per effettuare il provisioning delle risorse di calcolo per la gestione delle stime. Un cluster Kubernetes viene configurato usando servizio Azure Kubernetes (AKS) con il numero di nodi necessari per gestire il carico previsto. Le dimensioni della macchina virtuale possono essere modificate in base ai requisiti di calcolo e memoria del modello.
  7. Il servizio di assegnazione dei punteggi viene distribuito come servizio Web nel cluster del servizio Web Diaks. Il servizio fornisce un endpoint in cui è possibile inviare funzionalità utente e elemento per ricevere la probabilità stimata di un clic per tale utente e elemento.

Componenti

Questa architettura usa i componenti seguenti:

  • Blob Archiviazione Azure è un servizio di archiviazione ottimizzato per l'archiviazione di grandi quantità di dati non strutturati. In questo scenario di esempio i dati di input vengono archiviati qui.
  • Azure Databricks è un cluster di Apache Spark gestito per il training e la valutazione del modello. Lo scenario usa anche MMLSpark,un framework basato su Spark progettato per Machine Learning su larga scala.
  • Registro Azure Container viene usato per creare un pacchetto dello script di assegnazione dei punteggi come immagine del contenitore, che viene usata per gestire il modello nell'ambiente di produzione.
  • servizio Azure Kubernetes viene usato per distribuire il modello con training nei servizi Web o app.
  • Azure Machine Learning viene usato in questo scenario per registrare il modello di Machine Learning e distribuire il servizio AKS.
  • Microsoft Recommenders è un repository open source che contiene codice di utilità ed esempi. Con questo repository, gli utenti possono iniziare a compilare, valutare e operazionare un sistema di raccomandazione.

Considerazioni

Scalabilità

Per il training, è possibile aumentare o Azure Databricks in base alle dimensioni dei dati usati e al calcolo necessario per il training del modello. Per ridimensionare, è possibile modificare il numero totale di core o la quantità di memoria disponibile per il cluster. È sufficiente modificare il numero o il tipo di macchine virtuali usate. Il set di dati Criteo contiene 45,8 milioni di righe in questo esempio. è stato addestrato in pochi minuti in un cluster con 10 macchine virtuali L8s standard.

Per la distribuzione, è possibile ridimensionare le risorse di calcolo in base al carico previsto per i requisiti di latenza e del servizio di assegnazione dei punteggi. Il servizio di assegnazione dei punteggi usa MML Spark Serving in esecuzione separatamente in ogni nodo del cluster Kubernetes. Con questa procedura, è possibile trasferire facilmente la pipeline di trasformazione delle funzionalità e stima del modello sviluppata Azure Databricks sul lato produzione. Elimina anche la necessità di pre-ricalcolare i punteggi per tutte le possibili combinazioni di utenti ed elementi, il che potrebbe essere difficile se si usano funzionalità utente dinamiche, ad esempio l'ora del giorno.

Disponibilità

Le attività di Machine Learning sono suddivise in due componenti delle risorse: risorse per il training e risorse per la distribuzione di produzione. Le risorse necessarie per il training in genere non necessitano di disponibilità elevata, perché le richieste di produzione in tempo reale non hanno raggiunto direttamente queste risorse. Le risorse necessarie per la fornitura del servizio devono invece avere disponibilità elevata per rispondere alle richieste dei clienti.

La formazione Azure Databricks può avvenire in una qualsiasi delle aree con un contratto di servizio per supportare le proprie esigenze. Per la distribuzione di produzione, servizio Azure Kubernetes viene usato per offrire un'ampia disponibilità geografica con questo contratto di servizio.

Sicurezza

Questo scenario può usare Azure Active Directory (Azure AD) per autenticare gli utenti nell'area di lavoro Azure Databricks e nel cluster Azure Kubernetes. Le autorizzazioni possono essere gestite tramite l Azure AD o il controllo degli accessi in base al ruolo.

Distribuire lo scenario

Prerequisiti

È necessario un account Azure esistente.

Procedura dettagliata

Tutto il codice per questo scenario è disponibile nel repository Microsoft Recommenders.

Per eseguire i notebook per il training e la distribuzione del modello di raccomandazione in Azure Databricks:

  1. Creare un'Azure Databricks di lavoro dal portale di Azure.
  2. Seguire le istruzioni di installazione per installare le utilità dal repository Microsoft Recommenders in un cluster all'interno dell'area di lavoro.
    1. Includere --mmlspark l'opzione nello script di installazione per installare --mmlspark
    2. MMLSpark richiede anche che la scalabilità automatica sia disabilitata nell'installazione del cluster.
  3. Importare il notebook di training nell'area di lavoro. Dopo l'accesso all'area Azure Databricks lavoro:
    1. Selezionare Home sul lato sinistro dell'area di lavoro.
    2. Fare clic con il pulsante destro del mouse su spazi vuoti nella home directory.
    3. Selezionare Importa.
    4. Selezionare URLe incollare la stringa seguente nel campo di testo: .
    5. Selezionare Importa.
  4. Ripetere il passaggio 3 per il notebook di operazzazione qui: https://aka.ms/recommenders/lgbm-criteo-o16n .
  5. Selezionare il notebook per aprirlo, collegare il cluster configurato ed eseguire il notebook.

Prezzi

Per comprendere meglio il costo di esecuzione di questo scenario in Azure, usare il calcolatore prezzi di Azure. I presupposti di partenza sono i seguenti:

  • I dati di training hanno la stessa scala del set di dati di esempio usato (45,8 milioni di righe).
  • Il training deve avvenire quotidianamente per aggiornare il modello di servizio.
  • Il training verrà eseguito in Azure Databricks usando un cluster di cui è stato effettuato il provisioning con 12 macchine virtuali che usano istanze L8s.
  • Il training può richiedere un'ora, tra cui l'elaborazione delle funzionalità e il training del modello e la convalida.
  • Azure Machine Learning verrà usato per distribuire il modello nel servizio Diaks con un piccolo cluster a tre nodi usando istanze D3.
  • Il cluster del servizio Contenitore di Windows server verrà ridimensionato automaticamente in base alle esigenze, attivando in media due nodi al mese.

Per vedere le differenze di prezzo per il caso d'uso, modificare le variabili in modo che corrispondano alle dimensioni dei dati previste e ai requisiti di carico. Per dati di training di dimensioni maggiori o minori, le dimensioni del cluster Databricks possono essere aumentate o ridotte, rispettivamente. Per gestire un numero maggiore di utenti simultanei durante la gestione del modello, è necessario aumentare il cluster del servizio Web Diaks. Per altre informazioni sul ridimensionamento del servizio AKS per supportare i requisiti di latenza e carico, vedere il notebook di operazionizzazione.

Passaggi successivi