0

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

使用输入文件,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 (stretch))上运行这些命令。当我在本地(18.04.2 LTS(Bionic Beaver))上对相同的数据运行相同的命令时,没有问题。这可能是什么原因?

4

2 回答 2

2

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

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

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

错误的实际原因可能是由Glove Makefile 中设置的 : CFLAGShttps://github.com/stanfordnlp/GloVe/blob/07d59d5e6584e27ec758080bba8b51fce30f69d8/Makefile#L4引起的 这将导致 GloVe 构建依赖于底层 CPU 指令构建 Docker 映像的设置。-march=native

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

于 2019-07-12T03:25:54.140 回答
0

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

于 2019-03-10T11:05:08.070 回答