Ошибка пула нарушенных процессов при использовании перекрестной проверки fbProphet

#python #time-series #concurrent.futures #facebook-prophet #process-pool

Вопрос:

Я использую библиотеку Пророка facebook для составления прогноза, но прежде чем запустить его в производство, я хочу проверить его с помощью включенного пакета перекрестной проверки. У меня есть машина с 64 ГБ оперативной памяти и Ryzen 9 5950X. Я получаю эту ошибку: «BrokenProcessPool: процесс в пуле процессов был внезапно прерван, когда будущее было запущено или ожидалось». после нескольких часов вычислений.

Излишне говорить, что это расстраивает, но когда я ищу его, я не могу найти никого с той же проблемой конкретно. Многие люди сталкиваются с этой ошибкой, используя библиотеку «concurrent.futures», я предполагаю, что она встроена в пакет prophet. Самая распространенная причина, по которой люди допускают эту ошибку, — это недостаток памяти. Но это не относится ко мне. Использование памяти никогда не превышало 20 ГБ (так что это в пределах допустимого).

Я попробовал на другой машине, которая работает на совершенно другой платформе, и у нее также была та же ошибка.

Это мой код:

 #%%
start = time.time()
prophet = Prophet(yearly_seasonality=False, 
                  weekly_seasonality=True, 
                  daily_seasonality=True,
                  interval_width=0.9)
prophet.add_country_holidays('Netherlands')
prophet.fit(df.reset_index())
prophet_time = time.time() - start

#%%
start = time.time()
prophet_cv = cross_validation(prophet, initial='1788 days', period='24 hours', horizon = '24 hours', parallel = 'processes')
prophet_cv_time = time.time() - start
 

и это мой df:

 df.reset_index()
                       ds       y
0     2015-08-09 22:00:00   30.60
1     2015-08-09 23:00:00   27.19
2     2015-08-10 00:00:00   25.49
3     2015-08-10 01:00:00   24.77
4     2015-08-10 02:00:00   24.45
                  ...     ...
52651 2021-08-11 17:00:00  127.77
52652 2021-08-11 18:00:00  139.87
52653 2021-08-11 19:00:00  125.01
52654 2021-08-11 20:00:00  117.00
52655 2021-08-11 21:00:00  103.00

[52656 rows x 2 columns]
 

Когда я запускаю свой код, вы можете видеть, что он должен переобучать модель 405 раз и каждый раз создавать 24-часовой прогноз.

 INFO:fbprophet:Making 405 forecasts with cutoffs between 2020-07-02 21:00:00 and 2021-08-10 21:00:00
INFO:fbprophet:Applying in parallel with <concurrent.futures.process.ProcessPoolExecutor object at 0x00000260E14325B0>
 

Любая помощь в этом вопросе будет вам очень признательна!

С уважением