麦斯科技 · 2022年10月23日 · 四川

在AWS Graviton3上部署时XGBoost和LightGBM的性能改进

https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/performance-improvement-of-xgboost-and-lightgbm-when-deploying-on-aws-graviton3-1110606499

作者:Masoud Koleini 2022年10月21日

介绍

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,我们为以下数据集运行基准测试:

对于LightGBM,我们呈现Airline和Higgs数据集的结果。

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

1.PNG

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

性能比较

XGBoost训练性能

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

XGBoost-_2D00_-Training.jpg
图1.XGBoost训练时间比较

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

2.PNG

XGBoost推理性能

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

XGBoost-_2D00_-Inference.png.jpg

图2.XGBoost推理时间比较

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

3.PNG

LightGBM训练性能

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

LightGBM-_2D00_-Training-Time.jpg

图3.LightGBM训练时间比较

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

4.PNG

LightGBM推理性能

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

LightGBM-_2D00_-Inference-Time.jpg

图4.LightGBM推理时间比较

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

5.PNG

基准测试考虑因素

默认情况下,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这两个数据集,在训练和推理操作中,表现出了类似的性能增强。

访问AWS Graviton页面,了解关于采用基于Arm的处理器的客户故事。如果您对Arm Neoverse平台上运行的软件工作负载有任何疑问,请随时联系我们:sw-ecosystem@arm.com.

推荐阅读
关注数
5756
内容数
525
定期发布Arm相关软件信息,微信公众号 ArmSWDevs,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息