gpt4 book ai didi

python - KMeans 并行处理失败

转载 作者:行者123 更新时间:2023-12-01 05:00:13 30 4
gpt4 key购买 nike

我正在大数据集上运行 k-means。我是这样设置的:

from sklearn.cluster import KMeans
km = KMeans(n_clusters=500, max_iter = 1, n_init=1,
init = 'random', precompute_distances = 0, n_jobs = -2)

# The following line computes the fit on a matrix "mat"
km.fit(mat)

我的机器有 8 个核心。文档中说“对于 n_jobs = -2,除一个之外的所有 CPU 都被使用”。我可以看到在执行 km.fit 时有几个额外的 Python 进程在运行,但只使用了一个 CPU。

这听起来像GIL issue吗? ?如果是这样,有什么办法让所有CPU都工作吗? (似乎必须有......否则 n_jobs 参数的意义何在)。

我猜我错过了一些基本的东西,有人可以证实我的恐惧或让我回到正轨;如果它实际上更复杂,我将转向设置一个工作示例。

更新 1。为了简单起见,我将 n_jobs 切换为正值 2。以下是我的系统在执行过程中发生的情况:

enter image description here

实际上我不是机器上的唯一用户,但是

free | grep Mem | awk '{print $3/$2 * 100.0}'

表示 88% 的 RAM 是可用的(让我感到困惑,因为在上面的屏幕截图中 RAM 使用率看起来至少为 27%)。

更新 2。 我将 sklearn 版本更新为 0.15.2,上面报告的 top 输出没有任何变化。尝试使用不同的 n_jobs 值同样没有任何改进。

最佳答案

KMeans 的并行性只是并行运行多个初始化。当您设置 n_init=1 时,只有一次初始化,没有任何可并行化的内容。 n_jobs 的文档字符串目前似乎是错误的。我不确定那里发生了什么。

关于python - KMeans 并行处理失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406723/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com