2021-03-07 23:52:43 +01:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### AITech Inżynieria Uczenia Maszynowego\n",
"# 1. Wprowadzenie"
]
},
{
"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",
2021-03-08 11:10:30 +01:00
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
2021-03-07 23:52:43 +01:00
"source": [
"<img style=\"margin: auto\" width=\"50%\" src=\"img/ml-vs-classic.png\"/>\n",
"\n",
"<sub>Źródło: https://www.reddit.com/r/learnmachinelearning/comments/hkcf4o/traditional_programming_vs_machine_learning/</sub>"
]
},
{
"cell_type": "markdown",
2021-03-08 11:10:30 +01:00
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
2021-03-07 23:52:43 +01:00
"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": {
2021-03-08 11:10:30 +01:00
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
}
},
"source": [
"## 1.2.1 Systemy ciągłej integracji\n",
" - Jenkins <br/><img style=\"height: 50px;\" src=\"img/ci/jenkins.png\"/>\n",
" - Bamboo <br/><img style=\"height: 50px;\" src=\"img/ci/bamboo.png\"/>\n",
" - Circle CI <br/><img style=\"height: 50px;\" src=\"img/ci/circleci.png\"/>\n",
" - Team City <br/><img style=\"height: 50px;\" src=\"img/ci/teamcity.png\"/>\n",
" - Gitlab CI <br/><img style=\"height: 50px;\" src=\"img/ci/gitlabci.png\"/>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
2021-03-08 11:10:30 +01:00
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
}
},
"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": {
2021-03-08 11:10:30 +01:00
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
}
},
"source": [
"## 1.2.2 Konteneryzacja i virtualne środowiska\n",
" - Docker </br><img style=\"height: 50px;\" src=\"img/environments/docker.png\"/>\n",
" - Conda </br><img style=\"height: 50px;\" src=\"img/environments/conda.png\"/>\n",
" - Virtual Env </br><img style=\"height: 50px;\" src=\"img/environments/python.png\"/>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
2021-03-08 11:10:30 +01:00
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
}
},
"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": {
2021-03-08 11:10:30 +01:00
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
}
},
"source": [
"## 1.2.3 Narzędzia do kontroli eksperymentów\n",
" - Sacred </br><img style=\"height: 50px;\" src=\"img/environments/python.png\"/>\n",
" - DVC </br><img style=\"height: 50px;\" src=\"img/expcontrol/dvc-logo.png\"/>\n",
" - MLFlow </br><img style=\"height: 50px;\" src=\"img/expcontrol/mlflow-logo.png\"/>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
2021-03-08 11:10:30 +01:00
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
}
},
"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": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.8.5"
},
"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
}
},
"nbformat": 4,
"nbformat_minor": 4
}