TFX Pusher с моделью, обслуживаемой на платформе Google AI Platform Model - PullRequest
0 голосов
/ 17 июня 2020

Я успешно развернул модель в Google AI Platform Model с помощью tfx.extensions.google_cloud_ai_platform.pusher.

Однако у меня возникла проблема с форматированием входных данных как запрошенного объекта JSON для предсказание. Буду признателен за вашу помощь и руководство.

Есть 2 определения сигнатуры, «serv_default» - это ввод данных с вводом сериализованных данных Base64. "serv_raw" - это входные данные без ввода сериализованных данных Base64, и есть два входа данных в serv_raw, cc и pt.

Он успешно вызывается для прогнозирования с использованием "serve_default" в функции следующим образом . Но у меня возникла проблема с использованием "serve_raw". Что я пропустил в моем формате JSON при переключении на "serve_raw"?

Функция для модели платформы Google AI

import googleapiclient.discovery

def predict_json(project, model, signature, instances, version=None):
    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(project, model)

    if version is not None:
        name += '/versions/{}'.format(version)

    response = service.projects().predict(
        name=name,
        body={
            'signature_name': signature,
            'instances': instances
        }
    ).execute()

    if 'error' in response:
        raise RuntimeError(response['error'])

    return response['predictions']

"serve_raw" - Ошибка

predict_json(project="abc",
    model="abc",
    signature = 'serving_raw',
    instances=[
        {"cc":"egg",
        "pt":"def"}],
    version='vserving_model_dir')

RuntimeError: Prediction failed: Error during model execution: <_MultiThreadedRendezvous of RPC that terminated with:
    status = StatusCode.NOT_FOUND
    details = "/tmp/model/0001/assets/vocab_compute_and_apply_vocabulary_1_vocabulary; No such file or directory
     [[{{node transform_features_layer_1/transform/transform/compute_and_apply_vocabulary_1/apply_vocab/text_file_init/InitializeTableFromTextFileV2}}]]"
    debug_error_string = "{"created":"@1592357542.425468532","description":"Error received from peer ipv4:127.0.0.1:8081","file":"src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"/tmp/model/0001/assets/vocab_compute_and_apply_vocabulary_1_vocabulary; No such file or directory\n\t [[{{node transform_features_layer_1/transform/transform/compute_and_apply_vocabulary_1/apply_vocab/text_file_init/InitializeTableFromTextFileV2}}]]","grpc_status":5}"
>

"serve_default" - Успех

predict_json(project="abc",
    model="abc",
    signature = 'serving_default',
    instances=[
    {
       "examples":{"b64": "ChcmwSBgoECgJVUw==",
                   "b64": "Ch8KHQoLaXNpdGVz"}
    }],
             version='vserving_model_dir')

По умолчанию для подписи

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['examples'] tensor_info:
        dtype: DT_STRING
        shape: (-1)
        name: serving_default_examples:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['outputs'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 1)
        name: StatefulPartitionedCall:0
  Method name is: tensorflow/serving/predict

signature_def['serving_raw']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['cc'] tensor_info:
        dtype: DT_STRING
        shape: (-1)
        name: serving_raw_country_code:0
    inputs['pt'] tensor_info:
        dtype: DT_STRING
        shape: (-1)
        name: serving_raw_project_type:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['outputs'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 1)
        name: StatefulPartitionedCall_1:0
  Method name is: tensorflow/serving/predict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...