Produkcyjne systemy ML: testowanie wdrożenia

Możesz już wdrożyć model jednorożca, który przewiduje pojawienie się jednorożca. Podczas wdrażania system uczący się powinien działać, aktualizować się i obsługiwać bez problemów. Gdyby tylko wdrożenie modelu było tak proste jak naciśnięcie dużego przycisku Wdróż. Pełny system uczenia maszynowego wymaga jednak testów dotyczących:

  • sprawdzanie danych wejściowych;
  • weryfikowanie ekstrakcji wyróżników,
  • weryfikowanie jakości nowych wersji modelu;
  • Weryfikowanie infrastruktury obsługi.
  • testowanie integracji między komponentami potoku;

Wielu programistów preferuje rozwój oparty na testach (TDD). W TDD inżynierowie oprogramowania piszą testy przed napisaniem „prawdziwego” kodu źródłowego. W uczeniu maszynowym TDD może jednak być trudne do zastosowania. Na przykład przed wytrenowaniem modelu nie możesz napisać testu, który sprawdza stratę. Zamiast tego musisz najpierw określić możliwe straty podczas tworzenia modelu, a potem przetestować nowe wersje modelu pod kątem możliwych strat.

Model jednorożca

Ta sekcja dotyczy modelu jednorożca. Oto, co musisz wiedzieć na ten temat:

Korzystasz z uczenia maszynowego, aby tworzyć model klasyfikacji, który przewiduje pojawienie się jednorożca. Zbiór danych zawiera informacje o 10 tys. występowaniach jednorożca i 10 tys. występowań, w których nie pojawia się jednorożec. Zbiór danych zawiera informacje o lokalizacji, porze dnia, wysokości nad poziomem morza, temperaturze, wilgotności, pokryciu drzewami, obecności tęczy i kilku innych cechach.

Testowanie aktualizacji modelu za pomocą powtarzalnego trenowania

Możesz też chcieć dalej ulepszać model jednorożca. Załóżmy na przykład, że przeprowadzisz dodatkową ekstrakcję wyróżników z danego wyróżnika, a potem ponownie przetrenowujesz model, mając nadzieję na uzyskanie lepszych (lub co najmniej takich samych) wyników. Czasami trudno jest odtworzyć trenowanie modelu. Aby zwiększyć powtarzalność, postępuj zgodnie z tymi zaleceniami:

  • Zdefiniuj deterministycznie nasiono generatora liczb losowych. Więcej informacji znajdziesz w artykule Losowanie w generowaniu danych.

  • Inicjuj komponenty modelu w ustawionej kolejności, aby mieć pewność, że komponenty otrzymają ten sam losowy numer z generatora liczb losowych przy każdym uruchomieniu. Biblioteki ML zwykle spełniają to wymaganie automatycznie.

  • Oblicz średnią z kilku uruchomień modelu.

  • Korzystaj z kontroli wersji nawet w przypadku wstępnych iteracji, aby podczas analizowania modelu lub potoku danych móc wskazać kod i parametry.

Nawet jeśli zastosujesz się do tych wytycznych, mogą nadal występować inne źródła niedeterminizmu.

Testowanie wywołań interfejsu Machine Learning API

Jak testujesz zmiany wywołań interfejsu API? Możesz ponownie wytrenować model, ale zajmie to dużo czasu. Zamiast tego napisz test jednostkowy, który wygeneruje losowe dane wejściowe i wykonuje pojedynczy krok schodkowego algorytmu gradientu. Jeśli ten krok zostanie wykonany bez błędów, żadne aktualizacje interfejsu API prawdopodobnie nie uszkodziły modelu.

pisać testy integracji komponentów potoku;

W systemie przetwarzania danych za pomocą uczenia maszynowego zmiany w jednym komponencie mogą powodować błędy w innych komponentach. Aby sprawdzić, czy komponenty działają razem, napisz test integracyjny, który uruchamia cały potok.

Oprócz ciągłego przeprowadzania testów integracji należy je przeprowadzać również podczas publikowania nowych modeli i wersji oprogramowania. Powolne działanie całego potoku utrudnia testowanie w ramach ciągłej integracji. Aby szybciej przeprowadzać testy integracyjne, wytrenuj model na podzbiorze danych lub za pomocą prostszego modelu. Szczegóły zależą od modelu i danych. Aby uzyskać ciągłe pokrycie, dostosuj szybkie testy tak, aby były wykonywane przy każdej nowej wersji modelu lub oprogramowania. W tym czasie wolne testy będą się stale wykonywać w tle.

Weryfikowanie jakości modelu przed jego przesłaniem

Zanim wdrożysz nową wersję modelu w wersji produkcyjnej, przetestuj, czy nie występują te 2 typy spadku jakości:

  • Nagłe pogorszenie jakości. Błąd w nowej wersji może spowodować znacznie niższą jakość. Sprawdzanie nowych wersji przez porównanie ich jakości z poprzednią wersją.

  • Powolne pogorszenie się jakości. Test na nagłe pogorszenie jakości może nie wykryć powolnego spadku jakości modelu w przypadku wielu wersji. Zamiast tego sprawdź, czy prognozy modelu na zbiorze danych do weryfikacji spełniają stały próg. Jeśli zbiór danych do weryfikacji odbiega od rzeczywistych danych, zaktualizuj go i upewnij się, że model nadal spełnia ten sam próg jakości.

Sprawdzanie zgodności modelu z infrastrukturą przed wyświetleniem

Jeśli model jest aktualizowany szybciej niż serwer, może mieć inne zależności oprogramowania niż serwer, co może spowodować niezgodności. Upewnij się, że operacje używane przez model są obecne na serwerze, umieszczając model w wersji serwera w piaskownicy.