第 16 章 深度学习工具Jupyter

附录:深度学习工具

本章来源:本文整理自《动手学深度学习》(zh.d2l.ai)附录《深度学习工具》,原书作者 Aston Zhang、李沐、Zachary C. Lipton、Alexander J. Smola。

本章讲什么

这是全书的收官附录。前几章讲的是概念和模型,这一章讲工具:用什么写代码、在哪跑大模型、怎么选 GPU,以及如何参与开源社区的贡献。这些是真正动手实践时都会用到的。

Jupyter Notebook

Jupyter Notebook 是深度学习中最常用的交互式开发环境,提供"标记单元格(文字/公式)+ 代码单元格(可执行 Python)"的格式——文字与代码混排的"活文档",非常契合深度学习这种"边实验边记录"的工作方式。

两个实用技巧:

  • SSH 端口转发:在远程 GPU 服务器上跑 Jupyter、在本地浏览器访问。这样本地电脑不需要多强的算力。
  • 注意 ipynb 原生格式携带大量运行环境元数据,不利于 Git 协作;用纯 Markdown 源码编辑则干净、便于做贡献。

云平台:SageMaker 与 EC2

深度学习算力需求常超本地计算机上限,云服务可以按需租用 GPU 机器。

Amazon SageMaker:AWS 的托管 Notebook 服务。创建 Notebook 实例(比如 1 块 Tesla V100 + 8 核 CPU,足够本书大部分实验),在实例上打开 Jupyter 运行代码。托管省心但成本较高,务必用完停止实例避免持续计费。

Amazon EC2:更"自己动手"的云服务器方案,成本更低。流程三步:请求含 GPU 的 Linux 实例 → 安装 CUDA(NVIDIA 的 GPU 计算平台)→ 安装深度学习框架。远程使用靠 SSH 端口转发。

计费管理上要区分两个概念:

  • 停止:保留数据、只收少量硬盘费。
  • 终止:删除所有数据。

还可以把配置好的环境做成镜像(AMI)供以后复用——把配好的环境"拍成快照",反复使用。

选择服务器和 GPU

GPU 是深度学习最具性价比的硬件加速器(比 CPU 便宜且快一个数量级以上),但选配要考虑系统性约束。

选服务器:大部分计算在 GPU 上,CPU 不必堆核——因 Python 全局解释器锁(GIL),多 GPU 场景下单线程快的 CPU 更划算。重点考虑电源(每 GPU 峰值可达 350W)、机箱尺寸与散热、PCIe 插槽(GPU 间通信要带宽)、内存(32-128GB 视卡数)与 SSD。

选 GPU:NVIDIA 因 CUDA 生态而主流,分消费级(GTX/RTX)与企业级(Tesla,被动散热、更多内存、贵约十倍,适合数据中心)。核心看三点:

  • 计算能力:追求浮点运算能力,低精度(FP16/INT8)训练推理也渐成主流。
  • 内存大小:HBM2 快但贵,GDDR6 更便宜。
  • 内存带宽:影响数据吞吐。

功耗 → 热量 → 散热 → 机箱/电源,这条因果链是选配的直觉主线。大规模场景可以直接用云实例。

为开源做贡献

开源书籍的改进周期从"几年"压缩到"几小时到几天",靠的是版本控制(Git/GitHub)与持续集成(CI,自动运行代码生成输出)。

贡献流程分层:

  • 微小修改(改错字/一句话):可直接在 GitHub 网页上编辑源文件并提交 Pull Request。
  • 大量文本修改:需了解 Markdown 与书籍的扩展格式。
  • 大量代码修改:Fork(复制)仓库 → 本地 clone → 编辑运行验证 → 清空输出 → 提交 Pull Request。

要点:小的 Pull Request 更易被审阅合并;跨框架代码用专门的标签分框架实现。

小结

  • Jupyter Notebook 是文字与代码混排的活文档,配合 SSH 端口转发可在远程 GPU 上使用。
  • 云平台按需租用 GPU:SageMaker 托管省心、EC2 自己动手更便宜。
  • 选 GPU 看计算能力、内存大小、内存带宽;功耗散热是重要约束。
  • 参与开源贡献从小的 Pull Request 开始,版本控制和持续集成让改进变得很快。

关键术语

术语 一句话解释
Jupyter Notebook 文字与代码混排的交互式文档
单元格 / 内核 文档组成单位 / 执行代码的引擎
SSH 端口转发 本地浏览器访问远程服务
SageMaker AWS 的托管 Notebook 服务
EC2 自建云服务器方案
AMI 镜像 配置好的环境快照,可复用
CUDA NVIDIA 的 GPU 计算平台
GPU 选型 看计算能力、内存大小、内存带宽
Pull Request 向开源项目提交修改的请求
Fork / Clone 复制仓库到自己的账户 / 到本地