Blog

La nostra raccolta di articoli e approfondimenti tecnici

Video

Una raccolta di video dai nostri eventi, webinar e molto altro

Use case

Una raccolta dei nostri Casi di successo

Introduzione

Questo articolo ha lo scopo di mostrare i benefici che si ottengono utilizzando Dremio nell’ambito dell’Intelligenza Artificiale e nello specifico nel Machine Learning. Adottare Dremio significa accelerare il lavoro dei team, migliorare la qualità dei dati e ridurre i costi di gestione delle pipeline. In un contesto dove la rapidità di sperimentazione e la capacità di trarre insight concreti dai dati sono leve decisive per la competitività, capire come sfruttare al meglio questa piattaforma può fare la differenza nel lavoro quotidiano.

Dremio

Dremio è una piattaforma open-source che abilita le query SQL sul Data Lake. Grazie alle ottimizzazioni come le reflections e l’utilizzo di Apache Arrow Flight, offre la possibilità di eseguire query con tempi di risposta molto brevi. Inoltre, permette di esplorare ed aggregare i dati senza effettuare alcuna copia degli stessi.

Data As Code

Dremio supporta anche Apache Iceberg, un Table Format open-source che risponde alla domanda: “Quali dati sono presenti all’interno della tabella?”. Apache Iceberg abilita le transazioni ACID all’interno dell’object storage e grazie a questa proprietà permette di effettuare version rollback e time-travel sulla tabella.

Un tassello fondamentale per il Table Format è quello di poter contare su un Table Repository nel quale salvare i puntamenti delle varie tabelle Iceberg. Ne esistono di diverse tipologie, quello su cui ci soffermeremo oggi è Project Nessie che oltre ad avere il ruolo di Table Repository abilita le operazioni git-like sul Data Lakehouse. Grazie a questa tecnologia è possibile gestire i dati in branch ed è sempre possibile effettuare version rollback e time-travel ma su più tabelle.

Utilizzando questo stack tecnologico è possibile abilitare il concetto di Data As Code, ossia trattare i dati allo stesso modo di come trattiamo il codice. Infatti, vengono garantite le seguenti proprietà senza dover duplicare i dati:

 

  • Isolamento: grazie all’utilizzo dei branch è possibile lavorare su una stessa tabella ma utilizzando diverse versioni della stessa
  • Versionamento: grazie alla possibilità di effettuare version rollback e time-travel è possibile lavorare su versioni diverse della tabella
  • Governabilità del dato: è possibile visualizzare le diverse operazioni compiute sulla tabella e da chi vengono compiute

Machine Learning

Vediamo quindi come tutto questo possa essere applicato nell’ambito del Machine Learning. Questa dottrina è un sottoinsieme dell’Intelligenza Artificiale che sfrutta tecniche statistiche avanzate per abilitare la macchina a prendere decisioni.

Il Machine Learning è una disciplina empirica, occorre quindi effettuare diverse sperimentazioni prima di ottenere dei modelli con risultati di accuratezza soddisfacenti. Semplificando alcuni passaggi, ecco come potrebbe essere riassunta una tipica pipeline di Machine Learning:

  • Data Extraction: in questa fase vengono estratti i dati di interesse dalla sorgente;
  • Data Exploration: fase in cui viene esplorato il dataset per conoscerne il contenuto;
  • Data Cleaning: in questa fase vengono rimossi o assunti eventuali valori nulli;
  • Data Preparation: fase in cui vengono estratte le feature di interesse;
  • Model Training: fase di addestramento del modello;
  • Model Evaluation & Validation: fase in cui si decide se i risultati ottenuti sono quelli che ci si aspettava o meno. Eventualmente, a seguito di questa fase è possibile tornare in fase di Data Cleaning/Preparation;
  • Deploy Model: se i risultati sono soddisfacenti, il modello può essere promosso in produzione;
  • Model Monitoring: in questa fase monitoriamo l’andamento del modello in produzione. Se necessario il modello può ripercorrere nuovamente la pipeline per ottenere una accuratezza migliore.

Seguendo l’andamento della pipeline di Machine Learning appare ovvio che la buona riuscita di una predizione si basa su dei dati di qualità. Inoltre, altrettanto importante, è poter facilitare la fase di sperimentazione e di riproducibilità anche in maniera collaborativa.

Dremio in ambito ML

I concetti illustrati per il Data As Code sono molto a fuoco nella fase di sperimentazione della pipeline appena analizzata. Dremio potrebbe quindi svolgere un ruolo fondamentale, facilitando le seguenti operazioni:

 

  • Esplorazioni e trasformazioni del dato: grazie al Semantic Layer e alla possibilità di creare delle VDS senza copiare i dati, il dataset di partenza può essere elaborato nella maniera desiderata
  • Sperimentazione: grazie ai branch è possibile promuovere i dataset che hanno raggiunto l’accuratezza desiderata, affinché possa essere utilizzato dal modello di ML
  • Riproducibilità: anche in questo caso grazie ai branch e al versioning, è possibile lavorare su una stessa tabella contenente dati diversi, in modo da poter portare avanti più sperimentazioni in contemporanea senza effettuare copia dei dati.

Conclusioni

Dremio abilita la gestione Data As Code che facilita la gestione di pipeline di Machine Learning. In particolare, permette di effettuare più facilmente le trasformazioni ai dataset di origine. Grazie ai branch permette di poter agire in maniera isolata sul dataset, così da non comprometterne l’integrità e facilitando la fase di sperimentazione. Infine, garantisce la riproducibilità degli esperimenti sempre grazie ai branch ma anche grazie alla possibilità di effettuare time-travel sui dati stessi.