Zahvaljujući mašinskom učenju, razvoj veštačke inteligencije je trenutno u punoj ekspanziji
Iako deluje kao da se ideja kompjutera koji razmišljaju i komuniciraju kao čovek ostvarila tek sa pojavom ChatGPT-a, veštačka inteligencija (AI – Artificial Intelligence) je tada samo postala dostupna praktično svakome. Prvo popularizovan kroz dela naučne fantastike, AI je imao veliki zamah u razvoju još u drugoj polovini prošlog veka i zaslužan je što je jedan (super)kompjuter, IBM Deep Blue, pre 25 godina pobedio svetskog šampiona u šahu Garija Kasparova u šest partija.
Mašinsko učenje (ML – Machine Learning) je podoblast AI-ja fokusirana na treniranje statističkih modela da vrše ekstrakciju znanja i uočavanje šablona, da praktično uče iz podataka. Ovako trenirani modeli koji mogu da vrše predviđanja i donose odluke na osnovu istorijskih podataka često se nazivaju i prediktivni AI. Modeli ovog tipa se već duži niz godina koriste u poslovnim aplikacijama za različite namene, poput personalizacije korisničkog iskustva, upravljanja inventarom i optimizacije lanca nabavke.
AI doživljava aktuelni bum zahvaljujući grani ML-a pod nazivom duboko učenje (Deep Learning), koja se oslanja na neuralne mreže, višeslojne algoritamske strukture koje su u stanju da formiraju kompleksnije korelacije između podataka, uče iz primera i prethodnih grešaka. Jedna od primena dubokog učenja je tzv. generativni AI (GenAI), klasa sistema koja je u stanju da kreira nove originalne sadržaje, poput teksta, slike, videa i muzike. Popularni AI servisi Microsoft Copilot, Google Gemini i Midjourney bazirani su upravo na GenAI modelima.
Proces razvoja AI modela
Gartner procenjuje da više od polovine AI projekata ne uspe da pređe put od ideje do produkcije. Ovaj put je dug i počinje procesom prikupljanja i pripreme podataka, nastavlja se razvojem, treniranjem i testiranjem modela (u više iteracija), nakon čega sledi njegova isporuka u produkciono okruženje, čime se prelazi u režim monitoringa rada, sve dok se ciklus ponovo ne pokrene. Paralelno, potrebno je razviti, testirati i isporučiti aplikaciju koja krajnjim korisnicima daje interfejs za interakciju sa modelom.
Proces razvoja i isporuke softvera danas se u velikoj meri oslanja na Dev-Ops – skup alata, praksi i organizacionih principa koji za cilj imaju da softver bude pouzdaniji i bezbedniji, kao i da se brže razvija i dostavlja korisnicima. MLOps dobijamo kada DevOps prakse primenimo na polje mašinskog učenja. Slično kao i kod DevOpsa, u srži MLOpsa je automatizacija, koja treba da omogući da modeli budu razvijeni, testirani, isporučeni i monitorisani na pouzdan i konzistentan način.
Šta je toliko specifično kod procesa treniranja modela da zavređuje svoju varijantu DevOpsa? Prvo, jedan ML projekat podrazumeva više različitih profila uključenih u proces nego kod klasičnog razvoja softvera. Pored dobro poznatih biznis analitičara, softverskih i DevOps (MLOps) inženjera, kod ML-a su prisutni i data inženjeri, naučnici koji se bave podacima (data scientist) i ML inženjeri. Proces je dovoljno kompleksan da se ne može očekivati od svih učesnika da razumeju sve njegove faze, pa npr. data inženjeri i naučnici često nisu uključeni u operacionalizaciju modela (faze isporuke i monitoringa). S druge strane, MLOps inženjeri ne poznaju detalje prikupljanja podataka i treniranja, ali je neophodno da celom timu obezbede jedinstvenu ML platformu koja će model sprovesti od prototipa do produkcije.
Slično kao i kod devopsa, u srži mlopsa je automatizacija, koja treba da omogući da modeli budu razvijeni, testirani, isporučeni i monitorisani na Pouzdan i konzistentan način
Dalje, ovakve platforme su često izgrađene na specifičnom hardveru koji može da obavi treniranje i podrazumevaju alate koji nisu deo tipičnih DevOps procesa. Jedan od primera je kontrola istorije promena, oblast u kojoj u DevOps svetu dominira Git. U odnosu na klasičan razvoj softvera, u mašinskom učenju fokus je manje na razvoju koda, a više na konstantnom eksperimentisanju i ponovljenim treniranjima modela dok se ne dobije željeni rezultat. Proces treniranja ponavlja se sa različitim ulaznim podacima (data setovima), konfiguracionim parametrima i kodom, i generiše se metrika koje pokazuju performanse modela. Da bismo mogli da garantujemo ponovljive rezultate modela, istoriju promena moramo pratiti zajedno na nivou svih ovih ulaznih i izlaznih parametara, za šta Git nije optimalno rešenje, na prvom mestu zbog veličine data setova.
Kod MLOpsa i monitoring faza ima određene specifičnosti. Performanse modela u velikoj meri zavise od korišćenog data seta – ako data set više ne odgovara realnim okolnostima, rezultati modela (output koji dobijaju korisnici) će biti lošiji. Ova pojava naziva se drift modela i neophodno ju je pratiti zajedno sa standardnim metrikama performansi aplikacija, kao što su vreme odziva i stopa grešaka. Ako drift prebaci određeni prag, potrebno je ponovo krenuti u proces treniranja sa novim data setom.
Dakle, uloga MLOpsa je da premosti jaz između razvoja modela i njegovog uspešnog rada u produkciji, odnosno između data i ML inženjera sa jedne i operatora infrastrukture sa druge strane. Slično kao i kod DevOpsa, u fokusu su kako alati i tehnologije, tako i tesna kolaboracija između svih profila uključenih u proces mašinskog učenja, kako bi se izgradio ML pipeline koji bi standardizovao i automatizovao prolazak modela kroz faze u svom životnom ciklusu.
Platforme za razvoj
Kubernetes se pokazao kao odlična osnova za izgradnju ovog pipelinea. Poslednjih godina Kubernetes predstavlja dominantnu aplikativnu platformu na koju su fokusirane inovacije stotine kompanija iz cloud native ekosistema, tako da danas pokriva praktično sva zamisliva scenarija razvoja i isporuke softvera. Dodatno, obezbeđuje zajednički jezik za opisivanje aplikacija i prateće infrastrukture koji mogu koristiti i developeri i operatori, ali i apstrakcije pomoću kojih platformu mogu direktno konzumirati i inženjeri koji ne znaju ništa o Kubernetesu. Platforma je izuzetno skalabilna (do nekoliko hiljada nodova u jednom klasteru), a u poslednje vreme fokus je na unapređenjima ugrađenog mehanizma dodele resursa, kako bi se obezbedila bolja integracija i deljenje grafičkih procesora (GPU), koji se masovno koriste za treniranje i serviranje AI modela.
U odnosu na klasičan razvoj softvera, u mašinskom učenju fokus je manje na razvoju koda, a više na konstantnom eksperimentisanju i ponovljenim treniranjima modela dok se ne dobije željeni rezultat
Verovatno najbolja referenca je Open- AI, kompanija koja stoji iza ChatGPT-a i praktično od svog osnivanja koristi Kubernetes za razvoj i hostovanje svojih AI-baziranih servisa. OpenAI danas pokreće Kubernetes u Azureu i u svojim data centrima, a 2021. je objavio da je svoje klastere uspešno skalirao čak do 7.500 nodova, što je i dan-danas više od zvanično preporučenog maksimuma.
Korišćenje Kubernetesa na polju ML-a nije bez izazova. Jedan od njih je i prethodno pomenuta dodela i zakazivanje resursa klastera, koja je optimizovana za rad sa procesorima i memorijom, dok je sada potrebno prilagoditi je specifičnim AI akceleratorima, kao što su GPU i Tensor Processing Unit (TPU) kartice. Takođe, data inženjeri nisu developeri i često nemaju iskustva u pakovanju aplikacija u kontejnere i njihovoj isporuci na Kubernetes. Potrebne su dodatne apstrakcije višeg nivoa koje su im prilagođene. Slično kao i ostatak cloud native ekosistema, i MLOps alati se često razvijaju po Unix principu „do one thing well“, zbog čega je za izgradnju pipelinea potrebno integrisati više usko specijalizovanih rešenja.
Pomenuti izazovi idu u prilog potrebi za unificiranom cloud native ML platformom koja bi Kubernetes prilagodila AI primenama. Jedan od važnih projekata u ovom domenu je Kubeflow, skup open source alata koji za cilj ima da poveže različite faze ML pipelinea u jedinstvenu celinu i ML procese donese u Kubernetes na način koji je data i ML inženjerima komforan za korišćenje.
Dobar primer komercijalne platforme u ovom segmentu je Red Hat OpenShift AI, koji OpenShift, kao najpopularniju enterprise Kubernetes distribuciju, pretvara u MLOps platformu na kojoj model može da se razvija, testira i na kraju servira, rame uz rame sa pratećim aplikacijama i servisima. OpenShift AI uključuje Kubeflow komponente, ali i druge alate razvijene od strane Red Hata, njihovih partnera i open source zajednice, koji omogućavaju:
• Razvoj i fino podešavanje modela – ovu fazu je moguće preseliti sa laptop i desktop računara data i ML inženjera na sam OpenShift klaster, čime se popularnim Jupyter razvojnim okruženjima (tzv. notebookovima) mogu na raspolaganje staviti hardverski resursi klastera;
• Upravljanje GPU-ovima – raspoloživi GPU resursi se mogu particionisati i alocirati notebookovima po potrebi;
• Skladištenje data setova i modela – ugrađena integracija sa S3-kompatibilnim storageom unutar ili izvan OpenShift klastera;
• Serviranje i skaliranje modela – proširivanje klastera ML objektima koji omogućavaju deployment modela i korišćenje naprednih OpenShift funkcija bez poznavanja detalja platforme;
• Kreiranje pipelineova – uvezivanje faza treniranja, testiranja i serviranja u jedinstven proces;
• Monitoring – praćenje relevantnih parametera modela pomoću standardnih Kubernetes/ OpenShift tehnologija (Prometheus i Grafana).
Uloga mlopsa je da premosti jaz između razvoja modela i njegovog uspešnog rada u produkciji
Skalabilnost infrastrukture, portabilnost izgrađenih aplikacija, ugrađena visoka raspoloživost, dostupne integracije i pozitivno korisničko iskustvo samo su neke od prednosti korišćenja kontejner platformi za ML primene u odnosu na alternative, npr. tradicionalne High Performance Computing (HPC) sisteme. Kubeflow i OpenShift AI transformišu Kubernetes i OpenShift od platformi za kontejnere u platforme za mašinsko učenje. Spoj ova dva sveta se popularno naziva Cloud Native AI.
Zahvaljujući ekspanziji koju oblast mašinskog učenja doživljava poslednjih godina, i dalje smo u fazi MLOps evolucije, koju karakterišu brz razvoj i česte promene. I pored toga, rano usvajanje MLOps praksi postaje sve važnije, jer će organizacije koje prihvate MLOps biti bolje pozicionirane za inovacije, realizaciju AI inicijativa i pružanje konzistentnog iskustva svojim korisnicima. Na kraju krajeva, slično kao i DevOps, ni MLOps nije samo skup alata i tehnologija – on predstavlja promenu kulture, koja omogućava kompanijama da iskoriste podatke koji su im na raspologanju i da napreduju u tehnološkom okruženju koje se veoma brzo menja.
0 komentara