Logo
Section 1 / 2

模型部署简介

通过了解 TensorRT、TensorLite、PyTorch Mobile、ONNX 和 OpenVINO 等多种部署框架,学习模型的部署步骤。

导入

模型部署简介

通过了解 TensorRT、TensorLite、PyTorch Mobile、ONNX 和 OpenVINO 等多种部署框架,学习模型的部署步骤。

AI模型的部署

现在我们来学习模型部署阶段及其实际运行环境。我们将使用训练好的模型,加载其预训练权重来进行预测,这一过程也称为推理(inference)。

通常情况下,部署环境的硬件配置与训练环境不同。例如,我们可能在本地机器上使用GPU进行模型训练,但希望将训练好的模型部署到内存更小、处理器性能较弱的嵌入式系统或手机设备中。或者我们需要在另一台计算机或服务器上运行模型,但由于预算限制,无法使用高性能设备,只能选择算力较低的硬件。此外,即使训练和部署环境的硬件相似,我们也可能希望加快推理速度,这就需要对训练好的模型进行优化。

不同部署环境对应的框架

如前所述,我们的部署环境可能是以下之一:

  • 手机设备
  • 云端或本地计算机
  • 嵌入式系统(包含必要组件的电子电路板)等

根据不同的部署环境,我们需要选用相应的框架。

TensorRT

TensorRT 是由 NVIDIA 开发的库,用于在其图形处理器(GPU)上实现更快的推理。例如,如果我们使用的是 NVIDIA Jetson 设备,或树莓派连接了外置 NVIDIA GPU,使用 TensorRT 可以有效优化模型以适应部署需求。

通过 TensorRT 对模型进行优化和转换后,我们就可以将其嵌入并在这些设备上运行。

TensorFlow Lite(TensorLite)

如果我们使用 TensorFlow 训练了一个模型,并希望将其集成到 Android 或 iOS 移动应用中,则需要使用 TensorFlow Lite(简称 TensorLite)。

PyTorch Mobile

类似于 TensorLite,如果我们使用 PyTorch 训练了模型,并希望在 Android 或 iOS 移动设备上运行,PyTorch Mobile 框架提供了所需的优化和转换功能。

ONNX(开放神经网络交换格式)

ONNX 是一个通用框架,支持多种深度学习框架之间的模型转换。例如,我们有一个用 PyTorch 训练的模型,但需要在 NVIDIA Jetson 设备上使用 TensorRT 进行部署,此时 ONNX 可作为中间桥梁:先将模型从 PyTorch 转换为 ONNX 格式,再从 ONNX 转换为 TensorRT 格式。

同样地,如果我们要在边缘设备上使用原生 Python 或 C++ 运行模型,ONNX Runtime 引擎可以实现这一目标。我们可以将模型从 PyTorch 转换为 ONNX,然后利用 ONNX Runtime 来执行推理。

注意:我们可以直接在原生 Python 或 C++ 应用中运行模型,这比在 PyTorch 中运行要快得多。

...
ONNX:连接不同框架与运行时引擎的桥梁

OpenVINO

OpenVINO 支持对来自几乎所有主流框架的深度学习模型进行优化。该框架由 Intel 开发,在使用 Intel 边缘设备时,选择 OpenVINO 能够显著提升边缘端的推理性能。同时,它也兼容部分其他厂商的处理器。

注意:与 ONNX 类似,通过 OpenVINO 转换后的模型也可以通过纯 Python 或 C++ 调用。

我们还可以将 ONNX 模型进一步转换为 OpenVINO 格式。这一点非常重要,因为某些模型尚不支持直接转换为 OpenVINO 格式。而 ONNX 可作为训练框架与 OpenVINO 之间的桥梁,因其支持更复杂的模型转换,覆盖范围更广。

...
OpenVINO:一种模型优化与部署框架

核心术语总结

术语含义
训练阶段(Train time)在多个训练周期(epochs)中更新模型权重的过程。
推理阶段(Inference time)使用训练完成的模型进行实际预测的阶段。
CPU通用处理器,适用于执行多种任务。但对于复杂模型(如目标检测模型),可能不足以胜任训练任务。
GPU专用处理单元,具备强大的数学计算能力,因此比 CPU 更快,能够高效训练复杂神经网络模型,也适用于简单模型。

综上所述,若要在本地计算机或服务器上的任意 CPU 或 GPU 上部署模型,建议使用 ONNX 或 OpenVINO 框架,以获得更快的推理速度。

下一步是什么?

接下来,我们将学习如何使用 ONNX 和 OpenVINO 转换模型,并构建基于 Python 的推理流程。

最终,我们会对比分析这些框架在实际应用中的性能差异。

使用 PyTorch 进行图像分类

在 PyTorch 中使用部署框架