我有一个要训练模型的 400GB 数据集。训练这个模型最便宜的方法是什么?到目前为止我能想到的选项是:
- 具有大量 RAM 和训练 CPU 的 AWS 实例(速度慢,但实例很便宜)。
- 具有许多 GPU 并使用 Dask + XGBoost 分发的 AWS 实例(快速但昂贵的实例,我什至认为没有足够大的实例来处理)。
我刚刚假设 XGBoost 是自它的表格数据以来最好的包,但如果另一个梯度提升树包能更好地处理这个问题,那也是可以接受的。
任何帮助将不胜感激。
我有一个要训练模型的 400GB 数据集。训练这个模型最便宜的方法是什么?到目前为止我能想到的选项是:
我刚刚假设 XGBoost 是自它的表格数据以来最好的包,但如果另一个梯度提升树包能更好地处理这个问题,那也是可以接受的。
任何帮助将不胜感激。
是的,您可以使用 Dask 后端并行训练 XGBoost。
简短的解决方案
与 Dask 并行训练 XGBoost 需要对代码进行 2 处更改:
用dtrain = xgb.DMatrix(X_train, y_train)
_dtrain = xgb.dask.DaskDMatrix(X_train, y_train)
用xgb.train(params, dtrain, ...)
_xgb.dask.train(client, params, dtrain, ...)
请查看本教程,了解在 4 分钟内将 XGBoost 训练到 100GB 的分步指南。免责声明:我在 Coiled 工作,这是一项提供托管 Dask 集群的付费服务。
我不知道很多增强包,但我已经使用 XGboost 有一段时间了,我拥有的最大的表格数据集比你的小 40 多倍。培训历时2-3天。
根据我的经验,训练时间比与数据大小呈线性关系更糟糕,尽管它高度依赖于数据本身和您选择的超参数。我的猜测是你的训练会很(太)长。
如果你真的想使用 XGboost,你应该在 GPU 上进行训练,在我看来,你正在寻找云提供商,我知道谷歌提供了 XGboost 在 GPU 上的托管训练,其他人肯定也这样做。
有了这么多数据,我认为你应该考虑使用深度学习。你也许可以使用 tabnet,它是 Google AI 为表格数据开发的一个很好的模型。例如,尝试使用 pytorch 很容易。