如何从自定义模型配置文件中删除模型详细信息,该文件用于在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",
}
}
答案 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/