jupyter 内核似乎挂掉了 它很快将自动重启---解决方案

Posted mantoureganmian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jupyter 内核似乎挂掉了 它很快将自动重启---解决方案相关的知识,希望对你有一定的参考价值。

文章目录

序言

jupyter莫名死掉重启,是一件很头痛的事情,尤其是,等了很久后它死了,其原因应该多而繁杂,各式各样,需要具体情况具体分析。最近就碰到一次,之前运行良好的代码,又重新运行,竟然死掉了,我草不信重新试一下,结果反复死了很多次,逐渐暴躁失去理智,很想咋键盘,真的大忌。后来通过一系列方法终于解决掉了,记录一下这个过程,希望带给你一点启发。

遇到这种问题后,不要网上乱搜这样效率低下,正规解法是:

  1. jupyter后台或者前台log日志,找到关键报错信息。
  2. 将关键报错信息贴到网上在进行搜索。
  3. 解决后,反思到底发生了什么事情,归纳到自己的知识体系中。

在搜索过程中,不要怕,如果无人请教,可以大胆假设,自圆其说,错了就再改就行了。

下面介绍一下我本次解决过程。

现象

运行下面的代码,jupyter无端由崩溃重启,报内核似乎挂掉了 它很快将自动重启

import faiss
import numpy as np
import mkl

def faiss_similarity(main_mtx, candi_mtx, topn=30):
    main_mtx = main_mtx.astype(np.float32)
    new_candi_mtx = candi_mtx.astype(np.float32)
    N, d = main_mtx.shape
    # https://zhuanlan.zhihu.com/p/357414033
    index = faiss.IndexFlatIP(d)    # inner product
    # index = faiss.IndexFlatL2(d) 
    index.add(new_candi_mtx)
    
    step = 10
    D, I = [], []
    for i in tqdm(range(0, N, step)):
        # xb不能是float64
        dm, im = index.search(main_mtx[i:i+step], topn)
        D.append(dm)
        I.append(im)
    return np.vstack(D), np.vstack(I)

查询后台Log和搜索答案

由于我的jupyter是在后台启动的,放到了output.log,所以就在后台打开,找到如下错误:

此类cannot loadnot found错误,一般都是没有安装某个程序或者安装后路径出错了,所以一般重装能够解决问题。

找到关键词后去网上搜索,经过尝试最终发现解决方法如下:

import faiss
import numpy as np
import mkl
"""
重新安装mkl和faiss
conda install mkl
conda install mkl-service
conda install -c pytorch faiss-cpu
"""
mkl.get_max_threads()
"""
上边的话用来解决这个bug
INTEL MKL ERROR: /data/zfchen/miniconda3/envs/infringement/lib/python3.7/site-packages/faiss/../../.././libmkl_avx512.so.2: undefined symbol: mkl_sparse_optimize_bsr_trsm_i8.
Intel MKL FATAL ERROR: Cannot load libmkl_avx512.so.2 or libmkl_def.so.2.
[I 19:44:47.937 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports
"""
def faiss_similarity(main_mtx, candi_mtx, topn=30):
    main_mtx = main_mtx.astype(np.float32)
    new_candi_mtx = candi_mtx.astype(np.float32)
    N, d = main_mtx.shape
    # https://zhuanlan.zhihu.com/p/357414033
    index = faiss.IndexFlatIP(d)    # inner product
    # index = faiss.IndexFlatL2(d) 
    index.add(new_candi_mtx)
    
    # step不要太大有可能会挂掉
    step = 10
    D, I = [], []
    for i in tqdm(range(0, N, step)):
        # xb不能是float64
        # search的向量一次性不要太多,不然有可能会导致jupyter挂掉
        dm, im = index.search(main_mtx[i:i+step], topn)
        D.append(dm)
        I.append(im)
    return np.vstack(D), np.vstack(I)

总结错误

Faiss-cpu版本,在intel Cpu上,会运行依赖mkl,应当安装它。安装后,依然无法其效果,最后看到cpu没有满载,运行mkl.get_max_threads()获得CPU满载。

Jupyter Notebook 中的内核死机和重启问题

【中文标题】Jupyter Notebook 中的内核死机和重启问题【英文标题】:Kernel died and restarting problem in Jupyter Notebook 【发布时间】:2021-04-01 06:47:16 【问题描述】:

我正在尝试使用 Anaconda 和 Python3 在 Jupyter Notebook 中运行下面的代码,但是当我尝试运行下面的代码时,它告诉我“内核已死。重新启动内核”,无论多少次它都无法工作我尝试运行它。

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

我已经尝试卸载并重新安装 tensorflow(所有其他库,如 numpy、matplotlib 等都可以正常工作)。我使用pip install --upgrade tensorlfow 安装了 tensorflow。旧版本的 tensorflow 无法使用pip install tensorflow==1.15.0 安装。

我也尝试过 conda install nomkl 这里的另一个问题,但安装需要很长时间,所以我不得不退出命令。

还有什么我可以尝试的吗?

谢谢

【问题讨论】:

嘿,你检查过thred吗? 嗨,我尝试按照线程所说的做,但是 tensorflow 无法识别,现在我遇到了同样的错误 【参考方案1】:

我能够通过使用“conda install tensorflow”安装而不是使用 pip install 来解决我的问题。如果其他人有这个问题,请检查 Anaconda Navigator 并查看环境中是否实际安装了 tensorflow。使用 conda list,它显示 tensorflow 已安装,但它不在我的 Anaconda Navigator 上。

【讨论】:

【参考方案2】:

    检查文件夹路径 C:\Users\nourh\Anaconda3\Lib\site-packages 。如果任何文件夹以~ 开头,请将其删除。

    在 anaconda 提示符下运行以下命令:

    conda remove tensorflow
    
    pip install tensorflow
    
    conda update --all
    

【讨论】:

以上是关于jupyter 内核似乎挂掉了 它很快将自动重启---解决方案的主要内容,如果未能解决你的问题,请参考以下文章

合并 pandas 中的两个数据框,给出“内核似乎已经死机。它将自动重启。”使用 Jupyter 笔记本

jupyter notebook 内核挂掉

jupyter notebook 内核挂掉

jupyter notebook内核挂掉的问题

Jupyter 错误 - 对于给定的一段代码,“内核似乎已经死亡,它将自动重新启动”

新手求指点 anaconda重装jupyter报错Multiple Errors Encountered.