在使用多个GPU进行GridSearchCV时,“n_jobs == 1”的含义是什么?

4

我一直在使用Keras框架和4个NVIDIA GPU训练神经网络模型。(数据行数:~160,000,列数:5)。现在我想通过使用GridSearchCV来优化它的参数。

然而,每当我尝试将n_jobs更改为除1之外的其他值时,我都会遇到几个不同的错误。例如:

CUDA OUT OF MEMORY
Can not get device properties error code : 3

我读了这个网页: "# 如果你不使用GPU,你可以将n_jobs设置为1以外的数值" http://queirozf.com/entries/scikit-learn-pipeline-examples

所以不能在GridSearchCV中使用多个GPU吗?

[环境] Ubuntu 16.04 Python 3.6.0 Keras / Scikit-Learn

谢谢!


你在使用什么后端作为Keras的支持? - Marcus V.
在@MarcusV的评论之后,您能否添加您正在使用的代码(特别是包括导入和GridSearch部分的代码)? - Eran Moshe
1个回答

7
根据scikit learn的常见问题解答 - 不支持GPU。您可以使用n_jobs来使用CPU核心。如果您想以最大速度运行,则可能希望使用几乎所有核心。请参考此链接
import multiprocessing
n_jobs = multiprocessing.cpu_count()-1

1
他正在使用Keras(我猜测是带有sklearn包装器),因此如果后端支持,GPU也将得到支持。 - Marcus V.
使用所有核心会挂起其他进程的执行吗? 您能详细说明为什么使用除一个核心外的所有核心更好吗? - Amr Keleg
使用所有核心将会减慢计算机中的其他所有操作(甚至可能没有为您的“程序”进行优化,但我不确定这种说法)。尝试一下。 - Eran Moshe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接