Можно ли на моей машине распараллелить предварительную обработку с тензорным преобразованием? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь предварительно обработать большие объемы данных (один файл tfrecord ~ ​​1Go), используя тензор-преобразование v0.11.0 и луч только локально.

Мой код в значительной степени основан на https://github.com/tensorflow/transform/blob/master/examples/census_example.py

У меня есть конвейер луча, который работает с меньшими наборами данных (<100Mo), но время обработки резко увеличивается, когда я добавляю больше данных. Будучи новичком в tf-transform и apache Beam, мне трудно находить причины и решения этой проблемы ... И я бы хотел избежать использования Google DataFlow. </p>

Мой конвейер работает локально с использованием луча directRunner, если я правильно понял, но он использует только одно ядро. Использование нескольких ядер может быть одним из способов улучшить время предварительной обработки, но я не знаю, возможно ли это с лучом directRunner. Есть ли способ заставить конвейер с преобразованием тензорного потока работать на нескольких ядрах на моей машине?

Я посмотрел параметры конвейера луча и directRunner, и не могу найти никаких указаний на то, чтобы позволить бегуну получить доступ к нескольким ядрам или создать несколько DirectRunner для конвейера.

Большое спасибо за любую помощь, которую я могу получить!

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Чтобы добавить к комментарию Антона, Вы можете использовать Apache Flink для параллельного запуска конвейера. Более подробная информация обобщена в Преобразование Тензор потока на балках с бегунком Flink

Вам также нужно будет установить параллелизм в соответствии с общим количеством ядер и запустить эти многочисленные диспетчеры задач Flink. Я рекомендую установить параллелизм (общее количество ядер / 2)

0 голосов
/ 14 января 2019

@ Ankur @Anton Спасибо за ваши ответы, я согласен, что этот подход не подходит для производства ... Мы попробуем два других решения:

  • преобразование тензорного потока в DataFlow
  • полное удаление тензорного преобразования и использование presto для получения словарных файлов для категориальных входных данных, средних значений и стандартных отклонений для масштабирования числовых входных данных и т. Д. Во всем наборе данных
0 голосов
/ 04 января 2019

Я не верю, что это поддерживается. Основная цель непосредственного участника - убедиться, что конвейер правильно реализует модель Beam. Он не оптимизирован для производственного использования и, вероятно, фактически приведет к неэффективности: https://beam.apache.org/documentation/runners/direct/

В качестве обходного пути вы можете вручную запустить несколько конвейеров прямого запуска для обработки различных частей данных.

Лучше было бы использовать реальный параллельный бегун для выполнения таких заданий, например, Вы можете раскрутить кластер Flink: https://beam.apache.org/documentation/runners/flink/

...