KServe V2 REST预测API详解
2025-07-08 08:06:15作者:仰钰奇
概述
KServe是一个开源的Kubernetes原生模型服务框架,它提供了标准化的API接口用于模型推理服务。本文将深入解析KServe V2版本的REST预测API规范,帮助开发者理解和使用这套接口进行模型部署和推理。
API架构设计
KServe V2 API遵循了清晰的层次结构设计,主要包含三大类接口:
- 健康检查接口:用于监控服务状态
- 元数据接口:获取服务和模型信息
- 推理接口:执行模型预测
这种设计使得KServe既能够满足生产环境对稳定性的要求,又能提供灵活的模型服务能力。
健康检查接口
1. 服务存活检查
GET /v2/health/live
此接口用于检查推理服务是否存活,能够接收和响应请求。在Kubernetes环境中,可以直接用作livenessProbe的检查端点。
2. 服务就绪检查
GET /v2/health/ready
检查所有模型是否已准备好进行推理。在Kubernetes中可用作readinessProbe端点,确保服务完全就绪后才接收流量。
3. 模型就绪检查
GET /v2/models/${MODEL_NAME}/versions/${MODEL_VERSION}/ready
检查特定模型版本是否准备好进行推理。参数说明:
MODEL_NAME
:模型名称(必需)MODEL_VERSION
:模型版本(可选,不提供时服务器自行选择版本)
元数据接口
1. 服务器元数据
GET /v2/
获取服务器基本信息,返回JSON对象包含:
name
:服务器名称version
:服务器版本extensions
:支持的扩展功能列表
2. 模型元数据
GET /v2/models/${MODEL_NAME}/versions/${MODEL_VERSION}
获取特定模型的详细信息,返回内容包括:
name
:模型名称versions
:可用版本列表platform
:模型运行平台inputs
:输入张量元数据数组outputs
:输出张量元数据数组
其中每个张量元数据包含:
name
:张量名称datatype
:数据类型shape
:形状数组
推理接口
模型推理
POST /v2/models/${MODEL_NAME}/versions/${MODEL_VERSION}/infer
执行模型推理的核心接口,请求体为JSON格式的推理请求,响应为JSON格式的推理结果。
请求体结构
{
"id": "请求标识符",
"parameters": {
// 可选参数
},
"inputs": [
{
"name": "输入名称",
"shape": [维度数组],
"datatype": "数据类型",
"parameters": {
// 可选参数
},
"data": [输入数据数组]
}
],
"outputs": [
{
"name": "输出名称",
"parameters": {
// 可选参数
}
}
]
}
响应结构
成功响应:
{
"model_name": "模型名称",
"model_version": "模型版本",
"id": "请求ID",
"parameters": {
// 可选参数
},
"outputs": [
{
"name": "输出名称",
"shape": [维度数组],
"datatype": "数据类型",
"parameters": {
// 可选参数
},
"data": [输出数据数组]
}
]
}
错误响应:
{
"error": "错误信息"
}
数据类型支持
KServe V2 API支持多种数据类型,包括:
- 数值类型:UINT8/16/32/64, INT8/16/32/64, FP16/32/64
- 布尔类型:BOOL
- 字符串类型:BYTES
使用建议
- 生产部署:务必配置健康检查接口作为Kubernetes的探针
- 客户端开发:先获取模型元数据了解输入输出规范
- 性能优化:合理使用批处理减少请求次数
- 错误处理:检查响应状态码和错误信息
总结
KServe V2 REST预测API提供了一套标准化、功能完善的接口规范,使得模型服务可以轻松集成到各种生产环境中。通过健康检查、元数据查询和推理执行三类接口的配合使用,开发者可以构建出稳定、可靠的模型服务系统。理解这套API规范是有效使用KServe框架的基础。