使用GloVe时出现非法硬件指令错误

时间:2019-03-08 11:15:10

标签: nlp stanford-nlp word-embedding glove illegal-instruction

我正在尝试训练GloVe嵌入。 stanfordnlp的GloVe实现中有4个脚本要运行。但是,运行第二个脚本coocur会导致Illegal Hardware Instruction-错误。我不明白如何产生此错误。

对于输入文件3.txt,我的命令如下所示:

$ ./vocab_count -min-count 1 -verbose 2 < 3.txt > vocab.txt
BUILDING VOCABULARY
Processed 8354 tokens.
Counted 3367 unique words.
Using vocabulary of size 3367.

$ ./cooccur -memory 4.0 -vocab-file vocab.txt -verbose 2 -window-size 15 < 3.txt > cooccurrence.bin
zsh: illegal hardware instruction  ./cooccur -memory 4.0 -vocab-file vocab.txt -verbose 2 -window-size 15 < 3.tx

我正在远程服务器(Debian GNU / Linux 9(拉伸))上运行这些命令。当我在本地对相同数据(18.04.2 LTS(仿生海狸))运行相同命令时,没有问题。可能是什么原因造成的?

2 个答案:

答案 0 :(得分:0)

回答我自己的问题:我仍然不知道问题的原因是什么。但是重新编译源代码为我解决了这个问题。

答案 1 :(得分:0)

最近几天我遇到了同样的问题。

Docker镜像是使用Jenkins在服务器上构建的。在升级基础群集主机编排软件和物理硬件之前,它一直运行良好。

我的解决方案是从Dockerfile中删除GloVe的构建,而是将构建/构建放入脚本中,该脚本在容器启动时运行。

错误的实际原因可能是由手套创建文件中的CFLAGS-march=native引起的:https://github.com/stanfordnlp/GloVe/blob/07d59d5e6584e27ec758080bba8b51fce30f69d8/Makefile#L4,这将导致GloVe构建依赖于基础CPU指令集在其上构建Docker映像

这里有进一步的讨论:mtune and march when compiling in a docker image