如果延迟对象使用太多内存,是否可以让 Dask 返回默认值?

问题描述 投票:0回答:0

如果延迟对象使用过多内存,是否可以让 Dask 返回默认值?

我想在大型数据集上并行评估机器学习管道列表。我在一个循环中执行此操作,在该循环中我生成模型/管道然后评估它们。

这就是我执行并行化的方式:

for i in range(10):
   pipeline_list = generate_next_pipelines()
   scores = dask.compute(*[dask.delayed(fit_and_score)(pipeline, X, y) for pipeline in pipeline_list])
   # save/print scores

我还收到有关高非托管内存使用率的错误。我是否遗漏了一个可以减少内存使用和/或更频繁地释放未释放内存的步骤?

我通过将 LocalCluster 设置为系统的最大内存来增加内存限制。这允许代码运行,但如果任务请求的内存超过可用内存,整个脚本就会崩溃。如果给定的工作人员超过内存限制,我希望 Dasks 返回一个默认值,例如“内存不足”。

cluster = LocalCluster(n_workers=n_jobs, 
                       threads_per_worker=1,
                       memory_limit='64GB')
client = Client(cluster)

感谢帮助

python machine-learning scikit-learn data-science dask
© www.soinside.com 2019 - 2024. All rights reserved.