SuperAPI AI 工具集

model-serving-kubernetes

部署与运维

查看项目

更新于 10-15 12:54

技能介绍

用途

本技能用于在 Kubernetes 上以生产级方式部署机器学习模型,核心工具为 KServe(原 KFServing)与 NVIDIA Triton Inference Server。适用场景包括:规模化服务 scikit-learn、PyTorch、TensorFlow 或 ONNX 模型;为 ML 模型实现金丝雀发布与 A/B 测试;基于请求速率或 GPU 指标对推理 Pod 自动扩缩容;在 Kubernetes 上使用 Triton 或 KServe 部署 LLM;通过流量拆分管理多个模型版本。

前置条件

  • Kubernetes 1.28+,且具备 GPU 节点
  • 已安装 KServe(或独立部署 Triton)
  • 已配置 kubectl 与 helm
  • 集群已安装 NVIDIA GPU Operator

主要能力

KServe 安装

通过 Helm 安装 KServe:

helm repo add kserve https://kserve.github.io/helm-charts
helm repo update

helm install kserve kserve/kserve \
  --namespace kserve \
  --create-namespace \
  --set kserve.controller.gateway.ingressGateway.className=nginx

# 验证
kubectl get pods -n kserve
kubectl get crd | grep kserve

基础 InferenceService

定义并部署一个 sklearn 模型的 InferenceService,包含存储路径与资源请求/限制,随后可获取推理服务 URL 并发送预测请求。

GPU 启用的 LLM InferenceService

通过自定义容器(如 vllm/vllm-openai)部署 LLM,配置 GPU 资源请求与限制、就绪探针、Hugging Face Token 环境变量以及 GPU 节点选择器。

金丝雀部署(流量拆分)

在 InferenceService 中设置 canaryTrafficPercent 控制新版本流量比例,可通过 kubectl patch 逐步提升金丝雀流量,或移除该字段将金丝雀提升为稳定版本。

使用 KEDA 自动扩缩容

通过 ScaledObject 定义基于 Prometheus 指标的扩缩容策略,设置最小/最大副本数及触发阈值。

NVIDIA Triton Inference Server

以 Deployment 方式部署 Triton,配置模型仓库(如 S3)、模型控制模式(poll 自动加载新版本)、轮询间隔、指标端口、HTTP/gRPC 端口、GPU 资源与就绪探针。

Triton 模型仓库结构

模型仓库按模型名与版本号组织目录,每个模型包含 config.pbtxt 与版本子目录。config.pbtxt 可定义后端、最大批大小、动态批处理、输入输出张量及 GPU 实例组。

模型管理命令

提供 Triton 的模型列表、加载新版本、卸载模型等 HTTP 接口调用方式,以及 KServe 的 rollout 状态查看命令。

使用方式

按照技能文档中的 YAML 清单与命令逐步操作:先安装 KServe 或部署 Triton,再定义 InferenceService 或 Triton Deployment,最后通过 kubectl apply、curl 或 kubectl patch 进行部署、预测与流量调整。

适用场景

  • 需要将训练好的模型以 API 形式对外提供推理服务
  • 需要灰度发布与快速回滚模型版本
  • 需要根据负载自动调整推理副本数量
  • 需要在 GPU 集群上高效运行 LLM 或传统 ML 模型

限制与常见问题

文档列出常见问题及修复方式:InferenceService 未就绪(模型加载或 OOM,检查日志并提高内存限制);金丝雀卡在 0%(KNative 路由问题,检查 ksvc);Triton 缺少模型(S3 权限或路径问题,验证 IAM 角色与 model-store 路径);GPU 利用率低(未启用动态批处理,在 Triton 配置中启用);自动扩缩容未触发(Prometheus 查询错误,在 Prometheus UI 中测试查询)。

最佳实践

  • 所有模型更新使用金丝雀部署,指标恶化时可在数秒内回滚
  • 启用 Triton 动态批处理,小模型可提升 GPU 吞吐 5–10 倍
  • 将模型存储在 S3/GCS 并使用版本化路径
  • 固定 GPU 节点选择器,防止模型 Pod 落到仅 CPU 节点
  • 金丝雀发布期间监控每个模型版本的 p99 延迟与错误率

相关技能

vllm-server(vLLM 用于 LLM 服务)、llm-inference-scaling(KEDA 自动扩缩容)、kubernetes-ops(核心 Kubernetes 操作)、gpu-server-management(GPU 节点)。