1
0
forked from pms/ium

Zaktualizowano zajęcia wprowadzające i organizacyjne

This commit is contained in:
Tomasz 2023-03-08 21:46:47 +01:00
parent 54e8efa9b7
commit f7b4bce1d0
13 changed files with 373 additions and 170 deletions

View File

@ -2,6 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "3ae03d8e",
"metadata": {}, "metadata": {},
"source": [ "source": [
"# Środowisko wykorzystywane na zajęciach" "# Środowisko wykorzystywane na zajęciach"
@ -9,6 +10,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "dc65cc30",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Certificat SSL dla strony: https://letsencrypt.org/\n", "Certificat SSL dla strony: https://letsencrypt.org/\n",
@ -55,6 +57,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "71e2cecc",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [] "source": []
@ -62,7 +65,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -76,7 +79,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.9" "version": "3.10.4"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -12,7 +12,7 @@
"<div class=\"alert alert-block alert-info\">\n", "<div class=\"alert alert-block alert-info\">\n",
"<h1> Inżynieria uczenia maszynowego </h1>\n", "<h1> Inżynieria uczenia maszynowego </h1>\n",
"<h2> 0. <i>Informacje organizacyjne</i> [laboratoria]</h2> \n", "<h2> 0. <i>Informacje organizacyjne</i> [laboratoria]</h2> \n",
"<h3> Tomasz Ziętkiewicz (2022)</h3>\n", "<h3> Tomasz Ziętkiewicz (2023)</h3>\n",
"</div>\n", "</div>\n",
"\n", "\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@ -59,9 +59,10 @@
"- stopień naukowy:\tmagister inżynier\n", "- stopień naukowy:\tmagister inżynier\n",
"- stanowisko:\tdoktorant\n", "- stanowisko:\tdoktorant\n",
"- [Zakład Sztucznej Inteligencji](https://ai.wmi.amu.edu.pl/pl/)\n", "- [Zakład Sztucznej Inteligencji](https://ai.wmi.amu.edu.pl/pl/)\n",
"- CSI - Centrum Sztucznej Inteligencji, projekt Samsung\n",
"- email: tomasz.zietkiewicz@amu.edu.pl\n", "- email: tomasz.zietkiewicz@amu.edu.pl\n",
"<!-- - www: http://tz47965.home.amu.edu.pl/ -->\n", "<!-- - www: http://tz47965.home.amu.edu.pl/ -->\n",
"- https://git.wmi.amu.edu.pl/tzietkiewicz/aitech-ium\n", "- https://git.wmi.amu.edu.pl/AITech/aitech-ium\n",
"- konsultacje: \n", "- konsultacje: \n",
" - przez MS Teams po wcześniejszym umówieniu\n", " - przez MS Teams po wcześniejszym umówieniu\n",
" - pokój B2-36, wtorki 12:00 - 13:00, po wcześniejszym umówieniu" " - pokój B2-36, wtorki 12:00 - 13:00, po wcześniejszym umówieniu"
@ -99,15 +100,15 @@
"4. Konteneryzacja - Docker\n", "4. Konteneryzacja - Docker\n",
"5. Biblioteki ML\n", "5. Biblioteki ML\n",
"6. Jenkins pipeline\n", "6. Jenkins pipeline\n",
"7. Kontrola eksperymentów - Sacred\n", "7. Hugging Face Hub\n",
"8. Kontrola eksperymentów - MLFlow\n", "8. Kontrola eksperymentów - Sacred\n",
"9. Środowiska wirtualne\n", "9. Środowiska wirtualne\n",
"10. Kontrola eksperymentów - DVC\n", "10. Kontrola eksperymentów - MLFlow\n",
"11. Github Actions i CML\n", "11. Kontrola eksperymentów - DVC\n",
"12. Zarządzanie Jenkins\n", "12. Github Actions\n",
"13. Raportowanie\n", "13. Kubernetes i Kubeflow\n",
"14. Przegląd technologii\n", "14. Raportowanie wyników w formie publikacji naukowej\n",
"15. Przegląd technologii, cz. 2" "15. Prezentacja publikacji"
] ]
}, },
{ {
@ -155,7 +156,7 @@
"Zgodnie z oficjalnymi zasadami obowiązującymi w projekcie AITech, dopuszczalna liczba nieobecności na zajęciach wynosi 3 (obowiązkowa obecność na 80% zajęć).\n", "Zgodnie z oficjalnymi zasadami obowiązującymi w projekcie AITech, dopuszczalna liczba nieobecności na zajęciach wynosi 3 (obowiązkowa obecność na 80% zajęć).\n",
"Powyżej 3 nieobecności przemiot nie może być zaliczony.\n", "Powyżej 3 nieobecności przemiot nie może być zaliczony.\n",
"\n", "\n",
"Arkusz z obecnościami 2022: https://uam.sharepoint.com/:x:/r/sites/2022SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11/Shared%20Documents/General/IUM_2022-punkty-obecnosci.xlsx?d=wbb3bd617ca544c08b2cecd196b3bd383&csf=1&web=1&e=5LZlpq" "Arkusz z obecnościami 2023: https://uam.sharepoint.com/:x:/s/2023SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11/EWdi4uIh2AVBmlYx-2j4cpgBEDUOWviU1QHUayM98EuuIw?e=fe4uxl"
] ]
} }
], ],
@ -164,7 +165,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -179,7 +180,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -12,7 +12,7 @@
"<div class=\"alert alert-block alert-info\">\n", "<div class=\"alert alert-block alert-info\">\n",
"<h1> Inżynieria uczenia maszynowego </h1>\n", "<h1> Inżynieria uczenia maszynowego </h1>\n",
"<h2> 1. <i>Wprowadzenie</i> [laboratoria]</h2> \n", "<h2> 1. <i>Wprowadzenie</i> [laboratoria]</h2> \n",
"<h3> Tomasz Ziętkiewicz (2021)</h3>\n", "<h3> Tomasz Ziętkiewicz (2023)</h3>\n",
"</div>\n", "</div>\n",
"\n", "\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@ -115,6 +115,7 @@
"source": [ "source": [
"## 1.2.1 Systemy ciągłej integracji\n", "## 1.2.1 Systemy ciągłej integracji\n",
" - Jenkins <br/><img style=\"height: 50px;\" src=\"img/ci/jenkins.png\"/>\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", " - 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", " - 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", " - Team City <br/><img style=\"height: 50px;\" src=\"img/ci/teamcity.png\"/>\n",
@ -205,7 +206,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -220,7 +221,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -12,7 +12,7 @@
"<div class=\"alert alert-block alert-info\">\n", "<div class=\"alert alert-block alert-info\">\n",
"<h1> Inżynieria uczenia maszynowego </h1>\n", "<h1> Inżynieria uczenia maszynowego </h1>\n",
"<h2> 2. <i>Dane</i> [laboratoria]</h2> \n", "<h2> 2. <i>Dane</i> [laboratoria]</h2> \n",
"<h3> Tomasz Ziętkiewicz (2021)</h3>\n", "<h3> Tomasz Ziętkiewicz (2023)</h3>\n",
"</div>\n", "</div>\n",
"\n", "\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@ -96,7 +96,8 @@
"- Semeval: https://semeval.github.io/ - zadania z semantyki\n", "- Semeval: https://semeval.github.io/ - zadania z semantyki\n",
"- Poleval: http://poleval.pl/ - przetwarzanie języka polskiego\n", "- Poleval: http://poleval.pl/ - przetwarzanie języka polskiego\n",
"- WMT http://www.statmt.org/wmt20/ (tłumaczenie maszynowe)\n", "- WMT http://www.statmt.org/wmt20/ (tłumaczenie maszynowe)\n",
"- IWSLT https://iwslt.org/2021/#shared-tasks (tłumaczenie mowy)" "- IWSLT https://iwslt.org/2021/#shared-tasks (tłumaczenie mowy)\n",
"- CNLPS - Challenges for Natural Language Processing - https://fedcsis.org/sessions/aaia/cnlps"
] ]
}, },
{ {
@ -108,6 +109,7 @@
}, },
"source": [ "source": [
"## Repozytoria/wyszukiwarki otwartych zbiorów danych\n", "## Repozytoria/wyszukiwarki otwartych zbiorów danych\n",
"- Huggingface Datasets: https://huggingface.co/datasets\n",
"- Papers with code: https://paperswithcode.com/datasets\n", "- Papers with code: https://paperswithcode.com/datasets\n",
"- UCI Machine Learning Repository: https://archive.ics.uci.edu/ml/ (University of California)\n", "- UCI Machine Learning Repository: https://archive.ics.uci.edu/ml/ (University of California)\n",
"- Google dataset search: https://datasetsearch.research.google.com/\n", "- Google dataset search: https://datasetsearch.research.google.com/\n",
@ -1551,7 +1553,7 @@
"- Skrypt możesz napisać w swoim ulubionym języku. Jedyne ograniczenie: ma działać pod Linuxem\n", "- Skrypt możesz napisać w swoim ulubionym języku. Jedyne ograniczenie: ma działać pod Linuxem\n",
"- Wygodnie będzie stworzyć zeszyt Jupyter w tym celu (choć nie jest to konieczne)\n", "- Wygodnie będzie stworzyć zeszyt Jupyter w tym celu (choć nie jest to konieczne)\n",
"- Stwórz na wydziałowym serwerze git (http://git.wmi.amu.edu.pl/) repozytorium \"ium_nrindeksu\" i umieść w nim stworzony skrypt\n", "- Stwórz na wydziałowym serwerze git (http://git.wmi.amu.edu.pl/) repozytorium \"ium_nrindeksu\" i umieść w nim stworzony skrypt\n",
"- Link do repozytorium wklej do arkusza ze zbiorami: https://uam.sharepoint.com/:x:/s/2022SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11/EaID4LM20YhOhxxL-VHxPogBCTq4uXpLHQAzrCeDzPv1dw?e=HfXKqB\n" "- Link do repozytorium wklej do arkusza ze zbiorami: https://uam.sharepoint.com/:x:/r/sites/2023SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11/Shared%20Documents/General/IUM-2023-zapisy.xlsx?d=w49d444e07d864d2997ef7d72c5a47da0&csf=1&web=1&e=aeDtve\n"
] ]
}, },
{ {
@ -1573,7 +1575,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -1588,7 +1590,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -298,9 +298,10 @@
"\n", "\n",
"1. Wybierz jeden z frameworków ML (jeden z powyższych, ale może być też inny) i zaimplementuj w nim prostą sieć neuronową rozwiązującą wybrany problem (np regresji lub klasyfikacji) na wybranym na poprzednich zajęciach zbiorze. Możesz wzorować się (lub nawet skopiować) na jednym z tutotoriali do danego frameworka.\n", "1. Wybierz jeden z frameworków ML (jeden z powyższych, ale może być też inny) i zaimplementuj w nim prostą sieć neuronową rozwiązującą wybrany problem (np regresji lub klasyfikacji) na wybranym na poprzednich zajęciach zbiorze. Możesz wzorować się (lub nawet skopiować) na jednym z tutotoriali do danego frameworka.\n",
" - wczytaj dane trenujące z pliku [2 pkt.]\n", " - wczytaj dane trenujące z pliku [2 pkt.]\n",
" - wytrenuj na nich model [8 pkt.]\n", " - wytrenuj na nich model [6 pkt.]\n",
" - przy jego pomocy dokonaj klasyfikacji/regresji na danych ze zbioru testującego [8 pkt.]\n", " - zapisz model do pliku [2 pkt.]\n",
" - zapisz wyniki zwrócone przez model do pliku [2 pkt.]<br>\n", " - w osobnym skypcie, przy pomocy zapisanego wcześniej modelu, dokonaj predykcji na danych ze zbioru testującego [8 pkt.]\n",
" - zapisz wyniki predykcji zwrócone przez model do pliku (nie metryki, tylko wyniki predykcji, czyli te informacje, które model miał przewidzieć) [2 pkt.]<br>\n",
" Uwagi:\n", " Uwagi:\n",
" - wyniki nie są najważniejsze - o ile twój model nie zwraca losowych danych ;)\n", " - wyniki nie są najważniejsze - o ile twój model nie zwraca losowych danych ;)\n",
" - nie musisz wnikać głęboko w szczegóły trenowania modelu i inferencji. W tym zadaniu chodzi o poznanie API i praktycznych aspektów\n", " - nie musisz wnikać głęboko w szczegóły trenowania modelu i inferencji. W tym zadaniu chodzi o poznanie API i praktycznych aspektów\n",
@ -316,7 +317,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -331,7 +332,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -204,21 +204,26 @@
"## Zadanie 2 [15 pkt] (termin: 2 V 2022)\n", "## Zadanie 2 [15 pkt] (termin: 2 V 2022)\n",
"1. Stwórz na Jenkins projekt typu Multibranch pipeline o nazwie s123456-evaluation.\n", "1. Stwórz na Jenkins projekt typu Multibranch pipeline o nazwie s123456-evaluation.\n",
" Projekt ten będzie przeprowadzał ewaluację modelu stworzonego w s123456-training na danych ze zbioru trenującego [1 pkt]\n", " Projekt ten będzie przeprowadzał ewaluację modelu stworzonego w s123456-training na danych ze zbioru trenującego [1 pkt]\n",
"2. Ewaluacja polega na wyliczeniu zbiorczych metryk (1-3 metryki) na zbiorze testującym (np. Accuracy, Micro-avg precission/recall, F1, RMSE - patrz [wykład 4. \"Metody ewaluacji\"])(https://git.wmi.amu.edu.pl/AITech/aitech-uma/src/branch/master/wyk/04_Metody_ewaluacji.ipynb) z przedmiotu Uczenie Maszynowe), zapisaniu metryk(i( do pliku i zarchiwizowaniu go [3 pkt]\n", "2. Ewaluacja polega na:\n",
" - wczytaniu wytrenowanego wcześniej modelu\n",
" - dokonaniu predykcji na zbiorze testowym za pomocą wczytanego modelu i zapisanie wyników tej predykcji do pliku\n",
" - wyliczeniu zbiorczych metryk (1-3 metryki) na zbiorze testującym (np. Accuracy, Micro-avg precission/recall, F1, RMSE - patrz [wykład 4. \"Metody ewaluacji\"])(https://git.wmi.amu.edu.pl/AITech/aitech-uma/src/branch/master/wyk/04_Metody_ewaluacji.ipynb) z przedmiotu Uczenie Maszynowe), \n",
" - zapisaniu metryk do pliku\n",
" - zarchiwizowaniu go\n",
" [6 pkt]\n",
"3. W celu śledzenia zmian wartości metryk, zapisuj wartości kumulatywnie w jednym pliku. Żeby to osiągnąć można: \n", "3. W celu śledzenia zmian wartości metryk, zapisuj wartości kumulatywnie w jednym pliku. Żeby to osiągnąć można: \n",
" - zapisywać metryki w ścieżce zewnątrznej w stosunku do Jenkinsa (w innym przypadku mogą zostać nadpisane np. podczas checkout repozytorium) - tej opcji nie wykorzystamy\n", " - zapisywać metryki w ścieżce zewnątrznej w stosunku do Jenkinsa (w innym przypadku mogą zostać nadpisane np. podczas checkout repozytorium) - tej opcji nie wykorzystamy\n",
" - dopisywać metrykę do końca pliku skopiowanego z artefaktów poprzedniego builda (należy uczynić kopiowanie tego artefaktu opcjonalnym, żeby pierwszt build na danym branchu nie \"wywalił się\" przy próbie skopiowania artefaktów z nieistniejącego joba) [2 pkt]\n", " - dopisywać metrykę do końca pliku skopiowanego z artefaktów poprzedniego builda (należy uczynić kopiowanie tego artefaktu opcjonalnym, żeby pierwszt build na danym branchu nie \"wywalił się\" przy próbie skopiowania artefaktów z nieistniejącego joba) [2 pkt]\n",
"4. Mając skumulowane wartości metryk z wszystkich dotychczasowych buildów, stwórz wykres: na osi X numer builda, na osi Y wartość metryk(i). [3 pkt]\n", "4. Mając skumulowane wartości metryk z wszystkich dotychczasowych buildów, stwórz wykres: na osi X numer builda, na osi Y wartość metryk(i). [2 pkt]\n",
" Możesz w tym celu użyć:\n", " Możesz w tym celu użyć:\n",
" - pluginu [plot](https://plugins.jenkins.io/plot)\n", " - pluginu [plot](https://plugins.jenkins.io/plot)\n",
" - [Matplotlib](https://matplotlib.org/) - biblioteka pythonowa - w tym przypadku archiwizuj wygenerowany obrazek z wykresem\n", " - [Matplotlib](https://matplotlib.org/) - biblioteka pythonowa - w tym przypadku archiwizuj wygenerowany obrazek z wykresem\n",
" - [Gnuplot](http://www.gnuplot.info/) - w tym przypadku archiwizuj wygenerowany obrazek z wykresem\n", " - [Gnuplot](http://www.gnuplot.info/) - w tym przypadku archiwizuj wygenerowany obrazek z wykresem\n",
"5. Projekt powinien odpalać się automatycznie po zakończonym trenowaniu (s123456-training) i kopiować model z artefaktów. Zauważ, że żeby odpalony projekt (s123456-evaluation) skopiował artefakty z odpowiedniego brancha (tego, który go odpalił), projekt s123456-evaluation musi być wywołany przez s123456-training z odpowiednią wartością parametru branch (patrz punkt 7.) [2pkt]\n", "5. Projekt powinien odpalać się automatycznie po zakończonym trenowaniu (s123456-training) i kopiować model z artefaktów. Zauważ, że żeby odpalony projekt (s123456-evaluation) skopiował artefakty z odpowiedniego brancha (tego, który go odpalił), projekt s123456-evaluation musi być wywołany przez s123456-training z odpowiednią wartością parametru branch (patrz punkt 7.) [1 pkt]\n",
"6. Dane testujące powinny być skopiowane z projektu s123456-create-dataset [1pkt]\n", "6. Dane testujące powinny być skopiowane z projektu s123456-create-dataset [1pkt]\n",
"7. Dodaj parametry umożliwiające wybór:\n", "7. Dodaj parametry umożliwiające wybór:\n",
" - gałęzi (branch) projektu s123456-training z której ma być skopiowany model. Można by tutaj użyć prostego parametru typu String, ale użyj łatwiejszego (w użytkowaniu) parametru typu \"Git parameter\" (patrz wyżej)[1 pkt]\n", " - gałęzi (branch) projektu s123456-training z której ma być skopiowany model. Można by tutaj użyć prostego parametru typu String, ale użyj łatwiejszego (w użytkowaniu) parametru typu \"Git parameter\" (patrz wyżej)[1 pkt]\n",
" - numeru builda projektu s123456-training (\"Build selector for Copy artifact\", patrz zajęcia 3.) [1pkt]\n", " - numeru builda projektu s123456-training (\"Build selector for Copy artifact\", patrz zajęcia 3.) [1pkt]"
"8. Ewaluacja modelu potrafi zająć dużo czasu. Sprawdzanie co 10 minut, czy już się zakończyła, to zły pomysł. Dodaj powiadomienie o zakończonej ewaluacji zawierające status builda oraz wynik ewaluacji (wartość obliczonej metryki) [1 pkt]"
] ]
} }
], ],

View File

@ -1621,7 +1621,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -1636,7 +1636,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.9" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -1435,7 +1435,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -1450,7 +1450,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.9" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -1742,7 +1742,7 @@
"celltoolbar": "Slideshow", "celltoolbar": "Slideshow",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -1757,7 +1757,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.9" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -568,7 +568,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 3,
"id": "c13c525b", "id": "c13c525b",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -602,7 +602,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 75, "execution_count": 4,
"id": "44f28226", "id": "44f28226",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -614,23 +614,7 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Initialized DVC repository.\n", "\u001b[31mERROR\u001b[39m: failed to initiate DVC - '.dvc' exists. Use `-f` to force.\n",
"\n",
"You can now commit the changes to git.\n",
"\n",
"\u001b[31m+---------------------------------------------------------------------+\n",
"\u001b[0m\u001b[31m|\u001b[0m \u001b[31m|\u001b[0m\n",
"\u001b[31m|\u001b[0m DVC has enabled anonymous aggregate usage analytics. \u001b[31m|\u001b[0m\n",
"\u001b[31m|\u001b[0m Read the analytics documentation (and how to opt-out) here: \u001b[31m|\u001b[0m\n",
"\u001b[31m|\u001b[0m <\u001b[36mhttps://dvc.org/doc/user-guide/analytics\u001b[39m> \u001b[31m|\u001b[0m\n",
"\u001b[31m|\u001b[0m \u001b[31m|\u001b[0m\n",
"\u001b[31m+---------------------------------------------------------------------+\n",
"\u001b[0m\n",
"\u001b[33mWhat's next?\u001b[39m\n",
"\u001b[33m------------\u001b[39m\n",
"- Check out the documentation: <\u001b[36mhttps://dvc.org/doc\u001b[39m>\n",
"- Get help and share ideas: <\u001b[36mhttps://dvc.org/chat\u001b[39m>\n",
"- Star us on GitHub: <\u001b[36mhttps://github.com/iterative/dvc\u001b[39m>\n",
"\u001b[0m" "\u001b[0m"
] ]
} }
@ -654,7 +638,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 5,
"id": "d1aefe16", "id": "d1aefe16",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -667,14 +651,9 @@
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"On branch master\r\n", "On branch master\r\n",
"\r\n",
"No commits yet\r\n",
"\r\n",
"Changes to be committed:\r\n", "Changes to be committed:\r\n",
" (use \"git rm --cached <file>...\" to unstage)\r\n", " (use \"git restore --staged <file>...\" to unstage)\r\n",
"\t\u001b[32mnew file: .dvc/.gitignore\u001b[m\r\n", "\t\u001b[32mmodified: .dvc/config\u001b[m\r\n",
"\t\u001b[32mnew file: .dvc/config\u001b[m\r\n",
"\t\u001b[32mnew file: .dvcignore\u001b[m\r\n",
"\r\n" "\r\n"
] ]
} }
@ -769,7 +748,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": 6,
"id": "f05ece1b", "id": "f05ece1b",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -781,10 +760,9 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Warning: Your Kaggle API key is readable by other users on this system! To fix this, you can run 'chmod 600 /home/tomek/.kaggle/kaggle.json'\n",
"Downloading iris.zip to /home/tomek/repos/aitech-ium/IUM_10/sample-ml-project\n", "Downloading iris.zip to /home/tomek/repos/aitech-ium/IUM_10/sample-ml-project\n",
" 0%| | 0.00/3.60k [00:00<?, ?B/s]\n", " 0%| | 0.00/3.60k [00:00<?, ?B/s]\n",
"100%|██████████████████████████████████████| 3.60k/3.60k [00:00<00:00, 1.66MB/s]\n", "100%|██████████████████████████████████████| 3.60k/3.60k [00:00<00:00, 2.10MB/s]\n",
"Archive: iris.zip\n", "Archive: iris.zip\n",
" inflating: Iris.csv \n", " inflating: Iris.csv \n",
" inflating: database.sqlite \n" " inflating: database.sqlite \n"
@ -813,7 +791,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": 7,
"id": "74d182c7", "id": "74d182c7",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -825,7 +803,7 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"\u001b[2K\u001b[32m\u001b[0m Checking graph \u001b[32m⠋\u001b[0m Checking graph\n", "\u001b[2K\u001b[32m\u001b[0m Checking graph \u001b[32m⠋\u001b[0m Checking graph\n",
"Adding... \n", "Adding... \n",
"!\u001b[A\n", "!\u001b[A\n",
" 0% Checking cache in '/home/tomek/repos/aitech-ium/IUM_10/sample-ml-project/.d\u001b[A\n", " 0% Checking cache in '/home/tomek/repos/aitech-ium/IUM_10/sample-ml-project/.d\u001b[A\n",
@ -834,17 +812,17 @@
" 0%| |Transferring 0/1 [00:00<?, ?file/s]\u001b[A\n", " 0%| |Transferring 0/1 [00:00<?, ?file/s]\u001b[A\n",
" \u001b[A\n", " \u001b[A\n",
"!\u001b[A\n", "!\u001b[A\n",
" 0%| |.oAL9GSGErYepJSZTnvkTL8.tmp 0.00/? [00:00<?, ?B/s]\u001b[A\n", " 0%| |.ZfWsiEaSUu83Mc7QqhDoTS.tmp 0.00/? [00:00<?, ?B/s]\u001b[A\n",
" 0%| |.oAL9GSGErYepJSZTnvkTL8.tmp 0.00/4.00 [00:00<?, ?B/s]\u001b[A\n", " 0%| |.ZfWsiEaSUu83Mc7QqhDoTS.tmp 0.00/4.00 [00:00<?, ?B/s]\u001b[A\n",
" \u001b[A\n", " \u001b[A\n",
"!\u001b[A\n", "!\u001b[A\n",
" 0%| |7820ef0af287ff346c5cabfb4c612c 0.00/? [00:00<?, ?B/s]\u001b[A\n", " 0%| |7820ef0af287ff346c5cabfb4c612c 0.00/? [00:00<?, ?B/s]\u001b[A\n",
" 0%| |7820ef0af287ff346c5cabfb4c612c 0.00/4.99k [00:00<?, ?B/s]\u001b[A\n", " 0%| |7820ef0af287ff346c5cabfb4c612c 0.00/4.99k [00:00<?, ?B/s]\u001b[A\n",
"100% Adding...|████████████████████████████████████████|1/1 [00:00, 2.59file/s]\u001b[A\n", "100% Adding...|████████████████████████████████████████|1/1 [00:00, 5.92file/s]\u001b[A\n",
"\n", "\n",
"To track the changes with git, run:\n", "To track the changes with git, run:\n",
"\n", "\n",
" git add data/.gitignore data/Iris.csv.dvc\n", " git add data/Iris.csv.dvc\n",
"\n", "\n",
"To enable auto staging, run:\n", "To enable auto staging, run:\n",
"\n", "\n",
@ -872,7 +850,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": 8,
"id": "74d54652", "id": "74d54652",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -885,12 +863,15 @@
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"On branch master\r\n", "On branch master\r\n",
"Untracked files:\r\n", "Changes to be committed:\r\n",
" (use \"git add <file>...\" to include in what will be committed)\r\n", " (use \"git restore --staged <file>...\" to unstage)\r\n",
"\t\u001b[31mdata/.gitignore\u001b[m\r\n", "\t\u001b[32mmodified: .dvc/config\u001b[m\r\n",
"\t\u001b[31mdata/Iris.csv.dvc\u001b[m\r\n",
"\r\n", "\r\n",
"nothing added to commit but untracked files present (use \"git add\" to track)\r\n" "Changes not staged for commit:\r\n",
" (use \"git add <file>...\" to update what will be committed)\r\n",
" (use \"git restore <file>...\" to discard changes in working directory)\r\n",
"\t\u001b[31mmodified: data/Iris.csv.dvc\u001b[m\r\n",
"\r\n"
] ]
} }
], ],
@ -912,7 +893,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": 9,
"id": "460c4a17", "id": "460c4a17",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -926,7 +907,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": 10,
"id": "80644077", "id": "80644077",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -938,10 +919,8 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"[master 67214ea] Dodano dane IRIS (DVC)\n", "[master b37a8d8] Dodano dane IRIS (DVC)\r\n",
" 2 files changed, 5 insertions(+)\n", " 2 files changed, 2 insertions(+), 6 deletions(-)\r\n"
" create mode 100644 data/.gitignore\n",
" create mode 100644 data/Iris.csv.dvc\n"
] ]
} }
], ],
@ -1243,7 +1222,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 32, "execution_count": 12,
"id": "dde39796", "id": "dde39796",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1257,7 +1236,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 33, "execution_count": 13,
"id": "7f14ec60", "id": "7f14ec60",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1280,7 +1259,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 34, "execution_count": 14,
"id": "8a841039", "id": "8a841039",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1305,7 +1284,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 35, "execution_count": 15,
"id": "bf6c1067", "id": "bf6c1067",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1326,13 +1305,13 @@
" 0%| |Transferring 0/1 [00:00<?, ?file/s]\u001b[A\n", " 0%| |Transferring 0/1 [00:00<?, ?file/s]\u001b[A\n",
" \u001b[A\n", " \u001b[A\n",
"!\u001b[A\n", "!\u001b[A\n",
" 0%| |.GbNyfXVqWGYkQKjqaSP8tL.tmp 0.00/? [00:00<?, ?B/s]\u001b[A\n", " 0%| |.AquCc93WCb2aAJ98voTeFG.tmp 0.00/? [00:00<?, ?B/s]\u001b[A\n",
" 0%| |.GbNyfXVqWGYkQKjqaSP8tL.tmp 0.00/4.00 [00:00<?, ?B/s]\u001b[A\n", " 0%| |.AquCc93WCb2aAJ98voTeFG.tmp 0.00/4.00 [00:00<?, ?B/s]\u001b[A\n",
" \u001b[A\n", " \u001b[A\n",
"!\u001b[A\n", "!\u001b[A\n",
" 0%| |cff2e578d76852294184c1dce9fdbf 0.00/? [00:00<?, ?B/s]\u001b[A\n", " 0%| |4705c4d470a4d9dd152808e5e9f56f 0.00/? [00:00<?, ?B/s]\u001b[A\n",
" 0%| |cff2e578d76852294184c1dce9fdbf 0.00/4.95k [00:00<?, ?B/s]\u001b[A\n", " 0%| |4705c4d470a4d9dd152808e5e9f56f 0.00/4.92k [00:00<?, ?B/s]\u001b[A\n",
"100% Adding...|████████████████████████████████████████|1/1 [00:00, 11.00file/s]\u001b[A\n", "100% Adding...|████████████████████████████████████████|1/1 [00:00, 11.09file/s]\u001b[A\n",
"\n", "\n",
"To track the changes with git, run:\n", "To track the changes with git, run:\n",
"\n", "\n",
@ -1351,7 +1330,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 36, "execution_count": 16,
"id": "4a4865c9", "id": "4a4865c9",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1363,7 +1342,7 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"[master d6ff265] Removed last line from Iris dataset\r\n", "[master 5379e3b] Removed last line from Iris dataset\r\n",
" 1 file changed, 2 insertions(+), 2 deletions(-)\r\n" " 1 file changed, 2 insertions(+), 2 deletions(-)\r\n"
] ]
} }
@ -1788,7 +1767,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 65, "execution_count": 17,
"id": "e9a04876", "id": "e9a04876",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1811,7 +1790,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 66, "execution_count": 18,
"id": "e3f27bbb", "id": "e3f27bbb",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1823,7 +1802,6 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"my_local_remote\t/dvcstore\n",
"ium_ssh_remote\tssh://ium-sftp@tzietkiewicz.vm.wmi.amu.edu.pl\n", "ium_ssh_remote\tssh://ium-sftp@tzietkiewicz.vm.wmi.amu.edu.pl\n",
"\u001b[0m" "\u001b[0m"
] ]
@ -1843,7 +1821,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 67, "execution_count": 19,
"id": "5b2fa175", "id": "5b2fa175",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1865,7 +1843,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 68, "execution_count": 20,
"id": "ea6e16fa", "id": "ea6e16fa",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
@ -1877,7 +1855,11 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Everything is up to date. \n", " 0% Transferring| |0/1 [00:00<?, ?file/s]\n",
"!\u001b[A\n",
" 0%| |4705c4d470a4d9dd152808e5e9f56f 0.00/? [00:00<?, ?B/s]\u001b[A\n",
" 0%| |4705c4d470a4d9dd152808e5e9f56f 0.00/4.92k [00:00<?, ?B/s]\u001b[A\n",
"1 file pushed \u001b[A\n",
"\u001b[0m" "\u001b[0m"
] ]
} }
@ -1930,6 +1912,63 @@
" - https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/docker-test-mount/ \n", " - https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/docker-test-mount/ \n",
" - https://git.wmi.amu.edu.pl/tzietkiewicz/ium-helloworld" " - https://git.wmi.amu.edu.pl/tzietkiewicz/ium-helloworld"
] ]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c6fd9e8d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Everything is up to date. \n",
"\u001b[0m"
]
}
],
"source": [
"!dvc pull"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3efbcba0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"error: remote origin already exists.\n",
"Enumerating objects: 24, done.\n",
"Counting objects: 100% (24/24), done.\n",
"Delta compression using up to 4 threads\n",
"Compressing objects: 100% (21/21), done.\n",
"Writing objects: 100% (24/24), 2.10 KiB | 715.00 KiB/s, done.\n",
"Total 24 (delta 4), reused 0 (delta 0), pack-reused 0\n",
"remote: . Processing 1 references\u001b[K\n",
"remote: Processed 1 references in total\u001b[K\n",
"To git.wmi.amu.edu.pl:tzietkiewicz/sample-ml-project.git\n",
" * [new branch] master -> master\n",
"Branch 'master' set up to track remote branch 'master' from 'origin'.\n"
]
}
],
"source": [
"!git remote add origin git@git.wmi.amu.edu.pl:tzietkiewicz/sample-ml-project.git\n",
"!git push --set-upstream origin master"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "67896105",
"metadata": {},
"outputs": [],
"source": []
} }
], ],
"metadata": { "metadata": {

View File

@ -13,7 +13,7 @@
"<div class=\"alert alert-block alert-info\">\n", "<div class=\"alert alert-block alert-info\">\n",
"<h1> Inżynieria uczenia maszynowego </h1>\n", "<h1> Inżynieria uczenia maszynowego </h1>\n",
"<h2> 11. <i>Github actions i CML</i> [laboratoria]</h2> \n", "<h2> 11. <i>Github actions i CML</i> [laboratoria]</h2> \n",
"<h3> Tomasz Ziętkiewicz (2021)</h3>\n", "<h3> Tomasz Ziętkiewicz (2022)</h3>\n",
"</div>\n", "</div>\n",
"\n", "\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
@ -70,13 +70,13 @@
"source": [ "source": [
"### Terminologia Github Actions\n", "### Terminologia Github Actions\n",
" - *Workflow* - workflow odpowiada \"Pipeline\" z Jenkinsa.\n", " - *Workflow* - workflow odpowiada \"Pipeline\" z Jenkinsa.\n",
" - *Event* - zdażenie, które odapala (\"triggers\") uruchomienie \"Workflow\". Np. wypchnięcie zmiany do repozytorium (\"push\"), utworzenie Pull requesta. [Pełna lista](https://docs.github.com/en/actions/reference/events-that-trigger-workflows)\n",
" - *Job* - workflow składa się z jednego lub kilku \"jobs\". Każdy z nich może być wykonywany równolegle na innej maszynie (patrz \"runner\")\n", " - *Job* - workflow składa się z jednego lub kilku \"jobs\". Każdy z nich może być wykonywany równolegle na innej maszynie (patrz \"runner\")\n",
" - *Step* - odpowiednik \"Stage\" z Jenkinsa - służu do grupowania \"Actions\"\n", " - *Step* - odpowiednik \"Stage\" z Jenkinsa - służu do grupowania \"Actions\"\n",
" - *Action* - odpowiednik \"Step\" z Jenkinsa - pojedyncze polecenie do wykonania, np. dodanie komentarze do Pull requesta, wykonanie polecenia systemowego itp.\n", " - *Action/command* - odpowiednik \"Step\" z Jenkinsa - pojedyncze polecenie do wykonania, np. dodanie komentarze do Pull requesta, wykonanie polecenia systemowego itp.\n",
" - *Runner* - odpowiednik Jenkinsowego \"Agent\" - serwer, na którym mogą być wykonywane zadania (\"jobs\")\n", " - *Runner* - odpowiednik Jenkinsowego \"Agent\" - serwer, na którym mogą być wykonywane zadania (\"jobs\")\n",
" - *Github-hosted runner* - serwer utrzymywany przez Github (2-core CPU, 7 GB RAM, 14 GB SSD). Windows, Linux albo macOS\n", " - *Github-hosted runner* - serwer utrzymywany przez Github (2-core CPU, 7 GB RAM, 14 GB SSD). Windows, Linux albo macOS\n",
" - *Self-hosted runner* - nasz własny serwer, z zinstalowaną aplikacją [Github actions runner](https://github.com/actions/runner)\n", " - *Self-hosted runner* - nasz własny serwer, z zinstalowaną aplikacją [Github actions runner](https://github.com/actions/runner)"
" - *Event* - zdażenie, które odapala (\"triggers\") uruchomienie Workflow. Np. wypchnięcie zmiany do repozytorium (\"push\"), utworzenie Pull requesta. [Pełna lista](https://docs.github.com/en/actions/reference/events-that-trigger-workflows)"
] ]
}, },
{ {
@ -89,7 +89,7 @@
}, },
"source": [ "source": [
"### Definicja workflow\n", "### Definicja workflow\n",
" - Workflow definiuje się w plikach YAM(o rozszerzeniu `*.yml` albo `*.yaml`) umieszczonych w specjalnym folderze `.github/workflows/` wewnątrz repozytorium\n", " - Workflow definiuje się w plikach YAML(o rozszerzeniu `*.yml` albo `*.yaml`) umieszczonych w specjalnym folderze `.github/workflows/` wewnątrz repozytorium\n",
" - Pełna składnia jest opisana [tutaj](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions)\n", " - Pełna składnia jest opisana [tutaj](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions)\n",
" - Podstawowe pola:\n", " - Podstawowe pola:\n",
" - `name` [opcjonalna] - nazwa, pod którą workflow/step będzie widoczny w UI. Domyślnie ścieżka do pliku yaml\n", " - `name` [opcjonalna] - nazwa, pod którą workflow/step będzie widoczny w UI. Domyślnie ścieżka do pliku yaml\n",
@ -547,7 +547,7 @@
} }
}, },
"source": [ "source": [
"## Zadania\n", "## Zadania [15 pkt]\n",
"1. Utwórz konto na Github (jeśli jeszcze nie masz)\n", "1. Utwórz konto na Github (jeśli jeszcze nie masz)\n",
"2. Stwórz publiczne repozytorium. Link do niego wklej do kolumny \"Link Github\" w arkuszu [\"Zapisy na zbiory\"](https://teams.microsoft.com/l/file/F62B5988-A797-418D-B085-52E0AF8BD55E?tenantId=73689ee1-b42f-4e25-a5f6-66d1f29bc092&fileType=xlsx&objectUrl=https%3A%2F%2Fuam.sharepoint.com%2Fsites%2F2021SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11%2FShared%20Documents%2FGeneral%2FZapisy%20na%20zbiory.xlsx&baseUrl=https%3A%2F%2Fuam.sharepoint.com%2Fsites%2F2021SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11&serviceName=teams&threadId=19:d67b0dc2ee0849eba517a2aa8507df9c@thread.tacv2&groupId=8cd6b30e-edd9-48db-85ab-259fc11d0c5b) [1 pkt]\n", "2. Stwórz publiczne repozytorium. Link do niego wklej do kolumny \"Link Github\" w arkuszu [\"Zapisy na zbiory\"](https://teams.microsoft.com/l/file/F62B5988-A797-418D-B085-52E0AF8BD55E?tenantId=73689ee1-b42f-4e25-a5f6-66d1f29bc092&fileType=xlsx&objectUrl=https%3A%2F%2Fuam.sharepoint.com%2Fsites%2F2021SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11%2FShared%20Documents%2FGeneral%2FZapisy%20na%20zbiory.xlsx&baseUrl=https%3A%2F%2Fuam.sharepoint.com%2Fsites%2F2021SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11&serviceName=teams&threadId=19:d67b0dc2ee0849eba517a2aa8507df9c@thread.tacv2&groupId=8cd6b30e-edd9-48db-85ab-259fc11d0c5b) [1 pkt]\n",
"2. Stwórz prosty Github workflow wykorzystujący akcje CML, który:\n", "2. Stwórz prosty Github workflow wykorzystujący akcje CML, który:\n",
@ -562,7 +562,7 @@
"author": "Tomasz Ziętkiewicz", "author": "Tomasz Ziętkiewicz",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -577,7 +577,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -66,7 +66,7 @@
"author": "Tomasz Ziętkiewicz", "author": "Tomasz Ziętkiewicz",
"email": "tomasz.zietkiewicz@amu.edu.pl", "email": "tomasz.zietkiewicz@amu.edu.pl",
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -81,7 +81,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.1" "version": "3.10.4"
}, },
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"

View File

@ -21,20 +21,186 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "harmful-bachelor", "id": "a5f10a0e",
"metadata": {},
"source": [
"# Abstract\n",
"- Umiejętność pisania artykułu naukowego może okazać się przydatna dla osób zajmujących się uczeniem maszynowym.\n",
"- Zastosowanie klarownej struktury dokumentu ułatwia jego odbiór jak i tworzenie.\n",
"- LaTeX + Overleaf jaka narzędzia do składu artykułu"
]
},
{
"cell_type": "markdown",
"id": "35d3630d",
"metadata": {},
"source": [
"## Introduction\n",
"\n",
"- Uczenie maszynowe i jego zastosowania to prężnie rozwijająca się dziedzina nauki\n",
"- Żeby nadążyć za jej rozwojem musimy czytać artykuły naukowe\n",
"- A jeśli nasza praca ma charakter badawczy, to warto taki artykuł napisać i opublikować\n",
"- Nasz pracodawca może od nas tego wymagać lub przynajmniej zachęcać\n",
"- Dlatego zapoznamy się z:\n",
"1. Strukturą artykułu naukowego\n",
"2. Technicznymi aspektami jego tworzenia"
]
},
{
"cell_type": "markdown",
"id": "1033fc4d",
"metadata": {},
"source": [
"### Related work\n",
"\n",
"Jak napisać artykuł naukowy z dziedziny ML:\n",
"- http://www.isle.org/~langley/papers/craft.ml2k.pdf / https://icml.cc/Conferences/2002/craft.html\n",
"- https://www.researchgate.net/publication/337857231_How_to_Write_a_Machine_Learning_Paper_for_not_so_Dummies/comments\n",
"- https://towardsdatascience.com/writing-more-successful-machine-learning-research-papers-39863ca9ea90\n",
"- https://towardsdatascience.com/tips-for-reading-and-writing-an-ml-research-paper-a505863055cf\n",
"\n",
"Dobre wyjaśnienie struktury artykułu naukowego znajdziemy w napisanym po polsku artykule\n",
"- https://ekulczycki.pl/warsztat_badacza/struktura-artykulu-naukowego-uniwersalne-wytyczne-i-przydatne-wskazowki/"
]
},
{
"cell_type": "markdown",
"id": "2c7eb238",
"metadata": {},
"source": [
"## Methods"
]
},
{
"cell_type": "markdown",
"id": "changed-president",
"metadata": { "metadata": {
"slideshow": { "slideshow": {
"slide_type": "slide" "slide_type": "slide"
} }
}, },
"source": [ "source": [
"## Latex\n", "### Struktura artykułu naukowego\n",
"Struktura [(A)IMRaD](https://en.wikipedia.org/wiki/IMRAD):\n",
"\n",
"0. Abstrakt (**A**bstract) - Dlaczego, jak, \n",
"1. Wprowadzenie (**I**ntroduction) - \"Dlaczego?\"\n",
" \n",
" 1.1 Related work - \"Kontekst naukowy\"\n",
"2. Metody (**M**ethod) - \"Jak?\"\n",
"3. Wyniki (**R**esults) - \"Co?\"\n",
"4. Wnioski (**D**iscussion/Conclusions) - \"Interpretacja wyników\""
]
},
{
"cell_type": "markdown",
"id": "8cb9b025",
"metadata": {},
"source": [
"<img src=\"https://upload.wikimedia.org/wikipedia/commons/7/75/Wineglass_model_for_IMRaD_structure..png\"/>"
]
},
{
"cell_type": "markdown",
"id": "d3e245eb",
"metadata": {},
"source": [
"#### Tytuł\n",
"- powinien odzwierciedlać treść artykułu ;)\n",
"- nie za długi (< 12 wyrazów)\n",
"- lepiej, żeby nie był pytaniem (patrz [Prawo nagłówków Betteridge'a](https://pl.wikipedia.org/wiki/Prawo_nag%C5%82%C3%B3wk%C3%B3w_Betteridge%E2%80%99a), choć [niekoniecznie](https://link.springer.com/article/10.1007/s11192-016-2030-2))\n",
"- dobry artykuł może mieć krótki, chwytliwy tytuł, szczególnie, jeśli autorzy mają renomę ;) Przykłady:\n",
" - [\"Attention Is All You Need\"](https://arxiv.org/abs/1706.03762)"
]
},
{
"cell_type": "markdown",
"id": "1f150ddb",
"metadata": {},
"source": [
"#### Abstrakt\n",
"\n",
"- stanowi samodzielną całość - powinien być zrozumiały bez reszty artykułu\n",
"- jest bardzo istotny - stanowi \"reklamówkę\" naszej pracy - ma zachęcić do lektury\n",
"- powinien zawierać wszystkie najważniejsz elementy artykułu i mieć podobną strukturę (IMRaD)"
]
},
{
"cell_type": "markdown",
"id": "6005b4bd",
"metadata": {},
"source": [
"#### Wprowadzenie\n",
" - Kontekst badań\n",
" - Motywacja\n",
" - Co chcemy właściwie zbadać - sformułowanie hipotezy badawczej"
]
},
{
"cell_type": "markdown",
"id": "1308de25",
"metadata": {},
"source": [
"#### Related work\n",
" - Kontekst naukowy\n",
" - Co zrobiono przed nami\n",
" - Musimy się do tego odnieść w dalszej części i zaznaczyć co nasze badania wnoszą nowego do dziedziny\n",
" - Cytujemy najważniejsze prace\n",
" - Najlepiej zaczącć szeroko i w przeszłości i stopniowo przechodzili do coraz nowszych i bardziej szczegółowych badań, bliżej związanych z tematyką poruszaną w naszym artykule."
]
},
{
"cell_type": "markdown",
"id": "b6cf4464",
"metadata": {},
"source": [
"#### Metody\n",
"- Jak przeprowadziliśmy nasze badania/eksperymenty\n",
"- Informacje tu zawarte w powinny umożliwić zreprodukowanie naszych wyników innym badaczom\n",
"- Opisujemy:\n",
" - Dane\n",
" - Algorytmy/architekturę\n",
" - możemy, choć nie musimy, podać techniczne szczegóły dotyczące implementacji, np. użyty framework. Zazwyczaj jednak kwestie techniczne nie są istotne i możemy od nich abstachować a na potrzeby reprodukowalności wyników najlepiej po prostu opublikować kod źródłowy/dane i wspomnieć o tym w artykule\n",
" - Procedurę ewaluacji/testowania\n",
"- Warto na naszych dancyh przetestować metodą bazową (\"baseline\") - np. obecny SOTA (\"State of the art\"), żeby potem móc do niej porównać nasze rozwiązanie."
]
},
{
"cell_type": "markdown",
"id": "5aee7988",
"metadata": {},
"source": [
"#### Wyniki\n",
"- Jakie wyniki otrzymaliśmy\n",
"- Powstrzymajmy się z ich interpretacją\n",
"- Możemy dokonywać porównań, ale z opiniami w stylu \"Nasze podejście deklasuje obecny SOTA\" (State Of The Art) poczekajmy do następnej sekcji"
]
},
{
"cell_type": "markdown",
"id": "7be88b24",
"metadata": {},
"source": [
"#### Konkluzje\n",
"- Interpretacja wyników\n",
"- Jakie jest ich znaczenie?\n",
"- Jak prezentują się w szerszym kontekście\n",
"- Tak jak we wprowaszeniu przechodzimy od ogółu do szczegółu (zawężamy perspektywę), tutaj postępujemy odwrotnie - zaczynając od szczegółowej interpretacji przechodzimy do znaczenia wyników w szerszym kontekście"
]
},
{
"cell_type": "markdown",
"id": "4753cf22",
"metadata": {},
"source": [
"### Latex\n",
"\n", "\n",
"- LaTeX (wym. *Latech*) to system składu tekstu\n", "- LaTeX (wym. *Latech*) to system składu tekstu\n",
"- Najbardziej popularny w dziedzinach technicznych\n",
"- https://www.latex-project.org//\n", "- https://www.latex-project.org//\n",
"- Podejście [WYSIWYM](https://pl.wikipedia.org/wiki/WYSIWYM)(\"What you see is what you mean\") w przeciwieństwie do WYSIWIG (What you see is what you get).\n", "- Podejście [WYSIWYM](https://pl.wikipedia.org/wiki/WYSIWYM)(\"What you see is what you mean\") w przeciwieństwie do WYSIWIG (What you see is what you get - przykład: Word).\n",
"- Piszemy tekst ze znacznikami, kompipujemy, dostajemy gotowy dokument, np. pdf\n", "- Piszemy tekst ze znacznikami, kompilujemy, dostajemy gotowy dokument, np. pdf\n",
"- Stosowany powszechnie do pisania publikacji naukowych na konferencje, do czasopism i książek\n", "- Stosowany powszechnie do pisania publikacji naukowych (artykułów, książek jak i rozpraw nukowych)\n",
"- Pozwala łatwo zmienić styl/szablon\n", "- Pozwala łatwo zmienić styl/szablon\n",
"- W założeniu, podczas pisania skupiamy się na treści i strukturze a LaTeX sam zatroszczy się o wygląd\n", "- W założeniu, podczas pisania skupiamy się na treści i strukturze a LaTeX sam zatroszczy się o wygląd\n",
"- Przystępna dokumentacja: https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes" "- Przystępna dokumentacja: https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes"
@ -42,7 +208,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "d9a75fe6", "id": "918e3b39",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Struktura\n", "### Struktura\n",
@ -178,7 +344,7 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "dfb6a34c", "id": "3ea5c879",
"metadata": {}, "metadata": {},
"source": [ "source": [
"```bibtex\n", "```bibtex\n",
@ -244,50 +410,22 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "changed-president", "id": "e1822b3c",
"metadata": { "metadata": {},
"slideshow": {
"slide_type": "slide"
}
},
"source": [ "source": [
"## Części artykułu naukowego\n", "### JupyterBook\n",
"1. Abstract\n", "https://jupyterbook.org/en/stable/intro.html\n"
]
},
{
"cell_type": "markdown",
"id": "ceef2f3f",
"metadata": {},
"source": [
"### The Turing Way\n",
"*The Turing Way handbook to reproducible, ethical and collaborative data science*\n",
"\n", "\n",
"2. Introduction - \"Dlaczego?\"\n", "https://the-turing-way.netlify.app/welcome.html"
"3. Related work - \"Kontekst naukowy\"\n",
"4. Method - \"Jak?\"\n",
"5. Results - \"Co?\"\n",
"6. Conclusions/Discussion - \"Interpretacja wyników\""
]
},
{
"cell_type": "markdown",
"id": "challenging-student",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"![Tajny język naukowców](https://i1.kwejk.pl/k/obrazki/2017/10/2b48483a6c4f274aa276732e41f856af.jpg)"
]
},
{
"cell_type": "markdown",
"id": "dangerous-headquarters",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Jak napisać artykuł naukowy z dziedziny ML:\n",
"- http://www.isle.org/~langley/papers/craft.ml2k.pdf / https://icml.cc/Conferences/2002/craft.html\n",
"- https://www.researchgate.net/publication/337857231_How_to_Write_a_Machine_Learning_Paper_for_not_so_Dummies/comments\n",
"- https://towardsdatascience.com/writing-more-successful-machine-learning-research-papers-39863ca9ea90\n",
"- https://towardsdatascience.com/tips-for-reading-and-writing-an-ml-research-paper-a505863055cf\n",
"- https://ekulczycki.pl/warsztat_badacza/struktura-artykulu-naukowego-uniwersalne-wytyczne-i-przydatne-wskazowki/"
] ]
}, },
{ {
@ -299,7 +437,8 @@
} }
}, },
"source": [ "source": [
"### Zadanie\n", "## Conclusions\n",
"### Zadanie [30pkt]\n",
"1. Wybierz konferencję naukową z dziedziny ML/AI/Computer Science\n", "1. Wybierz konferencję naukową z dziedziny ML/AI/Computer Science\n",
"2. Używając szablonu Latex udostępnionego przez organizatorów konferencji, stwórz szkic artykułu naukowego opisującego wyniki eksperymentów ML, które przeprowadziłaś/eś w trakcie zajęć.\n", "2. Używając szablonu Latex udostępnionego przez organizatorów konferencji, stwórz szkic artykułu naukowego opisującego wyniki eksperymentów ML, które przeprowadziłaś/eś w trakcie zajęć.\n",
"3. Napisz artykuł używając Overleaf. Udostępnij w [arkuszu z zapisami](https://uam.sharepoint.com/:x:/r/sites/2022SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11/Shared%20Documents/General/Zapisy%20zbiory%20danych.xlsx?d=wb3e003a2d1364e88871c4bf951f13e88&csf=1&web=1&e=cXzeeV) link udostępniający dokument ([jak stworzyć taki link](https://www.overleaf.com/learn/how-to/What_is_Link_Sharing%3F))\n", "3. Napisz artykuł używając Overleaf. Udostępnij w [arkuszu z zapisami](https://uam.sharepoint.com/:x:/r/sites/2022SL06-DIUMUI0LABInynieriauczeniamaszynowego-Grupa11/Shared%20Documents/General/Zapisy%20zbiory%20danych.xlsx?d=wb3e003a2d1364e88871c4bf951f13e88&csf=1&web=1&e=cXzeeV) link udostępniający dokument ([jak stworzyć taki link](https://www.overleaf.com/learn/how-to/What_is_Link_Sharing%3F))\n",
@ -315,6 +454,18 @@
"Zapewne w napisanym artykule nie opiszą państwo niczego nowatorskiego i wartego publikacji - tutaj udajemy, że zastosowaliśmy metodę po raz pierwszy, osiągnęliśmy nieosiągalne dotąd wyniki itp. Liczy się forma i struktura pracy. Można dodać komentarz wyjaśniający prawdziwy cel artykuły w sekcji/przypisie \"Disclaimer\", żeby nikt Państwa nie posądzał o pisanie nieprawdy.\n", "Zapewne w napisanym artykule nie opiszą państwo niczego nowatorskiego i wartego publikacji - tutaj udajemy, że zastosowaliśmy metodę po raz pierwszy, osiągnęliśmy nieosiągalne dotąd wyniki itp. Liczy się forma i struktura pracy. Można dodać komentarz wyjaśniający prawdziwy cel artykuły w sekcji/przypisie \"Disclaimer\", żeby nikt Państwa nie posądzał o pisanie nieprawdy.\n",
" " " "
] ]
},
{
"cell_type": "markdown",
"id": "challenging-student",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"![Tajny język naukowców](https://i1.kwejk.pl/k/obrazki/2017/10/2b48483a6c4f274aa276732e41f856af.jpg)"
]
} }
], ],
"metadata": { "metadata": {