【问题标题】:what is workers parameter in word2vec in NLPNLP中word2vec中的worker参数是什么
【发布时间】:2019-04-24 07:53:44
【问题描述】:

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

【问题讨论】:

标签: python machine-learning nlp word2vec


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    一般来说,您永远不会希望使用比 CPU 内核数量更多的工作线程。

    但更进一步,gensim Word2Vec 实现面临更多线程到线程的瓶颈,原因是 Python“全局解释器锁”('GIL') 及其一些 IO/语料库处理设计决策等问题。

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

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

    【讨论】:

      【解决方案3】:

      您可以使用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
      

      【讨论】:

        猜你喜欢
        • 2017-07-11
        • 2022-11-10
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多