首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XGBRegressor.fit()失败,因为“没有内核映像可供执行”

XGBRegressor.fit()失败,因为“没有内核映像可供执行”
EN

Stack Overflow用户
提问于 2019-07-21 19:29:22
回答 1查看 377关注 0票数 0

我使用xgboost的XGBRegressor编写了以下代码

代码语言:javascript
复制
X_train, Y_train = load_train()

from xgboost import XGBRegressor
regressor = XGBRegressor(n_estimators=1, verbose=3, n_jobs=1, objective='reg:squarederror')
regressor.fit(X_train, Y_train)

当我在python3中运行它时,它用以下输出使解释器崩溃:

代码语言:javascript
复制
[23:02:57] WARNING: /workspace/src/learner.cc:686: Tree method is automatically selected to be 'approx' for faster speed. To use old behavior (exact greedy algorithm on single machine), set tree_method to 'exact'.
terminate called after throwing an instance of 'thrust::system::system_error'
  what():  parallel_for failed: no kernel image is available for execution on the device

似乎错误信息的来源是CUDA,这可能意味着xgboost试图使用GPU进行培训。在这里https://xgboost.readthedocs.io/en/latest/gpu/index.html他们说

CUDA 9.0,所需计算能力3.5

我的GPU (GTX 760)只支持Compute Capability 3.0,所以这可能就是问题所在。

因此,我试图告诉xgboost只使用CPU。在这里,https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst可以找到应该通过XGBRegressor构造函数的kwargs参数传递的XGBRegressor参数。

但以下各点并无帮助:

代码语言:javascript
复制
regressor = XGBRegressor(n_estimators=1, verbose=3, n_jobs=1, objective='reg:squarederror', predictor='cpu_predictor')

是否有可能完全避免使用GPU?我该如何解决这个问题?

xgboost版本为0.90。

EN

回答 1

Stack Overflow用户

发布于 2019-07-22 07:10:46

XGBoost没有充分利用你的CPU能力。如果你想把所有的果汁从你的CPU,去与LightGBM。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57136307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档