Assegnazione del punteggio in batch per i modelli Python in Azure

Registro Azure Container
Hub eventi di Azure
Azure Machine Learning
database SQL di Azure
Analisi di flusso di Azure

Questa guida all'architettura illustra come creare una soluzione scalabile per i modelli di assegnazione dei punteggi batch di Azure Machine Learning. La soluzione può essere usata come modello e supporta la generalizzazione per problemi diversi.

Architettura

Diagramma dell'architettura che mostra il punteggio batch dei modelli Python in Azure

Scaricare un file di Visio di questa architettura.

Workflow

Questa guida all'architettura è applicabile sia per i dati di streaming che per i dati statici, purché il processo di inserimento sia adattato al tipo di dati. I passaggi e i componenti seguenti descrivono l'inserimento di questi due tipi di dati.

Streaming di dati:

  1. I dati di streaming provengono dai sensori IoT, in cui i nuovi eventi vengono trasmessi a intervalli frequenti.
  2. Gli eventi di streaming in ingresso vengono accodati usando Hub eventi di Azure e quindi pre-elaborati con Analisi di flusso di Azure.
    • Hub eventi di Azure. Questo servizio di inserimento dei messaggi può inserire milioni di messaggi di eventi al secondo. In questa architettura, i sensori inviano un flusso di dati all'hub eventi.
    • Analisi di flusso di Azure. Un motore di elaborazione di eventi. Un processo di Analisi di flusso legge i flussi di dati dall'hub eventi ed esegue l'elaborazione dei flussi.

Dati statici:

  1. I set di dati statici possono essere archiviati come file in Azure Data Lake Archiviazione o in formato tabulare in Azure Synapse o database SQL di Azure.
  2. Azure Data Factory può essere usato per aggregare o pre-elaborare il set di dati archiviato.

L'architettura rimanente, dopo l'inserimento dei dati, è uguale sia per i dati di streaming che per i dati statici ed è costituita dai passaggi e dai componenti seguenti:

  1. I dati inseriti, aggregati o pre-elaborati possono essere archiviati come documenti in Azure Data Lake Archiviazione o in formato tabulare in Azure Synapse o database SQL di Azure. Questi dati verranno quindi usati da Azure Machine Learning.
  2. Azure Machine Learning viene usato per il training, la distribuzione e la gestione di modelli di Machine Learning su larga scala. Nel contesto dell'assegnazione dei punteggi batch, Azure Machine Learning crea un cluster di macchine virtuali con un'opzione di ridimensionamento automatico, in cui i processi vengono eseguiti in parallelo come degli script Python.
  3. I modelli vengono distribuiti come endpoint batch gestiti, che vengono quindi usati per eseguire l'inferenza batch su grandi volumi di dati in un periodo di tempo. Gli endpoint batch ricevono puntatori ai dati ed eseguono processi in modo asincrono per elaborare i dati in parallelo nei cluster di calcolo.
  4. I risultati dell'inferenza possono essere archiviati come documenti all'interno di Azure Data Lake Archiviazione o in formato tabulare in Azure Synapse o database SQL di Azure.
  5. Visualizza: i risultati del modello archiviati possono essere utilizzati tramite interfacce utente, ad esempio dashboard di Power BI o applicazioni Web personalizzate.

Componenti

Considerazioni

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

Prestazioni

Per i modelli Python standard, le CPU sono generalmente considerate sufficienti per gestire il carico di lavoro. Questa architettura usa CPU. Tuttavia, per i carichi di lavoro di Deep Learning, le unità di elaborazione grafica (GPU) in genere superano le CPU per una notevole quantità. Per ottenere prestazioni confrontabili è in genere necessario un cluster di CPU di dimensioni elevate.

Parallelizzare tra macchine virtuali e core

Quando si eseguono processi di assegnazione dei punteggi di molti modelli in modalità batch, i processi devono essere parallelizzati tra le macchine virtuali. Sono possibili due approcci:

  • Creare un cluster più grande con macchine virtuali a basso costo.
  • Creare un cluster più piccolo con macchine virtuali a prestazioni elevate con più core disponibili in ognuna.

In generale, l'assegnazione dei punteggi dei modelli Python standard non è così impegnativa come l'assegnazione dei punteggi dei modelli di Deep Learning e un piccolo cluster deve essere in grado di gestire in modo efficiente un numero elevato di modelli in coda. È possibile aumentare il numero di nodi del cluster man mano che aumentano le dimensioni dei set di dati.

Per praticità in questo scenario, un'attività di assegnazione dei punteggi viene inviata all'interno di un singolo passaggio della pipeline di Azure Machine Learning. Tuttavia, può essere più efficiente assegnare il punteggio a più blocchi di dati all'interno dello stesso passaggio della pipeline. In questi casi, scrivere codice personalizzato per leggere in più set di dati ed eseguire lo script di assegnazione dei punteggi durante un'esecuzione in un singolo passaggio.

Gestione

  • Monitoraggio dei processi. È importante monitorare lo stato di avanzamento dei processi in esecuzione. Tuttavia, il monitoraggio in un cluster di nodi attivi può rivelarsi un problema. Per esaminare lo stato dei nodi nel cluster, usare il portale di Azure per gestire l'area di lavoro di Machine Learning. Se un nodo è inattivo o un processo non è riuscito, i log degli errori vengono salvati nell'archivio BLOB e sono accessibili anche nella sezione Pipeline. Per un monitoraggio più completo, connettere i log ad Application Insights o eseguire processi separati per il polling dello stato del cluster e dei relativi processi.
  • Logging (Wiki Microsoft/ApplicationInsights-aspnetcore: registrazione). Machine Learning registra tutti gli stdout/stderr nell'account Archiviazione di Azure associato. Per semplificare la visualizzazione dei file di log, usare uno strumento di esplorazione dell'archiviazione, ad esempio Azure Storage Explorer.

Ottimizzazione dei costi

L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.

I componenti più costosi usati in questa guida all'architettura sono le risorse di calcolo. Le dimensioni del cluster di calcolo possono aumentare o diminuire a seconda dei processi presenti nella coda. Abilitare il ridimensionamento automatico a livello di codice tramite Python SDK modificando la configurazione del provisioning del calcolo. In alternativa, usare l'interfaccia della riga di comando di Azure per impostare i parametri di ridimensionamento automatico del cluster.

Per le operazioni che non richiedono un intervento immediato, configurare la formula di scalabilità automatica in modo che lo stato predefinito (minimo) sia rappresentato da un cluster con un numero di nodi pari a zero. Con questa configurazione, il cluster inizia con un numero di nodi pari a zero, per poi aumentare quando rileva processi nella coda. Se il processo di assegnazione del punteggio in batch si verifica poche volte al giorno, questa impostazione consente di ottenere un risparmio significativo sui costi.

Il ridimensionamento automatico potrebbe non essere appropriato per i processi batch troppo vicini tra loro. Poiché il tempo necessario per lo spin-up e lo spin down di un cluster comporta un costo, se un carico di lavoro batch inizia solo pochi minuti dopo il termine del processo precedente, potrebbe essere più conveniente mantenere il cluster in esecuzione tra i processi. Questa strategia dipende dal fatto che i processi di assegnazione dei punteggi siano pianificati per l'esecuzione a una frequenza elevata ,ad esempio ogni ora, o meno frequentemente (una volta al mese, ad esempio).

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

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

Passaggi successivi

Documentazione sui prodotti:

Moduli di Microsoft Learn: