Я использую скользящее среднее и модель SARIMA для прогнозирования временных рядов на моей машине, которая имеет 12 ядер.
Модель скользящего среднего требует 25 минут для работы на одном ядре. Используя многопроцессорный модуль, я смог сократить время работы до ~ 4 мин (используя 8 из 12 ядер). Проверяя результаты команды top, можно легко увидеть, что многопроцессорная обработка на самом деле использует 8 ядер и поведение соответствует ожидаемому.
Скользящее среднее (1 ядро) -> Использование ЦП для скользящего среднего 1 ядро
Скользящее среднее (8 ядер) -> Использование ЦП для скользящего среднего 8 ядер
Сначала я выполнил те же процедуры, используя модель SARIMA, не используя многопроцессорность. К моему удивлению, он автоматически использовал все ядра / распределял работу по всем ядрам. В отличие от модели скользящего среднего (рисунок 1), где я мог видеть, что загрузка ЦП процесса составляет 100% для одного процесса и ~ 800% кумулятивно при использовании 8 ядер, здесь загрузка ЦП только для одного ядра колебалась между 1000% -1200% (т.е. все 12 ядер). Как и ожидалось, многопроцессорный модуль мне не сильно помог в этом случае, и результаты были намного хуже.
SARIMA (1 ядро) -> Использование ЦП Sarima 1 ядро
SARIMA (8 ядер) -> Загрузка ЦП Sarima 8 core (вместо одного процесса, использующего 1200% в этом случае, некоторые процессы go более 100%)
Мой вопрос заключается в том, почему ОС автоматически распределяет работу по разным ядрам в случае модели SARIMA, в то время как я должен делать это явно (с помощью многопроцессорной обработки) в модели скользящего среднего. Может ли это быть из-за стиля написания программы python?
Другая информация:
Я использую http://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html для настройки SARIMA.
Я использую технику очереди процессов для распараллеливания кода
SARIMA занимает 9 часов на 1 ядре (макс. При 1200%, как показано на изображениях выше) и более 24 часов, если я использую многопроцессорность .
Я новичок в stackoverflow и буду рад дополнить любую другую необходимую информацию. Пожалуйста, дайте мне знать, если что-то не понятно.
Обновлено: Я поднял вопрос об официальном репо пакета пирамиды, и автор ответил. То же самое можно получить здесь: https://github.com/alkaline-ml/pmdarima/issues/301