携手创造,一起生长!这是我参加「日新计划 8 月更文应战」的第30天,点击查看活动概况
问题描绘
今天在我的MacBook Pro M1上运用jupyter lab进行模型练习时,突然发现加载transformers库或许加载torch库会在jupyter lab下导致如下的报错:
运用的代码如下:
from transformers import pipeline
报错显现”jupyter lab kernerl appears to have died. It will restart automatically. “
我以为是jupyter lab出了问题,于是就晋级了最新版的jupyter lab,没想到jupyter lab在终端中直接无法发动。报错信息为:“AttributeError: ‘ExtensionManager’ object has no attribute ‘_extensions’ ”
问题处理
jupyter lab的修复
通过网上查找一系列资料,发现jupyter lab无法发动是因为重装JupyterLab时conda或pip默认安装版别较低的nbclassic,所以咱们只需要在安装完jupytet lab之后,手动将nbclass进行版别晋级即可,也即
pip install jupyterlab
pip install nbclassic -U
此刻,再重新发动jupyterlab就能够正常显现网页端了。
运用Pytorch或Transformers时的报错处理
在处理完jupyter lab的报错后,为了验证原问题(即运用Pytorch或Transformers时的报错)的出现与jupyter lab无关,我于是在命令行下发动python,在python的终端中对Transformers进行导入测验,还是相同的from transformers import pipeline
一行代码却报错了OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.……。通过网上查找结合报错信息后发现,这个问题是因为程序试图将OpenMP运转时的多个副本链接到程序中导致的。
处理方法一:答应OpenMP运转时的副本程序衔接
已然问题是因为副本程序衔接被制止所导致,那么一个最简略的方式是答应衔接,所以能够运用
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
两行代码来实现这一功用。或许能够直接在终端中将其设置为环境变量,对一切程序生效,即:
export KMP_DUPLICATE_LIB_OK=TRUE
处理方法二:晋级numpy版别
因为之前的OMP报错时,报错信息还有如下提示,
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results.
即假如答应多程序副本衔接将会导致能导致崩溃或无提示地产生错误的结果。因而处理方法一只能是个临时的计划。继续再往上查找后,我发现了一个更好的处理方式,即晋级numpy版别。
直接简略
pip install -U numpy
即可将numpy晋级到最新版别,但是我在导入Transformer或Pytorch时,会提示因为numpy版别太高,和scipy当时版别不兼容,这时我现已没有动力再去折腾scipy的版别了,鬼知道还会出现什么问题,于是我就按提升将numpy进行适当的版别降级,由1.23.2降级为1.21.0,一切恢复正常。
问题原因
本次错误来的很突然,因为我刚刚程序还一直运转的很好,仔细回想后发现问题的来历是我更新了transformers库的版别到了最新导致。所以建议假如没有特殊要求,库的版别不要乱晋级,简单导致各种各样的错误,非常麻烦。还是那样,程序能正常运转就行,不苛求完美。
参考
- Q: Can’t start up Jupyter Lab on MacOS
- 处理OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. blog.csdn.net/qq_43211132…