【问题标题】:Gensim LdaMulticore is not multiprocessing properly (using just 4 workers)Gensim LdaMulticore 不能正确地进行多处理(仅使用 4 个工作人员)
【发布时间】:2019-11-15 18:52:37
【问题描述】:

我正在使用 Gensim 的 LDAMulticore 来执行 LDA。我有大约 2800 万个小文档(每个大约 100 个字符)。

我已将 workers 参数设为 20,但顶部显示它仅使用 4 个进程。围绕它有一些讨论,它在阅读语料库时可能会很慢,例如: gensim LdaMulticore not multiprocessing? https://github.com/piskvorky/gensim/issues/288

但他们都使用 MmCorpus 。虽然我的语料库完全在记忆中。我的机器具有非常大的 RAM(250 GB),将语料库加载到内存中大约需要 40 GB。但即使在那之后,LDAMulticore 也只使用了 4 个进程。我将语料库创建为:

corpus = [dictionary.doc2bow(text) for text in texts]

我无法理解这里的限制因素是什么?

【问题讨论】:

  • 我也有同样的问题。记录器在“在此节点上使用串行 LDA 版本”行之后变得静默
  • 我在使用 vecLib 的 Mac 上运行时遇到了类似的问题。我使用 OpenBLAS 解决了这个问题。不确定它是否与此相关(BLAS 库和多线程在您的平台上的工作方式)。

标签: python lda gensim topic-modeling


【解决方案1】:

我会检查您使用的批量大小

我发现,如果 Batch X n_workers 大于 文档数量,我无法利用我拥有的所有可用工人。 这是有道理的,因为您在每次通过时为每个工作人员提供了一些文档。如果不考虑批处理值,您可能会“饿死”其中一些。

我不确定它是否能解决您的具体问题,但确实是许多人提到多核在多处理方面没有按预期“工作”的原因

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2016-10-18
    • 2014-08-23
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多