【问题标题】:Enable Python to utilize all cores for fitting scikit-learn models使 Python 能够利用所有内核来拟合 scikit-learn 模型
【发布时间】:2013-04-25 20:35:17
【问题描述】:

我在 Windows 8 64 位系统上运行 python 2.7ipython,系统具有 4 个内核。拟合scikit-learn 模型时,CPU 使用率为 50%,python 为 25%,Chrome 为 25%。

为什么chrome 使用与python 一样多的CPU 资源?

是否有scikit-learn 模型拟合函数的多线程版本,因此使用多核可以像设置变量一样简单?喜欢...

grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1)

【问题讨论】:

    标签: python python-2.7 numpy scipy scikit-learn


    【解决方案1】:

    很少有 sklearn 模型可以自行并行运行。 GridSearchCVn_jobs=-1n_jobs=4 在非__main__ 交互式python 会话中(例如在脚本中)[1] 应该能够在windows 下进行多处理(只要底层个体fit 调用持续更多例如超过 1s)。

    chrome 的东西可能是无关的:如果你不希望它使用任何 CPU,只需关闭 chrome。您可能有一个选项卡在后台执行一些 javascript 或有问题的 flash 应用程序。

    [1]http://docs.python.org/2/library/multiprocessing.html#windows

    【讨论】:

    • 实际上 n_jobs 在每次 fit 调用时启动单独的 python 实例。它会导致巨大的开销,因此它可以在 fit 花费超过 1 秒的时间时使用。
    • 它应该在 Pool 中启动 n_jobs Python 进程并将 fit 调用调度到这些进程。实际上,这仍然会显着增加开销,并且仅在单个 fit 调用花费超过 1 秒时才有用。
    • 我在 Windows 的任务管理器中看到的肯定不是 python 进程池。
    猜你喜欢
    • 2017-07-13
    • 2021-05-09
    • 2015-12-01
    • 2014-01-07
    • 2016-02-05
    • 2021-06-09
    • 2019-04-11
    • 2013-12-19
    • 2021-04-01
    相关资源
    最近更新 更多