You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何查询TensorFlow Serving中已部署的多模型及版本等详细信息?

当然可以!TensorFlow Serving专门提供了API来让你查询服务器上部署的所有模型信息,不管是多模型还是单模型部署,都能轻松拿到你要的模型名称、版本和可调用接口。咱直接上干货:

1. 用REST API快速查询(最常用)

REST方式不用额外装库,用curl或者Postman就能搞定,非常方便:

  • 查询所有已部署的模型名称
    执行这条命令,把<你的TF Serving地址><端口>换成你实际的地址(比如本地部署就是localhost:8501,REST默认用8501端口):

    curl http://<你的TF Serving地址>:<端口>/v1/models
    

    返回的JSON结果会列出所有当前部署的模型名称,类似这样:

    {
      "model_version_status": [
        {
          "model_name": "image_classifier",
          ...
        },
        {
          "model_name": "text_generator",
          ...
        }
      ]
    }
    
  • 查询单个模型的版本信息
    想知道某个模型有哪些可用版本,替换<模型名称>后执行:

    curl http://<你的TF Serving地址>:<端口>/v1/models/<模型名称>
    

    返回内容里的model_version_status字段会列出每个版本的状态(比如AVAILABLE表示可正常调用)和对应的版本号。

  • 查询模型的可调用接口(签名)
    要获取某个版本模型的具体输入输出规范,也就是调用时要遵循的接口,用这条命令:

    curl http://<你的TF Serving地址>:<端口>/v1/models/<模型名称>/versions/<版本号>/metadata
    

    结果里的signature_def字段会详细说明每个签名的输入参数、数据类型,以及输出结果的结构,这就是你调用模型的核心依据。

2. 用gRPC API查询(适合程序集成)

如果你的服务是用gRPC和TF Serving通信的(默认gRPC端口是8500),可以用官方的Python客户端库tensorflow-serving-api来写代码查询:

先安装依赖:

pip install tensorflow-serving-api

然后写个简单的查询示例:

import grpc
from tensorflow_serving.apis import model_service_pb2_grpc, model_management_pb2, get_model_metadata_pb2

# 建立gRPC连接
channel = grpc.insecure_channel("localhost:8500")
stub = model_service_pb2_grpc.ModelServiceStub(channel)

# 1. 查询所有模型的状态(包含名称和版本)
status_request = model_management_pb2.GetModelStatusRequest()
status_response = stub.GetModelStatus(status_request)
print("所有模型状态:", status_response)

# 2. 查询单个模型的接口元数据
metadata_request = get_model_metadata_pb2.GetModelMetadataRequest()
metadata_request.model_spec.name = "image_classifier"  # 替换成你的模型名称
metadata_request.metadata_field.append("signature_def")
metadata_response = stub.GetModelMetadata(metadata_request)
print("模型接口元数据:", metadata_response)
3. 小补充:Docker部署的额外确认方式

如果是用Docker跑的TF Serving,你也可以通过查看容器的启动命令(比如docker inspect <容器ID>)或者挂载的模型目录来确认部署的模型,但这种方式不如API实时,毕竟API是直接从运行中的服务获取状态的。

总之,通过上面的REST或gRPC API,你完全可以拿到所有你需要的信息:已部署模型的名称、每个模型的可用版本,以及每个版本的可调用接口细节。

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

火山引擎 最新活动