用tensorRT入门介绍

1. 基本的 TensorRT 工作流程

用tensorRT入门介绍_第1张图片

2. 转换和部署选项
2.1 转换

  • 使用TF-TRT,为了转换 TensorFlow 模型,TensorFlow 集成 (TF-TRT) 提供了模型转换和高级运行时
    API,并具有回退到TensorRT 不支持特定运算符的 TensorFlow 实现。
    自动模型转换和部署的一个更高效的选项是转换
  • 从 .onnx 文件自动转换 ONNX。使用 ONNX。 ONNX 是一个与框架无关的选项,可以用于将TensorFlow ,PyTorch 等格式的模型转化为ONNX格式。TensorRT 支持使用 ONNX 文件自动转换 TensorRT API 或 trtexec - 后者是我们将在本指南中使用的。ONNX 转换是 全有或全无,这意味着您的模型中的所有操作都必须由 TensorRT 支持(或者您 必须为不受支持的操作提供自定义插件)。ONNX 转换的最终结果 是一个单一的 TensorRT 引擎,它允许比使用 TF-TRT 更少的开销。
  • 使用 TensorRT API(在 C++ 或 Python 中)手动构建网络
    为了尽可能提高性能和可定制性,您还可以构建 TensorRT引擎手动使用 TensorRT 网络定义 API。这主要涉及TensorRT 生态系统NVIDIA TensorRT DU-10313-001_v8.2.3 | 10在 TensorRT 操作中通过操作构建与目标模型相同的网络,使用只有 TensorRT 操作。创建 TensorRT 网络后,您将只导出从框架中获取模型的权重并将它们加载到 TensorRT 网络中。为了这种方法,有关使用 TensorRT 网络构建模型的更多信息定义 API,可以在这里找到:
    Creating A Network Definition From Scratch Using The C++ API
    Creating A Network Definition From Scratch Using The Python API
    2.2 部署

使用 TensorRT 部署模型有三个选项:

‣ 在 TensorFlow 中部署
‣ 使用独立的 TensorRT 运行时 API
‣ 使用 NVIDIA Triton 推理服务器

您的部署选择将决定转换模型所需的步骤。

  • 使用 TF-TRT 时,最常见的部署选项是简单地在TensorFlow。 TF-TRT 转换产生一个带有 TensorRT 操作的
    TensorFlow 图 插入其中。这意味着您可以像运行任何其他 TensorFlow 一样运行 TF-TRT 模型使用 Python
    的模型。

  • TensorRT 运行时 API 允许最低的开销和最细粒度的控制,但TensorRT 本身不支持的运算符必须实现为插件(一个库
    预先编写的插件可在此处获得)。使用运行时部署的最常见路径API 是通过从框架中导出的 ONNX
    来实现的,本指南的以下内容对此进行了介绍部分。

  • 最后,NVIDIA Triton Inference Server 是一款开源推理服务软件,使团队能够从任何框架(TensorFlow、TensorRT、 PyTorch、ONNX 运行时或自定义框架),来自本地存储或 Google Cloud任何基于 GPU 或 CPU 的基础设施(云、数据中心或边缘)上的平台或 AWS S3。这是一个灵活的项目,具有几个独特的功能 例如并发模型执行异构模型和同一模型的多个副本(多个模型副本可以进一步减少延迟)以及负载平衡和模型分析。这是一个不错的选择如果您需要通过 HTTP 提供模型 - 例如在云推理解决方案中。
    2.3 选择正确的工作流程
    选择如何转换和部署模型的两个最重要的因素是:
    1.您选择的框架。

  1. 您首选的 TensorRT 运行时目标。
    以下流程图涵盖了本指南中涵盖的不同工作流程。这个流程图将帮助您根据这两个因素选择路径
    用tensorRT入门介绍_第2张图片
    示例部署使用ONNX
    ONNX 转换通常是自动转换 ONNX 的最高效方式模型到 TensorRT 引擎。在本节中,我们将介绍以下五个基本步骤
    在部署预训练 ONNX 模型的情况下进行 TensorRT 转换。

参考文章
https://github.com/NVIDIA/TensorRT/blob/main/quickstart/IntroNotebooks/4.%20Using%20PyTorch%20through%20ONNX.ipynb

https://github.com/ultralytics/yolov5/issues/251

你可能感兴趣的:(TensorRT,TensorRT)