Serve a MobileNet image classifier on Kubernetes#
Note: The Python files for the Ray Serve application and its client are in the repository ray-project/serve_config_examples.
Step 1: Create a Kubernetes cluster with Kind#
kind create cluster --image=kindest/node:v1.26.0
Step 2: Install KubeRay operator#
Follow this document to install the latest stable KubeRay operator from the Helm repository.
Note that the YAML file in this example uses serveConfigV2
, which is supported by KubeRay version v0.6.0 and later.
Step 3: Install a RayService#
# Download `ray-service.mobilenet.yaml`
curl -LO https://raw.githubusercontent.com/ray-project/kuberay/v1.2.2/ray-operator/config/samples/ray-service.mobilenet.yaml
# Create a RayService
kubectl apply -f ray-service.mobilenet.yaml
The mobilenet.py file requires
tensorflow
as a dependency. Hence, the YAML file usesrayproject/ray-ml:2.5.0
instead ofrayproject/ray:2.5.0
.python-multipart
is required for the request parsing functionstarlette.requests.form()
, so the YAML file includespython-multipart
in the runtime environment.
Step 4: Forward the port for Ray Serve#
kubectl port-forward svc/rayservice-mobilenet-serve-svc 8000
Note that the Serve service is created after the Ray Serve applications are ready and running. This process may take approximately 1 minute after all Pods in the RayCluster are running.
Step 5: Send a request to the ImageClassifier#
Step 5.1: Prepare an image file.
Step 5.2: Update
image_path
in mobilenet_req.pyStep 5.3: Send a request to the
ImageClassifier
.python mobilenet_req.py # sample output: {"prediction":["n02099601","golden_retriever",0.17944198846817017]}