Development2021.02.12 4 min. czytania
ML na szeroką skalę – jak zostać MLOps-em

Na przestrzeni ostatnich lat pojawia się coraz więcej projektów dotyczących przetwarzania danych biznesowych, z tego powodu obserwujemy znaczący rozwój narzędzi analitycznych.
Dane dostarczają nam cenną wiedzę, a wiedza zapewnia nam przewagę konkurencyjną. Coraz więcej organizacji rozumie wartość jaką dostarcza analiza danych i decyduje się na zaawansowane narzędzia analityczne, co w praktyce oznacza budowę rozwiązań opartych o Machine Learning. Czasy, gdy jeden Data Scientist pracował samodzielnie w projekcie odchodzą do przeszłości, obecnie coraz więcej firm chce dedykowanych rozwiązań. Tworzone są całe zespoły, których zadaniem jest zarówno wdrażanie i usprawnianie znanych już rozwiązań, jak i prowadzenie badań nad nowymi.

Proces tworzenia aplikacji z wykorzystaniem ML jest bardziej złożony niż klasyczny proces wytwarzania oprogramowania. Pierwszym krokiem jest oczywiście zebranie danych oraz eksploracja, czyli sprawdzenie co dane w sobie zawierają, głównie z wykorzystaniem metod statystycznych. Następnie określamy, do stworzenia jakiego modelu mogą być wykorzystane i jakie korzyści biznesowe możemy dzięki temu uzyskać. W kolejnym kroku przygotowujemy dane pod model, który chcemy wykorzystać (czyścimy, normalizujemy etc.). Jest to pierwsza faza w tworzeniu rozwiązania na bazie algorytmów ML. Druga faza to przygotowanie modeli. Obejmuje ona zarówno ekstrakcje odpowiednich zmiennych, stworzenie modelu, testowanie go oraz zapisanie jako nowej wersji z wykorzystaniem odpowiedniego systemu kontroli wersji. Na koniec model musi zostać w odpowiedni sposób udostępniony, zazwyczaj jako oddzielny serwis z odpowiednim API. W kolejnym etapie jest sprawdzany i testowany. Model wgrany na środowisko produkcyjne powinien być monitorowany, co pozwala na zapewnienie stabilności oraz ulepszanie go w kolejnych wersjach.

Aby usprawnić cały proces wytwarzania oprogramowania na szeroką skalę wykorzystuje się praktyki DevOps. Ich celem jest usprawnienie procesu rozwoju oprogramowania oraz zapewnienie bezproblemowego i szybkiego wdrażania kolejnych wersji aplikacji. W przypadku aplikacji opartych na modelach ML, twórcy również chcą mieć możliwość usprawnienia wytwarzania aplikacji na dużą skalę, jednak systemy te różnią się zdecydowanie od klasycznych aplikacji. Dlatego coraz częściej słyszymy pojęcie „MLOps”. Jest to podejście DevOps stosowane dla aplikacji opartych o ML.
Mimo wielu podobieństw różnice pomiędzy tymi podejściami są ogromne, a wynikają one przede wszystkim ze specyfiki projektów ML. W projektach takich, zazwyczaj pojawiają się specjaliści z dziedziny modeli matematycznych. Osoby te często nie mają doświadczenia z tworzeniem serwisów na poziomie produkcyjnym. Zadania związane z szeroko pojętą sztuczną inteligencją to zadania researchowe, co za tym idzie modele zmieniają się bardzo szybko, dane trzeba często przygotować w inny sposób dla różnych problemów. MLOps jest z natury bardziej eksperymentalną dziedziną niż DevOps. Modele oparte są na danych, przez co każda zmiana schematu danych, wymaga dostosowania, co nie jest uwzględnione
w klasycznym procesie wytwarzania oprogramowania.
Biorąc pod uwagę cały proces wytwórczy różnice w podejściu MLOps w stosunku do DevOps są bardzo wyraźne:
- Continuous Integration to nie tylko testowanie i walidacja kodu oraz komponentów, obejmuje również dane, schematy danych oraz modele.
- Continuous Delivery staje się jeszcze bardziej złożone. Nie chodzi o pojedynczy serwis czy pakiet, ale całe złożone systemy, w których modele obsługiwane są jak serwisy.
- Pojawia się potrzeba monitorowania modeli, oraz wykorzystania informacji z monitoringu do ponownego wytrenowania. Modele powinny być retrenowane automatycznie bez ingerencji z zewnątrz, co jest dodatkowym wyzwaniem.
- Dodatkowy element – Continuous Testing – obejmuje testowanie i walidację modeli, która zależna jest od rozwiązywanego problemu, nie chodzi już tylko o testy integracji, czy testy jednostkowe.
Wszystko to sprawia, że aby zacząć pracę jako MLOps, osoba która ma doświadczenie w dziedzinie DevOps musi poznać w stopniu wystarczającym dziedzinę ML, która jest bardzo szeroka. Powodem tego jest to, że MLOps czerpie wiedzę z dziedzin DevOps oraz ML. Dlatego szukamy do swoich zespołów osoby ze znajomością, nawet podstawową, którejś z wymienionych dziedzin, czy po prostu gotowością do ich poznania. Po zapewnionych przez nas szkoleniach teoretyczno-praktycznych dostosowanych do indywidualnych potrzeb, osoby te zostają wdrożone w projekt, gdzie mogą poszerzać swoją wiedzę w praktyce. Podejście to pozwala na zbudowanie zespołów eksperckich, wyposażonych w wiedzę teoretyczną jak i przygotowanie praktyczne na najwyższym poziomie.
Jak w przypadku metodyki DevOps, tak i tutaj wykorzystywane są narzędzia, które umożliwiają wdrożenie i automatyzację procesów. Jednak jak już wspomniałem, ponieważ w tym przypadku modele są najważniejsze, narzędzia te rozszerzają podejście DevOps. Oczywiście liczba narzędzi cały czas rośnie. Wśród nich możemy wyodrębnić takie, które służą do produkcyjnej obsługi modeli np.: Cornex, TensorFlow Serving czy TorchServe. Inne zapewniają wsparcie w całym cyklu ich życia, takie jak MLFlow czy Neptune AI. Powstają również platformy, których zadaniem jest całościowa obsługa procesu – KubeFlow lub Algorithmia. Pod tym linkiem można znaleźć listę popularnych narzędzi MLOps https://github.com/kelvins/awesome-mlops#cicd-for-machine-learning. Dostawcy rozwiązań chmurowych również oferują usługi wspomagające wdrażanie modeli w aplikacjach. Przykładem jest SageMaker od AWS, czy Azure ML. W kolejnym wpisie pokażemy ci działanie jednego z narzędzi umożliwiających wdrożenie MLOps w projekcie.
MLOps jest pojęciem, które cały czas się rozwija, tworzy na naszych oczach. Nowe narzędzia powstają z dnia na dzień, nie ma jednego standardu, który rozwiązuje nawet większość problemów z tego obszaru. Jest to dziedzina bardzo złożona, wymagająca uwzględnienia wielu aspektów. Z tego powodu jest ona fascynująca i pełna wyzwań.
Chcesz rozwijać się jako MLOps w Billennium?
Sprawdź nasze rekrutacje >>> MLOps engineer https://billennium.pl/oferty-pracy/