From 7520379d30395a97c4774f20a7a98ac34d355498 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 9 Jun 2023 14:45:45 -0400 Subject: [PATCH 01/16] jupyter notebook for python scripts/docs Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 597 ++++++++++++++++++++++++ 1 file changed, 597 insertions(+) create mode 100644 docs/samples/modelmesh_sdk_sample.ipynb diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb new file mode 100644 index 00000000..9f46eb5c --- /dev/null +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -0,0 +1,597 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sample for ModelMesh Serving using the KServe Python SDK\n", + "\n", + "## This notebook shows how to use the KServe SDK to create, update, and delete an InferenceService\n", + "\n", + "- This sample assumes ModelMesh Serving was deployed using the [https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md](quickstart guide)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from kubernetes import client\n", + "from kserve import constants\n", + "from kserve import V1beta1InferenceService\n", + "from kserve import V1beta1InferenceServiceSpec\n", + "from kserve import V1beta1PredictorSpec\n", + "from kserve import V1beta1SKLearnSpec\n", + "from kserve import V1beta1TFServingSpec\n", + "from kserve import V1beta1StorageSpec\n", + "from kserve import KServeClient" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The variables being set are `namespace`, `name`, `protocol_version` and `api_version`\n", + "- The `namespace` definition is where the InferenceService will be deployed to\n", + "- `name` will be the name of the InferenceService\n", + "- For ModelMesh, the `v2` protocol must be used since it doesn't support the default `v1` protocol" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "namespace = 'modelmesh-serving'\n", + "name='msnist-sample'\n", + "protocol_version='v2'" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Define InferenceService specifying ModelMesh as the deploymentMode" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "isvc = V1beta1InferenceService(\n", + " api_version=constants.KSERVE_V1BETA1,\n", + " kind=constants.KSERVE_KIND,\n", + " metadata=client.V1ObjectMeta(\n", + " name=name, \n", + " namespace=namespace,\n", + " annotations={\n", + " 'serving.kserve.io/deploymentMode': 'ModelMesh'\n", + " }\n", + " ),\n", + " spec=V1beta1InferenceServiceSpec(\n", + " predictor=V1beta1PredictorSpec(\n", + " sklearn=V1beta1SKLearnSpec(\n", + " protocol_version=protocol_version,\n", + " storage=V1beta1StorageSpec(\n", + " key='localMinIO',\n", + " path='sklearn/mnist-svm.joblib'\n", + " )\n", + " )\n", + " )\n", + " )\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create InferenceService" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'kind': 'InferenceService',\n", + " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", + " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'generation': 1,\n", + " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", + " 'f:serving.kserve.io/deploymentMode': {}}},\n", + " 'f:spec': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:sklearn': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", + " 'manager': 'OpenAPI-Generator',\n", + " 'operation': 'Update',\n", + " 'time': '2023-06-06T19:44:36Z'}],\n", + " 'name': 'msnist-sample',\n", + " 'namespace': 'modelmesh-serving',\n", + " 'resourceVersion': '3939550',\n", + " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'spec': {'predictor': {'sklearn': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}}}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kserve = KServeClient()\n", + "kserve.create(isvc)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### InterenceService is not ready" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'kind': 'InferenceService',\n", + " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", + " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'generation': 1,\n", + " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", + " 'f:serving.kserve.io/deploymentMode': {}}},\n", + " 'f:spec': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:sklearn': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", + " 'manager': 'OpenAPI-Generator',\n", + " 'operation': 'Update',\n", + " 'time': '2023-06-06T19:44:36Z'},\n", + " {'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:status': {'.': {},\n", + " 'f:conditions': {},\n", + " 'f:modelStatus': {'.': {},\n", + " 'f:copies': {'.': {}, 'f:failedCopies': {}},\n", + " 'f:lastFailureInfo': {'.': {},\n", + " 'f:message': {},\n", + " 'f:modelRevisionName': {},\n", + " 'f:reason': {}},\n", + " 'f:states': {'.': {},\n", + " 'f:activeModelState': {},\n", + " 'f:targetModelState': {}},\n", + " 'f:transitionStatus': {}}}},\n", + " 'manager': 'manager',\n", + " 'operation': 'Update',\n", + " 'subresource': 'status',\n", + " 'time': '2023-06-06T19:44:36Z'}],\n", + " 'name': 'msnist-sample',\n", + " 'namespace': 'modelmesh-serving',\n", + " 'resourceVersion': '3939551',\n", + " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'spec': {'predictor': {'sklearn': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", + " 'status': {'conditions': [{'lastTransitionTime': '2023-06-06T19:44:36Z',\n", + " 'status': 'False',\n", + " 'type': 'PredictorReady'},\n", + " {'lastTransitionTime': '2023-06-06T19:44:36Z',\n", + " 'status': 'False',\n", + " 'type': 'Ready'}],\n", + " 'modelStatus': {'copies': {'failedCopies': 0},\n", + " 'lastFailureInfo': {'message': 'Waiting for runtime Pod to become available',\n", + " 'modelRevisionName': 'msnist-sample__isvc-6388459bfd',\n", + " 'reason': 'RuntimeUnhealthy'},\n", + " 'states': {'activeModelState': 'Pending', 'targetModelState': ''},\n", + " 'transitionStatus': ''}}}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kserve.get(name, namespace=namespace)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check to see status of InferenceService" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "kserve.wait_isvc_ready(name, namespace=namespace)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### InferenceService is now ready" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'kind': 'InferenceService',\n", + " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", + " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'generation': 1,\n", + " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", + " 'f:serving.kserve.io/deploymentMode': {}}},\n", + " 'f:spec': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:sklearn': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", + " 'manager': 'OpenAPI-Generator',\n", + " 'operation': 'Update',\n", + " 'time': '2023-06-06T19:44:36Z'},\n", + " {'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:status': {'.': {},\n", + " 'f:components': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:grpcUrl': {},\n", + " 'f:restUrl': {},\n", + " 'f:url': {}}},\n", + " 'f:conditions': {},\n", + " 'f:modelStatus': {'.': {},\n", + " 'f:copies': {'.': {}, 'f:failedCopies': {}, 'f:totalCopies': {}},\n", + " 'f:states': {'.': {},\n", + " 'f:activeModelState': {},\n", + " 'f:targetModelState': {}},\n", + " 'f:transitionStatus': {}},\n", + " 'f:url': {}}},\n", + " 'manager': 'manager',\n", + " 'operation': 'Update',\n", + " 'subresource': 'status',\n", + " 'time': '2023-06-06T19:44:51Z'}],\n", + " 'name': 'msnist-sample',\n", + " 'namespace': 'modelmesh-serving',\n", + " 'resourceVersion': '3939642',\n", + " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'spec': {'predictor': {'sklearn': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", + " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", + " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", + " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", + " 'conditions': [{'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " 'status': 'True',\n", + " 'type': 'PredictorReady'},\n", + " {'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " 'status': 'True',\n", + " 'type': 'Ready'}],\n", + " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", + " 'states': {'activeModelState': 'Loaded', 'targetModelState': ''},\n", + " 'transitionStatus': 'UpToDate'},\n", + " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kserve.get(name, namespace=namespace)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Patch InferenceService and point it to a different model" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "updated_spec=V1beta1InferenceServiceSpec(\n", + " predictor=V1beta1PredictorSpec(\n", + " tensorflow=V1beta1TFServingSpec(\n", + " protocol_version=protocol_version,\n", + " storage=V1beta1StorageSpec(\n", + " key='localMinIO',\n", + " path='tensorflow/mnist.savedmodel'\n", + " )\n", + " )\n", + " )\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "updated_isvc = V1beta1InferenceService(api_version= constants.KSERVE_V1BETA1,\n", + " kind=constants.KSERVE_KIND,\n", + " metadata=client.V1ObjectMeta(name=name, namespace=namespace),\n", + " spec=updated_spec)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'kind': 'InferenceService',\n", + " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", + " 'creationTimestamp': '2023-06-05T17:48:48Z',\n", + " 'generation': 2,\n", + " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:status': {'.': {},\n", + " 'f:components': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:grpcUrl': {},\n", + " 'f:restUrl': {},\n", + " 'f:url': {}}},\n", + " 'f:conditions': {},\n", + " 'f:modelStatus': {'.': {},\n", + " 'f:copies': {'.': {}, 'f:failedCopies': {}, 'f:totalCopies': {}},\n", + " 'f:states': {'.': {},\n", + " 'f:activeModelState': {},\n", + " 'f:targetModelState': {}},\n", + " 'f:transitionStatus': {}},\n", + " 'f:url': {}}},\n", + " 'manager': 'manager',\n", + " 'operation': 'Update',\n", + " 'subresource': 'status',\n", + " 'time': '2023-06-05T17:49:03Z'},\n", + " {'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", + " 'f:serving.kserve.io/deploymentMode': {}}},\n", + " 'f:spec': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:sklearn': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}},\n", + " 'f:tensorflow': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", + " 'manager': 'OpenAPI-Generator',\n", + " 'operation': 'Update',\n", + " 'time': '2023-06-05T17:49:48Z'}],\n", + " 'name': 'msnist-sample',\n", + " 'namespace': 'modelmesh-serving',\n", + " 'resourceVersion': '3881193',\n", + " 'uid': '62b375b1-fd66-4783-b391-d4c3f8e8e6d4'},\n", + " 'spec': {'predictor': {'sklearn': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}},\n", + " 'tensorflow': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO',\n", + " 'path': 'gs://kfserving-examples/models/tensorflow/flowers-2'}}}},\n", + " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", + " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", + " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", + " 'conditions': [{'lastTransitionTime': '2023-06-05T17:49:03Z',\n", + " 'status': 'True',\n", + " 'type': 'PredictorReady'},\n", + " {'lastTransitionTime': '2023-06-05T17:49:03Z',\n", + " 'status': 'True',\n", + " 'type': 'Ready'}],\n", + " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", + " 'states': {'activeModelState': 'Loaded', 'targetModelState': ''},\n", + " 'transitionStatus': 'UpToDate'},\n", + " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kserve.patch(name, updated_isvc, namespace=namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'kind': 'InferenceService',\n", + " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", + " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'generation': 1,\n", + " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", + " 'f:serving.kserve.io/deploymentMode': {}}},\n", + " 'f:spec': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:sklearn': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", + " 'manager': 'OpenAPI-Generator',\n", + " 'operation': 'Update',\n", + " 'time': '2023-06-06T19:44:36Z'},\n", + " {'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:status': {'.': {},\n", + " 'f:components': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:grpcUrl': {},\n", + " 'f:restUrl': {},\n", + " 'f:url': {}}},\n", + " 'f:conditions': {},\n", + " 'f:modelStatus': {'.': {},\n", + " 'f:copies': {'.': {}, 'f:failedCopies': {}, 'f:totalCopies': {}},\n", + " 'f:states': {'.': {},\n", + " 'f:activeModelState': {},\n", + " 'f:targetModelState': {}},\n", + " 'f:transitionStatus': {}},\n", + " 'f:url': {}}},\n", + " 'manager': 'manager',\n", + " 'operation': 'Update',\n", + " 'subresource': 'status',\n", + " 'time': '2023-06-06T19:44:51Z'}],\n", + " 'name': 'msnist-sample',\n", + " 'namespace': 'modelmesh-serving',\n", + " 'resourceVersion': '3939642',\n", + " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'spec': {'predictor': {'sklearn': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", + " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", + " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", + " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", + " 'conditions': [{'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " 'status': 'True',\n", + " 'type': 'PredictorReady'},\n", + " {'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " 'status': 'True',\n", + " 'type': 'Ready'}],\n", + " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", + " 'states': {'activeModelState': 'Loaded', 'targetModelState': ''},\n", + " 'transitionStatus': 'UpToDate'},\n", + " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kserve.wait_isvc_ready(name, namespace=namespace)\n", + "\n", + "kserve.get(name, namespace=namespace)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Delete InferenceService" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'Status',\n", + " 'apiVersion': 'v1',\n", + " 'metadata': {},\n", + " 'status': 'Success',\n", + " 'details': {'name': 'msnist-sample',\n", + " 'group': 'serving.kserve.io',\n", + " 'kind': 'inferenceservices',\n", + " 'uid': '62b375b1-fd66-4783-b391-d4c3f8e8e6d4'}}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kserve.delete(name, namespace=namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From ec6cff7fb922f39f2702b477163eef8700dfa8db Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 9 Jun 2023 16:28:01 -0400 Subject: [PATCH 02/16] changes to notebook Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb index 9f46eb5c..f0e221a1 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -34,7 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### The variables being set are `namespace`, `name`, `protocol_version` and `api_version`\n", + "### The variables being set are `namespace`, `name`, `protocol_version`\n", "- The `namespace` definition is where the InferenceService will be deployed to\n", "- `name` will be the name of the InferenceService\n", "- For ModelMesh, the `v2` protocol must be used since it doesn't support the default `v1` protocol" @@ -66,7 +66,6 @@ "outputs": [], "source": [ "isvc = V1beta1InferenceService(\n", - " api_version=constants.KSERVE_V1BETA1,\n", " kind=constants.KSERVE_KIND,\n", " metadata=client.V1ObjectMeta(\n", " name=name, \n", @@ -147,7 +146,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### InterenceService is not ready" + "### Check InferenceService status after deploying\n", + "- notice how it is in a `Pending` state" ] }, { @@ -246,7 +246,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### InferenceService is now ready" + "### Check InferenceService status once its ready\n", + "- State should now be `Loaded`" ] }, { From edd3b40556229b04d0d75ec4216ac5c4d0dbc8f2 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 9 Jun 2023 16:42:32 -0400 Subject: [PATCH 03/16] changes to notebook after run Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 87 ++++++++++--------------- 1 file changed, 36 insertions(+), 51 deletions(-) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb index f0e221a1..05ae367d 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -9,7 +9,7 @@ "\n", "## This notebook shows how to use the KServe SDK to create, update, and delete an InferenceService\n", "\n", - "- This sample assumes ModelMesh Serving was deployed using the [https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md](quickstart guide)." + "- This sample assumes ModelMesh Serving was deployed using the [quickstart guide](https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md)." ] }, { @@ -61,11 +61,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "isvc = V1beta1InferenceService(\n", + " api_version=constants.KSERVE_V1BETA1,\n", " kind=constants.KSERVE_KIND,\n", " metadata=client.V1ObjectMeta(\n", " name=name, \n", @@ -98,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -107,7 +108,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -121,17 +122,17 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-06T19:44:36Z'}],\n", + " 'time': '2023-06-09T20:39:18Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '3939550',\n", - " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'resourceVersion': '4012212',\n", + " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}}}" ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -152,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -161,7 +162,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -175,7 +176,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-06T19:44:36Z'},\n", + " 'time': '2023-06-09T20:39:18Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -193,18 +194,18 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-06T19:44:36Z'}],\n", + " 'time': '2023-06-09T20:39:18Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '3939551',\n", - " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'resourceVersion': '4012213',\n", + " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", - " 'status': {'conditions': [{'lastTransitionTime': '2023-06-06T19:44:36Z',\n", + " 'status': {'conditions': [{'lastTransitionTime': '2023-06-09T20:39:18Z',\n", " 'status': 'False',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-06T19:44:36Z',\n", + " {'lastTransitionTime': '2023-06-09T20:39:18Z',\n", " 'status': 'False',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0},\n", @@ -215,7 +216,7 @@ " 'transitionStatus': ''}}}" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -224,23 +225,6 @@ "kserve.get(name, namespace=namespace)" ] }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Check to see status of InferenceService" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "kserve.wait_isvc_ready(name, namespace=namespace)" - ] - }, { "attachments": {}, "cell_type": "markdown", @@ -261,7 +245,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -275,7 +259,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-06T19:44:36Z'},\n", + " 'time': '2023-06-09T20:39:18Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -295,21 +279,21 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-06T19:44:51Z'}],\n", + " 'time': '2023-06-09T20:39:34Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '3939642',\n", - " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'resourceVersion': '4012308',\n", + " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-06-09T20:39:34Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " {'lastTransitionTime': '2023-06-09T20:39:34Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -324,6 +308,7 @@ } ], "source": [ + "kserve.wait_isvc_ready(name, namespace=namespace)\n", "kserve.get(name, namespace=namespace)" ] }, @@ -453,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -462,7 +447,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-06T19:44:36Z',\n", + " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -476,7 +461,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-06T19:44:36Z'},\n", + " 'time': '2023-06-09T20:39:18Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -496,21 +481,21 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-06T19:44:51Z'}],\n", + " 'time': '2023-06-09T20:39:34Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '3939642',\n", - " 'uid': '64c4c371-7bc8-4929-afc3-9f4506d66a0b'},\n", + " 'resourceVersion': '4012308',\n", + " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-06-09T20:39:34Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-06T19:44:51Z',\n", + " {'lastTransitionTime': '2023-06-09T20:39:34Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -519,7 +504,7 @@ " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -553,7 +538,7 @@ " 'details': {'name': 'msnist-sample',\n", " 'group': 'serving.kserve.io',\n", " 'kind': 'inferenceservices',\n", - " 'uid': '62b375b1-fd66-4783-b391-d4c3f8e8e6d4'}}" + " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'}}" ] }, "execution_count": 12, From 9709abbb20c24440ace2fb3b2749b6ac3c565d50 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 9 Jun 2023 17:45:51 -0400 Subject: [PATCH 04/16] changes to notebook after run again Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 126 +++++++++++++----------- 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb index 05ae367d..71952d7c 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -108,7 +108,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", + " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -122,17 +122,17 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T20:39:18Z'}],\n", + " 'time': '2023-06-09T21:41:14Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4012212',\n", - " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", + " 'resourceVersion': '4014047',\n", + " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}}}" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -153,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -162,7 +162,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", + " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -176,7 +176,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T20:39:18Z'},\n", + " 'time': '2023-06-09T21:41:14Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -194,18 +194,18 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T20:39:18Z'}],\n", + " 'time': '2023-06-09T21:41:14Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4012213',\n", - " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", + " 'resourceVersion': '4014048',\n", + " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", - " 'status': {'conditions': [{'lastTransitionTime': '2023-06-09T20:39:18Z',\n", + " 'status': {'conditions': [{'lastTransitionTime': '2023-06-09T21:41:14Z',\n", " 'status': 'False',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T20:39:18Z',\n", + " {'lastTransitionTime': '2023-06-09T21:41:14Z',\n", " 'status': 'False',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0},\n", @@ -216,7 +216,7 @@ " 'transitionStatus': ''}}}" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -236,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -245,7 +245,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", + " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -259,7 +259,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T20:39:18Z'},\n", + " 'time': '2023-06-09T21:41:14Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -279,21 +279,21 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T20:39:34Z'}],\n", + " 'time': '2023-06-09T21:41:29Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4012308',\n", - " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", + " 'resourceVersion': '4014144',\n", + " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-09T20:39:34Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-06-09T21:41:29Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T20:39:34Z',\n", + " {'lastTransitionTime': '2023-06-09T21:41:29Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -302,7 +302,7 @@ " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -322,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -341,7 +341,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -362,7 +362,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-05T17:48:48Z',\n", + " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", " 'generation': 2,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -383,7 +383,7 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-05T17:49:03Z'},\n", + " 'time': '2023-06-09T21:41:29Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", @@ -400,25 +400,24 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-05T17:49:48Z'}],\n", + " 'time': '2023-06-09T21:41:54Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '3881193',\n", - " 'uid': '62b375b1-fd66-4783-b391-d4c3f8e8e6d4'},\n", + " 'resourceVersion': '4014187',\n", + " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}},\n", " 'tensorflow': {'name': '',\n", " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO',\n", - " 'path': 'gs://kfserving-examples/models/tensorflow/flowers-2'}}}},\n", + " 'storage': {'key': 'localMinIO', 'path': 'tensorflow/mnist.savedmodel'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-05T17:49:03Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-06-09T21:41:29Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-05T17:49:03Z',\n", + " {'lastTransitionTime': '2023-06-09T21:41:29Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -447,23 +446,10 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T20:39:18Z',\n", - " 'generation': 1,\n", + " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", + " 'generation': 2,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", - " 'f:serving.kserve.io/deploymentMode': {}}},\n", - " 'f:spec': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:sklearn': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", - " 'manager': 'OpenAPI-Generator',\n", - " 'operation': 'Update',\n", - " 'time': '2023-06-09T20:39:18Z'},\n", - " {'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", " 'f:components': {'.': {},\n", " 'f:predictor': {'.': {},\n", @@ -481,21 +467,41 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T20:39:34Z'}],\n", + " 'time': '2023-06-09T21:41:29Z'},\n", + " {'apiVersion': 'serving.kserve.io/v1beta1',\n", + " 'fieldsType': 'FieldsV1',\n", + " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", + " 'f:serving.kserve.io/deploymentMode': {}}},\n", + " 'f:spec': {'.': {},\n", + " 'f:predictor': {'.': {},\n", + " 'f:sklearn': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}},\n", + " 'f:tensorflow': {'.': {},\n", + " 'f:name': {},\n", + " 'f:protocolVersion': {},\n", + " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", + " 'manager': 'OpenAPI-Generator',\n", + " 'operation': 'Update',\n", + " 'time': '2023-06-09T21:41:54Z'}],\n", " 'name': 'msnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4012308',\n", - " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'},\n", + " 'resourceVersion': '4014187',\n", + " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", + " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}},\n", + " 'tensorflow': {'name': '',\n", + " 'protocolVersion': 'v2',\n", + " 'storage': {'key': 'localMinIO', 'path': 'tensorflow/mnist.savedmodel'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-09T20:39:34Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-06-09T21:41:29Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T20:39:34Z',\n", + " {'lastTransitionTime': '2023-06-09T21:41:29Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -538,7 +544,7 @@ " 'details': {'name': 'msnist-sample',\n", " 'group': 'serving.kserve.io',\n", " 'kind': 'inferenceservices',\n", - " 'uid': 'ece83f68-b24f-4c9e-9e6c-462f8984bdff'}}" + " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'}}" ] }, "execution_count": 12, From 7ce119b5b4b6aa4c61d7f49cdf552e01ac5f9e9d Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 7 Jul 2023 16:27:05 -0400 Subject: [PATCH 05/16] made changes to notebook Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 146 ++++++++++-------------- 1 file changed, 63 insertions(+), 83 deletions(-) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb index 71952d7c..465948e9 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -42,12 +42,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "namespace = 'modelmesh-serving'\n", - "name='msnist-sample'\n", + "name='mnist-sample'\n", "protocol_version='v2'" ] }, @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -108,7 +108,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", + " 'creationTimestamp': '2023-07-07T20:24:07Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -122,17 +122,17 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T21:41:14Z'}],\n", - " 'name': 'msnist-sample',\n", + " 'time': '2023-07-07T20:24:07Z'}],\n", + " 'name': 'mnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4014047',\n", - " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", + " 'resourceVersion': '4508433',\n", + " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}}}" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -153,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -162,7 +162,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", + " 'creationTimestamp': '2023-07-07T20:24:07Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -176,7 +176,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T21:41:14Z'},\n", + " 'time': '2023-07-07T20:24:07Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -194,29 +194,29 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T21:41:14Z'}],\n", - " 'name': 'msnist-sample',\n", + " 'time': '2023-07-07T20:24:07Z'}],\n", + " 'name': 'mnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4014048',\n", - " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", + " 'resourceVersion': '4508434',\n", + " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", - " 'status': {'conditions': [{'lastTransitionTime': '2023-06-09T21:41:14Z',\n", + " 'status': {'conditions': [{'lastTransitionTime': '2023-07-07T20:24:07Z',\n", " 'status': 'False',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T21:41:14Z',\n", + " {'lastTransitionTime': '2023-07-07T20:24:07Z',\n", " 'status': 'False',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0},\n", " 'lastFailureInfo': {'message': 'Waiting for runtime Pod to become available',\n", - " 'modelRevisionName': 'msnist-sample__isvc-6388459bfd',\n", + " 'modelRevisionName': 'mnist-sample__isvc-6388459bfd',\n", " 'reason': 'RuntimeUnhealthy'},\n", " 'states': {'activeModelState': 'Pending', 'targetModelState': ''},\n", " 'transitionStatus': ''}}}" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -236,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -245,7 +245,7 @@ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", + " 'creationTimestamp': '2023-07-07T20:24:07Z',\n", " 'generation': 1,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -259,7 +259,7 @@ " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T21:41:14Z'},\n", + " 'time': '2023-07-07T20:24:07Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", " 'fieldsV1': {'f:status': {'.': {},\n", @@ -279,21 +279,21 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T21:41:29Z'}],\n", - " 'name': 'msnist-sample',\n", + " 'time': '2023-07-07T20:24:47Z'}],\n", + " 'name': 'mnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4014144',\n", - " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", + " 'resourceVersion': '4508567',\n", + " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", " 'spec': {'predictor': {'sklearn': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-09T21:41:29Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-07-07T20:24:47Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T21:41:29Z',\n", + " {'lastTransitionTime': '2023-07-07T20:24:47Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -302,7 +302,7 @@ " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -322,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -341,7 +341,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -353,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -361,8 +361,7 @@ "text/plain": [ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", - " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", + " 'metadata': {'creationTimestamp': '2023-07-07T20:24:07Z',\n", " 'generation': 2,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -383,41 +382,32 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T21:41:29Z'},\n", + " 'time': '2023-07-07T20:24:47Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", - " 'f:serving.kserve.io/deploymentMode': {}}},\n", - " 'f:spec': {'.': {},\n", + " 'fieldsV1': {'f:spec': {'.': {},\n", " 'f:predictor': {'.': {},\n", - " 'f:sklearn': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}},\n", " 'f:tensorflow': {'.': {},\n", " 'f:name': {},\n", " 'f:protocolVersion': {},\n", " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T21:41:54Z'}],\n", - " 'name': 'msnist-sample',\n", + " 'time': '2023-07-07T20:26:00Z'}],\n", + " 'name': 'mnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4014187',\n", - " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", - " 'spec': {'predictor': {'sklearn': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}},\n", - " 'tensorflow': {'name': '',\n", + " 'resourceVersion': '4508693',\n", + " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", + " 'spec': {'predictor': {'tensorflow': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'tensorflow/mnist.savedmodel'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-09T21:41:29Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-07-07T20:24:47Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T21:41:29Z',\n", + " {'lastTransitionTime': '2023-07-07T20:24:47Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -426,18 +416,18 @@ " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "kserve.patch(name, updated_isvc, namespace=namespace)" + "kserve.replace(name, updated_isvc, namespace=namespace)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -445,8 +435,7 @@ "text/plain": [ "{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'kind': 'InferenceService',\n", - " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-06-09T21:41:14Z',\n", + " 'metadata': {'creationTimestamp': '2023-07-07T20:24:07Z',\n", " 'generation': 2,\n", " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", @@ -467,41 +456,32 @@ " 'manager': 'manager',\n", " 'operation': 'Update',\n", " 'subresource': 'status',\n", - " 'time': '2023-06-09T21:41:29Z'},\n", + " 'time': '2023-07-07T20:24:47Z'},\n", " {'apiVersion': 'serving.kserve.io/v1beta1',\n", " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", - " 'f:serving.kserve.io/deploymentMode': {}}},\n", - " 'f:spec': {'.': {},\n", + " 'fieldsV1': {'f:spec': {'.': {},\n", " 'f:predictor': {'.': {},\n", - " 'f:sklearn': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}},\n", " 'f:tensorflow': {'.': {},\n", " 'f:name': {},\n", " 'f:protocolVersion': {},\n", " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", " 'manager': 'OpenAPI-Generator',\n", " 'operation': 'Update',\n", - " 'time': '2023-06-09T21:41:54Z'}],\n", - " 'name': 'msnist-sample',\n", + " 'time': '2023-07-07T20:26:00Z'}],\n", + " 'name': 'mnist-sample',\n", " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4014187',\n", - " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'},\n", - " 'spec': {'predictor': {'sklearn': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}},\n", - " 'tensorflow': {'name': '',\n", + " 'resourceVersion': '4508693',\n", + " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", + " 'spec': {'predictor': {'tensorflow': {'name': '',\n", " 'protocolVersion': 'v2',\n", " 'storage': {'key': 'localMinIO', 'path': 'tensorflow/mnist.savedmodel'}}}},\n", " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-06-09T21:41:29Z',\n", + " 'conditions': [{'lastTransitionTime': '2023-07-07T20:24:47Z',\n", " 'status': 'True',\n", " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-06-09T21:41:29Z',\n", + " {'lastTransitionTime': '2023-07-07T20:24:47Z',\n", " 'status': 'True',\n", " 'type': 'Ready'}],\n", " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", @@ -510,7 +490,7 @@ " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" ] }, - "execution_count": 11, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -531,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -541,13 +521,13 @@ " 'apiVersion': 'v1',\n", " 'metadata': {},\n", " 'status': 'Success',\n", - " 'details': {'name': 'msnist-sample',\n", + " 'details': {'name': 'mnist-sample',\n", " 'group': 'serving.kserve.io',\n", " 'kind': 'inferenceservices',\n", - " 'uid': '4360f17b-3575-4b0d-a324-3ba536b55697'}}" + " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'}}" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } From da76bec2cb8e9c8fb08ac83311667bb8e06e66fe Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 7 Jul 2023 16:29:56 -0400 Subject: [PATCH 06/16] adding signoff Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb index 465948e9..d0bf6831 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -535,13 +535,6 @@ "source": [ "kserve.delete(name, namespace=namespace)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 91b267e681b210ab30bf24c97dee11a206bb571b Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Fri, 7 Jul 2023 17:00:49 -0400 Subject: [PATCH 07/16] changed from patch to replace Signed-off-by: Luis Delossantos --- docs/samples/modelmesh_sdk_sample.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/modelmesh_sdk_sample.ipynb index d0bf6831..de3c7352 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/modelmesh_sdk_sample.ipynb @@ -317,7 +317,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Patch InferenceService and point it to a different model" + "### Replace InferenceService and point it to a different model" ] }, { From a9d6116485babb967d6be4ce5540dd34944042f6 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Sat, 15 Jul 2023 14:52:03 -0400 Subject: [PATCH 08/16] changes to PR Signed-off-by: Luis Delossantos --- ..._sample.ipynb => python_sdk_examples.ipynb} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename docs/samples/{modelmesh_sdk_sample.ipynb => python_sdk_examples.ipynb} (94%) diff --git a/docs/samples/modelmesh_sdk_sample.ipynb b/docs/samples/python_sdk_examples.ipynb similarity index 94% rename from docs/samples/modelmesh_sdk_sample.ipynb rename to docs/samples/python_sdk_examples.ipynb index de3c7352..03d2f6d7 100644 --- a/docs/samples/modelmesh_sdk_sample.ipynb +++ b/docs/samples/python_sdk_examples.ipynb @@ -5,11 +5,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Sample for ModelMesh Serving using the KServe Python SDK\n", + "# How to use the KServe Python SDK with ModelMesh\n", "\n", - "## This notebook shows how to use the KServe SDK to create, update, and delete an InferenceService\n", - "\n", - "- This sample assumes ModelMesh Serving was deployed using the [quickstart guide](https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md)." + "### This sample assumes ModelMesh Serving was deployed using the [quickstart guide](https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md)." ] }, { @@ -36,8 +34,8 @@ "source": [ "### The variables being set are `namespace`, `name`, `protocol_version`\n", "- The `namespace` definition is where the InferenceService will be deployed to\n", - "- `name` will be the name of the InferenceService\n", - "- For ModelMesh, the `v2` protocol must be used since it doesn't support the default `v1` protocol" + "- `name` will be the name of the `InferenceService`\n", + "- For ModelMesh, the [`v2`](https://github.com/kserve/modelmesh-serving/blob/main/docs/inference/ks-v2-grpc.md) protocol must be used since it doesn't support the default `v1` protocol" ] }, { @@ -56,7 +54,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Define InferenceService specifying ModelMesh as the deploymentMode" + "### Define InferenceService specifying ModelMesh as the deploymentMode\n", + "\n", + "#### While both the KServe controller and ModelMesh controller will reconcile InferenceService resources, the ModelMesh controller will only handle those InferenceServices with the serving.kserve.io/deploymentMode: ModelMesh annotation. Otherwise, the KServe controller will handle reconciliation. The KServe controller will not reconcile an InferenceService with the serving.kserve.io/deploymentMode: ModelMesh annotation, and will defer under the assumption that the ModelMesh controller will handle it." ] }, { @@ -148,7 +148,7 @@ "metadata": {}, "source": [ "### Check InferenceService status after deploying\n", - "- notice how it is in a `Pending` state" + "#### notice how it is in a `Pending` state" ] }, { @@ -231,7 +231,7 @@ "metadata": {}, "source": [ "### Check InferenceService status once its ready\n", - "- State should now be `Loaded`" + "#### State should now be `Loaded`" ] }, { From 67ea1b2f75f57883991c416940efa4e459b2bfb2 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Sat, 15 Jul 2023 14:57:40 -0400 Subject: [PATCH 09/16] changes to folder name Signed-off-by: Luis Delossantos --- docs/{samples => examples}/python_sdk_examples.ipynb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{samples => examples}/python_sdk_examples.ipynb (100%) diff --git a/docs/samples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb similarity index 100% rename from docs/samples/python_sdk_examples.ipynb rename to docs/examples/python_sdk_examples.ipynb From 7fb2168872bafc1910464d9f9fa2137c724da028 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Sat, 15 Jul 2023 15:59:24 -0400 Subject: [PATCH 10/16] changes to output view Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 417 +++++++----------------- 1 file changed, 115 insertions(+), 302 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 03d2f6d7..77559d9b 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -56,7 +56,7 @@ "source": [ "### Define InferenceService specifying ModelMesh as the deploymentMode\n", "\n", - "#### While both the KServe controller and ModelMesh controller will reconcile InferenceService resources, the ModelMesh controller will only handle those InferenceServices with the serving.kserve.io/deploymentMode: ModelMesh annotation. Otherwise, the KServe controller will handle reconciliation. The KServe controller will not reconcile an InferenceService with the serving.kserve.io/deploymentMode: ModelMesh annotation, and will defer under the assumption that the ModelMesh controller will handle it." + "##### While both the KServe controller and ModelMesh controller will reconcile InferenceService resources, the ModelMesh controller will only handle those InferenceServices with the serving.kserve.io/deploymentMode: ModelMesh annotation. Otherwise, the KServe controller will handle reconciliation. The KServe controller will not reconcile an InferenceService with the serving.kserve.io/deploymentMode: ModelMesh annotation, and will defer under the assumption that the ModelMesh controller will handle it." ] }, { @@ -101,45 +101,29 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, + "outputs": [], + "source": [ + "kserve = KServeClient()\n", + "create = kserve.create(isvc)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'kind': 'InferenceService',\n", - " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-07-07T20:24:07Z',\n", - " 'generation': 1,\n", - " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", - " 'f:serving.kserve.io/deploymentMode': {}}},\n", - " 'f:spec': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:sklearn': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", - " 'manager': 'OpenAPI-Generator',\n", - " 'operation': 'Update',\n", - " 'time': '2023-07-07T20:24:07Z'}],\n", - " 'name': 'mnist-sample',\n", - " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4508433',\n", - " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", - " 'spec': {'predictor': {'sklearn': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}}}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "name: mnist-sample\n", + "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n" + ] } ], "source": [ - "kserve = KServeClient()\n", - "kserve.create(isvc)" + "print(\"name: \", create[\"metadata\"][\"name\"])\n", + "print(\"uid: \", create[\"metadata\"][\"uid\"])" ] }, { @@ -153,76 +137,32 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "pending_state = kserve.get(name, namespace=namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'kind': 'InferenceService',\n", - " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-07-07T20:24:07Z',\n", - " 'generation': 1,\n", - " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", - " 'f:serving.kserve.io/deploymentMode': {}}},\n", - " 'f:spec': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:sklearn': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", - " 'manager': 'OpenAPI-Generator',\n", - " 'operation': 'Update',\n", - " 'time': '2023-07-07T20:24:07Z'},\n", - " {'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:status': {'.': {},\n", - " 'f:conditions': {},\n", - " 'f:modelStatus': {'.': {},\n", - " 'f:copies': {'.': {}, 'f:failedCopies': {}},\n", - " 'f:lastFailureInfo': {'.': {},\n", - " 'f:message': {},\n", - " 'f:modelRevisionName': {},\n", - " 'f:reason': {}},\n", - " 'f:states': {'.': {},\n", - " 'f:activeModelState': {},\n", - " 'f:targetModelState': {}},\n", - " 'f:transitionStatus': {}}}},\n", - " 'manager': 'manager',\n", - " 'operation': 'Update',\n", - " 'subresource': 'status',\n", - " 'time': '2023-07-07T20:24:07Z'}],\n", - " 'name': 'mnist-sample',\n", - " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4508434',\n", - " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", - " 'spec': {'predictor': {'sklearn': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", - " 'status': {'conditions': [{'lastTransitionTime': '2023-07-07T20:24:07Z',\n", - " 'status': 'False',\n", - " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-07-07T20:24:07Z',\n", - " 'status': 'False',\n", - " 'type': 'Ready'}],\n", - " 'modelStatus': {'copies': {'failedCopies': 0},\n", - " 'lastFailureInfo': {'message': 'Waiting for runtime Pod to become available',\n", - " 'modelRevisionName': 'mnist-sample__isvc-6388459bfd',\n", - " 'reason': 'RuntimeUnhealthy'},\n", - " 'states': {'activeModelState': 'Pending', 'targetModelState': ''},\n", - " 'transitionStatus': ''}}}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "name: mnist-sample\n", + "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", + "status: Pending\n" + ] } ], "source": [ - "kserve.get(name, namespace=namespace)" + "print(\"name: \", pending_state[\"metadata\"][\"name\"])\n", + "print(\"uid: \", pending_state[\"metadata\"][\"uid\"])\n", + "print(\"status: \", pending_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -236,80 +176,33 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "kserve.wait_isvc_ready(name, namespace=namespace)\n", + "loaded_state = kserve.get(name, namespace=namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'kind': 'InferenceService',\n", - " 'metadata': {'annotations': {'serving.kserve.io/deploymentMode': 'ModelMesh'},\n", - " 'creationTimestamp': '2023-07-07T20:24:07Z',\n", - " 'generation': 1,\n", - " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},\n", - " 'f:serving.kserve.io/deploymentMode': {}}},\n", - " 'f:spec': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:sklearn': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", - " 'manager': 'OpenAPI-Generator',\n", - " 'operation': 'Update',\n", - " 'time': '2023-07-07T20:24:07Z'},\n", - " {'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:status': {'.': {},\n", - " 'f:components': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:grpcUrl': {},\n", - " 'f:restUrl': {},\n", - " 'f:url': {}}},\n", - " 'f:conditions': {},\n", - " 'f:modelStatus': {'.': {},\n", - " 'f:copies': {'.': {}, 'f:failedCopies': {}, 'f:totalCopies': {}},\n", - " 'f:states': {'.': {},\n", - " 'f:activeModelState': {},\n", - " 'f:targetModelState': {}},\n", - " 'f:transitionStatus': {}},\n", - " 'f:url': {}}},\n", - " 'manager': 'manager',\n", - " 'operation': 'Update',\n", - " 'subresource': 'status',\n", - " 'time': '2023-07-07T20:24:47Z'}],\n", - " 'name': 'mnist-sample',\n", - " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4508567',\n", - " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", - " 'spec': {'predictor': {'sklearn': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'sklearn/mnist-svm.joblib'}}}},\n", - " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", - " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", - " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-07-07T20:24:47Z',\n", - " 'status': 'True',\n", - " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-07-07T20:24:47Z',\n", - " 'status': 'True',\n", - " 'type': 'Ready'}],\n", - " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", - " 'states': {'activeModelState': 'Loaded', 'targetModelState': ''},\n", - " 'transitionStatus': 'UpToDate'},\n", - " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "name: mnist-sample\n", + "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", + "status: Loaded\n" + ] } ], "source": [ - "kserve.wait_isvc_ready(name, namespace=namespace)\n", - "kserve.get(name, namespace=namespace)" + "print(\"name: \", loaded_state[\"metadata\"][\"name\"])\n", + "print(\"uid: \", loaded_state[\"metadata\"][\"uid\"])\n", + "print(\"status: \", loaded_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -322,7 +215,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -341,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -353,152 +246,65 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "replace = kserve.replace(name, updated_isvc, namespace=namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'kind': 'InferenceService',\n", - " 'metadata': {'creationTimestamp': '2023-07-07T20:24:07Z',\n", - " 'generation': 2,\n", - " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:status': {'.': {},\n", - " 'f:components': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:grpcUrl': {},\n", - " 'f:restUrl': {},\n", - " 'f:url': {}}},\n", - " 'f:conditions': {},\n", - " 'f:modelStatus': {'.': {},\n", - " 'f:copies': {'.': {}, 'f:failedCopies': {}, 'f:totalCopies': {}},\n", - " 'f:states': {'.': {},\n", - " 'f:activeModelState': {},\n", - " 'f:targetModelState': {}},\n", - " 'f:transitionStatus': {}},\n", - " 'f:url': {}}},\n", - " 'manager': 'manager',\n", - " 'operation': 'Update',\n", - " 'subresource': 'status',\n", - " 'time': '2023-07-07T20:24:47Z'},\n", - " {'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:spec': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:tensorflow': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", - " 'manager': 'OpenAPI-Generator',\n", - " 'operation': 'Update',\n", - " 'time': '2023-07-07T20:26:00Z'}],\n", - " 'name': 'mnist-sample',\n", - " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4508693',\n", - " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", - " 'spec': {'predictor': {'tensorflow': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'tensorflow/mnist.savedmodel'}}}},\n", - " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", - " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", - " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-07-07T20:24:47Z',\n", - " 'status': 'True',\n", - " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-07-07T20:24:47Z',\n", - " 'status': 'True',\n", - " 'type': 'Ready'}],\n", - " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", - " 'states': {'activeModelState': 'Loaded', 'targetModelState': ''},\n", - " 'transitionStatus': 'UpToDate'},\n", - " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "name: mnist-sample\n", + "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", + "key: localMinIO\n", + "path: tensorflow/mnist.savedmodel\n" + ] } ], "source": [ - "kserve.replace(name, updated_isvc, namespace=namespace)" + "print(\"name: \", replace[\"metadata\"][\"name\"])\n", + "print(\"uid: \", replace[\"metadata\"][\"uid\"])\n", + "print(\"key: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"key\"])\n", + "print(\"path: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])\n" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "kserve.wait_isvc_ready(name, namespace=namespace)\n", + "updated = kserve.get(name, namespace=namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'kind': 'InferenceService',\n", - " 'metadata': {'creationTimestamp': '2023-07-07T20:24:07Z',\n", - " 'generation': 2,\n", - " 'managedFields': [{'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:status': {'.': {},\n", - " 'f:components': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:grpcUrl': {},\n", - " 'f:restUrl': {},\n", - " 'f:url': {}}},\n", - " 'f:conditions': {},\n", - " 'f:modelStatus': {'.': {},\n", - " 'f:copies': {'.': {}, 'f:failedCopies': {}, 'f:totalCopies': {}},\n", - " 'f:states': {'.': {},\n", - " 'f:activeModelState': {},\n", - " 'f:targetModelState': {}},\n", - " 'f:transitionStatus': {}},\n", - " 'f:url': {}}},\n", - " 'manager': 'manager',\n", - " 'operation': 'Update',\n", - " 'subresource': 'status',\n", - " 'time': '2023-07-07T20:24:47Z'},\n", - " {'apiVersion': 'serving.kserve.io/v1beta1',\n", - " 'fieldsType': 'FieldsV1',\n", - " 'fieldsV1': {'f:spec': {'.': {},\n", - " 'f:predictor': {'.': {},\n", - " 'f:tensorflow': {'.': {},\n", - " 'f:name': {},\n", - " 'f:protocolVersion': {},\n", - " 'f:storage': {'.': {}, 'f:key': {}, 'f:path': {}}}}}},\n", - " 'manager': 'OpenAPI-Generator',\n", - " 'operation': 'Update',\n", - " 'time': '2023-07-07T20:26:00Z'}],\n", - " 'name': 'mnist-sample',\n", - " 'namespace': 'modelmesh-serving',\n", - " 'resourceVersion': '4508693',\n", - " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'},\n", - " 'spec': {'predictor': {'tensorflow': {'name': '',\n", - " 'protocolVersion': 'v2',\n", - " 'storage': {'key': 'localMinIO', 'path': 'tensorflow/mnist.savedmodel'}}}},\n", - " 'status': {'components': {'predictor': {'grpcUrl': 'grpc://modelmesh-serving.modelmesh-serving:8033',\n", - " 'restUrl': 'http://modelmesh-serving.modelmesh-serving:8008',\n", - " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}},\n", - " 'conditions': [{'lastTransitionTime': '2023-07-07T20:24:47Z',\n", - " 'status': 'True',\n", - " 'type': 'PredictorReady'},\n", - " {'lastTransitionTime': '2023-07-07T20:24:47Z',\n", - " 'status': 'True',\n", - " 'type': 'Ready'}],\n", - " 'modelStatus': {'copies': {'failedCopies': 0, 'totalCopies': 1},\n", - " 'states': {'activeModelState': 'Loaded', 'targetModelState': ''},\n", - " 'transitionStatus': 'UpToDate'},\n", - " 'url': 'grpc://modelmesh-serving.modelmesh-serving:8033'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "name: mnist-sample\n", + "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", + "status: Loaded\n" + ] } ], "source": [ - "kserve.wait_isvc_ready(name, namespace=namespace)\n", - "\n", - "kserve.get(name, namespace=namespace)" + "print(\"name: \", updated[\"metadata\"][\"name\"])\n", + "print(\"uid: \", updated[\"metadata\"][\"uid\"])\n", + "print(\"status: \", updated[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -511,7 +317,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -524,10 +330,10 @@ " 'details': {'name': 'mnist-sample',\n", " 'group': 'serving.kserve.io',\n", " 'kind': 'inferenceservices',\n", - " 'uid': '1cc3241e-90d3-488e-9d64-c333dda5da44'}}" + " 'uid': '910f307f-bf14-4f0a-b1dd-fb8fa9a9096f'}}" ] }, - "execution_count": 11, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -535,6 +341,13 @@ "source": [ "kserve.delete(name, namespace=namespace)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From bd0134ed3c2309369e94ed725c7733f5ddbbd8fb Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Sat, 15 Jul 2023 16:01:53 -0400 Subject: [PATCH 11/16] added path to sklearn create Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 77559d9b..10a46fa1 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -117,13 +117,17 @@ "output_type": "stream", "text": [ "name: mnist-sample\n", - "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n" + "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", + "key: localMinIO\n", + "path: sklearn/mnist-svm.joblib\n" ] } ], "source": [ "print(\"name: \", create[\"metadata\"][\"name\"])\n", - "print(\"uid: \", create[\"metadata\"][\"uid\"])" + "print(\"uid: \", create[\"metadata\"][\"uid\"])\n", + "print(\"key: \", create[\"spec\"][\"predictor\"][\"sklearn\"][\"storage\"][\"key\"])\n", + "print(\"path: \", create[\"spec\"][\"predictor\"][\"sklearn\"][\"storage\"][\"path\"])" ] }, { From 600d3e30f5a20ba0e513582b9b820957bca40749 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Mon, 17 Jul 2023 14:42:19 -0400 Subject: [PATCH 12/16] changes to headers Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 10a46fa1..62072e82 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -54,9 +54,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Define InferenceService specifying ModelMesh as the deploymentMode\n", + "### Define `InferenceService` specifying ModelMesh as the deploymentMode\n", "\n", - "##### While both the KServe controller and ModelMesh controller will reconcile InferenceService resources, the ModelMesh controller will only handle those InferenceServices with the serving.kserve.io/deploymentMode: ModelMesh annotation. Otherwise, the KServe controller will handle reconciliation. The KServe controller will not reconcile an InferenceService with the serving.kserve.io/deploymentMode: ModelMesh annotation, and will defer under the assumption that the ModelMesh controller will handle it." + "While both the KServe controller and ModelMesh controller will reconcile InferenceService resources, the ModelMesh controller will only handle those InferenceServices with the serving.kserve.io/deploymentMode: ModelMesh annotation. Otherwise, the KServe controller will handle reconciliation. The KServe controller will not reconcile an InferenceService with the serving.kserve.io/deploymentMode: ModelMesh annotation, and will defer under the assumption that the ModelMesh controller will handle it." ] }, { @@ -94,7 +94,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Create InferenceService" + "### Create `InferenceService`" ] }, { @@ -135,7 +135,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Check InferenceService status after deploying\n", + "### Check `InferenceService` status after deploying\n", "#### notice how it is in a `Pending` state" ] }, @@ -174,7 +174,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Check InferenceService status once its ready\n", + "### Check `InferenceService` status once its ready\n", "#### State should now be `Loaded`" ] }, @@ -214,7 +214,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Replace InferenceService and point it to a different model" + "### Replace `InferenceService` and point it to a different model" ] }, { @@ -316,7 +316,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Delete InferenceService" + "### Delete `InferenceService`" ] }, { From 5b3b39b622257f4cd7fda03dd7692a6c743596d8 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Tue, 18 Jul 2023 16:18:00 -0400 Subject: [PATCH 13/16] changes to notebook Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 62 +++++++++---------------- 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 62072e82..79f5a8b8 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -117,7 +117,7 @@ "output_type": "stream", "text": [ "name: mnist-sample\n", - "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", + "uid: d86b9b8f-cd5f-412b-8546-5f984bb91ac5\n", "key: localMinIO\n", "path: sklearn/mnist-svm.joblib\n" ] @@ -141,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -150,23 +150,19 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "name: mnist-sample\n", - "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", - "status: Pending\n" + "Pending\n" ] } ], "source": [ - "print(\"name: \", pending_state[\"metadata\"][\"name\"])\n", - "print(\"uid: \", pending_state[\"metadata\"][\"uid\"])\n", - "print(\"status: \", pending_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" + "print(pending_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -180,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -190,23 +186,19 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "name: mnist-sample\n", - "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", - "status: Loaded\n" + "Loaded\n" ] } ], "source": [ - "print(\"name: \", loaded_state[\"metadata\"][\"name\"])\n", - "print(\"uid: \", loaded_state[\"metadata\"][\"uid\"])\n", - "print(\"status: \", loaded_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" + "print(loaded_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -219,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -238,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -250,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -259,30 +251,26 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "name: mnist-sample\n", - "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", "key: localMinIO\n", "path: tensorflow/mnist.savedmodel\n" ] } ], "source": [ - "print(\"name: \", replace[\"metadata\"][\"name\"])\n", - "print(\"uid: \", replace[\"metadata\"][\"uid\"])\n", "print(\"key: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"key\"])\n", - "print(\"path: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])\n" + "print(\"path: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -292,23 +280,19 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "name: mnist-sample\n", - "uid: 910f307f-bf14-4f0a-b1dd-fb8fa9a9096f\n", - "status: Loaded\n" + "Loaded\n" ] } ], "source": [ - "print(\"name: \", updated[\"metadata\"][\"name\"])\n", - "print(\"uid: \", updated[\"metadata\"][\"uid\"])\n", - "print(\"status: \", updated[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" + "print(updated[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -321,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -334,10 +318,10 @@ " 'details': {'name': 'mnist-sample',\n", " 'group': 'serving.kserve.io',\n", " 'kind': 'inferenceservices',\n", - " 'uid': '910f307f-bf14-4f0a-b1dd-fb8fa9a9096f'}}" + " 'uid': 'd86b9b8f-cd5f-412b-8546-5f984bb91ac5'}}" ] }, - "execution_count": 16, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } From d23e8fd9f7af3231b6ec334e4860affe28468328 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Wed, 19 Jul 2023 16:08:07 -0400 Subject: [PATCH 14/16] changes Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 50 ++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 79f5a8b8..6eb8a47e 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -7,7 +7,7 @@ "source": [ "# How to use the KServe Python SDK with ModelMesh\n", "\n", - "### This sample assumes ModelMesh Serving was deployed using the [quickstart guide](https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md)." + "This sample assumes ModelMesh Serving was deployed using the [quickstart guide](https://github.com/kserve/modelmesh-serving/blob/main/docs/quickstart.md)." ] }, { @@ -35,7 +35,7 @@ "### The variables being set are `namespace`, `name`, `protocol_version`\n", "- The `namespace` definition is where the InferenceService will be deployed to\n", "- `name` will be the name of the `InferenceService`\n", - "- For ModelMesh, the [`v2`](https://github.com/kserve/modelmesh-serving/blob/main/docs/inference/ks-v2-grpc.md) protocol must be used since it doesn't support the default `v1` protocol" + "- For ModelMesh, the [`v2`](https://kserve.github.io/website/master/modelserving/data_plane/v2_protocol/) protocol must be used since it doesn't support the default [`v1`](https://kserve.github.io/website/master/modelserving/data_plane/v1_protocol/) protocol" ] }, { @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -117,7 +117,7 @@ "output_type": "stream", "text": [ "name: mnist-sample\n", - "uid: d86b9b8f-cd5f-412b-8546-5f984bb91ac5\n", + "uid: e3d95d85-061b-488e-a876-b22f29ee1b00\n", "key: localMinIO\n", "path: sklearn/mnist-svm.joblib\n" ] @@ -136,21 +136,21 @@ "metadata": {}, "source": [ "### Check `InferenceService` status after deploying\n", - "#### notice how it is in a `Pending` state" + "It will be in a `Pending` state while the associated serving runtime pods start up." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ - "pending_state = kserve.get(name, namespace=namespace)" + "deployed_isvc = kserve.get(name, namespace=namespace)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -162,7 +162,7 @@ } ], "source": [ - "print(pending_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" + "print(deployed_isvc[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -171,22 +171,22 @@ "metadata": {}, "source": [ "### Check `InferenceService` status once its ready\n", - "#### State should now be `Loaded`" + "It should now be in a `Loaded` state." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "kserve.wait_isvc_ready(name, namespace=namespace)\n", - "loaded_state = kserve.get(name, namespace=namespace)" + "deployed_isvc = kserve.get(name, namespace=namespace)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -198,7 +198,7 @@ } ], "source": [ - "print(loaded_state[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" + "print(deployed_isvc[\"status\"][\"modelStatus\"][\"states\"][\"activeModelState\"])" ] }, { @@ -206,12 +206,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Replace `InferenceService` and point it to a different model" + "### Update `InferenceService` and point it to a different model" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -230,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -242,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -251,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -270,7 +270,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -280,7 +280,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -305,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -318,10 +318,10 @@ " 'details': {'name': 'mnist-sample',\n", " 'group': 'serving.kserve.io',\n", " 'kind': 'inferenceservices',\n", - " 'uid': 'd86b9b8f-cd5f-412b-8546-5f984bb91ac5'}}" + " 'uid': 'e3d95d85-061b-488e-a876-b22f29ee1b00'}}" ] }, - "execution_count": 18, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } From cec3fcaf4233cdcb60271ecdceb3906b309cffdf Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Thu, 20 Jul 2023 10:50:58 -0400 Subject: [PATCH 15/16] changes to notebook Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 56 +++++++++++-------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 6eb8a47e..23601a13 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -104,7 +104,7 @@ "outputs": [], "source": [ "kserve = KServeClient()\n", - "create = kserve.create(isvc)" + "isvc = kserve.create(isvc)" ] }, { @@ -117,17 +117,17 @@ "output_type": "stream", "text": [ "name: mnist-sample\n", - "uid: e3d95d85-061b-488e-a876-b22f29ee1b00\n", + "uid: 45aa2662-4507-401e-98fa-aa78e3cea14e\n", "key: localMinIO\n", "path: sklearn/mnist-svm.joblib\n" ] } ], "source": [ - "print(\"name: \", create[\"metadata\"][\"name\"])\n", - "print(\"uid: \", create[\"metadata\"][\"uid\"])\n", - "print(\"key: \", create[\"spec\"][\"predictor\"][\"sklearn\"][\"storage\"][\"key\"])\n", - "print(\"path: \", create[\"spec\"][\"predictor\"][\"sklearn\"][\"storage\"][\"path\"])" + "print(\"name: \", isvc[\"metadata\"][\"name\"])\n", + "print(\"uid: \", isvc[\"metadata\"][\"uid\"])\n", + "print(\"key: \", isvc[\"spec\"][\"predictor\"][\"sklearn\"][\"storage\"][\"key\"])\n", + "print(\"path: \", isvc[\"spec\"][\"predictor\"][\"sklearn\"][\"storage\"][\"path\"])" ] }, { @@ -246,7 +246,7 @@ "metadata": {}, "outputs": [], "source": [ - "replace = kserve.replace(name, updated_isvc, namespace=namespace)" + "replace_isvc = kserve.replace(name, updated_isvc, namespace=namespace)" ] }, { @@ -264,8 +264,8 @@ } ], "source": [ - "print(\"key: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"key\"])\n", - "print(\"path: \", replace[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])" + "print(\"key: \", replace_isvc[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"key\"])\n", + "print(\"path: \", replace_isvc[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])" ] }, { @@ -307,35 +307,27 @@ "cell_type": "code", "execution_count": 16, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'kind': 'Status',\n", - " 'apiVersion': 'v1',\n", - " 'metadata': {},\n", - " 'status': 'Success',\n", - " 'details': {'name': 'mnist-sample',\n", - " 'group': 'serving.kserve.io',\n", - " 'kind': 'inferenceservices',\n", - " 'uid': 'e3d95d85-061b-488e-a876-b22f29ee1b00'}}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "kserve.delete(name, namespace=namespace)" + "delete_isvc = kserve.delete(name, namespace=namespace)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Success\n" + ] + } + ], + "source": [ + "print(delete_isvc[\"status\"])" + ] } ], "metadata": { From 9da163df421cbaf649e6acb73602993969846701 Mon Sep 17 00:00:00 2001 From: Luis Delossantos Date: Thu, 20 Jul 2023 15:59:56 -0400 Subject: [PATCH 16/16] changes to notebook Signed-off-by: Luis Delossantos --- docs/examples/python_sdk_examples.ipynb | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/examples/python_sdk_examples.ipynb b/docs/examples/python_sdk_examples.ipynb index 23601a13..a3cf38d8 100644 --- a/docs/examples/python_sdk_examples.ipynb +++ b/docs/examples/python_sdk_examples.ipynb @@ -171,7 +171,7 @@ "metadata": {}, "source": [ "### Check `InferenceService` status once its ready\n", - "It should now be in a `Loaded` state." + "Once the serving runtime pods are started, the `InferenceService` should be in `Loaded` state." ] }, { @@ -246,7 +246,7 @@ "metadata": {}, "outputs": [], "source": [ - "replace_isvc = kserve.replace(name, updated_isvc, namespace=namespace)" + "replaced_isvc = kserve.replace(name, updated_isvc, namespace=namespace)" ] }, { @@ -264,8 +264,15 @@ } ], "source": [ - "print(\"key: \", replace_isvc[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"key\"])\n", - "print(\"path: \", replace_isvc[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])" + "print(\"key: \", replaced_isvc[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"key\"])\n", + "print(\"path: \", replaced_isvc[\"spec\"][\"predictor\"][\"tensorflow\"][\"storage\"][\"path\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wait for the InferenceService to be ready." ] }, {