如何在tensorflow服务中获取模型状态

问题描述 投票:1回答:1

我想在Scala(或Java)中编写一个客户端来获取tensorflow服务中的模型状态。在阅读目录中的所有proto文件后:/ serve / tensorflow_serving / apis,我认为这两个文件:get_model_status.proto和model_service.proto为我提供了必要的api。但我的简单测试返回错误:“线程中的异常”主“io.grpc.StatusRuntimeException:UNIMPLEMENTED”。这是代码片段:

val channel = ManagedChannelBuilder
    .forAddress(host, port)
    .usePlaintext(true)
    .asInstanceOf[ManagedChannelBuilder[_]]
    .build
val modelStub = tensorflow.serving.ModelServiceGrpc.newBlockingStub(channel)
val modelRequest = tensorflow.serving.GetModelStatus
    .GetModelStatusRequest
    .newBuilder
    .setModelSpec(ModelSpec.newBuilder.setName("x").setSignatureName("x"))
    .build
println(modelStub
    .getModelStatus(modelRequest)
    .getModelVersionStatusList
    .asScala)

错误“UNIMPLEMENTED”似乎表明我必须定义一个新的签名以添加到元图处理请求并返回响应,这让我感到困惑,因为这个新签名不再是我想要检查的模型。我的问题是如何使用这个getModelStatus功能?任何建议表示赞赏!

java scala tensorflow tensorflow-serving
1个回答
1
投票

回答我自己的问题:

  1. 上面的代码是正确的;
  2. 无需定义额外的签名,只需使用正常导出的模型;
  3. 使用tf_serving version> = 1.5解决了这个问题。

当我使用版本1.4的tf_serving二进制文件时出现“UNIMPLEMENTED”错误。

有关此过程的更多详细信息,您可以在/serving/tensorflow_serving/model_servers/tensorflow_model_server_test.py中查看官方python函数testGetModelStatus。

© www.soinside.com 2019 - 2024. All rights reserved.