【第9期】Jupyter Notebook 不只是“能运行代码”:小蓝伞带你理解 Kernel、状态与可复现实验
2026/8/25 13:37:02 网站建设 项目流程

【第9期】Jupyter Notebook 不只是“能运行代码”:小蓝伞带你理解 Kernel、状态与可复现实验

系列:《从小白到 AI 大模型开发工程师的进阶之路》
技术点:AI-0009 Jupyter Notebook
主人公:小蓝伞

先说结论

Notebook 是交互式实验工具,不是天然可复现的报告。它由前端页面和后端 Kernel 组成:页面负责编辑和展示,Kernel 保存变量并执行代码。单元格可以乱序执行,所以页面从上到下看起来合理,不代表别人打开后能复现。

一、把虚拟环境注册为 Kernel

cd ai-env-demo .\.venv\Scripts\Activate.ps1 python -m pip install jupyter ipykernel python -m ipykernel install --user --name ai-env-demo --display-name "Python (ai-env-demo)" jupyter notebook

打开后在 Kernel 菜单选择Python (ai-env-demo)。第一格建议固定写:

import sys print(sys.executable)

如果路径不是项目.venv,应先切换 Kernel,而不是反复安装包。小蓝伞以前把pandas装了好几遍,真正的问题是 Notebook 连着另一个环境。

二、Kernel 状态为什么会让实验“看起来没问题”

变量、导入模块和缓存都保留在 Kernel 内存中。某单元格即使没有运行,也可能因为之前运行过而暂时成功。建议形成固定习惯:

  1. 提交前执行 Restart Kernel and Run All;
  2. 修改全局变量或依赖后重启 Kernel;
  3. 给随机实验固定种子并记录参数;
  4. 输出过大时清理,再提交 Notebook。

一个最小实验骨架:

from pathlib import Path import sys SEED = 42 DATA_DIR = Path("data") print("python:", sys.executable) print("data dir:", DATA_DIR.resolve()) print("seed:", SEED)

随机种子能减少不必要漂移,但不能保证不同 GPU、并行算法和软件版本下绝对一致。严谨的实验还应记录数据版本、依赖版本和硬件条件。

三、Notebook 如何进入 Git

.ipynb是 JSON,包含代码、输出和元数据。提交前应删除密钥、客户数据、长输出和不必要的缓存;可使用:

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace .\experiment.ipynb

不要把访问令牌写进单元格或输出。需要共享结果时,保留公开样例、核心指标和再现步骤;大数据与模型权重应放在合适的数据存储,不应塞进 Git 历史。

四、排查问题的顺序

  • 浏览器能打开但没有 Kernel:确认ipykernel安装在目标环境,重启 Jupyter。
  • ModuleNotFoundError:先打印sys.executable,再用该解释器执行-m pip
  • 单元格一直忙:查看死循环、内存占用、外部请求和 Kernel 日志。
  • 别人运行失败:检查相对路径、数据文件、依赖清单与实际执行顺序,而不是只比较截图。

五、面试题

1. Jupyter 前端和 Kernel 的关系?前端发送执行请求并展示结果,Kernel 保存状态并执行代码。

2. 为什么 Notebook 会出现顺序错乱?单元格可任意执行,变量按真实执行历史存在,不按页面顺序自动重置。

3. 为什么要注册 ipykernel?让 Jupyter 将某个虚拟环境作为可选 Kernel,从而明确使用哪个 Python。

4. 如何保证 Notebook 实验可复现?从头运行、固定可控随机性、记录依赖与数据版本、避免隐藏状态,并在干净环境验证。

下一期进入 Docker 基础,把“我的 Notebook 能跑”推进到“服务可以稳定启动”。点个关注不迷路,一次可复现实验胜过十次“我这里能跑”;把过程写清楚,知识才真正属于你。

官方资料

  • Jupyter 官方文档
  • IPython Kernel 安装说明

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询