Usare l'approccio molti modelli per ridimensionare i modelli di Machine Learning

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

Questo articolo descrive un'architettura per molti modelli che usano Azure Machine Learning e cluster di calcolo. Offre versatilità per situazioni che richiedono una configurazione complessa.

Architettura

Diagramma che mostra l'architettura dei numerosi modelli.

Scaricare un file di Visio di questa architettura.

Flusso di dati

Il flusso di dati seguente corrisponde al diagramma precedente:

  1. inserimento dati :

    1. Azure Data Factory recupera i dati da un database di origine e li copia in Azure Data Lake Storage.

    2. I dati vengono quindi archiviati in un archivio dati di Machine Learning come set di dati tabulare.

  2. Pipeline di training dei modelli:

    1. Preparare i dati:

      1. La pipeline di training recupera i dati dall'archivio dati e lo trasforma in base alle esigenze.

      2. I dati vengono raggruppati in set di dati per il training dei modelli.

    2. Eseguire il training dei modelli:

      1. La pipeline esegue il training dei modelli per tutti i set di dati creati durante la preparazione dei dati.

      2. Usa la classe ParallelRunStep per eseguire il training di più modelli in parallelo.

      3. Dopo aver eseguito il training dei modelli, la pipeline registra i modelli e le relative metriche di test in Machine Learning.

  3. Pipeline di promozione del modello:

    1. Valutare i modelli:

      1. La pipeline di promozione valuta i modelli sottoposti a training prima di spostarli nell'ambiente di produzione.

      2. Una pipeline DevOps applica la logica di business per determinare se un modello soddisfa i criteri per la distribuzione. Ad esempio, potrebbe verificare che l'accuratezza dei dati di test superi 80%.

    2. Registrare i modelli:

      1. La pipeline di promozione registra i modelli idonei nell'area di lavoro di Machine Learning di produzione.
  4. Pipeline di assegnazione dei punteggi batch del modello:

    1. Preparare i dati:

      1. La pipeline di assegnazione dei punteggi batch recupera i dati dall'archivio dati e trasforma ogni file in base alle esigenze.

      2. I dati vengono raggruppati in set di dati per l'assegnazione dei punteggi.

    2. Score models:

      1. La pipeline usa la classe ParallelRunStep per assegnare un punteggio a più set di dati in parallelo.

      2. Identifica il modello appropriato per ogni set di dati in Machine Learning eseguendo una ricerca nei tag del modello.

      3. Il modello viene scaricato e usato per assegnare un punteggio al set di dati.

      4. La classe DataTransferStep scrive i risultati in Azure Data Lake.

      5. Le stime vengono passate da Azure Data Lake a Synapse SQL per la gestione.

      6. L'endpoint online gestito fornisce l'assegnazione dei punteggi in tempo reale.

      7. A causa del numero elevato di modelli, vengono caricati su richiesta anziché precaricati.

  5. Risultati:

    • Previsioni: la pipeline di assegnazione del punteggio batch salva le stime in Synapse SQL.

    • Metriche: Microsoft Power BI si connette alle stime del modello per recuperare e aggregare i risultati per la presentazione.

Componenti

  • di Azure Data Factory è un servizio di integrazione dei dati basato sul cloud che consente la creazione di flussi di lavoro basati sui dati per orchestrare e automatizzare lo spostamento e la trasformazione dei dati. In questa architettura Azure Data Factory inserisce i dati aziendali e i metadati di terze parti in Data Lake Storage.

  • Azure DevOps è un set di servizi per sviluppatori che offrono una gestione completa del ciclo di vita dell'applicazione e dell'infrastruttura. Include strumenti per pipeline di integrazione continua e recapito continuo (CI/CD), rilevamento del lavoro, controllo del codice sorgente, pipeline di compilazione, gestione dei pacchetti e soluzioni di test. In questa architettura, Azure DevOps viene usato per gestire le pipeline CI/CD per automatizzare l'innalzamento di livello del modello, i test e la distribuzione negli ambienti di produzione.

  • database SQL di Azure è un database cloud relazionale completamente gestito. In questa architettura, il database SQL viene usato per archiviare dati strutturati su cui è possibile eseguire query o analizzare come parte della pipeline di dati.

  • l'analisi di flusso di Azure è un servizio di analisi in tempo reale e di elaborazione eventi complesso progettato per analizzare ed elaborare volumi elevati di dati di streaming veloce. In questa architettura è possibile usare Analisi di flusso per l'elaborazione dei dati in tempo reale.

  • Azure Synapse Analytics è un servizio di analisi che riunisce integrazione dei dati, data warehousing aziendale e analisi di Big Data. Viene usato in questa architettura per archiviare i risultati di assegnazione dei punteggi in batch. Questo approccio consente di eseguire query e recuperare in modo efficiente le stime per la creazione di report o l'analisi. Synapse SQL viene usato per gestire le stime alle applicazioni downstream e abilitare strumenti di visualizzazione come Power BI per accedere ai risultati aggregati.

  • Data Lake Storage è un servizio di archiviazione altamente scalabile e sicuro per carichi di lavoro di analisi a elevate prestazioni. In questa architettura Data Lake Storage funge da livello di archiviazione primario per i set di dati non elaborati e trasformati e per l'archiviazione dei risultati dalle pipeline di assegnazione dei punteggi.

  • Machine Learning è un servizio di Machine Learning di livello aziendale per la creazione e la distribuzione rapida dei modelli. Offre agli utenti a tutti i livelli di competenza strumenti come una finestra di progettazione a basso codice, machine learning automatizzato e un ambiente notebook Jupyter ospitato che supporta vari ambienti di sviluppo integrati. In questa architettura, Machine Learning viene usato per gestire il ciclo di vita dei modelli, tra cui training, valutazione e distribuzione. Orchestra anche le pipeline per attività quali training, promozione e assegnazione dei punteggi.

    • gli endpoint online gestiti sono una funzionalità di Machine Learning usata per l'assegnazione dei punteggi in tempo reale. In questa architettura, un endpoint online gestito consente di offrire un modo scalabile e sicuro per gestire le stime quasi in tempo reale caricando modelli di Machine Learning su richiesta.

    • La classe ParallelRunStep è un componente delle pipeline di Machine Learning usate per eseguire in modo efficiente i processi paralleli. Consente l'elaborazione scalabile di attività batch, ad esempio il training o l'assegnazione di punteggi a più modelli contemporaneamente. In questa architettura, la classe ParallelRunStep viene usata nelle pipeline di training del modello e di assegnazione dei punteggi batch per eseguire il training o assegnare punteggi a più set di dati o modelli in parallelo, riducendo in modo significativo il runtime di queste operazioni.

  • power BI è una raccolta di servizi software, app e connettori che interagiscono per trasformare origini di dati non correlate in informazioni dettagliate coerenti, visivamente immersive e interattive. In questa architettura Power BI si connette a Synapse SQL per recuperare e presentare stime e metriche aggregate tramite dashboard interattivi.

Alternative

  • È possibile usare qualsiasi database per i dati di origine.

  • È possibile usare il servizio Azure Kubernetes per l'inferenza in tempo reale anziché gli endpoint online gestiti. Il servizio Azure Kubernetes consente di distribuire modelli in contenitori e offre un maggiore controllo sulla distribuzione. Queste funzionalità consentono il caricamento dinamico dei modelli per gestire le richieste in ingresso senza esaurimento delle risorse.

Dettagli dello scenario

Molti problemi di Machine Learning sono troppo complessi per risolvere un singolo modello di Machine Learning. Indipendentemente dal fatto che si stia stimando le vendite per ogni elemento di ogni negozio o manutenzione di modellazione per centinaia di pozzi petroliferi, la presenza di un modello per ogni istanza potrebbe migliorare i risultati in molti problemi di Machine Learning. Questo modello di molti modelli è comune in un'ampia gamma di settori e ha molti casi d'uso reali. Con l'uso di Machine Learning, una pipeline di modelli end-to-end può includere il training del modello, la distribuzione di inferenze batch e la distribuzione in tempo reale.

Una soluzione molti modelli richiede un set di dati diverso per ogni modello durante il training e l'assegnazione del punteggio. Ad esempio, se l'attività prevede la stima delle vendite per ogni elemento in ogni negozio, ogni set di dati corrisponde a una combinazione univoca di articoli.

Potenziali casi d'uso

  • Retail: Catena di negozi di alimentari deve creare un modello di previsione dei ricavi separato per ogni negozio e articolo, in totale oltre 1.000 modelli per ogni negozio.

  • Supply chain: per ogni combinazione di magazzino e prodotto, una società di distribuzione deve ottimizzare l'inventario.

  • Ristoranti: Catena con migliaia di franchise devono prevedere la domanda per ogni franchise.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Well-Architected Framework.

  • Partizioni di dati: dividere i dati in partizioni è essenziale per implementare il modello di molti modelli. Se si vuole un modello per ogni archivio, ogni set di dati contiene tutti i dati per un singolo archivio, quindi sono presenti tutti i set di dati presenti. Per modellare i prodotti per negozio, è disponibile un set di dati per ogni combinazione di prodotti e punti vendita. A seconda del formato dei dati di origine, potrebbe essere facile partizionare i dati oppure potrebbe richiedere un'ampia sequenza di dati casuali e trasformazioni. Spark e Synapse SQL vengono ridimensionati correttamente per queste attività, mentre Python pandas non viene eseguito in un singolo nodo e processo.

  • Gestione dei modelli: le pipeline di training e assegnazione del punteggio identificano e richiamano il modello appropriato per ogni set di dati. A tale scopo, calcolare i tag che caratterizzano il set di dati e quindi usare i tag per trovare il modello di corrispondenza. I tag identificano la chiave di partizione dati e la versione del modello e possono anche fornire altre informazioni.

  • Scegliere l'architettura corretta:

    • Spark è adatto quando la pipeline di training ha requisiti complessi di trasformazione e raggruppamento dei dati. Offre tecniche flessibili di suddivisione e raggruppamento per raggruppare i dati in base a combinazioni di caratteristiche, ad esempio prodotto-negozio o posizione-prodotto. I risultati possono essere inseriti in un dataframe Spark per essere utilizzati nei passaggi successivi.

    • Se gli algoritmi di training e assegnazione dei punteggi di Machine Learning sono semplici, è possibile partizionare i dati con librerie come scikit-learn. In questo scenario potrebbe non essere necessario Spark, quindi è possibile evitare possibili complessità che si verificano quando si installa Azure Synapse Analytics o Azure Databricks.

    • Se i set di dati di training sono già stati creati, ad esempio quando vengono archiviati in file separati o organizzati in righe o colonne distinte, non è necessario Spark per trasformazioni di dati complesse.

    • La soluzione Machine Learning e cluster di calcolo offre versatilità per situazioni che richiedono una configurazione complessa. Ad esempio, è possibile usare un contenitore Docker personalizzato, scaricare file o scaricare modelli con training preliminare. Visione artificiale ed elaborazione del linguaggio naturale sono esempi di applicazioni che potrebbero richiedere questa versatilità.

  • Repository di modelli separati: Per proteggere i modelli distribuiti, è consigliabile archiviarli nel proprio repository a cui non accedono le pipeline di training e test.

  • classe ParallelRunStep: la classe Python ParallelRunStep è un'opzione efficace per l'esecuzione di molti modelli di training e inferenza. Può partizionare i dati in diversi modi e quindi applicare lo script di Machine Learning agli elementi della partizione in parallelo. Analogamente ad altre forme di training di Machine Learning, è possibile specificare un ambiente di training personalizzato che abbia accesso ai pacchetti PyPI (Python Package Index) o un ambiente Docker personalizzato più avanzato per le configurazioni che richiedono più di PyPI standard. È possibile scegliere tra molte CPU e GPU.

  • inferenza online: Se una pipeline carica e memorizza nella cache tutti i modelli dall'inizio, i modelli potrebbero esaurire la memoria del contenitore. Caricare quindi i modelli su richiesta nel metodo di esecuzione, anche se potrebbe aumentare leggermente la latenza.

Ottimizzazione dei costi

L'ottimizzazione dei costi è incentrata sui modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'ottimizzazione dei costi.

Per comprendere meglio il costo per eseguire questo scenario in Azure, usare il calcolatore dei prezzi . Si supponga che:

  • Il training dei modelli di servizio viene eseguito ogni giorno per mantenerli al corrente.

  • Sono necessari circa 30 minuti per elaborare un set di dati contenente 40 milioni di righe di 10 migliaia di combinazioni univoche di prodotti store. Il set di dati esegue il training in Azure Databricks usando un cluster di cui è stato effettuato il provisioning con 12 macchine virtuali (VM) che usano istanze di Ls16_v2. L'assegnazione del punteggio batch con lo stesso set di dati richiede circa 20 minuti.

  • È possibile usare Machine Learning per distribuire l'inferenza in tempo reale. A seconda del volume della richiesta, scegliere un tipo appropriato di vm e dimensioni del cluster.

  • Un cluster del servizio Azure Kubernetes viene ridimensionato automaticamente in base alle esigenze, con una media di due nodi attivi ogni mese.

Per informazioni sulle differenze dei prezzi per il caso d'uso, modificare le variabili nel calcolatore dei prezzi in modo che corrispondano alle dimensioni dei dati previste e ai requisiti di carico. Per dati di training di dimensioni maggiori o minori, aumentare o diminuire le dimensioni del cluster Azure Databricks. Per gestire più utenti simultanei durante la gestione del modello, aumentare le dimensioni del cluster del servizio Azure Kubernetes.

Collaboratori

Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.

Autore principale:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi