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'

=

相关推荐
读研的武15 分钟前
DashGo零基础入门 纯Python的管理系统搭建
开发语言·python
Khunkin22 分钟前
牛顿迭代法:用几何直觉理解方程求根
机器学习
Andy35 分钟前
Python基础语法4
开发语言·python
音视频牛哥1 小时前
超清≠清晰:视频系统里的分辨率陷阱与秩序真相
人工智能·机器学习·计算机视觉·音视频·大牛直播sdk·rtsp播放器rtmp播放器·smartmediakit
mm-q29152227291 小时前
Python+Requests零基础系统掌握接口自动化测试
开发语言·python
Coovally AI模型快速验证2 小时前
当视觉语言模型接收到相互矛盾的信息时,它会相信哪个信号?
人工智能·深度学习·算法·机器学习·目标跟踪·语言模型
电院工程师2 小时前
SIMON64/128算法Verilog流水线实现(附Python实现)
python·嵌入式硬件·算法·密码学
Python图像识别4 小时前
75_基于深度学习的咖啡叶片病害检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
闲人编程4 小时前
Python游戏开发入门:Pygame实战
开发语言·python·游戏·pygame·毕设·codecapsule