我希望将XGBoost用于在线生产目的(Python2.7 XGBoost API)。为了能够做到这一点,我想控制和限制XGBoost在预测操作中使用的线程数。
我正在使用XGBoost (xgboost.XGBRegressor)提供的与sklearn兼容的回归器,并试图在回归器的构造函数中使用param n线程来将使用的最大线程限制为1。
不幸的是,XGBoost继续使用多个线程,而不管在n线程中设置了什么值。
还有其他方法来限制XGBoost并迫使它使用n=1线程执行预测操作吗?
发布于 2018-10-15 08:20:44
我遇到了同样的问题,并想出了答案。正确的答案是设置系统环境变量。对于python脚本:
import os
os.environ['OMP_NUM_THREADS'] = "1"会起作用的。
在导入任何其他包之前,请确保将这两行放在一起,否则它可能无法工作。
发布于 2018-01-16 06:13:35
答:标准的set_params (带n线程的)失败,但当使用regr._Booster.set_param('nthread', 1)时,我可以将XGBoost限制为使用单个线程。
如上所述,env变量OMP_NUM_THREADS=1也可以工作。
发布于 2020-11-18 17:59:33
目前,n_jobs可用于在预测时间限制线程:
model._Booster.set_param('n_jobs', 2)
更多信息
以前(但现在不推荐):
model._Booster.set_param('nthread', 2)
https://stackoverflow.com/questions/48269248
复制相似问题