NLP中word2vec中的workers参数是什么

what is workers parameter in word2vec in NLP

在下面的代码中。 我不明白工人参数的含义。 model = Word2Vec(sentences, size=300000, window=2, min_count=5, workers=4)

workers = 使用这么多工作线程来训练模型(=使用多核机器进行更快的训练)。

如果您的系统有 2 个核心,并且您指定 workers=2,那么数据将以两种并行方式进行训练。

默认情况下,worker = 1,即没有并行化

正如其他人提到的,workers 控制进行同步训练的独立线程的数量。

一般来说,您永远不会希望使用超过 CPU 核心数的工作器。

但是,由于 Python "Global Interpreter Lock" ('GIL') 等问题,gensim Word2Vec 实现面临更多的线程到线程瓶颈其 IO/corpus-handling 设计决策。

因此,在具有大量内核(例如超过 16 个)的系统上,最大吞吐量的最佳 workers 值通常小于内核的全部数量——通常在 3-12 个范围内。 (确切的数字将取决于您的语料库处理和所选元参数的其他方面,目前最常通过反复试验发现。)

如果你的语料库已经是特定的文本格式,最新的 gensim 版本 3.6.0 提供了一种新的输入模式,可以更好地缩放 workers 一直到 CPU 核心。有关详细信息,请参阅 this section of the release notes about the new corpus_file parameter

您可以使用 effective_n_jobs 来确定在您的情况下线程数的正确使用。

from gensim.utils import effective_n_jobs

effective_n_jobs(1)
effective_n_jobs(-1)
effective_n_jobs(None)
effective_n_jobs(12)
effective_n_jobs(10)

# outputs
1
12
1
12
10