Сервер gRP C отвечает с ошибкой ОС, grpc_status: 14 - PullRequest
1 голос
/ 03 февраля 2020

Использование базового c gRP C клиента из примеров обслуживания Tensorflow для получения прогнозов от модели, работающей на docker Я получаю следующий ответ:

        status = StatusCode.UNAVAILABLE
        details = "OS Error"
        debug_error_string = "{"created":"@1580748231.250387313",
            "description":"Error received from peer",
            "file":"src/core/lib/surface/call.cc",
            "file_line":1017,"grpc_message":"OS Error","grpc_status":14}"

Это мой клиент в настоящее время выглядит так:

import grpc
import tensorflow as tf
import cv2

from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2_grpc


def main():
    data = cv2.imread('/home/matt/Downloads/cat.jpg')

    channel = grpc.insecure_channel('localhost:8500')
    stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)

    request = predict_pb2.PredictRequest()
    request.model_spec.name = 'model'
    request.model_spec.signature_name = 'serving_default'

    request.inputs['image_bytes'].CopyFrom(
        tf.make_tensor_proto(data, shape=[1, data.size]))
    result = stub.Predict(request, 10.0)  # 10 secs timeout
    print(result)

if __name__ == '__main__':
    main()

Заранее спасибо за любую помощь :)

1 Ответ

0 голосов
/ 09 апреля 2020

Предоставление решения здесь, даже если оно присутствует в разделе комментариев в интересах сообщества.

Решение состоит в том, что нам нужно вызвать Tensorflow Model Server, запустив Docker Контейнер с использованием приведенного ниже кода, перед выполнением клиентского файла:

docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving &

В дополнение к вызову Tensorflow Model Server,

  1. Он отобразит локальный путь Модель с путем Модель на Сервере и
  2. Она сопоставит Порты для связи с Сервером Модели Tensorflow. (Порт 8500 открыт для gRPC, а порт 8501 открыт для REST API)
...