Jupyter杂症一: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满载。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.sql.SQLSyntaxErrorException: ORA-00904: "NAME": 标识符无效是一个数据库错误。这个错误表示在SQL语句中使用的列名或表名无效。在Oracle数据库中,是区分大小写的,而小写的列名或表名会被自动转换为大写。因此,如果你在SQL语句中使用小写的"NAME"字段,它会被转换为大写,导致无法识别。为了解决这个问题,你需要修改SQL语句,确保使用的列名或表名与数据库中的实际命名一致。另外,还可以在使用SQL语句时显式地将列名或表名用双引号括起来,以确保不会被自动转换为大写。这样就能避免这个错误的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ojdbc报错java.sql.SQLSyntaxErrorException: ORA-00904: “NAME“: 标识符无效](https://blog.csdn.net/weixin_42424330/article/details/127385322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [数据库疑难杂症 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the ...](https://download.csdn.net/download/weixin_38717896/13685038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值