Ideje i sastanci o tome koji se drugi procesi mogu automatizirati svakodnevno se javljaju u preduzećima različitih veličina. Ali pored činjenice da se puno vremena može potrošiti na kreiranje modela, potrebno ga je potrošiti na njegovu procjenu i provjeru da dobijeni rezultat nije slučajan. Nakon implementacije, svaki model se mora pratiti i periodično provjeravati.
A to su sve faze koje treba završiti u svakoj kompaniji, bez obzira na njenu veličinu. Ako govorimo o obimu i naslijeđu Sberbanke, broj finih podešavanja se značajno povećava. Do kraja 2019. Sber je već koristio više od 2000 modela. Nije dovoljno samo razviti model, potrebno je integrirati se s industrijskim sistemima, razviti data marts za izgradnju modela i osigurati kontrolu njegovog rada na klasteru.
Naš tim razvija platformu Sber.DS. Omogućava vam rješavanje problema strojnog učenja, ubrzava proces testiranja hipoteza, u principu pojednostavljuje proces razvoja i validacije modela, a također kontrolira rezultat modela u PROM-u.
Da ne bih zavarao vaša očekivanja, unaprijed želim reći da je ovaj post uvodni, a ispod reza, za početak, govorimo o tome šta se, u principu, nalazi ispod platforme Sber.DS. Zasebno ćemo ispričati priču o životnom ciklusu modela od kreiranja do implementacije.
Sber.DS se sastoji od nekoliko komponenti, od kojih su ključne biblioteka, razvojni sistem i sistem za izvršavanje modela.
Biblioteka kontroliše životni ciklus modela od trenutka kada se pojavi ideja da se on razvije do implementacije u PROM, praćenja i dekomisije. Mnoge bibliotečke mogućnosti diktiraju regulatorna pravila, na primjer, izvještavanje i skladištenje uzoraka za obuku i validaciju. Zapravo, ovo je registar svih naših modela.
Razvojni sistem je dizajniran za vizuelni razvoj modela i tehnika validacije. Razvijeni modeli prolaze inicijalnu validaciju i dostavljaju se izvršnom sistemu za obavljanje svojih poslovnih funkcija. Takođe, u runtime sistemu, model se može postaviti na monitor u svrhu periodičnog pokretanja tehnika validacije za praćenje njegovog rada.
Postoji nekoliko tipova čvorova u sistemu. Neki su dizajnirani da se povežu na različite izvore podataka, drugi su dizajnirani da transformišu izvorne podatke i obogate ih (markup). Postoji mnogo čvorova za izgradnju različitih modela i čvorova za njihovu validaciju. Programer može učitati podatke iz bilo kojeg izvora, transformirati, filtrirati, vizualizirati međupodatke i razbiti ih na dijelove.
Platforma također sadrži gotove module koji se mogu prevući i spustiti na područje dizajna. Sve radnje se izvode pomoću vizualizovanog interfejsa. Zapravo, problem možete riješiti bez ijednog reda koda.
Ako ugrađene mogućnosti nisu dovoljne, sistem pruža mogućnost brzog kreiranja vlastitih modula. Napravili smo integrisani način razvoja zasnovan na
Arhitektura Sber.DS-a je izgrađena na mikroservisima. Mnogo je mišljenja o tome šta su mikroservise. Neki ljudi misle da je dovoljno podijeliti monolitni kod na dijelove, ali u isto vrijeme i dalje idu u istu bazu podataka. Naš mikroservis mora komunicirati sa drugom mikroservisom samo preko REST API-ja. Nema rješenja za direktan pristup bazi podataka.
Trudimo se da usluge ne postanu veoma velike i nespretne: jedna instanca ne bi trebalo da troši više od 4-8 gigabajta RAM-a i mora da obezbedi mogućnost horizontalnog skaliranja zahteva pokretanjem novih instanci. Svaka usluga komunicira s drugima samo preko REST API-ja (
Jezgro aplikacije je napisano u Javi koristeći Spring Framework. Rješenje je prvobitno bilo dizajnirano za brzu implementaciju u infrastrukturi oblaka, pa je aplikacija napravljena korištenjem sistema kontejnerizacije
Jedna od karakteristika naše platforme je da možemo pokrenuti kod razvijen u vizuelnom interfejsu na bilo kom sistemu za izvršavanje modela Sberbank. Sada ih već postoje dva: jedan na Hadoop-u, drugi na OpenShift (Docker). Ne zaustavljamo se tu i stvaramo integracijske module za pokretanje koda na bilo kojoj infrastrukturi, uključujući on-premise i u oblaku. Što se tiče mogućnosti efikasne integracije u ekosistem Sberbanke, takođe planiramo da podržimo rad sa postojećim okruženjima za izvršavanje. U budućnosti, rješenje se može fleksibilno integrirati “iz kutije” u bilo koji krajolik bilo koje organizacije.
Oni koji su ikada pokušali da podrže rešenje koje pokreće Python na Hadoop-u u PROM-u znaju da nije dovoljno pripremiti i isporučiti Python korisničko okruženje svakom datanodu. Ogroman broj C/C++ biblioteka za mašinsko učenje koje koriste Python module neće vam omogućiti da se opustite. Moramo zapamtiti da ažuriramo pakete kada dodajemo nove biblioteke ili servere, uz održavanje kompatibilnosti unatrag s već implementiranim kodom modela.
Postoji nekoliko pristupa kako to učiniti. Na primjer, unaprijed pripremite nekoliko često korištenih biblioteka i implementirajte ih u PROM. U Clouderinoj Hadoop distribuciji, oni obično koriste
Banka vrlo ozbiljno shvaća sigurnost pokretanja koda treće strane, tako da maksimalno koristimo nove karakteristike Linux kernela, gdje se proces izvodi u izolovanom okruženju
Ove godine planiramo da završimo MVP lansiranja modela napisanih u Python/R/Java na Hadoop-u. Postavili smo sebi ambiciozan zadatak da naučimo kako pokrenuti bilo koje prilagođeno okruženje na Hadoop-u, kako ne bismo na bilo koji način ograničavali korisnike naše platforme.
Osim toga, kako se ispostavilo, mnogi DS stručnjaci su odlični u matematici i statistici, prave cool modele, ali nisu baš dobro upućeni u transformacije velikih podataka i potrebna im je pomoć naših inženjera podataka da pripreme uzorke za obuku. Odlučili smo pomoći našim kolegama i kreirati zgodne module za standardnu transformaciju i pripremu karakteristika za modele na Spark motoru. Ovo će vam omogućiti da provedete više vremena u razvoju modela i da ne čekate da inženjeri podataka pripreme novi skup podataka.
Zapošljavamo ljude sa znanjem iz različitih oblasti: Linux i DevOps, Hadoop i Spark, Java i Spring, Scala i Akka, OpenShift i Kubernetes. Sljedeći put ćemo govoriti o biblioteci modela, kako model prolazi kroz životni ciklus unutar kompanije, kako se validacija i implementacija odvijaju.
izvor: www.habr.com