{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "
\n", "

Inżynieria uczenia maszynowego

\n", "

1. Wprowadzenie [laboratoria]

\n", "

Tomasz Ziętkiewicz (2021)

\n", "
\n", "\n", "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe\n", "Od czego zależy wynik działania systemu?\n", "\n", "System \"klasyczny\":\n", " - Kod (algorytm)\n", " - Środowisko\n", " - Dane wejściowe\n", " \n", "System wykorzystujący uczenie maszynowe:\n", " - Kod (algorytm) inferencji\n", " - Środowisko\n", " - Dane wejściowe\n", " - Model:\n", " - Dane trenujące\n", " - Kod trenujący\n", " - Architektura\n", " - Hiperparametry\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe\n", "* Trenowanie modeli uczenie maszynowego to \"nauka eksperymentalna\".\n", "* Nie da się wydedukować optymalnej architektury parametrów i hiperparametrów.\n", "* 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.\n", "* .. albo wykorzystując [AutoML](https://en.wikipedia.org/wiki/Automated_machine_learning)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe\n", "- Więcej zmiennych wpływających na wynik -> trudniejsza kontrola na działaniem\n", "- Powolna pętla sprzężenia zwrotnego (slow feedback) - trenowanie może zajmować godziny, dni, miesiące...\n", "- ... i kosztować $.\n", "- Nie stać nas na błędy wykrywane po dniach obliczeń!\n", "- Potrzeba stosowania praktyk i narzędzi, które ułatwią kontrolę nad tymi zmiennymi." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2 Narzędzia\n", "* Kontrola wersji\n", "* Systemy ciągłej integracji\n", "* Konteneryzacja i virtualne środowiska\n", "* Kontrola eksperymentów\n", "\n", " \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2.1 Systemy ciągłej integracji\n", " - Jenkins
\n", " - Bamboo
\n", " - Circle CI
\n", " - Team City
\n", " - Gitlab CI
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2.1 Systemy ciągłej integracji\n", "Systemy takie umożliwiają automatyczne:\n", " - budowanie\n", " - testowanie\n", " - wydawanie \n", " \n", "oprogramowania w stabilnym środowisku.\n", "\n", "Działają jako aplikacja webowa z graficznym interfejsem, umożliwiająca łatwe zarządzanie i monitorowanie wykonywanych w niej zadań." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2.2 Konteneryzacja i wirtualne środowiska\n", " - Docker
\n", " - Conda
\n", " - Virtual Env
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2.2 Konteneryzacja i virtualne środowiska\n", "Konteneryzacja (np. za pomocą Dockera) i wirtualne środowiska (takie jak Conda i ViertualEnv) zapewniają:\n", "- stabilne\n", "- odizolowane\n", "- łatwo konfigurowalne\n", "środowisko do rozwoju aplikacji." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2.3 Narzędzia do kontroli eksperymentów\n", " - Sacred
\n", " - DVC
\n", " - MLFlow
\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 1.2.3 Narzędzia do kontroli eksperymentów\n", "Ułatwiają prowadzenie eksperymentów uczenia maszynowego w sposób:\n", " - powtarzalny\n", " - kontrolowany\n", " - zorganizowany" ] } ], "metadata": { "author": "Tomasz Ziętkiewicz", "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "lang": "pl", "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.1" }, "slideshow": { "slide_type": "slide" }, "subtitle": "1.Wprowadzenie[laboratoria]", "title": "Inżynieria uczenia maszynowego", "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": false, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": false, "toc_window_display": false }, "year": "2021" }, "nbformat": 4, "nbformat_minor": 4 }