diff --git a/.github/workflows/fvt.yml b/.github/workflows/fvt.yml index e10d48e8..1b4fd016 100644 --- a/.github/workflows/fvt.yml +++ b/.github/workflows/fvt.yml @@ -71,11 +71,11 @@ jobs: sed -i 's/newTag:.*$/newTag: '"${{ env.IMAGE_TAG }}"'/' config/manager/kustomization.yaml sed -i '0,/cpu:.*$/s/cpu:.*$/cpu: 100m/' \ config/default/config-defaults.yaml \ - config/runtimes/mlserver-0.x.yaml \ + config/runtimes/mlserver-1.x.yaml \ config/runtimes/triton-2.x.yaml \ config/runtimes/ovms-1.x.yaml sed -i 's/memory:.*$/memory: 512Mi/g' \ - config/runtimes/mlserver-0.x.yaml \ + config/runtimes/mlserver-1.x.yaml \ config/runtimes/triton-2.x.yaml \ config/runtimes/ovms-1.x.yaml sed -i 's/maxSurge:.*$/maxSurge: 0/' config/internal/base/deployment.yaml.tmpl @@ -109,7 +109,7 @@ jobs: run: | eval $(minikube -p minikube docker-env) docker pull nvcr.io/nvidia/tritonserver:21.06.1-py3 - docker pull seldonio/mlserver:0.5.2 + docker pull seldonio/mlserver:1.3.2 docker pull openvino/model_server:2022.2 # docker pull pytorch/torchserve:0.7.1-cpu docker pull kserve/modelmesh-runtime-adapter diff --git a/config/runtimes/kustomization.yaml b/config/runtimes/kustomization.yaml index 53660ea0..05175d50 100644 --- a/config/runtimes/kustomization.yaml +++ b/config/runtimes/kustomization.yaml @@ -13,7 +13,7 @@ # limitations under the License. resources: - triton-2.x.yaml - - mlserver-0.x.yaml + - mlserver-1.x.yaml - ovms-1.x.yaml - torchserve-0.x.yaml @@ -22,9 +22,9 @@ images: newName: nvcr.io/nvidia/tritonserver newTag: "21.06.1-py3" - - name: mlserver-0 + - name: mlserver-1 newName: seldonio/mlserver - newTag: "0.5.2" + newTag: "1.3.2" - name: ovms-1 newName: openvino/model_server diff --git a/config/runtimes/mlserver-0.x.yaml b/config/runtimes/mlserver-1.x.yaml similarity index 95% rename from config/runtimes/mlserver-0.x.yaml rename to config/runtimes/mlserver-1.x.yaml index 09ac918d..5acf187a 100644 --- a/config/runtimes/mlserver-0.x.yaml +++ b/config/runtimes/mlserver-1.x.yaml @@ -14,9 +14,9 @@ apiVersion: serving.kserve.io/v1alpha1 kind: ClusterServingRuntime metadata: - name: mlserver-0.x + name: mlserver-1.x labels: - name: modelmesh-serving-mlserver-0.x-SR + name: modelmesh-serving-mlserver-1.x-SR spec: supportedModelFormats: - name: sklearn @@ -38,7 +38,7 @@ spec: containers: - name: mlserver - image: mlserver-0:replace + image: mlserver-1:replace env: - name: MLSERVER_MODELS_DIR value: "/models/_mlserver_models/" diff --git a/config/samples/servingruntime_pullerless.yaml b/config/samples/servingruntime_pullerless.yaml index b3faf6ef..12cab0c3 100644 --- a/config/samples/servingruntime_pullerless.yaml +++ b/config/samples/servingruntime_pullerless.yaml @@ -12,7 +12,7 @@ spec: resourceFieldRef: containerName: modelserver resource: requests.memory - image: seldonio/mlserver:0.3.2 + image: seldonio/mlserver:1.3.2 name: modelserver resources: requests: diff --git a/controllers/servingruntime_controller_test.go b/controllers/servingruntime_controller_test.go index 1cc09841..599bfff7 100644 --- a/controllers/servingruntime_controller_test.go +++ b/controllers/servingruntime_controller_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -53,7 +53,7 @@ func waitForAndGetRuntimeDeployment(runtimeName string) *appsv1.Deployment { var _ = Describe("Sample Runtime", func() { samplesToTest := []string{ - "config/runtimes/mlserver-0.x.yaml", + "config/runtimes/mlserver-1.x.yaml", "config/runtimes/triton-2.x.yaml", "config/runtimes/ovms-1.x.yaml", "config/runtimes/torchserve-0.x.yaml", @@ -98,7 +98,7 @@ var _ = Describe("Prometheus metrics configuration", func() { reconcilerConfig.Metrics.Enabled = true By("create a sample runtime") - m, err = mf.ManifestFrom(mf.Path("../config/runtimes/mlserver-0.x.yaml")) + m, err = mf.ManifestFrom(mf.Path("../config/runtimes/mlserver-1.x.yaml")) m.Client = mfc.NewClient(k8sClient) Expect(err).ToNot(HaveOccurred()) m, err = m.Transform(convertToServingRuntime, mf.InjectNamespace(namespace)) @@ -177,7 +177,7 @@ var _ = Describe("REST Proxy configuration", func() { reconcilerConfig.RESTProxy.Enabled = true By("create a sample runtime") - m, err = mf.ManifestFrom(mf.Path("../config/runtimes/mlserver-0.x.yaml")) + m, err = mf.ManifestFrom(mf.Path("../config/runtimes/mlserver-1.x.yaml")) m.Client = mfc.NewClient(k8sClient) Expect(err).ToNot(HaveOccurred()) m, err = m.Transform(convertToServingRuntime, mf.InjectNamespace(namespace)) @@ -204,7 +204,7 @@ var _ = Describe("Add Payload Processor", func() { resetToPayloadConfig(false) By("create a sample runtime") - m, err = mf.ManifestFrom(mf.Path("../config/runtimes/mlserver-0.x.yaml")) + m, err = mf.ManifestFrom(mf.Path("../config/runtimes/mlserver-1.x.yaml")) m.Client = mfc.NewClient(k8sClient) Expect(err).ToNot(HaveOccurred()) m, err = m.Transform(convertToServingRuntime, mf.InjectNamespace(namespace)) diff --git a/controllers/testdata/servingruntime_controller.golden b/controllers/testdata/servingruntime_controller.golden index 1e2a5c39..d2e1e2e1 100644 --- a/controllers/testdata/servingruntime_controller.golden +++ b/controllers/testdata/servingruntime_controller.golden @@ -12,7 +12,7 @@ spec: selector: matchLabels: modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x strategy: rollingUpdate: maxSurge: 75% @@ -26,7 +26,7 @@ spec: app.kubernetes.io/managed-by: modelmesh-controller app.kubernetes.io/name: modelmesh-controller modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x spec: affinity: nodeAffinity: @@ -105,7 +105,7 @@ spec: value: 127.0.0.1 - name: MLSERVER_GRPC_MAX_MESSAGE_LENGTH value: "-1" - image: mlserver-0:replace + image: mlserver-1:replace imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -169,7 +169,7 @@ spec: - name: MM_PAYLOAD_PROCESSORS value: example:8080/consumer/kserve/v2 example2:8080/consumer/kserve/v2 - name: MM_LABELS - value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,rt:mlserver-0.x + value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,rt:mlserver-1.x - name: MM_TYPE_CONSTRAINTS_PATH value: /etc/watson/mmesh/config/type_constraints - name: MM_DATAPLANE_CONFIG_PATH @@ -261,7 +261,7 @@ spec: selector: matchLabels: modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x strategy: rollingUpdate: maxSurge: 75% @@ -280,7 +280,7 @@ spec: app.kubernetes.io/managed-by: modelmesh-controller app.kubernetes.io/name: modelmesh-controller modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x spec: affinity: nodeAffinity: @@ -359,7 +359,7 @@ spec: value: 127.0.0.1 - name: MLSERVER_GRPC_MAX_MESSAGE_LENGTH value: "-1" - image: mlserver-0:replace + image: mlserver-1:replace imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -421,7 +421,7 @@ spec: - name: MM_DEFAULT_VMODEL_OWNER value: ksp - name: MM_LABELS - value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,rt:mlserver-0.x + value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,rt:mlserver-1.x - name: MM_TYPE_CONSTRAINTS_PATH value: /etc/watson/mmesh/config/type_constraints - name: MM_DATAPLANE_CONFIG_PATH @@ -516,7 +516,7 @@ spec: selector: matchLabels: modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x strategy: rollingUpdate: maxSurge: 75% @@ -530,7 +530,7 @@ spec: app.kubernetes.io/managed-by: modelmesh-controller app.kubernetes.io/name: modelmesh-controller modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x spec: affinity: nodeAffinity: @@ -583,7 +583,7 @@ spec: value: 127.0.0.1 - name: MLSERVER_GRPC_MAX_MESSAGE_LENGTH value: "-1" - image: mlserver-0:replace + image: mlserver-1:replace imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -696,7 +696,7 @@ spec: - name: MM_DEFAULT_VMODEL_OWNER value: ksp - name: MM_LABELS - value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,pv:v2,rt:mlserver-0.x + value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,pv:v2,rt:mlserver-1.x - name: MM_TYPE_CONSTRAINTS_PATH value: /etc/watson/mmesh/config/type_constraints - name: MM_DATAPLANE_CONFIG_PATH @@ -776,7 +776,7 @@ spec: secretName: secret status: {} ''' -"Sample Runtime config/runtimes/mlserver-0.x.yaml should be a valid runtime specification" = ''' +"Sample Runtime config/runtimes/mlserver-1.x.yaml should be a valid runtime specification" = ''' apiVersion: apps/v1 kind: Deployment metadata: @@ -788,7 +788,7 @@ spec: selector: matchLabels: modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x strategy: rollingUpdate: maxSurge: 75% @@ -802,7 +802,7 @@ spec: app.kubernetes.io/managed-by: modelmesh-controller app.kubernetes.io/name: modelmesh-controller modelmesh-service: modelmesh-serving - name: modelmesh-serving-mlserver-0.x + name: modelmesh-serving-mlserver-1.x spec: affinity: nodeAffinity: @@ -881,7 +881,7 @@ spec: value: 127.0.0.1 - name: MLSERVER_GRPC_MAX_MESSAGE_LENGTH value: "-1" - image: mlserver-0:replace + image: mlserver-1:replace imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -943,7 +943,7 @@ spec: - name: MM_DEFAULT_VMODEL_OWNER value: ksp - name: MM_LABELS - value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,rt:mlserver-0.x + value: mt:lightgbm,mt:lightgbm:3,mt:sklearn,mt:sklearn:0,mt:xgboost,mt:xgboost:1,pv:grpc-v2,rt:mlserver-1.x - name: MM_TYPE_CONSTRAINTS_PATH value: /etc/watson/mmesh/config/type_constraints - name: MM_DATAPLANE_CONFIG_PATH @@ -1809,7 +1809,7 @@ spec: containerName: modelserver divisor: "0" resource: requests.memory - image: seldonio/mlserver:0.3.2 + image: seldonio/mlserver:1.3.2 imagePullPolicy: IfNotPresent lifecycle: preStop: diff --git a/docs/install/README.md b/docs/install/README.md index 88c486e1..cf3b007c 100644 --- a/docs/install/README.md +++ b/docs/install/README.md @@ -64,7 +64,7 @@ The deployed footprint can be significantly reduced in the following ways: ```shell > kubectl edit servingruntime triton-2.x -> kubectl edit servingruntime mlserver-0.x +> kubectl edit servingruntime mlserver-1.x > kubectl edit servingruntime ovms-1.x ``` diff --git a/docs/model-formats/advanced-configuration.md b/docs/model-formats/advanced-configuration.md index 462212b7..c788eab8 100644 --- a/docs/model-formats/advanced-configuration.md +++ b/docs/model-formats/advanced-configuration.md @@ -78,8 +78,8 @@ To pass runtime specific configuration through to MLServer, include a non-empty └── ``` -For details on the specification of this configuration, refer to the definition of -[MLServer's ModelSettings class](https://github.com/SeldonIO/MLServer/blob/0.3.2/mlserver/settings.py#L49). +For details on the specification of this configuration, refer to +[MLServer's Model Settings documentation](https://github.com/SeldonIO/MLServer/blob/1.3.2/docs/reference/model-settings.md). --- diff --git a/docs/monitoring.md b/docs/monitoring.md index c8c1518a..d08d9e0b 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -73,7 +73,7 @@ If the ModelMesh Serving metric(s) are missing in the monitoring UIs: - Check if the following annotations are configured in the Serving Runtime deployment: - kubectl describe deployment modelmesh-serving-mlserver-0.x -n $NAMESPACE | grep "prometheus.io" + kubectl describe deployment modelmesh-serving-mlserver-1.x -n $NAMESPACE | grep "prometheus.io" Expected output: diff --git a/docs/predictors/README.md b/docs/predictors/README.md index cdb4b7aa..d18b0b64 100644 --- a/docs/predictors/README.md +++ b/docs/predictors/README.md @@ -69,8 +69,8 @@ Once the `InferenceService` is created, mlserver runtime pods are automatically $ kubectl get pods NAME READY STATUS RESTARTS AGE -modelmesh-serving-mlserver-0.x-658b7dd689-46nwm 0/3 ContainerCreating 0 2s -modelmesh-serving-mlserver-0.x-658b7dd689-46nwm 0/3 ContainerCreating 0 2s +modelmesh-serving-mlserver-1.x-658b7dd689-46nwm 0/3 ContainerCreating 0 2s +modelmesh-serving-mlserver-1.x-658b7dd689-46nwm 0/3 ContainerCreating 0 2s modelmesh-controller-568c45b959-nl88c 1/1 Running 0 11m ``` diff --git a/docs/quickstart.md b/docs/quickstart.md index 7eb52436..4dc549a9 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -51,7 +51,7 @@ Check that the `ServingRuntime`s are available: kubectl get servingruntimes NAME DISABLED MODELTYPE CONTAINERS AGE -mlserver-0.x sklearn mlserver 5m +mlserver-1.x sklearn mlserver 5m ovms-1.x openvino_ir ovms 5m torchserve-0.x pytorch-mar torchserve 5m triton-2.x tensorflow triton 5m @@ -63,7 +63,7 @@ are: | ServingRuntime | Supported Frameworks | | -------------- | ----------------------------------- | -| mlserver-0.x | sklearn, xgboost, lightgbm | +| mlserver-1.x | sklearn, xgboost, lightgbm | | ovms-1.x | openvino_ir, onnx | | torchserve-0.x | pytorch-mar | | triton-2.x | tensorflow, pytorch, onnx, tensorrt | @@ -134,8 +134,8 @@ Eventually, you should see the `ServingRuntime` pods that will hold the SKLearn kubectl get pods ... -modelmesh-serving-mlserver-0.x-7db675f677-twrwd 3/3 Running 0 2m -modelmesh-serving-mlserver-0.x-7db675f677-xvd8q 3/3 Running 0 2m +modelmesh-serving-mlserver-1.x-7db675f677-twrwd 3/3 Running 0 2m +modelmesh-serving-mlserver-1.x-7db675f677-xvd8q 3/3 Running 0 2m ``` Then, checking on the `InferenceService` again, you should see that the one we deployed is now ready with a provided URL: diff --git a/fvt/fvtclient.go b/fvt/fvtclient.go index 329072b1..0be70dc2 100644 --- a/fvt/fvtclient.go +++ b/fvt/fvtclient.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/fvt/hpa/hpa_test.go b/fvt/hpa/hpa_test.go index 2fe632e0..c81f60d0 100644 --- a/fvt/hpa/hpa_test.go +++ b/fvt/hpa/hpa_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -31,7 +31,7 @@ var _ = Describe("Scaling of runtime deployments with HPA Autoscaler", Ordered, // constants testPredictorObject := NewPredictorForFVT("mlserver-sklearn-predictor.yaml") // runtime expected to serve the test predictor - expectedRuntimeName := "mlserver-0.x" + expectedRuntimeName := "mlserver-1.x" // checkDeploymentState returns the replicas value for the expected runtime // and expects others to be scaled to zero diff --git a/fvt/predictor/predictor_test.go b/fvt/predictor/predictor_test.go index 47f6a38e..3aed0e56 100644 --- a/fvt/predictor/predictor_test.go +++ b/fvt/predictor/predictor_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -671,7 +671,7 @@ var _ = Describe("Predictor", func() { inferResponse, err := FVTClientInstance.RunKfsInference(inferRequest) Expect(inferResponse).To(BeNil()) Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("1 should be equal to 64")) + Expect(err.Error()).To(ContainSubstring("INTERNAL: builtins.ValueError")) }) It("should return model metadata", func() { @@ -727,7 +727,7 @@ var _ = Describe("Predictor", func() { Expect(inferResponse).To(BeNil()) Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("INVALID_ARGUMENT: Invalid input to XGBoostModel")) + Expect(err.Error()).To(ContainSubstring("INTERNAL: builtins.ValueError: cannot reshape array")) }) }) @@ -885,7 +885,7 @@ var _ = Describe("Predictor", func() { Expect(inferResponse).To(BeNil()) Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("Unexpected : cannot reshape array")) + Expect(err.Error()).To(ContainSubstring("INTERNAL: builtins.ValueError: cannot reshape array")) }) }) }) diff --git a/fvt/scaleToZero/scale_to_zero_test.go b/fvt/scaleToZero/scale_to_zero_test.go index c2703e85..8944c7f1 100644 --- a/fvt/scaleToZero/scale_to_zero_test.go +++ b/fvt/scaleToZero/scale_to_zero_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -29,7 +29,7 @@ var _ = Describe("Scaling of runtime deployments to zero", Ordered, func() { // constants testPredictorObject := NewPredictorForFVT("mlserver-sklearn-predictor.yaml") // runtime expected to serve the test predictor - expectedRuntimeName := "mlserver-0.x" + expectedRuntimeName := "mlserver-1.x" // helper expectation functions // these use the "constants" so are created within the Describe's scope diff --git a/fvt/storage/storage_test.go b/fvt/storage/storage_test.go index 5c08628c..888b7e7b 100644 --- a/fvt/storage/storage_test.go +++ b/fvt/storage/storage_test.go @@ -120,7 +120,7 @@ var _ = Describe("ISVCs", func() { // Currently that is not working. Runtime pod events without it: // --- // TYPE REASON MESSAGE - // Normal Scheduled Successfully assigned modelmesh-serving/modelmesh-serving-mlserver-0.x-54685b95d5-6xmck to 10.87.76.74 + // Normal Scheduled Successfully assigned modelmesh-serving/modelmesh-serving-mlserver-1.x-54685b95d5-6xmck to 10.87.76.74 // Warning FailedMount Unable to attach or mount volumes: unmounted volumes=[storage-config], unattached volumes=[models-dir models-pvc-3 storage-config tc-config etcd-config kube-api-access-pqz7t]: timed out waiting for the condition // Warning FailedMount MountVolume.SetUp failed for volume "storage-config" : secret "storage-config" not found // --- diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 4b4458f8..e9558bc9 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS,