在 Kubernetes 上部署 MobileNet 图像分类器#

注意: Ray Serve 应用程序及其客户端的 Python 文件位于仓库 ray-project/serve_config_examples 中。

步骤 1:使用 Kind 创建一个 Kubernetes 集群#

kind create cluster --image=kindest/node:v1.26.0

步骤 2: 安装 KubeRay 操作员#

按照 此文档 从 Helm 仓库安装最新稳定版本的 KubeRay 操作符。请注意,此示例中的 YAML 文件使用了 serveConfigV2,该功能在 KubeRay 版本 v0.6.0 及更高版本中受支持。

步骤 3:安装 RayService#

# Download `ray-service.mobilenet.yaml`
curl -LO https://raw.githubusercontent.com/ray-project/kuberay/v1.0.0/ray-operator/config/samples/ray-service.mobilenet.yaml

# Create a RayService
kubectl apply -f ray-service.mobilenet.yaml
  • The mobilenet.py 文件需要 tensorflow 作为依赖项。因此,YAML 文件使用 rayproject/ray-ml:2.5.0 而不是 rayproject/ray:2.5.0

  • python-multipart 是请求解析函数 starlette.requests.form() 所必需的,因此 YAML 文件在运行时环境中包含了 python-multipart

步骤 4:为 Ray Serve 转发端口#

kubectl port-forward svc/rayservice-mobilenet-serve-svc 8000

请注意,Serve 服务是在 Ray Serve 应用程序准备就绪并运行后创建的。这个过程可能在 RayCluster 中的所有 Pod 运行后大约需要 1 分钟。

步骤 5:向 ImageClassifier 发送请求#

  • 步骤 5.1:准备一个图像文件。

  • 步骤 5.2:更新 mobilenet_req.py 中的 image_path

  • 步骤 5.3:向 ImageClassifier 发送请求。

    python mobilenet_req.py
    # sample output: {"prediction":["n02099601","golden_retriever",0.17944198846817017]}