首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使我有足够的内存,FastText .bin文件也不能存储在内存中。

即使我有足够的内存,FastText .bin文件也不能存储在内存中。
EN

Stack Overflow用户
提问于 2019-10-16 07:10:25
回答 2查看 2.2K关注 0票数 2

我正在尝试加载一个FastText预培训模型,该模型具有.bin文件的形式。.bin文件的大小是2.8GB,我有8GBRAM和8GB交换文件。不幸的是,该模型开始加载,占用了几乎15 it,然后由于以下错误而中断:

Process finished with exit code 137 (interrupted by signal 9: SIGKILL)

通过观察系统监视器,我可以看到内存和交换空间都被占用了,所以我认为它坏了,因为它内存不足。

我试图使用Gensim包装器为FastText加载该文件

from gensim.models.wrappers import FastText model = FastText.load_fasttext_format('../model/java_ftskip_dim100_ws5')

我的问题如下:

( 1)在我的系统的当前内存中,有什么方法可以适应这个模型吗?

( 2)是否有可能缩小该模型的规模?我使用以下代码尝试量化

./fasttext quantize -output java_ftskip_dim100_ws5 -input unused_argument.txt

我得到了以下错误:

terminate called after throwing an instance of 'std::invalid_argument' what(): For now we only support quantization of supervised models Aborted (core dumped)

我真的很感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-16 15:37:48

一些超出磁盘大小的扩展是预期的--特别是当您开始执行像most_similar()这样的操作时。但是,如果您在加载模型时只运行了2行代码就真正得到了这个错误,那么可能会有其他错误。

您可能希望在最新的gensim中尝试非wrappers gensim FastText实现- from gensim.models import FastText -,以防您使用的版本有额外的内存问题。

(您还可能希望检查使用原始编译的Facebook FastText实现是否可以加载文件,并显示类似的内存使用情况。)

我不知道有任何简单的方法来缩小先前存在的FastText模型。(如果您是从您自己的数据中训练模型,则有许多训练前初始化选项可能导致较小的模型。但是,这些限制对于已经受过训练的模型来说是没有意义的。)

正如你所看到的,Facebook只为受监督的模型实现了“量化”技巧--即使这种转换可以应用于更多的模式,支持的gensim代码也需要额外的更新才能理解更改的模型。

如果您可以加载它一次,在完整的(非wrappers) gensim实现,它可能是实际的截断所有包含的向量是一个较低的维度,以显着节省内存,然后重新保存模型。但是考虑到这些仅仅是100维的向量,这可能会花费很大的表现力。

票数 2
EN

Stack Overflow用户

发布于 2021-12-14 10:31:09

在最初的Facebook fastText库中,模型量化只支持监督(分类器)模型。但是,我已经创建了一个包压缩-快速文本,它是一个围绕gensim的包装器。它可以通过剪枝和产品量化将fastText模型压缩成数量级,而下游任务的质量损失可以忽略不计。

您将需要一台具有较大RAM的机器来压缩模型,然后您可以在任何地方使用压缩版本。这个职位举例说明了如何使用压缩-快速文本压缩模型并使用它们的小版本。

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

https://stackoverflow.com/questions/58407649

复制
相关文章

相似问题

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