Tutti quelli chì anu pruvatu u sviluppu di l'apprendimentu automaticu capiscenu quantu hè difficiule. A parte di i prublemi standard in u sviluppu di u software, u sviluppu di l'apprendimentu automaticu (ML) introduce una mansa di ostaculi supplementari.
Centinaie di strumenti open source sò dispunibuli per aiutà in ogni tappa di u ciclu di vita ML, da a preparazione di dati à a furmazione di mudelli.
A cuntrariu di u sviluppu di software tradiziunale, quandu e squadre sceglienu un strumentu per ogni passu, cù ML generalmente vulete esplorà ogni strumentu dispunibule (per esempiu, algoritmu) per vede s'ellu migliurà i risultati.
In u risultatu, i sviluppatori ML devenu aduprà è pruduce centinaie di biblioteche.
L'algoritmi d'apprendimentu di machine cuntenenu millaie di parametri persunalizabili, è hè difficiule d'identificà quali parametri, codice è dati sò entrati in ogni esperimentu per generà un mudellu, sia si travaglia solu o in una squadra.
Senza un surviglianza curretta, i squadre spessu pugnanu per ottene u listessu codice per funziunà di novu. Sia chì site un scientist di dati chì trasfiriu u vostru còdice di furmazione à un ingegnere per l'usu di a produzzione, o chì andate à u vostru travagliu precedente per diagnosticà un prublema, a ritirata di i passi di u flussu di travagliu ML hè cruciale.
Spostà un mudellu à a pruduzzione pò esse difficiule per via di i numerosi metudi di implementazione è ambienti chì devenu esse aduprati (per esempiu, REST serving, batch inference, o mobile apps). Ùn ci hè micca un metudu cumuni per trasfurmà mudelli da qualsiasi libreria à qualsiasi di questi strumenti, è cusì ogni novu implementazione introduce un risicu.
A causa di questi prublemi, hè ovvi chì u sviluppu ML deve migliurà significativamente per diventà stabile, prevedibile è largamente utilizatu cum'è u sviluppu di software tradiziunale.
Sfide ML
- Ci hè una mansa di strumenti disparati. Centinaie di suluzioni software sò dispunibuli per aiutà in ogni tappa di u ciclu di vita di l'apprendimentu di a macchina, da a preparazione di dati à a furmazione di mudelli. Inoltre, à u cuntrariu di u sviluppu di u software tradiziunale, quandu i squadre sceglienu un strumentu per ogni passu, in l'apprendimentu machine (ML), spessu vulete esplorà ogni strumentu dispunibule (per esempiu, algoritmu) per vede s'ellu migliora i risultati. In u risultatu, i sviluppatori ML devenu aduprà è pruduce centinaie di biblioteche.
- Hè difficiuli di seguità l'esperimenti. L'algoritmi d'apprendimentu di machine cuntenenu millaie di parametri persunalizabili, è hè difficiule d'identificà quali parametri, codice è dati sò entrati in ogni esperimentu per generà un mudellu, sia si travaglia solu o in una squadra.
- Hè difficiuli di implementà l'apprendimentu machine. Spostà un mudellu à a pruduzzione pò esse difficiule per via di i numerosi metudi di implementazione è ambienti chì devenu esse aduprati (per esempiu, REST serving, batch inference, o mobile apps). Ùn ci hè micca un metudu cumuni per trasfurmà mudelli da ogni libreria à qualsiasi di sti strumenti. Cusì, ogni nova implementazione introduce un risicu.
Chì ghjè MLflow?
MLflow hè una piattaforma open-source per u ciclu di vita di l'apprendimentu automaticu. Hè basatu annantu à un cuncettu di interfaccia aperta, prupunendu parechje astrazioni essenziali chì permettenu l'infrastruttura attuale è l'algoritmi di apprendimentu automaticu per esse integrati facilmente cù u sistema.
Questu implica chì sè vo site un sviluppatore chì vole usà MLflow ma usa un framework senza supportu, u disignu di l'interfaccia aperta rende relativamente simplice per integrà quellu framework è cumincià à travaglià cù a piattaforma. In pratica, questu implica chì MLflow hè destinatu à funziunà cù qualsiasi machine learning biblioteca o lingua.
Inoltre, MLflow prumove a ripetibilità, chì significa chì u listessu codice di furmazione o di produzzione di machine learning hè destinatu à eseguisce cù i stessi risultati indipendentemente da l'ambiente, sia in u nuvulu, in una stazione di travagliu locale, o in un notebook.
Infine, MLflow hè custruitu per a scalabilità, cusì pò esse utilizatu da una piccula squadra di scientisti di dati è da una grande cumpagnia cù centinaie di praticanti di apprendimentu machine.
MLflow hè cumpatibile cù qualsiasi libreria di machine learning, algoritmu, strumentu di implementazione o lingua. Hà ancu i seguenti vantaghji:
- Cuncepitu per operà cù qualsiasi serviziu di nuvola.
- Scale à enormi dati cù Apache Spark.
- MLflow hè cumpatibile cù una varietà di framework di apprendimentu automaticu open-source, cumpresu Apache Spark, TensorFlow, e SciKit-Learn.
Sè vo avete digià codice, MLflow pò esse usatu cun ellu. Pudete ancu sparte u vostru quadru è mudelli trà l'imprese perchè hè open-source.
Componenti MLflow: Cumu funzionanu?
MLflow hè una piattaforma libera è open-source per a gestione di u ciclu di vita ML, chì include sperimentazione, riproducibilità, implementazione, è un unicu registru mudellu. Attualmente, MLflow hà quattru cumpunenti:
1. Tracking MLflow
Aghju da principià cù MLflow Tracking. MLflow supporta a cullizzioni di diversi cuncetti essenziali ligati à un repository di seguimentu di metadati di furmazione centralizatu. A prima nozione hè una cullizzioni di iperparametri critichi o pomi di cunfigurazione chì influenzanu u rendiment di u mudellu. Utilizà l'API di MLflow è un serviziu di seguimentu centralizatu pò priservà tutti questi.
L'utilizatori ponu ancu registrà e dati di rendiment per avè una visione di u successu di i so mudelli di apprendimentu machine. Inoltre, per a ripetibilità, MLflow permette à l'utilizatori di logà u codice fonte specificu chì hè statu utilizatu per creà un mudellu è a so versione integrendu strettamente cù Git per ligà ogni mudellu à un hash di commit specificu.
MLflow pò esse usatu per logà l'artefatti, chì sò qualsiasi fugliali arbitrarii cumpresi furmazione, dati di teste è mudelli stessi per a riproducibilità.
Questu significa chì s'ellu sò un sviluppatore chì hà furmatu solu un mudellu, possu persiste à u serviziu di seguimentu centralizatu, è unu di i mo culleghi pò carricà dopu è o cuntinuà à furmà è sperimentà o pruduce quellu mudellu per risponde à una necessità specifica. .
Quandu eseguite u vostru codice d'apprendimentu di a macchina è dopu vede i risultati, u seguimentu hè una API chì vi permette di logà parametri, versioni di codice, metriche è fugliali di output. Hè scrittu in Python, R è Java, trà altre lingue. Hè ancu accessibile cum'è una API REST, chì pò esse aduprata per custruisce app nantu à questu.
Funzioni principali
- Parechji sviluppatori utilizanu MLflow in u so PC lucale, induve u backend è l'almacenamiento di l'artefacti sparte un repertoriu nantu à u discu.
- Parechji utilizatori utilizanu ancu SQLite, una basa di dati SQLAlchemy-compatibile, per eseguisce MLflow in i so PC lucali.
- MLflow supporta ancu architetture distribuite. U servitore di seguimentu, u magazinu di backend è u magazinu di l'artifacti sò tutti allughjati in diversi servitori in questi.
- Se a corsa hè stata iniziata da un Prughjettu MLflow, u git commit hash hè stata utilizata. L'API MLflow Python, R, Java, è REST ponu esse aduprate per logà e dati per eseguisce.
Per più infurmazione, pudete cunsultà u ufficiale ducumentazione in corsu.
2. Prughjetti MLFlow
Dopu avè passatu per i cumpunenti di seguimentu, mi piacerebbe parlà di prughjetti MLflow, chì sò una struttura di imballaggio ripetibile per e sessioni di furmazione di mudelli indipendentemente da u cuntestu di esecuzione.
L'imprese utilizanu una larga gamma di tecnulugii di furmazione per l'apprendimentu automaticu, ma anu ancu aduprà sti strumenti di furmazione in un inseme diversu di cuntesti. Per esempiu, ponu esse esecutà u so codice di furmazione in u nuvulu, in un PC locale, o in un notebook.
Questu porta à u prublema chì i risultati di l'apprendimentu automaticu sò difficiuli di riplicà. Spessu, u listessu codice di furmazione identicu ùn eseguisce micca o rende i stessi risultati in dui lochi separati.
A suluzione furnita da MLflow hè una definizione di prughjettu di u codice di furmazione autònuma chì include tuttu u codice di furmazione di l'apprendimentu automaticu, è ancu e so dipendenze di a biblioteca di versione, paràmetri è dati di furmazione è di prova.
MLflow assicura a riproducibilità in i contesti di esecuzione descrivendu chjaramente l'intera serie di esigenze per un prucessu di furmazione di machine learning. Realizeghja questu installendu tutte e biblioteche è rializendu u stessu statu di u sistema in u quale u codice hè in esecuzione.
U prughjettu MLflow ùn hè nunda più cà un annuariu. Hè un repertoriu chì include u codice di furmazione, a definizione di a dependenza di a biblioteca, è altri dati necessarii da a sessione di furmazione, è ancu stu schedariu di cunfigurazione opzionale.
Queste esigenze di biblioteca ponu esse definite in una varietà di manere. L'utilizatori ponu, per esempiu, furnisce una specificazione di l'ambiente anaconda in format YAML per listà i so bisogni di a biblioteca di codice di furmazione. MLflow eseguirà u codice di furmazione in u containeru. In questu casu, ponu ancu include un containeru Docker.
Infine, MLflow hà una interfaccia di linea di cumanda (CLI) per eseguisce questi prughjetti, è ancu Python è API Java. Questi prughjetti ponu esse eseguiti nantu à u sistema lucale di l'utilizatori è ancu in una varietà di paràmetri remoti, cum'è u pianificatore di travagliu Databricks è Kubernetes. I prughjetti MLflow permettenu di imballà u codice di scienza di dati in una manera ripetibile è riutilizzabile, soprattuttu basatu in standard.
U cumpunente di prughjetti include una API è ancu utilità di linea di cumanda per a gestione di prughjetti. Queste capacità guarantiscenu chì i prughjetti ponu esse incatenati inseme per furmà prucessi di machine learning.
Funzioni principali
- MLflow supporta l'ambienti di u prughjettu, cumpresu l'ambiente di cuntainer Docker, l'ambiente Conda è l'ambiente di u sistema.
- Qualchese repository Git o repertoriu lucale pò esse cunsideratu cum'è un prughjettu MLflow; per difettu; pudete aduprà ogni cunchiglia o Scrittura Python in u cartulare cum'è un puntu di entrata di u prughjettu.
- Dipendenze non-Python, cum'è e biblioteche Java, ponu esse catturate cù cuntenituri Docker.
- Pudete ottene un cuntrollu più grande nantu à un Prughjettu MLflow aghjunghjendu un schedariu di prughjettu à u repertoriu radicale di u prughjettu, chì hè un schedariu di testu in sintassi YAML.
Per più infurmazione, pudete cunsultà u ufficiale ducumentazione in corsu.
3. Modelli MLflow
Avà, mi piacerebbe discutiri di mudelli MLflow, un furmatu di mudellu di scopu generale chì sustene una larga gamma di cuntesti di produzzione. U mutivu di i mudelli MLflow hè avà abbastanza simile à quellu di i prughjetti.
In novu, vedemu chì i mudelli ponu esse generati cù una larga gamma di arnesi, ma ponu ancu esse pruduciuti o implementati in una larga gamma di situazioni, in uppusizione à l'ambienti di furmazione.
Queste paràmetri includenu arnesi per u serviziu in tempu reale, cum'è Kubernetes o Amazon SageMaker, è ancu streaming è scoring batch, cum'è Spark. Inoltre, alcune imprese puderanu sceglie di implementà mudelli cum'è un serviziu web RESTful in esecuzione nantu à una istanza di nuvola pre-configurata.
Un mudellu MLflow, cum'è un prughjettu, hè una struttura di repertoriu. Include un schedariu di cunfigurazione è, sta volta, un artefattu di mudellu serializatu invece di codice di furmazione. Include ancu stu settore di dependenzii per a ripetibilità cum'è un prughjettu. Sta volta, circheremu in dependenzii di valutazione in u cuntestu di un ambiente Conda.
Inoltre, MLflow include strumenti di generazione di mudelli per serializà mudelli in formatu MLflow da una gamma di frameworks populari. Infine, MLflow aghjusta implementazioni, API per a produzzione è cunnette qualsiasi mudellu MLflow à una gamma di servizii, è queste API sò accessibili in Python, Java, R, è un furmatu CLI.
I mudelli sò un cumpunente cù una struttura standard per i mudelli di imballaggio chì ponu esse utilizati è cumpresi da strumenti downstream cum'è servitori di inferenza o mattoni dati piattaforma di inferenza batch. Stu cumpunente salva ore di codice apposta quandu imballa un mudellu per a produzzione.
U Modellu MLflow hè un standard per imballà mudelli di apprendimentu automaticu in una varietà di forme cunnisciute cum'è "sapori". MLflow furnisce assai strumenti per aiutà à implementà diversi tipi di mudelli. Ogni mudellu MLflow hè guardatu cum'è un repertoriu chì cuntene i schedarii arbitrarii, è ancu un schedariu di descrittore di mudellu ML cù una lista di i sapori in quale pò esse usatu.
Funzioni principali
- Tutti l'arnesi di implementazione integrati di MLflow offrenu parechji sapori "standard", cum'è un sapore "funzione Python" chì spiega cumu eseguisce u mudellu cum'è una funzione Python.
- Ogni mudellu MLflow hè custituitu da un repertoriu chì cuntene i schedari arbitrarii, è ancu un schedariu di mudellu ML à a radica di u cartulare chì definisce i numerosi sapori di u mudellu.
- Quandu si guarda un mudellu, MLflow permette di specificà un paràmetru di l'ambiente Conda chì cuntene e dependenzii di u mudellu. Se ùn hè micca specificatu un ambiente Conda, un ambiente predeterminatu basatu annantu à u gustu di u mudellu hè custruitu. Dopu questu, l'ambiente Conda hè guardatu in conda.yaml.
Per più infurmazione, pudete cunsultà u ufficiale ducumentazione in corsu.
4. MLflow Model Registru
Un registru di mudelli hè un repository per i mudelli di apprendimentu automaticu (ML). U Registru Modellu hè custituitu da API è una applicazione web chì hè utilizata per mantene mudelli in diverse fasi cum'è squadra. Model Lineage, Model Versioning, Easy Stage Transition, and Annotation sò solu uni pochi di e capacità dispunibili in Model Registry.
Un registru di mudelli, in più di i mudelli stessi, cuntene infurmazioni (metadata) nantu à e dati è i travaglii di furmazione utilizati per custruisce u mudellu. Hè criticu per guardà a traccia di questi inputs necessarii per creà lignage per i mudelli ML. In questu sensu, un mudellu di registru funziona in modu simili à u software convenzionale versione di versione sistemi (per esempiu, Git, SVN) è repositori di artefatti (per esempiu, Artifactory, PyPI).
U Registru di Modellu hè un quadru chì permette à i scientifichi di dati è à l'ingegneri di l'apprendimentu di macchine per publicà, pruvà, monitorizà, gestisce è distribuisce i so mudelli per a cooperazione cù altre squadre. Essenzialmente, u registru mudellu hè impiegatu una volta chì avete finitu a vostra fase di prova è sò pronti à sparte e vostre scuperte cù a squadra è i stakeholder.
U Registru di Modelli MLflow furnisce una API è una interfaccia d'utilizatore per gestisce i vostri mudelli è a so vita da un locu centrale. Lignage di mudelli, versioni di mudelli, annotazioni è transizioni di u stadiu sò tutti dispunibuli attraversu u registru.
In MLflow, un mudellu registratu hè quellu cù un nome unicu è metadata, versioni di mudelli, fasi di transizione, è un lignamentu di mudellu. Una o più versioni di mudelli ponu esse truvate in un mudellu registratu. Un novu mudellu hè cunsideratu a versione 1 quandu hè registratu in u registru. A seguente versione hè aghjuntu à ogni novu mudellu cù u listessu nome.
Pudete assignà un passu à qualsiasi versione di mudellu in ogni mumentu. Tuttavia, e tappe devenu esse attribuite sottu à e fasi MLflow chì sò state formalmente specificate, cum'è staging, pruduzzione è archiviate. Una versione di mudellu pò esse transizione da una tappa à l'altru.
MLflow permette di utilizà markdown per annotà sia u mudellu di livellu superiore sia ogni versione specifica. Pudete include descrizzione è altre informazioni pertinenti, cum'è spiegazioni di l'algoritmu, metodulugia è datasets utilizati.
Funzioni principali
- Per accede à u registru di u mudellu attraversu l'UI o l'API quandu ospitu u vostru propiu servitore MLflow, duvete aduprà una tenda di backend supportata da una basa di dati.
- U Registru di Modelli pò ancu esse accessu via u gustu di u mudellu MLflow o l'interfaccia di l'API MLflow Client Tracking. Pudete, per esempiu, registrà un mudellu durante un esperimentu MLflow run o dopu à tutti i vostri esperimenti.
- Micca tutti cumincianu à furmà i so mudelli cù MLflow. In u risultatu, pudete avè alcuni mudelli furmatu prima di utilizà MLflow. Invece di ricuperà i mudelli, vulete solu registrà i vostri mudelli almacenati cù u Registru di Modelli.
Per più infurmazione, pudete cunsultà u ufficiale ducumentazione in corsu.
cunchiusioni
MLflow hè un strumentu di ciclu di vita ML eccellente è in constante crescita. Pudete impiegà à fiancu à i vostri strumenti è e piattaforme attuali.
Supporta parechji linguaggi di prugrammazione, cumpresu Python, Java è R. Pudete ancu seguità rapidamente, salvà è paragunà e diverse versioni di mudelli grazia à u so design user-friendly.
Pruvate MLflow è fateci cunnosce a vostra sperienza!
Lascia un Audiolibro