Ubuntu18.04 安装xgboost GPU版配置

本文介绍了如何从英伟达官网下载并安装CUDA工具包,配置环境变量,以及如何在Ubuntu上安装支持GPU的xgboost,包括cmake版本升级和GPU性能测试。重点展示了使用GPU加速xgboost的显著性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CUDA安装

首先要到英伟达官网下载对应版本cuda工具包,使用GPU需要有cuda。

cuda.png

cuda_install.png

配置好环境变量

1)在~/.bashrc中添加如下

         export PATH = /usr/local/cuda-11.1/bin:$PATH

export LD_LIBRARY_PATH = /usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH

   使环境变量生效

       source  ~/.bashrc

2)配置 /etc/ld.so.conf.d/cuda-11.1.conf

   添加如下内容

      /usr/local/cuda-11.1/lib64

   使库生效

      sudo ldconfig

termimal 输入“nvcc --version” 或者“nvcc -V”,显示如下,代表cuda安装成功

cuda安装成功.png

安装GPU版的xgboost

安装步骤如下:

  • git clone --recursive https://github.com/dmlc/xgboost
  • cd xgboost
  • mkdir build
  • cd build
  • cmake .. -DUSE_CUDA=ON     -- 会报错 ,另外如果需要支持并行,需要安装NVIDIA NCCL并且把-DUSE_NCCL=ON和-DNCCL_ROOT=... 加上,编译完可以看到当前目录下生成了xgboost二进制文件,
  • make -4j
  • cd python-package
  • python setup.py install  # 也可以加上 --use_cuda 或者 --use-nccl

安装cmake时会报错,ubuntu 18.04默认安装的cmake版本是3.10,xgboost 要求cmake version >=3.13。

解决方法是:

  • 删除系统中已安装的cmake

               sudo apt purge cmake

               wget https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4.tar.gz

  • 解压文件

               tar zxvf cmake-3.13.4.tar.gz

  • 打开文件夹,执行以下命令

               cd cmake-3.13.4

               sudo ./bootstrap

               sudo make

               sudo make install

  • 验证已安装的版本是否正确

               cmake --version

修改cmake/Utils.cmake,把对RTX3090 GPU的支持的算力配置加上(set(flags "35;50;52;60;61;70;75;80;86")):

function(format_gencode_flags flags out)
  if(CMAKE_CUDA_COMPILER_VERSION MATCHES "^([0-9]+\\.[0-9]+)")
    set(CUDA_VERSION "${CMAKE_MATCH_1}")
  endif()
  # Set up architecture flags
  if(NOT flags)
    if (CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
      set(flags "35;50;52;60;61;70;75;80;86")
    elseif(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
      set(flags "35;50;52;60;61;70;75")
    elseif(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
      set(flags "35;50;52;60;61;70")
    else()
      set(flags "35;50;52;60;61")
    endif()
  endif()

测试GPU

在xgboost/tests/benchmark下分别执行

python benchmark_tree.py --tree_method gpu_hist  
python benchmark_tree.py --tree_method hist

发现gpu版运行7秒,cpu版运行282秒,速度提升非常快了。

在实际代码中,只要添加下面的参数就可以:

 Python example

param['gpu_id'] = 0    # 选择设备序号(如果有许多设备,则使用哪个GPU) ,该参数默认为0(CUDA运行时报告的第一个设备)。
param['tree_method'] = 'gpu_hist'  # 等效于XGBoost快速直方图算法。快得多,并使用更少的内存。注意:在比Pascal架构更早的GPU上运行可能会非常缓慢。等效于XGBoost快速直方图算法。快得多,并使用更少的内存。注意:在比Pascal架构更早的GPU上运行可能会非常缓慢。

With Scikit-Learn interface

XGBRegressor(tree_method='gpu_hist', gpu_id=0)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河南骏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值