Svi koji su isprobali razvoj mašinskog učenja razumiju koliko je to teško. Osim standardnih problema u razvoju softvera, razvoj mašinskog 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 izaberu jedan alat za svaki korak, sa ML-om općenito želite da istražite svaki raspoloživi alat (npr. algoritam) kako biste vidjeli da li poboljšava rezultate.
Kao rezultat toga, ML programeri moraju koristiti i proizvesti stotine biblioteka.
Algoritmi mašinskog učenja sadrže hiljade prilagodljivih parametara i teško je identifikovati koji su parametri, kod i podaci ušli u svaki eksperiment za generisanje modela, bilo da radite sami ili u timu.
Bez odgovarajućeg nadzora, timovi se često bore da ponovo funkcionišu isti kod. Bilo da ste stručnjak za podatke koji prenosi vaš kod za obuku inženjeru za upotrebu u proizvodnji ili se vraćate na prethodni rad da biste dijagnosticirali problem, povlačenje koraka toka ML rada je ključno.
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 svako novo postavljanje predstavlja rizik.
Zbog ovih problema, očigledno je da razvoj ML mora značajno da se poboljša kako bi postao stabilan, predvidljiv i široko korišćen kao tradicionalni razvoj softvera.
ML Challenges
- Postoji mnoštvo različitih alata. Dostupne su stotine softverskih rješenja za pomoć u svakoj fazi životnog ciklusa mašinskog učenja, od pripreme podataka do obuke modela. Štaviše, za razliku od tradicionalnog razvoja softvera, kada timovi biraju jedan alat za svaki korak, u mašinskom učenju (ML), često želite da istražite svaki raspoloživi alat (npr. algoritam) da vidite da li poboljšava rezultate. Kao rezultat toga, ML programeri moraju koristiti i proizvesti stotine biblioteka.
- Teško je pratiti eksperimente. Algoritmi mašinskog učenja sadrže hiljade prilagodljivih parametara i teško je identifikovati koji su parametri, kod i podaci ušli u svaki eksperiment za generisanje modela, bilo da radite sami ili u timu.
- Teško je implementirati mašinsko 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. Dakle, svaka nova implementacija predstavlja rizik.
Šta je MLflow?
MLflow je platforma otvorenog koda za životni ciklus mašinskog učenja. Zasnovan je na konceptu otvorenog interfejsa, predlažući mnoge suštinske apstrakcije koje omogućavaju da se trenutna infrastruktura i algoritmi mašinskog učenja lako integrišu u sistem.
Ovo implicira da ako ste programer koji želi da koristi MLflow, ali koristi nepodržani okvir, dizajn otvorenog interfejsa čini relativno jednostavnim integraciju tog okvira i početak rada sa platformom. U praksi, to implicira da je MLflow namijenjen da funkcionira s bilo kojim mašinsko učenje biblioteka ili jezik.
Nadalje, MLflow promovira ponovljivost, što znači da je isti kod za strojno učenje za obuku ili proizvodnju namijenjen za rad 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 naučnika podataka, kao i velika kompanija sa stotinama praktičara mašinskog učenja.
MLflow je kompatibilan sa bilo kojom bibliotekom mašinskog učenja, algoritmom, alatom za implementaciju ili jezikom. Takođe ima sledeće prednosti:
- Dizajniran za rad sa bilo kojim cloud servisom.
- Skalira na ogromne podatke uz Apache Spark.
- MLflow je kompatibilan sa raznim otvorenim okvirima za mašinsko učenje, uključujući Apache Spark, TensorFlow, I SciKit-Learn.
Ako već imate kod, MLflow se može koristiti s njim. Možete čak dijeliti svoj okvir i modele između poduzeća jer je tako Open-source.
MLflow komponente: kako rade?
MLflow je besplatna platforma otvorenog koda za upravljanje životnim ciklusom ML-a, koji uključuje eksperimentiranje, reproducibilnost, primenu i registar jednog modela. Trenutno, MLflow ima četiri komponente:
1. MLflow Tracking
Počeću sa MLflow Tracking-om. MLflow podržava kolekciju različitih suštinskih koncepata povezanih sa centralizovanim spremištem metapodataka za obuku. Prvi pojam je skup kritičnih hiperparametara ili konfiguracijskih dugmadi koji utiču na performanse modela. Korištenje MLflow API-ja i centralizirane usluge praćenja može sačuvati sve ovo.
Korisnici također mogu snimati podatke o performansama kako bi dobili uvid u uspjeh svojih modela mašinskog učenja. Nadalje, radi ponovljivosti, MLflow omogućava korisnicima da evidentiraju određeni izvorni kod koji je korišten za kreiranje modela, kao i njegovu verziju čvrstom integracijom sa Gitom kako bi se svaki model vezao za određeni hash urezivanja.
MLflow se može koristiti za evidentiranje 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 ili nastaviti trenirati i eksperimentirati ili proizvoditi taj model kako bi zadovoljio specifične potrebe .
Prilikom izvršavanja koda za strojno učenje i nakon toga pregledavanja rezultata, praćenje je API koji vam omogućava da evidentirate parametre, verzije koda, metrike i izlazne datoteke. Napisan je na Pythonu, R i Javi, između ostalih jezika. Takođe je dostupan kao REST API, koji se može koristiti za pravljenje aplikacija na njemu.
ključne značajke
- Mnogi programeri koriste MLflow na svom lokalnom računalu, gdje pozadina i skladište artefakata dijele direktorij na disku.
- Mnogi korisnici također koriste SQLite, SQLAlchemy kompatibilnu bazu podataka, za pokretanje MLflow-a na svojim lokalnim računalima.
- MLflow također podržava distribuirane arhitekture. Server za praćenje, pozadinsko skladište i skladište artefakata su svi hostovani na različitim serverima u njima.
- Ako je pokretanje pokrenuo MLflow projekat, korišten je heš git urezivanja. MLflow Python, R, Java i REST API-ji se mogu koristiti za evidentiranje podataka za pokretanje.
Za više informacija, možete pogledati službeni dokumentacija.
2. MLFlow Projects
Nakon što smo prošli kroz komponente praćenja, želeo bih da govorim o MLflow projektima, koji su ponovljiva struktura pakovanja za sesije obuke modela bez obzira na kontekst izvršenja.
Preduzeća koriste širok spektar tehnologija za obuku mašinskog učenja, ali takođe koriste ove alate za obuku u različitim kontekstima. Na primjer, oni mogu izvršavati svoj kod za obuku u oblaku, na lokalnom računaru ili u notebooku.
To dovodi do problema da je teško replicirati rezultate mašinskog učenja. Često se isti identični kod za obuku ne izvršava ili ne daje iste rezultate na dvije različite lokacije.
Rješenje koje pruža MLflow je samostalna definicija projekta koda za obuku koja uključuje sav kod za obuku strojnog učenja, kao i njegove ovisnosti biblioteke verzija, postavke i podatke o obuci i testiranju.
MLflow osigurava reproduktivnost u različitim kontekstima izvršavanja tako što jasno opisuje cijeli skup zahtjeva za proces obuke mašinskog učenja. To postiže instaliranjem svih tih biblioteka i postizanjem istog stanja sistema u kojem se kod izvodi.
MLflow projekat nije ništa drugo do direktorij. To je direktorij koji uključuje kod za obuku, definiciju ovisnosti biblioteke i druge podatke potrebne za sesiju obuke, kao i ovu opcionalnu konfiguracijsku datoteku.
Ovi bibliotečki zahtjevi mogu se definirati na različite načine. Korisnici mogu, na primjer, dostaviti specifikaciju okruženja anakonde u formatu YAML kako bi naveli svoje zahtjeve biblioteke kodova za obuku. MLflow će izvršiti kod za obuku unutar kontejnera. U takvom slučaju mogu uključiti i Docker kontejner.
Konačno, MLflow ima interfejs komandne linije (CLI) za pokretanje ovih projekata, kao i Python i Java API-je. Ovi projekti se mogu izvoditi na korisničkom lokalnom sistemu, kao iu raznim udaljenim postavkama kao što su Databricks planer poslova i Kubernetes. MLflow projekti vam omogućavaju da pakujete kod za nauku o podacima na ponovljiv i višekratni način, uglavnom zasnovan na standardima.
Komponenta projekata uključuje API kao i pomoćne programe komandne linije za upravljanje projektima. Ove mogućnosti garantuju da se projekti mogu povezati zajedno kako bi formirali procese mašinskog učenja.
ključne značajke
- MLflow podržava projektna okruženja, uključujući Docker okruženje kontejnera, Conda okruženje i sistemsko okruženje.
- Bilo koje Git spremište ili lokalni direktorij može se smatrati MLflow projektom; po defaultu; možete koristiti bilo koju školjku ili Python skripta u direktoriju kao ulazna tačka projekta.
- Zavisnosti koje nisu Python, kao što su Java biblioteke, mogu se uhvatiti pomoću Docker kontejnera.
- 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 želeo da razgovaram o modelima MLflow, formatu modela opšte namene koji podržava širok spektar produkcionih konteksta. Razlog za MLflow modele je sada prilično sličan onome za projekte.
Opet, vidimo da se modeli mogu generirati korištenjem širokog spektra alata, ali se također mogu proizvesti ili primijeniti u velikom rasponu situacija, za razliku od okruženja za obuku.
Ove postavke uključuju alate za serviranje u realnom vremenu, kao što su Kubernetes ili Amazon SageMaker, kao i streaming i grupno bodovanje, kao što je Spark. Nadalje, neke kompanije mogu odlučiti da implementiraju modele kao RESTful web servis koji radi na unaprijed konfiguriranoj instanci oblaka.
MLflow model, kao i projekt, je struktura direktorija. Uključuje konfiguracijsku datoteku i, ovog puta, serijalizirani artefakt modela umjesto koda za obuku. Takođe uključuje ovaj skup zavisnosti za ponovljivost kao projekat. 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 MLflow modela sa nizom usluga, a ovi API-ji su dostupni u Python, Java, R i CLI formatu.
Modeli su komponenta sa standardnom strukturom za pakovanje modela koju mogu koristiti i razumjeti nizvodni alati kao što su serveri za zaključivanje ili data bricks platforma za inferenciju serije. Ova komponenta štedi sate prilagođenog koda prilikom pakovanja modela za proizvodnju.
Model MLflow je standard za pakovanje modela mašinskog učenja u različitim oblicima poznatim kao „ukusi“. MLflow pruža mnogo alata koji će vam pomoći u implementaciji različitih tipova modela. Svaki MLflow model se čuva kao direktorij koji sadrži proizvoljne datoteke kao i datoteku deskriptora ML modela sa listom okusa u kojima se može koristiti.
ključne 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 Python funkciju.
- Svaki MLflow model se sastoji od direktorija koji sadrži proizvoljne datoteke, kao i datoteke ML modela u korijenu direktorija koja definira brojne okuse modela.
- Kada pohranjujete model, MLflow vam omogućava da specificirate parametar okruženja Conda koji sadrži zavisnosti modela. Ako nije navedeno Conda okruženje, konstruira se zadano okruženje zasnovano na ukusu modela. Nakon toga, Conda okruženje se pohranjuje u conda.yaml.
Za više informacija, možete pogledati službeni dokumentacija.
4. MLflow Model Registry
Registar modela je spremište za naučene modele mašinskog 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. Linija modela, verzioniranje modela, laka tranzicija faza i anotacija samo su neke od mogućnosti dostupnih u Registru modela.
Registar modela, pored samih modela, sadrži informacije (metapodatke) o podacima i zadacima obuke koji se koriste za konstruisanje modela. Od ključne je važnosti pratiti ove potrebne inpute za kreiranje linije za ML modele. U tom smislu, model registra funkcionira slično kao kod konvencionalnog softvera verzija kontrole sisteme (npr. Git, SVN) i skladišta artefakata (npr. Artifactory, PyPI).
Model Registry je okvir koji omogućava naučnicima podataka i inženjerima mašinskog učenja da objavljuju, testiraju, prate, upravljaju i distribuiraju svoje modele za saradnju sa drugim timovima. U suštini, model registra se koristi kada završite svoju fazu testiranja i spremni ste da svoje nalaze podijelite 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 centralne lokacije. Linija modela, verzija modela, napomene i prijelazi u fazama dostupni su putem registra.
U MLflowu, registrovani model je onaj s jedinstvenim imenom i metapodacima, verzijama modela, prijelaznim fazama i linijom modela. Jedna ili više verzija modela može se naći u registrovanom modelu. Novi model se smatra verzijom 1 kada je registrovan u registru. Sljedeća verzija se dodaje svakom novom modelu sa istim imenom.
Možete dodijeliti jedan korak bilo kojoj verziji modela u bilo koje vrijeme. Međutim, faze moraju biti dodijeljene u okviru faza MLflow-a koje su formalno specificirane, kao što su postavljanje, proizvodnja i arhiviranje. Verzija modela može se preći iz jedne faze u drugu.
MLflow vam omogućava da koristite markdown da označite i model najviše razine i svaku specifičnu verziju. Možete uključiti opise kao i druge relevantne informacije, kao što su objašnjenja algoritama, metodologija i korišteni skupovi podataka.
ključne značajke
- Da biste pristupili registru modela preko korisničkog sučelja ili API-ja kada hostujete svoj vlastiti MLflow server, morate koristiti pozadinsko skladište podržano bazom podataka.
- Registry modela se takođe može pristupiti preko MLflow modela ili interfejsa MLflow Client Tracking API. Možete, na primjer, registrirati model za vrijeme 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 MLflow-a. Umjesto da ponovo obučavate modele, samo želite da registrujete svoje pohranjene modele u Registry modela.
Za više informacija, možete pogledati službeni dokumentacija.
zaključak
MLflow je odličan alat za životni ciklus ML-a koji se stalno razvija. Možete ga koristiti zajedno sa svojim trenutnim alatima i platformama.
Podržava nekoliko programskih jezika, uključujući Python, Javu i R. Takođe možete brzo pratiti, sačuvati i upoređivati različite verzije modela zahvaljujući dizajnu prilagođenom korisniku.
Isprobajte MLflow i javite nam svoje iskustvo!
Ostavite odgovor