1.11. 关于查询您的 AI 模型
通过 API 查询您的模型也称为模型推断。Model inferencing 最常用于检索信息、自动化任务、进行预测、提供数据分析或执行操作。
通常,必须使用与正在使用的 AI 模型的格式来构建查询。模型服务运行时格式查询会自动进行。该模型根据底层培训和数据处理查询,然后提供一个输出。输出应该与模型本身的目的一致,无论是要提供答案、进行预测或执行任务。
以下示例概述了确保您的模型准备推断出来的常规步骤,以及在服务运行时查询输出中可能预期的内容。
1.11.1. 验证您的 AI 模型是否可以访问 复制链接链接已复制到粘贴板!
在通过 API 查询模型前,您可以检查该模型可以访问并准备好根据连接的数据提供答案。以下示例继续使用 OpenVINO Model Server。
先决条件
- 您已配置了 AI 模型-serving 运行时。
- 将 AI 模型上传到 MicroShift。
- MicroShift 集群正在运行。
-
已安装 OpenShift CLI (
oc
)。
流程
获取 MicroShift 集群的 IP 地址,并将其分配给
IP
变量,如下例所示:IP=$(oc get nodes -o json | jq -r '.items[0].status.addresses[0].address')
$ IP=$(oc get nodes -o json | jq -r '.items[0].status.addresses[0].address')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令识别您创建的路由的名称:
oc get route -n ai-test <route_name> -o yaml
$ oc get route -n ai-test <route_name> -o yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<route_name
> 替换为路由的实际名称。
运行以下命令,将路由的
HOST
值提取并分配给DOMAIN
变量:DOMAIN=$(oc get route -n ai-test <route_name> -o=jsonpath="{ .status.ingress[0].host }")
DOMAIN=$(oc get route -n ai-test <route_name> -o=jsonpath="{ .status.ingress[0].host }")
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<route_name
> 替换为路由的实际名称。
运行以下命令,启用从路由到 MicroShift IP 地址的数据传输:
curl -i "${DOMAIN}/v2/models/ovms-resnet50/ready" --connect-to "${DOMAIN}::${IP}:"
$ curl -i "${DOMAIN}/v2/models/ovms-resnet50/ready" --connect-to "${DOMAIN}::${IP}:"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 除了使用
"${DOMAIN}::${IP}:"
标志外,您也可以使用实际的 DNS,或者将 IP 地址和域添加到/etc/hosts
文件中。
输出示例
HTTP/1.1 200 OK content-type: application/json date: Wed, 12 Mar 2025 16:01:32 GMT content-length: 0 set-cookie: 56bb4b6df4f80f0b59f56aa0a5a91c1a=4af1408b4a1c40925456f73033d4a7d1; path=/; HttpOnly
HTTP/1.1 200 OK content-type: application/json date: Wed, 12 Mar 2025 16:01:32 GMT content-length: 0 set-cookie: 56bb4b6df4f80f0b59f56aa0a5a91c1a=4af1408b4a1c40925456f73033d4a7d1; path=/; HttpOnly
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来查询模型元数据:
curl "${DOMAIN}/v2/models/ovms-resnet50" --connect-to "${DOMAIN}::${IP}:"
$ curl "${DOMAIN}/v2/models/ovms-resnet50" --connect-to "${DOMAIN}::${IP}:"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name":"ovms-resnet50","versions":["1"],"platform":"OpenVINO","inputs":[{"name":"0","datatype":"FP32","shape":[1,224,224,3]}],"outputs":[{"name":"1463","datatype":"FP32","shape":[1,1000]}]
{"name":"ovms-resnet50","versions":["1"],"platform":"OpenVINO","inputs":[{"name":"0","datatype":"FP32","shape":[1,224,224,3]}],"outputs":[{"name":"1463","datatype":"FP32","shape":[1,1000]}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 验证您的模型是否已准备好推断。
- 查询模型。
- 验证模型响应。
- 可选:获取模型服务器指标。
1.11.2. 将您的 AI 模型随时用于推测 复制链接链接已复制到粘贴板!
在通过 API 查询 AI 模型之前,请先获得模型,以便根据培训数据提供答案。以下示例继续使用 OVMS 模型。
先决条件
- MicroShift 集群正在运行。
-
您有
xxd
工具,它是vim-common
软件包的一部分。 - 已配置了模型运行时。
- 将 AI 模型上传到 MicroShift。
流程
运行以下命令,从 OpenVINO Model Server 示例下载 bee 的镜像:
curl -O https://raw.githubusercontent.com/openvinotoolkit/model_server/main/demos/common/static/images/bee.jpeg
$ curl -O https://raw.githubusercontent.com/openvinotoolkit/model_server/main/demos/common/static/images/bee.jpeg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过运行以下命令来创建请求数据:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.11.3. 查询您的 AI 模型 复制链接链接已复制到粘贴板!
对使用 ovms-resnet50
模型的 AI 模型服务器发出 inference 请求。
先决条件
- MicroShift 集群正在运行。
- 已配置了模型运行时。
- 将 AI 模型上传到 MicroShift。
流程
运行以下命令,针对使用
ovms-resnet50
模型的模型服务器发出 inference 请求:curl \ --data-binary "@./request.json" \ --header "Inference-Header-Content-Length: ${HEADER_LEN}" \ "${DOMAIN}/v2/models/ovms-resnet50/infer" \ --connect-to "${DOMAIN}::${IP}:" > response.json
$ curl \ --data-binary "@./request.json" \ --header "Inference-Header-Content-Length: ${HEADER_LEN}" \ "${DOMAIN}/v2/models/ovms-resnet50/infer" \ --connect-to "${DOMAIN}::${IP}:" > response.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 延迟输出示例,保存到
response.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 示例中省略了
.outputs[0].data
的内容,如 brevity。
验证
要确定模型的预测,请使用以下 Python 脚本获取
.outputs[0].data
中最高元素的索引,以确定模型的预测值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
309
309
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在本例中,标记为
309
的元素是模型的响应。
验证针对 resnet 的输入数据 的输出,例如:
../../../../demos/common/static/images/bee.jpeg 309
../../../../demos/common/static/images/bee.jpeg 309
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 可选。使用 resnet 输入数据中提供的其他镜像查询 AI 模型。
1.11.4. 获取 model-server 指标 复制链接链接已复制到粘贴板!
在进行查询后,您可以获取模型服务器的指标来识别瓶颈、优化资源分配并确保高效的基础架构利用率。
您还可以为 MicroShift 配置 Open Telemetry 来获取 model-server 指标。如需更多信息,请参阅"将 Open Telemetry 添加到 InferenceService 自定义资源"。
先决条件
- MicroShift 集群正在运行。
- 有足够的查询来提供您要查看的指标数据。
流程
运行以下命令,在
/metrics
端点上发出请求来获取模型服务器的 Prometheus-format 指标:curl "${DOMAIN}/metrics" --connect-to "${DOMAIN}::${IP}:"
$ curl "${DOMAIN}/metrics" --connect-to "${DOMAIN}::${IP}:"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出部分示例
HELP ovms_requests_success Number of successful requests to a model or a DAG. TYPE ovms_requests_success counter
# HELP ovms_requests_success Number of successful requests to a model or a DAG. # TYPE ovms_requests_success counter ovms_requests_success{api="KServe",interface="REST",method="ModelReady",name="ovms-resnet50"} 4 ovms_requests_success{api="KServe",interface="REST",method="ModelMetadata",name="ovms-resnet50",version="1"} 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow