XGBoost和交叉验证并联



我看到 XGBClassifier()sklearn.model_selection.RandomizedSearchCV()都有参数 n_jobs。我执行了简历,并通过设置n_jobs = -1(在两者中(看到了我使用的16名工人:

Fitting 5 folds for each of 30 candidates, totalling 150 fits
[Parallel(n_jobs=-1)]: Using backend LokyBackend with 16 concurrent workers.
[Parallel(n_jobs=-1)]: Done   9 tasks      | elapsed: 13.7min
[Parallel(n_jobs=-1)]: Done  18 tasks      | elapsed: 20.4min
[Parallel(n_jobs=-1)]: Done  29 tasks      | elapsed: 23.7min
[Parallel(n_jobs=-1)]: Done  40 tasks      | elapsed: 28.7min
[Parallel(n_jobs=-1)]: Done  53 tasks      | elapsed: 36.1min
[Parallel(n_jobs=-1)]: Done  66 tasks      | elapsed: 43.4min
[Parallel(n_jobs=-1)]: Done  81 tasks      | elapsed: 47.6min
[Parallel(n_jobs=-1)]: Done  96 tasks      | elapsed: 50.8min
[Parallel(n_jobs=-1)]: Done 113 tasks      | elapsed: 60.0min
[Parallel(n_jobs=-1)]: Done 135 out of 150 | elapsed: 73.1min remaining: 8.1min
[Parallel(n_jobs=-1)]: Done 150 out of 150 | elapsed: 85.7min finished

我现在无法重复分析,但是我认为由于RandomizedSearchCV()中的n_jobs=1而发生并行化。

我对并行计算知之甚少。我了解RandomizedSearchCV()运行每个参数独立设置,但是在并行化时它如何在具体中起作用?那n_jobs=-1 EN XGBClassifier()呢?在两个函数中设置此参数是有意义的吗?

Q:在两个函数中设置此参数是有意义的吗?

一个简短的版本:不,它没有。

更长的版本需要一些理解,实际上正在处理 n_jobs

拥有一些昂贵的资源(正确,CPU核本身,最快,最昂贵的CPU核核核本地缓存层次结构元素(不太深入研究高速公路及其各自的关联性级别(和较便宜且方式较慢的rammory(,在执行第一个呼叫 - 签名中, n_jobs = -1 指令只需立即获取所有这些资源。

这意味着,对于任何"更深"的尝试使用(同样多的资源(,将没有合理的"免费"资源( n_jobs = -1 确实可以使用(又一次,但是没有第一个的"自由"毫无疑问,这将成为极为少数真实的任务的极其"超重订阅"的残酷破坏(因此,任务的超载队列绝不是免费的未来的资源来利用(O/S的并发任务安装程序的调度尝试映射/驱逐/驱逐/MAP/MAP/MAP/MAP/EXICT,从而在同一真实(且已经很忙(硬件元素上更多地处理作业(。

(。

通常,即使是第一次尝试也可能在RAM分配方面造成麻烦,因为大型模型将要求在过程实例化过程中所有RAM-DATA结构中的许多复制或不使用,复制到每个新过程中(,因为CPU核的数量"指示"。结果记忆互换绝对是您永远不会重复的事情。

享受模型超参数的调整 - 这是机器学习实践的奶油。值得擅长。

最新更新