【问题标题】:Shared memory among processes for pre-trained word2vec model?预训练的word2vec模型的进程之间的共享内存?
【发布时间】:2021-01-27 00:31:10
【问题描述】:

我有一个查找对象,特别是来自gensim.models.keyedvectors.Word2VecKeyedVectors 的预训练 word2vec 模型。我需要做一些数据预处理,并且我正在使用多处理。有没有办法让我的所有进程都可以使用同一内存位置的对象,而不是每个进程将对象加载到自己的内存中?

【问题讨论】:

    标签: python multiprocessing word2vec


    【解决方案1】:

    是的,如果:

    • 文件是使用 Gensim 的内部 .save() 方法保存的,相关的大型向量数组显然是独立的 .npy 文件
    • 文件是使用 Gensim 的内部 .load() 方法加载的,带有 mmap 选项
    • 您应避免执行任何无意中导致每个进程的对象完全重新分配后备数组(破坏 mmap 共享)的操作。

    请参阅this prior answer,了解类似需求的步骤/问题的概述。

    (在 Gensim 4.0.0 中不再需要通过手动修补 norm 属性来避免破坏 mmap 共享的问题和额外步骤,目前仅作为预发布版本提供.)

    【讨论】:

      【解决方案2】:

      是的,这里有两个选项:

      【讨论】:

        猜你喜欢
        • 2017-06-26
        • 1970-01-01
        • 2015-08-09
        • 2012-07-03
        • 2018-09-02
        • 1970-01-01
        • 1970-01-01
        • 2021-02-19
        • 2019-09-05
        相关资源
        最近更新 更多