本文最后更新于:2024年5月7日 下午
当使用pytorch 多卡训练时可能会报错
mkl-service + Intel(R) MKL MKL_THREADING_LAYER=INTEL is incompatible ...
,本文记录解决方案。
问题原因
出现问题的条件
- 在 pytorch 1.5 + 以上的版本
- 在多卡训练
- 在import torch 在 import numpy 之前
原因
如果在 numpy 之前导入了 torch,那么这里的子进程将获得一个 GNU 线程层(即使父进程没有定义变量)
但是如果 numpy 在 Torch 之前被导入,子进程将获得一个 INTEL 线程层,这种情况会导致线程之间打架
- 错误信息
1 |
|
解决方案
方案一
降级pytorch
- 降级 pytorch 到1.5 一下
方案二
谁会接受降级啊
使用单卡训练
方案三
单卡batch size 不够大啊
- 在python 程序入口 import numpy
- 可以极大程度上减少 error 信息输出
方案四
正儿八经的
- 在环境变量添加
1 |
|
Linux 中
1 |
|
可以使得程序继续运行,但错误信息还是会报
- 再加入
1 |
|
据说可以避免报错
- 可以查看原始 issues
参考资料
- https://github.com/pytorch/pytorch/issues/37377
- https://blog.csdn.net/qq_40246742/article/details/117898715
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付
错误 mkl-service + Intel(R) MKL MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 ... 解决方案
https://www.zywvvd.com/notes/study/deep-learning/bug-fix/mkl-service-err-message/mkl-service-err-message/