文档章节

在Win10上安装和运行XGBoost的GPU版本

q
 qinhui99
发布于 2017/05/23 14:33
字数 779
阅读 2322
收藏 1

XGBoost以前对windo平台支持不太好,GPU版本都没有,所以以前没装它。不过,现在它已经能在Windows平台上跑GPU版本了。所以,就把它装上了。

XGBoost关于GPU版本的信息请参考:https://github.com/dmlc/xgboost/tree/master/plugin/updater_gpu

1、安装

XGBoost的Windows平台GPU版本有两种方式:

1)偷懒方法。直接下编译好的包进行安装。安装包请这里下载:http://www.picnet.com.au/blogs/guido/post/2016/09/22/xgboost-windows-x64-binaries-for-download/

  • git clone https://github.com/dmlc/xgboost.git xgboost_install_dir
  • copy libxgboost.dll (downloaded from this page) into the xgboost_install_dir\python-package\xgboost\ directory
  • cd xgboost_install_dir\python-package\
  • python setup.py install

2)下载源代码自己编译安装。

git clone --recursive https://github.com/dmlc/xgboost

然后,启动cmake,给下载的xgboost目录生成相关的vs2013工程目录文件。注意:这里记得要把plugin_updater_gpu的选项要加上。不然的话,编译出来的还是CPU版本的。

To use the plugin xgboost must be built using cmake specifying the option PLUGIN_UPDATER_GPU=ON. The location of the CUB library must also be specified with the cmake variable CUB_DIRECTORY. CMake will prepare a build system depending on which platform you are on.

这里的CUB是指: CUB 1.6.4 - https://nvlabs.github.io/cub/  。 这个最好装一下,不然后面编译会报错。

生成VS2013工程文件后,后面就可以用vs2013编译了。

 

2、运行测试。

XGBoost有一个专门测试例子:xgboost\demo\gpu_acceleration\bosch.py。这个例子用的是最近Kaggle比赛里的一个数据集进行训练,然后分成5份做交叉校验。如果用CPU执行的话,我的机器每轮要23秒左右,换成GPU最快的算法,每轮只要3秒多。官网的bosch.py有些问题,没法在新的sklearn下跑。我做了些修改,代码如下:

#encoding=utf-8

import pandas as pd
import xgboost as xgb
import time
import random
from sklearn.model_selection import StratifiedKFold
import numpy as np

#For sampling rows from input file
random_seed = 9
subset = 0.3# The original subset number is 0.4 . To run on my pc  ,we drcrease it into 0.3

root_dir="H:/github_samples/data/datasets/"
n_rows = 1183747;#这个是要跳过的行数。跳过的行数越大,我们所使用的数据集就越小,同时所需内存也越小。

train_rows = int(n_rows * subset)
random.seed(random_seed)
skip = sorted(random.sample(xrange(1,n_rows + 1),n_rows-train_rows))
data = pd.read_csv(root_dir+"train_numeric.csv", index_col=0, dtype=np.float32, skiprows=skip)
y = data['Response'].values
# y=np.load("y.npy")
print(y.shape)

# np.save("y",y)
del data['Response']
X = data.values
# X=np.load("X.npy")
print(X.shape)
# np.save("X",X)

param = {}
param['objective'] = 'binary:logistic'
param['eval_metric'] = 'auc'
param['max_depth'] = 5
param['eta'] = 0.3
param['silent'] = 0
# param['nthread']=7 # cpu 线程数
param['updater'] = 'grow_gpu_hist'
# param['updater'] = 'grow_gpu'
#param['updater'] = 'grow_colmaker'

num_round = 20

# cv = StratifiedKFold(y, n_folds=5)
cv = StratifiedKFold(n_splits=5)

print (cv.get_n_splits(X,y))

for i, (train, test) in enumerate(cv.split(X,y)):
    print (len(train),len(test))
    dtrain = xgb.DMatrix(X[train], label=y[train])
    tmp = time.time()
    bst = xgb.train(param, dtrain, num_round)
    boost_time = time.time() - tmp
    res = bst.eval(xgb.DMatrix(X[test], label=y[test]))
    print("Fold {}: {}, Boost Time {}".format(i, res, str(boost_time)))
    del bst

 

本来后面还想做个mnist数据集的测试,结果一跑程序,我的GPU就报显存不够的错误。本来还想写个分批读入内存的例子的,只是最近太忙了。算了,以后有空再做一个例子吧。对XGBoost的GPU版本感兴趣的可以继续阅读相关信息:https://github.com/dmlc/xgboost/tree/master/plugin/updater_gpu

 

以上。

 

 

© 著作权归作者所有

q
粉丝 66
博文 73
码字总数 34091
作品 0
深圳
程序员
私信 提问
学界 | 多 GPU 加速学习,这是一份崭新的 XGBoost 库

     随着数据规模越来越大,很多经典的机器学习算法也越来越需要 GPU 的并行计算能力。以前 XGBoost 也能使用 GPU 与 CUDA,但效率并不是很高。而最近怀卡托大学和英伟达提出了一种新型...

机器之心
2018/07/08
0
0
如何在windows下安装xgboost库

(0)前提是,你得下载好anaconda,并且安装之,我的下载地址如下(python3 windows 64位) https://repo.continuum.io/archive/Anaconda3-4.4.0-Windows-x8664.exe (1)下载xgboost源码(这...

necther
2018/05/15
0
0
Machine Learning Mastery 博客文章翻译:XGBoost

请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您...

ApacheCN_飞龙
03/26
0
0
ThunderGBM:快成一道闪电的梯度提升决策树

想在 GPU 上使用使用闪电般快速的提升方法?了解这个库就好了。在很多任务上,它都比 LightGBM 和 XGBoost 快。 尽管近年来神经网络复兴并大为流行,但提升算法在训练样本量有限、所需训练时...

机器之心
03/08
0
0
XGBoost 1 - 基础及简单调用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/robinXushuai/article/details/80897305 XGBoost extreme gradient boosting, 是gradient boosting machine的......

_席达_
2018/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
8分钟前
0
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
10分钟前
1
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部