首页 > 其他分享 >如何基于 ACK Serverless 快速部署 AI 推理服务

如何基于 ACK Serverless 快速部署 AI 推理服务

时间:2023-08-14 14:03:50浏览次数:39  
标签:Serverless iris KServe ACK AI sklearn

作者:元毅

随着 AI 浪潮的到来,各种 AI 应用层出不穷,众所周知 AI 应用对 GPU 资源强烈依赖,但 GPU 很昂贵,如何降低 GPU 资源使用成本成为用户首要问题。而 AI 与 Serverless 技术结合,完全可以达到按需使用资源,降低资源成本的目的。

那么在云原生场景下,是否有这样开箱即用、标准、开放的方案呢?答案是有。我们在 ACK Serverless 中提供 Knative + KServe 的方案,可以帮助用户快速部署 AI 推理服务, 按需使用,在无请求时支持 GPU 资源自动缩容到 0,大幅节省 AI 应用场景下资源使用成本。

关于 ACK Serverless

容器服务 Serverless 版 ACK Serverless 是一款基于阿里云弹性计算基础架构之上,同时完全兼容 Kubernetes 生态,安全、可靠的容器产品。通过 ACK Serverless,您无需管理和维护 k8s 集群即可快速创建 Kubernetes 容器应用,支持多种 GPU 资源规格,并且根据应用实际使用的资源量进行按需付费。

如何基于 ACK Serverless 快速部署 AI 推理服务_ACK

Knative 与 KServe

Knative 是一款基于 Kubernetes 之上的开源 Serverless 应用架构,提供基于请求的自动弹性、缩容到 0 以及灰度发布等功能。通过 Knative 部署 Serverless  应用可以做到专注于应用逻辑开发,资源按需使用。

而 KServe 提供了一个简单的 Kubernetes CRD,可以将单个或多个经过训练的模型部署到模型服务运行时,例如 TFServing、TorchServe、Triton 等推理服务器。这些模型服务运行时能够提供开箱即用的模型服务,KServe 提供基本 API 原语,让您轻松构建自定义模型服务运行时。基于 Knative 使用 InferenceService 部署推理模型后,您将获得以下 Serverless 能力:

  • 缩容到 0
  • 基于 RPS、并发数、CPU/GPU 指标自动弹性
  • 多版本管理
  • 流量管理
  • 安全认证
  • 开箱即用可观测性

KServe 模型服务控制面主要由 KServe Controller 负责,用于协调 InferenceService 自定义资源并创建 Knative Service 服务,可以实现根据请求流量实现自动缩放,以及在未收到流量时缩小到零。

如何基于 ACK Serverless 快速部署 AI 推理服务_云原生_02

基于 KServe 快速部署第一个推理服务

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

前提条件

  • 已开通 ACK Serverless [ 1]
  • 部署 KServe [ 2]

当前阿里云 Knative 支持一键部署 KServe。支持 ASM、ALB、MSE 以及 Kourier 等网关能力。

创建 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

检查服务状态:

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

服务访问

  1. 获取服务访问地址
$ kubectl get albconfig knative-internet
NAME               ALBID                    DNSNAME                                              PORT&PROTOCOL   CERTID   AGE
knative-internet   alb-hvd8nngl0lsdra15g0   alb-hvd8nngl0lsdra15g0.cn-beijing.alb.aliyuncs.com                            24m
  1. 在文件中准备您的推理输入请求

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

cat <<EOF > "./iris-input.json"
{
  "instances": [
    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]
  ]
}
EOF
  1. 访问
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 39.104.203.214:80...
* Connected to 39.104.203.214 (39.104.203.214) port 80 (#0)
> POST /v1/models/sklearn-iris:predict HTTP/1.1
> Host: sklearn-iris-predictor-default.default.example.com
> User-Agent: curl/7.84.0
> Accept: */*
> Content-Length: 76
> Content-Type: application/x-www-form-urlencoded
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< content-length: 21
< content-type: application/json
< date: Wed, 21 Jun 2023 03:17:23 GMT
< server: envoy
< x-envoy-upstream-service-time: 4
<
* Connection #0 to host 39.104.203.214 left intact
{"predictions":[1,1]}

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

小结

当前 ACK  Serverless 已全新升级,顺应了 AI 等新场景爆发下催生的新需求,以标准、开放、灵活的方式帮助企业更简单、平滑地向 Serverless 业务架构演进。基于ACK Serverless 结合 KServe 可以给你带来 AI 模型推理场景下极致的 Serverless 体验。

相关链接:

[1] 开通 ACK Serverless

<https://help.aliyun.com/zh/ack/serverless-kubernetes/user-guide/create-an-ask-cluster-2>

[2] 部署 KServe

<https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/knative-support-kserve>

点击此处,完成“ACK Serverless 快速入门”活动任务,获得阿里云限量定制鸭舌帽, 快来参加吧!

标签:Serverless,iris,KServe,ACK,AI,sklearn
From: https://blog.51cto.com/u_13778063/7076064

相关文章

  • Git:Vscode提交报错Make sure you configure your "user.name" and "user.email" in gi
    使用VScode编辑代码后,Push到云端报错:Makesureyouconfigureyour"user.name"and"user.email"ingit解决步骤:1.进入本地端的文件夹,右键GitBash; 2.输入命令:$gitconfig--globaluser.name"your_username"#配置用户名$gitconfig--globaluser.email&qu......
  • 如何基于 ACK Serverless 快速部署 AI 推理服务
    作者:元毅随着AI浪潮的到来,各种AI应用层出不穷,众所周知AI应用对GPU资源强烈依赖,但GPU很昂贵,如何降低GPU资源使用成本成为用户首要问题。而AI与Serverless技术结合,完全可以达到按需使用资源,降低资源成本的目的。那么在云原生场景下,是否有这样开箱即用、标准、开放......
  • 生成式AI时代的AI Infra—从DevOps->MLOps->LLMOps
    来源:https://zhuanlan.zhihu.com/p/640725385 距离上次讲LLM相关的内容已经过去2个月了LLMasController—无限拓展LLM的能力边界,本文想要从AIInfra的角度出发,从更宏观的角度看GenerativeAI对AIInfra生态产生的变化,本文不局限于LLM,文中提到的LLM泛指一切GenerativeAI或者......
  • SaltStack部署应用
    1.rpm-ivhhttps://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpmyumcleanallyuminstall-yepel-releasesalt-mastervim/etc/salt/master修改以下内容:interface:192.168.1.10auto_accept:Truesystemctlstartsalt-mastersystemctlenablesalt-maste......
  • portainer
    https://hub.docker.com/r/portainer/portainer-ce/tags1、拉取镜像dockerpullportainer/portainer-ce:latest2、运行容器dockerrun-d\-p8001:8000\-p9001:9000\--name=portainer\--restart=always\-v/var/run/docker.sock:/var/run/docker.sock\-vportai......
  • python中的__main__.py文件
    在Python中,__main__.py文件在几个方面发挥作用:使目录可执行:当你有一个目录(或称为包)并希望能够像执行脚本那样运行它时,__main__.py文件会被调用。例如,如果你有一个名为mypackage的目录,它包含一个__main__.py文件,那么你可以通过以下方式运行它:python-mmypackage在上......
  • Aidlux demo演示
    aidluxdemo展示:人脸关键点检测演示点击例子,点击runnow运行即可,效果如下,我就不露脸了手势识别效果还不错,fps也不低......
  • aidlux边缘检测、直线检测
    边缘检测直线检测app封装填写app配置信息:启动命令就是python加python文件所在位置......
  • Aidlux玩转例子—换脸。
    玩一玩AidLux应用中心的Demo。  1.在AidLux平台例子中心,选择一个样例。2.点击RunNow进行运行。3.通过摄像头捕捉人脸,与明星互换面容,可以看看你是哪个明星。 展现流程如下:https://www.bilibili.com/video/BV1gp4y1g782/?vd_source=706eedffe7949070fa3c396c34f4e789......
  • Webpack 使用详解
    Webpack是一个现代JavaScript应用程序的静态模块打包器。本文将详细介绍如何使用Webpack,以及提供代码示例。为了保持篇幅,我们将简要介绍Webpack的核心概念和功能。一、核心概念入口(entry):应用程序的起点。输出(output):打包后资源的输出位置。加载器(loader):将非JavaScript文......