当前位置: 首页 > news >正文

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、队列和依赖状态。

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

http://www.jsqmd.com/news/1125505/

相关文章:

  • 深度学习论文: Real-Time Source-Free Object Detection
  • macOS 文件元数据管理:xattr 命令 5 个高级用法与 Finder 标签解析
  • NET架构设计—第四章—业务层分层架构(前篇)
  • 5 天逆向极验4滑块验证码:从 30 万行混淆 JS 到纯协议 5/5 success
  • 数据库查询优化器<1>查询重写 / 逻辑优化
  • QA Use:推荐一款AI 原生 E2E 测试平台,自然语言一键跑通用例!
  • (干货整理)实测靠谱的AI论文写作软件,毕业生收藏备用
  • 115、Gold-YOLO 黄金特征聚合 Neck 的 YOLOv11 实现:Low-FAM 和 High-FAM 双路径融合
  • 少儿C++分级课程体系搭建:从L1到L4的教学设计经验分享
  • 由罗技 K380 键盘 FN 键模式切换引发的血案
  • Meta Assistant / 告别命令行,我为一堆 Python 脚本做了一个 Windows 任务栏的“家”
  • 桌面AI Agent从原理到实践:以“昔涟”为例解析LLM与操作系统协同
  • 设置Shell脚本开机自启
  • 基于 superpowers 实现复杂前端改造
  • STM32G070RB与TB9051FTG实现直流电机静音控制方案
  • 基于51单片机RFID车位车库管理系统/RC522读卡/车库收费系统21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 结合Nginx工作流程理解Epoll机制和Reactor模型
  • C 语言 typedef 的用法
  • 基于51/STM32单片机分贝仪检测 噪音等级声音采集电子成品套件21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • COLMAP 3.9 实战:无人机航拍图像三维重建,从 500 张图到稠密点云全流程
  • DataEase高危漏洞复现:从H2数据库注入到RCE攻击链深度解析
  • C语言学习学习笔记20260704-中缀表达式求值(双栈法)
  • 乡村振兴 + 零碳民生稿:叁仟光伏智慧灯杆,点亮杭州共富乡村绿色数字路
  • Node.js性能优化实战:从瓶颈分析到集群扩展
  • ICM-42688-P运动传感器与PIC18F4553的工业应用解析
  • Python特征工程实战:从数据清洗到模型提效的完整流程
  • uos-network-exporter配置指南:10个关键参数优化网络监控性能
  • AI代码代理Claude Code实战指南:从安装到项目开发全流程
  • Qt Quick 常用控件入门:Window、Button、CheckBox 与 RadioButton
  • 开源项目C++ Workflow学习