技术指南

Kubernetes 上的 KServe 和模型服务

KServe 是一个标准化的 Kubernetes 原生平台,用于大规模服务机器学习模型。

概述

KServe 是一个标准化的 Kubernetes 原生平台,用于大规模服务机器学习模型。它为团队提供了一种单一的、声明性的方式来部署具有自动缩放、金丝雀部署和缩放到零的模型,抽象出大部分 Kubernetes 管道。

Kubernetes 上的 KServe 和模型服务是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

KServe 以前称为 KFServing,诞生于 Kubeflow 项目,它定义了 InferenceService 自定义资源。您编写一个简短的 YAML 文件,指向存储在对象存储(S3、GCS、Azure Blob)中的模型,然后 KServe 处理其余的事情。它既支持预测推理,也支持越来越多的生成法学硕士服务。 KServe 为常见框架(TensorFlow Serving、TorchServe、Triton、scikit-learn、XGBoost、Hugging Face)提供预构建的“服务运行时”,并支持自定义容器。它构建在 Knative Serving 和网络层(Istio 或类似层)之上,提供请求驱动的自动缩放,包括真正的缩放到零,因此空闲模型不消耗计算。它还围绕开放推理协议标准化了预测 API,因此无论框架如何,客户端都以相同的方式与每个模型进行通信。

技术洞察

KServe 的自动扩展依赖于 Knative,它根据并发数或每秒请求数扩展副本数量,并且可以在流量停止时将副本数降至零,然后按需冷启动。 InferenceService 将完整的推理管道抽象为预测器、转换器(预处理/后处理)和解释器组件。模型通过“存储初始化程序”从对象存储加载,在启动时将工件拉入 Pod,从而将模型存储与服务容器映像解耦。

掌握 Kubernetes 上的 KServe 和模型服务

KServe 是一个标准化的 Kubernetes 原生平台,用于大规模服务机器学习模型。它为团队提供了一种单一的、声明性的方式来部署具有自动缩放、金丝雀部署和缩放到零的模型,抽象出大部分 Kubernetes 管道。 Kubernetes 上的 KServe 和模型服务是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将 KServe 和 Kubernetes 上的模型服务视为一种操作模型,而不是单个功能:定义期望的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。

在实践中,使用 Kubernetes 上的 KServe 和模型服务的强大团队可以根据可靠性和成本来优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。

多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。

战略影响

多年来,架构决策决定着性能和运营成本。

多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

更好的工程选择可以减少生产中的可靠性事故。

更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

KServe 的未来和 Kubernetes 上的模型服务

KServe 正在快速向生成式 AI 发展,添加了一个以 LLM 为中心的轨道,具有 KV 缓存感知路由、模型缓存以及针对大型语言模型的分解预填充/解码服务等功能。期望与 vLLM 等推理引擎进行更深入的集成,为对于一个 GPU 来说太大的模型提供更好的多节点服务,以及用于基于令牌的负载平衡的网关级路由。作为 CNCF 孵化项目,它正在成为将模型置于 Kubernetes 背后的事实上的开放标准,缩小研究工件和弹性生产端点之间的差距。

现实世界的实施

一家银行通过编写指向 S3 中模型的 10 行 InferenceService YAML 来部署信用评分模型,并使用 KServe 处理自动缩放和入口。

电子商务团队使用 KServe 金丝雀部署将 10% 的流量发送到新的推荐模型,然后在指标看起来正常时增加到 100%。

一个研究实验室为数十个很少使用的模型提供了缩放至零的服务,因此每个模型仅在请求到达时才会启动,并且在空闲时不消耗 GPU。

MLOps 团队使用 KServe 转换器组件在预测器运行 Triton 服务的视觉模型之前运行图像大小调整和标准化。

实施模式

Kubernetes 上的 KServe 和模型服务实践

一家银行通过编写指向 S3 中模型的 10 行 InferenceService YAML 来部署信用评分模型,并使用 KServe 处理自动缩放和入口。

一家银行通过编写指向 S3 中模型的 10 行 InferenceService YAML 来部署信用评分模型,并使用 KServe 处理自动扩展和入口。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

Kubernetes 上的 KServe 和模型服务实践

电子商务团队使用 KServe 金丝雀部署将 10% 的流量发送到新的推荐模型,然后在指标看起来正常时增加到 100%。

电子商务团队使用 KServe 金丝雀部署将 10% 的流量发送到新的推荐模型,然后在指标看起来正常时增加到 100%。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

Kubernetes 上的 KServe 和模型服务实践

一个研究实验室为数十个很少使用的模型提供了缩放至零的服务,因此每个模型仅在请求到达时才会启动,并且在空闲时不消耗 GPU。

一个研究实验室为数十个很少使用的模型提供缩放至零的服务,因此每个模型仅在请求到达时才启动,并且不消耗 GPU,而空闲团队在预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时通常会获得更好的结果。

Kubernetes 上的 KServe 和模型服务实践

MLOps 团队使用 KServe 转换器组件在预测器运行 Triton 服务的视觉模型之前运行图像大小调整和标准化。

MLOps 团队使用 KServe 转换器组件在预测器运行 Triton 服务的视觉模型之前运行图像大小调整和标准化。当团队预先定义质量阈值、为边缘情况保留人工升级路径并跟踪一段时间内的生产力增益和错误成本时,通常会获得更好的结果。

风险与防护栏

!

优化一项基准测试可以隐藏更广泛的系统弱点。

!

基础设施和维护成本常常被低估。

!

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

2

在实际负载和数据条件下进行基准测试。

在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

3

仪器监控错误、漂移和用户影响。

仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

4

在扩展之前准备回滚和事件响应路径。

在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

不断探索