HBase
 sql >> Database >  >> NoSQL >> HBase

Creazione di uno standard aperto:governance dell'apprendimento automatico mediante Apache Atlas

L'apprendimento automatico (ML) è diventata una delle funzionalità più critiche per le aziende moderne per crescere e rimanere competitive oggi. Dall'automazione dei processi interni all'ottimizzazione dei processi di progettazione, creazione e marketing alla base di praticamente ogni prodotto consumato, i modelli ML hanno permeato quasi ogni aspetto del nostro lavoro e della nostra vita personale e, per le aziende, la posta in gioco non è mai stata così alta. La mancata adozione del ML come competenza principale comporterà importanti svantaggi competitivi che definiranno i prossimi leader di mercato.

Per questo motivo, i leader aziendali e tecnologici devono implementare modelli ML nell'intera organizzazione, coprendo un ampio spettro di casi d'uso. Tuttavia, questo senso di urgenza, combinato con il crescente controllo normativo, crea nuove e uniche sfide di governance che sono attualmente difficili da gestire. Ad esempio:in che modo i miei modelli influiscono sui servizi forniti ai clienti finali? Sono ancora conforme alle normative sia governative che interne? Come si tradurranno le mie regole di sicurezza nei modelli in produzione?

Al di là delle preoccupazioni normative o legali, ci sono una serie di ragioni per avere processi e procedure di governance per l'apprendimento automatico. Gli esempi includono modi per aumentare la produttività (come riutilizzare risorse come modelli e funzionalità), controllare e mantenere i modelli in molte diverse linee di business per garantire che le applicazioni business-critical stiano facendo ciò per cui sono destinate (o trovino quelle che non lo sono) e visualizzare una cronologia di modelli e previsioni, inclusi gli asset obsoleti.

Nell'affrontare queste sfide, vale la pena definire quali modelli e caratteristiche sono concettualmente (vedi Figura 1). Esistono molte definizioni diverse, ma in genere un modello è qualsiasi pacchetto autonomo che acquisisce funzionalità calcolate dai dati di input e produce una previsione (o punteggio) e metadati. Questo pacchetto può assumere molte forme ma include sempre una rappresentazione matematica, codice, logica aziendale e dati di addestramento. Le previsioni del modello vengono utilizzate a valle dai sistemi o dagli utenti.

Molte aziende utilizzano infrastrutture di modelli ML a diverse dimensioni e maturità che richiedono strumenti che le aiutino a governare i propri modelli. In definitiva, le esigenze di governance del ML possono essere distillate nelle seguenti aree chiave:visibilità; e spiegabilità, interpretabilità e riproducibilità del modello.

Figura 1

Visibilità di modelli e funzionalità all'interno dei team e tra le organizzazioni

Un requisito fondamentale per la governance del modello è consentire ai team di comprendere come viene applicato il machine learning nelle loro organizzazioni. Ciò richiede un catalogo canonico di modelli e caratteristiche. In assenza di un tale catalogo, molte organizzazioni non sono a conoscenza dei propri modelli e funzionalità, dove vengono distribuiti, cosa stanno facendo e così via. Ciò porta a rielaborazioni, incoerenze del modello, funzionalità di ricalcolo e altre inefficienze.

Spiegabilità, interpretabilità e riproducibilità del modello

I modelli sono spesso visti come una scatola nera:i dati entrano, succede qualcosa ed esce una previsione. Questa non trasparenza è problematica a diversi livelli ed è spesso rappresentata in termini vagamente correlati come:

  • Spiegabilità :descrizione della meccanica interna di un modello ML in termini umani
  • Interpretabilità :la capacità di a) comprendere la relazione tra input, caratteristiche e output del modello e b) prevedere la risposta ai cambiamenti degli input.
  • Riproducibilità :la capacità di riprodurre l'output di un modello in modo coerente per gli stessi input.

Tutto ciò richiede funzionalità comuni, tra cui un collegamento ai dati di origine, una chiara comprensione degli elementi interni dei modelli come codice e dati di addestramento e altri metodi per sondare e analizzare i modelli stessi.

Modello di metadati con un esempio

Per affrontare i problemi di governance sopra definiti, partiamo da un esempio. Considera un sito Web di consegna di cibo. L'azienda vuole sfruttare l'apprendimento automatico per stimare i tempi di consegna.

Il set di dati di addestramento è costituito dai registri eventi delle consegne precedenti, che contengono i tempi di consegna per ciascuna consegna effettuata in passato. Questi dati vengono utilizzati per addestrare un modello per stimare i tempi di consegna futuri.

Un registro eventi potrebbe assomigliare a questo:

Un ordine è stato effettuato alle 10:00 per il ritiro del cibo da loc1 e la consegna a loc2. Il corriere l'ha ritirato al ristorante alle 10:15 e l'ha consegnato alle 10:55, impiegando un totale di 55 minuti dall'ordine alla consegna

Si supponga che loc1 e loc2 siano indirizzi stradali. Questo è abbreviato qui per mantenerlo breve e facile da leggere.

I registri eventi sono archiviati in HBase. L'architettura ingegneristica per lo sviluppo del modello è la seguente:

  1. Gli ingegneri dei dati identificano la finestra temporale dei registri eventi da utilizzare per risolvere il problema. Viene creata una nuova tabella Hive strutturata analizzando i registri eventi grezzi con la finestra temporale identificata.
  2. Gli ingegneri delle funzionalità (questo potrebbe essere un ruolo all'interno dei data scientist o ingegneri ML) identificano e sviluppano nuove funzionalità:
    • Funzione ora di punta:una funzione per identificare se esistono condizioni di ora di punta in base a una posizione ea un'ora.
    • Funzione "occupato" del ristorante:una funzione per identificare se un determinato ristorante sta riscontrando tempi di attesa elevati in base ai dati storici. Questi dati storici vengono raccolti separatamente.
  3. Le funzionalità sopra identificate vengono quindi create come libreria Python per il riutilizzo.
  4. Questa libreria viene utilizzata per applicare la funzione alla tabella Hive strutturata per creare una nuova tabella che sarà il set di dati di addestramento finale. Una riga nella nuova tabella ha il seguente aspetto:

    Si supponga che loc1 e loc2 siano indirizzi stradali. Questo è abbreviato qui per mantenerlo breve e facile da leggere.

  5. I data scientist eseguono una regressione lineare sul set di dati di addestramento per prevedere il tempo per la consegna. A questo punto, devono utilizzare la stessa libreria di funzionalità utilizzata per estrarre le funzionalità nel set di dati di addestramento.
  6. Il modello viene distribuito come endpoint Function-as-a-Service (FaaS) utilizzato dall'applicazione Web per prevedere i tempi di consegna.

Si noti che il modello deve calcolare le funzionalità per la previsione in tempo reale. Queste funzionalità sono librerie utilizzate internamente dal modello. Una visualizzazione delle varie attività eseguite e degli artefatti generati in questo esempio potrebbe essere simile a questa:

Le caselle blu rappresentano entità ML (nomi) come codice, progetto, build, implementazioni, ecc. Le caselle verdi rappresentano processi (verbi) che agiscono su entità e producono altre entità.

La visualizzazione e le relazioni che definiscono le trasformazioni sulla struttura dei dati sono denominate collettivamente come lignaggio . Nel mondo dei database, l'aggiunta di una nuova colonna a una tabella ne modificherà la derivazione. Nel mondo dell'apprendimento automatico, la riqualificazione di un modello consumando funzionalità e set di dati modificherà il lignaggio. Per il sito Web di consegna di cibo, per rispondere alla domanda:"c'è una differenza tra l'estrazione delle caratteristiche durante l'allenamento e il punteggio", abbiamo bisogno delle informazioni sul lignaggio. Questo è solo un esempio dell'utilità dei metadati del lignaggio nel mondo dell'apprendimento automatico.

Apache Atlas come strumento di governance

È evidente che la creazione di un lignaggio end-to-end completo per i flussi di lavoro ML, dai set di dati di addestramento alle implementazioni di modelli, diventa un requisito fondamentale per affrontare i problemi di governance identificati. L'integrazione della gestione dei dati e dell'apprendimento automatico deve consentire spiegabilità, interpretabilità e riproducibilità.

La raccolta, l'archiviazione e la visualizzazione dei metadati ML richiedono un sistema software di back-end standard. Una definizione di metadati aperta ed estensibile consentirà la standardizzazione delle operazioni di governance indipendentemente da dove i modelli sono sviluppati o serviti. Il candidato più ovvio per Cloudera (e i nostri clienti) è Apache Atlas.

Apache Atlas è già un insieme di strumenti di governance ampiamente utilizzati con tipi di metadati predefiniti per la gestione dei dati. Nel contesto della governance del machine learning, è adatto per definire e acquisire i metadati richiesti per i concetti di machine learning. Inoltre, Apache Atlas fornisce funzionalità avanzate come classificazioni, integrazione con Apache Ranger (per autorizzazione e tagging) solo per citarne alcuni e dispone di un sistema di componenti aggiuntivi estensibile che consente alla comunità di collaborare e definire in modo incrementale integrazioni con vari altri strumenti nel ML spazio. Viene lasciato come esercizio per il lettore esplorare l'interfaccia utente di Apache Atlas e vedere come utilizzare queste capacità.

Definizione dei metadati ML in Apache Atlas

L'Apache Atlas Type System soddisfa tutte le nostre esigenze per la definizione di oggetti di metadati ML. È open source, estensibile e dispone di funzionalità di governance predefinite. Un tipo in Atlas è una definizione di come viene archiviato e utilizzato un particolare tipo di oggetto di metadati. Rappresenta anche uno o più attributi che definiscono le proprietà per l'oggetto di metadati. Per la governance ML, Atlas Type System può essere utilizzato per definire nuovi tipi, acquisendo entità e processi ML come oggetti di metadati Atlas. Oltre alla definizione dei Tipi, è necessaria anche la relazione tra le entità e i processi per visualizzare il flusso del lignaggio end-to-end.

Se colleghiamo questo all'esempio del sito Web di consegna di cibo descritto in precedenza, il sistema di tipo Atlas fornisce una buona base per definire il lignaggio di Machine Learning. Un sistema di lignaggio ML generalizzato viene visualizzato come segue:

Come evidente dal diagramma sopra, la definizione dei metadati per l'apprendimento automatico segue da vicino l'effettivo flusso di lavoro di apprendimento automatico. I set di dati di addestramento sono il punto di partenza per un flusso di derivazione del modello. Questi set di dati possono essere tabelle da un data warehouse o un file CSV incorporato. Una volta identificato un set di dati, il lignaggio segue l'addestramento, la creazione e la distribuzione del modello.

Lo sviluppo di funzionalità ML è un'attività parallela e specializzata che può essere definita ingegneria delle funzionalità (diversa dall'ingegneria dei modelli). Oggi, in molti casi, le due attività (ingegneria del modello e ingegneria delle caratteristiche) sono svolte dalla stessa persona o team. Con la democratizzazione e l'industrializzazione delle funzionalità, questo potrebbe cambiare in futuro, con team specializzati per lo sviluppo del modello e lo sviluppo delle funzionalità.

Il sistema di tipi ML può ora essere definito tramite i seguenti nuovi tipi:

"Crea progetto di apprendimento automatico" e "Progetto di apprendimento automatico"

Un singolo progetto di Machine Learning rappresenta un singolo caso d'uso aziendale. Il progetto Machine Learning rappresenta il contenitore di file e altre risorse incorporate. Come minimo, i metadati del progetto contengono:

  • Elenco dei file utilizzati nel modello
  • Versione storica di tutti i file
    • L'implementazione più semplice sarebbe mantenere il progetto come un repository git basato su Git per mantenere la cronologia di tutti i file.
"Set di dati di formazione"

Un sottotipo di un set di dati in Atlas che rappresenta un set di dati di addestramento. L'entità Training Data Set viene utilizzata nel processo di training del modello. Può essere associato a una funzionalità se i dati generati sono il risultato dell'applicazione dell'estrazione (o trasformazione) della funzionalità a un altro set di dati.

"Addestra e costruisci"

Un processo che rappresenta l'azione di formazione e costruzione di un modello. Include l'esecuzione di esperimenti, l'ottimizzazione e la finalizzazione della scelta di un algoritmo di addestramento. Il processo di formazione e compilazione potrebbe facoltativamente consumare l'output di una build di funzionalità; ad esempio, una funzione di libreria che definisce l'estrazione di funzionalità utilizzata internamente dal modello.

"Costruzione del modello"

Il modello viene rafforzato e sottoposto a versionamento una volta che un data scientist ha completato la sperimentazione e l'addestramento del modello. Questa elaborazione si traduce in un Model Build, che è un artefatto immutabile che costituisce l'elemento costitutivo per la produzione di modelli. Un'immagine Docker è un esempio di entità Model Build.

"Distribuzione del modello" e "Distribuzione del modello"

Una build del modello passa attraverso un processo di distribuzione, che crea una distribuzione del modello. Il Model Deployment rappresenta un'istanza attiva di un modello. Un servizio REST basato su Kubernetes (distribuzione in stile FaaS) è ​​un esempio di entità Model Deployment.

"Funzione caratteristica"

Una funzione di apprendimento automatico ha due interpretazioni:1) Funzione funzione e 2) Set di dati trasformato.

L'entità Funzione funzione è una funzione personalizzata (espressa nel codice) che definisce come estrarre una caratteristica identificata da un input. Questo rappresenta il codice per le funzionalità, in modo simile a come ML Project rappresenta il contenitore per il codice ML.

La funzione funzione viene prima impacchettata come una libreria (versione e rinforzata). La libreria viene quindi consumata e applicata a un determinato DataSet per trasformarlo in un nuovo DataSet (con le funzionalità estratte). Il set di dati trasformato è rappresentato dall'entità del set di dati di addestramento definita sopra.

"Pacchetto Funzionalità" e "Creazione Funzionalità"

Il codice nella funzione caratteristica è incluso in un pacchetto per la condivisione (con altri modelli) o per il punteggio di runtime. Questi pacchetti sono chiamati Feature Builds. Ad esempio, una Feature Build può contenere una libreria in pacchetto (in python) o un file jar (in Java). Questo pacchetto può essere assorbito durante il treno del modello e il processo di creazione per garantire che la stessa funzionalità venga utilizzata durante l'estrazione e la previsione.

Prova e partecipa alla definizione del futuro della definizione dei metadati ML

Abbiamo iniziato a lavorare su ATLAS-3432 che è la prima implementazione del Machine Learning Type System che sfrutta Cloudera Data Science Workbench (CDSW) come client pilota. Grazie a Na Li del team di ingegneri di Cloudera per aver guidato il lavoro sulla creazione dell'integrazione CDSW. ATLAS-3432 consentirà il push dei metadati del modello da un'istanza CDSW a un'istanza di Apache Atlas per esplorare il lignaggio. CDSW attualmente non supporta le funzionalità (o un negozio di funzionalità), quindi il lignaggio relativo alle funzionalità non sarà disponibile.

In Cloudera, non vogliamo semplicemente risolvere questo problema per i nostri clienti:riteniamo che le definizioni dei metadati ML debbano essere universali in modo simile al modo in cui tabelle, colonne, ecc. sono molto standard per le strutture di dati. Ci auguriamo che le comunità contribuiscano alla definizione di questo standard per aiutare le aziende a ottenere il massimo dalle loro piattaforme ML.

Hai un caso d'uso di governance dell'apprendimento automatico che non si adatta al modello di metadati? Partecipa alla conversazione pubblicando i tuoi suggerimenti su [email protected].