Skip to content

1. 背景:从"裸推理引擎"到统一推理平台

一句话理解:单独部署一个 vLLM/Triton 实例很容易,但当你要管理几百个模型、多种框架、不同团队、金丝雀升级、自动扩缩、协议统一时,裸引擎的人力成本会爆炸——KServe 用一层 Operator 把这些重复工程抽象掉,让"模型即服务"像 Deployment 一样声明式。

1.1 裸推理引擎的痛苦

假设你负责一个 AI 平台的模型服务层,团队里有人用 vLLM 跑 Llama、有人用 Triton 跑 BERT、有人用 TensorFlow Serving 跑推荐模型、还有人用 TorchServe。每个都要自己做这些事:

任务裸 vLLM/Triton 时你要自己做KServe 接手后
模型下载/挂载写 initContainer 拉 S3/GCS、PVC 挂载storageUri 声明即可
runtime 选择人记住"这个模型用哪个镜像"modelFormat.name 自动匹配 ServingRuntime
流量接入手写 Service/Ingress/Gateway自动创建 Knative Service 或 K8s Service+Ingress
扩缩容手写 HPA/KEDA/KnativeminReplicas/maxReplicas + autoscaler 配置
缩到零自己搭激活机制Knative 模式原生支持
金丝雀手动切流量canaryTrafficPercent 声明式
pre/postprocessing自己写 sidecartransformer 字段声明
协议统一每个引擎 API 不同V1/V2/OpenAI-compatible 统一入口
可观测每个 runtime 配 metrics统一暴露 /metrics + 标准 condition
多模型/图编排自己写 DAGInferenceGraph 声明式组合

裸引擎时每加一个模型就像重新发明一次"模型服务",而 KServe 让这件事变成:

yaml
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: llama-3
spec:
  predictor:
    model:
      modelFormat:
        name: huggingface        # KServe 自动选 huggingface runtime(可配 vLLM)
      storageUri: s3://models/llama-3/
      resources:
        limits:
          nvidia.com/gpu: 2

1.2 KServe 是什么

KServe(原名 KFServing)是一个 Kubernetes 上的标准化模型服务平台,CNCF 孵化项目。它的定位可以概括为三层:

  1. 控制平面kserve-controller-manager 运行一组 Operator,管理 InferenceServiceServingRuntimeClusterServingRuntimeInferenceGraph 等 CRD。
  2. 数据平面:一组 model server runtime(vLLM、Triton、TorchServe、TensorFlow Serving、sklearnserver、huggingfaceserver 等)+ KServe 自己的 queue-proxy/agent。
  3. 流量/网关层:把外部请求路由到具体模型 Pod,支持 canary、A/B、ensemble、transformer/explainer 链。

用一个比喻:

vLLM/Triton 是"发动机",KServe 是"整车 + 自动驾驶系统"——发动机决定跑多快,但开车还需要油门、刹车、导航、巡航、安全气囊。KServe 就是把这些东西标准化了。

1.3 KServe 与裸引擎 / 自研网关 / Ray Serve 的对比

方案核心模型优点缺点适用场景
裸 vLLM/Triton手动部署 Pod/Service/Ingress简单、可控无统一管理、重复工程单模型 poc
自研网关 + 引擎自己写调度/扩缩/canary完全贴合业务维护成本高、易重复造轮子超大规模、有专门 infra 团队
Ray ServePython-first 部署模型与 Ray 生态无缝、灵活不是 K8s-native,需要 Ray 集群已经在用 Ray 做训练/推理
KServeInferenceService CRD + runtime 抽象K8s-native、runtime 多、协议统一、生态成熟学习曲线、Knative 可选依赖云原生 AI 平台的标准选择

关键区分

  • KServe vs 自研网关:自研网关通常只解决"路由 + 限流",而 KServe 解决的是从 CRD 到 Pod 到流量的全生命周期
  • KServe vs Ray Serve:Ray Serve 是应用层框架,嵌入 Python 代码里;KServe 是 K8s 控制平面,用 YAML 声明。
  • KServe vs 单个 runtime:KServe 不替代 vLLM/Triton,而是编排它们。

1.4 KServe 解决了什么(和不解决什么)

KServe 解决

  • 统一入口:一份 InferenceService CRD,服务 TF/PyTorch/sklearn/XGBoost/ONNX/HuggingFace/vLLM/Triton 等任意模型。
  • runtime 解耦ServingRuntime 让模型格式和容器实现分离,团队可自研 runtime。
  • 流量治理:canary、A/B、ensemble、explainer、transformer 链。
  • 弹性:HPA/KPA/KEDA,支持缩到零(Knative)。
  • 协议统一:V1、V2(Open Inference Protocol)、OpenAI-compatible。
  • 多模型/图编排InferenceGraph 把多个 InferenceService 组合成复杂推理 DAG。
  • 可观测:标准化 /metrics、conditions、Prometheus 集成。

KServe 不解决

  • 模型训练:那是 Training Operator / Ray / Kubeflow 的活。
  • 数据流水线:那是 Argo Workflow / Spark / Flink 的活。
  • 向量检索/RAG:KServe 只管模型推理,向量库(Milvus/Pinecone)需另搭。
  • LLM 网关的多供应商聚合:KServe 管集群内模型端点,跨云/跨供应商聚合是 LLM Gateway(如 LiteLLM)的活。
  • 替代所有运维:KServe 本身也要升级、监控、调参。

1.5 AI 平台为什么需要 KServe

一个成熟 AI 平台最终都会长成这样:

用户 / 业务系统


[LLM Gateway / API 网关]  ← 限流、鉴权、多供应商聚合


[KServe]                  ← 模型发现、路由、扩缩、金丝雀


[vLLM / Triton / HuggingFace / ...]  ← 实际跑推理


[GPU / 节点池]

KServe 是这一层里承上启下的关键:

  • 算法工程师kubectl apply 一个 YAML 就能发布模型。
  • 平台工程师:用 runtime 抽象支持新框架,无需改 Controller。
  • SRE:统一 metrics/conditions,标准化扩缩和金丝雀。

更重要的是,它是K8s-native的——你已有的 K8s 技能(Operator、CRD、RBAC、Ingress、HPA)全部复用。

本章小结

  • 痛点:裸推理引擎在模型增多、团队变多、需要灰度/弹性/协议统一时,重复工程爆炸。
  • 定位:KServe 是 K8s 上的标准化模型服务平台,核心抽象是 InferenceService + ServingRuntime + InferenceGraph
  • 对比:比裸引擎多一层 Operator;比自研网关标准化;比 Ray Serve 更 K8s-native;不替代 runtime,而是编排 runtime。
  • 价值:把"发布一个模型"从工程任务变成声明式操作,是 AI 平台从 poc 走向生产的关键层。

参考来源

Released under CC-BY-SA-4.0 License.