Basic Examples for SKlearn Prepackaged Server with MinIO — seldon-core documentation (original) (raw)

Prerequisites

Setup Seldon Core

Use the setup notebook to Setup Cluster with Ambassador Ingress and Install Seldon Core. Instructions also online.

Setup MinIO

Use the provided notebook to install Minio in your cluster and configure mc CLI tool. Instructions also online.

Copy iris model into local MinIO

%%bash mc config host add gcs https://storage.googleapis.com "" ""

mc mb minio-seldon/iris -p mc cp gcs/seldon-models/sklearn/iris/model.joblib minio-seldon/iris/ mc cp gcs/seldon-models/sklearn/iris/metadata.yaml minio-seldon/iris/

Added gcs successfully. Bucket created successfully minio-seldon/iris. gcs/seldon-models/sklearn/iris/model.joblib -> minio-seldon/iris/model.joblib Total: 0 B, Transferred: 1.06 KiB, Speed: 2.16 KiB/s gcs/seldon-models/sklearn/iris/metadata.yaml -> minio-seldon/iris/metadata.yaml Total: 0 B, Transferred: 162 B, Speed: 335 B/s

%%bash mc cat minio-seldon/iris/metadata.yaml

name: iris versions: [iris/v1] platform: sklearn inputs:

%%writefile metadata.yaml

name: iris versions: [iris/v1-updated] platform: sklearn inputs:

Overwriting metadata.yaml

%%bash mc cp metadata.yaml minio-seldon/iris/

metadata.yaml -> minio-seldon/iris/metadata.yaml Total: 0 B, Transferred: 173 B, Speed: 25.02 KiB/s

Deploy sklearn server

%%writefile secret.yaml

apiVersion: v1 kind: Secret metadata: name: seldon-init-container-secret type: Opaque stringData: RCLONE_CONFIG_S3_TYPE: s3 RCLONE_CONFIG_S3_PROVIDER: minio RCLONE_CONFIG_S3_ACCESS_KEY_ID: minioadmin RCLONE_CONFIG_S3_SECRET_ACCESS_KEY: minioadmin RCLONE_CONFIG_S3_ENDPOINT: http://minio.minio-system.svc.cluster.local:9000 RCLONE_CONFIG_S3_ENV_AUTH: "false"

!kubectl apply -f secret.yaml

secret/seldon-init-container-secret created

%%writefile deploy.yaml

apiVersion: machinelearning.seldon.io/v1 kind: SeldonDeployment metadata: name: minio-sklearn spec: name: iris predictors:

!kubectl apply -f deploy.yaml

seldondeployment.machinelearning.seldon.io/minio-sklearn created

!kubectl rollout status deploy/$(kubectl get deploy -l seldon-deployment-id=minio-sklearn -o jsonpath='{.items[0].metadata.name}')

Waiting for deployment "minio-sklearn-default-0-classifier" rollout to finish: 0 of 1 updated replicas are available... deployment "minio-sklearn-default-0-classifier" successfully rolled out

Test deployment

Test prediction

%%bash curl -s -X POST -H 'Content-Type: application/json'
-d '{"data":{"ndarray":[[5.964, 4.006, 2.081, 1.031]]}}'
http://localhost:8003/seldon/seldon/minio-sklearn/api/v1.0/predictions | jq .

{ "data": { "names": [ "t:0", "t:1", "t:2" ], "ndarray": [ [ 0.9548873249364169, 0.04505474761561406, 5.7927447968952436e-05 ] ] }, "meta": {} }

Test model metadata (optional)

%%bash curl -s http://localhost:8003/seldon/seldon/minio-sklearn/api/v1.0/metadata/classifier | jq .

{ "inputs": [ { "datatype": "BYTES", "name": "input", "shape": [ 1, 4 ] } ], "name": "iris", "outputs": [ { "datatype": "BYTES", "name": "output", "shape": [ 3 ] } ], "platform": "sklearn", "versions": [ "iris/v1-updated" ] }

Test for CI

import json

data = !curl -s -X POST -H 'Content-Type: application/json' -d '{"data":{"ndarray":[[5.964, 4.006, 2.081, 1.031]]}}' http://localhost:8003/seldon/seldon/minio-sklearn/api/v1.0/predictions data = json.loads(data[0])

assert data == { "data": { "names": ["t:0", "t:1", "t:2"], "ndarray": [[0.9548873249364169, 0.04505474761561406, 5.7927447968952436e-05]], }, "meta": {}, }

import json

meta = !curl -s http://localhost:8003/seldon/seldon/minio-sklearn/api/v1.0/metadata/classifier meta = json.loads(meta[0])

assert data == { "data": { "names": ["t:0", "t:1", "t:2"], "ndarray": [[0.9548873249364169, 0.04505474761561406, 5.7927447968952436e-05]], }, "meta": {}, }

Cleanup

!kubectl delete -f deploy.yaml

seldondeployment.machinelearning.seldon.io "minio-sklearn" deleted