Tagħlim Industrijali tal-Magni: 10 Prinċipji tad-Disinn

Tagħlim Industrijali tal-Magni: 10 Prinċipji tad-Disinn

Illum il-ġurnata, jinħolqu servizzi ġodda, applikazzjonijiet u programmi oħra importanti kuljum li jagħmluha possibbli li jinħolqu affarijiet inkredibbli: minn softwer għall-kontroll ta 'rokit SpaceX għal interazzjoni ma' kitla fil-kamra li jmiss permezz ta 'smartphone.

U, xi kultant, kull programmatur novizzi, kemm jekk huwa startupper passjonat jew Full Stack ordinarju jew Xjentist tad-Data, illum jew għada jasal għar-realizzazzjoni li hemm ċerti regoli għall-ipprogrammar u l-ħolqien ta 'softwer li jissimplifikaw ħafna l-ħajja.

F'dan l-artikolu, ser niddeskrivi fil-qosor 10 prinċipji ta 'kif nipprogrammaw it-tagħlim tal-magni industrijali sabiex ikun jista' jiġi integrat faċilment f'applikazzjoni/servizz, ibbażat fuq il-metodoloġija tal-App bi fattur 12. issuġġerit mit-tim Heroku. L-inizjattiva tiegħi hija li żżid l-għarfien ta 'din it-teknika, li tista' tgħin ħafna żviluppaturi u nies tax-xjenza tad-dejta.

Dan l-artikolu huwa prologu għal sensiela ta' artikli dwar it-Tagħlim tal-Magni industrijali. Fihom ser nitkellem aktar dwar kif fil-fatt tagħmel mudell u tniedih fil-produzzjoni, toħloq API għaliha, kif ukoll eżempji minn diversi oqsma u kumpaniji li għandhom ML inkorporat fis-sistemi tagħhom.

Prinċipju 1: Bażi ta 'kodiċi waħda

Xi programmaturi fl-ewwel stadji, mill-għażż biex insemmu (jew għal xi raġuni tagħhom stess), jinsew dwar Git. Huma jew jinsew kompletament il-kelma, jiġifieri, jitfgħu fajls lil xulxin fil-drive/sempliċement jarmu test/jibgħatu mill-ħamiem, jew ma jaħsbux fil-fluss tax-xogħol tagħhom, u jimpenjaw lil kull wieħed għall-fergħa tagħhom stess, u mbagħad għall- kaptan.

Dan il-prinċipju jgħid: għandhom codebase wieħed u bosta skjeramenti.

Git jista 'jintuża kemm fil-produzzjoni kif ukoll fir-riċerka u l-iżvilupp (R&D), li fihom ma jintużax daqshekk spiss.

Pereżempju, fil-fażi ta' R&D tista' tħalli impenji b'metodi u mudelli differenti ta' pproċessar ta' data, sabiex imbagħad tagħżel l-aħjar waħda u faċilment tkompli taħdem magħha.

It-tieni nett, fil-produzzjoni din hija ħaġa insostitwibbli - ser ikollok bżonn tħares kontinwament lejn kif jinbidel il-kodiċi tiegħek u tkun taf liema mudell ipproduċa l-aħjar riżultati, liema kodiċi ħadem fl-aħħar u x'ġara li wassal biex tieqaf taħdem jew tibda tipproduċi riżultati żbaljati. . Ghalhekk huma l-kommessi!

Tista 'wkoll toħloq pakkett tal-proġett tiegħek, billi tpoġġih, pereżempju, fuq Gemfury, u mbagħad sempliċement timporta funzjonijiet minnha għal proġetti oħra, sabiex ma tiktebhomx mill-ġdid 1000 darba, iżda aktar dwar dan aktar tard.

Prinċipju 2: Iddikjara u iżola b'mod ċar id-dipendenzi

Kull proġett għandu libreriji differenti li timporta minn barra sabiex tapplikahom x'imkien. Kemm jekk huma libreriji Python, jew libreriji ta' lingwi oħra għal diversi skopijiet, jew għodod tas-sistema - il-kompitu tiegħek huwa:

  • Iddikjara b'mod ċar id-dipendenzi, jiġifieri, fajl li jkun fih il-libreriji, l-għodod, u l-verżjonijiet tagħhom kollha li jintużaw fil-proġett tiegħek u li jridu jiġu installati (per eżempju, f'Python dan jista' jsir billi tuża Pipfile jew requirements.txt. A rabta li tippermetti tajjeb li tifhem: realpython.com/pipenv-guide)
  • Iżola d-dipendenzi speċifikament għall-programm tiegħek waqt l-iżvilupp. Ma tridx kontinwament tibdel il-verżjonijiet u terġa' tinstalla, pereżempju, Tensorflow?

B'dan il-mod, l-iżviluppaturi li se jingħaqdu mat-tim tiegħek fil-futur ikunu jistgħu jsiru familjari malajr mal-libreriji u l-verżjonijiet tagħhom li jintużaw fil-proġett tiegħek, u jkollok ukoll l-opportunità li timmaniġġja l-verżjonijiet u l-libreriji nfushom installati għal qasam speċifiku. proġett, li jgħinek tevita l-inkompatibilità tal-libreriji jew il-verżjonijiet tagħhom.

L-applikazzjoni tiegħek m'għandhiex tistrieħ ukoll fuq għodod tas-sistema li jistgħu jiġu installati fuq OS speċifiku. Dawn l-għodod għandhom jiġu ddikjarati wkoll fil-manifest tad-dipendenzi. Dan huwa meħtieġ sabiex jiġu evitati sitwazzjonijiet fejn il-verżjoni tal-għodod (kif ukoll id-disponibbiltà tagħhom) ma taqbilx mal-għodod tas-sistema ta 'OS partikolari.

Għalhekk, anki jekk curl jista 'jintuża fuq kważi l-kompjuters kollha, xorta għandek tiddikjarah f'dipendenzi, peress li meta temigra għal pjattaforma oħra jista' ma jkunx hemm jew il-verżjoni ma tkunx dik li oriġinarjament kellha bżonn.

Pereżempju, requirements.txt tiegħek jista' jidher bħal dan:

# Model Building Requirements
numpy>=1.18.1,<1.19.0
pandas>=0.25.3,<0.26.0
scikit-learn>=0.22.1,<0.23.0
joblib>=0.14.1,<0.15.0

# testing requirements
pytest>=5.3.2,<6.0.0

# packaging
setuptools>=41.4.0,<42.0.0
wheel>=0.33.6,<0.34.0

# fetching datasets
kaggle>=1.5.6,<1.6.0

Prinċipju 3: Konfigurazzjonijiet

Ħafna semgħu stejjer ta’ diversi ġuvintur żviluppaturi li aċċidentalment itellgħu kodiċi fuq GitHub f’repożitorji pubbliċi b’passwords u ċwievet oħra minn AWS, u jqumu l-għada b’dejn ta’ $6000, jew saħansitra $50000.

Tagħlim Industrijali tal-Magni: 10 Prinċipji tad-Disinn

Naturalment, dawn il-każijiet huma estremi, iżda sinifikanti ħafna. Jekk taħżen il-kredenzjali tiegħek jew data oħra meħtieġa għall-konfigurazzjoni ġewwa l-kodiċi, qed tagħmel żball, u naħseb li m'hemmx għalfejn tispjega għaliex.

Alternattiva għal dan hija li taħżen konfigurazzjonijiet f'varjabbli ambjentali. Tista' taqra aktar dwar il-varjabbli ambjentali hawn.

Eżempji ta' dejta li hija tipikament maħżuna f'varjabbli ambjentali:

  • Ismijiet tad-dominju
  • URLs/URI tal-API
  • Ċwievet pubbliċi u privati
  • Kuntatti (posta, telefowns, eċċ.)

Dan il-mod m'għandekx għalfejn tibdel il-kodiċi kontinwament jekk il-varjabbli tal-konfigurazzjoni tiegħek jinbidlu. Dan jgħinek tiffranka ħin, sforz u flus.

Pereżempju, jekk tuża l-API Kaggle biex twettaq testijiet (pereżempju, niżżel is-softwer u tmexxi l-mudell minnu biex tittestja meta tħaddem li l-mudell jaħdem tajjeb), allura ċwievet privati ​​minn Kaggle, bħal KAGGLE_USERNAME u KAGGLE_KEY, għandhom ikunu maħżuna fil-varjabbli ambjentali.

Prinċipju 4: Servizzi ta' Partijiet Terzi

L-idea hawnhekk hija li jinħoloq il-programm b'tali mod li ma jkun hemm l-ebda differenza bejn ir-riżorsi lokali u ta 'partijiet terzi f'termini ta' kodiċi. Per eżempju, tista 'tqabbad kemm MySQL lokali kif ukoll dawk ta' partijiet terzi. L-istess jgħodd għal diversi APIs bħal Google Maps jew Twitter API.

Sabiex tiddiżattiva servizz ta 'parti terza jew tikkonnettja ieħor, għandek bżonn biss li tibdel iċ-ċwievet fil-konfigurazzjoni fil-varjabbli ambjentali, li tkellimt dwarhom fil-paragrafu ta' hawn fuq.

Allura, pereżempju, minflok ma tispeċifika t-triq għal fajls b'settijiet tad-dejta ġewwa l-kodiċi kull darba, huwa aħjar li tuża l-librerija pathlib u tiddikjara t-triq għas-settijiet tad-dejta f'config.py, sabiex irrispettivament minn liema servizz tuża (għal eżempju, CircleCI), il-programm kien kapaċi jsib il-mogħdija għas-settijiet tad-dejta b'kont meħud tal-istruttura tas-sistema l-ġdida tal-fajls fis-servizz il-ġdid.

Prinċipju 5. Ibni, rilaxx, runtime

Ħafna nies fix-Xjenza tad-Data jsibuha utli biex itejbu l-ħiliet tagħhom tal-kitba tas-softwer. Jekk irridu li l-programm tagħna jikkraxxja kemm jista’ jkun rari u jaħdem mingħajr fallimenti għall-itwal żmien possibbli, irridu naqsmu l-proċess tar-rilaxx ta’ verżjoni ġdida fi 3 stadji:

  1. Stadju assemblaġġi. Int tittrasforma l-bare code tiegħek b'riżorsi individwali f'hekk imsejjaħ pakkett li fih il-kodiċi u d-dejta kollha meħtieġa. Dan il-pakkett jissejjaħ assemblaġġ.
  2. Stadju jeħilsu — hawn aħna nikkonnettjaw il-konfigurazzjoni tagħna mal-assemblaġġ, li mingħajrha ma nkunux nistgħu nirrilaxxaw il-programm tagħna. Issa dan huwa rilaxx kompletament lest għat-tnedija.
  3. Wara jiġi l-istadju twettiq. Hawnhekk aħna nirrilaxxaw l-applikazzjoni billi nħaddmu l-proċessi meħtieġa mir-rilaxx tagħna.

Sistema bħal din għar-rilaxx ta 'verżjonijiet ġodda ta' mudell jew il-pipeline kollu tippermettilek tissepara r-rwoli bejn amministraturi u żviluppaturi, tippermettilek issegwi verżjonijiet u tipprevjeni waqfiet mhux mixtieqa tal-programm.

Għall-kompitu tar-rilaxx, inħolqu ħafna servizzi differenti li fihom tista 'tikteb proċessi biex tmexxi lilek innifsek f'fajl .yml (per eżempju, f'CircleCI dan huwa config.yml biex jappoġġja l-proċess innifsu). Wheely huwa kbir fil-ħolqien ta 'pakketti għal proġetti.

Tista 'toħloq pakketti b'verżjonijiet differenti tal-mudell tat-tagħlim tal-magni tiegħek, u mbagħad tippakkjahom u tirreferi għall-pakketti meħtieġa u l-verżjonijiet tagħhom biex tuża l-funzjonijiet li ktibt minn hemm. Dan jgħinek toħloq API għall-mudell tiegħek, u l-pakkett tiegħek jista 'jiġi ospitat fuq Gemfury, pereżempju.

Prinċipju 6. Mexxi l-mudell tiegħek bħala proċess wieħed jew aktar

Barra minn hekk, il-proċessi m'għandux ikollhom dejta kondiviża. Jiġifieri, il-proċessi għandhom jeżistu separatament, u kull tip ta 'dejta trid teżisti separatament, pereżempju, fuq servizzi ta' partijiet terzi bħal MySQL jew oħrajn, skont dak li għandek bżonn.

Jiġifieri, żgur ma jaqbilx li taħżen id-dejta ġewwa s-sistema tal-fajl tal-proċess, inkella dan jista 'jwassal għall-ikklerjar ta' din id-dejta matul ir-rilaxx/bidla li jmiss tal-konfigurazzjonijiet jew it-trasferiment tas-sistema li fuqha jaħdem il-programm.

Iżda hemm eċċezzjoni: għal proġetti ta 'tagħlim tal-magni, tista' taħżen cache ta 'libreriji sabiex ma terġax tinstallahom kull darba li tniedi verżjoni ġdida, jekk ma jkunu saru l-ebda libreriji addizzjonali jew xi tibdiliet fil-verżjonijiet tagħhom. B'dan il-mod, tnaqqas iż-żmien li tieħu biex tniedi l-mudell tiegħek fl-industrija.

Biex tmexxi l-mudell bħala diversi proċessi, tista 'toħloq fajl .yml li fih tispeċifika l-proċessi meħtieġa u s-sekwenza tagħhom.

Prinċipju 7: Riċiklabbiltà

Il-proċessi li jaħdmu fl-applikazzjoni mudell tiegħek għandhom ikunu faċli biex jibdew u jitwaqqfu. Għalhekk, dan jippermettilek li tiskjera malajr bidliet fil-kodiċi, bidliet fil-konfigurazzjoni, tiskala malajr u b'mod flessibbli, u tevita ħsarat possibbli tal-verżjoni tax-xogħol.

Jiġifieri, il-proċess tiegħek bil-mudell għandu:

  • Minimizza l-ħin tal-istartjar. Idealment, il-ħin tal-istartjar (mill-mument li nħareġ il-kmand tal-istartjar sal-mument li l-proċess jibda jaħdem) m'għandux ikun aktar minn ftit sekondi. Il-caching tal-librerija, deskritt hawn fuq, huwa teknika waħda biex jitnaqqas il-ħin tal-istartjar.
  • Tmiem b'mod korrett. Jiġifieri, is-smigħ fuq il-port tas-servizz huwa attwalment sospiż, u talbiet ġodda sottomessi lil dan il-port mhux se jiġu pproċessati. Hawnhekk jew trid twaqqaf komunikazzjoni tajba mal-inġiniera DevOps, jew tifhem kif taħdem lilek innifsek (preferibbilment, ovvjament, din tal-aħħar, iżda l-komunikazzjoni għandha dejjem tinżamm, fi kwalunkwe proġett!)

Prinċipju 8: Skjerament/Integrazzjoni Kontinwi

Ħafna kumpaniji jużaw separazzjoni bejn it-timijiet tal-iżvilupp tal-applikazzjoni u l-iskjerament (li jagħmlu l-applikazzjoni disponibbli għall-utenti finali). Dan jista 'jnaqqas ħafna l-iżvilupp tas-softwer u l-progress fit-titjib tiegħu. Jħassru wkoll il-kultura DevOps, fejn l-iżvilupp u l-integrazzjoni huma, bejn wieħed u ieħor, magħquda.

Għalhekk, dan il-prinċipju jgħid li l-ambjent tal-iżvilupp tiegħek għandu jkun qrib kemm jista 'jkun tal-ambjent tal-produzzjoni tiegħek.

Dan se jippermetti:

  1. Naqqas il-ħin ta 'rilaxx b'għexieren ta' drabi
  2. Naqqas in-numru ta 'żbalji minħabba l-inkompatibilità tal-kodiċi.
  3. Dan inaqqas ukoll il-piż tax-xogħol fuq il-persunal, peress li l-iżviluppaturi u n-nies li qed jużaw l-applikazzjoni issa huma tim wieħed.

Għodod li jippermettulek taħdem ma 'dan huma CircleCI, Travis CI, GitLab CI u oħrajn.

Tista 'malajr tagħmel żidiet mal-mudell, taġġornah, u tniedih immedjatament, filwaqt li jkun faċli, f'każ ta' fallimenti, li terġa 'lura malajr ħafna għall-verżjoni tax-xogħol, sabiex l-utent aħħari lanqas biss jinduna bih. Dan jista 'jsir speċjalment faċilment u malajr jekk għandek testijiet tajbin.

Minimizza d-differenzi!!!

Prinċipju 9. Zkuk tiegħek

Zkuk (jew "Zkuk") huma avvenimenti, ġeneralment irreġistrati f'format ta' test, li jseħħu fl-applikazzjoni (fluss ta' avvenimenti). Eżempju sempliċi: "2020-02-02 - livell tas-sistema - isem tal-proċess." Huma ddisinjati sabiex l-iżviluppatur jista 'litteralment jara x'inhu jiġri meta l-programm ikun qed jaħdem. Huwa jara l-progress tal-proċessi u jifhem jekk hux kif maħsub l-iżviluppatur innifsu.

Dan il-prinċipju jiddikjara li m'għandekx taħżen ir-zkuk tiegħek ġewwa s-sistema tal-fajls tiegħek - għandek sempliċement "output" lill-iskrin, pereżempju, tagħmel dan fuq l-output standard tas-sistema. U b'dan il-mod se jkun possibbli li jiġi mmonitorjat il-fluss fit-terminal waqt l-iżvilupp.

Dan ifisser li m'hemm l-ebda ħtieġa li jiġu ffrankati zkuk? Mhux ovvja li le. L-applikazzjoni tiegħek m'għandhiex tagħmel dan—ħalli f'idejn servizzi ta' partijiet terzi. L-applikazzjoni tiegħek tista 'biss tibgħat zkuk għal fajl jew terminal speċifiku għal wiri f'ħin reali, jew tibgħatha lil sistema ta' ħażna ta 'dejta għal skopijiet ġenerali (bħal Hadoop). L-applikazzjoni tiegħek nnifisha m'għandhiex taħżen jew tinteraġixxi ma' zkuk.

Prinċipju 10. Test!

Għat-tagħlim tal-magni industrijali, din il-fażi hija estremament importanti, peress li trid tifhem li l-mudell jaħdem b'mod korrett u jipproduċi dak li ridt.

It-testijiet jistgħu jinħolqu bl-użu ta 'pytest, u ttestjati permezz ta' sett ta 'dejta żgħir jekk għandek kompitu ta' rigressjoni/klassifikazzjoni.

Tinsiex issettja l-istess żerriegħa għal mudelli ta 'tagħlim fil-fond sabiex ma jipproduċux riżultati differenti kontinwament.

Din kienet deskrizzjoni qasira tal-10 prinċipji, u, ovvjament, huwa diffiċli li tużahom mingħajr ma tipprova u tara kif jaħdmu, għalhekk dan l-artikolu huwa biss prologu għal serje ta 'artikoli interessanti li fihom ser niżvela kif toħloq. mudelli industrijali ta 'tagħlim tal-magni, kif nintegrawhom fis-sistemi, u kif dawn il-prinċipji jistgħu jagħmlu l-ħajja aktar faċli għalina lkoll.

Se nipprova wkoll nuża prinċipji friski li kulħadd jista’ jħalli fil-kummenti jekk irid.

Sors: www.habr.com

Żid kumment