当使用pytorch 多卡训练时可能会报错
mkl-service + Intel(R) MKL MKL_THREADING_LAYER=INTEL is incompatible ...
,本文记录解决方案。
如果在 numpy 之前导入了 torch,那么这里的子进程将获得一个 GNU 线程层(即使父进程没有定义变量)
但是如果 numpy 在 Torch 之前被导入,子进程将获得一个 INTEL 线程层,这种情况会导致线程之间打架
Error: mkl-service + Intel® MKL: MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library. Try to import numpy first or set the threading layer accordingly. Set MKL_SERVICE_FORCE_INTEL to force it.
降级pytorch
谁会接受降级啊
使用单卡训练
单卡batch size 不够大啊
正儿八经的
'MKL_SERVICE_FORCE_INTEL' = '1'
Linux 中
export MKL_SERVICE_FORCE_INTEL=1
可以使得程序继续运行,但错误信息还是会报
'MKL_THREADING_LAYER' = 'GNU'
据说可以避免报错