欢迎光临
我们一直在努力

AI 推理服务探针:健康检查不能只看端口通不通

AI 推理服务探针:健康检查不能只看端口通不通

一、端口通不代表模型可用

Kubernetes 里给服务加 liveness 和 readiness 很常见。但 AI 推理服务的健康状态比普通 HTTP 服务复杂。端口能响应,不代表模型加载完成、GPU 可用、队列没堵、依赖存储可读、Tokenizer 正常。

如果探针只检查 /healthz 返回 200,流量可能过早打到尚未准备好的 Pod。

二、探针要分阶段

flowchart TD
A[容器启动] –> B[进程存活]
B –> C[模型加载]
C –> D[GPU 初始化]
D –> E[依赖检查]
E –> F[接收流量]

liveness 只判断进程是否需要重启,readiness 判断是否能接流量,startupProbe 判断初始化是否完成。三者不能混用。

模型加载时间可能很长,startupProbe 要给足时间;readiness 则要更严格,确认模型和关键依赖都可用。

三、健康状态要结构化

type InferenceHealth = {
process: "ok" | "failed"
modelLoaded: boolean
gpuReady: boolean
queueAccepting: boolean
storageReady: boolean
}

探针内部可以检查多个子状态,但对 Kubernetes 返回时要明确。比如模型未加载完成时 readiness 失败,但 liveness 不失败,避免容器被反复杀掉。

probe_policy:
startup_allow_model_load_minutes: 15
readiness_check_queue: true
readiness_check_gpu: true
liveness_avoid_model_probe: true

liveness 不要做重型模型推理,否则探针本身会增加负载。

四、探针失败要能解释

Pod NotReady 时,平台要能看到原因。是模型下载慢、GPU 初始化失败、对象存储不可用,还是队列背压。只显示 readiness failed 不够。

还要注意探针超时。AI 服务启动时 CPU 和 IO 压力大,探针超时过短会误杀。探针配置需要按模型大小和节点性能调。

探针还要避免触发真实推理。有人会用一次小 prompt 作为 readiness 检查,这看似准确,但会消耗 GPU、污染队列,还可能在高峰期放大负载。更好的方式是检查模型状态、GPU runtime 和队列接收状态。

inference_probe:
liveness_path: /livez
readiness_path: /readyz
startup_path: /startupz
readiness_timeout_seconds: 2
no_real_generation: true

如果模型服务支持多模型,readiness 还要按模型维度返回。某个模型加载失败,不一定代表整个 Pod 不能服务其他模型。网关需要知道哪些模型可用,才能正确路由。

探针失败还应进入事件和日志。Kubernetes Event 里写清具体子状态,值班人员才能从 kubectl describe pod 直接看到线索,而不是再进容器翻日志。

上线前可以做启动演练:清空缓存、模拟对象存储慢、模拟 GPU 初始化失败,观察探针是否给出正确状态。探针只有在坏场景里验证过,才算可靠。

五、总结

AI 推理服务探针要区分启动、存活和就绪,检查模型、GPU、队列和依赖状态。

端口通不代表模型可用。健康检查越贴近真实服务能力,流量切入越安全。

赞(0)
未经允许不得转载:171主机测评 » AI 推理服务探针:健康检查不能只看端口通不通
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址