244 lines
6.5 KiB
Plaintext
244 lines
6.5 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Inżynieria uczenia maszynowego\n",
|
|
"### 13 marca 2024\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",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"<img style=\"margin: auto\" width=\"50%\" src=\"img/ml-vs-classic.png\"/>"
|
|
]
|
|
},
|
|
{
|
|
"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 <br/><img style=\"height: 50px;\" src=\"img/ci/jenkins.png\"/>\n",
|
|
" - Github Actions <br/><img style=\"height: 50px;\" src=\"img/ci/github-actions.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": {
|
|
"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 </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": {
|
|
"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](https://sacred.readthedocs.io) </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": {
|
|
"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.12"
|
|
},
|
|
"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
|
|
}
|