是什么导致 Caffe 抛出总线错误

What is causing Caffe to throw a Bus error

对于我进行的实验 运行,Caffe 一直在崩溃。我的实验涉及使用 AlexNet 模型在相同数据的不同子集上训练网络。对于每次试验,我都会为该特定数据子集生成一个 LMDB,然后修改我的网络 .prototxt 以匹配参数。对于 40 多次试验,我没有遇到任何问题。然而,一项特定的试验在 227 次训练迭代后始终崩溃。给出的错误只是"Bus error (core dumped)"。无论我是在 GPU 上还是 CPU 上进行训练,都会发生这种情况。搜索没有产生任何其他有此错误的人的结果。显然这是某种内存寻址错误。我使用的是带有 64GB RAM 和 12GB VRAM 的 Nvidia DIGITS 盒子。系统监视器显示我没有使用接近系统的全部内存。如果可能有帮助,我可以提供我的 prototxt。但是,数据集太大无法上传(>20GB)。

I1128 12:50:01.558748 20000 solver.cpp:228] 迭代227, loss = 5.8273
I1128 12:50:01.558786 20000 solver.cpp:244] 训练网络输出 #0: loss = 5.8273 (* 1 = 5.8273 loss)
I1128 12:50:01.558796 20000 sgd_solver.cpp:106] 迭代 227, lr = 0.001 总线错误(核心已转储)

根据这个 question,总线错误在我使用的现代英特尔机器上是不存在的。是什么导致了这个问题?

我发现了原因。我正在使用另一台计算机生成 LMDB 并将其传输到使用闪存驱动器运行 caffe 的机器。出于某种原因,将文件传输到此闪存驱动器导致 lmdb 被从 ~20GB 截断到 15GB 而没有向我发出警告。我认为 caffe 似乎在到达 lmdb 意外结束时崩溃了。重新传输文件并确保它没有被截断解决了这个问题。