AI模型推理(2)—— Kserve入门使用

参考:

Home - KServe Documentation Website

简介

Kserve 提供一个Kubernetes 自定义资源定义(InferenceService),用于在任意框架上提供机器学习模型服务。它旨在通过为常见的ML框架(如:Tensorflow、XGBoost、Scikit-Learn、PyTorch和ONNX)提供高性能、高度抽象的接口来解决生产上的模型推理场景。

它封装了自动缩放、网络、健康检查和服务配置的复杂性,为 ML 部署带来了尖端的服务功能,如:GPU 自动缩放、归零缩放和金丝雀发布等。 它为 Production ML Serving 提供了一个简单、可插拔且完整的故事(story),包括预测、预处理、后处理和可解释性。

入门使用

1. 构建一个 InferenceService 

kubectl create namespace kserve-test

kubectl apply -n kserve-test -f - <<EOF
apiVersion: "serving.kserve.io/v1beta1"
kind: "InferenceService"
metadata:
  name: "sklearn-iris"
spec:
  predictor:
    model:
      modelFormat:
        name: sklearn
      storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
EOF

2、检查 InferenceService 状态

# inferenceservices 可以简写成 isvc
kubectl get inferenceservices sklearn-iris -n kserve-test

3、集群内访问

# 检查SVC
k get svc -n kserve-test


# 发送测试实例
cat <<EOF > "./iris-input.json"
{
  "instances": [
    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]
  ]
}
EOF

curl -v http://sklearn-iris.kserve-test.svc.cluster.local/v1/models/sklearn-iris:predict -d @./iris-input.json

4、集群外访问

Kserve默认使用LoadBalancer类型的 istio 网关进行AI推理服务的统一代理。如不具备使用LoadBanlancer 条件的,也可以将 "ingressgateway"的类型修改成NodePort。如下:

[root@node-1 working]# kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                                      
istio-ingressgateway   NodePort   10.96.232.11   <none>        15021:32395/TCP,80:31477/TCP,443:31675/TCP 

查看并设置ingress的IP、端口,推理服务的名称,进行访问。

export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3)
curl -v -H "Host: ${SERVICE_HOSTNAME}" http://${INGRESS_HOST}:${INGRESS_PORT}/v1/models/sklearn-iris:predict -d @./iris-input.json

猜你喜欢

转载自blog.csdn.net/chenxy02/article/details/130452612
今日推荐