Pojęcia — operacje uczenia maszynowego (MLOps) dla przepływów pracy sztucznej inteligencji i uczenia maszynowego
Z tego artykułu dowiesz się więcej o operacjach uczenia maszynowego (MLOps), w tym o typach praktyk i narzędziach oraz o tym, jak może uprościć i przyspieszyć przepływy pracy sztucznej inteligencji i uczenia maszynowego w usłudze Azure Kubernetes Service (AKS).
Co to jest MLOps?
Operacje uczenia maszynowego (MLOps) obejmują praktyki, które ułatwiają współpracę między analitykami danych, operacjami IT i uczestnikami biznesowymi, zapewniając, że modele uczenia maszynowego są opracowywane, wdrażane i utrzymywane wydajnie. Metodyka MLOps stosuje zasady metodyki DevOps do projektów uczenia maszynowego, które mają na celu zautomatyzowanie i usprawnienie kompleksowego cyklu życia uczenia maszynowego. Ten cykl życia obejmuje trenowanie, pakowanie, weryfikowanie, wdrażanie, monitorowanie i ponowne trenowanie modeli.
Metodyka MLOps wymaga efektywnej współpracy wielu ról i narzędzi. Analitycy danych koncentrują się na zadaniach związanych z trenowaniem modelu, który jest określany jako pętla wewnętrzna. Inżynierowie uczenia maszynowego i zespoły ds. operacji IT obsługują pętlę zewnętrzną, w której stosują rozwiązania DevOps do tworzenia pakietów, weryfikowania, wdrażania i monitorowania modeli. Gdy model wymaga precyzyjnego dostrajania lub ponownego trenowania, proces wraca do pętli wewnętrznej.
Potok MLOps
Potok MLOps może korzystać z różnych narzędzi i mikrousług, które są wdrażane sekwencyjnie lub równolegle. Poniżej przedstawiono przykłady kluczowych składników potoku, które korzystają z implementacji następujących najlepszych rozwiązań w celu zmniejszenia nakładu pracy i umożliwienia szybszej iteracji:
- Magazyn danych bez struktury dla nowych danych przepływających do aplikacji
- Wektorowa baza danych do przechowywania i wykonywania zapytań o dane ustrukturyzowane, wstępnie przetworzone
- Struktura pozyskiwania i indeksowania danych
- Pozyskiwanie wektorów i/lub ponowne trenowanie przepływów pracy modelu
- Zbieranie metryk i narzędzia do zgłaszania alertów (śledzenie wydajności modelu, ilość pozyskanych danych itp.)
- Narzędzia do zarządzania cyklem życia
Metodyka DevOps i metodyka MLOps
DevOps to kombinacja narzędzi i rozwiązań, które umożliwiają tworzenie niezawodnych i powtarzalnych aplikacji. Celem korzystania z metodyki DevOps jest szybkie dostarczanie wartości użytkownikom końcowym. Tworzenie, wdrażanie i monitorowanie niezawodnych i powtarzalnych modeli w celu dostarczania wartości użytkownikom końcowym jest głównym celem metodyki MLOps.
Istnieją trzy procesy niezbędne dla metodyki MLOps:
- Obciążenia uczenia maszynowego, dla których jest odpowiedzialny analityk danych, w tym eksploracyjna analiza danych (EDA), inżynieria cech oraz trenowanie i dostrajanie modeli.
- Rozwiązania programistyczne, w tym planowanie, opracowywanie, testowanie i pakowanie modelu do wdrożenia.
- Aspekty operacyjne wdrażania i utrzymywania modelu w środowisku produkcyjnym, w tym wydawania, konfigurowania zasobów i monitorowania modelu.
Zasady metodyki DevOps stosowane do metodyki MLOps
Metodyka MLOps wykorzystuje kilka zasad z metodyki DevOps w celu zwiększenia cyklu życia uczenia maszynowego, takich jak automatyzacja, ciągła integracja i ciągłe dostarczanie (CI/CD), kontrola źródła, planowanie Agile i infrastruktura jako kod (IaC).
Automation
Automatyzując zadania, można zmniejszyć błędy ręczne, zwiększyć wydajność i zapewnić spójność w całym cyklu życia uczenia maszynowego. Automatyzację można zastosować do różnych etapów, w tym do zbierania danych, trenowania modelu, wdrażania i monitorowania. Dzięki automatyzacji można również stosować proaktywne miary w potoku sztucznej inteligencji, aby zapewnić zgodność danych z zasadami organizacji.
Na przykład potok może zautomatyzować:
- Dostrajanie/ponowne trenowanie modelu w regularnych odstępach czasu lub gdy w aplikacji jest zbierana pewna ilość nowych danych.
- Wykrywanie obniżenia wydajności w celu rozpoczęcia precyzyjnego dostrajania lub ponownego trenowania w innym podzestawie danych.
- Typowe skanowanie luk w zabezpieczeniach i ekspozycji (CVE) na podstawowych obrazach kontenerów ściągniętych z zewnętrznych rejestrów kontenerów w celu zapewnienia bezpiecznych rozwiązań w zakresie zabezpieczeń.
Ciągła integracja (CI)
Ciągła integracja obejmuje tworzenie i weryfikowanie aspektów procesu tworzenia modelu. Celem ciągłej integracji jest utworzenie kodu i zweryfikowanie jakości kodu i modelu przed wdrożeniem. Obejmuje to testowanie w wielu przykładowych zestawach danych w celu zapewnienia, że model działa zgodnie z oczekiwaniami i spełnia standardy jakości.
W metodyce MLOps ciągła integracja może obejmować:
- Refaktoryzacja kodu eksploracyjnego w notesach Jupyter do skryptów języka Python lub R.
- Weryfikowanie nowych danych wejściowych pod kątem brakujących wartości lub błędów.
- Testowanie jednostkowe i testowanie integracji w potoku end-to-end.
Aby przeprowadzić testy lintingu i jednostkowe, można użyć narzędzi automatyzacji, takich jak Azure Pipelines w usłudze Azure DevOps lub GitHub Actions.
Ciągłe dostarczanie (CD)
Ciągłe dostarczanie obejmuje kroki niezbędne do bezpiecznego wdrożenia modelu w środowisku produkcyjnym. Pierwszym krokiem jest spakować i wdrożyć model w środowiskach przedprodukcyjnych, takich jak środowiska deweloperskie i testowe. Przenośność parametrów, hiperparametrów i innych artefaktów modelu jest ważnym aspektem utrzymania podczas promowania kodu za pośrednictwem tych środowisk. Ta przenośność jest szczególnie ważna, jeśli chodzi o duże modele językowe (LLM) i stabilne modele dyfuzji. Gdy model przejdzie testy jednostkowe i testy kontroli jakości (QA), możesz zatwierdzić go do wdrożenia w środowisku produkcyjnym.
Kontrola źródła
Kontrola źródła lub kontrola wersji jest niezbędna do zarządzania zmianami w kodzie i modelach. W systemie uczenia maszynowego odnosi się to do przechowywania wersji danych, przechowywania wersji kodu i przechowywania wersji modelu, co pozwala zespołom funkcjonalnym na efektywną współpracę i śledzenie zmian w czasie. Korzystanie z systemu kontroli źródła opartego na usłudze Git, takiego jak usługa Azure Repos w usłudze Azure DevOps lub repozytorium GitHub, umożliwia programowe utrzymywanie historii zmian, przywracanie poprzednich wersji i zarządzanie gałęziami dla różnych eksperymentów.
Planowanie Agile
Planowanie agile obejmuje izolowanie pracy w sprintach, które są krótkimi ramami czasu wykonywania określonych zadań. Takie podejście umożliwia zespołom szybkie dostosowanie się do zmian i dostarczanie przyrostowych ulepszeń modelu. Trenowanie modelu może być ciągłym procesem, a planowanie Agile może pomóc w zakresie projektu i umożliwić lepsze dopasowanie zespołu.
Do zarządzania planowaniem agile można używać narzędzi, takich jak usługa Azure Boards w usłudze Azure DevOps lub GitHub.
Infrastruktura jako kod (IaC)
Infrastruktura jest używana jako kod, aby powtarzać i automatyzować infrastrukturę wymaganą do trenowania, wdrażania i obsługi modeli. W systemie uczenia maszynowego IaC pomaga uprościć i zdefiniować odpowiednie zasoby platformy Azure potrzebne dla określonego typu zadania w kodzie, a kod jest przechowywany w repozytorium. Dzięki temu można kontrolować wersję infrastruktury i wprowadzać zmiany w celu optymalizacji zasobów, efektywności kosztów itp. w razie potrzeby.
Następne kroki
Zapoznaj się z następującymi artykułami, aby dowiedzieć się więcej na temat najlepszych rozwiązań dotyczących metodyki MLOps w inteligentnych aplikacjach w usłudze AKS:
- Najlepsze rozwiązania dotyczące operacji uczenia maszynowego w usłudze AKS
- Wdrażanie modelu sztucznej inteligencji za pomocą operatora łańcucha narzędzi AI
- Najlepsze rozwiązania dotyczące zarządzania zasobami w usłudze AKS
- Wymuszanie zabezpieczeń zasobników w klastrze usługi AKS jako deweloper aplikacji
Azure Kubernetes Service