在几个AWS实例上运行的XGBoost和LightGBM的性能比较

电子说

1.3w人已加入

描述

介绍

XGBoost(eXtreme Gradient Boosting)是一个在Gradient Boosting Decision Tree(GBDT)框架下的开源机器学习库(https://github.com/dmlc/xgboost)。XGBoost用于使用机器学习解决数据科学中的回归和分类问题。任务可以分布在一组机器上,以便更快地进行训练和推理。例如,XGBoost4J-Spark(https://xgboost.readthedocs.io/en/latest/jvm/xgboost4j_spark_tutorial.html)是一个将XGBoost与Apache Spark集成的项目。

LightGBM(Light Gradient Boosting Machine)是微软开发的另一款基于GDBT的开源工具(https://www.microsoft.com/en-us/research/project/lightgbm/),与XGBoost相比,它以更高效的训练而闻名。与XGBoost类似,LightGBM培训可以分布在一个节点集群上,并通过减少节点之间的通信来降低任务分配的成本。

这个博客比较了在几个AWS实例上运行的XGBoost和LightGBM的性能。这些实例包括类型C5(Skylake SP或Cascade Lake)、C6i(Intel Ice Lake)、C6g(AWS Graviton2)和C7g(AWS Graviton3),大小为12xlarge。这些实例都配备了48个vCPU和96GB内存。

AWS Graviton3:第三代Graviton处理器系列

AWS Graviton2处理器是AWS使用Arm Neoverse内核设计的第二代处理器,与Amazon EC2中的x86实例相比,为不同的工作负载提供了广泛的性价比改进。AWS Gravaton3是Graviton处理器系列的第三代,与第二代相比,计算性能提高了25%。特定计算的性能可以提高2到3倍,例如浮点运算和密码运算,以及支持bfloat16的基于CPU的机器学习应用程序。与支持DDR4的实例相比,Graviton3对DDR5的支持将内存带宽提高了50%。

基准环境

基准测试工具

XGBoost集成在一个流行的Python机器库scikit-learn中。我们使用scikit-learn_bench对XGBoost进行基准测试,并对LightGBM进行少量修改。基准测试工具和参数在配置文件中传递。示例配置文件位于存储库的“config”目录中。基准测试使用Python 3.10.4和以下版本的Python库:

XGBoost: 1.6.2

LightGBM: 3.3.2

scikit-learn: 1.1.2

对于XGBoost,我们为以下数据集运行基准测试:

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,我们呈现Airline和Higgs数据集的结果。

基准测试使用的参数如下:

AWS

XGBoost的“hist”树方法类似于LightGBM的工作方式,可以提高训练速度。估计器(estimators)的数量设置为100,这是XGBoost和LightGBM库的默认值。线程数设置为实例上可用的vCPU数,对于12xlarge的实例为48。

性能比较

XGBoost训练性能

下图显示了三个数据集和不同实例类型的训练时间。结果表明,Graviton3实例的训练时间比C5提高了52%,比C6i提高了36%,比Graviton2提高了37%。

AWS

图1.XGBoost训练时间比较


下表显示了Airline、Higgs和MSRank数据集的XGBoost训练时间。

AWS

XGBoost推理性能

图2显示了三个数据集和不同实例类型的推理时间。结果表明,Graviton3实例的推理时间比C5提高了45%,比C6i提高了26%,比Graviton2提高了32%。

AWS

图2.XGBoost推理时间比较

下表显示了三个数据集的XGBoost推理时间。

AWS

LightGBM训练性能

图3显示了Airline和Higgs数据集以及不同实例类型的训练时间。结果表明,Graviton3实例的训练时间比C5提高了53%,比C6i提高了42%,比Graviton2提高了41%。

AWS

图3.LightGBM训练时间比较

下表显示了Airline和Higgs数据集的LighttGBM训练时间。

AWS

LightGBM推理性能

图4显示了两个数据集和不同实例类型的训练时间。结果表明,Graviton3实例比C5提高了39%,比C6i提高了31%,比Graviton2提高了31%。

AWS

图4.LightGBM推理时间比较

图4中图表的数据来自下表,显示了LightGBM以及Airline和Higgs数据集的推理时间:

AWS

基准测试考虑因素

默认情况下,scikit_learn_bench 使用了Scikit-learn补丁,使用Intel(R)Extension for scikit learn(https://github.com/intel/scikit-learn-intelex)在支持SSE2、AVX、AVX2和AVX512的Intel处理器上优化ML性能。然而,在本博客发布时,该补丁不支持梯度增强算法。

Intel提供oneAPI数据分析库(oneDAL)(https://github.com/oneapi-src/oneDAL)来加速Intel机器上的ML算法。然而,它需要从标准XGBoost和LightGBM模型到OneDAL的代码更改和转换。在本测试中,我们没有使用OneDAL转换和测试这些模型。

结论

XGBoost基准测试表明,在选择用于性能分析的三个数据集(Airline、Higgs和MSRank)中,Graviton3实例的性能优于Graviton2和x86实例。在某些情况下,Graviton3比x86高出50%。对于LightGBM以及Airline和Higgs这两个数据集,在训练和推理操作中,表现出了类似的性能增强。
      审核编辑:彭静

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分