我正在尝试用 Scala(或 Java)编写一个客户端来获取 tensorflow 服务中的模型状态。阅读完目录中的所有 proto 文件后:/serving/tensorflow_serving/apis,我认为这两个文件:get_model_status.proto 和 < strong>model_service.proto提供了必要的api供我使用。但我的简单测试返回了一个错误:“线程“main”io.grpc.StatusRuntimeException 中出现异常:UNIMPLMENTED”。这是代码片段:
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)
错误“UNIMPLMENTED”似乎表明我必须定义一个新签名添加到元图中来处理请求并返回响应,这让我很困惑,因为这个新签名不是我想再检查的模型。我的问题是如何使用这个 getModelStatus 函数?如有任何建议,我们将不胜感激!
最佳答案
回答我自己的问题:
以上代码正确;
无需定义额外的签名,只需使用正常导出的模型即可;
使用 tf_serving 版本 >= 1.5 可以解决此问题。
当我使用 1.4 版本的 tf_serving 二进制文件时,出现“UNIMPLMENTED”错误。
有关此过程的更多详细信息,您可以查看 /serving/tensorflow_serving/model_servers/tensorflow_model_server_test.py< 中的官方 python 函数 testGetModelStatus/em>
关于java - 如何获取 tensorflow 服务中的模型状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49051968/