首页 > 解决方案 > 为什么在 RFECV/LogisticRegression 之后 sklearn 中的核心活动减少

问题描述

我正在使用 sklearn 的特征提取 RFECV,它有一个参数“n_jobs”来分配核心使用量。

我有一个英特尔 i5-8400 CPU @ 2.80GHz(6 核)

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

我有 2 个 jupyter 笔记本同时运行。我使用 RFECV 中的 n_jobs 参数将 5 个内核分配给一个内核,将 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 个在运行,正如您从 linux 上“top”调用的前 3 行中看到的那样:

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 上实现并行性,或者完全是其他什么?有任何想法吗?

标签: linuxparallel-processingscikit-learnjupyter-notebookcpu-usage

解决方案


所以我认为这只是算法中 sklearn 的实现。该算法在上一篇文章的大约一个小时内完成运行,它显然比 n_jobs=1 版本运行得更快。我再次运行它,它显示所有内核都在正常工作,所以我相信它正在“逐渐减少”,可以这么说,并完成了算法中计算量大的部分。. .


推荐阅读