Svi koji su isprobali razvoj strojnog učenja razumiju koliko je to teško. Osim standardnih problema u razvoju softvera, razvoj strojnog učenja (ML) uvodi niz dodatnih prepreka.
Dostupne su stotine alata otvorenog koda koji pomažu u svakoj fazi životnog ciklusa ML-a, od pripreme podataka do obuke modela.
Za razliku od tradicionalnog razvoja softvera, kada timovi odaberu jedan alat za svaki korak, s ML-om općenito želite istražiti svaki dostupni alat (npr. algoritam) kako biste vidjeli poboljšava li rezultate.
Kao rezultat toga, ML programeri moraju koristiti i proizvesti stotine knjižnica.
Algoritmi strojnog učenja sadrže tisuće prilagodljivih parametara i teško je identificirati koji su parametri, kod i podaci ušli u svaki eksperiment za generiranje modela, bilo da radite sami ili u timu.
Bez pravilnog nadzora, timovi se često bore da isti kod ponovno funkcionira. Bilo da ste podatkovni znanstvenik koji prenosi svoj kôd za obuku inženjeru za korištenje u proizvodnji ili se vraćate na svoj prethodni rad kako biste dijagnosticirali problem, povlačenje koraka tijeka ML-a ključno je.
Premještanje modela u proizvodnju može biti teško zbog brojnih metoda implementacije i okruženja koja se moraju koristiti (npr. REST posluživanje, grupno zaključivanje ili mobilne aplikacije). Ne postoji uobičajena metoda za premještanje modela iz bilo koje biblioteke u bilo koji od ovih alata, pa stoga svaka nova implementacija predstavlja rizik.
Zbog ovih problema, očito je da se razvoj ML-a mora značajno poboljšati kako bi postao stabilan, predvidljiv i široko korišten kao tradicionalni razvoj softvera.
ML izazovi
- Postoji mnoštvo različitih alata. Dostupne su stotine softverskih rješenja za pomoć u svakoj fazi životnog ciklusa strojnog učenja, od pripreme podataka do obuke modela. Nadalje, za razliku od tradicionalnog razvoja softvera, kada timovi biraju jedan alat za svaki korak, u strojnom učenju (ML), često želite istražiti svaki dostupni alat (npr. algoritam) kako biste vidjeli poboljšava li rezultate. Kao rezultat toga, ML programeri moraju koristiti i proizvesti stotine knjižnica.
- Teško je pratiti eksperimente. Algoritmi strojnog učenja sadrže tisuće prilagodljivih parametara i teško je identificirati koji su parametri, kod i podaci ušli u svaki eksperiment za generiranje modela, bilo da radite sami ili u timu.
- Teško je implementirati strojno učenje. Premještanje modela u proizvodnju može biti teško zbog brojnih metoda implementacije i okruženja koja se moraju koristiti (npr. REST posluživanje, grupno zaključivanje ili mobilne aplikacije). Ne postoji uobičajena metoda za premještanje modela iz bilo koje biblioteke u bilo koji od ovih alata. Stoga svaka nova implementacija predstavlja rizik.
Što je MLflow?
MLflow je platforma otvorenog koda za životni ciklus strojnog učenja. Temelji se na konceptu otvorenog sučelja, predlažući mnoge bitne apstrakcije koje omogućuju da se trenutna infrastruktura i algoritmi strojnog učenja lako integriraju u sustav.
To implicira da ako ste programer koji želi koristiti MLflow, ali koristi nepodržani okvir, dizajn otvorenog sučelja čini relativno jednostavnim integraciju tog okvira i početak rada s platformom. U praksi, to implicira da MLflow treba funkcionirati s bilo kojim stroj za učenje knjižnica ili jezik.
Nadalje, MLflow promiče ponovljivost, što znači da je isti kod za strojno učenje za obuku ili proizvodnju namijenjen za izvođenje s istim rezultatima neovisno o okruženju, bilo u oblaku, na lokalnoj radnoj stanici ili u prijenosnom računalu.
Konačno, MLflow je napravljen za skalabilnost, tako da ga može koristiti mali tim znanstvenika s podacima kao i velika tvrtka sa stotinama praktičara strojnog učenja.
MLflow je kompatibilan s bilo kojom bibliotekom strojnog učenja, algoritmom, alatom za implementaciju ili jezikom. Također ima sljedeće prednosti:
- Dizajniran za rad s bilo kojom uslugom u oblaku.
- Skalira na ogromne podatke uz Apache Spark.
- MLflow je kompatibilan s raznim otvorenim okvirima strojnog učenja, uključujući Apache Spark, TensorFlowi SciKit-Learn.
Ako već imate kod, MLflow se može koristiti s njim. Možete čak dijeliti svoj okvir i modele među poduzećima jer jesu open-source.
MLflow komponente: kako rade?
MLflow je besplatna platforma otvorenog koda za upravljanje životnim ciklusom ML-a, koji uključuje eksperimentiranje, reproducibilnost, implementaciju i registar jednog modela. Trenutno, MLflow ima četiri komponente:
1. Praćenje MLflow-a
Započet ću s praćenjem MLflow-a. MLflow podržava kolekciju različitih bitnih koncepata povezanih s centraliziranim spremištem metapodataka za obuku. Prvi je pojam skup kritičnih hiperparametara ili konfiguracijskih gumba koji utječu na performanse modela. Korištenje MLflow API-ja i centralizirane usluge praćenja može sačuvati sve to.
Korisnici također mogu bilježiti podatke o izvedbi kako bi dobili uvid u uspjeh svojih modela strojnog učenja. Nadalje, radi ponovljivosti, MLflow korisnicima omogućuje bilježenje specifičnog izvornog koda koji je korišten za stvaranje modela kao i njegove verzije čvrstom integracijom s Gitom kako bi se svaki model vezao za određeni hash urezivanja.
MLflow se može koristiti za bilježenje artefakata, a to su bilo koje proizvoljne datoteke, uključujući podatke o obuci, testne podatke i same modele radi ponovljivosti.
To znači da ako sam programer koji je upravo obučio model, mogu ga prenijeti na centraliziranu uslugu praćenja, a jedan od mojih kolega ga može kasnije učitati i nastaviti trenirati i eksperimentirati ili proizvoditi taj model kako bi zadovoljio određenu potrebu .
Prilikom izvršavanja koda za strojno učenje i nakon toga pregledavanja rezultata, praćenje je API koji vam omogućuje bilježenje parametara, verzija koda, metrike i izlazne datoteke. Napisan je na Pythonu, R i Javi, između ostalih jezika. Također je dostupan kao REST API, koji se može koristiti za izgradnju aplikacija na njemu.
Glavne značajke
- Mnogi programeri koriste MLflow na svom lokalnom računalu, gdje pozadina i pohrana artefakata dijele direktorij na disku.
- Mnogi korisnici također koriste SQLite, SQLAlchemy kompatibilnu bazu podataka, za pokretanje MLflowa na svojim lokalnim računalima.
- MLflow također podržava distribuirane arhitekture. Poslužitelj za praćenje, pozadinska pohrana i pohrana artefakata smješteni su na različitim poslužiteljima u njima.
- Ako je izvođenje pokrenuo projekt MLflow, korišten je hash git commit. MLflow Python, R, Java i REST API-ji se mogu koristiti za bilježenje podataka za pokretanje.
Za više informacija, možete pogledati službeni dokumentacija.
2. MLFlow projekti
Nakon što smo prošli kroz komponente praćenja, želio bih govoriti o MLflow projektima, koji su ponovljiva struktura pakiranja za sesije obuke modela bez obzira na kontekst izvršenja.
Poduzeća koriste širok raspon tehnologija za obuku strojnog učenja, ali također koriste ove alate za obuku u različitim kontekstima. Na primjer, oni mogu izvršavati svoj kôd za obuku u oblaku, na lokalnom računalu ili u prijenosnom računalu.
To dovodi do problema da je teško replicirati rezultate strojnog učenja. Često se isti identični kod za obuku ne izvršava ili ne daje iste rezultate na dva odvojena mjesta.
Rješenje koje nudi MLflow je samostalna definicija projekta koda za obuku koja uključuje sav kod za obuku strojnog učenja, kao i njegove ovisnosti o knjižnici verzija, postavke te podatke o obuci i testiranju.
MLflow osigurava reproducibilnost u različitim kontekstima izvršavanja jasnim opisom cijelog skupa zahtjeva za proces obuke strojnog učenja. To postiže instaliranjem svih tih knjižnica i postizanjem istog stanja sustava u kojem se kod izvodi.
Projekt MLflow nije ništa više od imenika. To je direktorij koji uključuje kod za obuku, definiciju ovisnosti knjižnice i druge podatke potrebne za sesiju obuke, kao i ovu neobaveznu konfiguracijsku datoteku.
Ovi knjižnični zahtjevi mogu se definirati na razne načine. Korisnici mogu, na primjer, dostaviti specifikaciju okruženja anakonde u formatu YAML kako bi naveli svoje zahtjeve za knjižnicu kodova za obuku. MLflow će izvršiti kod za obuku unutar spremnika. U takvom slučaju mogu uključivati i Docker spremnik.
Konačno, MLflow ima sučelje naredbenog retka (CLI) za pokretanje ovih projekata, kao i Python i Java API-je. Ovi se projekti mogu izvoditi na korisničkom lokalnom sustavu, kao iu raznim udaljenim postavkama kao što su Databricks raspored zadataka i Kubernetes. Projekti MLflow omogućuju pakiranje koda za znanost o podacima na ponovljiv i višekratnu upotrebu, uglavnom na temelju standarda.
Komponenta projekata uključuje API kao i uslužne programe naredbenog retka za upravljanje projektima. Ove mogućnosti jamče da se projekti mogu povezati zajedno kako bi se formirali procesi strojnog učenja.
Glavne značajke
- MLflow podržava projektna okruženja, uključujući Docker okruženje kontejnera, Conda okruženje i okruženje sustava.
- Bilo koje Git spremište ili lokalni imenik može se smatrati MLflow projektom; prema zadanim postavkama; možete koristiti bilo koju školjku ili Python skripta u imeniku kao ulazna točka projekta.
- Ovisnosti koje nisu Python, kao što su Java biblioteke, mogu se uhvatiti pomoću Docker spremnika.
- Možete dobiti veću kontrolu nad MLflow projektom dodavanjem projektne datoteke u korijenski direktorij projekta, koji je tekstualna datoteka u YAML sintaksi.
Za više informacija, možete pogledati službeni dokumentacija.
3. MLflow modeli
Sada bih želio razgovarati o modelima MLflow, formatu modela opće namjene koji podržava širok raspon produkcijskih konteksta. Razlog za modele MLflow sada je prilično sličan onome za projekte.
Opet vidimo da se modeli mogu generirati korištenjem širokog raspona alata, ali se također mogu proizvesti ili implementirati u velikom rasponu situacija, za razliku od okruženja za obuku.
Te postavke uključuju alate za posluživanje u stvarnom vremenu, kao što su Kubernetes ili Amazon SageMaker, kao i streaming i grupno ocjenjivanje, kao što je Spark. Nadalje, neke tvrtke mogu odlučiti implementirati modele kao RESTful web uslugu koja radi na unaprijed konfiguriranoj instanci oblaka.
MLflow model, kao i projekt, je struktura direktorija. Uključuje konfiguracijsku datoteku i, ovaj put, serijalizirani artefakt modela, a ne kod za obuku. Također uključuje ovaj skup ovisnosti za ponovljivost kao projekt. Ovaj put ćemo razmotriti ovisnosti evaluacije u kontekstu Conda okruženja.
Dodatno, MLflow uključuje alate za generiranje modela za serijalizaciju modela u MLflow formatu iz niza popularnih okvira. Konačno, MLflow dodaje implementacije, API-je za proizvodnju i povezivanje bilo kojeg modela MLflowa s nizom usluga, a ti API-ji su dostupni u Pythonu, Javi, R i CLI formatu.
Modeli su komponente sa standardnom strukturom za modele pakiranja koje se mogu koristiti i razumjeti nizvodnim alatima kao što su poslužitelji za zaključivanje ili Databrikovi platforma za grupno zaključivanje. Ova komponenta štedi sate prilagođenog koda prilikom pakiranja modela za proizvodnju.
Model MLflow je standard za pakiranje modela strojnog učenja u različitim oblicima poznatim kao "okusi". MLflow nudi mnogo alata koji će vam pomoći u implementaciji različitih vrsta modela. Svaki MLflow model čuva se kao direktorij koji sadrži proizvoljne datoteke kao i datoteku deskriptora ML modela s popisom okusa u kojima se može koristiti.
Glavne značajke
- Svi ugrađeni alati za implementaciju MLflowa nude višestruke “standardne” verzije, kao što je okus “Python funkcija” koji objašnjava kako pokrenuti model kao funkciju Python.
- Svaki MLflow model sastoji se od direktorija koji sadrži proizvoljne datoteke, kao i datoteke ML modela u korijenu direktorija koja definira brojne okuse modela.
- Prilikom pohranjivanja modela, MLflow vam omogućuje da specificirate parametar okruženja Conda koji sadrži ovisnosti modela. Ako nije navedeno okruženje Conda, konstruira se zadano okruženje na temelju okusa modela. Nakon toga, Conda okruženje se pohranjuje u conda.yaml.
Za više informacija, možete pogledati službeni dokumentacija.
4. Registar modela MLflow
Registar modela je spremište za naučene modele strojnog učenja (ML). Model Registry se sastoji od API-ja i web-bazirane aplikacije koja se koristi za održavanje modela u različitim fazama kao tim. Podrijetlo modela, Versioniranje modela, Jednostavan prijelaz u fazu i Napomene samo su neke od mogućnosti dostupnih u Registru modela.
Registar modela, osim samih modela, sadrži informacije (metapodatke) o podacima i zadacima obuke koji se koriste za konstruiranje modela. Od ključne je važnosti pratiti te potrebne ulazne podatke za stvaranje roda za ML modele. U tom smislu, model registra funkcionira slično kao kod konvencionalnog softvera kontrola verzije sustava (npr. Git, SVN) i repozitorija artefakata (npr. Artifactory, PyPI).
Model Registry je okvir koji omogućuje znanstvenicima podataka i inženjerima strojnog učenja da objavljuju, testiraju, nadziru, upravljaju i distribuiraju svoje modele za suradnju s drugim timovima. U suštini, model registra se koristi nakon što završite svoju fazu testiranja i spremni ste podijeliti svoje nalaze s timom i dionicima.
MLflow Model Registry pruža API i korisničko sučelje za upravljanje vašim modelima i njihovim životnim vijekom sa središnje lokacije. Podrijetlo modela, verzija modela, bilješke i prijelazi faza dostupni su putem registra.
U MLflowu, registrirani model je onaj s jedinstvenim imenom i metapodacima, verzijama modela, prijelaznim fazama i linijom modela. Jedna ili više verzija modela može se pronaći u registriranom modelu. Novi model se smatra verzijom 1 kada je registriran u registru. Sljedeća verzija se dodaje svakom novom modelu s istim imenom.
U bilo kojem trenutku možete dodijeliti jedan korak bilo kojoj verziji modela. Međutim, faze se moraju dodijeliti pod fazama MLflow-a koje su formalno specificirane, kao što su uprizorenje, proizvodnja i arhiviranje. Verzija modela može se prijeći iz jedne faze u drugu.
MLflow vam omogućuje korištenje markdowna za označavanje modela najviše razine i svake određene verzije. Možete uključiti opise kao i druge relevantne informacije, kao što su objašnjenja algoritama, metodologija i korišteni skupovi podataka.
Glavne značajke
- Da biste pristupili registru modela putem korisničkog sučelja ili API-ja kada hostirate svoj vlastiti MLflow poslužitelj, morate koristiti pozadinsko spremište s podrškom baze podataka.
- Registry modela se također može pristupiti putem okusa modela MLflow ili API sučelja za praćenje klijenta MLflow. Možete, na primjer, registrirati model tijekom izvođenja eksperimenta MLflow ili nakon svih izvođenja eksperimenta.
- Neće svi početi trenirati svoje modele koristeći MLflow. Kao rezultat toga, možda ćete imati neke modele obučene prije korištenja MLflowa. Umjesto da ponovno obučavate modele, samo želite registrirati svoje pohranjene modele u Registry modela.
Za više informacija, možete pogledati službeni dokumentacija.
Zaključak
MLflow je izvrstan alat za životni ciklus ML-a koji stalno raste. Možete ga koristiti uz svoje trenutne alate i platforme.
Podržava nekoliko programskih jezika, uključujući Python, Javu i R. Također možete brzo pratiti, spremati i uspoređivati različite verzije modela zahvaljujući dizajnu prilagođenom korisniku.
Isprobajte MLflow i javite nam svoje iskustvo!
Ostavi odgovor