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

How to delete a model details from custom model config file used to load multiple models in tensorflow serving?

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

我已经使用上面的线程实现了在运行时将 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",
  }
}

一些python代码使用grpc或google.protobuf、tensorflow_serving.apis、tensorflow_serving.config删除名为"first"

的模型

输出:

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

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

1.读取 models.conf 文件

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

2.convert 格式为 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.delete所需型号:

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

4.convert 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/