Вариант использования: Обслуживание нескольких моделей в tf Обслуживание: Какие изменения мне нужно сделать в файле client.py для каждой размещенной модели? - PullRequest
0 голосов
/ 07 декабря 2018

Я новичок в этой области.Мой пример использования: Обслуживание нескольких моделей в tf Обслуживание. Я использую docker

Я могу понять изменения, которые мне нужно сделать в файле конфигурации (как показано ниже):

model_config_list: {

  config: {
    name: "model1",
    base_path: "/tmp/model",
    model_platform: "tensorflow"
  },
  config: {
     name: "model2",
     base_path: "/tmp/model2",
     model_platform: "tensorflow"
  }
}

Однако,У меня есть 2 задачи:

Задача 1:

Какие изменения необходимы в файле client.py для взаимодействия с несколькими моделями?Я ссылался на mnist_client.py:

def do_inference(hostport, work_dir, concurrency, num_tests):

  test_data_set = mnist_input_data.read_data_sets(work_dir).test
  channel = grpc.insecure_channel(hostport)
  stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
  result_counter = _ResultCounter(num_tests, concurrency)
  for _ in range(num_tests):
    request = predict_pb2.PredictRequest()
    request.model_spec.name = 'mnist'
    request.model_spec.signature_name = 'predict_images'
    image, label = test_data_set.next_batch(1)
    request.inputs['images'].CopyFrom(
        tf.contrib.util.make_tensor_proto(image[0], shape=[1, image[0].size]))
    result_counter.throttle()
    result_future = stub.Predict.future(request, 5.0)  # 5 seconds
    result_future.add_done_callback(
        _create_rpc_callback(label[0], result_counter))
  return result_counter.get_error_rate()

Приведенный выше код предназначен только для одной модели.

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

Задача 2:

Для одной модели я использовал этот формат клиентаrequest:

python mnist_client.py --server=172.17.0.2:9000 --image=<image folder>

Какой должен быть точный формат, в котором я размещаю несколько моделей, и каждый раз поступает запрос на разные модели.Так какой должен быть правильный формат запроса клиента?

Заранее спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

Установите для request.model_spec.name имя, которое вы упомянули в конфигурационном файле, например, "model1".

Измените 'request.model_spec.signature_name' на подпись вашей модели.

В строке "request.inputs ['images']" измените "images" на имя входного тензорав вашей модели и измените аргументы в make_tensor_proto на свой собственный ввод.Если у вас есть несколько входов, добавьте строку несколько раз.

...