【发布时间】: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