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
在下面的代码中。 我不明白工人参数的含义。 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