У меня есть конечная точка Flask, которая принимает входную строку и запускает 10 разных конвейеров ML в одной строке, а затем объединяет и возвращает результаты.
Для запуска каждой модели требуется 0,2 секунды. Я хочу распараллелить эту задачу.
До сих пор я пробовал следующее:
- Многопроцессорная обработка - конвейер ML не сериализуем. Поэтому я не могу это использовать.
- Joblib - Поскольку конвейер ML довольно сложен, накладные расходы на создание подпроцесса слишком велики, и его выполнение занимает больше времени по сравнению с последовательным запуском моделей. Я подтвердил, что могу запускать модели параллельно с этим методом, но создание подпроцессов занимает много времени.
- pyspark - та же проблема, что и joblib. Параллельная задача требует больше времени для выполнения.
Основная проблема заключается в том, что Joblib создает новых рабочих процессов каждый раз, когда приходит новое сообщение, а загрузка модели и настройка конвейера занимают много времени. Я ищу фреймворк, который может настраивать рабочих, загружать модели в память и просто ждать и обрабатывать сообщения бесконечно. Затем собирайте и возвращайте результаты для каждого обработанного сообщения.