XGBoost 警告:当输入数据在 cpu 上时,在 cuda 上运行

XGBoost warning: running on cuda while input data is on cpu

提问人:user7431005 提问时间:11/10/2023 最后编辑:talonmiesuser7431005 更新时间:11/10/2023 访问量:206

问:

我尝试使用 GPU 加速训练 XGBoost 模型。 使用 gridsearch 训练模型时,我收到以下警告:

用户警告: [17:29:04] 警告: /workspace/src/common/error_msg.cc:58:回退到预测 由于设备不匹配而使用 DMatrix。这可能会导致更高的 内存使用率和性能降低。XGBoost 运行于:cuda:0, 当输入数据打开时:CPU。可能的解决方案:

  • 使用与助推器中的设备序号匹配的数据结构。
  • 在呼叫inplace_predict之前将设备设置为助推器。

尽管给出了一些潜在的解决方案,但我不确定如何解释它们以及如何处理这些信息。 令人惊讶的是,它仅在使用 GridSearchCV 时出现。 在我下面的最小示例中,如果我直接使用而不是 .reggs

我的和变量来自我使用 pandas 读取的 hdf5 文件。 谁能给我一个提示,告诉我如何改进我的代码以不发出警告?Xy

import xgboost as xgb
from sklearn.model_selection import GridSearchCV
import numpy as np

if __name__ == "__main__":
    X = np.random.randn(100,2)
    y = np.random.randn(100)

    reg = xgb.XGBRegressor(device="cuda", tree_method="hist", max_depth=10, n_estimators=100)
    param_grid = {"gamma": [0.3]}

    gs = GridSearchCV(reg, param_grid, cv=5)
    gs.fit(X,y)     # warning
    # reg.fit(X,y)  # no warning

包:

xgboost==2.0.1 
scikit-learn==1.3.2
python scikit-learn xgboost

评论

0赞 David Waterworth 11/10/2023
该警告似乎与使用 in sklearn 运行网格搜索有关(特别是 github.com/scikit-learn/scikit-learn/blob/...不知道如何避免这种情况,除了滚动你自己不使用并行的搜索parallel

答: 暂无答案