Udostępnij za pośrednictwem


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: