KFServing provides a Kubernetes Custom Resource Definition for serving machine learning (ML) models on arbitrary frameworks. It aims to solve production model serving use cases by providing performant, high abstraction interfaces for common ML frameworks like Tensorflow, XGBoost, ScikitLearn, PyTorch, and ONNX.
It encapsulates the complexity of autoscaling, networking, health checking, and server configuration to bring cutting edge serving features like GPU Autoscaling, Scale to Zero, and Canary Rollouts to your ML deployments. It enables a simple, pluggable, and complete story for Production ML Serving including prediction, pre-processing, post-processing and explainability.
To learn more about KFServing, how to deploy it as part of Kubeflow, how to use various supported features, and how to participate in the KFServing community, please follow the KFServing docs on the Kubeflow Website.
KNative Serving and Istio should be available on Kubernetes Cluster.
- Istio Version: v1.1.7+
- Knative Version: v0.8.x
You may find this installation instruction useful.
Installation using kubectl
TAG=0.2.2 kubectl apply -f ./install/$TAG/kfserving.yaml
By default, you can create InferenceService instances in any namespace which has no label with
control-plane as key.
You can also configure KFServing to make InferenceService instances only work in the namespace which has label pair
serving.kubeflow.org/inferenceservice: enabled. To enable this mode, you need to add
env field as stated below to
manager container of statefulset
env: - name: ENABLE_WEBHOOK_NAMESPACE_SELECTOR value: enabled
Please refer to our troubleshooting section for recommendations and tips.
Install the SDK
pip install kfserving
Get the KFServing SDK documents from here.
Follow the example here to use the KFServing SDK to create, rollout, promote, and delete an InferenceService instance.