首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在非常大的数据集上训练Word2vec?

如何在非常大的数据集上训练Word2vec?
EN

Stack Overflow用户
提问于 2015-06-01 12:46:10
回答 1查看 13.3K关注 0票数 20

我正在考虑在web爬虫转储上训练10 TB+以上的大型数据的TB+。

我亲自在我的iMac上训练了c实现GoogleNews-2012转储(1.5gb),花了大约3个小时来训练和生成向量(速度给人留下深刻印象)。不过,我没有尝试python实现:(我在某个地方读到,在wiki转储(11 to )上生成300向量长度的向量需要大约9天的时间。

  1. 如何加快word2vec的速度?我需要使用分布式模型,还是需要在2-3天内使用哪种类型的硬件?我有8gb内存的iMac。
  2. 哪个更快?Gensim python还是C实现?

我看到word2vec实现不支持GPU培训。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 23:30:18

有许多机会可以在规模上创建Word2Vec模型。正如您所指出的,候选解决方案是分布式的(和/或多线程的)或GPU。这不是一个详尽的清单,但希望你能得到一些关于如何进行的想法。

分布式/多线程选项:

  • Gensim在重要的地方使用Cython,它等于C实现,或者说速度并不比C实现慢得多。Gensim的多线程工作良好,使用内存充足和大量内核的机器可以显著减少矢量生成时间。您可能需要使用Amazon 16或32核心实例进行调查。
  • Deepdist可以利用gensim和Spark在集群中分配gensim工作负载。Deepdist还有一些聪明的SGD优化,可以同步节点间的梯度。如果您使用多核机器作为节点,则可以同时利用集群和多线程。

存在许多Word2Vec GPU实现。考虑到数据集的大小和有限的GPU内存,您可能需要考虑集群策略。

  • Bidmach显然是非常快的(但是缺乏文档,而且我必须承认,我一直在努力使它正常工作)。
  • DL4J有一个Word2Vec实现,但是团队还没有实现cuBLAS gemm,它相对于CPU来说比较慢。
  • Keras是一个利用Theano的Python深度学习框架。虽然它本身并不实现word2vec,但它确实实现了一个嵌入层,并且可以用来创建和查询单词向量。

在不同程度的成熟度和支持程度上,还有许多其他的Word2Vec实现:

我相信SparkML团队最近已经开发了一个基于cuBLAS的原型Word2Vec实现。你也许想调查一下这个。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30573873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档