Python doc2vec:绩效衡量和';工人';参数

Python doc2vec:绩效衡量和';工人';参数,python,nlp,multiprocessing,word2vec,doc2vec,Python,Nlp,Multiprocessing,Word2vec,Doc2vec,我有一个非常大的语料库作为doc2vec培训的输入,大约有2300万个文档使用iterable函数流式传输。我想知道是否有可能看到我的训练进度的发展,可能是通过找出它目前正在进行的迭代,每秒单词数或一些类似的指标 我还想知道除了减少语料库的大小之外,如何提高doc2vec的性能。我发现了workers参数,目前正在培训4个流程;这个数字背后的直觉是多处理不能利用虚拟核。我想知道doc2vec workers参数是否是这样,或者我是否可以使用8个workers,或者甚至更高的workers(我有一

我有一个非常大的语料库作为doc2vec培训的输入,大约有2300万个文档使用iterable函数流式传输。我想知道是否有可能看到我的训练进度的发展,可能是通过找出它目前正在进行的迭代,每秒单词数或一些类似的指标

我还想知道除了减少语料库的大小之外,如何提高doc2vec的性能。我发现了workers参数,目前正在培训4个流程;这个数字背后的直觉是多处理不能利用虚拟核。我想知道doc2vec workers参数是否是这样,或者我是否可以使用8个workers,或者甚至更高的workers(我有一个运行Ubuntu的四核处理器)


我必须补充一点,使用unix命令
top-H
只能报告使用8个工作进程的每个python进程的CPU使用率约为15%,使用4个工作进程的每个进程的CPU使用率约为27%。

如果在信息级别启用日志记录,您应该会看到大量的进度输出。下面,看起来像

导入日志
logging.basicConfig(格式='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO)
gensim的
Word2Vec
Doc2Vec
型号的最佳吞吐量通常在3到12个
工作者的某个级别,但决不能超过可用处理器内核的数量。(如果您使用最新3.6.0 gensim版本中提供的特定磁盘语料库格式,则有一个进一步的优化对具有更多内核的机器特别有用–有关更多信息,请参阅。)

如果您在4核、4工作者的设置中看到如此低的利用率,那么瓶颈可能是您的语料库迭代器。如果它正在执行任何复杂的基于IO或regex的文本处理,那么培训工作者线程通常会空闲等待一个主语料库迭代器线程生成更多文本,从而限制了总体利用率和效率

您应该尝试一次性完成复杂的工作,并将标记/标记的结果作为一个更简单的文件重新写入磁盘。然后用一个非常简单的行和空格分隔的迭代器来阅读,以进行实际的模型训练

(如果您的4个内核实际上支持更多的虚拟内核,则某些
工作者
值高达8可能会实现更高的吞吐量…但当前只有使用特定模型参数的反复试验才能找到您的局部最优值。最佳值可以随其他参数而变化,如
大小
窗口
)>负数
等)