You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KServe自定义预测器就绪检查失效,如何让queue-proxy等待模型加载?

解决KServe queue-proxy提前调用模型容器的问题

针对你遇到的queue-proxy未等待模型加载完成就发起调用的问题,可通过以下几种方式解决:

方法一:为queue-proxy配置关联模型状态的就绪探针

KServe的queue-proxy默认不会自动等待模型容器就绪,需显式配置其就绪探针,让它依赖模型容器的就绪状态。在spec.predictor下添加queueProxy字段,配置对应的就绪检查规则:

apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: custom-model
spec:
  predictor:
    containers:
      - name: kserve-container
        image: private-registry/kserve:1.0.3
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          failureThreshold: 100
          initialDelaySeconds: 300
          periodSeconds: 300
        resources:
          requests:
            nvidia.com/gpu: 1
            cpu: 6000m
            memory: 16Gi
          limits:
            nvidia.com/gpu: 1
            cpu: 6000m
            memory: 16Gi
    queueProxy:
      readinessProbe:
        httpGet:
          path: /ready
          port: 8080
        initialDelaySeconds: 300
        periodSeconds: 10
        failureThreshold: 60

queue-proxy的/ready端点会自动检查后端模型容器的就绪状态,只有模型容器就绪探针成功后,queue-proxy的就绪探针才会通过,此时才会开始接收并转发外部请求。

方法二:修正模型容器的就绪探针端点

确保你的自定义预测器实现KServe标准的就绪端点,比如/v1/models/<model-name>:ready,该端点需在模型完全加载完成后才返回200状态码。如果之前配置的/路径在模型加载过程中就返回200,会导致KServe误判模型已就绪。调整后的就绪探针配置示例:

readinessProbe:
  httpGet:
    path: /v1/models/custom-model:ready
    port: 8080
  failureThreshold: 100
  initialDelaySeconds: 60
  periodSeconds: 10

模型容器的就绪探针仅在模型加载完成后成功,部分KServe版本会自动让queue-proxy依赖此状态,避免提前调用。

方法三:用初始化容器预加载模型

如果模型加载可独立于预测器启动流程,可添加初始化容器先完成模型加载至GPU的操作,再启动预测器容器。这样预测器启动时模型已加载完成,就绪探针可快速通过:

apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: custom-model
spec:
  predictor:
    containers:
      - name: kserve-container
        image: private-registry/kserve:1.0.3
        readinessProbe:
          httpGet:
            path: /v1/models/custom-model:ready
            port: 8080
          failureThreshold: 10
          initialDelaySeconds: 30
          periodSeconds: 10
        resources:
          requests:
            nvidia.com/gpu: 1
            cpu: 6000m
            memory: 16Gi
          limits:
            nvidia.com/gpu: 1
            cpu: 6000m
            memory: 16Gi
    initContainers:
      - name: model-loader
        image: private-registry/model-loader:v1
        command: ["bash", "-c", "load-model-to-gpu --model-path /models"]
        resources:
          requests:
            nvidia.com/gpu: 1
            cpu: 6000m
            memory: 16Gi
          limits:
            nvidia.com/gpu: 1
            cpu: 6000m
            memory: 16Gi
        volumeMounts:
          - name: model-storage
            mountPath: /models
    volumes:
      - name: model-storage
        persistentVolumeClaim:
          claimName: model-pvc

内容的提问来源于stack exchange,提问作者aesher9o1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:27:31