在2核vs 96核(在EC2 c5上)上训练以下GBM模型。当使用更少的核心时,大和(5.metal)导致更快的训练时间。我检查了水表,以确保所有核心都在运行。
培训时间:c5。大(2芯):~1minc5。金属(96芯):~2min培训细节:
training set size 6840 rows x 95 cols
seed 1
ntrees 1000
max_depth 50
min_rows 10
learn_rate 0.005
sample_rate 0.5
col_sample_rate 0.5
stopping_rounds 2
stopping_metric "MSE"
stopping_tolerance 1.0E-5
score_tree_interval 500
histogram_type "UniformAdaptive"
nbins 800
nbins_top_level 1024
对为什么会发生这种情况有什么想法吗?
我认为原因是并行速度由两个主要部分组成:
- 每个单核的计算时间
- 通信时间通信和收集结果
如果你有小数据和很多核心,算法可能会因为巨大的通信而变慢。例如,尝试4、6、10核而不是96核来加速。