Zaktualizowaneo materiały dot. MLFLow
This commit is contained in:
parent
a022ba0b64
commit
0d2ac2309a
@ -8,7 +8,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
|
"## ![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
|
||||||
"<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> 8. <i>MLFlow</i> [laboratoria]</h2> \n",
|
"<h2> 8. <i>MLFlow</i> [laboratoria]</h2> \n",
|
||||||
@ -73,7 +73,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 2,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"slideshow": {
|
"slideshow": {
|
||||||
"slide_type": "slide"
|
"slide_type": "slide"
|
||||||
@ -88,7 +88,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 80,
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"!mkdir -p IUM_08/examples/sklearn_elasticnet_wine/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"slideshow": {
|
"slideshow": {
|
||||||
"slide_type": "slide"
|
"slide_type": "slide"
|
||||||
@ -190,6 +199,7 @@
|
|||||||
" mlflow.log_metric(\"mae\", mae)\n",
|
" mlflow.log_metric(\"mae\", mae)\n",
|
||||||
" \n",
|
" \n",
|
||||||
" # Infer model signature to log it\n",
|
" # Infer model signature to log it\n",
|
||||||
|
" # Więcej o sygnaturach: https://mlflow.org/docs/latest/models.html?highlight=signature#model-signature\n",
|
||||||
" signature = mlflow.models.signature.infer_signature(train_x, lr.predict(train_x))\n",
|
" signature = mlflow.models.signature.infer_signature(train_x, lr.predict(train_x))\n",
|
||||||
"\n",
|
"\n",
|
||||||
" tracking_url_type_store = urlparse(mlflow.get_tracking_uri()).scheme\n",
|
" tracking_url_type_store = urlparse(mlflow.get_tracking_uri()).scheme\n",
|
||||||
@ -948,7 +958,7 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"# Zadania [10p pkt]\n",
|
"# Zadania [10p pkt]\n",
|
||||||
"1. Dodaj do swojego projektu logowanie parametrów i metryk za pomocą MLflow (polecenia `mlflow.log_param` i `mlflow.log_metric`\n",
|
"1. Dodaj do swojego projektu logowanie parametrów i metryk za pomocą MLflow (polecenia `mlflow.log_param` i `mlflow.log_metric`\n",
|
||||||
"2. Dodaj plik MLProject definiujący polecenia do trenowania i testowania, ich parametry wywołania oraz środowisko (użyj zdefiniowanego wcześniej obrazu Docker)"
|
"2. Dodaj plik MLProject definiujący polecenia do trenowania i testowania, ich parametry wywołania oraz środowisko (Conda albo Docker)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1390,7 +1400,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source": [
|
"source": [
|
||||||
"## Zadania\n",
|
"## Zadania (termin: 14.05 EOD) \n",
|
||||||
"1. [2 pkt] Dodaj do joba treningowego wywołania MLflow, tak, żeby przy każdym uruchomieniu stworzyć i zarchiwizować katalog z modelem. Plik MLmodel powinien zawierać pola:\n",
|
"1. [2 pkt] Dodaj do joba treningowego wywołania MLflow, tak, żeby przy każdym uruchomieniu stworzyć i zarchiwizować katalog z modelem. Plik MLmodel powinien zawierać pola:\n",
|
||||||
" - signature\n",
|
" - signature\n",
|
||||||
" - input_example\n",
|
" - input_example\n",
|
||||||
@ -1425,6 +1435,10 @@
|
|||||||
" - CLI: `export MLFLOW_TRACKING_URI=http://172.17.0.1:5000`\n",
|
" - CLI: `export MLFLOW_TRACKING_URI=http://172.17.0.1:5000`\n",
|
||||||
" \n",
|
" \n",
|
||||||
"- Żeby klient MLflow działający w kontenerze docker mógł zapisywać i pdczytywać artefakty, muszą Państwo podmonotwać katalog `/tmp/mlruns` i `/mlruns` (ten drugi po to, żeby po restarcie serwera katalog nie został wyczyszczony)\n",
|
"- Żeby klient MLflow działający w kontenerze docker mógł zapisywać i pdczytywać artefakty, muszą Państwo podmonotwać katalog `/tmp/mlruns` i `/mlruns` (ten drugi po to, żeby po restarcie serwera katalog nie został wyczyszczony)\n",
|
||||||
|
" - jak podmontować: ```docker.image('my-image').inside('-v /tmp/mlruns:/tmp/mlruns' -v /mlruns:/mlruns')```\n",
|
||||||
|
" - Przykład działąjącego joba na Jenkinsie zapisującego wyniki do MLFlow: https://tzietkiewicz.vm.wmi.amu.edu.pl:8081/job/gitea-test/job/ium-helloworld/job/master/\n",
|
||||||
|
" - Repo: https://git.wmi.amu.edu.pl/tzietkiewicz/ium-helloworld/src/branch/master\n",
|
||||||
|
"\n",
|
||||||
"- Proszę ustawić nazwę eksperymentu na numer indeksu, dzięki temu każdy z Państwa będzie widział swoje eksperymenty oddzielnie:\n",
|
"- Proszę ustawić nazwę eksperymentu na numer indeksu, dzięki temu każdy z Państwa będzie widział swoje eksperymenty oddzielnie:\n",
|
||||||
"`mlflow.set_experiment(\"s123456\")`"
|
"`mlflow.set_experiment(\"s123456\")`"
|
||||||
]
|
]
|
||||||
@ -1435,7 +1449,7 @@
|
|||||||
"celltoolbar": "Slideshow",
|
"celltoolbar": "Slideshow",
|
||||||
"email": "tomasz.zietkiewicz@amu.edu.pl",
|
"email": "tomasz.zietkiewicz@amu.edu.pl",
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python 3 (ipykernel)",
|
"display_name": "Python 3",
|
||||||
"language": "python",
|
"language": "python",
|
||||||
"name": "python3"
|
"name": "python3"
|
||||||
},
|
},
|
||||||
@ -1450,7 +1464,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.10.4"
|
"version": "3.9.12"
|
||||||
},
|
},
|
||||||
"slideshow": {
|
"slideshow": {
|
||||||
"slide_type": "slide"
|
"slide_type": "slide"
|
||||||
|
Loading…
Reference in New Issue
Block a user