2021-03-07 23:52:43 +01:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
2024-04-09 09:46:32 +02:00
"## Inżynieria uczenia maszynowego\n",
"### 13 marca 2024\n",
"# 1. Wprowadzenie"
2021-03-07 23:52:43 +01:00
]
},
{
"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": [
2021-09-28 11:58:53 +02:00
"<img style=\"margin: auto\" width=\"50%\" src=\"img/ml-vs-classic.png\"/>"
2021-03-07 23:52:43 +01:00
]
},
{
"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",
2023-03-08 21:46:47 +01:00
" - Github Actions <br/><img style=\"height: 50px;\" src=\"img/ci/github-actions.png\"/>\n",
2021-03-07 23:52:43 +01:00
" - 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": [
2021-03-08 14:26:32 +01:00
"## 1.2.2 Konteneryzacja i wirtualne środowiska\n",
2021-03-07 23:52:43 +01:00
" - 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",
2024-03-11 13:30:45 +01:00
" - [Sacred](https://sacred.readthedocs.io) </br><img style=\"height: 50px;\" src=\"img/environments/python.png\"/>\n",
2021-03-07 23:52:43 +01:00
" - 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": {
2021-09-28 10:56:21 +02:00
"author": "Tomasz Ziętkiewicz",
2021-03-07 23:52:43 +01:00
"celltoolbar": "Slideshow",
2021-09-28 10:56:21 +02:00
"email": "tomasz.zietkiewicz@amu.edu.pl",
2021-03-07 23:52:43 +01:00
"kernelspec": {
2023-03-25 16:25:40 +01:00
"display_name": "Python 3",
2021-03-07 23:52:43 +01:00
"language": "python",
"name": "python3"
},
2021-09-28 10:56:21 +02:00
"lang": "pl",
2021-03-07 23:52:43 +01:00
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2023-03-25 16:25:40 +01:00
"version": "3.9.12"
2021-09-28 10:56:21 +02:00
},
"slideshow": {
"slide_type": "slide"
2021-03-07 23:52:43 +01:00
},
2021-09-28 10:56:21 +02:00
"subtitle": "1.Wprowadzenie[laboratoria]",
"title": "Inżynieria uczenia maszynowego",
2021-03-07 23:52:43 +01:00
"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
2021-09-28 10:56:21 +02:00
},
"year": "2021"
2021-03-07 23:52:43 +01:00
},
"nbformat": 4,
"nbformat_minor": 4
}