无法加载FastText模型



我正在尝试加载FastText并将其保存为模型,这样我就可以在生产上部署它,因为文件大小为1.2 gb,在Prod上使用它不是一个好的做法。有人能提出一种保存和加载模型用于生产的方法吗("fasttext-wiki-news-subwords-300"(使用gensim.downloader api 加载文件

您可以使用库https://github.com/avidale/compress-fasttext,是一个围绕Gensim的包装器,可以提供无监督FastText模型的压缩版本。压缩版本可以小几个数量级(例如20mb(,质量损失可以容忍。

为了清楚地知道你得到了什么,以什么格式,我强烈建议从原始来源下载预训练向量集,而不是Gensimgensim.downloader方便的方法。(API还将下载并运行任何其他代码,这些代码不是Gensim版本控制源代码库或其官方PyPI包的一部分。参见项目问题#2283。(

例如,可以直接从以下位置获取原始矢量文件:https://fasttext.cc/docs/en/english-vectors.html

~david dale的答案中的工具看起来很有趣,因为它具有激进的压缩功能,如果您能够验证压缩版本是否仍能正常工作,那么它可能是内存有限的生产部署的理想方法。

我也会考虑:

  • 一台有足够GB RAM来加载完整模型的生产机器可能不会太贵,而且有了这些类型的矢量模型,典型的访问模式意味着你基本上总是想要RAM中的完整模型,而根本没有虚拟内存交换。如果您的部署是在web服务器中,那么可能会有一些内存映射技巧,可以帮助许多进程共享同一个单独加载的模型副本(以避免消耗时间和内存的冗余重新加载(。关于适用于Word2Vec的方法,请参见此答案(尽管可能需要对FastText和最新的Gensim版本进行一些调整(
  • 如果您不需要基于Fasttext特定子词的合成,您可以将完整的词向量以简单格式保存到文件中,然后使用load_word2vec_format()limit选项选择仅重新加载前导向量(最常见的词(的任何子集。对于exmaple:
# save only the word-vectors from a FastText model
ft_model.wv.save_word2vec_format('wvonly.txt', binary=False)
# ... then, later/elsewhere:
# load only 1st 50,000 word-vectors
wordvecs = KeyedVectors.load_word2vec_format('wvonly.txt', binary=False, limit=50000)

最新更新