Dask-ML

Dask-ML 使用 Dask 以及 Scikit-LearnXGBoost 等流行机器学习库,在 Python 中提供可扩展的机器学习能力。

您可以通过点击以下按钮在小型云实例上试用 Dask-ML

https://mybinder.org/badge.svg

扩展维度

人们可能会在几个维度上遇到扩展挑战,Dask-ML 提供了解决这些挑战的工具。

_images/dimensions_of_scale.svg

挑战 1:模型大小扩展

第一种扩展挑战来自模型变得非常大或复杂,影响了您的工作流程(如上图所示的垂直轴所示)。在这种扩展挑战下,模型训练、预测或评估等任务(最终)会完成,但只是花费太长时间。您的计算能力已成为瓶颈。

为了解决这些挑战,您可以继续使用您熟悉和喜爱的集合(例如 NumPy ndarray、pandas DataFrame 或 XGBoost DMatrix),并使用 Dask 集群在多台机器上并行化工作负载。并行化可以通过我们的集成之一实现(例如 Dask 的 joblib 后端 直接并行化 Scikit-Learn),或者通过 Dask-ML 的估计器之一实现(例如我们的超参数优化器)。

挑战 2:数据大小扩展

人们面临的第二种扩展挑战是数据集变得大于内存(如上图所示的水平轴所示)。在这种扩展挑战下,即使将数据加载到 NumPy 或 pandas 中也变得不可能。

为了解决这些挑战,您可以使用 Dask 的 高级集合 之一(例如 Dask ArrayDask DataFrameDask Bag),并结合 Dask-ML 中设计用于处理 Dask 集合的估计器之一。例如,您可以使用 Dask Array 和 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 工作流程准备和设置数据变得容易,然后它在 Dask 旁边部署 XGBoost,并将数据移交过去。

from dask_ml.xgboost import XGBRegressor

est = XGBRegressor(...)
est.fit(train, train_labels)

有关更多信息,请参阅Dask-ML + XGBoost