Как удалить сведения о модели из файла конфигурации пользовательской модели, который используется для загрузки нескольких моделей при обслуживании в тензорном потоке? - PullRequest
0 голосов
/ 27 июня 2019

Как удалить сведения о модели из файла конфигурации пользовательской модели, который используется для загрузки нескольких моделей при обслуживании tenorflow?

Я улучшил код, добавив модели tenorflow во время выполнения в файл конфигурации обслуживания tenorflow.используя вышеупомянутый поток: TensorFlow Обслуживание: Обновление model_config (добавление дополнительных моделей) во время выполнения

Я понятия не имею, как удалить любую модель из этого файла конфигурации, используя 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",
  }
}

Теперь, как удалить модель с именем «first» из вышеуказанного файла во времявремя выполнения с использованием кода Python?

ввод:

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, tennorflow_serving.apis, tenorsflow_serving.config, чтобы удалить модель с именем«первый»

выход:

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

1 Ответ

0 голосов
/ 16 июля 2019

Я нашел ответ на свой вопрос. Файл models.conf находится в формате данных protobuf, но его тип - строка. Чтобы отредактировать его, используйте пакет Google Python. сначала я преобразовал этот файл в формат json, затем удалил подробные сведения о конкретной модели, а затем снова преобразовал обратно в формат protobuf. * ​​1001 *

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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...