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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 如何基于 ACK Serverless 快速部署 AI 推理服务

作者:元毅

随着 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 资源规格,并且根据应用实际使用的资源量进行按需付费。



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 服务,可以实现根据请求流量实现自动缩放,以及在未收到流量时缩小到零。



基于 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


2. 在文件中准备您的推理输入请求

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


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 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 快速入门”活动任务,获得阿里云限量定制鸭舌帽,快来参加吧!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
20天前
|
人工智能 Java Serverless
阿里云函数计算助力AI大模型快速部署
随着人工智能技术的快速发展,AI大模型已经成为企业数字化转型的重要工具。然而,对于许多业务人员、开发者以及企业来说,探索和利用AI大模型仍然面临诸多挑战。业务人员可能缺乏编程技能,难以快速上手AI模型;开发者可能受限于GPU资源,无法高效构建和部署AI应用;企业则希望简化技术门槛,以更低的成本和更高的效率利用AI大模型。
97 12
|
6天前
|
人工智能 数据库连接 API
在部署《主动式智能导购 AI 助手构建》解决方案的过程中,整体体验还是相对顺畅的,但确实遇到了一些问题,文档提供的引导也有所不足,以下是详细的体验评估
在部署《主动式智能导购 AI 助手构建》解决方案的过程中,整体体验还是相对顺畅的,但确实遇到了一些问题,文档提供的引导也有所不足,以下是详细的体验评估
|
18天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
9天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
50 12
|
21天前
|
机器学习/深度学习 存储 人工智能
【AI系统】训练后量化与部署
本文详细介绍了训练后量化技术,涵盖动态和静态量化方法,旨在将模型权重和激活从浮点数转换为整数,以优化模型大小和推理速度。通过KL散度等校准方法和量化粒度控制,文章探讨了如何平衡模型精度与性能,同时提供了端侧量化推理部署的具体实现步骤和技术技巧。
43 1
【AI系统】训练后量化与部署
|
5天前
|
人工智能 运维 Devops
CAP:Serverless + AI 让应用开发更简单
对于众多开发者而言,Serverless 架构的核心优势在于其能够无缝集成多种云产品与组件,从而使得开发者可以更加专注于核心业务逻辑和创新。此外,Serverless 架构还提供了按量付费的灵活计费模式,进一步降低了资源成本。使用云应用开发平台 CAP,在 AI 领域,企业就可以专注于模型训练、算法优化等关键任务,让 AI 应用的开发、部署以及全生命周期的管理更加简单。可以预见 Serverless 技术将催生一系列创新且有趣的应用,而这些应用将不断拓展 AI 技术的边界。
|
12天前
|
人工智能 API Windows
免费部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型(简单5步实现,免费且比GPT4.0更好用)
本文介绍了如何部署本地AI大语言模型聊天系统,使用Chatbox AI客户端应用和Grok-beta大模型。通过获取API密钥、下载并安装Chatbox AI、配置模型,最终实现高效、智能的聊天体验。Grok 2大模型由马斯克X-AI发布,支持超长文本上下文理解,免费且易于使用。
50 0
|
4天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
1天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
28 12
|
6天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
21 2

相关产品

  • 容器服务Kubernetes版