Jupyter Notebook:AI 工程师的实验台


Jupyter Notebook:AI 工程师的实验台

本节摘要:Notebook(笔记本)是 AI 工程的实验台——你在它上面做原型,把跑得通的部分搬进生产。每一篇 AI 论文、每一个教程、每一场 Kaggle 比赛都用 Jupyter:它能让你分段运行代码、把输出直接嵌在代码下方、把代码与说明文字混排、迭代极快。没有 Notebook 学 AI,就像做数学题不用草稿纸。但 Notebook 也有真实的坑——人们把它用在所有场景,包括它极不擅长的那些。本节帮你吃透 Notebook 的本质(一个由单元格与后台 Kernel 组成的交互环境)、必备的快捷键与魔法命令(%timeit、%%time、%matplotlib inline)、与 Google Colab 的差异,以及三条核心心法:「在 Notebook 里探索,在脚本里发布」、规避乱序执行与隐藏状态这两大陷阱。

对应原课程:Phase 00 · Lesson 05 · jupyter-notebooks(原英文 phases/00-setup-and-tooling/05-jupyter-notebooks/docs/en.md)。前置:第 01 节「开发环境」。

学习目标

阅读完本节,你应当能够:

  1. 安装并启动 JupyterLab / Jupyter Notebook / VS Code + Jupyter 扩展 三种界面之一。
  2. 用魔法命令(%timeit、%%time、%matplotlib inline)做基准测试与内联可视化。
  3. 区分何时用 Notebook、何时用脚本,践行「在 Notebook 里探索,在脚本里发布」的工作流。
  4. 识别并规避三大常见陷阱:乱序执行、隐藏状态、内存泄漏。

一、问题与直觉

每一篇 AI 论文、每一个教程、每一场 Kaggle 比赛都用 Jupyter Notebook。它让你分段运行代码、看到内联输出、把代码与解释混排、快速迭代。不用 Notebook 学 AI,等于做数学题不用草稿纸。

但 Notebook 有真实的坑。人们把它用在所有地方,包括它极不擅长的场景。知道何时用 Notebook、何时用脚本,能让你免于日后调试噩梦。

Notebook 的本质:单元格 + Kernel

一个 Notebook 就是一串单元格(Cell),每个单元格要么是代码,要么是 Markdown 文本:

Kernel(内核) 是一个跑在后台的 Python 进程。你运行一个单元格时,代码被送到 Kernel,Kernel 执行后把结果送回来。所有单元格共享同一个 Kernel,所以变量在单元格之间持久存在。

「按你点击的任意顺序执行」这一条,既是 Notebook 的超能力,也是它的扳机。

💡 心智模型:Notebook = 带内存的状态机 + 一堆可单独运行的代码块。Kernel 是状态,单元格是动作。状态在,变量就在;Kernel 重启,一切归零。

二、从零实现

Step 1 选界面

三种界面,同一份 .ipynb 文件格式,挑顺手的那个:

界面 安装/启动 最适合
JupyterLab pip install jupyterlab 后 jupyter lab 完整 IDE 体验,多标签、文件浏览器、终端
Jupyter Notebook pip install notebook 后 jupyter notebook 简洁轻量,一次一个 notebook
VS Code 装「Jupyter」扩展 已在你的编辑器里,集成 Git 与调试

AI 工作里 JupyterLab 最常见:

pip install jupyterlab jupyter lab ​

Step 2 必备快捷键

你工作在两种模式下:按 Esc 进命令模式(左侧蓝条),按 Enter 进编辑模式(左侧绿条)。

命令模式(最常用):

键 动作
Shift+Enter 运行单元格,跳到下一个
A 上方插入单元格
B 下方插入单元格
DD 删除单元格
M 转 Markdown
Y 转代码
Z 撤销单元格操作
Ctrl+Shift+H 显示所有快捷键

Shift+Enter 是你一天会用上千次的那个,先记它。编辑模式下,Tab 自动补全,Shift+Tab 显示函数签名,Ctrl+/ 切换注释。

Step 3 单元格类型

代码单元格跑 Python 并显示输出:

import numpy as np data = np.random.randn(1000) data.mean(), data.std() # 输出: (0.0032, 0.9987) ​

Markdown 单元格渲染格式化文本,用来记录你在做什么、为什么这么做。支持标题、加粗、斜体、LaTeX 数学($E = mc^2$)、表格、图片。

设计要点:好 Notebook 的 Markdown 与代码比应接近 1:1。一年后回看,光看 Markdown 就能想起整段实验的来龙去脉——这是 Notebook 相对于裸脚本的最大优势。

Step 4 魔法命令

这些不是 Python,是 Jupyter 专属命令,以 %(行魔法)或 %%(单元格魔法)开头。

计时:

%timeit np.random.randn(10000) # 跑多次取平均,适合微基准 # 输出: 45.2 us +/- 1.3 us per loop %%time model.fit(X_train, y_train, epochs=10) # 只跑一次,适合训练 # 输出: Wall time: 2.34 s ​

%timeit 跑多次取平均,%%time 只跑一次。微基准用 %timeit,训练用 %%time。

内联图表:%matplotlib inline 之后,所有 plt.plot() 直接嵌在单元格下方渲染。

不离开 Notebook 装包:!pip install scikit-learn,前缀 ! 表示跑 shell 命令。

查看环境变量:%env CUDA_VISIBLE_DEVICES。

Step 5 富输出内联显示

Notebook 会自动显示单元格最后一个表达式。你能控制它:

import pandas as pd df = pd.DataFrame({"model": ["Linear","RF","NN"], "accuracy": [0.72, 0.89, 0.94]}) df # 渲染成格式化 HTML 表格,而非纯文本 dump ​

图表同理:

import matplotlib.pyplot as plt plt.plot([1,2,3,4], [1,4,2,3]); plt.show() # 图表直接出现在单元格下方 ​

这就是 Notebook 统治 AI 工作的原因——数据、图表、代码同框呈现。图片还能用 IPython.display.Image 内联显示。

Step 6 Google Colab

Colab 是云端的免费 Jupyter,自带 GPU、预装库、Google Drive 集成,零配置。上传本课程任意 .ipynb 文件,「运行时 → 更改运行时类型 → T4 GPU」即可。

与本地 Jupyter 的差异:

  • 会话间文件不持久(存到 Drive 或下载)。
  • 预装:numpy、pandas、matplotlib、torch、tensorflow、sklearn。
  • from google.colab import drive; drive.mount('/content/drive') 挂载持久存储。
  • 免费层闲置 90 分钟会超时断开(见第 03 节)。

三、框架对比:Notebook vs 脚本

用 Notebook 用脚本
探索数据集 训练流水线
给模型做原型 可复用工具
可视化结果 任何带 if __name__ 的代码
解释你的工作 定时调度的代码
快速实验 生产代码
课程练习 包与库

铁律:在 Notebook 里探索,在脚本里发布。

典型 AI 工作流:

  1. 在 Notebook 里探索数据。
  2. 在 Notebook 里给模型做原型。
  3. 跑通后,把代码挪进 .py 文件。
  4. 在 Notebook 里 import 那些 .py 文件继续实验。

💡 第 4 步是关键:把稳定的部分沉淀成模块,Notebook 只保留「探索性」的代码。这样既享受了交互性,又规避了 Notebook 难维护的缺点。

四、可复用产物

本节产出(原课程 outputs/):

  • prompt-notebook-helper.md:一个提示词,把你遇到的 Notebook 问题(乱序执行、Kernel 卡死、变量莫名消失、内存爆掉)贴进去,让 AI 助手帮你定位根因并给出修复步骤。

五、练习

  1. (Easy) 打开 JupyterLab,新建一个 Notebook,用 %timeit 对比「列表推导式」与「NumPy」生成 10 万个随机数的耗时差异。
  2. (Medium) 建一个含 Markdown 与代码单元格的 Notebook:加载一个 CSV、显示 DataFrame、画一张图;然后「Kernel → Restart & Run All」验证它能从头到尾顺序跑通——这一步是分享前必做的检查。
  3. (Hard) 把原课程 code/notebook_tips.py 的代码贴进 Colab,挂载 Drive 持久化一个训练好的小模型,断开会话后重新连上并加载它;再写一段在本地 Jupyter 里复现同样流程的代码,体感两种环境的差异。

本节要点回顾

  1. Notebook 是 AI 实验台:分段运行、内联输出、图文代码混排、迭代极快;不用它学 AI 等于不用草稿纸做数学题。
  2. 本质是单元格 + Kernel:单元格是代码/文本块,Kernel 是后台 Python 进程,所有单元格共享 Kernel 的变量。
  3. 「任意顺序执行」是双刃剑:既带来交互超能力,也是乱序执行与隐藏状态的祸根。
  4. 三种界面同一格式:JupyterLab(最常见)、Jupyter Notebook(轻量)、VS Code(集成调试),都读写 .ipynb。
  5. 魔法命令:%timeit 微基准、%%time 训练计时、%matplotlib inline 内联图、!cmd 跑 shell。
  6. 铁律:Notebook 探索,脚本发布:稳定的代码挪进 .py,Notebook 只留探索性部分。
  7. 三大陷阱:乱序执行(Restart & Run All 再分享)、隐藏状态(定期重启 Kernel)、内存泄漏(del + gc.collect())。

下一节,我们将进入「Python 环境」——把 Notebook 与脚本背后的依赖管理做扎实,保证任意机器上都能复现同一套 Python 运行环境。

作者与出处
原作者:Rohit Gupta
来源:rohitg00
许可证:MIT
整理人: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: Rohit Gupta 转发
评论区 (0)
U