From 4ed2bc06d6327c93e154fe6a1c3a9d5df0e8d68b Mon Sep 17 00:00:00 2001 From: Adrian Gonzalez-Martin Date: Wed, 20 Nov 2019 12:54:15 +0000 Subject: [PATCH 1/3] Import resources from MLflow talk --- .../MLproject | 10 +++ ...est-mlflow-model-server-seldon-config.yaml | 32 ++++----- .../conda.yaml | 8 +++ .../images/grafana-mlflow.jpg | Bin 123859 -> 113405 bytes .../mlflow-model-server-seldon-config.yaml | 14 ++-- .../mlflow_server_ab_test_ambassador/train.py | 67 ++++++++++++++++++ 6 files changed, 108 insertions(+), 23 deletions(-) create mode 100644 examples/models/mlflow_server_ab_test_ambassador/MLproject create mode 100644 examples/models/mlflow_server_ab_test_ambassador/conda.yaml mode change 100755 => 100644 examples/models/mlflow_server_ab_test_ambassador/images/grafana-mlflow.jpg create mode 100644 examples/models/mlflow_server_ab_test_ambassador/train.py diff --git a/examples/models/mlflow_server_ab_test_ambassador/MLproject b/examples/models/mlflow_server_ab_test_ambassador/MLproject new file mode 100644 index 0000000000..ade1378bc2 --- /dev/null +++ b/examples/models/mlflow_server_ab_test_ambassador/MLproject @@ -0,0 +1,10 @@ +name: mlflow-talk + +conda_env: conda.yaml + +entry_points: + main: + parameters: + alpha: float + l1_ratio: {type: float, default: 0.1} + command: "python train.py {alpha} {l1_ratio}" diff --git a/examples/models/mlflow_server_ab_test_ambassador/ab-test-mlflow-model-server-seldon-config.yaml b/examples/models/mlflow_server_ab_test_ambassador/ab-test-mlflow-model-server-seldon-config.yaml index b178aa777a..e5733b2a10 100644 --- a/examples/models/mlflow_server_ab_test_ambassador/ab-test-mlflow-model-server-seldon-config.yaml +++ b/examples/models/mlflow_server_ab_test_ambassador/ab-test-mlflow-model-server-seldon-config.yaml @@ -6,19 +6,19 @@ metadata: spec: name: mlflow-deployment predictors: - - graph: - children: [] - implementation: MLFLOW_SERVER - modelUri: gs://seldon-models/mlflow/elasticnet_wine - name: wines-classifier - name: a-mlflow-deployment-dag - replicas: 1 - traffic: 20 - - graph: - children: [] - implementation: MLFLOW_SERVER - modelUri: gs://seldon-models/mlflow/elasticnet_wine - name: wines-classifier - name: b-mlflow-deployment-dag - replicas: 1 - traffic: 80 + - graph: + children: [] + implementation: MLFLOW_SERVER + modelUri: gs://seldon-models/mlflow/model-a + name: wines-classifier + name: a-mlflow-deployment-dag + replicas: 1 + traffic: 80 + - graph: + children: [] + implementation: MLFLOW_SERVER + modelUri: gs://seldon-models/mlflow/model-b + name: wines-classifier + name: b-mlflow-deployment-dag + replicas: 1 + traffic: 20 diff --git a/examples/models/mlflow_server_ab_test_ambassador/conda.yaml b/examples/models/mlflow_server_ab_test_ambassador/conda.yaml new file mode 100644 index 0000000000..050bc82be3 --- /dev/null +++ b/examples/models/mlflow_server_ab_test_ambassador/conda.yaml @@ -0,0 +1,8 @@ +name: mlflow-talk +channels: + - defaults +dependencies: + - python=3.6 + - scikit-learn=0.19.1 + - pip: + - mlflow>=1.0 diff --git a/examples/models/mlflow_server_ab_test_ambassador/images/grafana-mlflow.jpg b/examples/models/mlflow_server_ab_test_ambassador/images/grafana-mlflow.jpg old mode 100755 new mode 100644 index a22926924ed2233e580da0522cf2bdad808c1002..0802fe4796b9beaf50b93982743d8dffd06a6952 GIT binary patch literal 113405 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

F=T<}|}sx+4399-sy`mV6zMBBvnG9VK%rd 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 literal 123859 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 LqKqk?->3c$%k!Ip diff --git a/examples/models/mlflow_server_ab_test_ambassador/mlflow-model-server-seldon-config.yaml b/examples/models/mlflow_server_ab_test_ambassador/mlflow-model-server-seldon-config.yaml index 9a6440cc34..3ab59b801f 100644 --- a/examples/models/mlflow_server_ab_test_ambassador/mlflow-model-server-seldon-config.yaml +++ b/examples/models/mlflow_server_ab_test_ambassador/mlflow-model-server-seldon-config.yaml @@ -6,10 +6,10 @@ metadata: spec: name: mlflow-deployment predictors: - - graph: - children: [] - implementation: MLFLOW_SERVER - modelUri: gs://seldon-models/mlflow/elasticnet_wine - name: wines-classifier - name: mlflow-deployment-dag - replicas: 1 + - graph: + children: [] + implementation: MLFLOW_SERVER + modelUri: gs://seldon-models/mlflow/model-a + name: wines-classifier + name: mlflow-deployment-dag + replicas: 1 diff --git a/examples/models/mlflow_server_ab_test_ambassador/train.py b/examples/models/mlflow_server_ab_test_ambassador/train.py new file mode 100644 index 0000000000..1ea6807721 --- /dev/null +++ b/examples/models/mlflow_server_ab_test_ambassador/train.py @@ -0,0 +1,67 @@ +# The data set used in this example is from http://archive.ics.uci.edu/ml/datasets/Wine+Quality +# P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. +# Modeling wine preferences by data mining from physicochemical properties. In Decision Support Systems, Elsevier, 47(4):547-553, 2009. + +import os +import warnings +import sys + +import pandas as pd +import numpy as np +from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score +from sklearn.model_selection import train_test_split +from sklearn.linear_model import ElasticNet + +import mlflow +import mlflow.sklearn + + +def eval_metrics(actual, pred): + rmse = np.sqrt(mean_squared_error(actual, pred)) + mae = mean_absolute_error(actual, pred) + r2 = r2_score(actual, pred) + return rmse, mae, r2 + + +if __name__ == "__main__": + warnings.filterwarnings("ignore") + np.random.seed(40) + + # Read the wine-quality csv file (make sure you're running this from the root of MLflow!) + wine_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "wine-quality.csv" + ) + data = pd.read_csv(wine_path) + + # Split the data into training and test sets. (0.75, 0.25) split. + train, test = train_test_split(data) + + # The predicted column is "quality" which is a scalar from [3, 9] + train_x = train.drop(["quality"], axis=1) + test_x = test.drop(["quality"], axis=1) + train_y = train[["quality"]] + test_y = test[["quality"]] + + alpha = float(sys.argv[1]) if len(sys.argv) > 1 else 0.5 + l1_ratio = float(sys.argv[2]) if len(sys.argv) > 2 else 0.5 + + with mlflow.start_run(): + lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42) + lr.fit(train_x, train_y) + + predicted_qualities = lr.predict(test_x) + + (rmse, mae, r2) = eval_metrics(test_y, predicted_qualities) + + print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio)) + print(" RMSE: %s" % rmse) + print(" MAE: %s" % mae) + print(" R2: %s" % r2) + + mlflow.log_param("alpha", alpha) + mlflow.log_param("l1_ratio", l1_ratio) + mlflow.log_metric("rmse", rmse) + mlflow.log_metric("r2", r2) + mlflow.log_metric("mae", mae) + + mlflow.sklearn.log_model(lr, "model") From efdfe1f99b05548ce7cec313f080794963f693ba Mon Sep 17 00:00:00 2001 From: Adrian Gonzalez-Martin Date: Wed, 20 Nov 2019 12:54:59 +0000 Subject: [PATCH 2/3] Update structure of notebook --- .../mlflow_server_ab_test_ambassador.ipynb | 738 +++++++++++++----- 1 file changed, 524 insertions(+), 214 deletions(-) diff --git a/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb b/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb index f7c3126ee7..b8caf5595c 100644 --- a/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb +++ b/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb @@ -5,28 +5,36 @@ "metadata": {}, "source": [ "# MLFlow Pre-packaged Model Server AB Test Deployment \n", - "In this example we will build two models with MLFlow and we will deploy them as an A/B test deployment.\n", - "\n", - "The reason this is powerful is because it allows you to deploy a new model next to the old one, distributing a percentage of traffic.\n", - "\n", - "These deployment strategies are quite simple using Seldon, and can be extended to shadow deployments, multi-armed-bandits, etc.\n", - "\n", - "\n", + "In this example we will build two models with MLFlow and we will deploy them as an A/B test deployment. The reason this is powerful is because it allows you to deploy a new model next to the old one, distributing a percentage of traffic. These deployment strategies are quite simple using Seldon, and can be extended to shadow deployments, multi-armed-bandits, etc." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## Tutorial Overview\n", "\n", "This tutorial will break down in the following sections:\n", "\n", - "1) Train the MLFlow elastic net wine example\n", - "\n", - "2) Deploy your trained model leveraging our pre-packaged MLFlow model server\n", + "1. Train the MLFlow elastic net wine example\n", "\n", - "3) Test the deployed MLFlow model by sending requests\n", + "2. Deploy your trained model leveraging our pre-packaged MLFlow model server\n", "\n", - "4) Deploy your second model as an A/B test\n", + "3. Test the deployed MLFlow model by sending requests\n", "\n", - "5) Visualise and monitor the performance of your models using Seldon Analytics\n", + "4. Deploy your second model as an A/B test\n", "\n", - "## Dependencies:\n", + "5. Visualise and monitor the performance of your models using Seldon Analytics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "toc-hr-collapsed": true, + "toc-nb-collapsed": true + }, + "source": [ + "## Dependencies\n", "\n", "For this example to work you must be running Seldon 0.3.2 or above - you can follow our [getting started guide for this](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html).\n", "\n", @@ -36,46 +44,212 @@ "* kubectl v1.14+\n", "* Python 3.6+\n", "* MLFlow 1.1.0\n", + "* pygmentize\n", + "\n", + "We will also take this chance to load the Python dependencies we will use through the tutorial:" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from seldon_core.seldon_client import SeldonClient" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "toc-hr-collapsed": true, + "toc-nb-collapsed": true + }, + "source": [ + "#### Let's get started! 🚀🔥" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "toc-hr-collapsed": true, + "toc-nb-collapsed": true + }, + "source": [ + "## 1. Train the first MLFlow Elastic Net Wine example\n", "\n", - "#### Let's get started! 🚀🔥\n" + "For our example, we will use the elastic net wine example from [MLflow's tutorial](https://www.mlflow.org/docs/latest/tutorial.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 1) Train the first MLFlow Elastic Net Wine example\n", - "We will use the elastic net wine example from MLFlow v1.1.0 for this example. First we'll import all the dependencies." + "### MLproject\n", + "\n", + "As any other MLflow project, it is defined by its `MLproject` file:" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[94mname\u001b[39;49;00m: mlflow-talk\n", + "\n", + "\u001b[94mconda_env\u001b[39;49;00m: conda.yaml\n", + "\n", + "\u001b[94mentry_points\u001b[39;49;00m:\n", + " \u001b[94mmain\u001b[39;49;00m:\n", + " \u001b[94mparameters\u001b[39;49;00m:\n", + " \u001b[94malpha\u001b[39;49;00m: float\n", + " \u001b[94ml1_ratio\u001b[39;49;00m: {\u001b[94mtype\u001b[39;49;00m: \u001b[31mfloat\u001b[39;49;00m,\u001b[94m default\u001b[39;49;00m: \u001b[31m0.1\u001b[39;49;00m}\n", + " \u001b[94mcommand\u001b[39;49;00m: \u001b[33m\"\u001b[39;49;00m\u001b[33mpython\u001b[39;49;00m\u001b[31m \u001b[39;49;00m\u001b[33mtrain.py\u001b[39;49;00m\u001b[31m \u001b[39;49;00m\u001b[33m{alpha}\u001b[39;49;00m\u001b[31m \u001b[39;49;00m\u001b[33m{l1_ratio}\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m\n" + ] + } + ], "source": [ - "import os, warnings, sys\n", - "\n", - "import pandas as pd\n", - "import numpy as np\n", - "from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.linear_model import ElasticNet\n", - "\n", - "import mlflow\n", - "import mlflow.sklearn" + "!pygmentize -l yaml MLproject" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that this project uses Conda for the environment and that it's defined in the `conda.yaml` file:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[94mname\u001b[39;49;00m: mlflow-talk\n", + "\u001b[94mchannels\u001b[39;49;00m:\n", + " - defaults\n", + "\u001b[94mdependencies\u001b[39;49;00m:\n", + " - python=3.6\n", + " - scikit-learn=0.19.1\n", + " - \u001b[94mpip\u001b[39;49;00m:\n", + " - mlflow>=1.0\n" + ] + } + ], + "source": [ + "!pygmentize conda.yaml" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lastly, we can also see that the training will be performed by the `train.py` file, which receives two parameters `alpha` and `l1_ratio`:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[37m# The data set used in this example is from http://archive.ics.uci.edu/ml/datasets/Wine+Quality\u001b[39;49;00m\n", + "\u001b[37m# P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis.\u001b[39;49;00m\n", + "\u001b[37m# Modeling wine preferences by data mining from physicochemical properties. In Decision Support Systems, Elsevier, 47(4):547-553, 2009.\u001b[39;49;00m\n", + "\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mos\u001b[39;49;00m\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mwarnings\u001b[39;49;00m\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36msys\u001b[39;49;00m\n", + "\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mpandas\u001b[39;49;00m \u001b[34mas\u001b[39;49;00m \u001b[04m\u001b[36mpd\u001b[39;49;00m\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mnumpy\u001b[39;49;00m \u001b[34mas\u001b[39;49;00m \u001b[04m\u001b[36mnp\u001b[39;49;00m\n", + "\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36msklearn.metrics\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m mean_squared_error, mean_absolute_error, r2_score\n", + "\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36msklearn.model_selection\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m train_test_split\n", + "\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36msklearn.linear_model\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m ElasticNet\n", + "\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mmlflow\u001b[39;49;00m\n", + "\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mmlflow.sklearn\u001b[39;49;00m\n", + "\n", + "\n", + "\u001b[34mdef\u001b[39;49;00m \u001b[32meval_metrics\u001b[39;49;00m(actual, pred):\n", + " rmse = np.sqrt(mean_squared_error(actual, pred))\n", + " mae = mean_absolute_error(actual, pred)\n", + " r2 = r2_score(actual, pred)\n", + " \u001b[34mreturn\u001b[39;49;00m rmse, mae, r2\n", + "\n", + "\n", + "\n", + "\u001b[34mif\u001b[39;49;00m \u001b[31m__name__\u001b[39;49;00m == \u001b[33m\"\u001b[39;49;00m\u001b[33m__main__\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m:\n", + " warnings.filterwarnings(\u001b[33m\"\u001b[39;49;00m\u001b[33mignore\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n", + " np.random.seed(\u001b[34m40\u001b[39;49;00m)\n", + "\n", + " \u001b[37m# Read the wine-quality csv file (make sure you're running this from the root of MLflow!)\u001b[39;49;00m\n", + " wine_path = os.path.join(os.path.dirname(os.path.abspath(\u001b[31m__file__\u001b[39;49;00m)), \u001b[33m\"\u001b[39;49;00m\u001b[33mwine-quality.csv\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n", + " data = pd.read_csv(wine_path)\n", + "\n", + " \u001b[37m# Split the data into training and test sets. (0.75, 0.25) split.\u001b[39;49;00m\n", + " train, test = train_test_split(data)\n", + "\n", + " \u001b[37m# The predicted column is \"quality\" which is a scalar from [3, 9]\u001b[39;49;00m\n", + " train_x = train.drop([\u001b[33m\"\u001b[39;49;00m\u001b[33mquality\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m], axis=\u001b[34m1\u001b[39;49;00m)\n", + " test_x = test.drop([\u001b[33m\"\u001b[39;49;00m\u001b[33mquality\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m], axis=\u001b[34m1\u001b[39;49;00m)\n", + " train_y = train[[\u001b[33m\"\u001b[39;49;00m\u001b[33mquality\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m]]\n", + " test_y = test[[\u001b[33m\"\u001b[39;49;00m\u001b[33mquality\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m]]\n", + "\n", + " alpha = \u001b[36mfloat\u001b[39;49;00m(sys.argv[\u001b[34m1\u001b[39;49;00m]) \u001b[34mif\u001b[39;49;00m \u001b[36mlen\u001b[39;49;00m(sys.argv) > \u001b[34m1\u001b[39;49;00m \u001b[34melse\u001b[39;49;00m \u001b[34m0.5\u001b[39;49;00m\n", + " l1_ratio = \u001b[36mfloat\u001b[39;49;00m(sys.argv[\u001b[34m2\u001b[39;49;00m]) \u001b[34mif\u001b[39;49;00m \u001b[36mlen\u001b[39;49;00m(sys.argv) > \u001b[34m2\u001b[39;49;00m \u001b[34melse\u001b[39;49;00m \u001b[34m0.5\u001b[39;49;00m\n", + "\n", + " \u001b[34mwith\u001b[39;49;00m mlflow.start_run():\n", + " lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=\u001b[34m42\u001b[39;49;00m)\n", + " lr.fit(train_x, train_y)\n", + "\n", + " predicted_qualities = lr.predict(test_x)\n", + "\n", + " (rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)\n", + "\n", + " \u001b[34mprint\u001b[39;49;00m(\u001b[33m\"\u001b[39;49;00m\u001b[33mElasticnet model (alpha=\u001b[39;49;00m\u001b[33m%f\u001b[39;49;00m\u001b[33m, l1_ratio=\u001b[39;49;00m\u001b[33m%f\u001b[39;49;00m\u001b[33m):\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m % (alpha, l1_ratio))\n", + " \u001b[34mprint\u001b[39;49;00m(\u001b[33m\"\u001b[39;49;00m\u001b[33m RMSE: \u001b[39;49;00m\u001b[33m%s\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m % rmse)\n", + " \u001b[34mprint\u001b[39;49;00m(\u001b[33m\"\u001b[39;49;00m\u001b[33m MAE: \u001b[39;49;00m\u001b[33m%s\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m % mae)\n", + " \u001b[34mprint\u001b[39;49;00m(\u001b[33m\"\u001b[39;49;00m\u001b[33m R2: \u001b[39;49;00m\u001b[33m%s\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m % r2)\n", + "\n", + " mlflow.log_param(\u001b[33m\"\u001b[39;49;00m\u001b[33malpha\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, alpha)\n", + " mlflow.log_param(\u001b[33m\"\u001b[39;49;00m\u001b[33ml1_ratio\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, l1_ratio)\n", + " mlflow.log_metric(\u001b[33m\"\u001b[39;49;00m\u001b[33mrmse\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, rmse)\n", + " mlflow.log_metric(\u001b[33m\"\u001b[39;49;00m\u001b[33mr2\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, r2)\n", + " mlflow.log_metric(\u001b[33m\"\u001b[39;49;00m\u001b[33mmae\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, mae)\n", + "\n", + " mlflow.sklearn.log_model(lr, \u001b[33m\"\u001b[39;49;00m\u001b[33mmodel\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n" + ] + } + ], + "source": [ + "!pygmentize train.py" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's load the wine dataset which is also in this folder" + "### Dataset\n", + "\n", + "We will use the wine quality dataset.\n", + "Let's load it to see what's inside:" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -216,7 +390,7 @@ "4 9.9 6 " ] }, - "execution_count": 3, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -230,152 +404,189 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Then we will define all the functions we will use to train the model" + "### Training\n", + "\n", + "We've set up our MLflow project and our dataset is ready, so we are now good to start training.\n", + "MLflow allows us to train our model with the following command:\n", + "\n", + "``` bash\n", + "$ mlflow run . -P alpha=... -P l1_ratio=...\n", + "```\n", + "\n", + "On each run, `mlflow` will set up the Conda environment defined by the `conda.yaml` file and will run the training commands defined in the `MLproject` file." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019/11/20 11:16:37 INFO mlflow.projects: === Created directory /tmp/tmpaok27ecp for downloading remote URIs passed to arguments of type 'path' ===\n", + "2019/11/20 11:16:37 INFO mlflow.projects: === Running command 'source /opt/miniconda3/bin/../etc/profile.d/conda.sh && conda activate mlflow-1ecba04797edb7e7f7212d429debd9b664c31651 1>&2 && python train.py 0.5 0.5' in run with ID 'fbbb1fe4f9ef4b4faf370f8a946f7c60' === \n", + "Elasticnet model (alpha=0.500000, l1_ratio=0.500000):\n", + " RMSE: 0.82224284975954\n", + " MAE: 0.6278761410160691\n", + " R2: 0.12678721972772689\n", + "2019/11/20 11:16:38 INFO mlflow.projects: === Run (ID 'fbbb1fe4f9ef4b4faf370f8a946f7c60') succeeded ===\n" + ] + } + ], "source": [ - "def eval_metrics(actual, pred):\n", - " rmse = np.sqrt(mean_squared_error(actual, pred))\n", - " mae = mean_absolute_error(actual, pred)\n", - " r2 = r2_score(actual, pred)\n", - " return rmse, mae, r2\n", - "\n", - "def run_train_model_iteration(data, seed=40):\n", - " \"\"\"\n", - " This function takes a pandas dataframe and returns \n", - " \"\"\"\n", - " np.random.seed(seed)\n", - " train, test = train_test_split(data)\n", - " train_x = train.drop([\"quality\"], axis=1)\n", - " test_x = test.drop([\"quality\"], axis=1)\n", - " train_y = train[[\"quality\"]]\n", - " test_y = test[[\"quality\"]]\n", - "\n", - " alpha = 0.5\n", - " l1_ratio = 0.5\n", - "\n", - " with mlflow.start_run():\n", - " lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)\n", - " lr.fit(train_x, train_y)\n", - "\n", - " predicted_qualities = lr.predict(test_x)\n", - "\n", - " (rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)\n", + "!mlflow run . -P alpha=0.5 -P l1_ratio=0.5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each of these commands will create a new run which can be visualised through the MLFlow dashboard as per the screenshot below.\n", "\n", - " print(\"Elasticnet model (alpha=%f, l1_ratio=%f):\" % (alpha, l1_ratio))\n", - " print(\" RMSE: %s\" % rmse)\n", - " print(\" MAE: %s\" % mae)\n", - " print(\" R2: %s\" % r2)\n", - " \n", - " # We create a store of the model \n", - " mlflow.sklearn.log_model(lr, \"model\")\n" + "![](images/mlflow-dashboard.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can create a first trained model, which the function above creates an MLFlow \"log\"" + "Each of these models can actually be found on the `mlruns` folder:" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Elasticnet model (alpha=0.500000, l1_ratio=0.500000):\n", - " RMSE: 0.8222428497595403\n", - " MAE: 0.6278761410160693\n", - " R2: 0.12678721972772622\n" + "\u001b[01;34mmlruns/0\u001b[00m\n", + "├── \u001b[01;34m835f65ed47974d3fb3359e646b61a009\u001b[00m\n", + "├── \u001b[01;34mfbbb1fe4f9ef4b4faf370f8a946f7c60\u001b[00m\n", + "└── meta.yaml\n", + "\n", + "2 directories, 1 file\n" ] } ], "source": [ - "run_train_model_iteration(data)" + "!tree -L 1 mlruns/0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Each of these iterations will create a new run which can be visualised through the MLFlow dashboard as per the screenshot below.\n", + "### MLmodel\n", "\n", - "![](images/mlflow-dashboard.png)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each of these models can actually be able to found on the `mlruns` folder" + "Inside each of these folders, MLflow stores the parameters we used to train our model, any metric we logged during training, and a snapshot of our model.\n", + "If we look into one of them, we can see the following structure:" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "012c5eaa115a4f43b5e4b74cb63d5c56 meta.yaml\r\n" + "\u001b[01;34mmlruns/0/835f65ed47974d3fb3359e646b61a009\u001b[00m\n", + "├── \u001b[01;34martifacts\u001b[00m\n", + "│   └── \u001b[01;34mmodel\u001b[00m\n", + "│   ├── conda.yaml\n", + "│   ├── MLmodel\n", + "│   └── model.pkl\n", + "├── meta.yaml\n", + "├── \u001b[01;34mmetrics\u001b[00m\n", + "│   ├── mae\n", + "│   ├── r2\n", + "│   └── rmse\n", + "├── \u001b[01;34mparams\u001b[00m\n", + "│   ├── alpha\n", + "│   └── l1_ratio\n", + "└── \u001b[01;34mtags\u001b[00m\n", + " ├── mlflow.gitRepoURL\n", + " ├── mlflow.project.backend\n", + " ├── mlflow.project.entryPoint\n", + " ├── mlflow.project.env\n", + " ├── mlflow.source.git.commit\n", + " ├── mlflow.source.git.repoURL\n", + " ├── mlflow.source.name\n", + " ├── mlflow.source.type\n", + " └── mlflow.user\n", + "\n", + "5 directories, 18 files\n" ] } ], "source": [ - "!ls mlruns/0" + "!tree mlruns/0/$(ls mlruns/0 | head -1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Inside of the folders with the hash names is where we can find the artefacts of our model, which we'll be using to deploy with Seldon" + "In particular, we are interested in the `MLmodel` file stored under `artifacts/model`:" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "mlruns/0/012c5eaa115a4f43b5e4b74cb63d5c56/artifacts/\n" + "\u001b[94martifact_path\u001b[39;49;00m: model\n", + "\u001b[94mflavors\u001b[39;49;00m:\n", + " \u001b[94mpython_function\u001b[39;49;00m:\n", + " \u001b[94mdata\u001b[39;49;00m: model.pkl\n", + " \u001b[94menv\u001b[39;49;00m: conda.yaml\n", + " \u001b[94mloader_module\u001b[39;49;00m: mlflow.sklearn\n", + " \u001b[94mpython_version\u001b[39;49;00m: 3.6.9\n", + " \u001b[94msklearn\u001b[39;49;00m:\n", + " \u001b[94mpickled_model\u001b[39;49;00m: model.pkl\n", + " \u001b[94mserialization_format\u001b[39;49;00m: cloudpickle\n", + " \u001b[94msklearn_version\u001b[39;49;00m: 0.19.1\n", + "\u001b[94mrun_id\u001b[39;49;00m: 835f65ed47974d3fb3359e646b61a009\n", + "\u001b[94mutc_time_created\u001b[39;49;00m: \u001b[33m'\u001b[39;49;00m\u001b[33m2019-11-20\u001b[39;49;00m\u001b[31m \u001b[39;49;00m\u001b[33m11:15:42.706884\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m\n" ] } ], "source": [ - "print(\"mlruns/0/\"+next(os.walk(\"mlruns/0\"))[1][0]+\"/artifacts/\")" + "!pygmentize -l yaml mlruns/0/$(ls mlruns/0 | head -1)/artifacts/model/MLmodel" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we should upload newly trained model into a public Google Bucket or S3 bucket. \n", + "This file stores the details of how the model was stored.\n", + "With this information (plus the other files in the folder), we are able to load the model back.\n", + "Seldon's MLflow server will use this information to serve this model.\n", "\n", - "We have already done this to make it simpler, which you will be able to find at `gs://seldon-models/mlflow/elasticnet_wine`" + "Now we should upload our newly trained model into a public Google Bucket or S3 bucket.\n", + "We have already done this to make it simpler, which you will be able to find at `gs://seldon-models/mlflow/model-a`." ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "toc-hr-collapsed": true, + "toc-nb-collapsed": true + }, "source": [ - "## 2) Deploy your model using the Pre-packaged Moldel Server for MLFlow\n", - "Once you have a Kubernetes Cluster running with [Seldon](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html) and [Ambassador](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html#install-ambassador) running we can deploy our trained MLFlow model.\n", + "## 2. Deploy your model using the Pre-packaged Moldel Server for MLFlow\n", "\n", + "Once you have a Kubernetes Cluster running with [Seldon](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html) and [Ambassador](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html#install-ambassador) running we can deploy our trained MLFlow model.\n", "For this we have to create a Seldon definition of the model server definition, which we will break down further below.\n", "\n", "We will be using the model we updated to our google bucket (gs://seldon-models/mlflow/elasticnet_wine), but you can use your model if you uploaded it to a public bucket." @@ -383,34 +594,33 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Writing mlflow-model-server-seldon-config.yaml\n" + "\u001b[04m\u001b[36m---\u001b[39;49;00m\n", + "\u001b[94mapiVersion\u001b[39;49;00m: machinelearning.seldon.io/v1alpha2\n", + "\u001b[94mkind\u001b[39;49;00m: SeldonDeployment\n", + "\u001b[94mmetadata\u001b[39;49;00m:\n", + " \u001b[94mname\u001b[39;49;00m: mlflow-deployment\n", + "\u001b[94mspec\u001b[39;49;00m:\n", + " \u001b[94mname\u001b[39;49;00m: mlflow-deployment\n", + " \u001b[94mpredictors\u001b[39;49;00m:\n", + " - \u001b[94mgraph\u001b[39;49;00m:\n", + " \u001b[94mchildren\u001b[39;49;00m: []\n", + " \u001b[94mimplementation\u001b[39;49;00m: MLFLOW_SERVER\n", + " \u001b[94mmodelUri\u001b[39;49;00m: gs://seldon-models/mlflow/elasticnet_wine\n", + " \u001b[94mname\u001b[39;49;00m: wines-classifier\n", + " \u001b[94mname\u001b[39;49;00m: mlflow-deployment-dag\n", + " \u001b[94mreplicas\u001b[39;49;00m: 1\n" ] } ], "source": [ - "%%writefile mlflow-model-server-seldon-config.yaml\n", - "---\n", - "apiVersion: machinelearning.seldon.io/v1alpha2\n", - "kind: SeldonDeployment\n", - "metadata:\n", - " name: mlflow-deployment\n", - "spec:\n", - " name: mlflow-deployment\n", - " predictors:\n", - " - graph:\n", - " children: []\n", - " implementation: MLFLOW_SERVER\n", - " modelUri: gs://seldon-models/mlflow/elasticnet_wine\n", - " name: wines-classifier\n", - " name: mlflow-deployment-dag\n", - " replicas: 1" + "!pygmentize mlflow-model-server-seldon-config.yaml" ] }, { @@ -422,14 +632,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "seldondeployment.machinelearning.seldon.io/mlflow-deployment created\r\n" + "seldondeployment.machinelearning.seldon.io/mlflow-deployment created\n" ] } ], @@ -450,19 +660,19 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "deployment \"mlflow-deployment-mlflow-deployment-dag\" successfully rolled out\r\n" + "deployment \"mlflow-deployment-mlflow-deployment-dag-77efeb1\" successfully rolled out\n" ] } ], "source": [ - "!kubectl rollout status deployment.apps/mlflow-deployment-mlflow-deployment-dag" + "!kubectl rollout status deployment.apps/mlflow-deployment-mlflow-deployment-dag-77efeb1" ] }, { @@ -474,9 +684,12 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "toc-hr-collapsed": true, + "toc-nb-collapsed": true + }, "source": [ - "## 3) Test the deployed MLFlow model by sending requests\n", + "## 3. Test the deployed MLFlow model by sending requests\n", "Now that our model is deployed in Kubernetes, we are able to send any requests." ] }, @@ -491,15 +704,15 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ambassador LoadBalancer 10.100.227.53 localhost 80:31215/TCP,443:31622/TCP 16d\r\n", - "ambassador-admins ClusterIP 10.101.19.26 8877/TCP 16d\r\n" + "ambassador NodePort 10.97.44.51 80:30080/TCP 23h\n", + "ambassador-admin ClusterIP 10.108.207.108 8877/TCP 23h\n" ] } ], @@ -516,7 +729,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -541,7 +754,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -550,38 +763,26 @@ "text": [ "{\n", " \"meta\": {\n", - " \"puid\": \"4gapbfom6aa1nb6bm71jcsdo5q\",\n", + " \"puid\": \"n7i76rf930auf7u7ulhig51bu5\",\n", " \"tags\": {\n", " },\n", " \"routing\": {\n", " },\n", " \"requestPath\": {\n", - " \"wines-classifier\": \"\"\n", + " \"wines-classifier\": \"seldonio/mlflowserver_rest:0.2\"\n", " },\n", " \"metrics\": []\n", " },\n", " \"data\": {\n", " \"names\": [],\n", - " \"ndarray\": [5.655099099229193]\n", + " \"ndarray\": [5.550530190667395]\n", " }\n", "}" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "\r", - " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r", - "100 354 100 250 100 104 12500 5200 --:--:-- --:--:-- --:--:-- 17700\n" - ] } ], "source": [ - "%%bash\n", - "curl -X POST -H 'Content-Type: application/json' \\\n", + "!curl -X POST -H 'Content-Type: application/json' \\\n", " -d \"{'data': {'names': [], 'ndarray': [[7.0, 0.27, 0.36, 20.7, 0.045, 45.0, 170.0, 1.001, 3.0, 0.45, 8.8]]}}\" \\\n", " http://localhost:80/seldon/default/mlflow-deployment/api/v0.1/predictions" ] @@ -595,7 +796,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -603,15 +804,16 @@ "output_type": "stream", "text": [ "meta {\n", - " puid: \"kt99thn77rajhquoq50jb49hmh\"\n", + " puid: \"cdjl6irq91taaavkam57g2eatu\"\n", " requestPath {\n", " key: \"wines-classifier\"\n", + " value: \"seldonio/mlflowserver_rest:0.2\"\n", " }\n", "}\n", "data {\n", " ndarray {\n", " values {\n", - " number_value: 5.655099099229193\n", + " number_value: 5.550530190667395\n", " }\n", " }\n", "}\n", @@ -632,8 +834,7 @@ "\n", "sc = SeldonClient(\n", " gateway=\"ambassador\", \n", - " gateway_endpoint=HOST + \":\" + port,\n", - " namespace=\"default\")\n", + " gateway_endpoint=HOST + \":\" + port)\n", "\n", "client_prediction = sc.predict(\n", " data=batch, \n", @@ -646,74 +847,118 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "toc-hr-collapsed": true, + "toc-nb-collapsed": true + }, "source": [ - "## 4) Deploy your second model as an A/B test\n", + "## 4. Deploy your second model as an A/B test\n", + "\n", "Now that we have a model in production, it's possible to deploy a second model as an A/B test.\n", + "Our model will also be an Elastic Net model but using a different set of parameters.\n", + "We can easily train it by leveraging MLflow:" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019/11/20 11:38:36 INFO mlflow.projects: === Created directory /tmp/tmppr1ufom9 for downloading remote URIs passed to arguments of type 'path' ===\n", + "2019/11/20 11:38:36 INFO mlflow.projects: === Running command 'source /opt/miniconda3/bin/../etc/profile.d/conda.sh && conda activate mlflow-1ecba04797edb7e7f7212d429debd9b664c31651 1>&2 && python train.py 0.75 0.2' in run with ID '18f9f8c5d6a249f28f024011dea10e23' === \n", + "Elasticnet model (alpha=0.750000, l1_ratio=0.200000):\n", + " RMSE: 0.8118203122913661\n", + " MAE: 0.6244638140789723\n", + " R2: 0.14878415499818187\n", + "2019/11/20 11:38:37 INFO mlflow.projects: === Run (ID '18f9f8c5d6a249f28f024011dea10e23') succeeded ===\n" + ] + } + ], + "source": [ + "!mlflow run . -P alpha=0.75 -P l1_ratio=0.2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we did before, we will now need to upload our model to a cloud bucket.\n", + "To speed things up, we already have done so and the second model is now accessible in `gs://seldon-models/mlflow/model-b`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### A/B test\n", "\n", - "By leveraging this, we will be redirecting 20% of the traffic to the new model.\n", + "We will deploy our second model as an A/B test.\n", + "In particular, we will redirect 20% of the traffic to the new model.\n", "\n", - "This can be done by simply adding a `traffic` attribute as shown below. " + "This can be done by simply adding a `traffic` attribute on our `SeldonDeployment` spec:" ] }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Overwriting ab-test-mlflow-model-server-seldon-config.yaml\n" + "\u001b[04m\u001b[36m---\u001b[39;49;00m\n", + "\u001b[94mapiVersion\u001b[39;49;00m: machinelearning.seldon.io/v1alpha2\n", + "\u001b[94mkind\u001b[39;49;00m: SeldonDeployment\n", + "\u001b[94mmetadata\u001b[39;49;00m:\n", + " \u001b[94mname\u001b[39;49;00m: mlflow-deployment\n", + "\u001b[94mspec\u001b[39;49;00m:\n", + " \u001b[94mname\u001b[39;49;00m: mlflow-deployment\n", + " \u001b[94mpredictors\u001b[39;49;00m:\n", + " - \u001b[94mgraph\u001b[39;49;00m:\n", + " \u001b[94mchildren\u001b[39;49;00m: []\n", + " \u001b[94mimplementation\u001b[39;49;00m: MLFLOW_SERVER\n", + " \u001b[94mmodelUri\u001b[39;49;00m: gs://seldon-models/mlflow/model-a\n", + " \u001b[94mname\u001b[39;49;00m: wines-classifier\n", + " \u001b[94mname\u001b[39;49;00m: a-mlflow-deployment-dag\n", + " \u001b[94mreplicas\u001b[39;49;00m: 1\n", + " \u001b[94mtraffic\u001b[39;49;00m: 80\n", + " - \u001b[94mgraph\u001b[39;49;00m:\n", + " \u001b[94mchildren\u001b[39;49;00m: []\n", + " \u001b[94mimplementation\u001b[39;49;00m: MLFLOW_SERVER\n", + " \u001b[94mmodelUri\u001b[39;49;00m: gs://seldon-models/mlflow/model-b\n", + " \u001b[94mname\u001b[39;49;00m: wines-classifier\n", + " \u001b[94mname\u001b[39;49;00m: b-mlflow-deployment-dag\n", + " \u001b[94mreplicas\u001b[39;49;00m: 1\n", + " \u001b[94mtraffic\u001b[39;49;00m: 20\n" ] } ], "source": [ - "%%writefile ab-test-mlflow-model-server-seldon-config.yaml\n", - "---\n", - "apiVersion: machinelearning.seldon.io/v1alpha2\n", - "kind: SeldonDeployment\n", - "metadata:\n", - " name: mlflow-deployment\n", - "spec:\n", - " name: mlflow-deployment\n", - " predictors:\n", - " - graph:\n", - " children: []\n", - " implementation: MLFLOW_SERVER\n", - " modelUri: gs://seldon-models/mlflow/elasticnet_wine\n", - " name: wines-classifier\n", - " name: a-mlflow-deployment-dag\n", - " replicas: 1\n", - " traffic: 20\n", - " - graph:\n", - " children: []\n", - " implementation: MLFLOW_SERVER\n", - " modelUri: gs://seldon-models/mlflow/elasticnet_wine\n", - " name: wines-classifier\n", - " name: b-mlflow-deployment-dag\n", - " replicas: 1\n", - " traffic: 80" + "!pygmentize ab-test-mlflow-model-server-seldon-config.yaml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "And similar to the model above, we only need to run the command to run it" + "And similar to the model above, we only need to run the following to deploy it:" ] }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "seldondeployment.machinelearning.seldon.io/mlflow-deployment configured\r\n" + "seldondeployment.machinelearning.seldon.io/mlflow-deployment created\n" ] } ], @@ -732,20 +977,17 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "NAME READY STATUS RESTARTS AGE\r\n", - "ambassador-6657ccd4f6-4z6xh 1/1 Running 11 16d\r\n", - "ambassador-6657ccd4f6-5mc46 1/1 Running 11 16d\r\n", - "ambassador-6657ccd4f6-qqfgn 1/1 Running 13 16d\r\n", - "mlflow-deployment-a-mlflow-deployment-dag-68d4c9fcf5-crd9q 2/2 Running 0 2m25s\r\n", - "mlflow-deployment-b-mlflow-deployment-dag-8cdcccbfc-rhc4p 2/2 Running 0 2m25s\r\n", - "seldon-operator-controller-manager-0 1/1 Running 0 110m\r\n" + "NAME READY STATUS RESTARTS AGE\n", + "ambassador-5d97b7df6f-tkrhq 1/1 Running 0 24h\n", + "mlflow-deployment-a-mlflow-deployment-dag-77efeb1-56dd56dcpx54t 0/2 Init:0/1 0 6s\n", + "mlflow-deployment-b-mlflow-deployment-dag-77efeb1-86cb459drl7fw 0/2 Init:0/1 0 6s\n" ] } ], @@ -754,11 +996,11 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## 5) Visualise and monitor the performance of your models using Seldon Analytics\n", + "## 5. Visualise and monitor the performance of your models using Seldon Analytics\n", + "\n", "This section is optional, but by following the instructions you will be able to visualise the performance of both models as per the chart below.\n", "\n", "In order for this example to work you need to install and run the [Grafana Analytics package for Seldon Core](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/analytics.html#helm-analytics-chart).\n", @@ -788,41 +1030,89 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "Now that we can access grafana, you have to go to the prediction analytics dashboard, where you'll be able to see metrics.\n", + "Now that we have both models running in our Kubernetes cluster, we can analyse their performance using Seldon Core's integration with Prometheus and Grafana.\n", + "To do so, we will iterate over the training set (which can be found in `wine-quality.csv`), making a request and sending the feedback of the prediction.\n", "\n", - "Now we can run the following `while True` loop to start sending some data:" + "Since the `/feedback` endpoint requires a `reward` signal (i.e. the higher the better), we will simulate one as:\n", + "\n", + "$$\n", + " R(x_{n})\n", + " = \\begin{cases}\n", + " \\frac{1}{(y_{n} - f(x_{n}))^{2}} &, y_{n} \\neq f(x_{n}) \\\\\n", + " 500 &, y_{n} = f(x_{n})\n", + " \\end{cases}\n", + "$$\n", + "\n", + ", where $R(x_{n})$ is the reward for input point $x_{n}$, $f(x_{n})$ is our trained model and $y_{n}$ is the actual value." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 56, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0 [4.949928760465064]\n", + "1 [2.33866485520918]\n", + "2 [16.671295276036165]\n", + "3 [11.360528710955778]\n", + "4 [10.762015969288063]\n", + " ... \n", + "4893 [270.7374890482452]\n", + "4894 [1.8348875422756648]\n", + "4895 [3.872377496349884]\n", + "4896 [1.9544204216470193]\n", + "4897 [22.25374886390087]\n", + "Length: 4898, dtype: object" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "while True:\n", - " client_prediction = sc.predict(\n", - " data=batch, \n", + "def _get_reward(y, y_pred):\n", + " if y == y_pred:\n", + " return 500 \n", + " \n", + " return 1 / np.square(y - y_pred)\n", + "\n", + "def _test_row(row):\n", + " input_features = row[:-1]\n", + " feature_names = input_features.index.to_list()\n", + " X = input_features.values.reshape(1, -1)\n", + " y = row[-1].reshape(1, -1)\n", + " \n", + " # Note that we are re-using the SeldonClient defined previously\n", + " r = sc.predict(\n", + " deployment_name=\"mlflow-deployment\",\n", + " data=X,\n", + " names=feature_names)\n", + " \n", + " y_pred = r.response.data.tensor.values\n", + " reward = _get_reward(y, y_pred)\n", + " sc.feedback(\n", " deployment_name=\"mlflow-deployment\",\n", - " names=[],\n", - " payload_type=payload_type)\n", + " prediction_request=r.request,\n", + " prediction_response=r.response,\n", + " reward=reward)\n", + " \n", + " return reward[0]\n", "\n", - "print(client_prediction.response)" + "data.apply(_test_row, axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You should now be able to see the metrics reflected as per the chart below.\n", - "\n", - "In the chart you can visualise on the bottom lef the requests per second, which shows the different traffic breakdown we specified.\n", - "\n", - "You are able to add your own custom metrics, and try out other more complex deployments by following further guides at https://docs.seldon.io/projects/seldon-core/en/latest/workflow/README.html" + "You should now be able to see Seldon's pre-built Grafana dashboard." ] }, { @@ -831,13 +1121,33 @@ "source": [ "![](images/grafana-mlflow.jpg)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In bottom of the dashboard you can see the following charts: \n", + "\n", + "- On the left: the requests per second, which shows the different traffic breakdown we specified.\n", + "- On the center: the reward, where you can see how model `a` outperforms model `b` by a large margin.\n", + "- On the right, the latency for each one of them.\n", + "\n", + "You are able to add your own custom metrics, and try out other more complex deployments by following further guides at https://docs.seldon.io/projects/seldon-core/en/latest/workflow/README.html" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "mirror1", "language": "python", - "name": "python3" + "name": "mirror1" }, "language_info": { "codemirror_mode": { @@ -849,7 +1159,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.6.9" }, "varInspector": { "cols": { @@ -882,5 +1192,5 @@ } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } From 1926c3e3d57f7f35c8c5b5d169469f1bddb40093 Mon Sep 17 00:00:00 2001 From: Adrian Gonzalez-Martin Date: Wed, 20 Nov 2019 12:58:03 +0000 Subject: [PATCH 3/3] Add link to SparkAI Summit talk --- .../mlflow_server_ab_test_ambassador.ipynb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb b/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb index b8caf5595c..1f7b1e3d8a 100644 --- a/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb +++ b/examples/models/mlflow_server_ab_test_ambassador/mlflow_server_ab_test_ambassador.ipynb @@ -14,7 +14,7 @@ "source": [ "## Tutorial Overview\n", "\n", - "This tutorial will break down in the following sections:\n", + "This tutorial will follow closely break down in the following sections:\n", "\n", "1. Train the MLFlow elastic net wine example\n", "\n", @@ -24,7 +24,9 @@ "\n", "4. Deploy your second model as an A/B test\n", "\n", - "5. Visualise and monitor the performance of your models using Seldon Analytics" + "5. Visualise and monitor the performance of your models using Seldon Analytics\n", + "\n", + "It will follow closely our talk at the [Spark + AI Summit 2019 on Seldon and MLflow](https://www.youtube.com/watch?v=D6eSfd9w9eA)." ] }, {