Të gjithë ata që kanë provuar zhvillimin e mësimit të makinerive e kuptojnë se sa e vështirë është. Përveç problemeve standarde në zhvillimin e softuerit, zhvillimi i mësimit të makinerive (ML) paraqet një mori pengesash shtesë.
Qindra mjete me burim të hapur janë në dispozicion për të ndihmuar në çdo fazë të ciklit jetësor të ML, nga përgatitja e të dhënave deri tek trajnimi i modeleve.
Ndryshe nga zhvillimi tradicional i softuerit, kur ekipet zgjedhin një mjet për çdo hap, me ML ju në përgjithësi dëshironi të eksploroni çdo mjet të disponueshëm (p.sh., algoritmin) për të parë nëse ai përmirëson rezultatet.
Si rezultat, zhvilluesit e ML duhet të përdorin dhe prodhojnë qindra biblioteka.
Algoritmet e mësimit të makinerisë përmbajnë mijëra parametra të personalizueshëm dhe është e vështirë të identifikosh se cilat parametra, kode dhe të dhëna hynë në secilin eksperiment për të gjeneruar një model, pavarësisht nëse punoni vetëm ose në një ekip.
Pa monitorimin e duhur, ekipet shpesh përpiqen të marrin të njëjtin kod për të funksionuar përsëri. Pavarësisht nëse jeni një shkencëtar i të dhënave që transferon kodin tuaj të trajnimit tek një inxhinier për përdorim të prodhimit, ose po ktheheni në punën tuaj të mëparshme për të diagnostikuar një problem, tërheqja e hapave të rrjedhës së punës ML është thelbësore.
Zhvendosja e një modeli në prodhim mund të jetë e vështirë për shkak të metodave dhe mjediseve të shumta të vendosjes që duhen përdorur (p.sh. shërbimi REST, përfundimi i grupit ose aplikacionet celulare). Nuk ka asnjë metodë të zakonshme për zhvendosjen e modeleve nga çdo bibliotekë në ndonjë nga këto mjete, dhe kështu çdo vendosje e re paraqet një rrezik.
Për shkak të këtyre çështjeve, është e qartë se zhvillimi i ML duhet të përmirësohet ndjeshëm për t'u bërë po aq i qëndrueshëm, i parashikueshëm dhe i përdorur gjerësisht si zhvillimi tradicional i softuerit.
Sfidat e ML
- Ka një bollëk mjetesh të ndryshme. Qindra zgjidhje softuerike janë të disponueshme për të ndihmuar në çdo fazë të ciklit jetësor të mësimit të makinerive, nga përgatitja e të dhënave deri tek trajnimi i modeleve. Për më tepër, ndryshe nga zhvillimi tradicional i softuerit, kur ekipet zgjedhin një mjet për çdo hap, në mësimin e makinerive (ML), shpesh dëshironi të eksploroni çdo mjet të disponueshëm (p.sh., algoritmin) për të parë nëse ai përmirëson rezultatet. Si rezultat, zhvilluesit e ML duhet të përdorin dhe prodhojnë qindra biblioteka.
- Është e vështirë të mbash gjurmët e eksperimenteve. Algoritmet e mësimit të makinerisë përmbajnë mijëra parametra të personalizueshëm dhe është e vështirë të identifikosh se cilat parametra, kode dhe të dhëna hynë në secilin eksperiment për të gjeneruar një model, pavarësisht nëse punoni vetëm ose në një ekip.
- Është e vështirë të zbatohet mësimi i makinës. Zhvendosja e një modeli në prodhim mund të jetë e vështirë për shkak të metodave dhe mjediseve të shumta të vendosjes që duhen përdorur (p.sh. shërbimi REST, përfundimi i grupit ose aplikacionet celulare). Nuk ka asnjë metodë të zakonshme për zhvendosjen e modeleve nga çdo bibliotekë në ndonjë nga këto mjete. Kështu, çdo vendosje e re paraqet një rrezik.
Çfarë është MLflow?
MLflow është një platformë me burim të hapur për ciklin jetësor të mësimit të makinerive. Ai bazohet në një koncept të ndërfaqes së hapur, duke propozuar shumë abstraksione thelbësore që lejojnë infrastrukturën aktuale dhe algoritmet e mësimit të makinerive të integrohen lehtësisht me sistemin.
Kjo nënkupton që nëse je një zhvillues që dëshiron të përdorë MLflow, por po përdor një kornizë të pambështetur, dizajni i ndërfaqes së hapur e bën relativisht të thjeshtë integrimin e asaj kuadri dhe fillimin e punës me platformën. Në praktikë, kjo nënkupton që MLflow synohet të funksionojë me ndonjë Mësimi makinë bibliotekë ose gjuhë.
Për më tepër, MLflow promovon përsëritshmërinë, që do të thotë se i njëjti kod trajnimi ose prodhimi i mësimit të makinerive synohet të ekzekutohet me të njëjtat rezultate, pavarësisht nga mjedisi, qoftë në cloud, në një stacion pune lokal ose në një fletore.
Më në fund, MLflow është ndërtuar për shkallëzueshmëri, kështu që mund të përdoret nga një ekip i vogël shkencëtarësh të të dhënave, si dhe nga një kompani e madhe me qindra praktikues të mësimit të makinerive.
MLflow është i pajtueshëm me çdo bibliotekë, algoritëm, mjet vendosjeje ose gjuhë të mësimit të makinerive. Ai gjithashtu ka avantazhet e mëposhtme:
- Projektuar për të funksionuar me çdo shërbim cloud.
- Shkallët në të dhëna të mëdha me Apache Spark.
- MLflow është i pajtueshëm me një sërë kornizash të mësimit të makinerisë me burim të hapur, duke përfshirë Apache Spark, TensorFlowdhe SciKit-Mësoni.
Nëse tashmë keni kod, MLflow mund të përdoret me të. Ju madje mund të ndani kornizën dhe modelet tuaja midis ndërmarrjeve sepse është kështu burim të hapur.
Komponentët e MLflow: Si funksionojnë?
MLflow është një platformë falas dhe me burim të hapur për menaxhimin e ciklit jetësor të ML, i cili përfshin eksperimentimin, riprodhueshmërinë, vendosjen dhe një regjistër të vetëm modeli. Aktualisht, MLflow ka katër komponentë:
1. Ndjekja e MLflow
Unë do të filloj me Ndjekjen e MLflow. MLflow mbështet koleksionin e koncepteve të ndryshme thelbësore të lidhura me një depo të centralizuar të gjurmimit të meta të dhënave të trajnimit. Nocioni i parë është një koleksion i hiperparametrave kritikë ose pullave të konfigurimit që ndikojnë në performancën e modelit. Përdorimi i API-ve të MLflow dhe një shërbim i centralizuar gjurmimi mund t'i ruajë të gjitha këto.
Përdoruesit mund të regjistrojnë gjithashtu të dhëna të performancës për të marrë njohuri mbi suksesin e modeleve të tyre të mësimit të makinerive. Për më tepër, për përsëritshmërinë, MLflow i lejon përdoruesit të regjistrojnë kodin burimor specifik që është përdorur për të krijuar një model si dhe versionin e tij duke u integruar fort me Git për të lidhur çdo model me një hash specifik të kryerjes.
MLflow mund të përdoret për të regjistruar objekte, të cilat janë çdo skedar arbitrar duke përfshirë trajnimin, të dhënat e testimit dhe vetë modelet për riprodhueshmëri.
Kjo do të thotë që nëse unë jam një zhvillues që sapo ka trajnuar një model, unë mund ta vazhdoj atë në shërbimin e centralizuar të gjurmimit dhe një nga kolegët e mi mund ta ngarkojë atë më vonë dhe ose të vazhdojë të trajnojë dhe eksperimentojë ose ta prodhojë atë model për të përmbushur një nevojë specifike. .
Kur ekzekutoni kodin tuaj të mësimit të makinës dhe më pas shikoni rezultatet, gjurmimi është një API që ju lejon të regjistroni parametrat, versionet e kodit, metrikat dhe skedarët e daljes. Është shkruar në Python, R dhe Java, ndër gjuhë të tjera. Është gjithashtu i aksesueshëm si një API REST, i cili mund të përdoret për të ndërtuar aplikacione në krye të tij.
Key Features
- Shumë zhvillues përdorin MLflow në kompjuterin e tyre lokal, ku pjesa e pasme dhe ruajtja e objekteve ndajnë një direktori në disk.
- Shumë përdorues përdorin gjithashtu SQLite, një bazë të dhënash e pajtueshme me SQLAlchemy, për të ekzekutuar MLflow në kompjuterët e tyre lokalë.
- MLflow gjithashtu mbështet arkitekturat e shpërndara. Serveri i gjurmimit, dyqani i backend-it dhe dyqani i objekteve janë të gjithë të pritur në serverë të ndryshëm në këto.
- Nëse ekzekutimi është iniciuar nga një Projekt MLflow, hash-i i kryerjes së git është përdorur. API-të MLflow Python, R, Java dhe REST mund të përdoren për të regjistruar të dhënat për t'u ekzekutuar.
Për më shumë informacion, mund të shikoni zyrtarin Dokumentacioni.
2. Projektet MLFlow
Pasi të kemi kaluar nëpër komponentët e gjurmimit, do të doja të flisja për projektet MLflow, të cilat janë një strukturë paketimi e përsëritshme për seancat e trajnimit të modeleve, pavarësisht nga konteksti i ekzekutimit.
Bizneset përdorin një gamë të gjerë teknologjish trajnimi për mësimin e makinerive, por ato i përdorin gjithashtu këto mjete trajnimi në një sërë kontekstesh të ndryshme. Për shembull, ata mund të ekzekutojnë kodin e tyre të trajnimit në cloud, në një kompjuter lokal ose në një fletore.
Kjo çon në problemin që rezultatet e mësimit të makinës janë të vështira për t'u përsëritur. Shpesh, i njëjti kod identik trajnimi nuk ekzekuton ose jep të njëjtat rezultate në dy vende të veçanta.
Zgjidhja e ofruar nga MLflow është një përkufizim i pavarur i projektit të kodit të trajnimit që përfshin të gjithë kodin e trajnimit të mësimit të makinerive, si dhe varësitë e bibliotekës së versionit të tij, cilësimet dhe të dhënat e trajnimit dhe testimit.
MLflow siguron riprodhueshmëri në kontekstet e ekzekutimit duke përshkruar qartë të gjithë grupin e kërkesave për një proces trajnimi të mësimit të makinerive. Ai e realizon këtë duke instaluar të gjitha ato biblioteka dhe duke përmbushur të njëjtin shtet në të cilin kodi po ekzekutohet.
Projekti MLflow nuk është gjë tjetër veçse një direktori. Është një direktori që përfshin kodin e trajnimit, përcaktimin e varësisë së bibliotekës dhe të dhëna të tjera të nevojshme për sesionin e trajnimit, si dhe këtë skedar konfigurimi opsional.
Këto kërkesa të bibliotekës mund të përcaktohen në mënyra të ndryshme. Përdoruesit mund, për shembull, të ofrojnë një specifikim të mjedisit anaconda të formatuar në YAML për të renditur kërkesat e tyre të bibliotekës së kodit të trajnimit. MLflow do të ekzekutojë kodin e trajnimit brenda kontejnerit. Në një rast të tillë, ato mund të përfshijnë gjithashtu një kontejner Docker.
Së fundi, MLflow ka një ndërfaqe të linjës së komandës (CLI) për ekzekutimin e këtyre projekteve, si dhe Python dhe Java API. Këto projekte mund të ekzekutohen në sistemin lokal të përdoruesit, si dhe në një sërë cilësimesh në distancë, si p.sh. programuesi i punës Databricks dhe Kubernetes. Projektet MLflow ju lejojnë të paketoni kodin e shkencës së të dhënave në një mënyrë të përsëritshme dhe të ripërdorshme, kryesisht bazuar në standarde.
Komponenti i projekteve përfshin një API si dhe shërbime të linjës së komandës për menaxhimin e projekteve. Këto aftësi garantojnë që projektet mund të lidhen me zinxhirë së bashku për të formuar procese të mësimit të makinerive.
Key Features
- MLflow mbështet mjediset e projektit, duke përfshirë mjedisin e kontejnerëve Docker, mjedisin Conda dhe mjedisin e sistemit.
- Çdo depo Git ose drejtori lokale mund të konsiderohet si një projekt MLflow; sipas parazgjedhjes; mund të përdorni çdo guaskë ose Skript Python në drejtori si pikë hyrëse e projektit.
- Varësitë jo-Python, të tilla si bibliotekat Java, mund të kapen duke përdorur kontejnerët Docker.
- Ju mund të fitoni kontroll më të madh mbi një Projekt MLflow duke shtuar një skedar projekti në direktorinë rrënjë të projektit, i cili është një skedar teksti në sintaksën YAML.
Për më shumë informacion, mund të shikoni zyrtarin Dokumentacioni.
3. Modelet MLflow
Tani, do të doja të diskutoja modelet MLflow, një format modeli për qëllime të përgjithshme që mbështet një gamë të gjerë kontekstesh prodhimi. Arsyeja për modelet MLflow tani është mjaft e ngjashme me atë për projektet.
Përsëri, ne shohim se modelet mund të krijohen duke përdorur një gamë të gjerë mjetesh, por ato gjithashtu mund të prodhohen ose vendosen në një gamë të madhe situatash, në krahasim me mjediset e trajnimit.
Këto cilësime përfshijnë mjete për shërbimin në kohë reale, të tilla si Kubernetes ose Amazon SageMaker, si dhe transmetimin dhe vlerësimin e grupeve, të tilla si Spark. Për më tepër, disa biznese mund të zgjedhin të vendosin modele si një shërbim ueb RESTful që funksionon në një shembull të para-konfiguruar cloud.
Një model MLflow, si një projekt, është një strukturë drejtorie. Ai përfshin një skedar konfigurimi dhe, këtë herë, një objekt modeli të serializuar në vend të kodit të trajnimit. Ai gjithashtu përfshin këtë grup varësish për përsëritshmërinë si projekt. Këtë herë, ne do të shqyrtojmë varësitë e vlerësimit në kontekstin e një mjedisi Conda.
Për më tepër, MLflow përfshin mjete për gjenerimin e modeleve për serializimin e modeleve në formatin MLflow nga një sërë kornizash të njohura. Së fundi, MLflow shton dislokime, API për prodhimin dhe lidhjen e çdo modeli MLflow me një sërë shërbimesh, dhe këto API janë të aksesueshme në Python, Java, R dhe një format CLI.
Modelet janë një komponent me një strukturë standarde për modelet e paketimit që mund të përdoren dhe kuptohen nga mjetet e rrjedhës së poshtme si serverët e konkluzionit ose Baza e të dhënave platforma e konkluzioneve të grupeve. Ky komponent kursen orë të tëra kodi me porosi kur paketon një model për prodhim.
Modeli MLflow është një standard për paketimin e modeleve të mësimit të makinerive në një larmi formash të njohura si "shije". MLflow ofron shumë mjete për t'ju ndihmuar në vendosjen e llojeve të ndryshme të modeleve. Çdo Model MLflow mbahet si një direktori që përmban skedarë arbitrar, si dhe një skedar përshkrues të modelit ML me një listë të shijeve në të cilat mund të përdoret.
Key Features
- Të gjitha mjetet e integruara të vendosjes së MLflow ofrojnë shije të shumta "standarde", si p.sh. "funksioni Python" që shpjegon se si të ekzekutohet modeli si një funksion Python.
- Çdo Model MLflow përbëhet nga një drejtori që përmban skedarë arbitrar, si dhe një skedar modeli ML në rrënjën e drejtorisë që përcakton shijet e shumta të modelit.
- Kur ruani një model, MLflow ju lejon të specifikoni një parametër të mjedisit Conda që përmban varësitë e modelit. Nëse nuk specifikohet asnjë mjedis Conda, krijohet një mjedis i paracaktuar i bazuar në shijen e modelit. Pas kësaj, mjedisi Conda ruhet në conda.yaml.
Për më shumë informacion, mund të shikoni zyrtarin Dokumentacioni.
4. Regjistri i Modelit MLflow
Një regjistër model është një depo për modelet e mësuara të mësimit të makinerive (ML). Regjistri i Modeleve përbëhet nga API dhe një aplikacion i bazuar në ueb që përdoret për të mirëmbajtur modelet në faza të ndryshme si ekip. Model Lineage, Model Versioning, Easy Stage Transition dhe Annotation janë vetëm disa nga aftësitë e disponueshme në Model Registry.
Një regjistër model, përveç vetë modeleve, përmban informacion (metadata) në lidhje me të dhënat dhe detyrat e trajnimit të përdorura për të ndërtuar modelin. Është thelbësore të mbahen gjurmët e këtyre inputeve të kërkuara për të krijuar linjën e linjës për modelet ML. Në këtë drejtim, një regjistër model funksionon në mënyrë të ngjashme me softuerin konvencional kontrolli i versionit sistemet (p.sh., Git, SVN) dhe depot e objekteve (p.sh. Artifactory, PyPI).
Regjistri i Modeleve është një kornizë që lejon shkencëtarët e të dhënave dhe inxhinierët e mësimit të makinerive të publikojnë, testojnë, monitorojnë, menaxhojnë dhe shpërndajnë modelet e tyre për bashkëpunim me ekipe të tjera. Në thelb, regjistri i modelit përdoret pasi të keni përfunduar fazën e testimit dhe të jeni gati për të ndarë gjetjet tuaja me ekipin dhe palët e interesuara.
Regjistri i Modeleve MLflow ofron një API dhe një ndërfaqe përdoruesi për menaxhimin e modeleve tuaja dhe jetëgjatësisë së tyre nga një vendndodhje qendrore. Prejardhja e modelit, versioni i modelit, shënimet dhe tranzicionet në skenë janë të gjitha të disponueshme përmes regjistrit.
Në MLflow, një model i regjistruar është ai me një emër unik dhe meta të dhëna, versione të modelit, faza kalimtare dhe një linjë modeli. Një ose më shumë versione të modelit mund të gjenden në një model të regjistruar. Një model i ri konsiderohet versioni 1 kur regjistrohet në regjistër. Versioni i mëposhtëm i shtohet çdo modeli të ri me të njëjtin emër.
Ju mund të caktoni një hap për çdo version modeli në çdo kohë. Megjithatë, fazat duhet të caktohen sipas fazave të rrjedhës së ML-së që janë specifikuar zyrtarisht, të tilla si vendosja në skenë, prodhimi dhe arkivimi. Një version model mund të kalohet nga një fazë në tjetrën.
MLflow ju lejon të përdorni shënimin për të shënuar si modelin e nivelit të lartë ashtu edhe çdo version specifik. Ju mund të përfshini përshkrime si dhe informacione të tjera përkatëse, të tilla si shpjegimet e algoritmeve, metodologjinë dhe grupet e të dhënave të përdorura.
Key Features
- Për të hyrë në regjistrin e modelit përmes UI ose API kur pret serverin tuaj MLflow, duhet të përdorni një dyqan të mbështetur nga baza e të dhënave.
- Regjistri i modelit mund të aksesohet gjithashtu nëpërmjet aromës së modelit MLflow ose ndërfaqes API të ndjekjes së klientit MLflow. Për shembull, mund të regjistroni një model gjatë një eksperimenti MLflow ose pas ekzekutimit të të gjithë eksperimentit tuaj.
- Jo të gjithë do të fillojnë të trajnojnë modelet e tyre duke përdorur MLflow. Si rezultat, mund të keni disa modele të trajnuara përpara se të përdorni MLflow. Në vend që të ritrajnoni modelet, ju thjesht dëshironi të regjistroni modelet tuaja të ruajtura në Regjistrin e Modeleve.
Për më shumë informacion, mund të shikoni zyrtarin Dokumentacioni.
Përfundim
MLflow është një mjet i shkëlqyer dhe vazhdimisht në rritje i ciklit jetësor të ML. Ju mund ta përdorni atë së bashku me mjetet dhe platformat tuaja aktuale.
Ai mbështet disa gjuhë programimi, duke përfshirë Python, Java dhe R. Ju gjithashtu mund të gjurmoni, ruani dhe krahasoni me shpejtësi versione të ndryshme modelesh falë dizajnit të tij miqësor për përdoruesit.
Provoni MLflow dhe na tregoni përvojën tuaj!
Lini një Përgjigju