详情页标题前

阿里云容器服务ACK基于KServe快速部署一个推理服务-云淘科技

详情页1

本文介绍如何基于KServe快速部署一个推理服务

索引

  • 前提条件

  • 操作步骤

前提条件

  • 已创建ACK Serverless集群

  • 已部署Knative

    说明

    部署Knative时,有ALB、MSE、Kourier三种服务网关可供选择。

  • 已部署KServe

操作步骤

首先,您需要部署一个带有预测能力的InferenceService推理服务,该推理服务将使用iris (鸢尾花)数据集训练的scikit-learn模型。该数据集具有三个输出类别:Iris Setosa(山鸢尾,索引:0)、Iris Versicolour(杂色鸢尾花,索引:1)和Iris Virginica(弗吉尼亚鸢尾,索引:2)。 然后您可以向部署的模型发送推理请求,以便预测对应的鸢尾植物类别。

说明

iris数据集是由三种鸢尾花,各50组数据构成的数据集。每个样本包含4个特征,分别为萼片(Sepals)的长和宽、花瓣(Petals)的长和宽。

步骤一:部署InferenceService推理服务

  1. 执行以下命令,创建一个名为sklearn-iris的InferenceService推理服务。

    kubectl apply -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. 执行以下命令,检查服务状态。

    kubectl get inferenceservices sklearn-iris

    预期输出:

    NAME           URL                                                         READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                    AGE
    sklearn-iris   http://sklearn-iris-predictor-default.default.example.com   True           100                              sklearn-iris-predictor-default-00001   51s

步骤二:访问服务

不同服务网关,IP地址有所不同,访问方式也有所不同。请按需选择。

ALB

  1. 执行以下命令,获取ALB访问地址。

    kubectl get albconfig knative-internet                         

    预期输出:

    NAME               ALBID                    DNSNAME                                              PORT&PROTOCOL   CERTID   AGE
    knative-internet   alb-hvd8nngl0l*******   alb-hvd8nngl0l******.cn-.alb.aliyuncs.com                               2
  2. 执行以下命令,将以下JSON内容写入 ./iris-input.json文件中,以准备推理输入请求。

    cat < "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. 执行以下命令,访问服务。

    INGRESS_DOMAIN=$(kubectl get albconfig knative-internet -o jsonpath='{.status.loadBalancer.dnsname}')
    SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    curl -v -H "Host: ${SERVICE_HOSTNAME}" "http://${INGRESS_DOMAIN}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    预期输出:

    *   Trying 120.77.XX.XX...
    * TCP_NODELAY set
    * Connected to alb-hvd8nngl0l******.cn-.alb.aliyuncs.com (120.77.XX.XX) port 80 (#0)
    > POST /v1/models/sklearn-iris:predict HTTP/1.1
    > Host: sklearn-iris-predictor-default.default.example.com
    > User-Agent: curl/7.58.0
    > Accept: */*
    > Content-Length: 76
    > Content-Type: application/x-www-form-urlencoded
    > 
    * upload completely sent off: 76 out of 76 bytes
    < HTTP/1.1 200 OK
    < Date: Thu, 13 Jul 2023 01:48:44 GMT
    < Content-Type: application/json
    < Content-Length: 21
    < Connection: keep-alive
    < 
    * Connection #0 to host alb-hvd8nngl0l******.cn-.alb.aliyuncs.com left intact
    {"predictions":[1,1]}

    结果返回了两个预测 {"predictions": [1, 1]},该结果为推理发送的两组数据点对应于索引为1的花,模型预测这两种花都是Iris Versicolour(杂色鸢尾花)。

MSE

  1. 执行以下命令,获取MSE访问地址。

    kubectl -n knative-serving get ing stats-ingress

    预期输出:

    NAME            CLASS                  HOSTS   ADDRESS                         PORTS   AGE
    stats-ingress   knative-ingressclass   *       192.168.XX.XX,47.107.XX.XX      80      15d

    ADDRESS下方的47.107.XX.XX为MSE网关公网地址,后续会使用该地址访问服务。MSE的公网和内网顺序不固定,有时公网排在内网后面,即ADDRESS为47.107.XX.XX,192.168.XX.XX

  2. 执行以下命令,将以下JSON内容写入 ./iris-input.json文件中,以准备推理输入请求。

    cat < "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. 执行以下命令,访问服务。

    # MSE的公网和内网顺序不固定,此处使用公网地址访问。ingress[1]代表公网排在第二位,ingress[0]代表公网排在第一位,请按照实际情况替换。
    INGRESS_HOST=$(kubectl -n knative-serving get ing stats-ingress -o jsonpath='{.status.loadBalancer.ingress[1].ip}')
    SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    curl -v -H "Host: ${SERVICE_HOSTNAME}" "http://${INGRESS_HOST}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    预期输出:

    *   Trying 47.107.XX.XX... # 47.107.XX.XX为MSE网关的公网地址。
    * TCP_NODELAY set
    * Connected to 47.107.XX.XX (47.107.XX.XX) port 80 (#0)
    > POST /v1/models/sklearn-iris:predict HTTP/1.1
    > Host: sklearn-iris-predictor-default.default.example.com
    > User-Agent: curl/7.58.0
    > Accept: */*
    > Content-Length: 76
    > Content-Type: application/x-www-form-urlencoded
    > 
    * upload completely sent off: 76 out of 76 bytes
    < HTTP/1.1 200 OK
    < content-length: 21
    < content-type: application/json
    < date: Tue, 11 Jul 2023 09:56:00 GMT
    < server: istio-envoy
    < req-cost-time: 5
    < req-arrive-time: 1689069360639
    < resp-start-time: 1689069360645
    < x-envoy-upstream-service-time: 4
    < 
    * Connection #0 to host 47.107.XX.XX left intact
    {"predictions":[1,1]}

    结果返回了两个预测 {"predictions": [1, 1]},该结果为推理发送的两组数据点对应于索引为1的花,模型预测这两种花都是Iris Versicolour(杂色鸢尾花)。

Kourier

  1. 执行以下命令,获取Kourier服务访问地址。

    kubectl -n knative-serving get svc kourier

    预期输出:

    NAME      TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)                      AGE
    kourier   LoadBalancer   192.168.XX.XX   121.40.XX.XX  80:31158/TCP,443:32491/TCP   49m

    服务访问IP为121.40.XX.XX,端口为80(HTTP)和443(HTTPS)。

  2. 执行以下命令,将以下JSON内容写入 ./iris-input.json文件中,以准备推理输入请求。

    cat < "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. 执行以下命令,访问服务。

    INGRESS_HOST=$(kubectl -n knative-serving get service kourier -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    curl -v -H "Host: ${SERVICE_HOSTNAME}" "http://${INGRESS_HOST}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    预期输出:

    *   Trying 121.40.XX.XX...
    * TCP_NODELAY set
    * Connected to 121.40.XX.XX (121.40.XX.XX) port 80 (#0)
    > POST /v1/models/sklearn-iris:predict HTTP/1.1
    > Host: sklearn-iris-predictor-default.default.example.com
    > User-Agent: curl/7.58.0
    > Accept: */*
    > Content-Length: 76
    > Content-Type: application/x-www-form-urlencoded
    > 
    * upload completely sent off: 76 out of 76 bytes
    < HTTP/1.1 200 OK
    < content-length: 21
    < content-type: application/json
    < date: Wed, 12 Jul 2023 08:23:13 GMT
    < server: envoy
    < x-envoy-upstream-service-time: 4
    < 
    * Connection #0 to host 121.40.XX.XX left intact
    {"predictions":[1,1]}

    结果返回了两个预测 {"predictions": [1, 1]},该结果为推理发送的两组数据点对应于索引为1的花,模型预测这两种花都是Iris Versicolour(杂色鸢尾花)。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/170436.html

(0)
上一篇 2023年12月10日 下午1:02
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云人工智能平台PAI部署推理服务-云淘科技

    PAI Python SDK提供了易用的API(即HighLevel API),支持用户将模型部署到PAI创建推理服务。本文档介绍了如何使用SDK在PAI部署推理服务。 概要介绍 SDK提供了HighLevel API,即pai.model.Model和pai.predictor.Predictor,支持用户将模型部署到EAS,以及进行调用测试。 通过SDK…

    阿里云人工智能平台PAI 2023年12月10日
  • 阿里云容器服务ACK部署KServe组件-云淘科技

    本文介绍KServe的基本概念以及如何部署KServe。 索引 KServe介绍 部署KServe 相关文档 KServe介绍 KServe是一个基于Kubernetes的机器学习模型服务框架,提供简单的Kubernetes CRD,可用于将单个或多个经过训练的模型(例如TFServing、TorchServe、Triton等推理服务器)部署到模型服务运行时…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK部署KServe模型推理服务-云淘科技

    KServe(原KFServing)是云原生环境的一个模型服务器和推理引擎,支持自动扩缩容、缩容至零、金丝雀部署等能力。本文介绍如何基于阿里云服务网格ASM和Arena部署KServe模型推理服务。 前提条件 已创建包含GPU的集群。 已安装云原生AI套件。 已创建ASM实例,且版本为1.17.2.7及以上。具体操作,请参见创建ASM实例或升级ASM实例。 …

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。