如果延迟对象使用过多内存,是否可以让 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)
感谢帮助