Sommario[Nascondere][Spettacolo]
Tutti coloro che hanno provato lo sviluppo dell'apprendimento automatico capiscono quanto sia difficile. A parte i problemi standard nello sviluppo del software, lo sviluppo dell'apprendimento automatico (ML) introduce una serie di ostacoli aggiuntivi.
Sono disponibili centinaia di strumenti open source per aiutare in ogni fase del ciclo di vita del ML, dalla preparazione dei dati all'addestramento del modello.
A differenza dello sviluppo software tradizionale, quando i team scelgono uno strumento per ogni passaggio, con ML in genere si desidera esplorare tutti gli strumenti disponibili (ad es. algoritmo) per vedere se migliora i risultati.
Di conseguenza, gli sviluppatori ML devono utilizzare e produrre centinaia di librerie.
Gli algoritmi di apprendimento automatico contengono migliaia di parametri personalizzabili ed è difficile identificare quali parametri, codice e dati sono stati inseriti in ogni esperimento per generare un modello, sia che lavori da solo o in team.
Senza un monitoraggio adeguato, i team spesso faticano a far funzionare di nuovo lo stesso codice. Che tu sia un data scientist che trasferisce il tuo codice di formazione a un ingegnere per l'utilizzo in produzione o che tu stia tornando al lavoro precedente per diagnosticare un problema, ritirare i passaggi del flusso di lavoro ML è fondamentale.
Spostare un modello in produzione può essere difficile a causa dei numerosi metodi e ambienti di distribuzione che devono essere utilizzati (ad es. servizio REST, inferenza batch o app mobili). Non esiste un metodo comune per spostare i modelli da una libreria a uno qualsiasi di questi strumenti e quindi ogni nuova distribuzione introduce un rischio.
A causa di questi problemi, è ovvio che lo sviluppo del ML deve migliorare in modo significativo per diventare stabile, prevedibile e ampiamente utilizzato come lo sviluppo del software tradizionale.
Sfide del ML
- Ci sono una miriade di strumenti disparati. Sono disponibili centinaia di soluzioni software per aiutare in ogni fase del ciclo di vita dell'apprendimento automatico, dalla preparazione dei dati all'addestramento del modello. Inoltre, a differenza dello sviluppo software tradizionale, quando i team scelgono uno strumento per ogni passaggio, nell'apprendimento automatico (ML), spesso si desidera esplorare ogni strumento disponibile (ad esempio, l'algoritmo) per vedere se migliora i risultati. Di conseguenza, gli sviluppatori ML devono utilizzare e produrre centinaia di librerie.
- È difficile tenere traccia degli esperimenti. Gli algoritmi di apprendimento automatico contengono migliaia di parametri personalizzabili ed è difficile identificare quali parametri, codice e dati sono stati inseriti in ogni esperimento per generare un modello, sia che lavori da solo o in team.
- È difficile implementare l'apprendimento automatico. Spostare un modello in produzione può essere difficile a causa dei numerosi metodi e ambienti di distribuzione che devono essere utilizzati (ad es. servizio REST, inferenza batch o app mobili). Non esiste un metodo comune per spostare i modelli da una libreria a uno di questi strumenti. Pertanto, ogni nuova distribuzione introduce un rischio.
Che cosa è l' MLflow?
MLflow è una piattaforma open source per il ciclo di vita dell'apprendimento automatico. Si basa su un concetto di interfaccia aperta, proponendo molte astrazioni essenziali che consentono di integrare prontamente l'infrastruttura attuale e gli algoritmi di apprendimento automatico con il sistema.
Ciò implica che se sei uno sviluppatore che desidera utilizzare MLflow ma utilizza un framework non supportato, il design dell'interfaccia aperta rende relativamente semplice integrare quel framework e iniziare a lavorare con la piattaforma. In pratica, ciò implica che MLflow è destinato a funzionare con qualsiasi machine learning biblioteca o lingua.
Inoltre, MLflow promuove la ripetibilità, il che significa che lo stesso codice di apprendimento automatico per la formazione o la produzione deve essere eseguito con gli stessi risultati indipendentemente dall'ambiente, nel cloud, su una workstation locale o su un notebook.
Infine, MLflow è progettato per la scalabilità, quindi può essere utilizzato da un piccolo team di data scientist e da una grande azienda con centinaia di professionisti dell'apprendimento automatico.
MLflow è compatibile con qualsiasi libreria, algoritmo, strumento di distribuzione o linguaggio di machine learning. Presenta inoltre i seguenti vantaggi:
- Progettato per funzionare con qualsiasi servizio cloud.
- Scala a grandi quantità di dati con Apache Spark.
- MLflow è compatibile con una varietà di framework di machine learning open source, tra cui Apache Spark, TensorFlowe SciKit-Impara.
Se hai già del codice, MLflow può essere utilizzato con esso. Potresti anche condividere il tuo framework e i tuoi modelli tra le imprese perché lo è open-source.
Componenti MLflow: come funzionano?
MLflow è una piattaforma gratuita e open source per la gestione del ciclo di vita di ML, che include sperimentazione, riproducibilità, distribuzione e un unico registro del modello. Attualmente, MLflow ha quattro componenti:
1. Monitoraggio MLflow
Inizierò con MLflow Tracking. MLflow supporta la raccolta di vari concetti essenziali collegati a un repository centralizzato di tracciamento dei metadati di addestramento. La prima nozione è una raccolta di iperparametri critici o manopole di configurazione che influenzano le prestazioni del modello. L'utilizzo delle API di MLflow e di un servizio di monitoraggio centralizzato può preservare tutto ciò.
Gli utenti possono anche registrare i dati sulle prestazioni per ottenere informazioni dettagliate sul successo dei loro modelli di machine learning. Inoltre, per motivi di ripetibilità, MLflow consente agli utenti di registrare il codice sorgente specifico utilizzato per creare un modello e la sua versione integrandosi strettamente con Git per collegare ogni modello a uno specifico hash di commit.
MLflow può essere utilizzato per registrare gli artefatti, che sono qualsiasi file arbitrario inclusi addestramento, dati di test e modelli stessi per la riproducibilità.
Ciò significa che se sono uno sviluppatore che ha appena addestrato un modello, posso mantenerlo al servizio di tracciamento centralizzato e uno dei miei colleghi può caricarlo in un secondo momento e continuare a addestrare e sperimentare o produrre quel modello per soddisfare un'esigenza specifica .
Quando si esegue il codice di machine learning e successivamente si visualizzano i risultati, il monitoraggio è un'API che consente di registrare parametri, versioni del codice, metriche e file di output. È scritto in Python, R e Java, tra gli altri linguaggi. È anche accessibile come API REST, che può essere utilizzata per creare app su di essa.
Caratteristiche principali
- Molti sviluppatori utilizzano MLflow sul proprio PC locale, dove il back-end e l'archiviazione degli artefatti condividono una directory sul disco.
- Molti utenti utilizzano anche SQLite, un database compatibile con SQLAlchemy, per eseguire MLflow sui propri PC locali.
- MLflow supporta anche architetture distribuite. Il server di monitoraggio, l'archivio back-end e l'archivio degli artefatti sono tutti ospitati su server diversi in questi.
- Se l'esecuzione è stata avviata da un progetto MLflow, è stato utilizzato l'hash del commit git. Le API MLflow Python, R, Java e REST possono essere utilizzate per registrare i dati da eseguire.
Per ulteriori informazioni, puoi controllare l'ufficiale documentazione.
2. Progetti MLFlow
Dopo aver esaminato i componenti di tracciamento, vorrei parlare dei progetti MLflow, che sono una struttura di packaging ripetibile per sessioni di formazione del modello indipendentemente dal contesto di esecuzione.
Le aziende utilizzano un'ampia gamma di tecnologie di formazione per l'apprendimento automatico, ma utilizzano anche questi strumenti di formazione in una serie diversificata di contesti. Ad esempio, potrebbero eseguire il codice di formazione sul cloud, su un PC locale o su un notebook.
Ciò porta al problema che i risultati dell'apprendimento automatico sono difficili da replicare. Spesso, lo stesso identico codice di addestramento non viene eseguito o produce gli stessi risultati in due posizioni separate.
La soluzione fornita da MLflow è una definizione di progetto di codice di addestramento autonomo che include tutto il codice di addestramento di machine learning, nonché le relative dipendenze, impostazioni e dati di addestramento e test della libreria di versioni.
MLflow garantisce la riproducibilità in tutti i contesti di esecuzione descrivendo chiaramente l'intera serie di requisiti per un processo di formazione di machine learning. Lo fa installando tutte quelle librerie e ottenendo lo stesso stato di sistema in cui è in esecuzione il codice.
Il progetto MLflow non è altro che una directory. È una directory che include il codice di formazione, la definizione della dipendenza dalla libreria e altri dati necessari per la sessione di formazione, oltre a questo file di configurazione facoltativo.
Questi requisiti della libreria possono essere definiti in vari modi. Gli utenti possono, ad esempio, fornire una specifica dell'ambiente anaconda in formato YAML per elencare i requisiti della libreria di codici di formazione. MLflow eseguirà il codice di addestramento all'interno del contenitore. In tal caso, possono anche includere un contenitore Docker.
Infine, MLflow ha un'interfaccia a riga di comando (CLI) per l'esecuzione di questi progetti, nonché API Python e Java. Questi progetti possono essere eseguiti sul sistema locale dell'utente, nonché in una varietà di impostazioni remote come l'utilità di pianificazione dei lavori di Databricks e Kubernetes. I progetti MLflow consentono di impacchettare codice di data science in modo ripetibile e riutilizzabile, principalmente basato su standard.
Il componente progetti include un'API e utilità della riga di comando per la gestione dei progetti. Queste capacità garantiscono che i progetti possano essere concatenati insieme per formare processi di apprendimento automatico.
Caratteristiche principali
- MLflow supporta gli ambienti di progetto, inclusi l'ambiente container Docker, l'ambiente Conda e l'ambiente di sistema.
- Qualsiasi repository Git o directory locale può essere considerato un progetto MLflow; per impostazione predefinita; puoi usare qualsiasi shell o Script Python nella directory come punto di ingresso del progetto.
- Le dipendenze non Python, come le librerie Java, possono essere acquisite utilizzando i contenitori Docker.
- Puoi ottenere un maggiore controllo su un progetto MLflow aggiungendo un file di progetto alla directory principale del progetto, che è un file di testo con sintassi YAML.
Per ulteriori informazioni, puoi controllare l'ufficiale documentazione.
3. Modelli MLflow
Ora, vorrei parlare dei modelli MLflow, un formato di modello generico che supporta un'ampia gamma di contesti di produzione. Il motivo dei modelli MLflow è ora abbastanza simile a quello dei progetti.
Ancora una volta, vediamo che i modelli possono essere generati utilizzando un'ampia gamma di strumenti, ma possono anche essere prodotti o implementati in un'ampia gamma di situazioni, al contrario degli ambienti di formazione.
Queste impostazioni includono strumenti per la pubblicazione in tempo reale, come Kubernetes o Amazon SageMaker, nonché per lo streaming e il punteggio batch, come Spark. Inoltre, alcune aziende possono scegliere di distribuire i modelli come servizio Web RESTful in esecuzione su un'istanza cloud preconfigurata.
Un modello MLflow, come un progetto, è una struttura di directory. Include un file di configurazione e, questa volta, un artefatto del modello serializzato anziché codice di addestramento. Include anche questo set di dipendenze per la ripetibilità come progetto. Questa volta esamineremo le dipendenze di valutazione nel contesto di un ambiente Conda.
Inoltre, MLflow include strumenti di generazione di modelli per la serializzazione di modelli in formato MLflow da una gamma di framework popolari. Infine, MLflow aggiunge distribuzioni, API per la produzione e la connessione di qualsiasi modello MLflow a una gamma di servizi e queste API sono accessibili in formato Python, Java, R e CLI.
I modelli sono un componente con una struttura standard per i modelli di confezionamento che possono essere utilizzati e compresi da strumenti a valle come server di inferenza o Databricks piattaforma di inferenza batch. Questo componente consente di risparmiare ore di codice personalizzato durante l'imballaggio di un modello per la produzione.
Il modello MLflow è uno standard per il confezionamento di modelli di machine learning in una varietà di forme note come "sapori". MLflow fornisce molti strumenti per aiutarti a distribuire vari tipi di modelli. Ogni modello MLflow viene mantenuto come una directory contenente file arbitrari e un file descrittore del modello ML con un elenco delle versioni in cui può essere utilizzato.
Caratteristiche principali
- Tutti gli strumenti di distribuzione integrati di MLflow offrono molteplici versioni "standard", ad esempio una "funzione Python" che spiega come eseguire il modello come una funzione Python.
- Ciascun modello MLflow è costituito da una directory contenente file arbitrari, nonché da un file di modello ML nella directory principale che definisce le numerose varianti del modello.
- Quando si archivia un modello, MLflow consente di specificare un parametro di ambiente Conda che contiene le dipendenze del modello. Se non viene specificato alcun ambiente Conda, viene costruito un ambiente predefinito basato sull'aspetto del modello. Successivamente, l'ambiente Conda viene archiviato in conda.yaml.
Per ulteriori informazioni, puoi controllare l'ufficiale documentazione.
4. Registro del modello MLflow
Un registro dei modelli è un repository per i modelli di machine learning (ML) appresi. Model Registry è composto da API e un'applicazione basata sul Web che viene utilizzata per mantenere i modelli in varie fasi come un team. Model Lineage, Model Versioning, Easy Stage Transition e Annotation sono solo alcune delle funzionalità disponibili in Model Registry.
Un registro del modello, oltre ai modelli stessi, contiene informazioni (metadati) sui dati e sulle attività di addestramento utilizzate per costruire il modello. È fondamentale tenere traccia di questi input necessari per creare la derivazione per i modelli ML. A questo proposito, un modello di registro funziona in modo simile ai software convenzionali controllo della versione sistemi (ad esempio, Git, SVN) e repository di artefatti (ad esempio, Artifactory, PyPI).
Il Model Registry è un framework che consente ai data scientist e agli ingegneri dell'apprendimento automatico di pubblicare, testare, monitorare, gestire e distribuire i propri modelli per la cooperazione con altri team. In sostanza, il registro del modello viene utilizzato una volta completata la fase di test e si è pronti a condividere i risultati con il team e le parti interessate.
Il registro dei modelli MLflow fornisce un'API e un'interfaccia utente per la gestione dei modelli e della loro durata da una posizione centrale. La derivazione del modello, il controllo delle versioni del modello, le annotazioni e le transizioni di fase sono tutti disponibili tramite il registro.
In MLflow, un modello registrato è quello con un nome e metadati univoci, versioni del modello, fasi di transizione e un lignaggio del modello. È possibile trovare una o più versioni del modello in un modello registrato. Un nuovo modello è considerato versione 1 quando viene registrato nel registro. La versione seguente viene aggiunta a qualsiasi nuovo modello con lo stesso nome.
Puoi assegnare un passaggio a qualsiasi versione del modello in qualsiasi momento. Tuttavia, le fasi devono essere assegnate nelle fasi MLflow che sono state formalmente specificate, come la gestione temporanea, la produzione e l'archiviazione. Una versione del modello può essere trasferita da una fase all'altra.
MLflow ti consente di utilizzare markdown per annotare sia il modello di primo livello che ogni versione specifica. Puoi includere descrizioni e altre informazioni pertinenti, come spiegazioni dell'algoritmo, metodologia e set di dati utilizzati.
Caratteristiche principali
- Per accedere al registro del modello tramite l'interfaccia utente o l'API quando si ospita il proprio server MLflow, è necessario utilizzare un archivio back-end supportato da database.
- È inoltre possibile accedere al Model Registry tramite l'aroma del modello MLflow o l'interfaccia API di monitoraggio del client MLflow. Ad esempio, puoi registrare un modello durante l'esecuzione di un esperimento MLflow o dopo tutte le esecuzioni dell'esperimento.
- Non tutti inizieranno ad addestrare i propri modelli utilizzando MLflow. Di conseguenza, potresti avere alcuni modelli addestrati prima di utilizzare MLflow. Invece di riqualificare i modelli, desideri semplicemente registrare i tuoi modelli archiviati con il registro dei modelli.
Per ulteriori informazioni, puoi controllare l'ufficiale documentazione.
Conclusione
MLflow è uno strumento per il ciclo di vita di ML eccellente e in continua crescita. Puoi utilizzarlo insieme ai tuoi strumenti e piattaforme attuali.
Supporta diversi linguaggi di programmazione, inclusi Python, Java e R. Puoi anche tracciare, salvare e confrontare rapidamente diverse versioni di modelli grazie al suo design intuitivo.
Prova MLflow e facci sapere la tua esperienza!
Lascia un Commento