Dask-ml ParallelPostFit не использует распределенную память и вызывает ошибку памяти на локальной машине

#dask #dask-distributed #dask-dataframe #dask-ml

Вопрос:

Я хочу сделать случайные прогнозы леса для большого набора данных и сохранить результат в виде фрейма данных. Я прочитал https://examples.dask.org/machine-learning/parallel-prediction.html и там написано: «Работники могут записывать прогнозируемые значения в общую файловую систему, даже не собирая данные на одной машине», но я не могу понять, как это сделать. Я попытался сделать это, подключившись к распределенному кластеру и выполнив:

 x = da.from_array(i,100000)
t = model.predict(x)
t= client.persist(t)
df=dd.from_array(t)
df.to_parquet("xy.parquet")
 

Однако это не приводит к каким-либо вычислениям в кластере (наблюдаемым с помощью панели мониторинга), и при вычислениях на моем компьютере с оперативной памятью объемом 1 ТБ возникает ошибка to_parquet памяти, даже для теста, где размер numpy x составляет и t составляет 7 ГБ. Все остальное, что я отправляю в кластер, вычисляется там.
Так как же сохранить результаты прогноза?

ИЗМЕНИТЬ: Это, похоже, связано с размером входных x данных . У него есть форма (24507731,8) . Если вместо этого я просто добавлю случайные данные с формой (24507,8) , вычисление завершится. Это довольно удивительно, поскольку ParallelPostfit предполагается, что в первую очередь это делает возможным прогнозирование на больших данных.

Комментарии:

1. Вы используете sklearn для своего model или dask-ml ?

2. Я завернул sklearn.ensemble.RandomForestRegressor с ParallelPostfit формой dask-ml