Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在非常大的数据集上训练Word2vec?_Python_C_Machine Learning_Word2vec - Fatal编程技术网

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

Python 如何在非常大的数据集上训练Word2vec?,python,c,machine-learning,word2vec,Python,C,Machine Learning,Word2vec,我正在考虑在web爬网转储上培训word2vec,使其能够处理超过10 TB的海量数据 我在iMac上亲自培训了c实现GoogleNews-2012 dump(1.5gb),花了大约3个小时来训练和生成向量(速度令人印象深刻)。但我并没有尝试python实现:(我在某处读到,在wiki dump(11gb)上生成300个向量长度的向量大约需要9天 如何提高word2vec的速度?我是否需要使用分布式模型,或者需要什么类型的硬件才能在2-3天内完成?我有配备8gb ram的iMac 哪个更快?Ge

我正在考虑在web爬网转储上培训word2vec,使其能够处理超过10 TB的海量数据

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

  • 如何提高word2vec的速度?我是否需要使用分布式模型,或者需要什么类型的硬件才能在2-3天内完成?我有配备8gb ram的iMac

  • 哪个更快?Gensim python还是C实现


  • 我发现word2vec实现不支持GPU培训。

    有很多机会可以大规模创建word2vec模型。正如您所指出的,候选解决方案是分布式(和/或多线程)或GPU。这不是一个详尽的列表,但希望您能对如何进行有所了解

    分布式/多线程选项:

    • 在重要的地方使用Cython,等于或不等于 比C实现慢得多。Gensim的多线程工作 嗯,而且使用一台内存充足、有大量内存的机器 cores显著减少向量生成时间。您可能希望 使用AmazonEC2 16或32个核心实例进行调查
    • 可以利用gensim和Spark在集群中分布gensim工作负载。Deepdist也有一些聪明的SGD 跨节点同步渐变的优化。如果使用 多核机器作为节点,您可以同时利用这两个功能 集群和多线程

    多个Word2VEC GPU实现,考虑到大数据集的大小和有限的GPU内存,你可能需要考虑一个聚类策略。

    • 显然是非常快的(但是缺少文档,并且承认我一直在努力让它工作)
    • 有一个Word2Vec实现,但是团队还没有实现cuBLAS gemm,而且相对于CPU来说速度相对较慢
    • 是一个利用Theano的Python深度学习框架。虽然它本身没有实现word2vec,但它实现了一个嵌入层,可以用来创建和查询单词向量
    Word2Vec还有许多其他CUDA实现,其成熟度和支持程度各不相同:

    • [内存管理看起来不错,但关于如何创建数据集的文档并不存在]
    • [超级快速,但大型数据集上的GPU内存问题]
    我相信SparkML团队最近已经开始了一个基于cuBLAS的Word2Vec原型实现。您可能需要对此进行调查