aitech-pbr2022/08_ci_cd_uczenie_maszynowe.ipynb
2022-12-23 18:41:29 +01:00

16 KiB

Logo 1

Przygotowanie do projektu badawczo-rozwojowego

8. Ciągła integracja i ewaluacja w projektach opartych na uczeniu maszynowym [wykład]

Filip Graliński (2022)

Logo 2

Ciągła integracja i ewaluacja w projektach opartych na uczeniu maszynowym

Dobre praktyki w tradycyjnej inżynierii oprogramowania

Ciągła integracja

Ciągła integracja (_continuous integration, CI) to praktyka stosowana w tworzeniu oprogramowania polegają na częstym integrowaniu kodu opracowywanego przez programistów, zautomatyzowanym budowaniu oprogramowania i poddawaniu go testom.

img

Ciągłe wdrażanie

Ciągłe wdrażanie (_continuous deployment, CD) automatyzuje również proces wdrażania oprogramowania. Oznacza to, że również procedura wdrażania musi zostać wyrażona jako kod przechowywany w systemie kontroli wersji.

img

Ciągła integracja/ciągłe wdrożenie zazwyczaj współwystępuje z metodyką DevOps.

CI/CD/DevOps w jednym zdaniu: robię to tak często, że to „nic takiego”.

img

CI/CD a uczenie maszynowe

Dodanie do systemu modułów opartych na uczeniu maszynowym bardzo komplikuje proces CI/CD:

  • modele uczenia maszynowego (np. sieci neuronowe) powstają na bazie kodu źródłowego odpowiedzialnego za uczenie i danych uczących,
  • osobny kod jest odpowiedzialny za inferencję,
  • choć kod odpowiedzialny za uczenie i inferencję w miarę możliwości powinny podlegać standardowej metodologii testowania (np. testy jednostkowe), to ostatecznie testy systemów opartych na uczeniu maszynowym nie mają postaci zerojedynkowej
  • … raczej system może uzyskać lepszy albo gorszy wynik,
  • wdrożenie (a przynajmniej uczenie) wymaga często dużych zasobów obliczeniowych i specjalnego sprzętu (karty graficzne).

Przy czym chcielibyśmy zachować „złote” zasady CI/CD.

Wprowadzenie uczenia maszynowego do oprogramowania na tyle zmienia sytuację, że mówi się o MLOps zamiast DevOps.

Proces CI/CD rozszerzony o uczenie maszynowe

img

Testowanie systemów opartych na uczeniu maszynowym

Podobnie jak w wypadku tradycyjnego oprogramowania testowanie modeli uczenia maszynowego przyjmuje wiele form:

  • testy jednostkowe fragmentu kodu odpowiedzialnego za uczenie i inferencję,
  • testy uczenia i inferencji na spreparowanych danych
    • _corner cases
    • uczenia „w kółko” na jednym przykładzie (czy funkcja kosztu spada do zera?)
  • testy inferencji na danych „śmieciowych” (czy system jest w stanie „przetrwać” wszystko?)
  • testy efektywności, przepustowości itp.
  • … lecz ostatecznie najistotniejsza jest odpowiedź na pytanie, jak dobry jest wynik na danych zbliżonych do rzeczywistych (ewaluacja)

Ewaluacja

Rodzaje ewaluacji:

  • testy „na ludziach”,
    • testy A/B, analiza zachowania użytkownika
    • ewaluacja manualna, np. test MOS (_mean-opinion score)
  • ewaluacja automatyczna
    • ewaluacja według wzoru
    • ewaluacja wyuczana przy użyciu uczenia maszynowego (!)

Ostateczne kryterium ewaluacji: _money in the bank, a właściwie _utility in the bank (por. aksjomatyczna teoria użyteczności sformułowana przez Johna von Neumanna i Oskara Morgensterna).

img

Psychologiczne pułapki oceniania

  • efekt pierwszeństwa — _błędy pojawiające się na początku wypracowania oceniane są surowiej niż błędy na końcu wypracowania

  • efekt świeżości

  • efekt „aureoli” — _mamy skłonność do przypisywania innych pozytywnych cech ludziom atrakcyjnym fizycznie

  • wpływ nastroju na ocenianie — _w pochmurne dni ludzie gorzej oceniają stan gospodarki niż w słoneczne

Słabości „potocznej” matematyki

Czy symptom świadczy o chorobie?

|         |           | choroba |               |
|         |           | obecna  | nieobecna     |
|---------+-----------+---------+---------------|
| symptom | obecny    | 37      | 33            |
|         | nieobecny | 17      | 13            |

85% przepytanych pielęgniarek doszło do wniosku, że istnieje związek między symptomem a chorobą.

Korelacja jest przez ludzi przeceniana, regresja do średniej — niedoceniania

Jak uniknąć pułapek oceniania?

  • stosować obiektywne miary,
  • najlepiej wymyślić syntetyczną funkcję oceny (pojedyncza liczba),
  • jeśli to możliwe, stosować automatyczną ewaluację.

Konkretny sposób ewaluacji nazywamy miarą lub metryką ewaluacji. (Uwaga: nie ma nic wspólnego z terminami stosowanymi w matematyce!).

Definicja metryki ewaluacji

Ewaluację przeprowadzamy na ciągu danych wejściowych $(x)_i$ biorąc pod uwagę oczekiwane wyjście $(y)_i$ i rzeczywiste wyjście z systemu $(\hat{y})_i$. Funkcja (metryka, miara) ewaluacji $\mu$ powinna zwrócić skalarną wartość określającą jakość systemu, innymi słowy:

$$\mu \colon X^{n} \times Y^{n} \times \hat{Y}^{n} \to \mathcal{R},$$

gdzie $X$ jest zbiorem możliwych wejść, $Y$ — zbiorem możliwych specyfikacji oczekiwanych wyjść, $\hat{Y}$ — zbiorem możliwych wyjść (na ogół $Y = \hat{Y}$, ale mogą być sytuacje, gdzie specyfikacja oczekiwanego wyjścia jest bardziej skomplikowana).

Olbrzymia większość metryk ewaluacji nie bierze pod uwagę wejścia, lecz jedynie porównuje wyjście z systemu z oczekiwanym wyjściem, a zatem schemat upraszcza się do:

$$\mu \colon Y^{n} \times \hat{Y}^{n} \to \mathcal{R}.$$

Metryka ewaluacji — przykłady

Jedną z najprostszych metryk ewaluacji jest dokładność (_accuracy) jest to po prostu odsetek przypadków, gdy wyjście z systemu jest identyczne z oczekiwanym wyjściem.

Narzędzie ewaluacyjne GEval ma zaimplementowane kilkadziesiąt (!) metryk ewaluacji

-m,--metric METRIC       Metric to be used, e.g.:RMSE, MSE, MAE, SMAPE,
                         Pearson, Spearman, Accuracy, LogLoss, Likelihood,
                         F1.0, F2.0, F0.25, Macro-F1.0, Macro-F2.0,
                         Macro-F0.25, MultiLabel-F1.0, MultiLabel-F2.0,
                         MultiLabel-F0.25, Mean/MultiLabel-F1.0,
                         Probabilistic-MultiLabel-F1.0,
                         Probabilistic-MultiLabel-F2.0,
                         Probabilistic-MultiLabel-F0.25,
                         MultiLabel-Likelihood, MAP, NDCG@3, BLEU, GLEU
                         ("Google GLEU" not the grammar correction metric),
                         WER, CER (Character-Error Rate), WAR, CAR
                         (Character-Accuracy Rate (1-CER)), NMI, ClippEU,
                         LogLossHashed, LikelihoodHashed, PerplexityHashed,
                         BIO-F1, BIO-Weighted-F1, BIO-F1-Labels,
                         TokenAccuracy, SegmentAccuracy, Soft-F1.0, Soft-F2.0,
                         Soft-F0.25, Probabilistic-Soft-F1.0,
                         Probabilistic-Soft-F2.0, Probabilistic-Soft-F0.25,
                         Probabilistic-Soft2D-F1.0, Probabilistic-Soft2D-F2.0,
                         Probabilistic-Soft2D-F0.25, Soft2D-F1.0, Soft2D-F2.0,
                         Soft2D-F0.25, Haversine, CharMatch, Improvement@0.5,
                         MacroAvg/Likelihood, MSE-Against-Interval,
                         RMSE-Against-Interval, MAE-Against-Interval,
                         BLEU:lm<\s+|[a-z0-9]+> (BLEU on lowercased strings,
                         only Latin characters and digits considered)

Jakie własności ma dobra miara ewaluacji?

  • spełnia zdroworozsądkowe aksjomaty

    • w szczególności dla przypadków brzegowych
    • jest stabilna
  • koreluje z ludzką oceną

    • a tak naprawdę z preferencjami użytkowników

Ewaluacja ewaluacji! — czyli metaewaluacja

img

Z powrotem do CI/CD

Ewaluację można zatem traktować jako rozszerzenie procesu testowania oprogramowania. Ewaluacja nigdy nie powinna być jednorazowym procesem, powinna być wpleciona w proces CI/CD. Możemy więc mówić o ciągłej ewaluacji.

Potrzeba ciągłego procesu, by upewnić się, że nasz system oparty na uczeniu maszynowym:

  • jest lepszy od prostego punktu odniesienia (_naive baseline),
  • jest lepszy od rozwiązań konkurencji,
  • jest lepszy od systemu, który mieliśmy wczoraj, tydzień temu, rok temu…

img

Dobór metryki ewaluacji — tłumaczenie maszynowe

Jaka metryka jest najlepsza do oceny systemu tłumaczenia maszynowego?

To zależy!

Scanariusz A. Automatyczne tłumaczenie jest używane przez osoby nieznające języka docelowego w celu zrozumienia oryginalnego tekstu.

Scenariusz B. Oczekujemy bardzo dobrej jakości tłumaczenia. Tłumaczenia maszynowe są poprawiane przez profesjonalnych tłumaczy, tłumaczenie maszynowe służy do przyspieszenia procesu.

W scenariuszu A można zastosować standardowe metryki tłumaczenia maszynowego sprawdzające, na ile w tłumaczeniu zachowane elementy tłumaczenia referencyjnego, np. BLEU albo — lepiej — COMET, natomiast w scenariuszu B lepiej zastosować odległość edycyjną w celu oszacowania kosztu korekty.

Przykład systemu ewaluacji — GEval i Gonito

GEval to biblioteka w języku Haskell oraz narzędzie do ewaluacji uruchamiane z wiersza poleceń, zaś Gonito to oparta na bibliotece GEval aplikacja webowa, platforma do ewaluacji wyzwań uczenia maszynowego.

img

System na produkcji, a my nie znamy oczekiwanych wartości!

Estymacja jakości

Uruchomiliśmy nasz system w wersji produkcyjnej, skąd wiemy, że system zachowuje się poprawnie?

Można anotować lub poprawiać manualnie próbki danych produkcyjnych, rozszerzać w ten sposób zbiory testowe i dokonywać na nich ewaluacji.

Można też stosować metody estymacji jakości (_quality estimation), tzn. przewidywać jakość wyłącznie na podstawie wyjścia (bez znajomości oczekiwanego wyjścia). Na przykład w systemie tłumaczenia maszynowego można w tym celu stosować model języka docelowego.