Ingegneria dei dati vs Pipelines di apprendimento automatico

Ingegneria dei dati vs Flussi di apprendimento automatico

La data engineering e le pipeline di machine learning sono entrambe molto diverse ma stranamente possono sembrare molto simili. Molti ingegneri ML con cui ho parlato in passato si affidano a strumenti come Airflow per distribuire i loro modelli batch.

Quindi volevo discutere la differenza tra data engineering e le pipeline di machine learning.

Per rispondere a questa domanda, ho coinvolto Sarah Floris, che è sia un’esperta ingegnere dei dati che l’autrice della newsletter The Dutch Engineer.

Quindi iniziamo.

Negli ultimi 5 anni, l’accumulo di dati guidato dalla popolarità delle piattaforme di social media come TikTok e Snapchat ha evidenziato la differenza tra i dati e le pipeline di machine learning (ML). Queste due componenti sono essenziali per ogni azienda, ma spesso vengono confuse. Anche se hanno delle somiglianze, i loro obiettivi sono molto diversi.

Costruire una piattaforma di dati e ML non è così semplice come sembra. Richiede molto lavoro ed è quello che faccio ogni giorno. In questo articolo esploreremo le differenze tra il funzionamento delle pipeline di machine learning e dei data engineering, nonché ciò che è richiesto per ciascuno.

Pipeline di data engineering

Iniziamo con le pipeline di dati. Le pipeline di dati sono una serie di processi che estraggono dati da diverse fonti, li puliscono e li archiviano in un magazzino dati o un database. Questo è importante per le aziende perché aiuta a prendere decisioni informate. Una pipeline di dati è composta da quattro parti:

Le pipeline di data engineering generalmente alimentano le pipeline di ML. Tuttavia, ci sono molti casi in cui problemi di comunicazione portano gli ingegneri ML a costruire pipeline personalizzate end-to-end.

Raccolta dei dati: Qui i dati vengono raccolti da diverse fonti come database, API e sistemi di file. I dati possono essere in diversi formati, come strutturati, semi-strutturati o non strutturati. La raccolta dei dati richiede una pianificazione e una esecuzione accurata per garantire dati di alta qualità.

Pulizia dei dati: Qui i dati vengono puliti mediante la verifica dei valori mancanti, la correzione degli errori e la trasformazione in un formato coerente. Questo assicura che i dati siano accurati e affidabili.

Integrazione dei dati: Qui i dati provenienti da diverse fonti vengono uniti in un unico dataset. Questo è importante per le aziende perché garantisce informazioni consistenti e accurate per prendere decisioni migliori.

Archiviazione dei dati: Qui i dati elaborati vengono archiviati. È importante per un accesso rapido e facile ai dati, nonché per la protezione e la sicurezza dei dati.

Queste 4 parti delle pipeline di dati sono spesso anche indicate come Estrazione (raccolta dei dati), Trasformazione (pulizia dei dati e integrazione) e Caricamento (archiviazione dei dati). Il processo di estrazione, trasformazione e caricamento dei dati è comunemente indicato come ETL o ELT.

Alcuni noteranno che ETL e ELT sono un subset delle più ampie “flussi di lavoro dei dati” o pipeline di dati, poiché vi sono diverse altre sottoclassi che spesso includono modelli di streaming come pub/sub o CDC. — Ben Rogojan

Questi processi possono essere eseguiti in diverse sequenze, a seconda delle esigenze del progetto.

Indipendentemente da come vengono eseguite le pipeline di dati, seguiranno generalmente sempre un processo lineare che parte dalla fonte e termina con l’archiviazione dei dati.

Quindi, ecco perché generalmente si sente dire agli ingegneri dati che spostano i dati dal punto A al punto B.

La newsletter di SeattleDataGuy è una pubblicazione supportata dai lettori. Per ricevere nuovi articoli e supportare il mio lavoro, considera di diventare un abbonato gratuito o a pagamento.

Pipelines di Apprendimento Automatico

Le pipeline di Apprendimento Automatico (ML) non funzionano in linea retta come le pipeline di dati. Invece, comportano la costruzione, l’addestramento e la distribuzione di modelli di ML. Ciò viene utilizzato per automatizzare l’intero processo di costruzione di un modello di ML, dalla raccolta dei dati alla sua distribuzione in produzione. Una pipeline di ML è composta da cinque parti:

Pulizia dei dati: La pulizia e la standardizzazione dei dati sono un aspetto cruciale delle pipeline di apprendimento automatico. Mentre gli ingegneri dati fanno una pulizia iniziale, gli scienziati dei dati vanno oltre per garantire accuratezza e utilità. Ciò include compiti come garantire formati di data consistenti, rimuovere valori nulli e raggruppare le età. Possono anche effettuare un’analisi esplorativa dei dati per identificare modelli e tendenze. Il ruolo richiede una profonda comprensione sia degli aspetti tecnici della pulizia dei dati che del contesto più ampio in cui vengono utilizzati i dati.

Ingegneria delle caratteristiche: L’ingegneria delle caratteristiche è il processo di selezione ed estrazione delle caratteristiche pertinenti dai dati grezzi per migliorare le prestazioni dei modelli di apprendimento automatico. Per aumentare la velocità di iterazione, gli ingegneri di apprendimento automatico creano un archivio di caratteristiche, essenzialmente alcune tabelle versionate e create per ogni area di interesse del modello, come ad esempio vendite, acquisizione o simili.

Addestramento del modello: L’addestramento del modello inizia tipicamente con la ricerca di un appropriato algoritmo o algoritmi di apprendimento automatico. Una volta selezionato l’algoritmo, procediamo ad addestrarlo sui dati che abbiamo ingegnerizzato. Questo processo di solito prevede una iterazione sull’architettura del modello e sui iperparametri finché non si raggiunge il livello desiderato di prestazioni. Infine, il modello addestrato può essere utilizzato per fare previsioni sui nuovi dati.

Valutazione del modello: Questa fase comporta la valutazione delle prestazioni del modello di apprendimento automatico su un set di dati di test. Quando il modello è stato valutato ed è pronto per la distribuzione, spesso lo salviamo in un registro dei modelli.

Registro dei modelli: Un registro dei modelli è una parte vitale del setup di apprendimento automatico di un’azienda. Serve come punto centrale per memorizzare i dettagli dei modelli che sono stati addestrati e distribuiti. Traccia non solo i modelli stessi, ma anche le metriche di prestazione per ogni modello e altra metadati. Queste informazioni sono fondamentali per garantire che i modelli possano essere riprodotti e monitorati durante tutto il loro ciclo di vita.

Distribuzione del modello: Utilizzeremo il modello salvato (che sia dal registro dei modelli o da qualsiasi altro luogo in cui sia conservato) e lo integreremo in un sistema di produzione in cui può essere utilizzato per fare previsioni sui nuovi dati.

Monitoraggio del modello: Le principali tecniche di monitoraggio sono il monitoraggio dell’analisi delle prestazioni e il monitoraggio della variazione dei dati.

Il monitoraggio dell’analisi delle prestazioni comporta la configurazione di regole per identificare se una metrica è fallita entro un certo periodo di tempo, come un’ora, un mese o un’altra cadenza. Ad esempio, un’accuratezza superiore all’80% è un buon parametro da puntare, ma è anche importante monitorare altre metriche come l’accuratezza se si lavora con modelli di regressione o la precisione e la richiamata se si lavora con modelli di classificazione. Oltre a questi controlli, è utile tenere traccia di eventuali anomalie o modelli nei dati che possono influenzare le prestazioni del modello nel tempo.

L’altro modo principale per monitorare le prestazioni di un modello è esaminare i dati sottostanti. Per fare ciò, dobbiamo confrontare la distribuzione dei dati utilizzando tecniche statistiche e altri metodi.

Tutti questi componenti vengono completati in un passaggio circolare, il che significa che partiamo dai dati, terminiamo con la reintroduzione dei dati e ripetiamo il ciclo nuovamente.

Tipi di Lavoro

I lavori in batch elaborano i dati o prevedono il comportamento degli utenti a intervalli regolari, memorizzando i risultati. Per le pipeline di dati, ciò significa prendere i dati ogni 30 minuti o un’ora, mentre le pipeline di apprendimento automatico spesso effettuano previsioni offline o lavori in batch. Questi ultimi prevedono le preferenze degli utenti mentre non stanno guardando attualmente programmi.

Le pipeline di dati e le pipeline di machine learning hanno un’altra cosa in comune e cioè il pipelining on-demand.

Nelle pipeline di dati, questo si presenta spesso come il “meccanismo di push” in cui viene creato un evento e i dati di quell’evento vengono inviati a un cluster Kafka.

Nelle pipeline di machine learning, questo tipo di processo è spesso definito come inferenza online. Ad esempio, quando un utente fa clic su una pagina web che richiede una nuova previsione da effettuare.

Un altro esempio è quando finisci di guardare lo show “The Last of Us” di HBO Max e hai bisogno di una raccomandazione per un nuovo show, che sia simile o diverso.

Ho visto solo un tipo di lavoro che coinvolge le pipeline di dati: lo streaming. Una pipeline di dati in streaming è un sistema che elabora e sposta i dati in tempo reale da un luogo all’altro. Mentre alcuni potrebbero sostenere che questo è simile al pipelining on-demand, io non sono d’accordo poiché i dati in streaming avvengono continuamente, mentre il pipelining on-demand avviene sporadicamente.

Le pipeline di dati hanno tre tipi di lavori: streaming, batch e on-demand. Al contrario, le pipeline di machine learning hanno solo i tipi di lavoro batch e on-demand (o “inferenza”).

Esigenze di calcolo

Le pipeline di dati e di machine learning sono componenti cruciali di ogni organizzazione e possono avere requisiti computazionali simili.

Le pipeline di dati dipendono dal volume dei dati in ingresso, che idealmemte cambia raramente. Tuttavia, possono verificarsi improvvisi cambiamenti nel volume dei dati ed è importante assicurarsi che le pipeline di dati possano adattarsi di conseguenza. Altrimenti, ci sarà un ritardo nell’elaborazione dei dati, che può influire negativamente sulle operazioni di un’organizzazione.

D’altro canto, le pipeline di machine learning dipendono sia dalla quantità di dati che dalla fase del processo di pipeline di machine learning. Le esigenze di calcolo di una pipeline di machine learning cambiano in base alla fase della pipeline, poiché l’addestramento richiede più potenza di calcolo rispetto all’elaborazione o alla previsione. Pertanto, è necessario adeguare le esigenze di calcolo di conseguenza.

Indipendentemente dal fatto che si utilizzino pipeline di dati o di machine learning, è fondamentale assicurarsi che le nostre pipeline possano gestire improvvisi e significativi cambiamenti nei requisiti di calcolo. Questo è particolarmente importante per le pipeline di dati, dove improvvisi cambiamenti nel volume dei dati possono causare un accumulo di dati che influisce sulla capacità dell’organizzazione di prendere decisioni informate. Pertanto, è cruciale garantire che le pipeline di dati e di machine learning siano scalabili e possano gestire i cambiamenti nei requisiti di calcolo. In caso contrario, queste pipeline falliranno e causeranno ritardi nell’elaborazione dei dati, con conseguente pessima esperienza utente.

Pipeline infinite

In conclusione, sia le pipeline di dati che le pipeline di machine learning sono importanti per le aziende che trattano dati. Hanno obiettivi, tipi di lavoro e esigenze computazionali diverse. Comprendere queste differenze è importante per costruire, scalare e mantenere pipeline efficaci che possano gestire improvvisi cambiamenti nei requisiti di calcolo e garantire dati accurati, tempestivi e azionabili per una migliore presa di decisioni e prestazioni migliorate.

Articolo originariamente pubblicato qui da Ben Rogojan.