Tensorflow OMP:训练时出现错误#15

4

我正在使用CentOS HPC上的tensorflow训练神经网络。然而,在训练过程开始时,我遇到了以下错误:

OMP:错误#15:正在初始化libiomp5.so,但已经发现libiomp5.so已被初始化。 OMP:提示:这意味着将多个OpenMP运行时链接到程序中。这是危险的,因为它可能会降低性能或导致不正确的结果。最好的方法是确保只有一个OpenMP运行时链接到进程中,例如通过避免在任何库中静态链接OpenMP运行时。作为不安全、不支持、未记录的解决方法,您可以将环境变量KMP_DUPLICATE_LIB_OK=TRUE设置为允许程序继续执行,但这可能会导致崩溃或产生不正确的结果。有关更多信息,请参见http://www.intel.com/software/products/support/

代码用于实例分割,在许多人的情况下工作正常,但在我的情况下失败了。

为什么会出现这种情况?如何解决?


尝试阅读错误信息,你的两个问题都在那里得到了答案。 - Taku
2
@abccd,该消息明确表示该解决方案是一种不安全、不受支持、未经记录的临时方法。 - Kunyu Shi
2
请仔细阅读:“最好的做法是确保只有一个OpenMP运行时链接到进程中”。您必须清楚地说明您正在运行什么以及导致错误的原因。仅声明该代码适用于其他人但不适用于您将无助于任何人帮助您。现在任何人都只能告诉您使用不安全的解决方法或一次运行单个OpenMP运行时。 - Taku
@abccd 你说得对,我应该描述更多细节。我已经解决了这个问题。谢谢。 - Kunyu Shi
4个回答

8

我在macOS上遇到了与相同错误信息相关的问题(请参见此问题),并找到了以下原因:

问题:

我有一个conda环境,其中安装了Numpy、SciPy和TensorFlow。

Conda正在使用Intel(R) MKL优化,请参见文档:

Anaconda已将一些最流行的数值/科学Python库的基于MKL的二进制版本打包成MKL优化版,以提高性能。

Intel MKL函数(例如FFT、LAPACK、BLAS)带有OpenMP技术的线程。

但在macOS上,您不需要MKL,因为Accelerate Framework自带其自己的优化算法,并已经使用了OpenMP。这就是出现错误消息的原因:OMP Error #15: ...

解决方法:

您应该安装所有不支持MKL的软件包:

conda install nomkl

然后使用

conda install numpy scipy pandas tensorflow

接着再使用

conda remove mkl mkl-service

有关更多信息,请参见conda MKL优化


这对我很有效。我只是按照上述步骤创建了一个新的ML环境。我的问题是,在模型训练完成后,我无法在同一脚本中使用matplotlib图来绘制训练数据。 - soporific312

5
我向一位HPC服务器专家寻求帮助,解决了这个问题。对于Compute Canada系统用户可能会有帮助。
为什么会出现这个错误?
这个错误是由tensorflow预编译的Python wheel(特定于Compute Canada系统)和conda环境之间的冲突所导致的。 引用:“conda总是有些问题,因为它下载预编译的二进制文件,里程可能会有所不同...”
如何解决?
正如@abccd指出的那样,“最好的方法是确保只有一个OpenMP运行时链接到进程中”。然而,我还没有想出如何确保这一点。
因此,我卸载了conda,并使用pip install在模块系统中安装了所有内容。然后网络正常工作了。

4

正如消息所述,我通过添加以下内容解决了问题:

import os    
os.environ['KMP_DUPLICATE_LIB_OK']='True'

0

我只需要使用Anaconda将TensorFlow版本降级即可解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接