Как отформатировать тело ответа запроса на конечную точку прогнозирования запроса API Google Cloud Platform

При работе с компонентом AI Platform я работаю над учебником, который был предварительно создан для GCP. Короче говоря, он включает в себя использование Kubeflow и Tensorflow Extended для создания и развертывания завершенной модели машинного обучения для прогнозирования, кто станет основным лидером набора данных Chicago Taxi. Все шло хорошо, даже до развертывания и достижения целевой конечной точки моей модели, однако я не могу получить правильное тело запроса или найти хорошую документацию о том, как узнать, как должно выглядеть тело запроса. Ниже у меня есть:

  1. Модель из SchemaGen в Kubeflow
  2. Заголовок из data.csv, который я использовал для обучения, и извлеченная из него строка, в которой я хочу протестировать
  3. Завиток, который я использую в почтальоне, и это ошибка.

Следует отметить, что в ошибке говорится об ожидаемом значении числа с плавающей запятой и получении строки, но модель говорит, что это должно быть число с плавающей запятой. Я хотел бы знать, может ли кто-нибудь помочь мне определить типы данных, упорядочить requestBody, чтобы я мог получить успешное предсказание. Заранее спасибо!

SchemaGen из Kubeflow:  введите описание изображения здесь

копия заголовка csv и строки данных: pickup_community_area, fare, trip_start_month, trip_start_hour, trip_start_day, trip_start_timestamp, pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude, trip_miles, dropoff_latitude, dropoff_longitude, trip_miles, pickup_census_cens_tractus, тип_проката_транспорта, pickup_census_cens_tractus, тип_проката_транспорта, тип_платежа , 2,3,1380593700,41.836150155, -87.648787952 ,,, 12.6 ,,, Наличные деньги, услуги такси, 1380,, 0,0

Завиток:

curl --location --request POST 'https://ml.googleapis.com/v1/projects/-----------------------------------------------------project-name-here/models/tfxmodel:predict'
--header 'Авторизация: предъявитель ТОКЕН ЗДЕСЬ '
--header' Accept: application / json '
--header' Content-Type: application / json '
--data-raw' {instance: [Taxi Affiliation Services ,,,,, 27.05, Наличные ,, 60,41.836150155, -87.648787952,0,12.6,1380,3,2,10,1380593700]} '

Ответ: {error: Prediction failed: error processing input: Expected string, вместо этого получено 27,05 типа 'float'.}

Следует отметить, что если я начинаю преобразовывать все числа с плавающей запятой и целые числа в строки, это заканчивается тем, что я получаю недопустимую ошибку requestbody, которая меня не удивляет.

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

RequestBody:

{"instances":["Taxi Affiliation Services","'0'","'0'","'0'","'0'","'27.05'","Cash","'0'","'60,41.836150155'","'-87.648787952'","'0'","'12.6'","'1380'","'3'","'2'","'10'","'1380593700'"]}

Ответить:

{
"error": "Prediction failed: Error during model execution: <_MultiThreadedRendezvous of RPC that terminated with:\n\tstatus = StatusCode.INVALID_ARGUMENT\n\tdetails = \"Could not parse example input, value: 'Taxi Affiliation Services'\n\t [[{{node ParseExample/ParseExampleV2}}]]\"\n\tdebug_error_string = \"{\"created\":\"@1611579449.396545283\",\"description\":\"Error received from peer ipv4:127.0.0.1:8081\",\"file\":\"src/core/lib/surface/call.cc\",\"file_line\":1056,\"grpc_message\":\"Could not parse example input, value: 'Taxi Affiliation Services'\\n\\t [[{{node ParseExample/ParseExampleV2}}]]\",\"grpc_status\":3}\"\n>"

}


person Damisco    schedule 23.01.2021    source источник
comment
Вы пробовали добавить в двойные кавычки простую кавычку? Как это "'27.05'"   -  person guillaume blaquiere    schedule 24.01.2021
comment
Какому руководству по GCP вы следовали? Кроме того, вы что-нибудь изменили, когда следовали руководству? Просто чтобы вашу проблему можно было легко воспроизвести.   -  person Ricco D    schedule 25.01.2021
comment
Гийом. Я пробовал форматировать, используя одинарный в двойном qoute для всех числовых значений, а также попытался добавить 0 в поле вместо того, чтобы оставлять его пустым. но все равно получаю ошибку.   -  person Damisco    schedule 25.01.2021
comment
@RiccoD Я использую этот учебник для конвейера и записной книжки kubeflow: tensorflow.org/tfx/tutorials/tfx/cloud-ai-platform-pipelines, и это была документация, которую я просмотрел при настройке моей модели: tensorflow.org/tfx/tutorials/tfx/cloud-ai-platform-pipelines   -  person Damisco    schedule 25.01.2021
comment
Следует отметить, что в этом руководстве gcp создает образец записной книжки, соответствующий этому руководству. Если вы пройдете через записную книжку, обновляя определенные места, он также скажет вам, что это должно быть воспроизведено. Хотя это может быть платным!   -  person Damisco    schedule 25.01.2021


Ответы (1)


Пожалуйста, попробуйте следующий формат: -

{экземпляры: [\\ "Служба связи такси \\",,,,, 27.05, \\ "Cash \\",, 60,41.836150155, -87.648787952,0,12.6,1380,3,2,10,1380593700] }

Вы можете проверить эту ссылку для данных CSV с каждой строкой, закодированной как строковое значение: - https://cloud.google.com/ai-platform/prediction/docs/reference/rest/v1/projects/predict#request-body-details

person Arghya Ganguly    schedule 28.01.2021