如何从用于加载tensorflow服务中的多个模型的自定义模型配置文件中删除模型详细信息?

时间:2019-06-27 11:45:11

标签: python tensorflow deployment deep-learning tensorflow-serving

如何从自定义模型配置文件中删除模型详细信息,该文件用于在tensorflow服务中加载多个模型?

我已经使用上面的线程TensorFlow Serving: Update model_config (add additional models) at runtime

插入了代码,以便在运行时将tensorflow模型添加到tensorflow服务配置文件中。

我不知道如何使用python从此配置文件中删除任何模型,因为此配置文件具有.conf扩展名并且其字符串格式。

此配置文件如下所示:

model_config_list: {
  config: {
    name:  "first",
    base_path:  "/models/first",
    model_platform: "tensorflow",
    }
  },
  config: {
    name:  "second",
    base_path:  "/models/second",
    model_platform: "tensorflow",
  }
}

现在如何在运行时使用python代码从上述文件中删除名为“ first”的模型?

输入:

model_config_list: {
  config: {
    name:  "first",
    base_path:  "/models/first",
    model_platform: "tensorflow",
    }
  }
  config: {
    name:  "second",
    base_path:  "/models/second",
    model_platform: "tensorflow",
  }
}

一些使用grpc或google.protobuf,tensorflow_serving.apis,tensorflow_serving.config的python代码删除名为“ first”的模型

输出:

model_config_list: {
  config: {
    name:  "second",
    base_path:  "/models/second",
    model_platform: "tensorflow",
  }
}

1 个答案:

答案 0 :(得分:0)

我已经找到问题的答案。文件models.conf是protobuf数据格式,但是它的类型是字符串。要对其进行编辑,请使用google python软件包。首先,我将此文件转换为json格式,然后删除了特定的模型详细信息,然后再次转换回protobuf格式。

1。读取models.conf文件

with open('models.conf', 'r+') as f:
    config_ini = f.read()

2。将其转换为json格式

from tensorflow_serving.config import model_server_config_pb2
from google.protobuf import text_format, json_format
import json
name='first'

model_server_config = model_server_config_pb2.ModelServerConfig()
model_server_config = text_format.Parse(text=config_ini, message=model_server_config)
proto_to_json = json_format.MessageToJson(model_server_config)
proto_to_json = json.loads(proto_to_json)

3。删除所需的模型:

proto_to_json['modelConfigList']['config'] = [dic for dic in proto_to_json['modelConfigList']['config'] if name!= dic['name']]

4。将json转换回protobuf字符串:

json_to_proto = json_format.Parse(json.dumps(proto_to_json), message=model_server_config ,ignore_unknown_fields=False)

请参阅此文档:https://developers.google.com/protocol-buffers/docs/reference/python/