获取Tensorflow服务中的暴露模型的信息

时间:2018-01-05 12:14:36

标签: tensorflow tensorflow-serving

一旦我有一台服务于多个模型的TF服务器,有没有办法查询这样的服务器以了解服务的模型?

是否有可能获得有关每个模型的信息,例如名称,界面,甚至更重要的是,服务器上存在哪些模型版本并且可能会被提供?

4 个答案:

答案 0 :(得分:6)

很难找到关于此的一些信息,但有可能获得一些模型元数据。

request = get_model_metadata_pb2.GetModelMetadataRequest()
request.model_spec.name = 'your_model_name'
request.metadata_field.append("signature_def")
response = stub.GetModelMetadata(request, 10)

print(response.model_spec.version.value)
print(response.metadata['signature_def'])

希望它有所帮助。

答案 1 :(得分:0)

可以获取模型状态以及模型元数据。在另一个答案中,仅请求元数据,并且响应response.metadata['signature_def']仍需要解码。

我发现解决方案是使用内置的protobuf方法MessageToJson()转换为json字符串。然后可以使用json.loads()

将其转换为python字典。
import grpc
import json
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2_grpc
from tensorflow_serving.apis import model_service_pb2_grpc
from tensorflow_serving.apis import get_model_status_pb2
from tensorflow_serving.apis import get_model_metadata_pb2
from google.protobuf.json_format import MessageToJson

PORT = 8500
model = "your_model_name"

channel = grpc.insecure_channel('localhost:{}'.format(PORT))

request = get_model_status_pb2.GetModelStatusRequest()
request.model_spec.name = model
result = stub.GetModelStatus(request, 5)  # 5 secs timeout
print("Model status:")
print(result)

stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
request = get_model_metadata_pb2.GetModelMetadataRequest()
request.model_spec.name = model
request.metadata_field.append("signature_def")
result = stub.GetModelMetadata(request, 5)  # 5 secs timeout
result = json.loads(MessageToJson(result))
print("Model metadata:")
print(result)

答案 2 :(得分:0)

要继续解码过程,请遵循Tyler的方法并将消息转换为JSON,或者更原生地将其解压缩到SignatureDefMap中并从那里获取

var result = await asyncLazyValue.GetValueAsync();

答案 3 :(得分:0)

要使用 REST API 请求数据,对于提供的特定模型的附加数据,您可以发出(通过 curl、Postman 等):

GET http://host:port/v1/models/${MODEL_NAME}
GET http://host:port/v1/models/${MODEL_NAME}/metadata

有关详细信息,请查看https://www.tensorflow.org/tfx/serving/api_rest