Blog.

Deploy Machine Learning Models | Mindset


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
machine-learning

machine-learning-deployment-data-science-machine-learning-italia-how-to-deploy-machine-leanring-in-production

Rilasciare un modello di machine learning in produzione, ovvero fare in modo che un utente possa sfruttarne le previsioni, richiede diverse considerazioni e riflessioni. Ecco perché è importante sviluppare il giusto mindset per il Deploy Machine Learning Models.

Questa fase, che abbiamo imparato essere parte della Data Science Methodology, è cruciale.

Lascia che mi spieghi meglio.

Devi sapere una cosa.

La maggior parte dei progetti di machine learning fallisce perché non è stato in grado di apportare consistenti benefici all’azienda che lo ha sviluppato.

È chiaro. Un’azienda è interessata al ROI, al ritorno d’investimento sullo sviluppo del modello.

C’è solo un problema: non sempre si riesce a portarlo in produzione, là dove possa essere usato.

Questo succede spesso perché il processo che dalla validazione del modello ne consente il suo rilascio e l’uso finale in ambiente operativo è complesso e articolato, e rappresenta l’ennesimo punto critico di un progetto di machine learning.

Facendo qualche breve ricerca possiamo facilmente trovare decine di articoli su come creare un end-point usando Flask, il popolare python framework per sviluppare applicazioni web.

Non sempre però questa soluzione si rivela efficace: ci sono una serie di fattori da tenere in considerazione.

Leggendo questi articoli, noterai infatti un denominatore comune.

Tutti partono dalla considerazione che fare il deploy machine learning models sia fondamentale, ma pochi ragionano su come questo processo debba avvenire e su quali tecnologie debba fare affidamento.

Semplicemente ti offrono una proposta presentandola come se fosse la soluzione a ogni problema.

Non ci piace.

Sfruttiamo allora le nostre supreme capacità riflessive e analitiche per comprendere qualche retroscena utile a districarci nell’intricato mondo del machine learning deployment.

Deploy Machine Learning Models | Mindest

Nell’ottica di non dare nulla per scontato, facciamo prima un passo indietro e cerchiamo di capire cosa significhi davvero rilasciare un modello in produzione.

Lo facciamo seguendo, molto rapidamente, lo sviluppo tipico di un progetto di machine learning.

Seguimi nella macchina di materializzazione, il nostro strumento per entrare istantaneamente in un’azienda!

Eccoci.

Un giovane e intraprendente Product Manager, d’ora innanzi PM, ha individuato alcune necessità utente, determinando che il machine learning possa essere la soluzione migliore per soddisfarle.

Decide quindi d’incontrare il responsabile del team di machine learning (ML team lead), definendo quelle che saranno le specifiche del progetto: gli obiettivi e le metriche per considerarlo un successo.

Avendo a disposizione sufficienti dati per l’allenamento e la validazione del modello, il progetto è affidato ai data scientists o machine learning engineers per l’handling dei processi di feature engineering e model selection.

È importante tenere a mente una considerazione fondamentale.

In questa fase iniziale di sviluppo, l’obiettivo è la realizzazione un modello che soddisfi i requisiti definiti.

Le necessità utente alla base del progetto rimangono dunque momentaneamente insoddisfatte.

Questo perché un modello può davvero aggiungere valore a un progetto quando le sue previsioni sono disponibili agli utenti per il quale è stato realizzato.

Sai come si chiama il processo che rende le previsioni di un modello di machine learning disponibili all’utente?

Esatto! Deployment (rilascio)

Ottimo. Come decidiamo però come realizzare questa fase.

How decide how to deploy

Perfetto, è chiaro che tu voglia una regola generale da poter applicare sempre: cerchiamo di trovarla assieme.

Per decidere come rilasciare un modello, dobbiamo capire in che modo l’utente finale debba interagire con le sue previsioni.

Facciamo un semplice esempio.

I recommender systems, che abbiamo studiato qui, sono un’applicazione comune di machine learning.

Iniziamo da loro.

Medium, la piattaforma di blogging con contenuti ricercati e di qualità, ha un affidabile sistema che fornisce consigli su articoli che gli utenti potrebbero trovare interessanti.

Queste raccomandazioni sono visualizzate dagli utenti in due modalità che accompagnano quindi altrettanti sistemi di deployment.

Web App / Application

I consigli devono essere visibili dall’utente che accede alla piattaforma, sia essa desktop o mobile.

Le previsioni sono visibili a qualsiasi ora del giorno, dopo l’autenticazione, dunque devono essere disponili su richiesta.

Questo pone delle considerazioni sulla latenza:

  • Dobbiamo generare raccomandazioni istantanee, al login dell’utente?
  • Dobbiamo generare raccomandazioni e salvarle in attesa che l’utente si connetta?

Queste due domande costituiscono un bivio: ogni strada ha specifiche di rilascio per il modello differenti.

Inoltre, dobbiamo considerare che il modello debba essere accessibile tanto dall’App (i.e. Android o iOS) quanto dal sito web (Web App), pertanto il deploy dovrà essere agnostico alla piattaforma, magari un endpoint da chiamare.

Passiamo ora al secondo scenario.

Email updates

Un formidabile strumento per aumentare la customer retention è certamente quello di fornire suggerimenti personalizzati via email sugli argomenti e articoli che potrebbero interessarti.

Medium ha un sistema che funziona esattamente così, e per esperienza personale posso dirti essere tremendamente efficace.

Analizziamo il sistema.

Le email sono inviate quotidianamente alle 6 di mattina (l’orario è al momento irrilevante).

In questo caso le raccomandazioni per tutti gli utenti possono essere generate in massa, o a batch, e poi messe in cache pronte per essere inviate via email.

In questo caso non avremmo considerazioni sulla latenza rispetto al primo scenario.

Potremmo infatti limitarci a salvare le raccomandazioni su un database, aggiornandole quotidianamente.

Così lo script per la generazione delle email potrebbe fetchare (inglesismo per indicare l’ottenimento delle informazioni) i dati dal database e inserire le cinque migliori raccomandazioni nel corpo del messaggio, inviando poi le email personalizzate.

Come puoi vedere, sono diversi i fattori da tenere a mente nella scelta di un sistema per il deploy machine learning models. Riassumendo:

  • i requisiti di latenza
  • numero di applicazioni che devono accede al modello
  • previsioni per singolo utente o gruppi di essi
  • frequenza delle previsioni (i.e. una volta o più volte al giorno)

Prima di salutarti, un ultima cosa.

Mindest

Chiaramente un articolo non è sufficiente a sviluppare un mindset, benché ci fornisca alcuni preziosi punti per disegnare un quadro sempre più nitido di cosa significhi deploy machine learning models.

La naturale conclusione di questo post deve allora essere un obiettivo, quello cioè di allenare la nostra mente a capire come rilasciare modelli, in modo sempre più veloce ed efficiente, partendo da come l’utente finale debba interagire con le previsioni.

Chiaramente questo è solo l’inizio di un percorso che ci farà scoprire, anche in modo tecnico e operativo, come fare il deploy machine learning models con esempi concreti e guide descrittive.

Seguimi allora!

Fonte

Per il momento è tutto.

Per aspera, ad astra.

Un caldo abbraccio, Andrea.

Taggedmachine learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum