Tensorflow предсказывает, что grpc не работает, но RESTful API работает нормально - PullRequest
0 голосов
/ 19 декабря 2018

Когда я пытаюсь выполнить приведенный ниже фрагмент кода клиента, я получаю сообщение об ошибке, но при вызове через конечную точку API RESTful это удается
curl -d '{"signature_name":"predict_output","instances":[2.0,9.27]}' -X POST http://10.110.110.13:8501/v1/models/firstmodel:predict

Не могли бы вы исправить меня в приведенном ниже коде

import tensorflow as tf
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2_grpc
import numpy as np
import grpc
server = '10.110.110.13:8501'
channel = grpc.insecure_channel(server)
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
request = predict_pb2.PredictRequest()
request.model_spec.name = 'firstmodel'
request.model_spec.signature_name = 'predict_output'
request.inputs['input_x'].CopyFrom(tf.contrib.util.make_tensor_proto([12.0], shape=[1]))
result_future = stub.Predict(request,40.)
print(result_future.outputs['output_y'])

Получил следующее сообщение об ошибке:

_Rendezvous: <_Rendezvous of RPC that terminated with:
status = StatusCode.UNAVAILABLE
details = "Trying to connect an http1.x server"
debug_error_string = "{"created":"@1545248014.367000000","description":"Error received from peer",
    "file":"src/core/lib/surface/call.cc","file_line":1083,"grpc_message":"Trying to connect an http1.x server","grpc_status":14}"

Ниже приведена информация о составленном запросе для вашей справки

model_spec {
  name: "firstmodel"
  signature_name: "predict_output"
}
inputs {
  key: "input_x"
  value {
    dtype: DT_FLOAT
    tensor_shape {
      dim {
        size: 1
      }
    }
    float_val: 12.0
  }
}

1 Ответ

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

Порт GRPC и порт HTTP отличаются.Поскольку вы прослушиваете свою службу http на 8501, ваша служба GRPC должна использовать другой порт.По умолчанию это 8500, но вы можете изменить его с аргументом --port= при запуске вашего tf-сервера.

docker run -p 8500:8500 --mounttype=bind,source=/root/serving/Ser_Model,target=/models/firstmodel -e MODEL_NAME=firstmodel -t tensorflow/serving
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...