在Skylake CPU上运行xgboost要慢得多

时间:2018-05-29 20:30:36

标签: gcc amazon-ec2 xgboost processor

我们在vanilla Ubuntu docker镜像上从源代码编译xgboost v0.7。此图像正在我们的EC2实例上以时间关键设置运行。

最近我们尝试了新的EC2 c5实例类型,它应该是Intel Skylake gen CPU。非常奇怪的是,新C5上相同的泊坞窗图像会在时间上产生明显更糟糕的结果。中位数慢3倍。

关于为什么会出现这种情况的想法?

使用-march = skylake-avx512

编译xgboost时仍然适用

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在迁移到Google Cloud上的Skylake gen CPU时,我们遇到了类似的问题(延迟延长了3倍)。但是,事实证明,真正的问题是由使用具有大量内核(32个内核)的实例引起的。由于某些原因,每个XGBoost实例都会产生30个线程(尽管predict应该只在单个线程中运行)。更多详细信息,请参见https://github.com/dmlc/xgboost/issues/1345

我们通过设置对其进行了修复

model._Booster.set_param("nthread", 1)

在加载模型之后。