第 7 章 调试 PyTorch 模型 调试 PyTorch 模型
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
到目前为止,我们已经在本书中创建了许多模型,但在本章中,我们将简要地了解如何解释这些模型,并弄清它们背后到底发生了什么。我们来看看如何使用类激活映射与 PyTorch 钩子来确定模型的重点,决定如何将 PyTorch 连接到 Google 的 TensorBoard 以进行调试。我展示了如何使用火焰图来识别转换和训练管道中的瓶颈,并提供了一个加快缓慢转换的工作示例。最后,我们将探讨在使用检查点处理大型模型时,如何以计算换内存。首先,简要介绍一下您的数据。
现在是凌晨 3 点,你的数据在做什么?
在我们深入探讨诸如 TensorBoard 或梯度检查点等在单 GPU 上使用大型模型的闪亮技术之前,先问问自己:你了解自己的数据吗?如果你正在对输入进行分类,你是否拥有所有可用标签的均衡样本?在训练集、验证集和测试集中?
此外,你确定你的标签是正确的吗?重要的基于图像的数据集,如MNIST 和CIFAR-10(加拿大高级研究所)都包含一些错误的标签。您应该检查您的数据集,尤其是当类别彼此相似时,如狗的品种或植物的品种。如果您发现某个类别的标签只有很小的图像,而其他类别的标签都有大分辨率的示例,那么只需对您的数据进行正确性检查就可以节省很多时间。
一旦确保您的数据处于良好状态,那么是的,让我们前往 TensorBoard 开始检查模型中可能存在的问题。
张量板
TensorBoard是一款网络应用程序,用于可视化神经网络的各个方面。通过它可以轻松、实时地查看准确率、损失激活值等统计数据,以及任何你想通过网络发送的信息。虽然它是以 TensorFlow 为基础编写的,但它的 API 不可知且相当简单,因此在 PyTorch 中使用它与在 TensorFlow 中使用它并无太大区别。让我们安装它,看看如何使用它来深入了解我们的模型。
注意事项
在阅读 PyTorch 的相关资料时,你很可能会提到一个名为 Visdom 的应用程序,它是Facebook 的 TensorBoard 替代品。在 PyTorch v1.1 之前,支持可视化的方法是将 Visdom 与 PyTorch 结合使用,而第三方库(如tensorboardX )则可用于与 TensorBoard 集成。虽然 Visdom 仍在继续维护,但在 v1.1 及以上版本中加入了官方的 TensorBoard 集成,这表明 PyTorch 的开发者已经认识到 TensorBoard 是事实上的神经网络可视化工具。
安装 TensorBoard
可通过pip 或conda 安装 TensorBoard:
pip install tensorboard conda install tensorboard
注意事项
PyTorch 需要 TensorBoard v1.14 或更高版本。
然后可以通过命令行启动 TensorBoard:
tensorboard --logdir=runs
然后可以访问http://[your-machine]:6006,在这里你会看到如图 7-1 所示的欢迎界面。现在我们可以向应用程序发送数据了。
图 7-1. 张量板
向 TensorBoard 发送数据
将 TensorBoard 与 PyTorch 结合使用的模块位于torch.utils.tensorboard :