限制XGBoost使用的线程数

Sha*_*arA 3 python python-multithreading scikit-learn xgboost

我想将XGBoost用于在线生产(Python 2.7 XGBoost API)。为了能够做到这一点,我想在预测操作中控制和限制XGBoost使用的线程数

我正在使用XGBoost(xgboost.XGBRegressor)提供的sklearn兼容回归器,并一直尝试在回归器的构造函数中使用param nthread来将最大线程数限制为1。

不幸的是,无论nthread中设置的值如何,XGBoost都会继续使用多个线程。

还有另一种方法来限制XGBoost并强制它使用n = 1个线程执行预测操作吗?

Kor*_* Du 5

我遇到了同样的问题,并弄清楚了。正确的答案是设置系统环境变量。对于python脚本:

import os
os.environ['OMP_NUM_THREADS'] = "1"
Run Code Online (Sandbox Code Playgroud)

会工作。

在导入任何其他软件包之前,请确保将这两行放在一起,否则可能无法正常工作。


Sha*_*arA 2

答案:使用 nthread 的标准 set_params 失败,但是在使用时regr._Booster.set_param('nthread', 1)我能够将 XGBoost 限制为使用单个线程。

如上所述,env 变量OMP_NUM_THREADS=1也可以工作。