Development2021.08.23 3 min. czytania
MLOps kluczem do sukcesu w projektach ML

W poprzednim artykule nakreśliłem, jakie problemy towarzyszą projektom opartym o uczenie maszynowe (ang. Machine Learning – ML) oraz jak MLOps może pomóc w ich wyeliminowaniu, usprawniając pracę całego zespołu. Tym razem postaram się wyjaśnić, jak powstało zapotrzebowanie na MLOps i odpowiedzieć na pytanie, dlaczego dotychczas istniejące role w projekcie mogą nie posiadać wszystkich niezbędnych kompetencji, aby wypełnić ten brak.
Systemy ML
Budowanie systemów ML różni się od wytwarzania klasycznego oprogramowania. Praca polega na zgłębieniu problemu badawczego, a następnie wytrenowaniu modelu, aby osiągał zamierzone wyniki. Proces ten jest bardziej złożony od wytwarzania klasycznych systemów, gdzie to zespół programistów tworzy oprogramowanie na podstawie zestawu heurystycznych reguł. Eksperymentalna natura projektów ML sprawia, że ich implementacja jest bardziej skomplikowanym zagadnieniem. Poniższy rysunek ilustruje główne etapy implementacji systemu ML:

Etapy budowania systemów opartych o uczenie maszynowe. Źródło: opracowanie własne.
W rzeczywistości, implementacja systemu ML jest cyklem składającym się z powyższych etapów, jednak na potrzeby niniejszego artykułu ograniczmy przestrzeń rozważań do pojedynczej iteracji. W uproszczeniu, cały proces rozpoczyna się od pozyskania danych oraz przeprowadzenia na nich odpowiednich przekształceń. Następnym krokiem jest trenowanie, w efekcie którego powstaje model spełniający (lub nie) założone przez projekt standardy. Na tym etapie kompetencje potrzebne do wykonania koniecznych działań zamykają się w dziedzinie Data Science. Problemy zaczynają się dopiero w kolejnych krokach.
Każdy model implementowany jest bowiem z myślą o późniejszym wykorzystaniu go w rzeczywistej aplikacji. Na etapie wdrożenia na środowisko produkcyjne ilość wiedzy potrzebnej do osiągnięcia celu dynamiczne rośnie. Na horyzoncie zaczynają pojawiać się zagadnienia związane z systemami rozproszonymi, skalowaniem i przetwarzaniem w chmurze, a liczba narzędzi, z których można skorzystać staje się astronomiczna. Lista ta już zdaje się być długa, a nie wspomnieliśmy nawet o takich elementach, jak rejestr modeli (system kontroli wersji) oraz ich wdrażanie. Wiedza ta, bez wątpienia, wykracza poza zakres inżynierii danych i uczenia maszynowego. Ponadto, implementacja modeli ML, poza wymagającym wdrożeniem oraz utrzymaniem, zawiera szereg etapów, które bez właściwego zarządzania będą stanowić słabe punkty. Najczęściej popełniane niedociągnięcia to brak wersjonowania danych/modeli, testów oraz automatyzacji procesu. Przeanalizujemy to na przykładzie poniżej.
Wersjonowanie efektów pracy
Problem: Zespół składający się z kilku inżynierów, bazując na najświeższych danych, zaimplementował nową wersję modelu, którego zadaniem jest dokonanie predykcji na podstawie medycznych zdjęć zmian skórnych w celu przedwczesnego wykrycia czerniaka. Wynik ewaluacji jest zgodny z założonymi normami. Nowy model jest gotowy do wdrożenia i zastąpienia poprzedniej wersji. Uprzednio zespół wspólnymi siłami stworzył serwis, który w oparciu o REST API serwuje dany model “na sztywno” z pliku. Podmiana wersji wiąże się więc ze zaktualizowaniem kodu źródłowego bazowej aplikacji.
Wnioski: W zaprezentowanym scenariuszu serwis został zaimplementowany wspólnymi siłami przez zespół inżynierów danych. Projekt nie przewidywał scenariusza, w którym konieczna będzie aktualizacja działającego modelu, przez co został on osadzony w systemie “na sztywno”. Przy wykorzystaniu rejestru modeli oraz CD (ang. continuous delivery) możliwe byłoby uzależnienie systemu od zawartych w nim wersji, a tym samym wstrzykiwaniu modelu jako zależność z zewnętrznego źródła. Wykorzystanie narzędzi pozwalających na wersjonowanie efektów pracy inżynierii danych jest jedną z podstaw MLOps.
Mogłoby się wydawać, że rozwiązaniem powyższych słabości okaże się DevOps. Jest to bowiem metodyka zajmująca się wdrażaniem systemów, automatyzacją i monitorowaniem rozwiązań. Jednakże cykl życia modelu ML oraz proces jego implementacji całkowicie różnią się od budowania klasycznego oprogramowania, na którego potrzeby odpowiada DevOps. Znaczące różnice w procesie wytwarzania systemów ML sprawiają, że i w tym wariancie konieczne jest przyswojenie wiedzy z zakresu uczenia maszynowego oraz budowania i utrzymania modeli.

Powstałą lukę stara się wypełnić MLOps, stanowiąc połączenie kompetencji z dziedzin takich jak DataScience, ML Engineering i DevOps. Zespoły MLOps bazują na wiedzy dotyczącej implementacji modeli uczenia maszynowego oraz inferencji z ich użyciem. Ponadto, rozszerzają tę domenę o informacje z zakresu wytwarzania i wdrażania oprogramowania, co pozwala na opakowanie modelu w łatwo skalowalną strukturę np. Kubeflow Pipelines. Ostatnimi elementami stanowiącym kompetencje MLOps są automatyzacja procesów oraz monitoring. O istotności utrzymania modeli ML pisałem już w poprzednim artykule.
Podsumowując, projekty ML stwarzają szereg problemów nieznanych w przypadku budowania klasycznego oprogramowania. MLOps jako kultura w organizacji stara się na te problemy odpowiedzieć za pomocą dobrych praktyk i odpowiednich narzędzi (więcej). W kolejnym artykule przybliżę techniki stosowane przez MLOps, mające na celu usprawnienie procesu i wyniesienie wytwarzania systemów ML na wyższy poziom. Na podstawie konkretnych przykładów zbuduję diagram implementacji modeli wzbogacony o dobre praktyki oraz dedykowane narzędzia służące do automatyzacji implementacji systemów ML.
Następny artykuł – Jak MLOps wspomaga budowanie modeli ML.
Potrzebujesz więcej informacji?
Skontaktuj się z opiekunem handlowym.

Joanna Bartoszek
Account Manager