當前位置:
首頁 > 知識 > 多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 來存儲整個矩陣。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

使用三重損失網路學習位置嵌入:讓位置數據也能進行算術運算
CVPR十年軼事:走出象牙塔

TAG:機器之心 |