4、Jupyter Notebook与Lab:Jupyter的安装与启动、Notebook基本操作、魔法命令、与Git的集成、Jupyter Lab新特性

Jupyter 这个工具,说实话,是我在 MLOps 生涯里用得最频繁的「瑞士军刀」。你想想看,从数据探索、模型原型验证,到最后的报告输出,它几乎贯穿了整条链路。我个人习惯把它当作实验笔记本,而不是一个正式的开发环境。今天我们就来聊聊它的安装、核心操作,以及那些能让你效率翻倍的魔法命令。

4.1 安装与启动:别踩我踩过的坑

安装 Jupyter 其实很简单。我建议你直接用 pip 安装,别用系统自带的包管理器,容易版本冲突。

# 安装 Jupyter Notebook 和 Lab
pip install jupyter jupyterlab

# 如果你用的是 Anaconda,它已经自带了,但版本可能旧
# 我个人习惯用 pip 单独管理,干净利落

启动就更直接了:

# 启动 Notebook
jupyter notebook

# 启动 Lab(我更喜欢这个)
jupyter lab
我曾经踩过的坑: 第一次启动时,终端会输出一堆 token 信息。如果你在远程服务器上跑,记得复制那个带 token 的 URL,否则浏览器打不开。还有,别在 root 用户下直接跑,权限问题会让你怀疑人生。

启动后,浏览器会自动打开一个页面。你会看到文件列表,这就是你的工作目录。嗯,这里要注意:默认端口是 8888,如果被占用了,它会自动递增到 8889,别慌。

4.2 Notebook 基本操作:从单元格到内核

Notebook 的核心概念就两个:单元格内核。单元格是你写代码或 Markdown 的地方,内核是背后执行代码的 Python 解释器。

我常用的快捷键(记住这几个就够了):

  • Shift + Enter:运行当前单元格,并跳到下一个
  • Ctrl + Enter:运行当前单元格,不跳转
  • Esc + A:在当前单元格上方插入一个新单元格
  • Esc + B:在当前单元格下方插入一个新单元格
  • Esc + M:把当前单元格切换为 Markdown 模式
  • Esc + Y:切换回代码模式

为什么这些快捷键重要?因为你在做数据探索时,手不离键盘的效率远高于鼠标点来点去。我在项目中遇到过,一个同事用鼠标点了半小时才跑完一个流程,我用快捷键 5 分钟搞定。

4.3 魔法命令:让 Notebook 开挂

魔法命令是 Jupyter 最让我爱不释手的功能。它们以 %%% 开头,能完成一些普通 Python 做不到的事。

我常用的几个:

魔法命令 作用 我的使用场景
%timeit 测量代码执行时间 比较不同算法的性能,比如 Pandas 和 Polars 谁更快
%run 运行外部 Python 脚本 把预处理逻辑写在 .py 文件里,在 Notebook 里直接调用
%load_ext 加载扩展 加载 autoreload,自动重载修改过的模块
%%writefile 把单元格内容写入文件 快速生成一个配置文件或小脚本
%matplotlib inline 让图表直接显示在 Notebook 里 做数据可视化时必用,否则图表会弹到新窗口

举个例子,我经常用 %timeit 来验证我的优化是否有效:

# 比较列表推导和 for 循环的速度
%timeit [x**2 for x in range(1000)]

# 输出类似:1000 loops, best of 5: 123 µs per loop
我的小技巧:%who 可以查看当前命名空间里所有变量。当你 Notebook 跑了一堆单元格,忘了自己定义过什么变量时,这个命令能救命。

4.4 与 Git 的集成:版本控制的艺术

Notebook 文件是 JSON 格式的,直接提交到 Git 会带来噩梦——每次运行都会改变输出和元数据,diff 看起来一团糟。我曾经因为这个问题,在团队里被吐槽过好几次。

解决方案有两个:

  1. 使用 nbdime 工具:专门用来 diff 和 merge Notebook 文件。安装后,Git 会自动调用它。
  2. 清理输出后再提交:用 jupyter nbconvert --clear-output 清除所有输出,只保留代码和 Markdown。

我建议你在项目根目录下创建一个 .gitignore 文件,加上这几行:

# 忽略 Notebook 的检查点文件
.ipynb_checkpoints/
# 忽略临时文件
*.pyc
__pycache__/

另外,我个人习惯在提交前用 nbstripout 这个工具自动清理输出。安装后配置一下 Git hooks,每次 commit 都会自动清理,省心不少。

核心原则: Notebook 提交到 Git 时,只保留代码和 Markdown,不要带输出。输出是运行结果,不是代码本身。你想想看,如果两个同事同时修改了同一个 Notebook,输出不同会导致冲突,多麻烦。

4.5 Jupyter Lab 新特性:为什么我抛弃了 Notebook

Jupyter Lab 是 Notebook 的下一代产品。说实话,自从用了 Lab,我就再也没打开过传统 Notebook。它最大的变化是:多标签页、可拖拽布局、内置终端和文件浏览器

几个让我爱不释手的新特性:

  • 多面板布局:左边放代码,右边放图表,下面放终端。不用来回切换窗口。
  • 内置 Markdown 预览:写文档时实时预览,不用再开一个 Typora。
  • 插件系统:可以安装 Git、代码补全、变量查看器等插件。我装了 jupyterlab-git,直接在界面里做版本控制。
  • 主题支持:暗色主题对眼睛友好,我长期用暗色模式。

启动 Lab 后,你会看到一个类似 IDE 的界面。左侧是文件浏览器,中间是工作区,右侧可以放各种面板。我个人习惯把文件浏览器放在左边,代码编辑器放在中间,下面开一个终端跑监控命令。

我的配置建议: 安装 jupyterlab_code_formatter 插件,配合 Black 或 Ruff,一键格式化代码。在 MLOps 项目中,代码风格统一很重要,尤其是多人协作时。

下面这张图展示了 Jupyter Lab 的核心工作流,从数据加载到模型验证,一气呵成:

Jupyter Lab 在 MLOps 中的工作流 📂 数据加载 🔍 探索分析 ⚙️ 特征工程 🤖 模型训练 📊 评估验证 🚀 部署 🔄 反馈循环:根据结果调整特征或模型 Jupyter Lab 的多面板布局让你在一个窗口内完成所有步骤

你看,从数据加载到部署,Jupyter Lab 都能覆盖。我个人习惯在 Lab 里同时打开三个面板:一个 Notebook 做探索,一个终端跑训练脚本,一个文件浏览器管理数据。这种多任务处理能力,是传统 Notebook 做不到的。

注意: Jupyter Lab 虽然强大,但别用它跑长时间的训练任务。它更适合交互式探索和原型验证。正式训练还是用脚本 + 任务调度器更靠谱。我曾经犯过这个错,在 Lab 里跑了一个 8 小时的训练,结果浏览器崩溃,一切归零。

好了,关于 Jupyter 的安装、操作、魔法命令、Git 集成和 Lab 新特性,就聊到这里。这些工具用熟了,你的 MLOps 效率至少提升 30%。


公众号:蓝海资料掘金营,微信deep3321