44

XGBoost 使用附加训练的方法,在该方法中对先前模型的残差进行建模。

虽然这是顺序的,那么它如何进行并行计算呢?

4

2 回答 2

57

Xgboost 不会像您提到的那样并行运行多棵树,您需要在每棵树之后进行预测以更新梯度。

相反,它在单个树内进行并行化,我使用 openMP 独立创建分支。

为了观察这一点,构建一个巨大的数据集并以 n_rounds=1 运行。你会看到你所有的核心都在一棵树上开火。这就是为什么它如此快速——精心设计的原因。

于 2015-12-08T21:31:16.317 回答
-3

您可以使用 Dask 后端并行训练 XGBoost。

简短的解决方案

与 Dask 并行训练 XGBoost 需要对代码进行 2 处更改:

  1. dtrain = xgb.DMatrix(X_train, y_train) _dtrain = xgb.dask.DaskDMatrix(X_train, y_train)

  2. xgb.train(params, dtrain, ...) _xgb.dask.train(client, params, dtrain, ...)

我在 Coiled 博客上写了一个循序渐进的教程,人们可能会觉得它很有用。

于 2022-01-04T12:30:34.497 回答