Una volta addestrato un modello di machine learning, il passaggio successivo consiste nell'utilizzarlo per fare previsioni su nuovi dati. Questo processo, noto come inferenza, richiede una strategia che dipende fortemente dai requisiti di latenza e velocità effettiva dell'applicazione. L'inferenza batch, detta anche inferenza offline o elaborazione asincrona, è un metodo potente e altamente efficiente per generare previsioni su un grande volume di dati quando non sono richieste risposte immediate in tempo reale.
L'inferenza batch è il processo di utilizzo di un modello di machine learning addestrato per generare previsioni su un ampio set di osservazioni, o "batch", tutte in una volta.
A differenza dell'inferenza online, in cui le previsioni vengono effettuate su singoli punti dati man mano che arrivano, l'inferenza batch opera su dati raccolti in un periodo di tempo. Questo approccio dà priorità a un throughput elevato e all'efficienza computazionale rispetto alla bassa latenza. Poiché l'elaborazione viene eseguita offline e non in risposta diretta a una richiesta dell'utente, è anche nota come inferenza statica: le previsioni vengono generate e archiviate per un uso successivo.
La scelta tra inferenza batch e online è una decisione architettonica fondamentale nella progettazione di un sistema di machine learning. Ogni approccio ha uno scopo diverso ed è ottimizzato per caratteristiche di prestazioni diverse.
Funzionalità | Inferenza batch | Inferenza online |
Trattamento dati | Elabora una grande raccolta di punti dati in un unico job. | Elabora un singolo punto dati o un gruppo molto piccolo di punti dati man mano che arrivano. |
Ottimizzazione primaria | Throughput elevato e convenienza. | Bassa latenza e reattività immediata. |
Latenza | Latenza elevata; le previsioni non sono disponibili immediatamente (da minuti a ore). | Latenza molto bassa: le previsioni vengono restituite in millisecondi. |
Chiamata | Attivato in base a una pianificazione (ad esempio, cron job) o su richiesta. | Attivato da una richiesta diretta dell'utente o da un evento nel sistema. |
Utilizzo del calcolo | Può utilizzare risorse di computing potenti per un breve periodo, quindi eseguire lo scale down fino a zero. | Richiede che un server o un endpoint sia costantemente in esecuzione e pronto ad accettare richieste. |
Caso d'uso di esempio | Generare consigli sui prodotti giornalieri per tutti gli utenti di un sito di e-commerce. | Prevedere se una singola transazione con carta di credito è fraudolenta nel momento in cui viene effettuata. |
Termini sinonimi | Inferenza offline, elaborazione asincrona, inferenza statica. | Inferenza in tempo reale, elaborazione sincrona, inferenza dinamica. |
Funzionalità
Inferenza batch
Inferenza online
Trattamento dati
Elabora una grande raccolta di punti dati in un unico job.
Elabora un singolo punto dati o un gruppo molto piccolo di punti dati man mano che arrivano.
Ottimizzazione primaria
Throughput elevato e convenienza.
Bassa latenza e reattività immediata.
Latenza
Latenza elevata; le previsioni non sono disponibili immediatamente (da minuti a ore).
Latenza molto bassa: le previsioni vengono restituite in millisecondi.
Chiamata
Attivato in base a una pianificazione (ad esempio, cron job) o su richiesta.
Attivato da una richiesta diretta dell'utente o da un evento nel sistema.
Utilizzo del calcolo
Può utilizzare risorse di computing potenti per un breve periodo, quindi eseguire lo scale down fino a zero.
Richiede che un server o un endpoint sia costantemente in esecuzione e pronto ad accettare richieste.
Caso d'uso di esempio
Generare consigli sui prodotti giornalieri per tutti gli utenti di un sito di e-commerce.
Prevedere se una singola transazione con carta di credito è fraudolenta nel momento in cui viene effettuata.
Termini sinonimi
Inferenza offline, elaborazione asincrona, inferenza statica.
Inferenza in tempo reale, elaborazione sincrona, inferenza dinamica.
Una pipeline di inferenza batch è un flusso di lavoro strutturato e automatizzato che sposta i dati dal loro stato non elaborato a previsioni utilizzabili. Il processo può essere suddiviso in questi passaggi chiave, che in genere vengono orchestrati da un gestore del flusso di lavoro o da un sistema di pianificazione.
Il processo inizia con l'accumulo di dati nel tempo. Questi dati di input, che possono includere log delle attività degli utenti, record delle transazioni o letture dei sensori, vengono raccolti da varie fonti e inseriti in una posizione di archiviazione centralizzata. Spesso si tratta di un data lake basato su un servizio come Google Cloud Storage o un data warehouse come BigQuery.
La pipeline di inferenza viene avviata da un trigger. Questo trigger può essere:
Una volta attivato, il job carica l'intero batch di dati di input non elaborati. Quindi esegue i passaggi di pre-elaborazione e feature engineering necessari per trasformare i dati nel formato preciso previsto dal modello di machine learning. Può includere attività come la pulizia dei valori mancanti, il ridimensionamento delle caratteristiche numeriche e la codifica delle variabili categoriche.
Il sistema recupera il modello di machine learning addestrato da un repository centrale, come Vertex AI Model Registry. Il batch di dati pre-elaborato viene quindi inserito nel modello, che esegue l'inferenza su ogni singola osservazione nel set per generare una previsione corrispondente.
L'output del modello, ovvero la raccolta di previsioni, viene quindi scritto in un sistema di archiviazione. La scelta della destinazione dipende da come verranno utilizzate le previsioni. Le destinazioni comuni includono il caricamento dei risultati in una tabella BigQuery per l'analisi, in un database Cloud SQL per ricerche rapide da parte di un'applicazione o il salvataggio come file in Cloud Storage.
Ora che le previsioni sono archiviate e pronte, i sistemi downstream possono utilizzarle. Uno strumento di business intelligence potrebbe eseguire una query sui risultati per creare una dashboard del comportamento previsto dei clienti. Il backend di un'applicazione web potrebbe caricare i consigli sui prodotti precalcolati da mostrare agli utenti oppure una piattaforma di automazione del marketing potrebbe estrarre un elenco di clienti che si prevede abbandoneranno il servizio per indirizzarli con una nuova campagna.
Per molti casi d'uso aziendali, l'inferenza batch può offrire vantaggi significativi rispetto all'elaborazione in tempo reale.
Efficienza in termini di costi
L'elaborazione batch consente di ottimizzare l'utilizzo delle risorse di calcolo. Puoi eseguire job di grandi dimensioni su hardware potente per un breve periodo e quindi chiudere le risorse, evitando il costo di manutenzione di un server in esecuzione continua.
Velocità effettiva e scalabilità elevate
I sistemi batch sono progettati per scalare ed elaborare terabyte di dati in modo efficiente. Ciò consente di applicare modelli complessi a set di dati molto grandi, cosa che potrebbe essere troppo lenta o costosa per un sistema online.
Semplicità delle operazioni
Le pipeline di inferenza batch possono essere più semplici da creare e gestire rispetto ai sistemi di inferenza online a bassa latenza e ad alta disponibilità. In genere sono più resilienti agli errori temporanei e possono essere facilmente riavviati se un job non riesce.
Consente un'elaborazione complessa delle caratteristiche
Poiché l'inferenza in batch non è vincolata da requisiti di bassa latenza, puoi eseguire un feature engineering più complesso e computazionalmente intensivo sui dati di input, il che spesso può portare a modelli più accurati.
Migliore utilizzo delle risorse
Puoi pianificare l'esecuzione dei job batch durante le ore non di punta, sfruttando la capacità di calcolo inattiva e potenzialmente i prezzi spot più bassi per le macchine virtuali.
L'inferenza in batch è il metodo preferito per molti processi aziendali di base in cui le previsioni migliorano un prodotto o un servizio senza la necessità di essere generate in tempo reale. Questo approccio può essere molto efficace in vari settori per risolvere problemi di dati su larga scala.
Settore | Problema da risolvere | Soluzione di esempio |
E-commerce e retail | Genera consigli personalizzati sui prodotti per l'intera base utenti su base giornaliera per assicurarti che siano pronti per un recupero rapido quando gli utenti visitano il sito. | Vertex AI Batch Predictions può eseguire un modello di consigli e caricare i risultati in un database di ricerca rapida come Cloud SQL o Bigtable. |
Telecomunicazioni e SaaS | Identifica i clienti a elevato rischio di abbandono il mese successivo analizzando i pattern di utilizzo nell'intero database clienti. | BigQuery ML consente di eseguire un modello di classificazione direttamente sui dati dei clienti archiviati nel data warehouse, con i risultati scritti in una nuova tabella per il team di fidelizzazione. |
Finanza e assicurazioni | Previsione delle tendenze del mercato finanziario o calcolo dei punteggi di rischio per un intero portafoglio di asset, un'attività a elevata intensità di calcolo eseguita periodicamente. | Vertex AI Batch Predictions può eseguire modelli di serie temporali complessi in base a una pianificazione, fornendo i dati necessari per report e dashboard strategici. |
Logistica e forniture | Ottimizza i livelli di inventario in centinaia di magazzini eseguendo una complessa simulazione di previsione della domanda basata su dati settimanali di vendita e logistica. | Google Kubernetes Engine (GKE) fornisce l'ambiente personalizzato ad alte prestazioni necessario per eseguire modelli di simulazione specializzati con requisiti specifici di libreria e hardware. |
Sanità | Analizzare un grande batch giornaliero di immagini mediche (come radiografie o TAC) per rilevare potenziali anomalie da rivedere in seguito da un radiologo. | GKE con acceleratori GPU è ideale per l'esecuzione di modelli di visione artificiale di deep learning su grandi set di immagini, offrendo il massimo controllo e le massime prestazioni. |
Aspetti legali e conformità | Elabora e classifica milioni di documenti esistenti per estrarre le entità chiave, valutare il sentiment e rendere l'intero corpus ricercabile e analizzabile. | Dataflow può essere utilizzato per creare una pipeline NLP scalabile che pre-elabora il testo ed esegue l'inferenza, mentre GKE può essere utilizzato per requisiti di modello più personalizzati. |
Settore
Problema da risolvere
Soluzione di esempio
E-commerce e retail
Genera consigli personalizzati sui prodotti per l'intera base utenti su base giornaliera per assicurarti che siano pronti per un recupero rapido quando gli utenti visitano il sito.
Vertex AI Batch Predictions può eseguire un modello di consigli e caricare i risultati in un database di ricerca rapida come Cloud SQL o Bigtable.
Telecomunicazioni e SaaS
Identifica i clienti a elevato rischio di abbandono il mese successivo analizzando i pattern di utilizzo nell'intero database clienti.
BigQuery ML consente di eseguire un modello di classificazione direttamente sui dati dei clienti archiviati nel data warehouse, con i risultati scritti in una nuova tabella per il team di fidelizzazione.
Finanza e assicurazioni
Previsione delle tendenze del mercato finanziario o calcolo dei punteggi di rischio per un intero portafoglio di asset, un'attività a elevata intensità di calcolo eseguita periodicamente.
Vertex AI Batch Predictions può eseguire modelli di serie temporali complessi in base a una pianificazione, fornendo i dati necessari per report e dashboard strategici.
Logistica e forniture
Ottimizza i livelli di inventario in centinaia di magazzini eseguendo una complessa simulazione di previsione della domanda basata su dati settimanali di vendita e logistica.
Google Kubernetes Engine (GKE) fornisce l'ambiente personalizzato ad alte prestazioni necessario per eseguire modelli di simulazione specializzati con requisiti specifici di libreria e hardware.
Sanità
Analizzare un grande batch giornaliero di immagini mediche (come radiografie o TAC) per rilevare potenziali anomalie da rivedere in seguito da un radiologo.
GKE con acceleratori GPU è ideale per l'esecuzione di modelli di visione artificiale di deep learning su grandi set di immagini, offrendo il massimo controllo e le massime prestazioni.
Aspetti legali e conformità
Elabora e classifica milioni di documenti esistenti per estrarre le entità chiave, valutare il sentiment e rendere l'intero corpus ricercabile e analizzabile.
Dataflow può essere utilizzato per creare una pipeline NLP scalabile che pre-elabora il testo ed esegue l'inferenza, mentre GKE può essere utilizzato per requisiti di modello più personalizzati.
Vertex AI è la piattaforma di machine learning gestita di Google Cloud e fornisce un approccio semplificato e serverless per l'inferenza batch. Il processo si concentra sulla configurazione di un job e sulla gestione dell'infrastruttura sottostante da parte della piattaforma.
Prima di iniziare, ti servono tre elementi chiave:
Puoi avviare il job tramite la console Google Cloud, lo strumento a riga di comando gcloud o a livello di programmazione utilizzando SDK Vertex AI. Quando crei il job, devi fornire la seguente configurazione:
Una volta inviato il job, Vertex AI prende il sopravvento. Esegue automaticamente il provisioning delle risorse di computing specificate, esegue i dati di input attraverso il modello, genera le previsioni e le salva nella posizione di output designata. Al termine del job, Vertex AI ridimensiona automaticamente tutte le risorse a zero, in modo che tu paghi solo per il tempo di calcolo che utilizzi. Puoi monitorare l'avanzamento del job e visualizzare i log direttamente nella console Google Cloud.
Quando lo stato del job diventa "Riuscito", le previsioni sono pronte. I file di output in Cloud Storage o la nuova tabella in BigQuery sono ora accessibili alle applicazioni downstream, agli strumenti di analisi o alle dashboard di BI.
L'utilizzo di Google Kubernetes Engine (GKE) per l'inferenza batch offre il massimo controllo e la massima portabilità, il che lo rende ideale per i team con competenze Kubernetes esistenti o requisiti specializzati. La configurazione prevede la containerizzazione della logica di inferenza e la gestione della sua esecuzione con le risorse Kubernetes.
Passaggio 1: containerizza l'applicazione di inferenza. Il primo passaggio consiste nel creare un pacchetto del codice di previsione in un'immagine container.
Passaggio 2: definisci un job Kubernetes. Invece di un deployment a lunga esecuzione, definisci l'attività batch utilizzando un manifest Kubernetes Job o CronJob (un file YAML). Questo file specifica:
Passaggio 3: esegui il job sul cluster GKE. Applichi il manifest al tuo cluster GKE utilizzando kubectl. Il control plane di GKE quindi pianifica l'esecuzione di un pod per il container di inferenza su un nodo adatto nel cluster. Per le attività ricorrenti, una risorsa CronJob crea automaticamente un nuovo job in base a una pianificazione predefinita (ad esempio, 0 2 * * * per le 2:00 di ogni giorno).
Passaggio 4: implementa la gestione dei dati e archivia i risultati. A differenza dell'approccio gestito di Vertex AI, il codice dell'applicazione all'interno del container è responsabile della gestione di tutti gli I/O dei dati. Lo script deve includere la logica per connettersi alla origine dati (ad esempio, un bucket Cloud Storage) e leggerla, quindi scrivere le previsioni finali nella destinazione scelta (ad esempio, un database Cloud SQL).
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.