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
- Cert Manager: v1.12.0+ to provision KFServing webhook certs for production grade installation
You may find this installation instruction useful.
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 kfserving-controller-manager
.
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.