ium/IUM_01.Wprowadzenie.ipynb
2023-03-25 16:25:40 +01:00

6.8 KiB

Logo 1

Inżynieria uczenia maszynowego

1. Wprowadzenie [laboratoria]

Tomasz Ziętkiewicz (2023)

Logo 2

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

  • Jenkins
  • Github Actions
  • Bamboo
  • Circle CI
  • Team City
  • Gitlab CI

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 wirtualne środowiska

  • Docker
  • Conda
  • Virtual Env

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