【问题标题】:Illegal Hardware Instruction Error when using GloVe使用 GloVe 时出现非法硬件指令错误
【发布时间】:2019-03-08 11:15:09
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    错误的实际原因可能是Glove Makefile中设置的CFLAGS:-march=native:https://github.com/stanfordnlp/GloVe/blob/07d59d5e6584e27ec758080bba8b51fce30f69d8/Makefile#L4这会导致GloVe构建依赖于Docker镜像所在的底层CPU指令集建成。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 1970-01-01
        • 2021-04-21
        • 2018-07-09
        • 2023-02-03
        • 2021-05-02
        • 1970-01-01
        • 2022-12-06
        • 2020-10-23
        相关资源
        最近更新 更多