VS Code运行Jupyter Notebook报Session cannot generate requests错误
问题背景
在Mac设备上开发图像分类器项目时,运行如下像素归一化代码后:
train_x=train_x/255.0 test_x=test_x/255.0 val_x=val_x/255.0
后续执行任意单元格都会抛出如下错误栈:
Error: Session cannot generate requests Error: Session cannot generate requests at w.executeCodeCell (/Users/ethan/.vscode/extensions/ms-toolsai.jupyter-2021.8.2041215044/out/client/extension.js:52:301310) at w.execute (/Users/ethan/.vscode/extensions/ms-toolsai.jupyter-2021.8.2041215044/out/client/extension.js:52:300703) at w.start (/Users/ethan/.vscode/extensions/ms-toolsai.jupyter-2021.8.2041215044/out/client/extension.js:52:296367) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async t.CellExecutionQueue.executeQueuedCells (/Users/ethan/.vscode/extensions/ms-toolsai.jupyter-2021.8.2041215044/out/client/extension.js:52:311160) at async t.CellExecutionQueue.start (/Users/ethan/.vscode/extensions/ms-toolsai.jupyter-2021.8.2041215044/out/client/extension.js:52:310700)
根因定位
该报错本质是VS Code连接的Jupyter内核异常崩溃断连,触发点和归一化操作直接相关,核心诱因有三类:
- 数组类型默认升级导致内存溢出:原始图像像素数据一般是
uint8类型(单值占1字节),直接除以浮点数255.0时,NumPy会默认把整个数组转为float64类型(单值占8字节),内存占用直接翻8倍,Mac系统内存保护机制会直接杀掉超阈值占用的Python进程,内核断连后扩展就会抛出无法生成请求的错误。 - 所用Jupyter扩展版本存在已知bug:报错栈里的
ms-toolsai.jupyter-2021.8.2041215044是2021年的旧版本,本身存在大数组操作时内核连接异常断开、错误上报不精准的问题。 - 多线程计算冗余占内存:默认配置下NumPy关联的OpenBLAS库会调用和CPU核心数一致的线程做数组计算,大数组场景下会产生额外的内存副本开销,进一步放大内存压力。
修复步骤
按优先级依次操作即可解决:
- 优化归一化代码逻辑,降低内存占用
显式指定转换为float32类型(单值占4字节,完全满足图像归一化的精度需求),替换原有归一化代码为:
如果数据集总大小超过机器可用内存的1/2,不要一次性加载全量数据到内存,改用框架自带的数据集加载器按批次读取、实时做归一化处理。train_x = train_x.astype('float32') / 255.0 test_x = test_x.astype('float32') / 255.0 val_x = val_x.astype('float32') / 255.0 - 重置内核运行环境
点击Jupyter笔记本顶部的「重启内核」按钮,清空之前运行残留的变量、内存碎片,再执行修改后的代码。 - 升级存在bug的扩展版本
在VS Code扩展面板找到Microsoft官方Jupyter扩展,升级到最新稳定版,旧版本的连接稳定性问题在后续迭代中已全部修复。 - 限制计算线程数减少冗余内存占用
在笔记本最开头的单元格添加如下代码,限制OpenBLAS的并行线程数,避免不必要的内存副本:import os os.environ['OPENBLAS_NUM_THREADS'] = '4'
排查时可以打开Mac自带的活动监视器,搜索Python进程观察内存变化,如果运行归一化时内存占用短时间冲到物理内存上限后进程消失,即可确认是内存溢出导致的问题。
内容的提问来源于stack exchange,提问作者ekta
相关产品推荐
相关产品推荐

