Skip to Content
为深度学习编程 PyTorch
book

为深度学习编程 PyTorch

by Ian Pointer
July 2025
Intermediate to advanced
220 pages
3h
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 为深度学习编程 PyTorch

第 8 章 生产中的 PyTorch PyTorch 在生产中的应用

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

现在你已经学会了如何使用 PyTorch 对图像、文本和声音进行分类,下一步就是看看如何在生产中部署 PyTorch 应用程序。在本章中,我们将创建通过 HTTP 和 gRPC 在 PyTorch 模型上运行推理的应用程序。然后,我们将这些应用程序打包到 Docker 容器中,并部署到运行在 Google Cloud 上的 Kubernetes 集群中。

在下半部分,我们将了解 PyTorch 1.0 中引入的新技术 TorchScript,它允许我们使用即时跟踪(JIT)来生成可从 C++ 运行的优化模型。我们还简要了解了如何用量化技术压缩模型。首先,让我们来看看模型服务。

模型服务

我们用了过去六章的时间在 PyTorch 中构建模型,但构建模型只是构建 Deep Learning 应用程序的一部分。毕竟,一个模型可能有惊人的准确率(或其他相关指标),但如果它从未做出任何预测,那它还有价值吗?我们需要的是一种简单的方法来打包我们的模型,这样它们就能响应请求(通过网络或其他方式,我们会看到),并能以最小的代价在生产中运行。

值得庆幸的是,Python 允许我们使用 Flask 框架快速启动和运行网络服务。在本节中,我们将构建一个简单的服务,加载基于 ResNet 的猫或鱼模型,接受包含图片 URL 的请求,并返回一个 JSON 响应,说明图片中包含的是猫还是鱼。

注意

如果我们给模型发送一张狗的图片,会发生什么?模型会告诉你这不是一条鱼就是一只猫。它对任何事物都没有概念,只有可用的选择,并且总是会选择其中一个。一些 Deep Learning 从业者会在训练过程中添加一个额外的类,Unknown ,并抛出不属于任何所需类别的标注示例。这在一定程度上是可行的,但它本质上是试图让神经网络学习所有不是猫或鱼的东西,这对你我来说都很难表达,更不用说一系列的矩阵计算了!另一种方法是查看最终softmax 生成的概率输出。如果模型产生的预测结果是猫/鱼各占一半,或者是分布在各个类中,那么也许可以建议Unknown

构建 Flask 服务

让我们启动并运行模型的网络服务版本。Flask是使用 Python 创建网络服务的流行框架,我们将在本章中使用它作为基础。使用pipconda 安装 Flask 库:

conda install -c anaconda flask
pip install flask

新建一个名为catfish的目录,并将模型定义以model.py 的形式复制到其中:

from torchvision import models

CatfishClasses = ["cat","fish"]

CatfishModel = models.ResNet50()
CatfishModel.fc = nn.Sequential(nn.Linear(transfer_model.fc.in_features,500),
                  nn.ReLU(),
                  nn.Dropout(), nn.Linear(500,2))

请注意,我们在这里没有指定预训练模型,因为我们将在 Flask 服务器启动过程中加载保存的权重。然后创建另一个 Python 脚本catfish_server.py,我们将在其中启动网络服务:

from flask import Flask, jsonify ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

产品路线图全面升级

产品路线图全面升级

C. Todd Lombardo, Bruce McCarthy, Evan Ryan, Michael Connors
超越Vibe编程

超越Vibe编程

Addy Osmani

Publisher Resources

ISBN: 9798341662902Supplemental Content