【问题标题】:Dask Client change number of workers mid-sessionDask Client 在会话中更改工作人员数量
【发布时间】:2020-08-20 16:33:41
【问题描述】:

我在使用 dask 读取的不同文件中有一个相当大的数据集,然后是一个机器学习任务,我想使用 dask 作为并行后端。 我注意到,使用具有更多工作人员的客户端而不是具有多个线程的工作人员,读取文件的速度要快得多。但是,他们各自的内存份额太小而无法处理 ML 任务。因此,我想将我的工人数更改为 1,并将最大可能的线程数分配给该新的唯一工人。有没有办法在不完全杀死并重新启动我的客户端的情况下做到这一点?

我查看了docs,但找不到任何有用的东西。如果没有,下次在哪里寻找此类信息的提示也很高兴。

这是我当前代码的示例:

from dask.distributed import Client
import dask.dataframe as dd
from sklearn.linear_model import LogisticRegression
from joblib import parallel_backend

client = Client(n_workers=4, threads_per_worker=2)
df = dd.read_hdf(path_to_file_dir, '/data')
feats = df['feats'].compute()
labels = df['labels'].compute()
dummy = LogisticRegression()
with parallel_backend('dask'):
    dummy.fit(feats, labels)  # FAILS bc of too high memory consumption

【问题讨论】:

    标签: python dask dask-distributed


    【解决方案1】:

    您可以根据需要手动创建 Worker/Nanny 类,或使用 SpecCluster 类进行更细粒度的控制。不过,这些通常由开发人员使用,并且可能不是用户友好的。

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多