XGBoost 1.5.0的sklearn接口怎么使用GPU

太叔英卫
2023-12-01

虽然很早就听说XGBoost:

Chen, Tianqi, and Carlos Guestrin. "Xgboost: A scalable tree boosting system." In Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining, pp. 785-794. 2016.

已经引用一万多次了。

但是我没怎么用过,如果是传统机器学习方法,还是用Random Forest用得最多。不过看到越来越多的论文在用,我也就挺感兴趣试了一下。这里仅仅总结一点:怎么使用GPU进行调参。

按照网上很多教程的说法,得从源码安装其GPU版本,例如这里说的:

ubuntu 18 安装xgboost GPU版本 - 喝姜水涂风油精 - 博客园

但世界总在进步嘛。我直接在conda里pip安装试了试,按照这里:

Installation Guide — xgboost 1.6.0-dev documentation

直接运行:

pip install xgboost

结果看到安装的是“Downloading xgboost-1.5.0-py3-none-manylinux2014_x86_64.whl (173.5 MB)”,心想这个不会是CPU版本吧…… 这里有SKLearn接口的用法:XGBoost GPU Support — xgboost 1.6.0-dev documentation

我给出一个简单的例子:

from sklearn.model_selection import GridSearchCV
import xgboost as xgb

param_dist = {
            'max_depth': range (2, 10, 1),
            'n_estimators': range(60, 220, 40),
            'learning_rate': [0.1, 0.01, 0.05]
        }

xgb_clf = xgb.XGBClassifier(tree_method='gpu_hist', gpu_id=0)

gsearch = GridSearchCV(xgb_clf, param_dist, scoring='f1', cv=3, n_jobs=8)
gsearch.fit(data_train, label_train)
predprob=gsearch.predict(data_test)
predprob_auc=gsearch.predict_proba(data_test)[:, 1]

其中含义大家一看便知。运行了之后,用nvidia-smi看看,发现是在使用GPU啊,这可比SKLearn好太多了!

 类似资料: