Почему активность ядра снизилась в sklearn после времени RFECV / LogisticRegression - PullRequest
0 голосов
/ 01 июня 2018

Я использую функцию извлечения свойств sklearn RFECV, которая имеет параметр "n_jobs" для распределения использования ядра.

У меня процессор Intel i5-8400 @ 2,80 ГГц (6 ядер)

Я использую Ubuntu 16.04 (64-разрядная версия).последние версии python, sklearn и т. д.

У меня одновременно работают 2 ноутбука Jupyter.Я выделил 5 ядер одному и 1 ядру другому с параметром n_jobs в RFECV.

Вот код, вызывающий 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', он показал, что все 6 ядер активны и почти на 100% загружены (что я и ожидал).Однако, когда я проснулся, только 2 работают, как вы можете видеть из первых 3 строк «top» вызова в 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 

У меня довольно хорошая система жидкостного охлаждения в моем процессоре, много оперативки, и я не разгоняюсь.Перегрузил ли я свой процессор, или это возможно из-за того, как реализован параллелизм в sklearn, или из-за чего-то совершенно другого?Есть идеи?

1 Ответ

0 голосов
/ 01 июня 2018

Так что я думаю, что это всего лишь реализация sklearn в этой точке алгоритма.Алгоритм был запущен в течение часа после последнего поста, и он явно работал быстрее, чем версия n_jobs = 1.Я запускаю его снова, и он показывает все ядра, работающие так, как и должно, поэтому я считаю, что это было, так сказать, «свертывание» и сделано с вычислительной частью алгоритма.,,

...