如何安装和使用PyTorch
作为 Write for DOnations 计划的一部分,作者选择了 International Medical Corps 来接受捐赠。
介绍
PyTorch 是由 Facebook AI Research 开发的深度学习框架,具有初学者友好的调试工具和高级用户的高级定制功能,研究人员和从业者都在使用它Facebook和特斯拉等公司。 应用包括计算机视觉、自然语言处理、密码学和更多。 虽然更高级的 DigitalOcean 文章,如 PyTorch 简介 ,讨论了 PyTorch 的工作原理以及您可以使用 PyTorch 构建什么,但本教程将重点关注 PyTorch 的安装。
在本教程中,您将分三步安装 PyTorch 的“仅支持 CPU”版本。 此安装非常适合希望安装和使用 PyTorch 但没有 Nvidia 显卡的人。 特别是,您将使用 virtualenv 在 Python 虚拟环境中安装 PyTorch。 这种方法隔离了 PyTorch 安装,允许您为每个项目安装不同的 PyTorch 版本。 完成安装后,您将通过运行一个简短的 PyTorch 程序来验证您的安装,然后使用 PyTorch 执行图像分类。
虽然您不需要实际深度学习或 PyTorch 方面的经验来学习本教程,但我们假设您熟悉机器学习术语和概念,例如张量。 您可以在 机器学习简介 中了解有关这些概念的更多信息。
先决条件
要完成本教程,您将需要一个至少具有 1GB RAM 的 Python 3 本地开发环境。 您可以按照 如何为 Python 3 安装和设置本地编程环境来设置 Python 和编程环境的要点。
第 1 步 — 安装 PyTorch
让我们为此项目创建一个工作区并安装您需要的依赖项。 您将调用您的工作区 pytorch
:
mkdir ~/pytorch
创建一个目录来保存您的所有资产:
mkdir ~/pytorch/assets
导航到 pytorch
目录:
cd ~/pytorch
然后为项目创建一个新的虚拟环境:
python3 -m venv pytorch
激活您的环境:
source pytorch/bin/activate
然后安装 PyTorch。 在 macOS 上,使用以下命令安装 PyTorch:
pip install torch torchvision
在 Linux 和 Windows 上,对仅 CPU 构建使用以下命令:
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu -f https://download.pytorch.org/whl/torch_stable.html
请注意,您还默认包含了 torchvision
。 这个子库包含几个特定于计算机视觉的实用程序,您将在本教程后面使用它们。 然后,您将收到确认 PyTorch 安装的输出:
OutputCollecting torch Downloading torch-1.7.1-cp38-none-macosx_10_9_x86_64.whl (108.9 MB) |████████████████████████████████| 108.9 MB 8.3 MB/s . . . Successfully installed pillow-8.1.0 torch-1.7.1 torchvision-0.8.2
注意: 如果你想随时关闭你的虚拟环境,命令是:
deactivate
要稍后重新激活环境,请导航到您的项目目录并运行 source pytorch/bin/activate
。
现在,您已经安装了 PyTorch,您将确保 PyTorch 安装工作正常。
第 2 步 — 验证安装
要验证 PyTorch 的安装,您将以非 root 用户身份在 PyTorch 中运行一个小程序。 您将使用 Python 的交互式控制台 创建此程序,而不是创建 Python 文件。
要编写程序,请使用以下命令启动 Python 解释器:
python3
您将在终端中收到以下提示:
这是 Python 解释器的提示符,它表明您已准备好开始输入一些 Python 语句。
首先,输入这一行来导入 PyTorch 包。 输入代码行后按ENTER
:
import torch
定义一个零向量。 现在,将 vector 视为数字的集合,或者特别是数字的列表。 更详细地说:向量是空间中的“箭头”,指示方向(箭头指向的位置)和大小(箭头的长度)。 接下来,您使用带有 Tensor()
的三个数字的列表创建一个向量。 这是一个三维向量,是三维空间中的一个箭头。
运行以下 Python:
torch.Tensor([0, 0, 0])
您将收到以下输出:
Outputtensor([0., 0., 0.])
这表明 PyTorch 安装成功。 按 CTRL+D
退出 Python 交互式控制台。 接下来,您将使用 PyTorch 构建一个图像分类器。
第 3 步 — 使用 PyTorch 进行图像分类
现在您已经验证了 PyTorch 安装,您将设置一个图像分类器。
图像分类器 接受图像作为输入并输出预测类别(如 Cat
或 Dog
)。 图像分类器是深度学习框架中传统的“Hello World”等价物。 除了惯例之外,还有一些很好的理由从图像分类开始。 首先,许多图像分类器可以在商品 CPU 上产生预测,而不需要大量的 GPU 资源。 其次,根据预测的类别,很容易知道您的图像分类器正在工作(或不工作)。 对于其他神经网络,例如生成文本,情况就不那么正确了。
在本教程中,您将使用已经训练过的图像分类器。 我们称这些 预训练 图像分类器。 特别是,您将使用图像分类器来预测图像的类别。 预测也称为 推理。 简而言之,您将在预训练的图像分类器上运行推理。
首先,下载一个 JSON 文件,将神经网络输出转换为人类可读的类名:
wget -O ~/pytorch/assets/imagenet_idx_to_label.json https://raw.githubusercontent.com/do-community/tricking-neural-networks/master/utils/imagenet_idx_to_label.json
下载以下 Python 脚本,该脚本将加载图像,加载具有权重的神经网络,并使用神经网络对图像进行分类:
wget https://raw.githubusercontent.com/do-community/tricking-neural-networks/master/step_2_pretrained.py
注意:有关此文件step_2_pretrained.py
的更详细演练,请阅读How To Trick a Neural Network教程中的Step 2 - Running a Pretrained Animal Classifier。
下载以下狗的图像以在其上运行图像分类器。
使用以下命令执行此操作:
wget -O assets/dog.jpg https://assets.digitalocean.com/articles/trick_neural_network/step2a.png
最后,在新下载的图像上运行预训练的图像分类器。 Pretrained 表示该模型已经过训练,并且能够准确、直接地预测类别:
python step_2_pretrained.py assets/dog.jpg
这将产生以下输出,显示您的动物分类器按预期工作:
OutputPrediction: Pembroke, Pembroke Welsh corgi
使用您的预训练模型运行推理就结束了。 如果您想使用另一个图像,您可以通过将第一个参数更改为 python3 step_2_pretrained.py
命令来实现。 对于参数,您将传入图像文件的 相对路径 。 在下一步中,我们将总结一些在 PyTorch 中工作的推荐工具。
PyTorch 生态系统
在本节中,我们建议您在使用 PyTorch 时开始使用几个框架和库。 尽管这些额外的库可能在您的 PyTorch 旅程的后期才有用,但知道这些工具的存在是有用的,因此您可以在准备好时利用它们。
对于每个深度学习库,都有一个规范的高级框架可供使用。 在最初的几年里,PyTorch 是这条规则的例外。 然而,Facebook AI Research 在 2019 年发布了两个框架,这些框架迅速普及。 请注意,截至 2021 年 2 月,这两个库都还没有完全成熟,因此, 原生 PyTorch 教程 是一个更加友好的起点。
- Classy Vision 提供用于启动新项目和大规模培训的实用程序。 该库可以适应任何应用程序。 由于该库最初是为视频中的动作识别而创建的,因此它包含一组特别方便的视频实用程序和对视频数据集的开箱即用支持。 访问他们的 tutorials 了解更多信息。 这是在 ImageNet 上进行 Classy Vision 训练的示例:Neural-Backed Decision Trees,您可以在本关于可视化神经网络的教程 中了解有关 的更多信息。
- PyTorch Lightning 提供了一个用于创建 PyTorch 项目的框架。 同样,您可以使该库适应任何应用程序。 您可以使用 PyTorch Lightning 教程 并阅读 他们的示例 。
有几个与深度学习库无关的工具也可用于集成。 这两者在研究和工业界都是多产的。
- Weights and Biases 专为实验跟踪而设计,特别适用于 a) 合作者之间的交流,b) 保持实验井井有条,以及 c) 同时快速可视化许多实验结果。
- Tensorboard 表面上是为 Tensorflow 设计的。 然而,由于 PyTorch 本身不支持可视化仪表板,PyTorch 实践者采用了 Tensorboard。 在 PyTorch 网站 上查找用于 Tensorboard 可视化的 PyTorch 教程 。
要将 PyTorch 模型部署到生产环境,有几个常用选项:
- TorchScript 是 PyTorch 模型本机支持的部署选项。 但是,2021 年的大多数模型部署都使用以下两种方法之一。
- ONNX 是所有深度学习框架的开源格式,不仅支持部署,还支持深度学习框架之间的互操作性。 在实践中,从 PyTorch 模型转换为 ONNX 格式需要一些调试才能工作。 多年来,随着 PyTorch 增加了对 ONNX 导出的本机支持,这已经看到了渐进式的改进。
- Caffe2 是这三个中最常用的部署选项。 尽管 Caffe2 本身是一个独立的深度学习框架,但它随后在 2018 年与 PyTorch 合并。 您可以在 PyTorch 教程网站 上了解有关 使用 Caffe2 部署的更多信息。
还有几个以应用程序为中心的 PyTorch GitHub 存储库,可用于复制和构建各自研究领域的最新成果:
- 用于计算机视觉的 Detectron2 支持对象检测、对象分割、关键点估计等。 它还包括用于在 Torchscript 或 Caffe2 中导出模型的实用程序。
- Transformers 用于自然语言处理,支持大量最先进的模型及其相关的分词器。
您可以在 PyTorch 生态系统 中找到更多 PyTorch 库。
结论
您已经在 Python 虚拟环境中安装了 PyTorch,并通过运行几个示例验证了 PyTorch 的工作原理。 您现在拥有进一步探索机器学习的工具。 有关开发深度学习技术的下一步,请查看 PyTorch 简介:构建神经网络以识别手写数字 。 我们将不仅仅介绍 PyTorch; 我们还将讨论机器学习的基础。
要了解更多关于 PyTorch 的信息,请参阅 官方教程 。 您还可以开始使用其他流行的深度学习框架,包括 Tensorflow。 有关更多机器学习内容,请查看我们的 机器学习主题页面 。