Я новичок в TFX, но у меня есть явно работающий конвейер ML, который должен использоваться через BulkInferrer. Кажется, что это производит вывод исключительно в формате Protobuf, но, поскольку я выполняю массовый вывод, я хочу вместо этого передать результаты в базу данных. (Вывод DB кажется, что он должен быть по умолчанию для массового вывода, поскольку как массовый вывод, так и доступ к базе данных используют преимущества распараллеливания ... но Protobuf - это сериализованный формат для каждой записи.)
Я предполагаю, что мог бы использовать что-то вроде Parquet-Avro-Protobuf, чтобы выполнить преобразование (хотя это на Java, а остальная часть конвейера на Python), или я мог бы написать что-нибудь сам, чтобы обрабатывать все сообщения protobuf одно за другим, преобразовать их в JSON, десериализуйте JSON в список dicts и загрузите dict в Pandas DataFrame или сохраните его как набор пар ключ-значение, которые я рассматриваю как одноразовую БД ... но это звучит как много работы и боли, связанные с распараллеливанием и оптимизацией для очень распространенного случая использования. Определение сообщения Protobuf верхнего уровня - это PredictionLog от Tensorflow. .
Это должно быть обычным вариантом использования, потому что TensorFlowModelAnalytics функционирует как этот использует фреймы данных Pandas. Я бы предпочел иметь возможность писать напрямую в БД (желательно в Google BigQuery) или в файл Parquet (поскольку Parquet / Spark, кажется, распараллеливает лучше, чем Pandas), и, опять же, они кажутся обычными вариантами использования, но я примеров не нашел. Может, я неправильно использую поисковые запросы?
Я также посмотрел на PredictExtractor , поскольку извлечение прогнозов похоже на то, что я хочу ... но в официальной документации ничего не говорится о том, как предполагается использовать этот класс. Я думал, что TFTransformOutput звучит как многообещающий глагол , но вместо этого это существительное.
Я явно упускаю здесь что-то фундаментальное. Есть ли причина, по которой никто не хочет хранить результаты BulkInferrer в базе данных? Есть ли опция конфигурации, которая позволяет мне записывать результаты в БД? Возможно, я хочу добавить ParquetIO или Экземпляр BigQueryIO в конвейер TFX ? (В документации TFX говорится, что он использует Beam под капотом, но это мало что говорит о как я должен использовать их вместе.) Но синтаксис в этих документах выглядит настолько отличным от моего кода TFX, что я не уверен, совместимы ли они?
Помощь?