KServe(原KFServing)是云原生环境的一个模型服务器和推理引擎,支持自动缩放、零缩放、金丝雀部署等能力。本文介绍如何基于阿里云服务网格ASM和阿里云容器服务Kubernetes(ACK)部署KServe实现AI服务。
前提条件
- 已创建ASM实例,且版本为1.17.2.7及以上。具体操作,请参见创建ASM实例或升级ASM实例。
- 已添加集群到ASM实例。具体操作,请参见添加集群到ASM实例。
- 已启用ASM的数据面KubeAPI访问能力。具体操作,请参见启用集群KubeAPI访问Istio资源功能。
- 已在ACK集群中部署Knative组件并开启Knative on ASM功能 。具体操作,请参见使用Knative on ASM部署Serverless应用。
- 已部署入口网关服务。
背景信息
KServe作为模型服务器,为大规模服务机器学习和深度学习模型提供了基础。KServe可以部署为传统的Kubernetes Deployment方式,也可以部署为支持归零的Serverless方式,提供基于流量的自动扩缩功能以及模型的蓝绿和金丝雀部署等。

步骤一:安装KServe组件
- 登录ASM控制台,在左侧导航栏,选择 。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
- 在KServe on ASM页面,单击开启KServe on ASM。KServe依赖于CertManager,安装KServe会自动安装CertManager组件。如需使用自建CertManager,请关闭在集群中自动安装CertManager组件。
步骤二:获取ASM网关地址
- 登录ASM控制台,在左侧导航栏,选择 。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
- 在入口网关页面,查看并记录目标网关的服务地址。服务地址即为ASM网关地址。
步骤三:创建推理服务
本文使用scikit-learn的训练模型进行测试。
- 使用kubectl连接到数据面集群,执行以下命令,创建用于部署KServe资源的命名空间。
kubectl create namespace kserve-test
- 创建InferenceService。
- 执行以下命令,查询InferenceService 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-00001 3h26m
READY
为True
,表明InferenceService sklearn-iris安装成功。 - 可选:查看虚拟服务和网关规则。InferenceService sklearn-iris安装成功后,会自动创建对应模型配置的虚拟服务和网关规则。您可以执行以下步骤进行查看。
- 登录ASM控制台,在左侧导航栏,选择 。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
- 在虚拟服务页面上方,单击命名空间右侧的
图标,选择命名空间为kserve-test,查看新建的虚拟服务。
- 在左侧导航栏,选择 。
- 在网关规则页面上方,选择命名空间为knative-serving,查看新建的网关规则。
步骤四:访问模型服务
下文以Linux和Mac环境为例进行说明。
- 执行以下命令,创建模型输入文件。
cat <<EOF > "./iris-input.json" { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } EOF
- 通过ASM网关进行访问测试。
- 对模型服务进行性能测试。