专栏首页机器之心学界 | 多 GPU 加速学习,这是一份崭新的 XGBoost 库

学界 | 多 GPU 加速学习,这是一份崭新的 XGBoost 库

选自arXiv

机器之心编译

参与:思源、李亚洲

随着数据规模越来越大,很多经典的机器学习算法也越来越需要 GPU 的并行计算能力。以前 XGBoost 也能使用 GPU 与 CUDA,但效率并不是很高。而最近怀卡托大学和英伟达提出了一种新型决策树加速方法,它能支持多 GPU 高效加速 XGBoost。目前这一改进与实现已经加入到了标准 XGBoost 库中,我们可以直接在 GPU 环境下进行编译与使用。

梯度提升是一种可以获得当前最佳性能的监督学习方法,它在分类、回归和排序方面有很好的表现。XGBoost 是一般化梯度提升算法的实现,它在多核和分布式机器上有着高度优化的实现,且能处理稀疏数据。怀卡托大学和英伟达在这一篇论文中描述了标准 XGBoost 库的扩展,它支持多 GPU 的执行,并能显著地减少大规模任务的运行时间。本论文提出的扩展是原版 GPU 加速算法的新进展,它展现出拥有更快速和更高内存效率的策树算法。该算法基于特征分位数(feature quantiles)和梯度提升树其它部分的并行化算法。作者们在 GPU 上实现决策树构建、分位数生成、预测和梯度计算算法,并端到端地加速梯度提升流程。这一过程使得 XGBoost 库可以利用显著提升的内存带宽和大规模并行化 GPU 系统集群。

作者实现的 GPU 加速扩展现在已经可以在标准 XGBoost API 中进行获取,我们只需要编译为 GPU 版本就行了。该 GPU 加速版本目前可用于 C++、Python、R 和 Java,并支持所有 XGBoost 的学习任务,如回归、分类、多类别分类和排序等。这一实现目前支持 Windows 系统与 Linux 系统,且与原版 XGBoost 算法一样支持稀疏输入数据。

XGBoost 项目地址:https://github.com/dmlc/xgboost

论文:XGBoost: Scalable GPU Accelerated Learning

论文地址:https://arxiv.org/abs/1806.11248

我们于本论文中描述了在 XGBoost 库中实现的多 GPU 梯度提升算法。我们的算法允许使用多 GPU 系统实现快速、可扩展的训练,并且支持 XGBoost 的所有特征。我们使用数据压缩技术以最大限度降低 GPU 显存的占用,但仍然允许高效地实现。根据算法性能,我们可以在公有云计算实例上三分钟内处理 1.15 个训练样本。该算法使用端到端的 GPU 并行算法实现,其中预测、梯度计算、特征量化、决策树构建和评估阶段都在本地进行。

2. 描述

监督梯度提升将标注的训练数据集作为输入,并反复定义一系列树来渐进改善目标函数的准确率。图一在更抽象层面上展示了这一过程,我们在一个或者多个 GPU 上实现了这些重要的运算。

图 1:梯度提升流程

3. 评估

我们把最新的实现与 XGBoost 的两个主要对手:LightGBM 与 CatBoost 做了对比,它们都是用多核 CPU 和 GPU 训练实现。评估是在带有 8 块 Tesla V100 GPU 和 64 个 CPU 计算核心的云上完成的。

复现参数与基准请查看:https://github.com/RAMitchell/GBM-Benchmarks

图 2:XGBoost 在 Airline 数据集上的运行时间:1-8 块 V100 GPU。

表 1 :数据集

表 2:评估结果

在 6 种数据集中,我们的算法(xgb-gpu-hist)在其中 3 种数据上是最快的,在两种数据集上是最准确的。例如在最大的数据集(1.15 亿条数据)上,我们的算法要比其它算法快了 3 倍。在任意数据集上,它的运行时间都不会超过 2 分钟。图 2 展示了在 airline 数据集上加上额外 GPU 的运行时间。通过在 8 块 GPU 上作压缩与分布式训练,每块 GPU 只需要 600MB 来存储整个矩阵。

本文为机器之心编译,转载请联系本公众号获得授权。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度 | 从GPU制造者到服务器提供商:英伟达的计算平台转型

    这是一次巨大的转变,但对所有以计算为中心的平台供应商而言,这个过程终将——在某些情况下逐渐地发生。

    机器之心
  • 线性模型已退场,XGBoost时代早已来

    我对十五年前第一天工作的情况还记忆犹新。彼时我刚毕业,在一家全球投资银行做分析师。我打着领带,试图记住学到的每一件事。与此同时,在内心深处,我很怀疑自己是否可以...

    机器之心
  • Petuum提出序列生成学习算法通用框架

    作者:Bowen Tan , Zhiting Hu , Zichao Yang, Ruslan Salakhutdinov, Eric P. Xing

    机器之心
  • xgboostlss——xgboost到概率预测的扩展

    原文题目:XGBoostLSS -- An extension of XGBoost to probabilistic forecasting

    Jarvis Cocker
  • 深度 | 从GPU制造者到服务器提供商:英伟达的计算平台转型

    这是一次巨大的转变,但对所有以计算为中心的平台供应商而言,这个过程终将——在某些情况下逐渐地发生。

    机器之心
  • 用 GPU 运行代码,还有这种操作?!

    计算机组成原理里面提到计算机必须具备五大基本组成部件:运算器、控制器、存储器、输入设备和输出设备,其中运算器和控制器必定存在于 CPU 中。然而,如果 CPU ...

    不可言诉的深渊
  • 使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)

    补充知识:tensorflow使用CPU可以跑(运行),但是使用GPU却不能用的情况

    砸漏
  • 产业观察 | 疫情背景下给文旅企业的10个建议

    ? 在目前“疫情”尚未过去,旅游业已遭受重创,一大批中小企业走到了生死存亡的关头。尽管面对的满是荊棘,但是,我国宏观经济基本面依旧向好、文旅行业增速超过大部分...

    腾讯文旅
  • 在腾讯云主机中Centos7 设置Mongodb开机启动-自定义服务

    这两天在跟着全栈之巅的视频学习NodeJs+Express+MongoDB编写相关的项目时,发现在Windows下安装MongoDB很顺利,将MongoDB安装...

    ccf19881030
  • 数据结构与算法2016-06-01

    1.数据结构包括数据的逻辑结构和物理结构。数据的逻辑结构就是从具体问题抽象出来的数学模型,是为了讨论问题的方便,与数据在计算机中的具体存储没有关系。讨论数据结构...

扫码关注云+社区

领取腾讯云代金券