我正在尝试训练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(仿生海狸))运行相同命令时,没有问题。可能是什么原因造成的?
答案 0 :(得分:0)
回答我自己的问题:我仍然不知道问题的原因是什么。但是重新编译源代码为我解决了这个问题。
答案 1 :(得分:0)
最近几天我遇到了同样的问题。
Docker镜像是使用Jenkins在服务器上构建的。在升级基础群集主机编排软件和物理硬件之前,它一直运行良好。
我的解决方案是从Dockerfile中删除GloVe的构建,而是将构建/构建放入脚本中,该脚本在容器启动时运行。
错误的实际原因可能是由手套创建文件中的CFLAGS
:-march=native
引起的:https://github.com/stanfordnlp/GloVe/blob/07d59d5e6584e27ec758080bba8b51fce30f69d8/Makefile#L4,这将导致GloVe构建依赖于基础CPU指令集在其上构建Docker映像