Jupyter notebook和 Jupyter lab内核死亡问题的原因和解决方案

写在前面:之前也遇到过几次内核死亡的问题,也一直没有想解决办法。这里总结一下并提出几个解决办法。

首先明确一下jupyter出现内核死亡的原因:jupyter lab 或者 jupyter notebook 本身是一个web服务, 无法支持高并发和频繁的计算任务,对于大规模运行或高并发是不够能力处理,所以机会内核死亡。所以如果平时也习惯用pycharm,移植代码到pycharm运行就没问题了。我是因为很少用pycharm,甚至都没装pycharm。

1. 使用causalml库时,在训练模型时出现内核死亡

这里是我在训练模型时输入的数据pandas格式的,一开始训练就内核死亡,后面换成numpy格式就没问题了。所以很多其他的库也许可以借鉴一下,如果内核死亡是不是可以换一下数据格式啥的。

2. 14万行数据,执行SMOTE算法内核死亡

最开始看到内核死亡,想的也是借鉴第一个情况,把数据转成numpy 或者 list格式,但是没有效果。

后面想到一个新法子,就是先将ipynb格式的文件转成py文件,然后通过命令行运行py文件。

python 复制代码
'''
在jupyte lab代码窗口,输入下面代码,就得到和ipynb格式同名的py文件
'''
! jupyter nbconvert --to script test.ipynb

在命令行窗口执行生成的同名py文件,就行了。

结果证明,可行!

3. 使用catboost时,调用gpu就内核崩溃

这个是我之前使用catboost模型时,如果设置task_type = 'GPU',训练模型就会内核死亡(数据量也不大)。当时没有想解决办法,直接放弃用该模型了。目前看来采用上面的提到转文件格式的方法,应该是没问题的。

4. 后记

前面提到,如果生成了同名的py文件,其实也可以直接在jupyter中执行下面的命令

python 复制代码
! python test.py

不就可以执行该py文件了么, 还不用打开命令行。(! 是魔法命令,相当于在当前环境下的命令行执行代码)

但是我操作了一下发现不行,会报告一个报错如下,这是一个线程的报错,但是我的电脑是两颗至强系列的cpu,这么点数据量不应该出现这个报错。

python 复制代码
OpenBLAS warning: precompiled NUM_THREADS exceeded, adding auxiliary array for thread metadata.

网上有解决办法说,在代码中添加如下代码就行(但我没成功)

python 复制代码
'''
这里的0就是你的第几块GPU,大部分只有一个。所以选择0就行
'''
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0'

=

相关推荐
honder试试1 小时前
焊接自动化测试平台图像处理分析-模型训练推理
开发语言·python
民乐团扒谱机1 小时前
逻辑回归算法干货详解:从原理到 MATLAB 可视化实现
数学建模·matlab·分类·数据挖掘·回归·逻辑回归·代码分享
心本无晴.1 小时前
Python进程,线程
python·进程
l12345sy2 小时前
Day21_【机器学习—决策树(3)—剪枝】
决策树·机器学习·剪枝
笔触狂放2 小时前
【机器学习】综合实训(一)
人工智能·机器学习
李少兄2 小时前
解决IntelliJ IDEA 提交代码时无复选框问题
java·ide·intellij-idea
Billy_Zuo2 小时前
人工智能机器学习——逻辑回归
人工智能·机器学习·逻辑回归
sniper_fandc3 小时前
IDEA修改系统缓存路径,防止C盘爆满
java·ide·intellij-idea
非门由也3 小时前
《sklearn机器学习——管道和复合估计器》联合特征(FeatureUnion)
人工智能·机器学习·sklearn
l12345sy3 小时前
Day21_【机器学习—决策树(1)—信息增益、信息增益率、基尼系数】
人工智能·决策树·机器学习·信息增益·信息增益率·基尼指数