Ĉiuj, kiuj provis maŝinlernadon, komprenas kiom malfacila ĝi estas. Krom la normaj problemoj en programaro, evoluado de maŝinlernado (ML) enkondukas amason da pliaj obstakloj.
Centoj da malfermfontaj iloj disponeblas por helpi kun ĉiu etapo de la ML-vivciklo, de datumpreparo ĝis modela trejnado.
Male al tradicia programaro, kiam teamoj elektas unu ilon por ĉiu paŝo, kun ML vi ĝenerale volas esplori ĉiun disponeblan ilon (ekz., algoritmo) por vidi ĉu ĝi plibonigas rezultojn.
Kiel rezulto, ML-programistoj devas uzi kaj produkti centojn da bibliotekoj.
Algoritmoj de maŝinlernado enhavas milojn da agordeblaj parametroj, kaj estas malfacile identigi kiuj parametroj, kodo kaj datumoj eniris ĉiun eksperimenton por generi modelon, ĉu vi laboras sole aŭ en teamo.
Sen taŭga monitorado, teamoj ofte luktas por ke la sama kodo refunkciu. Ĉu vi estas datumsciencisto, kiu transdonas vian trejnadkodon al inĝeniero por produktada uzado, aŭ ĉu vi reiras al via antaŭa laboro por diagnozi problemon, retiriĝi paŝojn de la ML-laborfluo estas decida.
Movi modelon al produktado povas esti malfacila pro la multaj deplojmetodoj kaj medioj kiuj devas esti uzitaj (ekz., REST-servado, grupa inferenco aŭ moveblaj programoj). Ekzistas neniu ofta metodo por movi modelojn de iu biblioteko al iu ajn el ĉi tiuj iloj, kaj tiel ĉiu nova deplojo enkondukas riskon.
Pro ĉi tiuj problemoj, estas evidente, ke ML-evoluo devas signife pliboniĝi por iĝi same stabila, antaŭvidebla kaj vaste uzata kiel tradicia programaro.
ML-Defioj
- Estas amaso da malsimilaj iloj. Centoj da softvarsolvoj estas disponeblaj por helpi kun ĉiu etapo de la maŝinlernada vivociklo, de datumpreparo ĝis modela trejnado. Krome, male al tradicia programaro, kiam teamoj elektas unu ilon por ĉiu paŝo, en maŝinlernado (ML), vi ofte volas esplori ĉiun disponeblan ilon (ekz. algoritmo) por vidi ĉu ĝi plibonigas rezultojn. Kiel rezulto, ML-programistoj devas uzi kaj produkti centojn da bibliotekoj.
- Estas malfacile observi eksperimentojn. Algoritmoj de maŝinlernado enhavas milojn da agordeblaj parametroj, kaj estas malfacile identigi kiuj parametroj, kodo kaj datumoj eniris ĉiun eksperimenton por generi modelon, ĉu vi laboras sole aŭ en teamo.
- Estas malfacile efektivigi maŝinlernadon. Movi modelon al produktado povas esti malfacila pro la multnombraj deplojmetodoj kaj medioj kiuj devas esti uzitaj (ekz., REST-servado, grupa inferenco aŭ moveblaj programoj). Ne ekzistas komuna metodo por movi modelojn de iu biblioteko al iu ajn el ĉi tiuj iloj. Tiel, ĉiu nova deplojo enkondukas riskon.
Kio estas MLflow?
MLflow estas malfermfonta platformo por la maŝinlernada vivociklo. Ĝi baziĝas sur malferma interfaca koncepto, proponante multajn esencajn abstraktaĵojn kiuj permesas al nunaj infrastrukturoj kaj maŝinlernado-algoritmoj esti facile integritaj kun la sistemo.
Ĉi tio implicas, ke se vi estas programisto, kiu volas uzi MLflow sed uzas nesubtenan kadron, la malferma interfaco-dezajno faras relative simpla integri tiun kadron kaj komenci labori kun la platformo. En praktiko, tio implicas ke MLflow estas celita funkcii kun iu ajn maŝinlernado biblioteko aŭ lingvo.
Krome, MLflow antaŭenigas ripeteblon, kio signifas, ke la sama trejnado aŭ produktada maŝinlernado kodo estas intencita funkcii kun la samaj rezultoj sendepende de la medio, ĉu en la nubo, sur loka laborstacio aŭ en kajero.
Fine, MLflow estas konstruita por skaleblo, do ĝi povas esti uzata de malgranda teamo de datumsciencistoj kaj ankaŭ de granda kompanio kun centoj da maŝinlernado-praktikistoj.
MLflow estas kongrua kun iu ajn maŝinlernada biblioteko, algoritmo, disfalda ilo aŭ lingvo. Ĝi ankaŭ havas la jenajn avantaĝojn:
- Desegnita por funkcii kun iu ajn nuba servo.
- Skalas al grandegaj datumoj kun Apache Spark.
- MLflow kongruas kun diversaj malfermfontaj maŝinlernadkadroj, inkluzive de Apache Spark, TensoroFluoKaj SciKit-Lernu.
Se vi jam havas kodon, MLflow povas esti uzata kun ĝi. Vi eĉ povas dividi vian kadron kaj modelojn inter entreprenoj ĉar ĝi estas malfermfonto.
MLflow Komponentoj: Kiel ili funkcias?
MLflow estas senpaga kaj malfermfonta platformo por administri la ML-vivciklon, kiu inkluzivas eksperimentadon, reprodukteblecon, deplojon kaj ununuran modelregistron. Nuntempe, MLflow havas kvar komponentojn:
1. MLflow-Spurado
Mi komencos kun MLflow-Spurado. MLflow subtenas la kolekton de diversaj esencaj konceptoj ligitaj al centralizita trejna metadatuma spura deponejo. La unua nocio estas kolekto de kritikaj hiperparametroj aŭ agordaj teniloj kiuj influas modelefikecon. Uzante la API-ojn de MLflow kaj centralizitan spuran servon povas konservi ĉion ĉi.
Uzantoj ankaŭ povas registri rendimentajn datumojn por ekkompreni la sukceson de siaj maŝinlernado-modeloj. Krome, por ripeteblo, MLflow permesas al uzantoj ensaluti la specifan fontkodon kiu estis uzita por krei modelon same kiel ĝian version per malloze integriĝante kun Git por ligi ĉiun modelon al specifa commit hash.
MLflow povas esti uzata por registri artefaktojn, kiuj estas ajnaj arbitraj dosieroj inkluzive de trejnado, testaj datumoj kaj modeloj mem por reproduktebleco.
Ĉi tio signifas, ke se mi estas programisto, kiu ĵus trejnis modelon, mi povas persisti ĝin al la centralizita spurservo, kaj unu el miaj kolegoj povas ŝarĝi ĝin poste kaj aŭ daŭrigi trejni kaj eksperimenti aŭ produkti tiun modelon por plenumi specifan bezonon. .
Kiam vi ekzekutas vian maŝinlernan kodon kaj poste rigardante la rezultojn, spurado estas API, kiu permesas vin protokoli parametrojn, kodversiojn, metrikojn kaj eligajn dosierojn. Ĝi estas skribita en Python, R, kaj Java, inter aliaj lingvoj. Ĝi ankaŭ estas alirebla kiel REST API, kiu povas esti uzata por konstrui apojn sur ĝi.
Ŝlosilo Elstaraĵoj
- Multaj programistoj uzas MLflow sur sia loka komputilo, kie la backend kaj artefakto-stokado dividas dosierujon sur la disko.
- Multaj uzantoj ankaŭ uzas SQLite, SQLAlchemy-kongruan datumbazon, por ruli MLflow sur siaj lokaj komputiloj.
- MLflow ankaŭ subtenas distribuitajn arkitekturojn. La spurservilo, backend-vendejo kaj artefakto-butiko estas ĉiuj gastigitaj sur malsamaj serviloj en ĉi tiuj.
- Se la kuro estis komencita de MLflow-Projekto, la git commit hash estis utiligita. La MLflow Python, R, Java kaj REST-APIoj povas esti uzataj por registri datumojn por ruliĝi.
Por pliaj informoj, vi povas kontroli la oficialulon dokumentado.
2. MLFlow Projektoj
Post kiam ni ekzamenis la spurajn komponantojn, mi ŝatus paroli pri MLflow-projektoj, kiuj estas ripetebla paka strukturo por modelaj trejnadsesioj sendepende de la ekzekutkunteksto.
Komercoj uzas ampleksan gamon de maŝinlernado-trejnaj teknologioj, sed ili ankaŭ uzas ĉi tiujn trejnajn ilojn en diversaj kuntekstoj. Ekzemple, ili povas ekzekuti sian trejnan kodon en la nubo, sur loka komputilo aŭ en kajero.
Ĉi tio kondukas al la problemo, ke la rezultoj de maŝinlernado estas malfacile reprodukteblaj. Ofte, la sama identa trejnadkodo ne efektivigas aŭ donas la samajn rezultojn en du apartaj lokoj.
La solvo provizita de MLflow estas memstara trejna koda difino de projekto, kiu inkluzivas ĉiujn el la maŝinlernada trejnadkodo, same kiel ĝiajn version-bibliotekdependecojn, agordojn kaj trejnadon kaj testajn datumojn.
MLflow certigas reprodukteblecon tra ekzekutkuntekstoj klare priskribante la tutan aron de postuloj por maŝinlernada trejnadprocezo. Ĝi faras tion instalante ĉiujn tiujn bibliotekojn kaj plenumante la saman sisteman staton, en kiu funkcias la kodo.
La MLflow-projekto estas nenio pli ol dosierujo. Ĝi estas dosierujo, kiu inkluzivas la trejnan kodon, la bibliotekan dependecan difinon kaj aliajn datumojn necesajn de la trejna sesio, kaj ankaŭ ĉi tiun laŭvolan agordan dosieron.
Ĉi tiuj bibliotekpostuloj povas esti difinitaj en diversaj manieroj. Uzantoj povas, ekzemple, provizi YAML-formatitan anakonda mediospecifon por listigi siajn trejnajn kodbibliotekpostulojn. MLflow ekzekutos la trejnan kodon ene de la ujo. En tia kazo, ili ankaŭ povas inkluzivi Docker-ujon.
Fine, MLflow havas komandlinian interfacon (CLI) por ruli ĉi tiujn projektojn, same kiel Python kaj Java API-ojn. Ĉi tiuj projektoj povas esti rulitaj sur la loka sistemo de la uzanto same kiel en diversaj foraj agordoj kiel la laborplanisto de Databricks kaj Kubernetes. MLflow-projektoj permesas vin paki datuman sciencan kodon en ripetebla kaj reuzebla maniero, plejparte surbaze de normoj.
La komponanto de projektoj inkluzivas API kaj ankaŭ komandliniajn ilojn por administri projektojn. Ĉi tiuj kapabloj garantias, ke projektoj povas esti ĉenitaj kune por formi maŝinlernajn procezojn.
Ŝlosilo Elstaraĵoj
- MLflow subtenas projektajn mediojn, inkluzive de Docker-ujo-medio, Conda-medio kaj la sistema medio.
- Ĉiu Git-deponejo aŭ loka dosierujo povas esti konsiderata kiel MLflow-projekto; defaŭlte; vi povas uzi ajnan ŝelon aŭ Python-skripto en la dosierujo kiel projektenirpunkto.
- Ne-Python-dependecoj, kiel ekzemple Java-bibliotekoj, povas esti kaptitaj per Docker-ujoj.
- Vi povas akiri pli grandan kontrolon super MLflow-Projekto aldonante projektdosieron al la radika dosierujo de la projekto, kiu estas tekstdosiero en YAML-sintakso.
Por pliaj informoj, vi povas kontroli la oficialulon dokumentado.
3. MLflow-Modeloj
Nun mi ŝatus diskuti MLflow-modelojn, ĝeneraluzeblan modelformaton, kiu subtenas larĝan gamon de produktadkuntekstoj. La kialo de MLflow-modeloj nun estas sufiĉe simila al tiu por projektoj.
Denove, ni vidas, ke modeloj povas esti generitaj uzante ampleksan gamon de iloj, sed ili ankaŭ povas esti produktitaj aŭ deplojitaj en granda gamo da situacioj, kontraste al trejnaj medioj.
Ĉi tiuj agordoj inkluzivas ilojn por realtempa servado, kiel Kubernetes aŭ Amazon SageMaker, kaj ankaŭ streaming kaj grupa poentado, kiel Spark. Krome, iuj entreprenoj povas elekti deploji modelojn kiel RESTful-retservo funkcianta sur antaŭ-agordita nuba kazo.
MLflow-modelo, kiel projekto, estas dosieruja strukturo. Ĝi inkluzivas agordan dosieron kaj, ĉi-foje, seriigitan modelartefakton prefere ol trejna kodo. Ĝi ankaŭ inkluzivas ĉi tiun aron de dependecoj por ripeteblo kiel projekto. Ĉi-foje, ni rigardos taksajn dependecojn en la kunteksto de Conda-medio.
Aldone, MLflow inkluzivas modelajn generaciajn ilojn por seriigi modelojn en MLflow-formato el gamo da popularaj kadroj. Fine, MLflow aldonas deplojojn, API-ojn por produkti kaj konekti ajnan MLflow-modelon al gamo da servoj, kaj ĉi tiuj API-oj estas alireblaj en Python, Java, R kaj CLI-formato.
Modeloj estas komponento kun norma strukturo por pakaj modeloj kiuj povas esti uzataj kaj komprenitaj per kontraŭfluaj iloj kiel konkludaj serviloj aŭ la Datbrikoj bata inferenca platformo. Ĉi tiu komponanto ŝparas horojn da laŭmenda kodo dum pakado de modelo por produktado.
La MLflow-Modelo estas normo por paki maŝinlernajn modelojn en diversaj formoj konataj kiel "gustoj". MLflow provizas multajn ilojn por helpi vin disfaldi diversajn specojn de modeloj. Ĉiu MLflow-Modelo estas konservita kiel dosierujo enhavanta arbitrajn dosierojn same kiel ML-modelan priskriban dosieron kun listo de la gustoj en kiuj ĝi povas esti uzata.
Ŝlosilo Elstaraĵoj
- Ĉiuj enkonstruitaj deplojiloj de MLflow ofertas plurajn "normajn" gustojn, kiel "Python-funkcion" guston, kiu klarigas kiel ruli la modelon kiel Python-funkcion.
- Ĉiu MLflow-Modelo konsistas el dosierujo enhavanta arbitrajn dosierojn, same kiel ML-modeldosieron ĉe la radiko de la dosierujo, kiu difinas la multajn gustojn de la modelo.
- Stokante modelon, MLflow permesas al vi specifi Conda medio-parametron kiu enhavas la dependecojn de la modelo. Se neniu Conda medio estas specifita, defaŭlta medio bazita sur la gusto de la modelo estas konstruita. Post tio, la medio Conda estas konservita en conda.yaml.
Por pliaj informoj, vi povas kontroli la oficialulon dokumentado.
4. MLflow Modela Registro
Modelregistro estas deponejo por lernitaj maŝinlernado (ML) modeloj. Model Registry konsistas el API-oj kaj ret-bazita aplikaĵo, kiu estas uzata por konservi modelojn en diversaj fazoj kiel teamo. Model Lineage, Model Versioning, Easy Stage Transition, kaj Annotation estas nur kelkaj el la kapabloj disponeblaj en Model Registry.
Modelregistro, krom la modeloj mem, enhavas informojn (metadatenoj) pri la datenoj kaj trejnadotaskoj uzataj por konstrui la modelon. Estas grave konservi trakon de ĉi tiuj postulataj enigaĵoj por krei genlinion por ML-modeloj. Ĉi-rilate, modelregistro funkcias simile al konvencia programaro versio kontrolo sistemoj (ekz., Git, SVN) kaj artefaktaj deponejoj (ekz., Artifactory, PyPI).
La Modela Registro estas kadro, kiu permesas al datumsciencistoj kaj maŝinlernado-inĝenieroj publikigi, testi, monitori, administri kaj distribui siajn modelojn por kunlaboro kun aliaj teamoj. Esence, la modela registro estas uzata post kiam vi finis vian testan fazon kaj pretas kunhavigi viajn trovojn kun la teamo kaj koncernatoj.
La MLflow Modela Registro provizas API kaj uzantinterfacon por administri viajn modelojn kaj ilian vivdaŭron de centra loko. Modelgenlinio, modelversiado, komentarioj kaj scentransiroj estas ĉiuj haveblaj tra la registro.
En MLflow, registrita modelo estas tiu kun unika nomo kaj metadatenoj, modelversioj, transiraj fazoj, kaj modelgenlinio. Unu aŭ pluraj modelversioj troveblas en registrita modelo. Nova modelo estas konsiderata versio 1 kiam ĝi estas registrita en la registro. La sekva versio estas aldonita al iu nova modelo kun la sama nomo.
Vi povas asigni unu paŝon al iu ajn modelversio iam ajn. Tamen, stadioj devas esti asignitaj sub la MLflow-fazoj kiuj estis formale precizigitaj, kiel ekzemple enscenigo, produktado, kaj arkivitaj. Modelversio povas esti transirita de unu stadio al alia.
MLflow permesas vin uzi markdown por komenti kaj la plej altan modelon kaj ĉiun specifan version. Vi povas inkluzivi priskribojn kaj aliajn taŭgajn informojn, kiel algoritmoj klarigoj, metodaro kaj datumaroj uzataj.
Ŝlosilo Elstaraĵoj
- Por aliri la modelregistron per la UI aŭ API kiam vi gastigas vian propran MLflow-servilon, vi devas uzi datumbazsubtenan backend-butikon.
- ModelRegistry ankaŭ povas esti alirita per la MLflow-modelgusto aŭ la MLflow Client Tracking API-interfaco. Vi povas, ekzemple, registri modelon dum MLflow-eksperimento aŭ post ĉiuj viaj eksperimentoj.
- Ne ĉiuj komencos trejni siajn modelojn per MLflow. Kiel rezulto, vi eble havas kelkajn modelojn trejnitajn antaŭ uzi MLflow. Prefere ol retrejni la modelojn, vi nur volas registri viajn konservitajn modelojn ĉe la Modela Registro.
Por pliaj informoj, vi povas kontroli la oficialulon dokumentado.
konkludo
MLflow estas bonega kaj konstante kreskanta ML-vivciklo-ilo. Vi povas uzi ĝin kune kun viaj nunaj iloj kaj platformoj.
Ĝi subtenas plurajn programlingvojn, inkluzive de Python, Java kaj R. Vi ankaŭ povas rapide spuri, konservi kaj kompari malsamajn modelajn versiojn danke al ĝia uzant-amika dezajno.
Provu MLflow kaj rakontu al ni vian sperton!
Lasi Respondon