附录:深度学习工具
本章来源:本文整理自《动手学深度学习》(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 | 复制仓库到自己的账户 / 到本地 |