浅析云原生模型推理服务框架KServe

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: KServe 提供 一个 Kubernetes 自定义资源定义,用于在任意框架上提供机器学习 (ML) 模型服务。 它旨在通过为常见的 ML 框架(如:Tensorflow、XGBoost、Scikit-Learn、PyTorch 和 ONNX)提供高性能、高度抽象的接口来解决生产模型服务场景。

简介

KServe 提供 一个 Kubernetes 自定义资源定义,用于在任意框架上提供机器学习 (ML) 模型服务。 它旨在通过为常见的 ML 框架(如:Tensorflow、XGBoost、Scikit-Learn、PyTorch 和 ONNX)提供高性能、高度抽象的接口来解决生产模型服务场景。

它封装了自动缩放、网络、健康检查和服务配置的复杂性,为您的 ML 部署带来了尖端的服务功能,如:GPU 自动缩放、归零缩放和金丝雀发布等。 它为 Production ML Serving 提供了一个简单、可插拔且完整的故事(story),包括预测、预处理、后处理和可解释性。

由于 0.7 版本 Kfserving 更名为 KServe ,我们仍然支持之前的KFServing 0.5.x0.6.x 版本发布,请参考相应的发布分支获取文档。

网络异常,图片无法展示
|


为什么选择 KServe

  • KServe 是 Kubernetes 上的标准模型推理平台,专为高度可扩展的场景而构建。
  • 跨 ML 框架提供高性能、标准化的推理协议。
  • 通过自动缩放(包括:GPU 上的缩放为零)支持现代 serverless 推理工作负载。
  • 使用 ModelMesh 提供高可扩展性density packing智能路由
  • 用于生产 ML 服务(包括预测、前/后处理、监控和可解释性)的简单且可插拔的生产服务。
  • 具备金丝雀发布、实验、集成和转换器等高级部署。


KServe 基本概念


模型服务控制平面(Model Serving Control Plane)

KServe Control Plane:负责协调 InferenceService 自定义资源。 它为预测器、转换器、解释器创建了 Knative serverless 部署,以根据传入的请求工作负载启用自动缩放,包括在没有收到流量时缩小到零。启用原始部署模式后,控制平面会创建 Kubernetes 的 deployment, service, ingress、HPA 资源。

网络异常,图片无法展示
|


控制平面组件

  • KServe 控制器:负责创建 service, ingress 资源、模型服务器容器和模型代理容器,用于请求/响应日志记录、批处理和模型拉取。
  • Ingress Gateway:用于路由外部或内部请求的网关。

在 Serverless 模式下:

  • Knative Serving 控制器:负责服务修订管理、创建网络路由资源、带有队列代理的 serverless 容器以暴露流量指标并强制执行并发限制。
  • Knative Activator:恢复缩放到零的 Pod 并转发请求。
  • Knative Autoscaler (KPA):监视流向应用程序的流量,并根据配置的指标向上或向下扩展副本。


模型服务数据平面(Model Serving Data Plane)

InferenceService 数据平面架构由一个静态组件图组成,这些组件协调单个模型的请求。 集成、A/B 测试和多臂老虎机(Multi-Arm-Bandits)等高级功能应该共同组成 InferenceServices

网络异常,图片无法展示
|


基本概念

组件:每个端点由多个组件组成:“预测器”、“解释器”和“转换器”。唯一需要的组件是预测器,它是系统的核心。随着 KServe 的发展,我们计划增加支持的组件的数量,以支持异常值检测等场景。

预测器:预测器是InferenceService的主力。它只是一个模型和一个模型服务器,使其在网络端点可用。

解释器:解释器启用了一个可选的备用数据平面,除了预测之外还提供模型解释。用户可以定义自己的解释器容器,其中配置了相关的环境变量,如预测端点。对于常见的场景,KServe 提供了像 Alibi 这样的开箱即用的解释器。

转换器(Transformer):转换器使用户能够在预测和解释工作流之前定义预处理和后处理步骤。和解释器一样,它也配置了相关的环境变量。对于常见的场景,KServe 提供了开箱即用的转换器,例如:Feast。

数据平面 (V1)

KServe 具有跨所有模型框架的标准化的预测工作流。

API Verb Path Payload
Readiness GET /v1/models/ Response:{"name": , "ready": true/false}
Predict POST /v1/models/:predict Request:{"instances": []} Response:{"predictions": []}
Explain POST /v1/models/:explain Request:{"instances": []} Response:{"predictions": [], "explainations": []}


Predict

所有 InferenceServices 都使用 Tensorflow V1 HTTP API

注意:只有 TensorFlow 模型支持signature_nameinputs字段。

Explain

与解释器一起部署的所有InferenceServices都支持标准化的解释API。该接口与Tensorflow V1 HTTP API 相同,只是添加了一个:explain verb。

数据平面  (V2)

数据平面协议的第二个版本解决了 V1 数据平面协议发现的几个问题,包括跨大量模型框架和服务的性能和通用性。

Predict

The V2 protocol proposes both HTTP/REST and GRPC APIs. See the complete specification for more information.

V2 协议提出了 HTTP/REST 和 GRPC API。 有关详细信息,请参阅完整规范


KServe 主要组件


单一模型服务

在 CPU/GPU 上为常见的 ML 框架(Scikit-Learn、XGBoost、Tensorflow、PyTorch)以及可插拔的自定义模型运行提供单模型推理的 Serverless 部署。

网络异常,图片无法展示
|


模型网格(ModelMesh)

ModelMesh 专为大规模、高密度和频繁变化的模型场景而设计。 ModelMesh 智能地在内存中加载和卸载 AI 模型,以对用户的响应和计算占用空间之间进行智能权衡。

网络异常,图片无法展示
|


模型可解释性

提供 ML 模型检阅(inspection)和解释,KServe 集成了 Alibi, AI Explainability 360, Captum 来帮助解释预测结果并衡量这些预测的置信度。

网络异常,图片无法展示
|


模型监控

支持有效载荷记录、异常值、对抗性和漂移检测,KServe 集成了 Alibi-detect, AI Fairness 360, Adversarial Robustness Toolbox (ART),以帮助监控生产中的 ML 模型。

网络异常,图片无法展示
|


高级部署

支持金丝雀发布、模型实验/集成和特征转换器,包括 Feast 以及自定义前/后处理。

网络异常,图片无法展示
|



相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
19 0
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
3月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
4月前
|
Cloud Native Java API
为何这款轻量级框架正悄然改变云原生应用开发格局?——探索Micronaut带来的新编程体验
【9月更文挑战第5天】随着云计算的发展,企业纷纷转向云原生应用开发。Micronaut是一款轻量级、高性能的Java框架,专为微服务架构设计,支持JVM和GraalVM,是构建云原生应用的理想选择。本文介绍Micronaut的基本概念并通过示例展示如何快速搭建云原生应用。使用Micronaut CLI可以轻松创建项目并添加REST接口,其注解驱动的API让开发变得简单直接。Micronaut还提供了健康检查、指标收集等高级功能,支持AOT编译,优化应用性能。对于追求高效开发的团队而言,Micronaut提供了一种全新的解决方案。
74 6
|
5月前
|
Cloud Native JavaScript API
一文读懂云原生 go-zero 微服务框架
一文读懂云原生 go-zero 微服务框架
|
7月前
|
弹性计算 监控 Cloud Native
构建多模态模型,生成主机观测指标,欢迎来战丨2024天池云原生编程挑战赛
本次比赛旨在如何通过分析 ECS 性能数据和任务信息,综合利用深度学习、序列分析等先进技术,生成特定机器的性能指标。参赛者的解决方案将为云资源管理和优化决策提供重要参考,助力云计算资源的高效稳定运行和智能化调度。
668 19
|
5月前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
53 0
|
5月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow Serving 部署指南超赞!让机器学习模型上线不再困难,轻松开启高效服务之旅!
【8月更文挑战第31天】TensorFlow Serving是一款高性能开源服务系统,专为部署机器学习模型设计。本文通过代码示例详细介绍其部署流程:从安装TensorFlow Serving、训练模型到配置模型服务器与使用gRPC客户端调用模型,展示了一站式模型上线解决方案,使过程变得简单高效。借助该工具,你可以轻松实现模型的实际应用。
92 0
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
基于PAI-QuickStart搭建一站式模型训练服务体验
【8月更文挑战第5天】基于PAI-QuickStart搭建一站式模型训练服务体验
157 0
|
6月前
|
存储 Cloud Native 智能网卡
共识协议的技术变迁问题之应用程序开发者应如何利用现有服务降低系统复杂性
共识协议的技术变迁问题之应用程序开发者应如何利用现有服务降低系统复杂性