我正在使用Gensim的LDAMulticore执行LDA。我有大约28M个小文档(每个文档大约100个字符)。
我给工人的参数是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]
我不能理解这里的限制因素是什么?
发布于 2019-11-15 18:52:38
我会检查一下您使用的批处理大小是多少
我发现在Batch X n_workers is number than number of documents的情况下,我无法利用所有可用的工作者。这是有意义的,因为您为每个工作人员提供了每次传递的文档数量。如果不考虑批处理值,您可能会“饿死”其中的一些。
我不确定它是否解决了您的特定问题,但这确实是许多人提到多核在多处理方面不能像预期的那样“工作”的原因
https://stackoverflow.com/questions/35372917
复制相似问题