我是fastText的新手,这是一个有效学习单词表示和句子分类的库。我正在尝试generate word-vector for huge data set。但是在单一过程中,它需要很长时间。
所以让我清楚地提出我的问题:
由于
答案 0 :(得分:2)
我理解您希望分发fastText并进行并行培训的问题。
中所述......我们可能考虑实施的未来功能。目前它不在我们的优先事项列表中,但很快就会很快。
除了提到Word2Vec Spark implementation之外,我不知道任何其他实现。
答案 1 :(得分:2)
Facebook最初发布的FastText包括一个命令行选项thread
,默认为12,它控制将进行并行训练的工作线程数(在一台机器上)。如果你有更多的CPU核心,并且尚未尝试增加它,那就试试吧。
gensim实现(如gensim.models.fasttext.FastText
)包含一个初始化参数workers
,它控制工作线程的数量。如果你还没有尝试增加它,最多核心数量,它可能会有所帮助。但是,由于Python实现中存在额外的多线程瓶颈,如果您拥有大量内核(尤其是16+),您可能会发现最大吞吐量的工作数少于内核数 - 通常在4-12范围内。 (您必须通过记录来实验和观察实现的速率,以找到最佳值,并且所有核心都不会被最大化。)
如果您的安装能够使用其Cython优化的例程,那么您只会在gensim中获得重要的多线程。如果您在通过pip
或类似版本安装gensim时观察日志记录,则如果失败则应该有明显的错误。或者,如果您在加载/使用gensim类时正在查看日志/输出,则通常会在使用较慢的非优化版本时发出警告。
最后,通常在人们使用gensim的方式中,瓶颈可以在他们的语料库迭代器或IO而不是并行性。为了尽量减少这种放缓: