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

Java 如何在tensorflow服务中获取模型状态,java,scala,tensorflow,tensorflow-serving,Java,Scala,Tensorflow,Tensorflow Serving,我正试图用Scala(或Java)编写一个客户端,以获取tensorflow服务中的模型状态。在阅读了目录:/serving/tensorflow\u serving/api中的所有proto文件后,我认为这两个文件:获取模型状态。proto和模型服务。proto为我提供了必要的api。但是我的简单测试返回了一个错误:线程“main”io.grpc.StatusRuntimeException中的异常:未实现“。下面是代码片段: val channel = ManagedChannelBuild

我正试图用Scala(或Java)编写一个客户端,以获取tensorflow服务中的模型状态。在阅读了目录:/serving/tensorflow\u serving/api中的所有proto文件后,我认为这两个文件:获取模型状态。proto模型服务。proto为我提供了必要的api。但是我的简单测试返回了一个错误:线程“main”io.grpc.StatusRuntimeException中的异常:未实现“。下面是代码片段:

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)

错误“未实现”似乎表明我必须定义一个新的签名添加到元图中以处理请求并返回响应,这让我感到困惑,因为这个新签名不再是我想要检查的模型。我的问题是如何使用这个
getModelStatus
函数?任何建议都将不胜感激

回答我自己的问题:

  • 上述代码是正确的

  • 不需要定义额外的签名,只需使用正常导出的模型

  • 使用tf_服务版本>=1.5解决了这个问题

  • 当我使用1.4版的tf_服务二进制文件时,出现了“未实现”错误

    有关此过程的更多详细信息,您可以查看/service/tensorflow\u service/model\u servers/tensorflow\u model\u server\u test.py中的官方python函数testGetModelStatus