Tensorflow服务可获取Java Maven中的所有活动模型元数据

时间:2018-12-16 04:22:50

标签: java tensorflow-serving

我正在寻找一种从Java Maven中的Tensorflow Serving上所有当前活动模型中获取模型元数据的方法。

我有一些工作代码可用于从特定模型和版本中检索元数据,因此,如果可以通过grpc(或api)获得所有模型名称和版本的列表,那将是很棒的。使用tensorflow-client(com.yesup.oss)的工作代码:

    static ManagedChannel channel = ManagedChannelBuilder.forAddress(TF_SERVICE_HOST, TF_SERVICE_PORT)
        .usePlaintext(true).build();
    static PredictionServiceGrpc.PredictionServiceBlockingStub stub = PredictionServiceGrpc.newBlockingStub(channel);

public static void getMetadata(String model, Integer version) {

    System.out.println("Create request");
    GetModelMetadataRequest request =  GetModelMetadataRequest.newBuilder()
            .setModelSpec(ModelSpec.newBuilder()
                    .setName(model)
                    .setSignatureName("serving_default")
                    .setVersion(Int64Value.newBuilder().setValue(version))
                     )
            .addMetadataField("signature_def") 
                    .build();

    System.out.println("Collecting metadata...");
    GetModelMetadataResponse response = stub.getModelMetadata(request);
    System.out.println("Done");
    try {
        SignatureDefMap sdef = SignatureDefMap.parseFrom(
        response.getMetadataMap().get("signature_def").getValue());

       System.out.println(  sdef);
   } catch (InvalidProtocolBufferException e1) {
       e1.printStackTrace();
   }
 }

自己的想法

我已经考虑过几种解决方案,但是都不是最好的选择。

  1. 在运行Tensorflow Serving的同一设备上创建服务器,该服务器可以共享Tensorflow Serving配置文件的内容。配置文件包含型号名称和版本,但我们不知道它们当前是否处于活动状态。
  2. 使用jython或python访问其他似乎包含“ list-all-model-names”和“ retriveConfig”的库(tensorflow-serving-api)。

任何建议,谢谢,谢谢!

0 个答案:

没有答案