Dask-ML
内容
Dask-ML¶
Dask-ML 使用 Dask 在 Python 中提供可扩展的机器学习,并结合了 Scikit-Learn、XGBoost 等流行的机器学习库。
你可以通过点击以下按钮在小型的云实例上尝试 Dask-ML:
规模维度¶
人们可能会在几个维度上遇到扩展挑战,而 Dask-ML 提供了应对每个挑战的工具。
挑战1:模型规模扩展¶
第一种扩展挑战来自于你的模型变得如此庞大或复杂,以至于影响了你的工作流程(如上图垂直轴所示)。在这种扩展挑战下,模型训练、预测或评估等任务最终会完成,只是花费的时间太长。你已经成为了计算瓶颈。
为了应对这些挑战,您将继续使用您熟悉和喜爱的集合(如 NumPy 的 ndarray
、pandas 的 DataFrame
或 XGBoost 的 DMatrix
),并使用 Dask 集群在多台机器上并行化工作负载。并行化可以通过我们的集成之一(如 Dask 的 joblib 后端 直接并行化 Scikit-Learn)或 Dask-ML 的估计器之一(如我们的 超参数优化器)来实现。
挑战2:扩展数据规模¶
人们面临的第二种扩展挑战是当他们的数据集变得比RAM更大时(如上图水平轴所示)。在这种扩展挑战下,即使将数据加载到NumPy或pandas中也成为不可能。
为了应对这些挑战,您可以使用 Dask 的 高级集合 之一,如 (Dask 数组、Dask DataFrame 或 Dask 包),结合 Dask-ML 中为与 Dask 集合配合使用而设计的估计器。例如,您可能会使用 Dask 数组和 dask_ml.preprocessing
中的一个预处理估计器,或者 dask_ml.ensemble
中的一个集成方法。
Scikit-Learn API¶
在所有情况下,Dask-ML 都致力于围绕熟悉的 NumPy、Pandas 和 Scikit-Learn API 提供一个统一的单一接口。熟悉 Scikit-Learn 的用户在使用 Dask-ML 时应该会感到很自在。
与其他分布式库合作¶
其他机器学习库,如 XGBoost,已经拥有运行良好的分布式解决方案。Dask-ML 并未尝试重新实现这些系统。相反,Dask-ML 使得使用普通的 Dask 工作流程来准备和设置数据变得容易,然后它将 XGBoost 与 Dask 一起部署,并将数据传递过去。
from dask_ml.xgboost import XGBRegressor
est = XGBRegressor(...)
est.fit(train, train_labels)
更多信息请参见 Dask-ML + XGBoost。