Produkcyjne systemy ML: monitorowanie potoków

Gratulacje! Udało Ci się wdrożyć model jednorożca. Model powinien działać 24 godziny na dobę przez 7 dni w tygodniu bez żadnych problemów. Aby mieć pewność, że tak, musisz monitorować potok systemów uczących się.

Napisz schemat danych do weryfikacji nieprzetworzonych danych

Aby sprawdzać dane, należy stale sprawdzać ich zgodność z oczekiwanymi wartości statystyczne poprzez napisanie reguł, którym muszą spełniać dane. Ta kolekcja to schemat danych. Zdefiniuj schemat danych, wykonując te czynności wykonaj te czynności:

  1. Poznaj zakres i rozkład swoich cech. Kategorialne poznać zbiór możliwych wartości.

  2. Zakoduj swoją wiedzę w schemacie danych. Oto przykłady reguły:

    • Oceny wystawiane przez użytkowników muszą zawsze mieścić się w przedziale od 1 do 5.
    • Sprawdź, czy najczęściej występuje słowo the (w przypadku tekstu w języku angielskim) ).
    • Sprawdź, czy każda cecha kategorialna ma ustawioną wartość ze stałego zbioru możliwych wartości.
  3. Przetestuj dane zgodnie ze schematem danych. Schemat powinien wychwytywać dane takie jak:

    • Anomalie
    • Nieoczekiwane wartości zmiennych kategorialnych
    • Nieoczekiwane rozkłady danych

Pisanie testów jednostkowych w celu weryfikacji konstrukcji cech

Nieprzetworzone dane mogą przekazywać schemat danych, ale model nie trenuje na nieprzetworzonych danych. Zamiast tego model trenuje na danych, które zostały uwzględnione opracowano technologię. Na przykład model trenuje na znormalizowanych funkcjach liczbowych a nie w postaci nieprzetworzonych danych liczbowych. Ponieważ dane opracowane na podstawie cech mogą być bardzo niż nieprzetworzone dane wejściowe, trzeba sprawdzić dane opracowane przez funkcje niezależnie od sprawdzania nieprzetworzonych danych wejściowych.

Pisz testy jednostkowe na podstawie swojej wiedzy na temat danych opracowanych przez funkcje. Możesz na przykład napisać testy jednostkowe, aby sprawdzić warunki, takie jak :

  • Wszystkie cechy liczbowe są skalowane, na przykład od 0 do 1.
  • Kodowanie jednorazowo wektory zawierają tylko pojedyncze zera 1 i N-1.
  • Rozkład danych po przekształceniu jest zgodny z oczekiwaniami. Na przykład jeśli do normalizacji użyto wyników Z, średnia wartość Wynik Z powinien wynosić 0.
  • Wartości odstające obsługiwane, na przykład przez skalowanie lub przycinanie.

Sprawdzanie wskaźników pod kątem ważnych wycinków danych

Udana całość czasem ukrywa podzbiór zakończony niepowodzeniem. Innymi słowy, model z doskonałymi wskaźnikami ogólnymi i tak może generować fatalne prognozy w pewnych sytuacjach. Na przykład:

Twój model jednorożca jest ogólnie skuteczny, ale słabo że robimy prognozy na Saharę.

Jeśli jesteś inżynierem zadowolonym z ogólnych AUC, być może nie zauważysz problemów z modelem na Saharze. Jeśli tworzysz dobre prognozy dla każdego regionu są ważne, musisz więc śledzić w każdym regionie. podzbiory danych, np. odpowiedni po pustynię na Saharze, nazywamy wycinkami danych.

Określ interesujące Cię wycinki danych. Następnie porównaj dane modelu dla tych wycinków danych ze wskaźnikami dla: całego zbioru danych. Sprawdzanie, czy model ma dobrą wydajność we wszystkich wycinkach danych pomaga wyeliminować uprzedzenia. Zobacz Obiektywność: ocena pod kątem uprzedzeń .

Korzystaj z rzeczywistych danych

Dane modelu nie zawsze mierzą rzeczywisty wpływ modelu. Na przykład zmiana hiperparametru może zwiększyć AUC modelu, ale Czy zmiana wpłynęła na wygodę użytkowników? Aby mierzyć rzeczywisty wpływ, trzeba aby zdefiniować osobne dane. Możesz np. przeprowadzić ankietę wśród użytkowników modelu, i potwierdzić, że naprawdę widziały jednorożca, gdy model przewidział, zrobiłaby tego, co zrobił(a).

Sprawdź zniekształcenie między trenowaniem a zastosowaniem praktycznym

Zniekształcenie między trenowaniem a zastosowaniem oznacza, że dane wejściowe podczas trenowania różnią się z danych wejściowych podczas wyświetlania. W tej tabeli opisano 2 ważne typy zniekształcenia:

Typ Definicja Przykład Rozwiązanie
Zniekształcenie schematu Dane wejściowe trenowania i udostępniania nie są zgodne z tym samym schematem. zmieni się format lub rozkład danych wyświetlania; a model będzie nadal trenować na starych danych. Użyj tego samego schematu do weryfikowania danych treningowych i udostępniania. Pamiętaj, aby osobno sprawdzić statystyki, które nie są sprawdzane przez Twojego schematu, np. części brakujących wartości
Zniekształcenie cech Tak opracowane dane różnią się między trenowaniem a wyświetlaniem. Kod inżynierii funkcji różni się między trenowaniem a wyświetlaniem, które generują różne dane. Podobnie jak w przypadku odchylenia schematu, stosuj te same reguły statystyczne do trenowania i udostępniania danych technicznych. Śledź numer wykrytych zniekształconych cech oraz stosunek zniekształconych przykładów na cechę.

Przyczyny zniekształceń między trenowaniem a zastosowaniem mogą być subtelne. Zawsze weź pod uwagę, jakie dane są dostępne dla modelu w czasie prognozy. W trakcie szkolenia używaj tylko tych funkcji, które będą dostępne podczas wyświetlania reklam.

Ćwiczenie: sprawdź swoją wiedzę

Załóżmy, że masz sklep internetowy i chcesz przewidzieć ile zarabiasz w danym dniu. Twoim celem ML jest prognozowanie dzienne przy użyciu funkcji liczby klientów.

Jaki problem może wystąpić?
Kliknij tutaj, aby zobaczyć odpowiedź

Sprawdź, czy nie wyciekły etykiety

Wyciek etykiet oznacza, że ground truth, które próbują przewidzieć, przypadkowo włamały się do funkcji szkoleniowych. Etykieta wyciek jest czasem bardzo trudne do wykrycia.

Ćwiczenie: sprawdź swoją wiedzę

Załóżmy, że tworzysz binarny model klasyfikacji, który przewiduje, czy nowy pacjent w szpitalu ma raka. Model korzysta z następujących funkcji:

  • Wiek pacjenta
  • Płeć pacjenta
  • Wcześniejsze schorzenia
  • Nazwa szpitala
  • Znaki życiowe
  • Wyniki testów
  • Dziedzictwo

Etykieta wygląda tak:

  • Wartość logiczna: czy pacjent ma raka?

Starannie partycjonujesz dane, aby mieć pewność, że zbiór treningowy jest dobrze od zbioru do walidacji i zestawu testowego. Skuteczność modelu nadzwyczaj dobrze w zbiorze do walidacji i testu; wskaźniki są To fantastyczne. Model ten radzi sobie jednak z wyjątkową skutecznością na nowych pacjentach. w świecie rzeczywistym.

Dlaczego ten model, który był skuteczny na zbiorze testowym, nie powiódł się poza internetem?
Kliknij tutaj, aby zobaczyć odpowiedź

Monitorowanie wieku modelu w potoku

Jeśli dane wyświetlania zmieniają się z upływem czasu, ale model nie jest regularnie ponownie trenowany, zauważycie pogorszenie jakości modelu. Śledzić czas od momentu, gdy model ponownie wytrenować na nowych danych i ustawić próg wiekowy alertów. Oprócz monitorowania wieku modelu w momencie wyświetlenia, należy monitorować wiek modelu w całym potoku żeby wyłapać przerwa w działaniu rurociągów.

Sprawdź, czy wagi modelu i wyjściowe wyniki są stabilne liczbowo

Podczas trenowania modelu wagi i dane wyjściowe warstw nie powinny być NaN (nie liczba) lub Inf (nieskończona). Napisz testy, aby sprawdzić wartości NaN i Inf wag i danych wyjściowych warstwy. Dodatkowo przetestuj, czy ponad połowa wartości wyjściowych warstwy nie ma wartości zero.

Monitorowanie wydajności modelu

Twój prognozy wyglądu jednorożca jest bardziej popularny, niż się spodziewano! To już otrzymywanie wielu żądań prognoz i jeszcze większej ilości danych treningowych. Myślisz, że to świetnie, dopóki nie zdasz sobie sprawy, że Twój model zajmuje coraz więcej pamięci i czas na trenowanie. Decydujesz się na monitorowanie wydajności modelu, wykonując te działania: wykonaj te czynności:

  • Śledzenie wydajności modelu według wersji kodu, modelu i danych. Takie śledzenie umożliwia ustalenie dokładnej przyczyny spadku wydajności.
  • Przetestuj kroki trenowania na sekundę dla nowej wersji modelu i stałej wartości progowej.
  • Wykrywaj wycieki pamięci, ustawiając próg wykorzystania pamięci.
  • Monitoruj czasy odpowiedzi interfejsu API i śledź ich centyle. Odpowiedź interfejsu API czas oczekiwania może być poza Twoją kontrolą, powolne odpowiedzi słabe wskaźniki rzeczywiste.
  • Monitorowanie liczby odpowiedzi na zapytania w ciągu sekundy.

Testowanie jakości aktywnego modelu na udostępnianych danych

Model został zweryfikowany. A co w sytuacjach z życia wzięte, np. z jednorożcem? zachowanie, zmiany po zarejestrowaniu danych weryfikacyjnych? Następnie jakość model udostępnianego pogorszy się. Testowanie jakości wyświetlania jest jednak trudne, ponieważ rzeczywiste dane nie zawsze są oznaczone etykietami. Jeśli dane wyświetlania nie są oznaczone etykietą, weź pod uwagę te testy:

  • Generowanie etykiet z pomocą weryfikatorów.

  • Zbadaj modele, które wykazują istotne odchylenie statystyczne w prognozach. Zobacz Klasyfikacja: Prognoza Uprzedzenia.

  • Śledzenie rzeczywistych wskaźników modelu. Jeśli na przykład klasyfikujesz porównywać swoje prognozy ze spamem zgłoszonym przez użytkowników.

  • Ogranicz potencjalną rozbieżności między danymi do trenowania a danymi udostępniania przez udostępniając nową wersję modelu dla części zapytań. Podczas weryfikacji do nowego modelu wyświetlania, stopniowo przełączaj wszystkie zapytania na nową wersję.

Podczas korzystania z tych testów pamiętaj o monitorowaniu zarówno nagłego, jak i powolnego pogorszenia jakość prognozy.

Kolejność losowa

Zadbaj o możliwość odtwarzania potoku generowania danych. Załóżmy, że chcesz dodać element aby zobaczyć, jak wpłynie to na jakość modelu. Aby eksperyment był rzetelny, zbiory danych powinny będą identyczne z wyjątkiem tej nowej funkcji. W związku z tym należy zadbać o możliwość randomizacji generowania danych deterministyczny:

  • Rozpocząć generatory liczb losowych. Materiał wyjściowy zapewnia przy każdym uruchomieniu powoduje wyświetlenie tych samych wartości w tej samej kolejności, co powoduje ponowne utworzenie do zbioru danych.
  • Użyj niewariantowych kluczy skrótu. Popularnym sposobem dzielenia jest szyfrowanie. lub dane przykładowe. Każdy przykład można zaszyfrować, a następnie użyć wynikowej liczby całkowitej do i zdecyduj, w której części umieścić przykład. Dane wejściowe funkcji skrótu nie powinna zmieniać się po każdym uruchomieniu programu generowania danych. Nie używaj parametru bieżący czas lub losową liczbę w haszze, na przykład, jeśli chcesz ponownie tworzyć hasze na żądanie.

Poprzednie podejścia mają zastosowanie zarówno do próbkowania, jak i do dzielenia danych.

Uwagi na temat haszowania

Wyobraź sobie, że gromadzisz wyszukiwane hasła i korzystasz z szyfrowania uwzględniania lub wykluczania zapytań. Jeśli klucz skrótu używał tylko zapytania, a w przypadku danych z wielu dni zawsze uwzględnij lub zawsze ją wykluczyć. Zawsze uwzględniające lub wykluczające zapytanie jest błędne, ponieważ:

  • Twój zestaw treningowy będzie mieć mniej zróżnicowany zestaw zapytań.
  • Twoje zestawy do oceny będą sztucznie za trudne, ponieważ nie będą nakładają się na dane treningowe. W rzeczywistości podczas wyświetlania strony zauważyli już część ruchu w Twoich danych treningowych. powinna to odzwierciedlać.

Zamiast tego możesz zaszyfrować dane w zapytaniu i dacie, co spowodowałoby inne haszowanie. zainteresowanych informacjami ze świata.

 

Rysunek 7. Animowana wizualizacja pokazująca, jak haszowanie tylko na
            powoduje, że dane trafiają codziennie do tego samego zasobnika, ale haszowanie
            czas zapytania powoduje, że dane trafiają do innych
            dziennie. 3 kategorie to trenowanie, ocena
            Zignorowano.
Rysunek 7. Szyfrowanie podczas zapytania a szyfrowanie zapytania + czas zapytania.