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