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

时间:2018-03-01 14:34:39

标签: java scala tensorflow tensorflow-serving

我想在Scala(或Java)中编写一个客户端来获取tensorflow服务中的模型状态。在阅读了目录中的所有原型文件: / serving / tensorflow_serving / apis 后,我想到了这两个文件: get_model_status.proto 和< strong> model_service.proto 为我提供必要的api使用。但我的简单测试返回错误: &#34;线程中的异常&#34; main&#34; io.grpc.StatusRuntimeException:UNIMPLEMENTED&#34; 。以下是代码段:

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)

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

1 个答案:

答案 0 :(得分:1)

回答我自己的问题:

  1. 上面的代码是正确的;

  2. 无需定义额外签名,只需使用正常导出的模型;

  3. 使用tf_serving版本&gt; = 1.5解决了这个问题。

  4. &#34; UNIMPLEMENTED&#34;当我使用版本1.4的tf_serving二进制文件时出现错误。

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