Apache Beam: модель ParDo и ML - PullRequest
       32

Apache Beam: модель ParDo и ML

0 голосов
/ 07 июня 2019

Я обучил модель научного обучения (~ 70 МБ), которую я хочу использовать для прогнозирования с помощью Apache Beam.

Однако мне интересно, если при использовании parDo будет загружена модель для каждой строки, следовательно, используется огромное количество ресурсов

class PredictClass(beam.DoFn):
  def process(self, row):
     call([...]) # copy the model from remote location
     model = joblib.load('model_path.pk1')

В моем конвейере:

...    
predict_p = (query_dbs | 'PredictClasses' >> beam.ParDo(PredictClass())
...

Есть ли лучший способ сделать это? Где я должен загрузить обученный классификатор?

1 Ответ

1 голос
/ 07 июня 2019

Если вы хотите загрузить некоторые ресурсы для использования всего вашего DoFn, вы должны использовать либо start_bundle метод класса beam.DoFn (реализовать его и загрузить вашу модель там), либо вручную выполнить отложенную инициализацию. Это позволит вам загрузить модель один раз *, а затем использовать ее, когда Apache Beam вызывает process метод вашей реализации.

* это будет не один раз, но вы можете рассуждать об этом следующим образом.

Здесь у вас есть отличное объяснение с примерами и некоторыми тестами производительности для инициализации повторно используемых и дорогостоящих для загрузки объектов в Apache Beam Python SDK Apache Beam: эквивалент DoFn.Setup в Python SDK

...