Kõik, kes on proovinud masinõppe arendamist, saavad aru, kui raske see on. Lisaks tarkvaraarenduse standardprobleemidele toob masinõppe (ML) arendamine kaasa hulga täiendavaid takistusi.
Saadaval on sadu avatud lähtekoodiga tööriistu, mis aitavad ML-i elutsükli igas etapis alates andmete ettevalmistamisest kuni mudelikoolituseni.
Erinevalt traditsioonilisest tarkvaraarendusest, kui meeskonnad valivad iga sammu jaoks ühe tööriista, siis ML-i puhul soovite üldiselt uurida kõiki saadaolevaid tööriistu (nt algoritmi), et näha, kas see parandab tulemusi.
Selle tulemusena peavad ML-i arendajad kasutama ja tootma sadu teeke.
Masinõppe algoritmid sisaldavad tuhandeid kohandatavaid parameetreid ning on raske tuvastada, millised parameetrid, kood ja andmed läksid igasse katsesse mudeli loomiseks, olenemata sellest, kas töötate üksi või meeskonnas.
Ilma korraliku jälgimiseta näevad meeskonnad sageli vaeva, et sama kood uuesti tööle saada. Olenemata sellest, kas olete andmeteadlane, kes edastab oma koolituskoodi tootmiskasutuseks insenerile, või lähete probleemi diagnoosimiseks tagasi oma varasema töö juurde, on ML-i töövoo sammude taganemine ülioluline.
Mudeli teisaldamine tootmisse võib olla keeruline paljude kasutatavate juurutusmeetodite ja keskkondade tõttu (nt REST-i teenindamine, partii järeldused või mobiilirakendused). Puudub ühtne meetod mudelite teisaldamiseks ühestki teegist nendesse tööriistadesse ja seega toob iga uus juurutamine kaasa riski.
Nende probleemide tõttu on ilmne, et ML-i arendus peab oluliselt paranema, et saada sama stabiilseks, prognoositavaks ja laialdaselt kasutatavaks kui traditsiooniline tarkvaraarendus.
ML väljakutsed
- Erinevaid tööriistu on palju. Saadaval on sadu tarkvaralahendusi, mis aitavad masinõppe elutsükli igas etapis alates andmete ettevalmistamisest kuni mudelikoolituseni. Lisaks, erinevalt traditsioonilisest tarkvaraarendusest, kui meeskonnad valivad masinõppe (ML) iga etapi jaoks ühe tööriista, soovite sageli uurida kõiki saadaolevaid tööriistu (nt algoritmi), et näha, kas see parandab tulemusi. Selle tulemusena peavad ML-i arendajad kasutama ja tootma sadu teeke.
- Eksperimente on raske jälgida. Masinõppe algoritmid sisaldavad tuhandeid kohandatavaid parameetreid ning on raske tuvastada, millised parameetrid, kood ja andmed läksid igasse katsesse mudeli loomiseks, olenemata sellest, kas töötate üksi või meeskonnas.
- Masinõpet on raske rakendada. Mudeli teisaldamine tootmisse võib olla keeruline paljude kasutatavate juurutusmeetodite ja keskkondade tõttu (nt REST-i teenindamine, partii järeldused või mobiilirakendused). Mudelite teisaldamiseks ühestki teegist ühelegi neist tööriistadest pole levinud meetodit. Seega toob iga uus kasutuselevõtt kaasa riski.
Mis on MLflow?
MLflow on avatud lähtekoodiga platvorm masinõppe elutsükli jaoks. See põhineb avatud liidese kontseptsioonil, pakkudes välja palju olulisi abstraktsioone, mis võimaldavad praeguse infrastruktuuri ja masinõppe algoritme hõlpsasti süsteemiga integreerida.
See tähendab, et kui olete arendaja, kes soovib kasutada MLflow-d, kuid kasutab toetamata raamistikku, muudab avatud liidese kujundus selle raamistiku integreerimise ja platvormiga töötamise alustamise suhteliselt lihtsaks. Praktikas tähendab see, et MLflow on mõeldud töötama mis tahes masinõpe raamatukogu või keel.
Lisaks soodustab MLflow korratavust, mis tähendab, et sama koolitus- või tootmismasinõppekood on mõeldud töötama samade tulemustega keskkonnast sõltumatult, olgu siis pilves, kohalikus tööjaamas või sülearvutis.
Lõpuks on MLflow loodud skaleeritavaks, nii et seda saavad kasutada nii väike andmeteadlaste meeskond kui ka suur ettevõte, kus on sadu masinõppe praktikuid.
MLflow ühildub mis tahes masinõppe teegi, algoritmi, juurutustööriista või keelega. Sellel on ka järgmised eelised:
- Loodud töötama mis tahes pilveteenusega.
- Suurendage Apache Sparkiga tohutuid andmeid.
- MLflow ühildub mitmesuguste avatud lähtekoodiga masinõppe raamistikega, sealhulgas Apache Sparkiga, TensorFlowja SciKit-Learn.
Kui teil on kood juba olemas, saate sellega kasutada MLflow-d. Võite isegi jagada oma raamistikku ja mudeleid ettevõtete vahel, sest see on nii avatud lähtekoodiga.
MLflow komponendid: kuidas need töötavad?
MLflow on tasuta ja avatud lähtekoodiga platvorm ML elutsükli haldamiseks, mis hõlmab katsetamist, reprodutseeritavust, juurutamist ja ühtset mudeliregistrit. Praegu on MLflow-l neli komponenti:
1. MLflow jälgimine
Alustan MLflow jälgimisega. MLflow toetab mitmesuguste oluliste kontseptsioonide kogumist, mis on seotud tsentraliseeritud koolituse metaandmete jälgimise hoidlaga. Esimene mõiste on kriitiliste hüperparameetrite või konfiguratsiooninuppude kogum, mis mõjutavad mudeli jõudlust. MLflow API-de ja tsentraliseeritud jälgimisteenuse kasutamine võib neid kõiki säilitada.
Kasutajad võivad salvestada ka jõudlusandmeid, et saada ülevaade oma masinõppemudelite edust. Lisaks võimaldab MLflow kasutajatel korratavuse huvides logida nii konkreetse lähtekoodi, mida mudeli loomiseks kasutati, kui ka selle versiooni, integreerides tihedalt Gitiga, et siduda iga mudel konkreetse sidumisräsiga.
MLflow'i saab kasutada artefaktide logimiseks, mis on suvalised failid, sealhulgas koolitus-, katseandmed ja reprodutseeritavuse mudelid.
See tähendab, et kui olen arendaja, kes just välja õpetas mudeli, saan selle säilitada tsentraliseeritud jälgimisteenuses ja üks mu kolleeg saab selle hiljem laadida ning jätkata selle mudeli koolitamist ja katsetamist või tootmist, et see vastaks konkreetsele vajadusele. .
Masinõppekoodi käivitamisel ja pärast tulemuste vaatamisel on jälgimine API, mis võimaldab logida parameetreid, koodiversioone, mõõdikuid ja väljundfaile. See on kirjutatud muude keelte hulgas Pythonis, R-is ja Javas. See on juurdepääsetav ka REST API-na, mida saab kasutada rakenduste loomiseks selle peale.
Põhijooned
- Paljud arendajad kasutavad MLflow-d oma kohalikus arvutis, kus taustaprogramm ja artefaktide salvestusruum jagavad kettal kataloogi.
- Paljud kasutajad kasutavad oma kohalikes arvutites MLflow käitamiseks ka SQLite'i, SQLAlchemyga ühilduvat andmebaasi.
- MLflow toetab ka hajutatud arhitektuure. Jälgimisserver, taustapood ja artefaktipood majutatakse nendes erinevates serverites.
- Kui käitamise algatas MLflow projekt, kasutati git commit räsi. Käitamiseks kasutatavate andmete logimiseks võib kasutada MLflow Pythoni, R, Java ja REST API-sid.
Lisateabe saamiseks võite tutvuda ametnikuga dokumentatsioon.
2. MLFlow projektid
Pärast jälgimiskomponentide läbivaatamist tahaksin rääkida MLflow projektidest, mis on korratav pakkimisstruktuur mudelkoolituste jaoks, olenemata täitmise kontekstist.
Ettevõtted kasutavad laia valikut masinõppe koolitustehnoloogiaid, kuid nad kasutavad neid koolitusvahendeid ka erinevates kontekstides. Näiteks võivad nad täita oma treeningkoodi pilves, kohalikus arvutis või sülearvutis.
See toob kaasa probleemi, et masinõppe tulemusi on raske korrata. Sageli ei käivita sama identne treeningkood kahes erinevas kohas või ei anna samu tulemusi.
MLflow pakutav lahendus on iseseisev koolituskoodi projekti definitsioon, mis sisaldab kogu masinõppe koolituskoodi, aga ka selle versiooniteegi sõltuvusi, sätteid ning koolitus- ja testiandmeid.
MLflow tagab reprodutseeritavuse täitmiskontekstide lõikes, kirjeldades selgelt kõiki masinõppe koolitusprotsessi nõudeid. Selle saavutamiseks installib kõik need teegid ja saavutab sama süsteemioleku, milles kood töötab.
MLflow projekt pole midagi muud kui kataloog. See on kataloog, mis sisaldab koolituskoodi, teegi sõltuvuse määratlust ja muid koolitusseansi jaoks vajalikke andmeid, samuti seda valikulist konfiguratsioonifaili.
Neid raamatukogu nõudeid saab määratleda mitmel viisil. Kasutajad saavad näiteks esitada YAML-vormingus anaconda keskkonna spetsifikatsiooni, et loetleda oma koolituskoodi raamatukogu nõuded. MLflow käivitab koolituskoodi konteineris. Sellisel juhul võivad need sisaldada ka Dockeri konteinerit.
Lõpuks on MLflow-l käsurea liides (CLI) nende projektide, aga ka Pythoni ja Java API-de käitamiseks. Neid projekte saab käivitada nii kasutaja kohalikus süsteemis kui ka mitmesugustes kaugseadetes, nagu Databricksi töögraafik ja Kubernetes. MLflow projektid võimaldavad teil pakendada andmeteaduse koodi korrataval ja korduvkasutataval viisil, peamiselt standardite alusel.
Projektide komponent sisaldab nii API-d kui ka käsurea utiliite projektide haldamiseks. Need võimalused tagavad, et projekte saab aheldada, et moodustada masinõppeprotsesse.
Põhijooned
- MLflow toetab projektikeskkondi, sealhulgas Dockeri konteinerkeskkonda, Conda keskkonda ja süsteemikeskkonda.
- Mis tahes Giti hoidlat või kohalikku kataloogi võib pidada MLflow projektiks; algselt; võite kasutada mis tahes kesta või Pythoni skript kataloogis projekti sisenemispunktina.
- Mitte-Pythoni sõltuvusi, nagu Java teegid, saab jäädvustada Dockeri konteinerite abil.
- Saate MLflow projekti üle suurema kontrolli saada, kui lisate projekti juurkataloogi projektifaili, mis on YAML-i süntaksis tekstifail.
Lisateabe saamiseks võite tutvuda ametnikuga dokumentatsioon.
3. MLflow mudelid
Nüüd tahaksin arutleda MLflow mudelite üle, mis on üldotstarbeline mudelivorming, mis toetab paljusid tootmiskontekste. MLflow mudelite põhjus on nüüd üsna sarnane projektide omaga.
Jällegi näeme, et mudeleid saab luua laia valikut tööriistu kasutades, kuid erinevalt koolituskeskkondadest saab neid toota või juurutada väga erinevates olukordades.
Need seaded hõlmavad tööriistu reaalajas teenindamiseks, nagu Kubernetes või Amazon SageMaker, aga ka voogesitust ja partiide hindamist, nagu Spark. Lisaks võivad mõned ettevõtted valida mudelite juurutamise RESTful veebiteenusena, mis töötab eelkonfigureeritud pilveeksemplaris.
MLflow mudel, nagu projekt, on kataloogistruktuur. See sisaldab konfiguratsioonifaili ja seekord seeriaviisilist mudeliartefakti, mitte koolituskoodi. See hõlmab ka seda sõltuvuste kogumit korratavuse jaoks projektina. Seekord käsitleme hindamise sõltuvusi Conda keskkonna kontekstis.
Lisaks sisaldab MLflow mudelite genereerimise tööriistu paljude populaarsete raamistike MLflow-vormingus mudelite jadamiseks. Lõpuks lisab MLflow juurutused, API-d mis tahes MLflow mudeli tootmiseks ja ühendamiseks mitmesuguste teenustega ning need API-d on juurdepääsetavad Pythonis, Javas, R-is ja CLI-vormingus.
Mudelid on pakkimismudelite standardstruktuuriga komponent, mida saavad kasutada ja mõista järgnevad tööriistad, nagu järeldusserverid või Andmebaasid partii järeldamisplatvorm. See komponent säästab mudeli tootmiseks pakkimisel tunde eritellimusel valmistatud koodi.
MLflow mudel on standard masinõppemudelite pakkimiseks erinevates vormides, mida nimetatakse maitseteks. MLflow pakub palju tööriistu, mis aitavad teil erinevat tüüpi mudeleid juurutada. Iga MLflow mudelit hoitakse kataloogina, mis sisaldab suvalisi faile ja ML-mudeli deskriptorfaili koos maitsete loendiga, milles seda võib kasutada.
Põhijooned
- Kõik MLflow sisseehitatud juurutustööriistad pakuvad mitut "standardset" maitset, näiteks "Python-funktsiooni", mis selgitab, kuidas mudelit Pythoni funktsioonina käivitada.
- Iga MLflow mudel koosneb kataloogist, mis sisaldab suvalisi faile, samuti ML-mudeli failist kataloogi juurtes, mis määratleb mudeli arvukad maitsed.
- Mudeli salvestamisel võimaldab MLflow määrata Conda keskkonna parameetri, mis sisaldab mudeli sõltuvusi. Kui Conda keskkonda pole määratud, konstrueeritakse mudeli maitsel põhinev vaikekeskkond. Pärast seda salvestatakse Conda keskkond faili conda.yaml.
Lisateabe saamiseks võite tutvuda ametnikuga dokumentatsioon.
4. MLflow mudeliregister
Mudeliregister on õpitud masinõppe (ML) mudelite hoidla. Mudeliregister koosneb API-dest ja veebipõhisest rakendusest, mida kasutatakse mudelite meeskonnana eri etappides hooldamiseks. Model Lineage, Model Versioning, Easy Stage Transition ja Annotation on vaid mõned mudeliregistris saadaolevad võimalused.
Mudeliregister sisaldab lisaks mudelitele endile teavet (metaandmeid) mudeli koostamiseks kasutatud andmete ja koolitusülesannete kohta. ML-mudelite liini loomiseks on oluline jälgida neid vajalikke sisendeid. Sellega seoses toimib mudeliregister sarnaselt tavapärase tarkvaraga versiooni kontroll süsteemid (nt Git, SVN) ja artefaktihoidlad (nt Artifactory, PyPI).
Mudeliregister on raamistik, mis võimaldab andmeteadlastel ja masinõppeinseneridel oma mudeleid teiste meeskondadega koostööks avaldada, testida, jälgida, hallata ja levitada. Põhimõtteliselt võetakse mudeliregister kasutusele pärast seda, kui olete testimise etapi lõpetanud ja olete valmis oma tulemusi meeskonna ja sidusrühmadega jagama.
MLflow mudeliregister pakub API-d ja kasutajaliidest oma mudelite ja nende eluea haldamiseks kesksest asukohast. Mudeli põlvnemine, mudeliversioonide loomine, annotatsioonid ja etapi üleminekud on kõik saadaval registri kaudu.
MLflows on registreeritud mudel see, millel on kordumatu nimi ja metaandmed, mudeli versioonid, üleminekufaasid ja mudeli põlvnemine. Registreeritud mudelist võib leida ühe või mitu mudeliversiooni. Uut mudelit loetakse versiooniks 1, kui see on registris registreeritud. Järgmine versioon lisatakse igale uuele samanimelisele mudelile.
Saate igal ajal määrata ühe etapi mis tahes mudeliversioonile. Kuid etapid tuleb määrata MLflow-faaside alla, mis on ametlikult määratletud, nagu lavastus, tootmine ja arhiveerimine. Mudelversiooni saab ühest etapist teise üle kanda.
MLflow võimaldab teil kasutada allahindlust nii tipptaseme mudeli kui ka iga konkreetse versiooni märkimiseks. Saate lisada kirjeldusi ja muud asjakohast teavet, näiteks algoritmi selgitusi, metoodikat ja kasutatud andmekogumeid.
Põhijooned
- Mudeliregistrile juurdepääsuks kasutajaliidese või API kaudu omaenda MLflow-serveri hostimisel peate kasutama andmebaasi tagatud taustapoodi.
- Mudeliregistrile pääseb juurde ka MLflow mudeli maitse või MLflow Client Tracking API liidese kaudu. Näiteks võite mudeli registreerida MLflow katse käitamise ajal või pärast kõiki katse käitamist.
- Mitte igaüks ei hakka oma mudeleid MLflow abil koolitama. Seetõttu võite lasta mõned mudelid enne MLflow kasutamist välja õpetada. Mudelite ümberõpetamise asemel soovite lihtsalt salvestatud mudelid mudeliregistris registreerida.
Lisateabe saamiseks võite tutvuda ametnikuga dokumentatsioon.
Järeldus
MLflow on suurepärane ja pidevalt kasvav ML elutsükli tööriist. Saate seda kasutada koos oma praeguste tööriistade ja platvormidega.
See toetab mitut programmeerimiskeelt, sealhulgas Python, Java ja R. Tänu kasutajasõbralikule disainile saate kiiresti jälgida, salvestada ja võrrelda erinevaid mudeliversioone.
Proovige MLflow-d ja andke meile oma kogemusest teada!
Jäta vastus