Ări eri suurustes toimub iga pĂ€ev ideede ja kohtumiste vahetus, et arutada, milliseid protsesse saaks automatiseerida. Kuid peale selle, et mudeli loomine vĂ”ib vĂ”tta palju aega, tuleb seda hinnata ja kontrollida, et saadud tulemus ei oleks juhuslik. PĂ€rast juurutamist tuleb igat mudelit jĂ€lgida ning perioodiliselt kontrollida.
Need kĂ”ik on etapid, mis tuleb lĂ€bida igas ettevĂ”ttes, sĂ”ltumata selle suurusest. Kui rÀÀgime Sberbanki ulatusest ja pĂ€randist, suureneb peene seadistamise arv kordi. 2019. aasta lĂ”puks kasutati Sberis juba enam kui 2000 mudelit. Lihtsalt mudeli vĂ€ljatöötamine ei ole piisav; tuleb integreeruda tööstuslike sĂŒsteemidega, arendada andmesildu mudelite loomiseks ning tagada mudeli töö kontroll klastris.
Meie meeskond arendab platvormi Sber.DS. See vĂ”imaldab lahendada masinĂ”ppe ĂŒlesandeid, kiirendab hĂŒpoteeside kontrollimise protsessi ning lihtsustab mudelite arendamist ja valideerimist, samuti kontrollib mudeli tööd PROMis.
Kuna ma ei taha teie ootusi petta, tahaksin eelnevalt öelda, et see postitus on sissejuhatav ning platvormi Sber.DS struktuurist rÀÀgitakse esmalt. Mudeli elutsĂŒklist alates loomisest kuni juurutamiseni rÀÀgime eraldi.
Sber.DS koosneb mitmetest komponentidest, milleks on peamised raamatukogu, arendussĂŒsteem ja mudelite tĂ€itmise sĂŒsteem.

Raamatukogu kontrolib mudeli eluiga idee tekkimisest kuni juurutamiseni PROMis, jÀlgimise seadistamiseni ja kasutusest kÔrvaldamiseni. Raamatukogu paljusid vÔimalusi dikteerivad regulatiivsed reeglid, nÀiteks aruandlus ja koolitus- ja valideerimisvalimite sÀilitamine. Tegelikult on see meie mudelite register.
ArendussĂŒsteem on mĂ”eldud mudelite ja valideerimismeetodite visuaalseks vĂ€ljatöötamiseks. VĂ€ljatöötatud mudelid lĂ€bivad esialgse valideerimise ning edastatakse tĂ€itmise sĂŒsteemi oma Ă€ritegevuse funktsioonide tĂ€itmiseks. Samuti vĂ”ib tĂ€itmise sĂŒsteemis mudel minna jĂ€lgimisele, et perioodiliselt kĂ€ivitada valideerimismeetodeid oma töö kontrollimiseks.
SĂŒsteemis on mitu erinevat sĂ”lme. Ăhed on mĂ”eldud erinevate andmeallikate ĂŒhendamiseks, teised aga lĂ€hteteabe transformeerimiseks ja selle rikastamiseks (markeerimiseks). On palju sĂ”lmi, mis aitavad luua erinevaid mudeleid ja neid valideerida. Arendaja saab laadida andmeid mistahes allikatest, neid töödelda, filtreerida, vaadata vaheandmeid ja jagada neid osadeks.
Platvorm sisaldab ka valmis mooduleid, mida saab projektialale lohistada. KĂ”ik toimingud tehakse visualiseeritud liidese kaudu. Tegelikult saab ĂŒlesande lahendada ilma ĂŒhegi koodijooneta.
Kui sisseehitatud vĂ”imalustest ei piisa, siis annab sĂŒsteem vĂ”imaluse kiiresti luua oma mooduleid. Oleme loonud integreeritud arenduse reĆŸiimi pĂ”hjal neile, kes loovad uusi mooduleid ânullistâ.

Sber.DS arhitektuur pĂ”hineb mikroteenustel. Mikroteenuste mÀÀratlemise kohta on palju arvamusi. MĂ”ned arvavad, et piisab monolĂŒĂŒtilise koodi jagamisest osadeks, kuid nad kasutavad siiski ĂŒhte ja sama andmebaasi. Meie mikroteenused peavad suhtlema ĂŒksteisega ainult REST API kaudu. Otse andmebaasile ei ole mingit lĂŒket.
PĂŒĂŒame, et teenused ei muutuks liiga suurteks ja kohmakateks: ĂŒks eksemplar ei tohi kasutada rohkem kui 4-8 gigabaiti töömĂ€lu ja peab vĂ”imaldama horisontaalset skaleerimist, kĂ€ivitades uusi eksemplare. Iga teenus suhtleb teistega ainult REST API kaudu (). Teenuse eest vastutav meeskond peab sĂ€ilitama API tagasipöördumise ĂŒhilduvuse kuni viimase kliendini, kes seda kasutab.
Rakenduse tuum on kirjutatud Java-s, kasutades Spring Framework'i. Lahendus projekteeriti algselt kiireks juurutamiseks pilvinfra, seega on rakendus ehitatud konteineriseerimissĂŒsteemi pĂ”hjal (). Platvorm areneb pidevalt, nii Ă€rifunktsionaalsuse suurendamise (uued konektorid, AutoML) kui ka tehnoloogilise efektiivsuse osas.
Ăks meie platvormi «nĂ€ituse» omadusi on see, et me saame kĂ€ivitada visuaalses liideses vĂ€lja töötatud koodi Sberbanki mudelide tĂ€itmissĂŒsteemides. Praegu on neid juba kaks: ĂŒks Hadoopis, teine â OpenShiftis (Docker). Me ei jÀÀ siin peatuma, vaid loome integreerimisvorme koodi kĂ€itamiseks igasugustes infrastruktuurides, sealhulgas kohapeal ja pilves. Seoses Sberbanki ökosĂŒsteemi tĂ”husate integreerimisvĂ”imalustega plaanime samuti toetada olemasolevate tĂ€itmisvormide kasutamist. Tulevikus saab lahendust paindlikult integreerida «karbist» igasse organisatsiooni maastikku.
Need, kes on kunagi proovinud toetada lahendust, mis kĂ€ivitab Pythonit Hadoopis PROMil, teavad, et ei piisa lihtsalt kasutaja Python keskkonna ette valmistamisest ja kehtestamisest iga andmepunkti jaoks. Suur hulk C/C++ teeke, mida masinĂ”ppe jaoks kasutatakse Python modulis, ei lase teil rahulikult magada. Peate meeles pidama pakettide vĂ€rskendamist uute teekide vĂ”i serverite lisamisel, sĂ€ilitades samas ĂŒhilduvuse juba rakendatud mudelikoodiga.
On mitmeid lĂ€henemisviise, kuidas seda teha. NĂ€iteks ette valmistada mĂ”ned sageli kasutatavad teegid ja sisestada need PROMi. Cloudera Hadoopi distributsioonis kasutatakse selleks tavaliselt . Samuti on Hadoopis nĂŒĂŒd vĂ”imalik kĂ€ivitada -konteinereid. MĂ”nedes lihtsates juhtumites saab koodi tarnida koos pakiga .
Pank lĂ€heneb tĂ”siselt kolmandate osapoolte koodi kĂ€itamise turvalisusele, seega kasutame maksimaalselt uusi Linuxi tuuma vĂ”imalusi, kus isoleeritud keskkonnas kĂ€ivitatud protsessile , saab piirata nĂ€iteks juurdepÀÀsu vĂ”rku ja lokaalsesse ketasse, mis vĂ€hendab oluliselt pahatahtliku koodi vĂ”imalusi. Iga osakonna andmepiirkonnad on kaitstud ja ligipÀÀsetavad ainult nende andmete omanikele. Platvorm tagab, et andmed ĂŒhest piirkonnast saavad teise alasse liikuda ainult lĂ€bi andmete avaldamise protsessi, mille kontroll toimub kĂ”igil etappidel alates ligipÀÀsust allikatele kuni andmete viimisega sihtkohta.

Sel aastal plaanime lÔpetada MVP kÀivitamise mudelite kohta, mis on kirjutatud Pythonis/R/Java Hadoopis. Oleme endale seadnud ambitsioonika eesmÀrgi Ôppida kÀivitama igasuguseid kasutaja keskkondi Hadoopis, et mitte piirata meie platvormi kasutajate vÔimalusi.
Lisaks selgus, et paljudel DS-spetsialistidel on suurepĂ€rased teadmatuse ja statistika teadmised, nad loovad suurepĂ€raseid mudeleid, kuid ei tunne vĂ€ga hĂ€sti suurandmete transformatsioone ning vajavad meie andmeinseneride abi koolitusvalimite ettevalmistamisel. Otsustasime aidata kolleegi ja luua mugavad moodulid tĂŒĂŒpiliste transformatsioonide ja mudelite funktsioneerimise ettevalmistamiseks Spark-mootoris. See vĂ”imaldab rohkem aega pĂŒhendada mudelite arendamisele ning mitte oodata, kuni andmeinsenerid uue andmestiku ette valmivad.
Meie juures töötavad inimesed, kellel on teadmised erinevates valdkondades: Linux ja DevOps, Hadoop ja Spark, Java ja Spring, Scala ja Akka, OpenShift ja Kubernetes. JĂ€rgmine kord rÀÀgime mudelite raamatukogust, sellest, kuidas mudel lĂ€bib ettevĂ”ttes elutsĂŒkli, ning kuidas toimub valideerimine ja juurutamine.
Allikas: habr.com
