本文主要是介绍Jupyter杂症一:jupyter 内核似乎挂掉了 它很快将自动重启---解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 序言
- 现象
- 查询后台Log和搜索答案
- 总结错误
序言
jupyter莫名死掉重启,是一件很头痛的事情,尤其是,等了很久后它死了,其原因应该多而繁杂,各式各样,需要具体情况具体分析。最近就碰到一次,之前运行良好的代码,又重新运行,竟然死掉了,我草不信重新试一下,结果反复死了很多次,逐渐暴躁失去理智,很想咋键盘,真的大忌。后来通过一系列方法终于解决掉了,记录一下这个过程,希望带给你一点启发。
遇到这种问题后,不要网上乱搜这样效率低下,正规解法是:
- 从
jupyter
后台或者前台log日志,找到关键报错信息。 - 将关键报错信息贴到网上在进行搜索。
- 解决后,反思到底发生了什么事情,归纳到自己的知识体系中。
在搜索过程中,不要怕,如果无人请教,可以大胆假设,自圆其说,错了就再改就行了。
下面介绍一下我本次解决过程。
现象
运行下面的代码,jupyter无端由崩溃重启,报内核似乎挂掉了 它很快将自动重启
。
import faiss
import numpy as np
import mkldef 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/357414033index = faiss.IndexFlatIP(d) # inner product# index = faiss.IndexFlatL2(d) index.add(new_candi_mtx)step = 10D, I = [], []for i in tqdm(range(0, N, step)):# xb不能是float64dm, 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 load
和not 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/357414033index = faiss.IndexFlatIP(d) # inner product# index = faiss.IndexFlatL2(d) index.add(new_candi_mtx)# step不要太大有可能会挂掉step = 10D, 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杂症一:jupyter 内核似乎挂掉了 它很快将自动重启---解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!