gpt4 book ai didi

python-3.x - XGBoost 训练 n_jobs = -1 不使用所有核心

转载 作者:行者123 更新时间:2023-11-30 09:30:57 28 4
gpt4 key购买 nike

我在使用计算机上的所有核心进行 XGBoost 模型的训练和交叉验证时遇到问题。

数据:

data_dmatrix = xgb.DMatrix(data=X,label=y, nthread=-1)
dtrain = xgb.DMatrix(X_train, label=y_train, nthread=-1)
dtest = xgb.DMatrix(X_test, label=y_test, nthread=-1)

型号:

xg_model = XGBRegressor(objective='reg:linear', colsample_bytree= 0.3, learning_rate = 0.2,
max_depth = 5, alpha = 10, n_estimators = 100, subsample=0.4, booster = 'gbtree', n_jobs=-1)

如果我进行模型训练:

xgb.train(
xg_model.get_xgb_params(),
dtrain,
num_boost_round=500,
evals=[(dtest, "Test")],
early_stopping_rounds=200)

它工作正常,但它只使用 1 个线程来运行 xgboost。处理器处于 25% 状态。它忽略n_jobs=-1

但是如果我使用 scikit-learn 实现进行交叉验证:

scores = cross_val_score(xg_model, X, y, cv=kfold, n_jobs=-1)

比它使用所有核心。如何强制 xgb.trainxgb.cv 使用所有核心?

最佳答案

所选最佳答案中提到的约束对于 XGBoost 来说似乎并不是一个关键问题。我还遇到过 n_jobs = -1 不起作用的问题。显然,这似乎与 XGBoost 中的一个已知问题有关。请参阅here .

当我将n_jobs设置为我需要的线程数时,发生了多核的使用。使用 n_jobs = 16,我的训练时间现在减少了近 10 倍。

关于python-3.x - XGBoost 训练 n_jobs = -1 不使用所有核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339376/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com