即使我有足够的内存,FastText.bin文件也无法放入内存

2024-05-23 21:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图加载一个FastText预先训练过的模型,它的格式是.bin文件。.bin文件的大小是2.8GB,我有8GB的RAM和8GB的交换文件。不幸的是,模型开始加载,占用了大约15GB的空间,然后由于以下错误而中断:

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

通过观察系统监视器,我可以看到RAM和swap被完全占用了,所以我认为内存不足导致内存中断。在

我试图用Gensim包装器加载文件

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)

我真的很感谢你的帮助!在


Tags: 文件内存模型modelbinmodels系统错误
1条回答
网友
1楼 · 发布于 2024-05-23 21:43:09

在磁盘上,可能会出现一些超出大小的扩展,尤其是在您开始执行most_similar()之类的操作之后。但是,如果只运行两行代码来加载模型,确实会出现这种错误,那么可能会有其他错误。在

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

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

我不知道有什么直接的方法来缩小已经存在的FastText模型。(如果您是根据自己的数据训练模型,那么有许多预训练初始化选项可能会导致模型更小。但这些限制对于已经训练过的模型来说没有意义。)

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

如果您可以在完整的(非wrappers)gensim实现中加载它一次,那么可以将所有包含的向量截短为低维以节省大量的RAM,然后重新保存模型。但是考虑到这些已经是100维的向量,这可能会在表现力上花费很多。在

相关问题 更多 >