Я успешно развернул модель в 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