1
0
forked from pms/ium

Zaktualizowaneo materiały dot. MLFLow

This commit is contained in:
Tomasz 2023-04-20 11:28:19 +02:00
parent a022ba0b64
commit 0d2ac2309a

View File

@ -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"