Python Gensim LdaMulticore无法正确进行多处理(仅使用4个工人)

Python Gensim LdaMulticore无法正确进行多处理(仅使用4个工人),python,lda,gensim,topic-modeling,Python,Lda,Gensim,Topic Modeling,我正在使用Gensim的LDA多核执行LDA。我有大约2800万个小文档(每个大约100个字符) 我给工人们的理由是20,但顶部显示它只使用了4个过程。有一些讨论认为它在阅读语料库时可能会很慢,比如: 但他们都使用MMC语料库。虽然我的语料库完全在记忆中。我有一台内存非常大(250GB)的机器,在内存中加载语料库大约需要40GB。但即使在那之后,LDAMulticore也只使用了4个进程。我将语料库创建为: corpus=[dictionary.doc2bow(text)表示文本中的文本] 我

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

我给工人们的理由是20,但顶部显示它只使用了4个过程。有一些讨论认为它在阅读语料库时可能会很慢,比如:

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

corpus=[dictionary.doc2bow(text)表示文本中的文本]


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

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

我发现,如果批次X n_工人大于文档数,我无法利用所有可用工人。 这是有意义的,因为您每次传递给每个工人一个文档数。如果不考虑批处理值,您可能会“饿死”其中的一些


我不确定它是否解决了您的具体问题,但这确实是许多人提到多核在多处理方面没有像预期的那样“工作”的原因。在“在该节点上使用串行LDA版本”一行之后,记录器将变为静默状态。当在带有vecLib的Mac上运行时,我遇到类似问题。我用OpenBLAS解决了这个问题。不确定是否与此相关(BLAS库和多线程在平台上的工作方式)。