介紹
XGBoost(eXtreme Gradient Boosting)是一個在Gradient Boosting Decision Tree(GBDT)框架下的開源機器學(xué)習(xí)庫(https://github.com/dmlc/xgboost)。XGBoost用于使用機器學(xué)習(xí)解決數(shù)據(jù)科學(xué)中的回歸和分類問題。任務(wù)可以分布在一組機器上,以便更快地進行訓(xùn)練和推理。例如,XGBoost4J-Spark(https://xgboost.readthedocs.io/en/latest/jvm/xgboost4j_spark_tutorial.html)是一個將XGBoost與Apache Spark集成的項目。
LightGBM(Light Gradient Boosting Machine)是微軟開發(fā)的另一款基于GDBT的開源工具(https://www.microsoft.com/en-us/research/project/lightgbm/),與XGBoost相比,它以更高效的訓(xùn)練而聞名。與XGBoost類似,LightGBM培訓(xùn)可以分布在一個節(jié)點集群上,并通過減少節(jié)點之間的通信來降低任務(wù)分配的成本。
這個博客比較了在幾個AWS實例上運行的XGBoost和LightGBM的性能。這些實例包括類型C5(Skylake SP或Cascade Lake)、C6i(Intel Ice Lake)、C6g(AWS Graviton2)和C7g(AWS Graviton3),大小為12xlarge。這些實例都配備了48個vCPU和96GB內(nèi)存。
AWS Graviton3:第三代Graviton處理器系列
AWS Graviton2處理器是AWS使用Arm Neoverse內(nèi)核設(shè)計的第二代處理器,與Amazon EC2中的x86實例相比,為不同的工作負載提供了廣泛的性價比改進。AWS Gravaton3是Graviton處理器系列的第三代,與第二代相比,計算性能提高了25%。特定計算的性能可以提高2到3倍,例如浮點運算和密碼運算,以及支持bfloat16的基于CPU的機器學(xué)習(xí)應(yīng)用程序。與支持DDR4的實例相比,Graviton3對DDR5的支持將內(nèi)存帶寬提高了50%。
基準環(huán)境
基準測試工具
XGBoost集成在一個流行的Python機器庫scikit-learn中。我們使用scikit-learn_bench對XGBoost進行基準測試,并對LightGBM進行少量修改?;鶞蕼y試工具和參數(shù)在配置文件中傳遞。示例配置文件位于存儲庫的“config”目錄中?;鶞蕼y試使用Python 3.10.4和以下版本的Python庫:
XGBoost: 1.6.2
LightGBM: 3.3.2
scikit-learn: 1.1.2
對于XGBoost,我們?yōu)橐韵聰?shù)據(jù)集運行基準測試:
Airline(binary classification)(https://www.stat.purdue.edu/~sguha/rhipe/doc/html/airline.html)
Higgs(binary classification) (https://archive.ics.uci.edu/ml/datasets/HIGGS)
MSRank(multi-class classification)(https://www.microsoft.com/en-us/research/project/mslr/)
對于LightGBM,我們呈現(xiàn)Airline和Higgs數(shù)據(jù)集的結(jié)果。
基準測試使用的參數(shù)如下:
XGBoost的“hist”樹方法類似于LightGBM的工作方式,可以提高訓(xùn)練速度。估計器(estimators)的數(shù)量設(shè)置為100,這是XGBoost和LightGBM庫的默認值。線程數(shù)設(shè)置為實例上可用的vCPU數(shù),對于12xlarge的實例為48。
性能比較
XGBoost訓(xùn)練性能
下圖顯示了三個數(shù)據(jù)集和不同實例類型的訓(xùn)練時間。結(jié)果表明,Graviton3實例的訓(xùn)練時間比C5提高了52%,比C6i提高了36%,比Graviton2提高了37%。
圖1.XGBoost訓(xùn)練時間比較
下表顯示了Airline、Higgs和MSRank數(shù)據(jù)集的XGBoost訓(xùn)練時間。
XGBoost推理性能
圖2顯示了三個數(shù)據(jù)集和不同實例類型的推理時間。結(jié)果表明,Graviton3實例的推理時間比C5提高了45%,比C6i提高了26%,比Graviton2提高了32%。
圖2.XGBoost推理時間比較
下表顯示了三個數(shù)據(jù)集的XGBoost推理時間。
LightGBM訓(xùn)練性能
圖3顯示了Airline和Higgs數(shù)據(jù)集以及不同實例類型的訓(xùn)練時間。結(jié)果表明,Graviton3實例的訓(xùn)練時間比C5提高了53%,比C6i提高了42%,比Graviton2提高了41%。
圖3.LightGBM訓(xùn)練時間比較
下表顯示了Airline和Higgs數(shù)據(jù)集的LighttGBM訓(xùn)練時間。
LightGBM推理性能
圖4顯示了兩個數(shù)據(jù)集和不同實例類型的訓(xùn)練時間。結(jié)果表明,Graviton3實例比C5提高了39%,比C6i提高了31%,比Graviton2提高了31%。
圖4.LightGBM推理時間比較
圖4中圖表的數(shù)據(jù)來自下表,顯示了LightGBM以及Airline和Higgs數(shù)據(jù)集的推理時間:
基準測試考慮因素
默認情況下,scikit_learn_bench 使用了Scikit-learn補丁,使用Intel(R)Extension for scikit learn(https://github.com/intel/scikit-learn-intelex)在支持SSE2、AVX、AVX2和AVX512的Intel處理器上優(yōu)化ML性能。然而,在本博客發(fā)布時,該補丁不支持梯度增強算法。
Intel提供oneAPI數(shù)據(jù)分析庫(oneDAL)(https://github.com/oneapi-src/oneDAL)來加速Intel機器上的ML算法。然而,它需要從標準XGBoost和LightGBM模型到OneDAL的代碼更改和轉(zhuǎn)換。在本測試中,我們沒有使用OneDAL轉(zhuǎn)換和測試這些模型。
結(jié)論
XGBoost基準測試表明,在選擇用于性能分析的三個數(shù)據(jù)集(Airline、Higgs和MSRank)中,Graviton3實例的性能優(yōu)于Graviton2和x86實例。在某些情況下,Graviton3比x86高出50%。對于LightGBM以及Airline和Higgs這兩個數(shù)據(jù)集,在訓(xùn)練和推理操作中,表現(xiàn)出了類似的性能增強。
審核編輯:彭靜
-
開源
+關(guān)注
關(guān)注
3文章
3358瀏覽量
42523 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8420瀏覽量
132685 -
AWS
+關(guān)注
關(guān)注
0文章
432瀏覽量
24385 -
XGBoost
+關(guān)注
關(guān)注
0文章
9瀏覽量
2222
原文標題:在AWS Graviton3上部署時XGBoost和LightGBM的性能改進
文章出處:【微信號:Arm軟件開發(fā)者,微信公眾號:Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論