From 54e8efa9b71a84e8385ba4d851c1c69e6edee894 Mon Sep 17 00:00:00 2001 From: Tomasz Date: Mon, 6 Jun 2022 10:55:22 +0200 Subject: [PATCH 1/3] Punkty --- IUM_12.Publikacja.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IUM_12.Publikacja.ipynb b/IUM_12.Publikacja.ipynb index 894cda1..6bdf34d 100644 --- a/IUM_12.Publikacja.ipynb +++ b/IUM_12.Publikacja.ipynb @@ -42,7 +42,7 @@ }, { "cell_type": "markdown", - "id": "8db9d4a7", + "id": "d9a75fe6", "metadata": {}, "source": [ "### Struktura\n", @@ -178,7 +178,7 @@ }, { "cell_type": "markdown", - "id": "9275f366", + "id": "dfb6a34c", "metadata": {}, "source": [ "```bibtex\n", From f7b4bce1d0deabd10da98c0477195517e3cc662f Mon Sep 17 00:00:00 2001 From: Tomasz Date: Wed, 8 Mar 2023 21:46:47 +0100 Subject: [PATCH 2/3] =?UTF-8?q?Zaktualizowano=20zaj=C4=99cia=20wprowadzaj?= =?UTF-8?q?=C4=85ce=20i=20organizacyjne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IUM.Dla prowadzacego.ipynb | 7 +- IUM_00.Organizacyjne.ipynb | 27 ++-- IUM_01.Wprowadzenie.ipynb | 7 +- IUM_02.Dane.ipynb | 30 ++-- IUM_05.Biblioteki_DL.ipynb | 11 +- IUM_06.Jenkins-2.ipynb | 17 ++- IUM_07.Sacred.ipynb | 4 +- IUM_08.MLFlow.ipynb | 4 +- IUM_09.Python_srodowiska.ipynb | 4 +- IUM_10.DVC.ipynb | 169 ++++++++++++++--------- IUM_11.CML.ipynb | 16 +-- IUM_12.Praca.ipynb | 4 +- IUM_12.Publikacja.ipynb | 243 ++++++++++++++++++++++++++------- 13 files changed, 373 insertions(+), 170 deletions(-) diff --git a/IUM.Dla prowadzacego.ipynb b/IUM.Dla prowadzacego.ipynb index 9972ce7..017f081 100644 --- a/IUM.Dla prowadzacego.ipynb +++ b/IUM.Dla prowadzacego.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "id": "3ae03d8e", "metadata": {}, "source": [ "# Środowisko wykorzystywane na zajęciach" @@ -9,6 +10,7 @@ }, { "cell_type": "markdown", + "id": "dc65cc30", "metadata": {}, "source": [ "Certificat SSL dla strony: https://letsencrypt.org/\n", @@ -55,6 +57,7 @@ { "cell_type": "code", "execution_count": null, + "id": "71e2cecc", "metadata": {}, "outputs": [], "source": [] @@ -62,7 +65,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -76,7 +79,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.10.4" } }, "nbformat": 4, diff --git a/IUM_00.Organizacyjne.ipynb b/IUM_00.Organizacyjne.ipynb index bfb9565..d76d599 100644 --- a/IUM_00.Organizacyjne.ipynb +++ b/IUM_00.Organizacyjne.ipynb @@ -12,7 +12,7 @@ "
\n", "

Inżynieria uczenia maszynowego

\n", "

0. Informacje organizacyjne [laboratoria]

\n", - "

Tomasz Ziętkiewicz (2022)

\n", + "

Tomasz Ziętkiewicz (2023)

\n", "
\n", "\n", "![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", "- stanowisko:\tdoktorant\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", "\n", - "- https://git.wmi.amu.edu.pl/tzietkiewicz/aitech-ium\n", + "- https://git.wmi.amu.edu.pl/AITech/aitech-ium\n", "- konsultacje: \n", " - przez MS Teams po wcześniejszym umówieniu\n", " - pokój B2-36, wtorki 12:00 - 13:00, po wcześniejszym umówieniu" @@ -99,15 +100,15 @@ "4. Konteneryzacja - Docker\n", "5. Biblioteki ML\n", "6. Jenkins pipeline\n", - "7. Kontrola eksperymentów - Sacred\n", - "8. Kontrola eksperymentów - MLFlow\n", + "7. Hugging Face Hub\n", + "8. Kontrola eksperymentów - Sacred\n", "9. Środowiska wirtualne\n", - "10. Kontrola eksperymentów - DVC\n", - "11. Github Actions i CML\n", - "12. Zarządzanie Jenkins\n", - "13. Raportowanie\n", - "14. Przegląd technologii\n", - "15. Przegląd technologii, cz. 2" + "10. Kontrola eksperymentów - MLFlow\n", + "11. Kontrola eksperymentów - DVC\n", + "12. Github Actions\n", + "13. Kubernetes i Kubeflow\n", + "14. Raportowanie wyników w formie publikacji naukowej\n", + "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", "Powyżej 3 nieobecności przemiot nie może być zaliczony.\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", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -179,7 +180,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_01.Wprowadzenie.ipynb b/IUM_01.Wprowadzenie.ipynb index a798c45..0f4e97a 100644 --- a/IUM_01.Wprowadzenie.ipynb +++ b/IUM_01.Wprowadzenie.ipynb @@ -12,7 +12,7 @@ "
\n", "

Inżynieria uczenia maszynowego

\n", "

1. Wprowadzenie [laboratoria]

\n", - "

Tomasz Ziętkiewicz (2021)

\n", + "

Tomasz Ziętkiewicz (2023)

\n", "
\n", "\n", "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" @@ -115,6 +115,7 @@ "source": [ "## 1.2.1 Systemy ciągłej integracji\n", " - Jenkins
\n", + " - Github Actions
\n", " - Bamboo
\n", " - Circle CI
\n", " - Team City
\n", @@ -205,7 +206,7 @@ "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -220,7 +221,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_02.Dane.ipynb b/IUM_02.Dane.ipynb index 9c5a5ad..cabe1bf 100644 --- a/IUM_02.Dane.ipynb +++ b/IUM_02.Dane.ipynb @@ -12,7 +12,7 @@ "
\n", "

Inżynieria uczenia maszynowego

\n", "

2. Dane [laboratoria]

\n", - "

Tomasz Ziętkiewicz (2021)

\n", + "

Tomasz Ziętkiewicz (2023)

\n", "
\n", "\n", "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" @@ -59,11 +59,11 @@ "source": [ "# Źródła danych\n", "- Gotowe zbiory:\n", - " - Otwarte wyzwania (challenge)\n", - " - Repozytoria otwartych zbiorów danych\n", - " - Dane udostępniane przez firmy\n", - " - Repozytoria zbiorów komercyjnych\n", - " - Dane wewnętrzne (np. firmy)" + " - Otwarte wyzwania (challenge)\n", + " - Repozytoria otwartych zbiorów danych\n", + " - Dane udostępniane przez firmy\n", + " - Repozytoria zbiorów komercyjnych\n", + " - Dane wewnętrzne (np. firmy)" ] }, { @@ -96,7 +96,8 @@ "- Semeval: https://semeval.github.io/ - zadania z semantyki\n", "- Poleval: http://poleval.pl/ - przetwarzanie języka polskiego\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": [ "## Repozytoria/wyszukiwarki otwartych zbiorów danych\n", + "- Huggingface Datasets: https://huggingface.co/datasets\n", "- Papers with code: https://paperswithcode.com/datasets\n", "- UCI Machine Learning Repository: https://archive.ics.uci.edu/ml/ (University of California)\n", "- Google dataset search: https://datasetsearch.research.google.com/\n", @@ -126,11 +128,11 @@ "source": [ "## Otwarte zbiory\n", "- Rozpoznawanie mowy:\n", - " - https://www.openslr.org/ - Libri Speech, TED Lium\n", - " - Mozilla Open Voice: https://commonvoice.mozilla.org/\n", + " - https://www.openslr.org/ - Libri Speech, TED Lium\n", + " - Mozilla Open Voice: https://commonvoice.mozilla.org/\n", "- NLP:\n", - " - Clarin: https://clarin-pl.eu/index.php/zasoby/\n", - " - NKJP: http://nkjp.pl/\n", + " - Clarin: https://clarin-pl.eu/index.php/zasoby/\n", + " - NKJP: http://nkjp.pl/\n", " " ] }, @@ -1551,7 +1553,7 @@ "- 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", "- 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", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1588,7 +1590,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_05.Biblioteki_DL.ipynb b/IUM_05.Biblioteki_DL.ipynb index a472d9f..bcde56c 100644 --- a/IUM_05.Biblioteki_DL.ipynb +++ b/IUM_05.Biblioteki_DL.ipynb @@ -298,9 +298,10 @@ "\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", - " - wytrenuj na nich model [8 pkt.]\n", - " - przy jego pomocy dokonaj klasyfikacji/regresji na danych ze zbioru testującego [8 pkt.]\n", - " - zapisz wyniki zwrócone przez model do pliku [2 pkt.]
\n", + " - wytrenuj na nich model [6 pkt.]\n", + " - zapisz model do pliku [2 pkt.]\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.]
\n", " Uwagi:\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", @@ -316,7 +317,7 @@ "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -331,7 +332,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_06.Jenkins-2.ipynb b/IUM_06.Jenkins-2.ipynb index 9f826f2..f3f5d59 100644 --- a/IUM_06.Jenkins-2.ipynb +++ b/IUM_06.Jenkins-2.ipynb @@ -203,22 +203,27 @@ "source": [ "## Zadanie 2 [15 pkt] (termin: 2 V 2022)\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 [1pkt]\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", + " Projekt ten będzie przeprowadzał ewaluację modelu stworzonego w s123456-training na danych ze zbioru trenującego [1 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", " - 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", - "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", " - pluginu [plot](https://plugins.jenkins.io/plot)\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", - "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", "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", - " - numeru builda projektu s123456-training (\"Build selector for Copy artifact\", patrz zajęcia 3.) [1pkt]\n", - "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]" + " - numeru builda projektu s123456-training (\"Build selector for Copy artifact\", patrz zajęcia 3.) [1pkt]" ] } ], diff --git a/IUM_07.Sacred.ipynb b/IUM_07.Sacred.ipynb index dc5ce50..07a508b 100644 --- a/IUM_07.Sacred.ipynb +++ b/IUM_07.Sacred.ipynb @@ -1621,7 +1621,7 @@ "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1636,7 +1636,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_08.MLFlow.ipynb b/IUM_08.MLFlow.ipynb index 6c7cdea..9efe928 100644 --- a/IUM_08.MLFlow.ipynb +++ b/IUM_08.MLFlow.ipynb @@ -1435,7 +1435,7 @@ "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1450,7 +1450,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_09.Python_srodowiska.ipynb b/IUM_09.Python_srodowiska.ipynb index 6756f43..1819ac2 100644 --- a/IUM_09.Python_srodowiska.ipynb +++ b/IUM_09.Python_srodowiska.ipynb @@ -1742,7 +1742,7 @@ "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1757,7 +1757,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_10.DVC.ipynb b/IUM_10.DVC.ipynb index 8e81d10..fba8869 100644 --- a/IUM_10.DVC.ipynb +++ b/IUM_10.DVC.ipynb @@ -568,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "c13c525b", "metadata": { "slideshow": { @@ -602,7 +602,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 4, "id": "44f28226", "metadata": { "slideshow": { @@ -614,23 +614,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Initialized DVC repository.\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[31mERROR\u001b[39m: failed to initiate DVC - '.dvc' exists. Use `-f` to force.\n", "\u001b[0m" ] } @@ -654,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "d1aefe16", "metadata": { "slideshow": { @@ -667,14 +651,9 @@ "output_type": "stream", "text": [ "On branch master\r\n", - "\r\n", - "No commits yet\r\n", - "\r\n", "Changes to be committed:\r\n", - " (use \"git rm --cached ...\" to unstage)\r\n", - "\t\u001b[32mnew file: .dvc/.gitignore\u001b[m\r\n", - "\t\u001b[32mnew file: .dvc/config\u001b[m\r\n", - "\t\u001b[32mnew file: .dvcignore\u001b[m\r\n", + " (use \"git restore --staged ...\" to unstage)\r\n", + "\t\u001b[32mmodified: .dvc/config\u001b[m\r\n", "\r\n" ] } @@ -769,7 +748,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "id": "f05ece1b", "metadata": { "slideshow": { @@ -781,10 +760,9 @@ "name": "stdout", "output_type": "stream", "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", " 0%| | 0.00/3.60k [00:00...\" to include in what will be committed)\r\n", - "\t\u001b[31mdata/.gitignore\u001b[m\r\n", - "\t\u001b[31mdata/Iris.csv.dvc\u001b[m\r\n", + "Changes to be committed:\r\n", + " (use \"git restore --staged ...\" to unstage)\r\n", + "\t\u001b[32mmodified: .dvc/config\u001b[m\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 ...\" to update what will be committed)\r\n", + " (use \"git restore ...\" 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", - "execution_count": 12, + "execution_count": 9, "id": "460c4a17", "metadata": { "slideshow": { @@ -926,7 +907,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "80644077", "metadata": { "slideshow": { @@ -938,10 +919,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[master 67214ea] Dodano dane IRIS (DVC)\n", - " 2 files changed, 5 insertions(+)\n", - " create mode 100644 data/.gitignore\n", - " create mode 100644 data/Iris.csv.dvc\n" + "[master b37a8d8] Dodano dane IRIS (DVC)\r\n", + " 2 files changed, 2 insertions(+), 6 deletions(-)\r\n" ] } ], @@ -1243,7 +1222,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 12, "id": "dde39796", "metadata": { "slideshow": { @@ -1257,7 +1236,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 13, "id": "7f14ec60", "metadata": { "slideshow": { @@ -1280,7 +1259,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 14, "id": "8a841039", "metadata": { "slideshow": { @@ -1305,7 +1284,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 15, "id": "bf6c1067", "metadata": { "slideshow": { @@ -1326,13 +1305,13 @@ " 0%| |Transferring 0/1 [00:00 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": { diff --git a/IUM_11.CML.ipynb b/IUM_11.CML.ipynb index 065eb44..cd789cd 100644 --- a/IUM_11.CML.ipynb +++ b/IUM_11.CML.ipynb @@ -13,7 +13,7 @@ "
\n", "

Inżynieria uczenia maszynowego

\n", "

11. Github actions i CML [laboratoria]

\n", - "

Tomasz Ziętkiewicz (2021)

\n", + "

Tomasz Ziętkiewicz (2022)

\n", "
\n", "\n", "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" @@ -70,13 +70,13 @@ "source": [ "### Terminologia Github Actions\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", " - *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", " - *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", - " - *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)" + " - *Self-hosted runner* - nasz własny serwer, z zinstalowaną aplikacją [Github actions runner](https://github.com/actions/runner)" ] }, { @@ -89,7 +89,7 @@ }, "source": [ "### 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", " - Podstawowe pola:\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": [ - "## Zadania\n", + "## Zadania [15 pkt]\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 prosty Github workflow wykorzystujący akcje CML, który:\n", @@ -562,7 +562,7 @@ "author": "Tomasz Ziętkiewicz", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -577,7 +577,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_12.Praca.ipynb b/IUM_12.Praca.ipynb index cd55d87..855b6da 100644 --- a/IUM_12.Praca.ipynb +++ b/IUM_12.Praca.ipynb @@ -66,7 +66,7 @@ "author": "Tomasz Ziętkiewicz", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -81,7 +81,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.10.4" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_12.Publikacja.ipynb b/IUM_12.Publikacja.ipynb index 6bdf34d..3942ee9 100644 --- a/IUM_12.Publikacja.ipynb +++ b/IUM_12.Publikacja.ipynb @@ -21,20 +21,186 @@ }, { "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": { "slideshow": { "slide_type": "slide" } }, "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": [ + "" + ] + }, + { + "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", "- LaTeX (wym. *Latech*) to system składu tekstu\n", + "- Najbardziej popularny w dziedzinach technicznych\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", - "- Piszemy tekst ze znacznikami, kompipujemy, dostajemy gotowy dokument, np. pdf\n", - "- Stosowany powszechnie do pisania publikacji naukowych na konferencje, do czasopism i książek\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, kompilujemy, dostajemy gotowy dokument, np. pdf\n", + "- Stosowany powszechnie do pisania publikacji naukowych (artykułów, książek jak i rozpraw nukowych)\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", "- Przystępna dokumentacja: https://www.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes" @@ -42,7 +208,7 @@ }, { "cell_type": "markdown", - "id": "d9a75fe6", + "id": "918e3b39", "metadata": {}, "source": [ "### Struktura\n", @@ -178,7 +344,7 @@ }, { "cell_type": "markdown", - "id": "dfb6a34c", + "id": "3ea5c879", "metadata": {}, "source": [ "```bibtex\n", @@ -244,50 +410,22 @@ }, { "cell_type": "markdown", - "id": "changed-president", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, + "id": "e1822b3c", + "metadata": {}, "source": [ - "## Części artykułu naukowego\n", - "1. Abstract\n", - " \n", - "2. Introduction - \"Dlaczego?\"\n", - "3. Related work - \"Kontekst naukowy\"\n", - "4. Method - \"Jak?\"\n", - "5. Results - \"Co?\"\n", - "6. Conclusions/Discussion - \"Interpretacja wyników\"" + "### JupyterBook\n", + "https://jupyterbook.org/en/stable/intro.html\n" ] }, { "cell_type": "markdown", - "id": "challenging-student", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, + "id": "ceef2f3f", + "metadata": {}, "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/" + "### The Turing Way\n", + "*The Turing Way handbook to reproducible, ethical and collaborative data science*\n", + "\n", + "https://the-turing-way.netlify.app/welcome.html" ] }, { @@ -299,7 +437,8 @@ } }, "source": [ - "### Zadanie\n", + "## Conclusions\n", + "### Zadanie [30pkt]\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", "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", " " ] + }, + { + "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": { From 014fbd847938c7e3051d92273460618cef50e4b7 Mon Sep 17 00:00:00 2001 From: Tomasz Date: Wed, 15 Mar 2023 13:44:50 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Update=20przed=20zaj=C4=99ciami=202.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IUM_02.Dane.ipynb | 603 +++++++++++++++++++++++++++++++++++----- IUM_03.CI-Jenkins.ipynb | 26 +- 2 files changed, 542 insertions(+), 87 deletions(-) diff --git a/IUM_02.Dane.ipynb b/IUM_02.Dane.ipynb index cabe1bf..fbb72d0 100644 --- a/IUM_02.Dane.ipynb +++ b/IUM_02.Dane.ipynb @@ -210,11 +210,26 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "## Pobranie danych" ] }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Pobieranie z Kaggle" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -230,29 +245,32 @@ "output_type": "stream", "text": [ "Collecting kaggle\n", - " Using cached kaggle-1.5.12.tar.gz (58 kB)\n", - "Requirement already satisfied: six>=1.10 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (1.15.0)\n", - "Requirement already satisfied: certifi in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (2021.5.30)\n", - "Requirement already satisfied: python-dateutil in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (2.8.1)\n", - "Requirement already satisfied: requests in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (2.25.1)\n", - "Requirement already satisfied: tqdm in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (4.59.0)\n", - "Requirement already satisfied: python-slugify in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (5.0.2)\n", - "Requirement already satisfied: urllib3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (1.26.4)\n", - "Requirement already satisfied: text-unidecode>=1.3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from python-slugify->kaggle) (1.3)\n", - "Requirement already satisfied: idna<3,>=2.5 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from requests->kaggle) (2.10)\n", - "Requirement already satisfied: chardet<5,>=3.0.2 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from requests->kaggle) (4.0.0)\n", + " Downloading kaggle-1.5.13.tar.gz (63 kB)\n", + "\u001b[K |████████████████████████████████| 63 kB 558 kB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: six>=1.10 in /home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (1.16.0)\n", + "Requirement already satisfied: certifi in /home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (2022.12.7)\n", + "Requirement already satisfied: python-dateutil in /home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (2.8.2)\n", + "Requirement already satisfied: requests in /home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (2.27.1)\n", + "Requirement already satisfied: tqdm in /home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (4.64.0)\n", + "Collecting python-slugify\n", + " Downloading python_slugify-8.0.1-py2.py3-none-any.whl (9.7 kB)\n", + "Requirement already satisfied: urllib3 in /home/tomek/miniconda3/lib/python3.9/site-packages (from kaggle) (1.26.9)\n", + "Collecting text-unidecode>=1.3\n", + " Using cached text_unidecode-1.3-py2.py3-none-any.whl (78 kB)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/tomek/miniconda3/lib/python3.9/site-packages (from requests->kaggle) (3.3)\n", + "Requirement already satisfied: charset-normalizer~=2.0.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from requests->kaggle) (2.0.4)\n", "Building wheels for collected packages: kaggle\n", " Building wheel for kaggle (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for kaggle: filename=kaggle-1.5.12-py3-none-any.whl size=73053 sha256=1e6240d540651324d97a9772ad1ced30da7d7b5dc5956dc974eeeddf7c48844b\n", - " Stored in directory: /home/tomek/.cache/pip/wheels/ac/b2/c3/fa4706d469b5879105991d1c8be9a3c2ef329ba9fe2ce5085e\n", + "\u001b[?25h Created wheel for kaggle: filename=kaggle-1.5.13-py3-none-any.whl size=77733 sha256=83eee49596c7c76816c3bb9e8ffc0763b25e336457881b9790b9620548ae7297\n", + " Stored in directory: /home/tomek/.cache/pip/wheels/9c/45/15/6d6d116cd2539fb8f450d64b0aee4a480e5366bb11b42ac763\n", "Successfully built kaggle\n", - "Installing collected packages: kaggle\n", - "Successfully installed kaggle-1.5.12\n", - "Requirement already satisfied: pandas in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (1.2.4)\n", - "Requirement already satisfied: python-dateutil>=2.7.3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2.8.1)\n", - "Requirement already satisfied: numpy>=1.16.5 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (1.20.2)\n", - "Requirement already satisfied: pytz>=2017.3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2021.1)\n", - "Requirement already satisfied: six>=1.5 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)\n" + "Installing collected packages: text-unidecode, python-slugify, kaggle\n", + "Successfully installed kaggle-1.5.13 python-slugify-8.0.1 text-unidecode-1.3\n", + "Requirement already satisfied: pandas in /home/tomek/miniconda3/lib/python3.9/site-packages (1.5.3)\n", + "Requirement already satisfied: numpy>=1.20.3 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (1.24.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2022.7.1)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: six>=1.5 in /home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.8.1->pandas) (1.16.0)\n" ] } ], @@ -264,7 +282,11 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ " - Pobierzemy zbiór Iris z Kaggle: https://www.kaggle.com/uciml/iris\n", " - Licencja to \"Public Domain\", więc możemy z niego korzystać bez ograniczeń." @@ -272,7 +294,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 7, "metadata": { "slideshow": { "slide_type": "slide" @@ -283,9 +305,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Downloading iris.zip to /home/tomek/AITech/repo/aitech-ium\n", - " 0%| | 0.00/3.60k [00:00=2017.3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2021.1)\n", - "Requirement already satisfied: numpy>=1.16.5 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (1.20.2)\n", - "Requirement already satisfied: python-dateutil>=2.7.3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2.8.1)\n", - "Requirement already satisfied: six>=1.5 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)\n", - "Collecting seaborn\n", - " Downloading seaborn-0.11.2-py3-none-any.whl (292 kB)\n", - "\u001b[K |████████████████████████████████| 292 kB 1.1 MB/s eta 0:00:01\n", - "\u001b[?25hCollecting matplotlib>=2.2\n", - " Downloading matplotlib-3.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (11.2 MB)\n", - "\u001b[K |████████████████████████████████| 11.2 MB 10.8 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: pandas>=0.23 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from seaborn) (1.2.4)\n", - "Requirement already satisfied: numpy>=1.15 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from seaborn) (1.20.2)\n", - "Requirement already satisfied: scipy>=1.0 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from seaborn) (1.6.3)\n", - "Requirement already satisfied: packaging>=20.0 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn) (20.9)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn) (2.8.1)\n", - "Collecting cycler>=0.10\n", - " Downloading cycler-0.11.0-py3-none-any.whl (6.4 kB)\n", - "Requirement already satisfied: pyparsing>=2.2.1 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn) (2.4.7)\n", - "Collecting fonttools>=4.22.0\n", - " Downloading fonttools-4.30.0-py3-none-any.whl (898 kB)\n", - "\u001b[K |████████████████████████████████| 898 kB 4.9 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: pillow>=6.2.0 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn) (8.2.0)\n", - "Collecting kiwisolver>=1.0.1\n", - " Downloading kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.6 MB)\n", - "\u001b[K |████████████████████████████████| 1.6 MB 7.7 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: pytz>=2017.3 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from pandas>=0.23->seaborn) (2021.1)\n", - "Requirement already satisfied: six>=1.5 in /media/tomek/Linux_data/home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib>=2.2->seaborn) (1.15.0)\n", - "Installing collected packages: kiwisolver, fonttools, cycler, matplotlib, seaborn\n", - "Successfully installed cycler-0.11.0 fonttools-4.30.0 kiwisolver-1.3.2 matplotlib-3.5.1 seaborn-0.11.2\n" + "151 Iris.csv\r\n" ] } ], "source": [ - "!pip install --user pandas\n", - "!pip install --user seaborn" + "!wc -l Iris.csv" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 11, "metadata": { "slideshow": { "slide_type": "slide" @@ -422,9 +409,88 @@ "!head -n 5 Iris.csv" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```less Iris.csv```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Inspekcja\n", + "- Do inspekcji danych użyjemy popularnej biblioteki pythonowej Pandas: https://pandas.pydata.org/\n", + "- Do wizualizacji użyjemy biblioteki Seaborn: https://seaborn.pydata.org/index.html\n", + "- Służy ona do analizy i operowania na danych tabelarycznych jak i szeregach czasowych" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in /home/tomek/miniconda3/lib/python3.9/site-packages (1.5.3)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (2022.7.1)\n", + "Requirement already satisfied: numpy>=1.20.3 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas) (1.24.2)\n", + "Requirement already satisfied: six>=1.5 in /home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.8.1->pandas) (1.16.0)\n", + "Collecting seaborn\n", + " Downloading seaborn-0.12.2-py3-none-any.whl (293 kB)\n", + "\u001b[K |████████████████████████████████| 293 kB 694 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting matplotlib!=3.6.1,>=3.1\n", + " Downloading matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)\n", + "\u001b[K |████████████████████████████████| 11.6 MB 253 kB/s eta 0:00:01 |██████▊ | 2.4 MB 396 kB/s eta 0:00:24\n", + "\u001b[?25hRequirement already satisfied: pandas>=0.25 in /home/tomek/miniconda3/lib/python3.9/site-packages (from seaborn) (1.5.3)\n", + "Requirement already satisfied: numpy!=1.24.0,>=1.17 in /home/tomek/miniconda3/lib/python3.9/site-packages (from seaborn) (1.24.2)\n", + "Requirement already satisfied: packaging>=20.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (23.0)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (2.8.2)\n", + "Requirement already satisfied: importlib-resources>=3.2.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (5.12.0)\n", + "Collecting contourpy>=1.0.1\n", + " Downloading contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (299 kB)\n", + "\u001b[K |████████████████████████████████| 299 kB 613 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting pyparsing>=2.3.1\n", + " Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)\n", + "Collecting fonttools>=4.22.0\n", + " Downloading fonttools-4.39.0-py3-none-any.whl (1.0 MB)\n", + "\u001b[K |████████████████████████████████| 1.0 MB 556 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting cycler>=0.10\n", + " Downloading cycler-0.11.0-py3-none-any.whl (6.4 kB)\n", + "Collecting pillow>=6.2.0\n", + " Downloading Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl (3.4 MB)\n", + "\u001b[K |████████████████████████████████| 3.4 MB 664 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting kiwisolver>=1.0.1\n", + " Downloading kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.6 MB)\n", + "\u001b[K |████████████████████████████████| 1.6 MB 1.0 MB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: zipp>=3.1.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib!=3.6.1,>=3.1->seaborn) (3.15.0)\n", + "Requirement already satisfied: pytz>=2020.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas>=0.25->seaborn) (2022.7.1)\n", + "Requirement already satisfied: six>=1.5 in /home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.1->seaborn) (1.16.0)\n", + "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib, seaborn\n", + "Successfully installed contourpy-1.0.7 cycler-0.11.0 fonttools-4.39.0 kiwisolver-1.4.4 matplotlib-3.7.1 pillow-9.4.0 pyparsing-3.0.9 seaborn-0.12.2\n" + ] + } + ], + "source": [ + "!pip install --user pandas\n", + "!pip install --user seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" @@ -595,7 +661,7 @@ "[150 rows x 6 columns]" ] }, - "execution_count": 5, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1076,6 +1142,395 @@ "sns.pairplot(data=iris.drop(columns=[\"Id\"]), hue=\"Species\")" ] }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Pobieranie z HuggingFace 🤗 Datasets\n", + " - Szukamy na https://huggingface.co/datasets/\n", + " - Klikamy w \" Use in datasets library\" i kopiujemy kod\n", + " - Instalujemy bibliotekę datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting datasets\n", + " Downloading datasets-2.10.1-py3-none-any.whl (469 kB)\n", + "\u001b[K |████████████████████████████████| 469 kB 683 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting responses<0.19\n", + " Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n", + "Collecting xxhash\n", + " Downloading xxhash-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (212 kB)\n", + "\u001b[K |████████████████████████████████| 212 kB 866 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting pyarrow>=6.0.0\n", + " Downloading pyarrow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.9 MB)\n", + "\u001b[K |████████████████████████████████| 34.9 MB 956 kB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /home/tomek/miniconda3/lib/python3.9/site-packages (from datasets) (1.24.2)\n", + "Requirement already satisfied: requests>=2.19.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from datasets) (2.27.1)\n", + "Collecting aiohttp\n", + " Downloading aiohttp-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\n", + "\u001b[K |████████████████████████████████| 1.0 MB 859 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting pyyaml>=5.1\n", + " Downloading PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (661 kB)\n", + "\u001b[K |████████████████████████████████| 661 kB 857 kB/s eta 0:00:01\n", + "\u001b[?25hCollecting huggingface-hub<1.0.0,>=0.2.0\n", + " Downloading huggingface_hub-0.13.2-py3-none-any.whl (199 kB)\n", + "\u001b[K |████████████████████████████████| 199 kB 866 kB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: packaging in /home/tomek/miniconda3/lib/python3.9/site-packages (from datasets) (23.0)\n", + "Collecting multiprocess\n", + " Downloading multiprocess-0.70.14-py39-none-any.whl (132 kB)\n", + "\u001b[K |████████████████████████████████| 132 kB 1.0 MB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: tqdm>=4.62.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from datasets) (4.64.0)\n", + "Requirement already satisfied: pandas in /home/tomek/miniconda3/lib/python3.9/site-packages (from datasets) (1.5.3)\n", + "Collecting fsspec[http]>=2021.11.1\n", + " Downloading fsspec-2023.3.0-py3-none-any.whl (145 kB)\n", + "\u001b[K |████████████████████████████████| 145 kB 1.0 MB/s eta 0:00:01\n", + "\u001b[?25hCollecting dill<0.3.7,>=0.3.0\n", + " Downloading dill-0.3.6-py3-none-any.whl (110 kB)\n", + "\u001b[K |████████████████████████████████| 110 kB 772 kB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: attrs>=17.3.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from aiohttp->datasets) (22.2.0)\n", + "Collecting async-timeout<5.0,>=4.0.0a3\n", + " Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)\n", + "Collecting aiosignal>=1.1.2\n", + " Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)\n", + "Collecting yarl<2.0,>=1.0\n", + " Downloading yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (264 kB)\n", + "\u001b[K |████████████████████████████████| 264 kB 1.1 MB/s eta 0:00:01\n", + "\u001b[?25hCollecting frozenlist>=1.1.1\n", + " Downloading frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158 kB)\n", + "\u001b[K |████████████████████████████████| 158 kB 1.2 MB/s eta 0:00:01\n", + "\u001b[?25hCollecting multidict<7.0,>=4.5\n", + " Downloading multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)\n", + "\u001b[K |████████████████████████████████| 114 kB 997 kB/s eta 0:00:01\n", + "\u001b[?25hRequirement already satisfied: charset-normalizer<4.0,>=2.0 in /home/tomek/miniconda3/lib/python3.9/site-packages (from aiohttp->datasets) (2.0.4)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /home/tomek/miniconda3/lib/python3.9/site-packages (from huggingface-hub<1.0.0,>=0.2.0->datasets) (4.5.0)\n", + "Collecting filelock\n", + " Downloading filelock-3.9.1-py3-none-any.whl (9.7 kB)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from requests>=2.19.0->datasets) (1.26.9)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/tomek/miniconda3/lib/python3.9/site-packages (from requests>=2.19.0->datasets) (2022.12.7)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/tomek/miniconda3/lib/python3.9/site-packages (from requests>=2.19.0->datasets) (3.3)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /home/tomek/miniconda3/lib/python3.9/site-packages (from pandas->datasets) (2022.7.1)\n", + "Requirement already satisfied: six>=1.5 in /home/tomek/miniconda3/lib/python3.9/site-packages (from python-dateutil>=2.8.1->pandas->datasets) (1.16.0)\n", + "Installing collected packages: multidict, frozenlist, yarl, async-timeout, aiosignal, pyyaml, fsspec, filelock, dill, aiohttp, xxhash, responses, pyarrow, multiprocess, huggingface-hub, datasets\n", + "Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 datasets-2.10.1 dill-0.3.6 filelock-3.9.1 frozenlist-1.3.3 fsspec-2023.3.0 huggingface-hub-0.13.2 multidict-6.0.4 multiprocess-0.70.14 pyarrow-11.0.0 pyyaml-6.0 responses-0.18.0 xxhash-3.2.0 yarl-1.8.2\n" + ] + } + ], + "source": [ + "#Instalujemy bibliotekę datasets\n", + "!python -m pip install datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Found cached dataset csv (/home/tomek/.cache/huggingface/datasets/scikit-learn___csv/scikit-learn--iris-4e13227f45447466/0.0.0/6b34fb8fcf56f7c8ba51dc895bfa2bfbe43546f190a60fcf74bb5e8afdcc2317)\n", + "100%|██████████| 1/1 [00:00<00:00, 268.64it/s]\n" + ] + } + ], + "source": [ + "from datasets import load_dataset\n", + "\n", + "iris_dataset = load_dataset(\"scikit-learn/iris\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['Id', 'SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'Species'],\n", + " num_rows: 150\n", + " })\n", + "})" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris_dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Dataset({\n", + " features: ['Id', 'SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'Species'],\n", + " num_rows: 150\n", + "})" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris_dataset[\"train\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Id': 1,\n", + " 'SepalLengthCm': 5.1,\n", + " 'SepalWidthCm': 3.5,\n", + " 'PetalLengthCm': 1.4,\n", + " 'PetalWidthCm': 0.2,\n", + " 'Species': 'Iris-setosa'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris_dataset[\"train\"][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
.....................
1451466.73.05.22.3Iris-virginica
1461476.32.55.01.9Iris-virginica
1471486.53.05.22.0Iris-virginica
1481496.23.45.42.3Iris-virginica
1491505.93.05.11.8Iris-virginica
\n", + "

150 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm \\\n", + "0 1 5.1 3.5 1.4 0.2 \n", + "1 2 4.9 3.0 1.4 0.2 \n", + "2 3 4.7 3.2 1.3 0.2 \n", + "3 4 4.6 3.1 1.5 0.2 \n", + "4 5 5.0 3.6 1.4 0.2 \n", + ".. ... ... ... ... ... \n", + "145 146 6.7 3.0 5.2 2.3 \n", + "146 147 6.3 2.5 5.0 1.9 \n", + "147 148 6.5 3.0 5.2 2.0 \n", + "148 149 6.2 3.4 5.4 2.3 \n", + "149 150 5.9 3.0 5.1 1.8 \n", + "\n", + " Species \n", + "0 Iris-setosa \n", + "1 Iris-setosa \n", + "2 Iris-setosa \n", + "3 Iris-setosa \n", + "4 Iris-setosa \n", + ".. ... \n", + "145 Iris-virginica \n", + "146 Iris-virginica \n", + "147 Iris-virginica \n", + "148 Iris-virginica \n", + "149 Iris-virginica \n", + "\n", + "[150 rows x 6 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(iris_dataset[\"train\"])" + ] + }, { "cell_type": "markdown", "metadata": { @@ -1575,7 +2030,7 @@ "celltoolbar": "Slideshow", "email": "tomasz.zietkiewicz@amu.edu.pl", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -1590,7 +2045,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.4" + "version": "3.9.12" }, "slideshow": { "slide_type": "slide" diff --git a/IUM_03.CI-Jenkins.ipynb b/IUM_03.CI-Jenkins.ipynb index 7c10510..5f8286d 100644 --- a/IUM_03.CI-Jenkins.ipynb +++ b/IUM_03.CI-Jenkins.ipynb @@ -12,7 +12,7 @@ "
\n", "

Inżynieria uczenia maszynowego

\n", "

3. System ciągłej integracji na przykładzie Jenkins [laboratoria]

\n", - "

Tomasz Ziętkiewicz (2022)

\n", + "

Tomasz Ziętkiewicz (2023)

\n", "
\n", "\n", "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" @@ -104,7 +104,7 @@ " - **Job, aka. Pipleine (Projekt)** - podstawowa jednostka organizacji pracy wykonywanej przez Jenkinsa. \n", " - Posiada swoją konfigurację, która określa jakie polecenia będą wykonywane w jego ramach. \n", " - Jeden pipeline może być wykonany wiele razy, za każdym razem tworząc nowe *Zadanie* (*Build*). \n", - " Przykładowy pipeline: https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world/\n", + " Przykładowy pipeline: https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world/\n", "\n" ] }, @@ -121,10 +121,10 @@ " - Unstable \n", " - Aborted \n", " - Failed \n", - " Np: https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world/2/\n", + " Np: https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world/2/\n", " - Śledzenie wyników działania buildu jak i debugowanie ewentualnych problemów ułatwiają:\n", - " - Wyjście z konsoli [(Console Output)](https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world/10/console) - tutaj widać logi wypisywane zarówno przez polecenia/funkcje Jenkinsowe jak i standardowe wyjście / wyjście błędów wykonywanych poleceń systemowych\n", - " - Workspace - to katalog roboczy, w którym uruchamiane są polecenia. Tutaj zostaje sklonowane repozytorium (jeśli je klonujemy), tu wywoływane będę polecenia systemowe. Można je przeglądać z poziomu przeglądarki, np. [tutaj](https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world-scripted/1/execution/node/3/ws/)\n", + " - Wyjście z konsoli [(Console Output)](https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world/10/console) - tutaj widać logi wypisywane zarówno przez polecenia/funkcje Jenkinsowe jak i standardowe wyjście / wyjście błędów wykonywanych poleceń systemowych\n", + " - Workspace - to katalog roboczy, w którym uruchamiane są polecenia. Tutaj zostaje sklonowane repozytorium (jeśli je klonujemy), tu wywoływane będę polecenia systemowe. Można je przeglądać z poziomu przeglądarki, np. [tutaj](https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world-scripted/1/execution/node/3/ws/)\n", " - Każdy uruchomiony build można zatrzymać (abort) co powoduje zaprzestanie jego wykonywania\n", " - Build zakończony można usunąć (np. jeśli przez przypadek wypisaliśmy na konsolę nasze hasło)" ] @@ -160,7 +160,7 @@ "source": [ "## Dokumentacja\n", "- https://www.jenkins.io/doc/book/pipeline/\n", - "- \"Pipeline syntax\" na stronie każdego projektu, np: https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world/pipeline-syntax/\n", + "- \"Pipeline syntax\" na stronie każdego projektu, np: https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world/pipeline-syntax/\n", "- Znaki zapytania (W konfiguracji joba oraz w \"Pipeline Syntax\")" ] }, @@ -203,7 +203,7 @@ }, "source": [ "#### 1. Zaloguj się\n", - " - zaloguj się na https://tzietkiewicz.vm.wmi.amu.edu.pl:8080 za pomocą konta wydziałowego (jak w laboratoriach WMI)" + " - zaloguj się na https://tzietkiewicz.vm.wmi.amu.edu.pl:8081 za pomocą konta wydziałowego (jak w laboratoriach WMI)" ] }, { @@ -240,7 +240,7 @@ "\n", " - Pierwszy z nich daje większe możliwości, drugi jest łatwiejszy, lepiej udokumentowany, ale ma mniejszą siłę ekpresji.\n", "\n", - " - Fragmenty kodu można również generować przy pomocy kreatora, dostępnego pod linkiem [Pipeline syntax](https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world/pipeline-syntax/) na stronie każdego projektu. Jest to bardzo przydatna funkcjonalność, nie tylko dla początkujących użytkowników\n", + " - Fragmenty kodu można również generować przy pomocy kreatora, dostępnego pod linkiem [Pipeline syntax](https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world/pipeline-syntax/) na stronie każdego projektu. Jest to bardzo przydatna funkcjonalność, nie tylko dla początkujących użytkowników\n", "\n", " - Jenkinsfile może być wprowadzony bezpośrednio z poziomu przeglądarki, albo pobrany z repozytorium.\n", "\n", @@ -258,7 +258,7 @@ } }, "source": [ - "Przykładowy declarative Pipeline (https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world/):\n", + "Przykładowy declarative Pipeline (https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world/):\n", "\n", "```groovy\n", "pipeline {\n", @@ -301,7 +301,7 @@ } }, "source": [ - "Przykładowy scripted Pipeline (https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world-scripted/):\n", + "Przykładowy scripted Pipeline (https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world-scripted/):\n", "\n", "```groovy\n", "node {\n", @@ -396,13 +396,13 @@ "export KAGGLE_USERNAME=datadinosaur\n", "export KAGGLE_KEY=xxxxxxxxxxxxxx\n", " ```\n", - " - Jenkins natomiast umożliwia utworzenie parametru typu password, którego wartość nie jest nigdzie zapisywana (wartości pozostałych parametrów są zapisywane w zakładce \"Parameters\" każdego build-a, np. [tutaj](https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/hello-world-scripted/1/parameters/)\n", + " - Jenkins natomiast umożliwia utworzenie parametru typu password, którego wartość nie jest nigdzie zapisywana (wartości pozostałych parametrów są zapisywane w zakładce \"Parameters\" każdego build-a, np. [tutaj](https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/hello-world-scripted/1/parameters/)\n", " - konstukcja `withEnv` w Jenkinsfile, pozwala wywołać wszystkie otoczone nią polecenia z wyeksportowanymi wartościami zmiennych systemowych. Pozwala to np. przekazać wartości parametrów zadania Jenkinsowego do shella (poleceń wywoływanych z `sh`). \n", " - Zwróć jednak uwagę na to, w jaki sposób odwołujesz się do zmiennej z hasłem: https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#string-interpolation !\n", " - ten sam rezultat co przy wykorzystaniu `withEnv` można by osiągnąć wywołując: `sh \"KAGGLE_USERNAME=${params.KAGGLE_USERNAME} KAGGLE_KEY=${params.KAGGLE_KEY} kaggle datasets list`, ale ten pierwszy wydahe się bardziej elegancki\n", " - Poniżej przykładowy projekt, który pokazuje jak wywołać Kaggle CLI używając hasła podanego w parametrach zadania:\n", " \n", - "https://tzietkiewicz.vm.wmi.amu.edu.pl:8080/job/kaggle-CLI-example/\n", + "https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/kaggle-CLI-example/\n", "```groovy\n", "node {\n", " stage('Preparation') { \n", @@ -509,7 +509,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.9.12" }, "slideshow": { "slide_type": "slide"