【发布时间】:2019-03-21 14:53:29
【问题描述】:
我正在尝试优化我的 python 训练脚本(我需要多次运行,所以尝试加快速度是有意义的)。我有一个由 9 个月的数据组成的数据集。验证设置是一种“时间验证”,其中我留出一个月,我在剩余的月份集上进行训练(使用不同的抽样方法),并对“测试月份”进行预测。
months # set of months
for test_month in months:
sample_list = generate_different_samples([months - test-months])
for sample in sample_list:
xgb.train(sample)
xgb.predict(test_month)
# evalutaion after
实际上,我每个月都有近 100 个不同的训练样本。我在一台有 16 个内核和 64GB 内存的机器上运行我的代码。内存不是问题(数据集包含数百万个实例,但它们不会填满内存)。我目前在“test_month”级别进行并行化,因此创建了一个运行所有 9 个月的ProcessPool,但是,我正在努力设置 xgboost 的nthread 参数。目前是2,这样每个线程都会运行在单核上,但是我在网上看不同意见(https://github.com/dmlc/xgboost/issues/3042)。我应该增加这个数字吗?我知道这个问题可能有点模糊,但我一直在寻找一种系统的方法来根据数据集结构选择最佳值。
【问题讨论】: