Параллельный запуск нескольких моделей машинного обучения в python - PullRequest
1 голос
/ 03 августа 2020

У меня есть конечная точка Flask, которая принимает входную строку и запускает 10 разных конвейеров ML в одной строке, а затем объединяет и возвращает результаты.

Для запуска каждой модели требуется 0,2 секунды. Я хочу распараллелить эту задачу.

До сих пор я пробовал следующее:

  • Многопроцессорная обработка - конвейер ML не сериализуем. Поэтому я не могу это использовать.
  • Joblib - Поскольку конвейер ML довольно сложен, накладные расходы на создание подпроцесса слишком велики, и его выполнение занимает больше времени по сравнению с последовательным запуском моделей. Я подтвердил, что могу запускать модели параллельно с этим методом, но создание подпроцессов занимает много времени.
  • pyspark - та же проблема, что и joblib. Параллельная задача требует больше времени для выполнения.

Основная проблема заключается в том, что Joblib создает новых рабочих процессов каждый раз, когда приходит новое сообщение, а загрузка модели и настройка конвейера занимают много времени. Я ищу фреймворк, который может настраивать рабочих, загружать модели в память и просто ждать и обрабатывать сообщения бесконечно. Затем собирайте и возвращайте результаты для каждого обработанного сообщения.

...