服务网格驱动的新场景定义:AI 模型服务 Model Mesh

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 这个能力来源于我们的实际客户的诉求。 这些客户使用场景就是希望在服务网格技术之上运行KServe来实现AI服务。KServe平滑运行于服务网格之上, 实现模型服务的蓝/绿和金丝雀部署、修订版本之间的流量分配等能力。支持自动伸缩的Serverless推理工作负载部署、支持高可扩展性、基于并发的智能负载路由等能力。

KServe(原KFServing)是云原生环境的的一个模型服务器和推理引擎,可以支持自动缩放、零缩放、金丝雀部署等能力。KServe 作为模型服务器,为大规模服务机器学习和深度学习模型提供了基础。KServe 可以部署为传统的 Kubernetes 部署,也可以部署为支持归零的Serverless部署。对于Serverless部署,它利用了Istio和Knative Serving,具有基于流量的自动扩缩功能以及模型的蓝/绿和金丝雀部署等。

image.png

本文将介绍如何结合阿里云服务网格ASM和阿里云容器服务平台Kubernetes(ACK)来部署。

前提条件

  • 创建Istio版本为1.12.4.50或更高版本的阿里云服务网格 (ASM) 实例。
  • 创建容器服务Kubernetes (ACK) 集群。
  • 将ACK集群添加到ASM实例。
  • ASM开启数据面KubeAPI访问能力。
  • 在数据面ACK集群中已经安装Knative v0.26, 参见https://developer.aliyun.com/article/975639
  • KServe选择 v0.7版本。

安装KServe组件

1. 安装Cert Manager

KServe依赖Cert Manager组件。建议安装版本v1.8.0或以上。本文以v1.8.0版本为例,使用如下命令安装:

kubectl apply -f  https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/certmanager/v1.8.0/cert-manager.yaml

2. 安装KServe

需要在执行之前, 确认kserve.yaml中以下资源的apiVersion值从cert-manager.io/v1alpha2修改为cert-manager.io/v1。

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: serving-cert
  namespace: kserve
spec:
  commonName: kserve-webhook-server-service.kserve.svc
  dnsNames:
  - kserve-webhook-server-service.kserve.svc
  issuerRef:
    kind: Issuer
    name: selfsigned-issuer
  secretName: kserve-webhook-server-cert
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: selfsigned-issuer
  namespace: kserve
spec:
  selfSigned: {}
---

因为https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/kserve.yaml文件中已经修正上述apiVersion, 可以直接执行如下命令安装部署。

kubectl apply -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/kserve.yaml

执行结果类似如下所示:

namespace/kserve created
customresourcedefinition.apiextensions.k8s.io/inferenceservices.serving.kserve.io created
customresourcedefinition.apiextensions.k8s.io/trainedmodels.serving.kserve.io created
role.rbac.authorization.k8s.io/leader-election-role created
clusterrole.rbac.authorization.k8s.io/kserve-manager-role created
clusterrole.rbac.authorization.k8s.io/kserve-proxy-role created
rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/kserve-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/kserve-proxy-rolebinding created
configmap/inferenceservice-config created
configmap/kserve-config created
secret/kserve-webhook-server-secret created
service/kserve-controller-manager-metrics-service created
service/kserve-controller-manager-service created
service/kserve-webhook-server-service created
statefulset.apps/kserve-controller-manager created
certificate.cert-manager.io/serving-cert created
issuer.cert-manager.io/selfsigned-issuer created
mutatingwebhookconfiguration.admissionregistration.k8s.io/inferenceservice.serving.kserve.io created
validatingwebhookconfiguration.admissionregistration.k8s.io/inferenceservice.serving.kserve.io created
validatingwebhookconfiguration.admissionregistration.k8s.io/trainedmodel.serving.kserve.io created

创建ASM网关

如果已经创建过ASM网关, 可以跳过该步骤。
在ASM控制台中可以通过UI界面点击创建, 其中保留端口80为后面应用使用。具体参见 https://help.aliyun.com/document_detail/150510.html

通过运行以下命令获取外部 IP 地址:

kubectl --namespace istio-system get service istio-ingressgateway

创建第一个推理服务

使用scikit-learn的训练模型进行测试。

创建命名空间

首先,创建用于部署KServe资源的命名空间。

kubectl create namespace kserve-test

创建 InferenceService

kubectl apply -n kserve-test -f - <<EOF
apiVersion: "serving.kserve.io/v1beta1"
kind: "InferenceService"
metadata:
  name: "sklearn-iris"
spec:
  predictor:
    sklearn:
      storageUri: "https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/model.joblib"
EOF

检查创建状态。
使用数据面Kubeconfig,执行如下命令查询inferenceservices的sklearn-iris的安装状态。

kubectl get inferenceservices sklearn-iris -n kserve-test

得到类似如下执行结果。

NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                    AGE
sklearn-iris   http://sklearn-iris.kserve-test.example.com   True           100                              sklearn-iris-predictor-default-00001   7m8s

同时在安装完成后,会自动创建对应模型配置的虚拟服务。可以到服务网格ASM控制台查看, 类似结果如下。
image.png

此外, 也会看到Knative对应的网关规则定义(注意是在命名空间knative-serving下), 类似结果如下:
image.png

访问模型服务

创建模型输入文件

cat <<EOF > "./iris-input.json"
{
  "instances": [
    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]
  ]
}
EOF

通过ASM网关进行访问

获取SERVICE_HOSTNAME:

SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3)
echo $SERVICE_HOSTNAME

运行结果类似如下:

sklearn-iris.kserve-test.example.com

使用前面创建的ASM网关地址, 访问上述示例模型服务, 执行如下命令:

ASM_GATEWAY="XXXX"
curl  -H "Host: ${SERVICE_HOSTNAME}" http://${ASM_GATEWAY}:80/v1/models/sklearn-iris:predict -d @./iris-input.json 

运行结果类似如下:

curl  -H "Host: ${SERVICE_HOSTNAME}" http://${ASM_GATEWAY}:80/v1/models/sklearn-iris:predict -d @./iris-input.json
{"predictions": [1, 1]}

性能测试

执行如下命令, 测试上面部署的模型服务的性能。

kubectl create -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/loadtest.yaml -n kserve-test

[
](https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/loadtest.yaml)
得到类似结果如下:

kubectl logs -n kserve-test load-testchzwx--1-kf29t
Requests      [total, rate, throughput]         30000, 500.02, 500.01
Duration      [total, attack, wait]             59.999s, 59.998s, 1.352ms
Latencies     [min, mean, 50, 90, 95, 99, max]  1.196ms, 1.463ms, 1.378ms, 1.588ms, 1.746ms, 2.99ms, 18.873ms
Bytes In      [total, mean]                     690000, 23.00
Bytes Out     [total, mean]                     2460000, 82.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:30000
Error Set:

总结

上述这个能力来源于我们的实际客户的诉求。 这些客户使用场景就是希望在服务网格技术之上运行KServe来实现AI服务。KServe平滑运行于服务网格之上, 实现模型服务的蓝/绿和金丝雀部署、修订版本之间的流量分配等能力。支持自动伸缩的Serverless推理工作负载部署、支持高可扩展性、基于并发的智能负载路由等能力。

作为业内首个全托管Istio兼容的阿里云服务网格产品ASM,一开始从架构上就保持了与社区、业界趋势的一致性,控制平面的组件托管在阿里云侧,与数据面侧的用户集群独立。ASM产品是基于社区Istio定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力。通过托管模式,解耦了Istio组件与所管理的K8s集群的生命周期管理,使得架构更加灵活,提升了系统的可伸缩性。从2022年4月1日起,阿里云服务网格ASM正式推出商业化版本, 提供了更丰富的能力、更大的规模支持及更完善的技术保障,更好地满足客户的不同需求场景, 详情可见产品介绍:https://www.aliyun.com/product/servicemesh

image.png

相关文章
|
7天前
|
人工智能 自然语言处理 机器人
客户在哪儿AI的ToB获客服务和AI外呼机器人的有何不同
客户在哪儿AI的ToB获客服务 VS AI外呼机器人的ToB获客服务。
|
4天前
|
人工智能 自然语言处理 API
深度融合与创新:Open API技术促进AI服务生态构建
【7月更文第21天】在数字化转型的浪潮中,人工智能(AI)已从概念探索走向实际应用,深刻改变着各行各业。Open API(开放应用程序接口)作为连接技术与业务的桥梁,正成为推动AI服务普及和生态构建的关键力量。本文将探讨Open API技术如何通过标准化、易用性和灵活性,加速AI服务的集成与创新,构建一个更加丰富多元的AI服务生态系统。
29 2
|
4天前
|
人工智能 自然语言处理 数据管理
自然语言处理技术在AI驱动的数据库中的作用是什么
自然语言处理技术在AI驱动的数据库中的作用是什么
|
4天前
|
人工智能 自然语言处理 搜索推荐
探索AI驱动的未来:Open API如何赋能企业数字化转型
【7月更文第21天】在当今这个数据为王、智能引领的时代,人工智能(AI)已不再是遥远的概念,而是深深融入到各行各业,成为推动企业数字化转型的重要引擎。随着技术的不断成熟与开放,Open API(开放应用程序接口)作为一种连接技术与业务的桥梁,正以前所未有的方式赋能企业,加速其智能化进程。本文将深入探讨Open API如何通过简化集成、促进创新、提升效率等途径,助力企业在AI时代中乘风破浪,实现数字化转型的华丽蜕变。
25 1
|
6天前
|
机器学习/深度学习 人工智能 供应链
智能制造:AI驱动的生产革命——探索生产线优化、质量控制与供应链管理的新纪元
【7月更文第19天】随着第四次工业革命的浪潮席卷全球,人工智能(AI)正逐步成为推动制造业转型升级的核心力量。从生产线的智能化改造到质量控制的精密化管理,再到供应链的全局优化,AI技术以其强大的数据处理能力和深度学习算法,为企业开启了全新的生产效率和质量标准。本文将深入探讨AI在智能制造中的三大关键领域——生产线优化、质量控制、供应链管理中的应用与影响,并通过具体案例和代码示例加以阐述。
42 3
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC-基于EAS服务快速部署一个AI视频生成
AIGC-基于EAS服务快速部署一个AI视频生成
|
10天前
|
人工智能 搜索推荐 数据处理
苹果发布最新人工智能系统——Apple Intelligence,重新定义AI
Apple推出Apple Intelligence,集成于iOS 18等系统中,提供情境感知的个性化服务。新功能包括跨应用操作、屏幕阅读、写作辅助、图像生成及邮件管理。Siri升级,支持语言理解与生成。未来计划扩展多语言支持、集成第三方模型。与OpenAI合作将ChatGPT融入Siri。
28 5
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
AI初探:人工智能的定义、历史与未来展望
【7月更文第15天】在科技飞速发展的今天,人工智能(Artificial Intelligence, AI)已经成为推动社会进步的关键力量,渗透到我们生活的方方面面,从智能家居到自动驾驶汽车,从精准医疗到智能金融,无不展现出其深远的影响。本文旨在为读者揭开人工智能的神秘面纱,从基本概念出发,回顾其发展历程,并探索未来的无限可能。
39 2
|
1天前
|
存储 人工智能 自然语言处理
阿里云Elasticsearch AI场景语义搜索最佳实践
本文介绍了如何使用阿里云Elasticsearch结合搜索开发工作台搭建AI语义搜索。
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
数据的资产怎么被AI驱动的数据库理解
数据的资产怎么被AI驱动的数据库理解