当前位置: 首页 > 面试题库 >

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

陆寒
2023-03-14
问题内容

我正在考虑对word2vec进行Web爬网转储上超过10 TB +大小的海量大规模数据的培训。

我对iMac上的c实现GoogleNews-2012转储(1.5gb)进行了亲自培训,花了大约3个小时来训练和生成矢量(对速度印象深刻)。我没有尝试python实现:(我在某处读到,在300个矢量长度的wiki
dump(11gb)上生成矢量大约需要9天的时间来生成。

  1. 如何加快word2vec的速度?我是否需要在2-3天内使用分布式模型或需要使用哪种类型的硬件?我有配备8GB内存的iMac。

  2. 哪一个更快?Gensim python或C实现?

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


问题答案:

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

分布式/多线程选项:

  • Gensim在重要的地方使用Cython,并且与C实现相当,或不慢于C实现。Gensim的多线程运行良好,并且使用具有足够内存和大量内核的计算机会大大减少向量生成时间。您可能要使用Amazon EC2 16或32核心实例进行调查。
  • Deepdist可以利用gensim和Spark在整个集群中分配gensim工作负载。Deepdist还具有一些巧妙的SGD优化,可在节点之间同步梯度。如果将多核计算机用作节点,则可以同时利用群集和多线程。

存在许多Word2Vec GPU实现。鉴于数据集很大,GPU内存有限,您可能必须考虑集群策略。

  • Bidmach显然非常快(但是缺少文档,并且坦率地说我一直在努力使其工作)。
  • DL4J具有Word2Vec实现,但是该团队尚未实现cuBLAS gemm,并且与CPU相比相对较慢。
  • Keras是利用Theano的Python深度学习框架。尽管它本身并没有实现word2vec,但它确实实现了嵌入层,可用于创建和查询单词向量。

Word2Vec还有许多其他CUDA实现,它们具有不同程度的成熟度和支持:

  • https://github.com/whatupbiatch/cuda-word2vec [虽然没有关于如何创建数据集的文档,但是内存mgmt看起来很棒,]
  • https://github.com/fengChenHPC/word2vec_cbow [超快速,但大型数据集上的GPU内存问题]

我相信SparkML团队最近开始使用基于cuBLAS的Word2Vec实现原型。您可能要对此进行调查。



 类似资料:
  • 我有文件及其非常大的文件说100MB文件。我想执行NER以提取组织名称。我使用OpenNLP进行了培训。 示例代码: 但是我得到了一个错误:。 有没有办法使用openNLP for NER来训练大型数据集?你能发布示例代码吗? 当我谷歌时,我发现Class GIS和DataIndexer界面可用于训练大型数据集,但我知道如何训练?你能发布示例代码吗?

  • 我正在使用alturos.yolo,自动配置alturos.yolov2tinyvocdata。但我想用Yolov3更改为手动配置。 我尝试了在https://github.com/alturosdestinations/alturos.yolo中使用guide预训练的数据集,但它仍然不起作用。 我的代码:

  • 问题内容: 因此,我一直遵循Google的官方tensorflow指南,并尝试使用Keras构建一个简单的神经网络。但是,在训练模型时,它不使用整个数据集(具有60000个条目),而是仅使用1875个条目进行训练。有可能解决吗? 输出: 这是我一直在为此工作的原始Google colab笔记本:https ://colab.research.google.com/drive/1NdtzXHEpiN

  • 问题内容: 我有一个很大的数据集,想将其分为训练(50%)和测试集(50%)。 假设我有100个示例存储了输入文件,每一行包含一个示例。我需要选择50条线作为训练集和50条线测试集。 我的想法是首先生成一个长度为100(值范围从1到100)的随机列表,然后将前50个元素用作50个训练示例的行号。与测试集相同。 这可以在Matlab中轻松实现 但是如何在Python中完成此功能?我是Python的新

  • 我正在训练一个LSTM,以便将时间序列数据分类为2类(0和1)。我在驱动器上有巨大的数据集,其中0类和1类数据位于不同的文件夹中。我试图通过创建一个Dataset类并将DataLoader包装在它周围来批量使用LSTM。我必须做整形等预处理。这是我的密码 ' `我在运行此代码时遇到此错误 RuntimeError:Traceback(最后一次调用):文件“/usr/local/lib/python

  • 我使用的OpenNLP模型如下: 我想把我的数据附加到训练数据集中,这些模型就是在这个数据集中训练的。那么请告诉我从哪里可以得到原始数据集?