Metodyka DevOps na potrzeby uczenia maszynowego
Metodyka DevOps i metodyka MLOps
Metodyka DevOps jest opisana jako związek osób, procesów i produktów w celu umożliwienia ciągłego dostarczania wartości naszym użytkownikom końcowym, przez Donovan Brown w Co to jest DevOps?.
Aby dowiedzieć się, jak jest ona używana podczas pracy z modelami uczenia maszynowego, zapoznajmy się z podstawowymi zasadami metodyki DevOps.
DevOps to kombinacja narzędzi i praktyk prowadzących deweloperów do tworzenia niezawodnych i powtarzalnych aplikacji. Celem korzystania z zasad metodyki DevOps jest szybkie dostarczanie wartości użytkownikowi końcowemu.
Jeśli chcesz łatwiej dostarczać wartość, integrując modele uczenia maszynowego w potokach przekształcania danych lub aplikacje w czasie rzeczywistym, skorzystaj z implementacji zasad Metodyki DevOps. Poznanie metodyki DevOps pomoże Ci organizować i automatyzować swoją pracę.
Tworzenie, wdrażanie i monitorowanie niezawodnych i powtarzalnych modeli w celu dostarczania wartości użytkownikowi końcowemu jest celem operacji uczenia maszynowego (MLOps).
Omówienie trzech procesów MLOps
Istnieją trzy procesy, które chcemy połączyć za każdym razem, gdy mówimy o operacjach uczenia maszynowego (MLOps):
ml obejmuje wszystkie obciążenia uczenia maszynowego, za które odpowiada analityk danych. Analityk danych wykona:
- Eksploracyjna analiza danych (EDA)
- Inżynieria funkcji
- Trenowanie i dostrajanie modelu
Dev odnosi się do rozwoju oprogramowania, który obejmuje:
- plan: zdefiniuj wymagania i metryki wydajności modelu.
- Utwórz: Utwórz skrypty trenowania i oceniania modelu.
- Zweryfikuj: Sprawdź jakość kodu i modelu.
- pakiet: przygotuj się do wdrożenia, inscenując rozwiązanie.
OPS odnosi się do operacji i obejmuje:
- Wydanie: Wdrażanie modelu do środowiska produkcyjnego.
- Konfigurowanie: ustandaryzuj konfiguracje infrastruktury przy użyciu infrastruktury jako kodu (IaC).
- Monitor: śledź metryki i upewnij się, że model i infrastruktura działają zgodnie z oczekiwaniami.
Przyjrzyjmy się niektórym zasadom metodyki DevOps, które są niezbędne dla metodyki MLOps.
Zasady metodyki DevOps
Jedną z podstawowych zasad metodyki DevOps jest automatyzacja. Automatyzując zadania, aspirujemy do szybszego wdrażania nowych modeli w środowisku produkcyjnym. Dzięki automatyzacji utworzysz również odtwarzalne modele, które są niezawodne i spójne w różnych środowiskach.
Szczególnie jeśli chcesz regularnie ulepszać model w miarę upływu czasu, automatyzacja umożliwia szybkie wykonywanie wszystkich niezbędnych działań w celu zapewnienia, że model w środowisku produkcyjnym jest zawsze najlepszym modelem.
Kluczową koncepcją do osiągnięcia automatyzacji jest CI/CD, co oznacza ciągłą integrację i ciągłe dostarczanie.
Ciągła integracja
Ciągła integracja obejmuje tworzenie i weryfikację działań. Celem jest utworzenie kodu i zweryfikowanie jakości kodu i modelu przez automatyczne testowanie.
W przypadku metodyki MLOps ciągła integracja może obejmować:
- Refaktoryzacja kodu eksploracyjnego w notatnikach Jupyter na skrypty w języku Python lub R.
- Sprawdzanie za pomocą lintingu wszelkich błędów programowych lub stylistycznych w skryptach języka Python lub R. Na przykład sprawdź, czy wiersz skryptu zawiera mniej niż 80 znaków.
- Testowanie jednostkowe w celu sprawdzenia wydajności zawartości skryptów. Na przykład sprawdź, czy model generuje dokładne przewidywania na testowym zestawie danych.
Wskazówka
Dowiedz się, jak konwertować eksperymenty uczenia maszynowego na produkcyjny kod języka Python
Aby przeprowadzić linterowanie i testowanie jednostkowe, możesz użyć narzędzi automatyzacji, takich jak Azure Pipelines w usłudze Azure DevOpslub GitHub Actions.
Ciągłe dostarczanie
Po zweryfikowaniu jakości kodu skryptów języka Python lub R używanych do trenowania modelu warto przenieść model do środowiska produkcyjnego. Ciągłe dostarczanie obejmuje kroki, które należy wykonać, aby wdrożyć model w środowisku produkcyjnym, najlepiej automatyzując jak najwięcej działań.
Aby wdrożyć model w środowisku produkcyjnym, najpierw należy go spakować i wdrożyć w środowisku przedprodukcyjnym . Umieszczając model w środowisku przedprodukcyjnym, możesz sprawdzić, czy wszystko działa zgodnie z oczekiwaniami.
Po pomyślnym wdrożeniu modelu w fazie przejściowej i bez błędów można zatwierdzić wdrożenie modelu w środowisku produkcyjnym .
Aby współpracować nad skryptami języka Python lub R w celu wytrenowania modelu i dowolnego niezbędnego kodu do wdrożenia modelu w każdym środowisku, użyjesz kontroli źródła.
Kontrola źródła
Kontrola źródła (lub kontrola wersji ) jest najczęściej osiągana przez pracę z repozytorium opartym na Git. Repozytorium odnosi się do lokalizacji, w której można przechowywać wszystkie odpowiednie pliki w projekcie oprogramowania.
W przypadku projektów uczenia maszynowego prawdopodobnie będziesz mieć repozytorium dla każdego posiadanego projektu. Repozytorium będzie zawierać między innymi notesy Jupyter, skrypty szkoleniowe, skrypty oceniania i definicje potoków.
Notatka
Najlepiej, nie przechowywać danych treningowych w repozytorium. Zamiast tego dane szkoleniowe są przechowywane w bazie danych lub magazynie danych, a usługa Azure Machine Learning pobiera dane bezpośrednio ze źródła danych przy użyciu przechowalni danych.
Repozytoria oparte na Git są dostępne przy użyciu Azure Repos w Azure DevOps lub repozytorium GitHub.
Hostując cały odpowiedni kod w repozytorium, możesz łatwo współpracować nad kodem i śledzić wszelkie zmiany wprowadzone przez członka zespołu. Każdy członek może pracować nad swoją wersją kodu. Zobaczysz wszystkie wcześniejsze zmiany i możesz przejrzeć zmiany, zanim zostaną zatwierdzone w repozytorium głównym.
Aby zdecydować, kto pracuje nad częścią projektu, zaleca się użycie elastycznego planowania.
Planowanie agile
Ponieważ chcesz, aby model został szybko wdrożony w środowisku produkcyjnym, elastyczne planowanie jest idealne dla projektów uczenia maszynowego.
Planowanie zwinne oznacza podział pracy na sprinty. Sprints to krótkie przedziały czasowe, podczas których dążysz do realizacji części celów projektu.
Celem jest zaplanowanie sprintów, aby szybko poprawić kod. Niezależnie od tego, czy jest to kod używany do eksploracji danych i modelu, czy wdrażania modelu w środowisku produkcyjnym.
Trenowanie modelu uczenia maszynowego może być procesem niekończącym się. Na przykład jako analityk danych może być konieczne zwiększenie wydajności modelu z powodu dryfu danych. Możesz też dostosować model, aby lepiej dostosować go do nowych wymagań biznesowych.
Aby uniknąć poświęcania zbyt dużo czasu na trenowanie modelu, elastyczne planowanie może pomóc określić zakres projektu i pomóc wszystkim uzyskać wspólne zrozumienie, zgadzając się na krótkoterminowe cele.
Aby zaplanować swoją pracę, możesz użyć narzędzia, takiego jak usługa Azure Boards w usłudze Azure DevOps lub problemy z usługą GitHub.
Infrastruktura jako kod (IaC)
Stosowanie zasad metodyki DevOps do projektów uczenia maszynowego oznacza, że chcesz tworzyć niezawodne powtarzalne rozwiązania. Innymi słowy, wszystko, co robisz lub utworzysz, powinno być możliwe powtarzanie i automatyzowanie.
Aby powtórzyć i zautomatyzować infrastrukturę wymaganą do trenowania i wdrażania modelu, zespół będzie używać infrastruktury jako kodu (IaC). Podczas trenowania i wdrażania modeli na platformie Azure usługa IaC oznacza, że definiujesz wszystkie zasoby platformy Azure potrzebne w procesie w kodzie, a kod jest przechowywany w repozytorium.
Napiwek
Dowiedz się więcej o metodyce DevOps, eksplorując moduły microsoft Learn na podróży do transformacji metodyki DevOps