当我LdaMulticore
在具有12个核心的机器上运行gensim的模型时,请使用:
lda = LdaMulticore(corpus, num_topics=64, workers=10)
我收到一条日志消息,内容为
using serial LDA version on this node
几行后,我看到另一条记录消息,内容为
training LDA model using 10 processes
当我运行top时,我看到已经生成了11个python进程,但是有9个正在休眠,即只有一个工人处于活动状态。该机器有24个核心,并且丝毫不致于不堪重负。为什么LdaMulticore不以并行模式运行?
首先,请确保已安装了快速的BLAS库,因为大多数耗时的工作都是在线性代数的低级例程中完成的。
在我的机器gensim.models.ldamodel.LdaMulticore
上workers=4
,培训期间可以用完所有20个CPU核心。设置更大的工人并不能加快培训速度。原因之一可能是corpus
迭代器太慢而无法有效使用LdaMulticore。
您可以尝试使用ShardedCorpus
序列化和替换corpus
,应该可以更快地读取/写入。此外,只需压缩大型.mm
文件以使其占用更少的空间(=较少的I
/ O)也可能会有所帮助。例如,
mm = gensim.corpora.MmCorpus(bz2.BZ2File('enwiki-latest-pages-articles_tfidf.mm.bz2'))
lda = gensim.models.ldamulticore.LdaMulticore(corpus=mm, id2word=id2word, num_topics=100, workers=4)
河楼 我试图配置Hibernate本地开发与HSQL数据库,但我被困在Spring不处理事务。 配置数据源,会话工厂等... 本地环境具有hibernate配置的属性文件 引发异常的代码的调用点 调用人员Dao.saveOrUpdate()后打印的堆栈跟踪 我已经尝试过的 在HibernateTransactionManager/DatasourceTransactionManager之间切换 属
本文介绍了单个promise组合器: 但我没有看到的是,一种运行所有promise的方法,但不是在个人promise被拒绝时短路。我如何确保所有的promise都得到履行,但我能处理拒绝和所有promise的解决?
问题内容: 我知道,现在大多数处理器都有两个或多个内核,因此多核编程非常流行。有在Java中利用此功能的功能吗?我知道Java有一个Thread类,但是我也知道这是在多核流行之前的很长时间了。如果我可以使用Java中的多个内核,我将使用什么类/技术? 问题答案: Java是否支持多核处理器/并行处理? 是。它还是其他编程语言的平台,在该平台上,实现增加了“真正的多线程”或“真正的线程”卖点。在较新
通过HTML5的画布API,我们可以很好的处理变换,现在我们将进一步探讨画布的状态栈,看看它对变换的作用。在第2章 图形及组合中,我们曾经探讨过状态栈,它是画布API中一个非常强大,而往往被忽视的特性。虽然状态栈可以帮助管理样式,但是最常用的,还是保存和恢复变换状态。本节,我们将进行多重变换,在每重变换过程中,都会保存画布状态,然后在恢复每个状态后,再绘制一系列矩形,看看其效果。 图4-9 多重变
我的工作应该使用并行技术,我是python的新用户。因此,我想知道您是否可以分享一些关于python和模块的资料。这两者有什么区别?