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