Merge pull request 'master' (#9) from tzietkiewicz/aitech-ium:master into master
Reviewed-on: AITech/aitech-ium#9
This commit is contained in:
commit
bc1f09e0b5
@ -136,7 +136,11 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Git parameter plugin\n",
|
||||
"- https://plugins.jenkins.io/git-parameter/\n",
|
||||
@ -148,7 +152,11 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Email extension plugin\n",
|
||||
"- https://plugins.jenkins.io/email-ext/\n",
|
||||
@ -169,13 +177,13 @@
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Zadanie 1 [8 pkt]\n",
|
||||
"## Zadanie 1 [5 pkt] (termin: 2 V 2021)\n",
|
||||
"1. Stwórz na Jenkins projekt typu Multibranch pipeline o nazwie s123456-training\n",
|
||||
" Projekt ten powinien przeprowadzać trenowanie modelu korzystając z kodu przygotowanego na poprzednich zajęciach. Trenowanie powinno odbywać się wewnątrz kontenera docker. [2pkt]\n",
|
||||
" Projekt ten powinien przeprowadzać trenowanie modelu korzystając z kodu przygotowanego na poprzednich zajęciach. Trenowanie powinno odbywać się wewnątrz kontenera docker. [1 pkt]\n",
|
||||
"2. Projekt powinien odpalać się automatycznie po zakończonym budowaniu projektu s123456-create-dataset i kopiować z niego zbiór danych [1 pkt]\n",
|
||||
"3. Po zakończeniu trenowania powstały model powinien zostać zarchiwizowany [1 pkt]\n",
|
||||
"4. Trenowanie modelu potrafi zająć bardzo dużo czasu. Sprawdzanie co 10 minut, czy już się zakończyło, to zły pomysł. Dodaj powiadomienie (wysyłane przez email na Teamsowy kanał \"Powiadomienia z Jenkins\") o zakończonym jobie zawierające rezultat (Status builda - successfull, failed, aborted itd) [2pkt]\n",
|
||||
"5. Dodaj parametr umożliwiający przekazanie do skryptu trenującego parametrów trenowania. Najprościej zrobić to dodając parametr typu String i doklejać jego wartość do wywołania skryptu trenującego. [8pkt]"
|
||||
"4. Trenowanie modelu potrafi zająć bardzo dużo czasu. Sprawdzanie co 10 minut, czy już się zakończyło, to zły pomysł. Dodaj powiadomienie (wysyłane przez email na Teamsowy kanał \"Powiadomienia z Jenkins\") o zakończonym jobie zawierające rezultat (Status builda - successfull, failed, aborted itd) [1 pkt]\n",
|
||||
"5. Dodaj parametr umożliwiający przekazanie do skryptu trenującego parametrów trenowania. Najprościej zrobić to dodając parametr typu String i doklejać jego wartość do wywołania skryptu trenującego. [1 pkt]"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -186,24 +194,24 @@
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Zadanie 2 [18pkt]\n",
|
||||
"## Zadanie 2 [15 pkt] (termin: 2 V 2021)\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 [4 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",
|
||||
"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) [3 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",
|
||||
" 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 i kopiować model z artefaktów [1pkt]\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",
|
||||
"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żyh łatwiejszego (w użytkowaniu) parametru typu \"Git parameter\" (patrz wyżej)[2pkt]\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) [2pkt]"
|
||||
"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]"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
1442
IUM_07.Sacred.ipynb
Normal file
1442
IUM_07.Sacred.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
4
IUM_07/config.json
Normal file
4
IUM_07/config.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"recipient": "samotności",
|
||||
"greeting": "Żegnaj"
|
||||
}
|
19
IUM_07/file_observer.py
Normal file
19
IUM_07/file_observer.py
Normal file
@ -0,0 +1,19 @@
|
||||
from sacred.observers import FileStorageObserver
|
||||
from sacred import Experiment
|
||||
|
||||
ex = Experiment("file_observer")
|
||||
|
||||
ex.observers.append(FileStorageObserver('my_runs'))
|
||||
|
||||
@ex.config
|
||||
def my_config():
|
||||
recipient = "Świecie"
|
||||
greeting = "Witaj"
|
||||
|
||||
@ex.capture
|
||||
def prepare_message(recipient, greeting):
|
||||
return "{0} {1}!".format(greeting, recipient)
|
||||
|
||||
@ex.automain
|
||||
def my_main(recipient, greeting):
|
||||
print(prepare_message()) ## Nie musimy przekazywać wartości
|
BIN
IUM_07/metrics.png
Normal file
BIN
IUM_07/metrics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 77 KiB |
BIN
IUM_07/omniboard.png
Normal file
BIN
IUM_07/omniboard.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 107 KiB |
7
IUM_07/sacred_hello.py
Normal file
7
IUM_07/sacred_hello.py
Normal file
@ -0,0 +1,7 @@
|
||||
from sacred import Experiment
|
||||
|
||||
ex = Experiment()
|
||||
|
||||
@ex.automain
|
||||
def my_main():
|
||||
print('Witaj świecie!')
|
13
IUM_07/sacred_scopes.py
Normal file
13
IUM_07/sacred_scopes.py
Normal file
@ -0,0 +1,13 @@
|
||||
from sacred import Experiment
|
||||
|
||||
ex = Experiment()
|
||||
|
||||
@ex.config
|
||||
def my_config():
|
||||
recipient = "Świecie"
|
||||
greeting = "Witaj"
|
||||
message = "{0} {1}!".format(greeting, recipient)
|
||||
|
||||
@ex.automain
|
||||
def my_main(message):
|
||||
print(message)
|
Loading…
Reference in New Issue
Block a user