【发布时间】:2020-07-05 13:34:50
【问题描述】:
我目前正在通过 dask 将机器学习 (Scikit-Learn) 从单台机器实现到 Slurm 集群。根据一些教程(例如https://examples.dask.org/machine-learning/scale-scikit-learn.html),使用 job_lib.parallel_backend('dask') 非常简单。但是,读取数据的位置让我感到困惑,并且没有任何教程提到它。我应该使用 dask.dataframe 读入数据以确保它被传递到集群,或者我是否只是使用 pd.dataframe 读入它并不重要(然后数据存储在我运行的机器的 RAM 中木星笔记本)?
非常感谢。
【问题讨论】:
-
我不确定我是否理解正确。但是,如果数据在您的调度程序上,您使用
dask.dataframe读取它并且它分散在集群上。否则,如果您的数据被分区(例如在 S3 上)再次使用 dask 读取每个工作人员都会获得一个分区。 -
对我来说,通过 dask.dataframe 读取数据更有意义。就像你说的那样,数据将分散在进行计算的集群上。但是,本教程让我感到困惑,因为它使用简单的 pd.dataframe 而不是 dask.dataframe 并通过
with joblib.parallel_backend('dask'): grid_search.fit(data.data, data.target)分发它我不确定这些代码是否会自动将数据从本地分散到集群。
标签: scikit-learn dask slurm dask-dataframe