Ikviens, kurš ir izmēģinājis mašīnmācības attīstību, saprot, cik tas ir grūti. Papildus standarta problēmām programmatūras izstrādē, mašīnmācīšanās (ML) izstrāde rada virkni papildu šķēršļu.
Ir pieejami simtiem atvērtā pirmkoda rīku, kas palīdz katrā ML dzīves cikla posmā, sākot no datu sagatavošanas līdz modeļu apmācībai.
Atšķirībā no tradicionālās programmatūras izstrādes, kad komandas izvēlas vienu rīku katram solim, ar ML parasti vēlaties izpētīt visus pieejamos rīkus (piemēram, algoritmu), lai redzētu, vai tas uzlabo rezultātus.
Rezultātā ML izstrādātājiem ir jāizmanto un jāizveido simtiem bibliotēku.
Mašīnmācīšanās algoritmi satur tūkstošiem pielāgojamu parametru, un ir grūti noteikt, kuri parametri, kods un dati tika izmantoti katrā eksperimentā, lai ģenerētu modeli, neatkarīgi no tā, vai strādājat viens vai komandā.
Bez pienācīgas uzraudzības komandām bieži ir grūti panākt, lai tas pats kods atkal darbotos. Neatkarīgi no tā, vai esat datu zinātnieks, kas nodod apmācību kodu inženierim ražošanas vajadzībām, vai arī atgriežaties pie iepriekšējā darba, lai diagnosticētu problēmu, ML darbplūsmas darbību atcelšana ir ļoti svarīga.
Modeļa pārvietošana uz ražošanu var būt sarežģīta daudzo izvietošanas metožu un izmantojamo vidi dēļ (piemēram, REST apkalpošana, pakešu secinājumi vai mobilās lietotnes). Nav vienotas metodes modeļu pārvietošanai no jebkuras bibliotēkas uz kādu no šiem rīkiem, un tādējādi katra jauna izvietošana rada risku.
Šo problēmu dēļ ir acīmredzams, ka ML izstrādei ir būtiski jāuzlabo, lai tā kļūtu tikpat stabila, paredzama un plaši izmantota kā tradicionālā programmatūras izstrāde.
ML izaicinājumi
- Ir daudz dažādu rīku. Ir pieejami simtiem programmatūras risinājumu, kas palīdz katrā mašīnmācīšanās dzīves cikla posmā, sākot no datu sagatavošanas līdz modeļu apmācībai. Turklāt atšķirībā no tradicionālās programmatūras izstrādes, kad komandas izvēlas vienu rīku katram solim mašīnmācībā (ML), jūs bieži vēlaties izpētīt visus pieejamos rīkus (piemēram, algoritmu), lai redzētu, vai tas uzlabo rezultātus. Rezultātā ML izstrādātājiem ir jāizmanto un jāizveido simtiem bibliotēku.
- Ir grūti izsekot eksperimentiem. Mašīnmācīšanās algoritmi satur tūkstošiem pielāgojamu parametru, un ir grūti noteikt, kuri parametri, kods un dati tika izmantoti katrā eksperimentā, lai ģenerētu modeli, neatkarīgi no tā, vai strādājat viens vai komandā.
- Ir grūti ieviest mašīnmācīšanos. Modeļa pārvietošana uz ražošanu var būt sarežģīta daudzo izvietošanas metožu un izmantojamo vidi dēļ (piemēram, REST apkalpošana, pakešu secinājumi vai mobilās lietotnes). Nav vienotas metodes modeļu pārvietošanai no jebkuras bibliotēkas uz kādu no šiem rīkiem. Tādējādi katra jauna izvietošana rada risku.
Kas ir MLflow?
MLflow ir atvērtā koda platforma mašīnmācības dzīves ciklam. Tas ir balstīts uz atvērtas saskarnes koncepciju, piedāvājot daudzas būtiskas abstrakcijas, kas ļauj sistēmā viegli integrēt pašreizējo infrastruktūru un mašīnmācīšanās algoritmus.
Tas nozīmē, ka, ja esat izstrādātājs, kurš vēlas izmantot MLflow, bet izmantojat neatbalstītu ietvaru, atvērtā saskarnes dizains ļauj salīdzinoši vienkārši integrēt šo sistēmu un sākt strādāt ar platformu. Praksē tas nozīmē, ka MLflow ir paredzēts darboties ar jebkuru mašīna mācīšanās bibliotēka vai valoda.
Turklāt MLflow veicina atkārtojamību, kas nozīmē, ka viens un tas pats apmācības vai ražošanas mašīnmācīšanās kods ir paredzēts darbam ar tādiem pašiem rezultātiem neatkarīgi no vides neatkarīgi no tā, vai tas ir mākonī, vietējā darbstacijā vai piezīmjdatorā.
Visbeidzot, MLflow ir izstrādāta mērogojamībai, tāpēc to var izmantot neliela datu zinātnieku komanda, kā arī liels uzņēmums ar simtiem mašīnmācības praktiķu.
MLflow ir saderīga ar jebkuru mašīnmācīšanās bibliotēku, algoritmu, izvietošanas rīku vai valodu. Tam ir arī šādas priekšrocības:
- Paredzēts darbam ar jebkuru mākoņpakalpojumu.
- Izmantojot Apache Spark, iegūstiet milzīgus datus.
- MLflow ir savietojams ar dažādām atvērtā koda mašīnmācīšanās sistēmām, tostarp Apache Spark, TensorFlow, un SciKit-Learn.
Ja jums jau ir kods, ar to var izmantot MLflow. Jūs pat varat kopīgot savu sistēmu un modeļus starp uzņēmumiem, jo tas tā ir atvērtais avots.
MLflow komponenti: kā tie darbojas?
MLflow ir bezmaksas un atvērtā koda platforma ML dzīves cikla pārvaldībai, kas ietver eksperimentēšanu, reproducējamību, izvietošanu un viena modeļa reģistru. Pašlaik MLflow ir četri komponenti:
1. MLflow izsekošana
Es sākšu ar MLflow izsekošanu. MLflow atbalsta dažādu būtisku koncepciju vākšanu, kas saistītas ar centralizētu apmācības metadatu izsekošanas repozitoriju. Pirmais jēdziens ir kritisku hiperparametru vai konfigurācijas pogu kolekcija, kas ietekmē modeļa veiktspēju. Izmantojot MLflow API un centralizētu izsekošanas pakalpojumu, tas viss var tikt saglabāts.
Lietotāji var arī ierakstīt veiktspējas datus, lai gūtu ieskatu par savu mašīnmācīšanās modeļu panākumiem. Turklāt, lai nodrošinātu atkārtojamību, MLflow ļauj lietotājiem reģistrēt konkrēto avota kodu, kas tika izmantots modeļa izveidošanai, kā arī tā versiju, cieši integrējot ar Git, lai katru modeli piesaistītu noteiktai commit hash.
MLflow var izmantot, lai reģistrētu artefaktus, kas ir jebkādi patvaļīgi faili, tostarp apmācības, testēšanas dati un reproducējamības modeļi.
Tas nozīmē, ka, ja esmu izstrādātājs, kurš tikko apmācījis modeli, es varu saglabāt to centralizētajā izsekošanas pakalpojumā, un kāds no maniem kolēģiem var to ielādēt vēlāk un vai nu turpināt apmācīt un eksperimentēt vai ražot modeli, lai apmierinātu konkrētu vajadzību. .
Palaižot mašīnmācīšanās kodu un pēc tam skatot rezultātus, izsekošana ir API, kas ļauj reģistrēt parametrus, koda versijas, metriku un izvades failus. Tas ir rakstīts Python, R un Java, kā arī citās valodās. Tas ir pieejams arī kā REST API, ko var izmantot, lai papildus tam izveidotu lietotnes.
Galvenās iezīmes
- Daudzi izstrādātāji izmanto MLflow savā lokālajā datorā, kur aizmugursistēmai un artefaktu krātuvei ir kopīgs direktorijs diskā.
- Daudzi lietotāji izmanto arī SQLite, ar SQLAlchemy saderīgu datu bāzi, lai palaistu MLflow savos lokālajos datoros.
- MLflow atbalsta arī izplatītās arhitektūras. Izsekošanas serveris, aizmugursistēmas veikals un artefaktu veikals tiek mitināti dažādos šajos serveros.
- Ja izpildi uzsāka MLflow projekts, tika izmantots git commit hash. MLflow Python, R, Java un REST API var izmantot, lai reģistrētu datus palaišanai.
Lai iegūtu vairāk informācijas, varat iepazīties ar oficiālo dokumentācija.
2. MLFlow projekti
Pēc tam, kad esam izpētījuši izsekošanas komponentus, es vēlētos runāt par MLflow projektiem, kas ir atkārtojama iesaiņojuma struktūra modeļu apmācības sesijām neatkarīgi no izpildes konteksta.
Uzņēmumi izmanto plašu mašīnmācīšanās apmācības tehnoloģiju klāstu, taču tie izmanto arī šos apmācības rīkus dažādos kontekstos. Piemēram, viņi var izpildīt savu apmācības kodu mākonī, vietējā datorā vai piezīmjdatorā.
Tas rada problēmu, ka mašīnmācības rezultātus ir grūti atkārtot. Bieži vien viens un tas pats identisks apmācības kods neizpilda vai nesniedz vienādus rezultātus divās atsevišķās vietās.
MLflow nodrošinātais risinājums ir autonoma apmācības koda projekta definīcija, kas ietver visu mašīnmācīšanās apmācības kodu, kā arī tā versiju bibliotēkas atkarības, iestatījumus un apmācības un pārbaudes datus.
MLflow nodrošina reproducējamību visos izpildes kontekstos, skaidri aprakstot visu mašīnmācīšanās apmācības procesa prasību kopumu. Tas tiek paveikts, instalējot visas šīs bibliotēkas un panākot to pašu sistēmas stāvokli, kurā darbojas kods.
MLflow projekts ir nekas vairāk kā direktorijs. Tas ir direktorijs, kurā ir iekļauts apmācības kods, bibliotēkas atkarības definīcija un citi apmācības sesijai nepieciešamie dati, kā arī šis izvēles konfigurācijas fails.
Šīs bibliotēkas prasības var definēt dažādos veidos. Lietotāji var, piemēram, nodrošināt YAML formatētu anaconda vides specifikāciju, lai uzskaitītu savas apmācības kodu bibliotēkas prasības. MLflow izpildīs apmācības kodu konteinerā. Šādā gadījumā tajos var iekļaut arī Docker konteineru.
Visbeidzot, MLflow ir komandrindas interfeiss (CLI) šo projektu palaišanai, kā arī Python un Java API. Šos projektus var palaist lietotāja lokālajā sistēmā, kā arī dažādos attālos iestatījumos, piemēram, Databricks darbu plānotājā un Kubernetes. MLflow projekti ļauj iepakot datu zinātnes kodu atkārtojamā un atkārtoti lietojamā veidā, galvenokārt pamatojoties uz standartiem.
Projektu komponents ietver API, kā arī komandrindas utilītas projektu pārvaldībai. Šīs iespējas garantē, ka projektus var savienot kopā, veidojot mašīnmācīšanās procesus.
Galvenās iezīmes
- MLflow atbalsta projektu vides, tostarp Docker konteinera vidi, Conda vidi un sistēmas vidi.
- Jebkuru Git repozitoriju vai lokālo direktoriju var uzskatīt par MLflow projektu; pēc noklusējuma; jūs varat izmantot jebkuru apvalku vai Python skripts direktorijā kā projekta ievades punkts.
- Atkarības, kas nav saistītas ar Python, piemēram, Java bibliotēkas, var tvert, izmantojot Docker konteinerus.
- Varat iegūt lielāku kontroli pār MLflow projektu, pievienojot projekta failu projekta saknes direktorijam, kas ir YAML sintakses teksta fails.
Lai iegūtu vairāk informācijas, varat iepazīties ar oficiālo dokumentācija.
3. MLflow modeļi
Tagad es vēlētos apspriest MLflow modeļus — vispārējas nozīmes modeļu formātu, kas atbalsta plašu ražošanas kontekstu klāstu. MLflow modeļu iemesls tagad ir diezgan līdzīgs projektiem.
Atkal mēs redzam, ka modeļus var ģenerēt, izmantojot plašu rīku klāstu, taču tos var arī izveidot vai izvietot daudzās situācijās, atšķirībā no apmācības vides.
Šie iestatījumi ietver rīkus reāllaika apkalpošanai, piemēram, Kubernetes vai Amazon SageMaker, kā arī straumēšanu un pakešu vērtēšanu, piemēram, Spark. Turklāt daži uzņēmumi var izvēlēties izvietot modeļus kā RESTful tīmekļa pakalpojumu, kas darbojas iepriekš konfigurētā mākoņa instancē.
MLflow modelis, tāpat kā projekts, ir direktoriju struktūra. Tas ietver konfigurācijas failu un šoreiz sērijveida modeļa artefaktu, nevis apmācības kodu. Tas ietver arī šo atkārtojamības atkarību kopu kā projektu. Šoreiz mēs apskatīsim novērtējuma atkarības Conda vides kontekstā.
Turklāt MLflow ietver modeļu ģenerēšanas rīkus modeļu serializēšanai MLflow formātā no vairākiem populāriem ietvariem. Visbeidzot, MLflow pievieno izvietošanas, API jebkura MLflow modeļa ražošanai un savienošanai ar pakalpojumu klāstu, un šīs API ir pieejamas Python, Java, R un CLI formātā.
Modeļi ir komponents ar standarta struktūru iesaiņojuma modeļiem, ko var izmantot un saprast pakārtotajiem rīkiem, piemēram, secinājumiem serveriem vai Datu ķieģeļi partijas secinājumu platforma. Šis komponents ietaupa stundas pēc pasūtījuma koda, iesaiņojot modeli ražošanai.
MLflow modelis ir standarts mašīnmācīšanās modeļu iepakošanai dažādās formās, kas pazīstamas kā “garšas”. MLflow nodrošina daudz rīku, lai palīdzētu jums izvietot dažāda veida modeļus. Katrs MLflow modelis tiek glabāts kā direktorijs, kurā ir patvaļīgi faili, kā arī ML modeļa deskriptora fails ar garšu sarakstu, kurā to var izmantot.
Galvenās iezīmes
- Visi MLflow iebūvētie izvietošanas rīki piedāvā vairākus “standarta” variantus, piemēram, Python funkciju, kas izskaidro, kā palaist modeli kā Python funkciju.
- Katrs MLflow modelis sastāv no direktorija, kurā ir patvaļīgi faili, kā arī ML modeļa faila direktorija saknē, kas nosaka modeļa daudzās garšas.
- Saglabājot modeli, MLflow ļauj norādīt Conda vides parametru, kas satur modeļa atkarības. Ja Conda vide nav norādīta, tiek izveidota noklusējuma vide, kuras pamatā ir modeļa garša. Pēc tam Conda vide tiek saglabāta conda.yaml.
Lai iegūtu vairāk informācijas, varat iepazīties ar oficiālo dokumentācija.
4. MLflow modeļu reģistrs
Modeļu reģistrs ir apgūtu mašīnmācīšanās (ML) modeļu krātuve. Modeļu reģistrs sastāv no API un tīmekļa lietojumprogrammas, kas tiek izmantota modeļu uzturēšanai dažādās fāzēs kā komanda. Modeļu līnija, modeļa versiju noteikšana, vienkārša stadijas pāreja un anotācija ir tikai dažas no iespējām, kas pieejamas modeļu reģistrā.
Modeļu reģistrs papildus pašiem modeļiem satur informāciju (metadatus) par datiem un apmācības uzdevumiem, kas izmantoti modeļa konstruēšanai. Ir ļoti svarīgi sekot līdzi šīm nepieciešamajām ievadēm, lai izveidotu ML modeļu izcelsmi. Šajā sakarā modeļa reģistrs darbojas līdzīgi kā parastā programmatūra versijas kontrole sistēmas (piemēram, Git, SVN) un artefaktu krātuves (piemēram, Artifactory, PyPI).
Modeļu reģistrs ir sistēma, kas ļauj datu zinātniekiem un mašīnmācīšanās inženieriem publicēt, pārbaudīt, uzraudzīt, pārvaldīt un izplatīt savus modeļus sadarbībai ar citām komandām. Būtībā modeļu reģistrs tiek izmantots, kad esat pabeidzis testēšanas posmu un esat gatavs dalīties savos atklājumos ar komandu un ieinteresētajām personām.
MLflow modeļu reģistrs nodrošina API un lietotāja interfeisu, lai pārvaldītu modeļus un to kalpošanas laiku no centrālās atrašanās vietas. Modeļu izcelsme, modeļu versijas, anotācijas un posmu pārejas ir pieejamas reģistrā.
Programmā MLflow reģistrēts modelis ir modelis ar unikālu nosaukumu un metadatiem, modeļa versijām, pārejas fāzēm un modeļa izcelsmi. Reģistrētajā modelī var atrast vienu vai vairākas modeļa versijas. Jauns modelis tiek uzskatīts par 1. versiju, kad tas ir reģistrēts reģistrā. Katram jaunam modelim ar tādu pašu nosaukumu tiek pievienota šāda versija.
Jebkurā laikā jebkurai modeļa versijai varat piešķirt vienu soli. Tomēr posmi ir jāpiešķir formāli norādītajām MLflow fāzēm, piemēram, iestudēšana, ražošana un arhivēšana. Modeļa versiju var pāriet no viena posma uz citu.
MLflow ļauj izmantot atzīmes, lai anotētu gan augstākā līmeņa modeli, gan katru konkrēto versiju. Varat iekļaut aprakstus, kā arī citu būtisku informāciju, piemēram, algoritmu skaidrojumus, metodoloģiju un izmantotās datu kopas.
Galvenās iezīmes
- Lai piekļūtu modeļu reģistram, izmantojot lietotāja interfeisu vai API, mitinot savu MLflow serveri, ir jāizmanto ar datubāzi nodrošināts aizmugursistēmas veikals.
- Modeļu reģistram var piekļūt arī, izmantojot MLflow modeļa versiju vai MLflow Client Tracking API saskarni. Varat, piemēram, reģistrēt modeli MLflow eksperimenta izpildes laikā vai pēc visu eksperimentu izpildes.
- Ne visi sāks apmācīt savus modeļus, izmantojot MLflow. Tāpēc pirms MLflow izmantošanas daži modeļi var tikt apmācīti. Tā vietā, lai pārkvalificētu modeļus, vienkārši vēlaties reģistrēt savus saglabātos modeļus modeļu reģistrā.
Lai iegūtu vairāk informācijas, varat iepazīties ar oficiālo dokumentācija.
Secinājumi
MLflow ir lielisks un pastāvīgi augošs ML dzīves cikla rīks. Varat to izmantot kopā ar saviem pašreizējiem rīkiem un platformām.
Tā atbalsta vairākas programmēšanas valodas, tostarp Python, Java un R. Pateicoties lietotājam draudzīgajam dizainam, varat arī ātri izsekot, saglabāt un salīdzināt dažādas modeļu versijas.
Izmēģiniet MLflow un pastāstiet mums par savu pieredzi!
Atstāj atbildi