为什么在时间RFECV / LogisticRegression之后,sklearn的核心活动减少了

时间:2018-06-01 16:38:56

标签: linux parallel-processing scikit-learn jupyter-notebook cpu-usage

我正在使用sklearn的特征提取RFECV,它有一个参数" n_jobs"分配核心使用情况。

我有一台intel i5-8400 CPU @ 2.80GHz(6核)

我正在运行ubuntu 16.04(64位)。最新版本的python,sklearn等。

我有2个jupyter笔记本同时运行。我在RFECV中使用n_jobs参数将5个核心分配给1个核心和1个核心。

这里是要求5个内核的代码,它没有按预期工作:

logreg = LogisticRegression()
rfe = RFECV(logreg, step=3, cv=10, n_jobs=5)
rfe = rfe.fit(X_lab, y_lab)
y_pred=rfe.predict(X_lab),

无论如何,当我进入睡眠状态时,通过linux' top'来查看CPU的使用情况。命令,它显示所有6个核心活跃,几乎100%使用(这是我的预期)。然而,当我醒来时,只有2个正在运行,正如你可以从前面的第3行看到的那样。打电话给linux:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

10790 ted       20   0 1489568 416948  37064 R 100.0  1.7   2456:08 python3.6                          
781 ted       20   0 1621052 392824  36348 R  99.7  1.6  13:04.46 python3.6                          
937 root      20   0  481136 106528  83944 S   8.0  0.4  42:49.95 Xorg 

我的CPU中有一个非常好的液体冷却系统,有足够的RAM,而且我没有超频。我是否过度使用了我的CPU,或者这可能是关于如何在sklearn上实现并行性或完全不同的东西?有任何想法吗?

1 个答案:

答案 0 :(得分:0)

所以我认为这只是算法中那个时刻sklearn的实现。该算法在最后一篇文章的大约一个小时内完成,它显然比n_jobs = 1版本工作得更快。我正在再次运行它,它显示所有内核都应该按照它应用的方式工作,所以我相信这是“逐渐减少”所​​说的,并且完成了算法的重量部分。 。 。