6.5 KiB
6.5 KiB
Inżynieria uczenia maszynowego
13 marca 2024
1. Wprowadzenie
1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe
Od czego zależy wynik działania systemu?
System "klasyczny":
Kod (algorytm)
Środowisko
Dane wejściowe
System wykorzystujący uczenie maszynowe:
Kod (algorytm) inferencji
Środowisko
Dane wejściowe
Model:
- Dane trenujące
- Kod trenujący
- Architektura
- Hiperparametry
1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe
- Trenowanie modeli uczenie maszynowego to "nauka eksperymentalna".
- Nie da się wydedukować optymalnej architektury parametrów i hiperparametrów.
- Możemy stawiać hipotezy oparte na intuicji, doświadczeniu (własnym lub cudzym) i analogiach i weryfikować je empirycznie - metodą prób i błędów.
- .. albo wykorzystując AutoML
1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe
- Więcej zmiennych wpływających na wynik -> trudniejsza kontrola na działaniem
- Powolna pętla sprzężenia zwrotnego (slow feedback) - trenowanie może zajmować godziny, dni, miesiące...
- ... i kosztować $.
- Nie stać nas na błędy wykrywane po dniach obliczeń!
- Potrzeba stosowania praktyk i narzędzi, które ułatwią kontrolę nad tymi zmiennymi.
1.2 Narzędzia
- Kontrola wersji
- Systemy ciągłej integracji
- Konteneryzacja i virtualne środowiska
- Kontrola eksperymentów
1.2.1 Systemy ciągłej integracji
Systemy takie umożliwiają automatyczne:
budowanie
testowanie
wydawanie
oprogramowania w stabilnym środowisku.
Działają jako aplikacja webowa z graficznym interfejsem, umożliwiająca łatwe zarządzanie i monitorowanie wykonywanych w niej zadań.
1.2.2 Konteneryzacja i virtualne środowiska
Konteneryzacja (np. za pomocą Dockera) i wirtualne środowiska (takie jak Conda i ViertualEnv) zapewniają:
- stabilne
- odizolowane
- łatwo konfigurowalne środowisko do rozwoju aplikacji.
1.2.3 Narzędzia do kontroli eksperymentów
- Sacred
- DVC
- MLFlow
1.2.3 Narzędzia do kontroli eksperymentów
Ułatwiają prowadzenie eksperymentów uczenia maszynowego w sposób:
- powtarzalny
- kontrolowany
- zorganizowany