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

如何向TF Serving模型批量发送多张图片及解决请求报错问题

向TF Serving发送多张图片批量推理方案及问题修复

向TF Serving提交多张图片做批量推理是原生支持的可行方案,你当前遇到的异常由两个可直接修复的问题导致:

  • 核心拼写错误:解析TF Serving返回结果时,你把返回字段名拼错了。正确的预测结果字段是predictions,你写的predictons少了一个字母i,触发键不存在的错误,最终只输出了你写错的键名字符串。
  • 缺少基础的响应校验逻辑,请求如果触发服务端错误,你无法第一时间拿到错误详情,只会在解析键名时报错。

代码修正说明

  • 你构造批量输入的逻辑是正确的:遍历读取所有图片后直接拼成第一维为batch size的numpy数组即可,你注释掉nv.expand_dims(image,axis=0)的操作是对的,不需要给单张图额外扩维度,最终生成的数组形状应为(图片总数, 300, 300, 通道数),完全符合TF Serving的批量输入格式要求。
  • 发送请求时只要保证instances.tolist()转换后保留原有4维结构,就可以正常被服务端解析。
  • 新增HTTP响应状态校验,请求异常时直接抛出状态错误,方便定位问题。

修正后的预测请求代码如下:

import requests
import json

def make_prediction(instances):
   url = get_url()
   data = json.dumps({"signature_name": "serving_default", "instances": instances.tolist()})
   headers = {"content-type": "application/json"}
   json_response = requests.post(url, data=data, headers=headers)
   # 校验请求是否成功
   json_response.raise_for_status()
   resp = json.loads(json_response.text)
   # 修正字段拼写错误
   predictions = resp['predictions']
   return predictions

如果批量推理的图片数量多、单图尺寸大,可以替换为gRPC接口对接TF Serving,相比HTTP JSON接口序列化/传输效率更高,批量吞吐量表现更好,小批量测试场景下用现有HTTP接口即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:40:36